इस प्रोजेक्ट के बारे में

nepenthe बड़े साझा conda/PyPI वातावरणों के निर्माण, संस्करण और वितरण के लिए एक उपकरण है। बताया गया लक्ष्य यह है कि एक टीम एक बार वातावरण का वर्णन करे, rattler के साथ इसे एक बार हल करे, परिणाम को एक पोर्टेबल लॉकफ़ाइल में फ्रीज़ करे, और उस लॉक को किसी भी स्टोरेज बैकएंड पर एक संस्करणित रजिस्ट्री में प्रकाशित करे, ताकि हर मशीन बिना पुनः-हल किए बिल्कुल समान वातावरण स्थापित करे। README में वर्णित प्रमुख क्षमताएँ: - मैनिफेस्ट-आधारित संरचना: बिखरी हुई आवश्यकता फ़ाइलों के बजाय घोषणात्मक वातावरण मैनिफेस्ट। - rattler (शुद्ध Rust) के माध्यम से मूल समाधान, Python इंटरप्रेटर ओवरहेड से बचना। - पोर्टेबल लॉक: मल्टी-प्लेटफ़ॉर्म rattler_lock फ़ाइलें जो निर्माण द्वारा प्रतिलिपि योग्य होने का इरादा रखती हैं। - क्रॉस-प्लेटफ़ॉर्म समाधान: एक ही होस्ट से linux-64, osx-arm64 और win-64 को एक मल्टी-प्लेटफ़ॉर्म लॉक में हल करें। - प्लग करने योग्य बैकएंड: file://, s3:// और https:// पर स्पेक्स पढ़ें/लिखें, चैनल किसी भी सर्वर जैसे आंतरिक Artifactory की ओर इशारा करते हैं। - संस्करणित रजिस्ट्री: अपरिवर्तनीय सामग्री-संबोधित लॉक के साथ प्रति-वातावरण स्वतंत्र संस्करण। - conda के बिना इंस्टॉल करें: rattler का उपयोग करके एक लॉक को प्रीफ़िक्स में लिंक करें, कोई conda/mamba/micromamba आवश्यक नहीं। - Conda संगतता: किसी भी लॉक को @EXPLICIT स्पेक के रूप में निर्यात करें जो conda create --file के साथ उपयोग योग्य हो। - सुरक्षा स्थिति: क्रेडेंशियल उपयोग के समय इंजेक्ट किए जाते हैं और आर्टिफैक्ट्स में नहीं लिखे जाते। परियोजना एक उत्पादक-से-उपभोक्ता जीवनचक्र को कवर करती है: एक मैनिफेस्ट बनाएं, मल्टी-प्लेटफ़ॉर्म लॉक हल करें और फ्रीज़ करें, उन्हें एक संस्करणित रजिस्ट्री में प्रकाशित करें, और उन्हें conda के बिना, CLI से या Python से इंस्टॉल करें। यह एयर-गैप्ड पैक/अनपैक बंडल और एक pyproject.toml एकीकरण का भी उल्लेख करता है जो किसी परियोजना की निर्भरताओं को उस वातावरण के साथ सिंक में रखता है जिसका वह उपभोग करता है। README से कार्यप्रवाह उदाहरण: एक YAML मैनिफेस्ट परियोजना का नाम, चैनल, प्लेटफ़ॉर्म, Python संस्करण और मूल निर्भरताएँ घोषित करता है; एक बिल्ड कमांड पूरी तरह से पिन किया गया लॉकफ़ाइल उत्पन्न करता है; एक एक्सपोर्ट कमांड लॉक को @EXPLICIT conda स्पेक के रूप में प्रस्तुत करता है; और इंस्टॉलेशन या तो स्पेक से conda के साथ या लॉक से nepenthe के साथ किया जा सकता है। CLI एक एकल मल्टीकॉल बाइनरी है जहाँ np और npb nepenthe के सिमलिंक हैं, npb बिल्ड सबकमांड के लिए शॉर्टकट के रूप में कार्य करता है। एक Python बाइंडिंग बिल्ड, क्रिएट और एक्टिवेट ऑपरेशन के लिए CLI को दर्शाती है। एक pyproject.toml अनुभाग वातावरण का नाम, रजिस्ट्री और संस्करण पिन कर सकता है, संदर्भित वातावरण को इंस्टॉल करने और परियोजना निर्भरताओं की संगतता सत्यापित करने के लिए sync और check कमांड के साथ। README nepenthe को प्रति-परियोजना लॉकफ़ाइलों (pixi, uv) और पुनः-हल किए गए मैनिफेस्ट (environment.yml) से अलग स्थान देता है: यह कई रिपॉजिटरी द्वारा उपभोग किए गए एक साझा वातावरण का निर्माण और वितरण करता है, संस्करणित और अपरिवर्तनीय। दस्तावेज़ीकरण एक विकी में व्यवस्थित है जो प्रेरणा, अवधारणाओं, मैनिफेस्ट, चैनल और Artifactory, रजिस्ट्री, इंस्टॉलिंग, परियोजना में उपभोग, पैकिंग, Python API और बैकएंड, साथ ही वास्तुकला और स्रोत से निर्माण पर योगदानकर्ता सामग्री को कवर करता है। परियोजना Apache-2.0 के तहत लाइसेंस प्राप्त है।