एक निजी पायथन परियोजना को एक भरोसेमंद पुस्तकालय में बदलना


28

मैं एक प्रोग्रामर के बजाय एक अकादमिक हूं, और मुझे अपने शोध का समर्थन करने के लिए अपने स्वयं के उपयोग के लिए पायथन कार्यक्रमों को लिखने का कई वर्षों का अनुभव है। मेरी नवीनतम परियोजना मेरे साथ-साथ कई अन्य लोगों के लिए उपयोगी होने की संभावना है, और मैं इसे एक ओपन-सोर्स पायथन लाइब्रेरी के रूप में जारी करने के बारे में सोच रहा हूं।

हालांकि, एक कामकाजी निजी परियोजना से पुस्तकालय में जाने के लिए पार करने के लिए काफी कुछ बाधाएं प्रतीत होती हैं जिन्हें स्थापित किया जा सकता है और दूसरों के लिए दर्द रहित रूप से उपयोग किया जा सकता है। यह प्रश्न पहले चरणों के बारे में है, जिन्हें मुझे सार्वजनिक रिलीज़ की दिशा में काम करना शुरू करने के लिए करना चाहिए।

वर्तमान में, मेरे पास एक एकल git रिपॉजिटरी है जिसमें मेरा कोड है जो लाइब्रेरी के साथ-साथ लाइब्रेरी का भी उपयोग करता है, और मैं कुछ भी टूटने की स्थिति में आपातकालीन पूर्ववत बटन के रूप में git का उपयोग करता हूं। यह सब एक एकल उपयोगकर्ता के लिए ठीक काम करता है लेकिन स्पष्ट रूप से उचित नहीं है अगर मैं इसे जारी करना चाहता हूं। जहां मैं समाप्त करना चाहता हूं वह यह है कि मेरी लाइब्रेरी एक अलग रिपॉजिटरी में है और इसे दूसरों के द्वारा इंस्टॉल किया जा सकता है pip, और इसमें एक स्थिर एपीआई है।

सेटप्टूल आदि का उपयोग करना सीखना शायद इतना कठिन नहीं है कि एक बार मैं इसे प्रकाशित करना चाहता हूं - मेरी समस्या यह जानने में है कि मुझे उस बिंदु तक पहुंचने के लिए कैसे काम करना चाहिए।

तो मेरा सवाल यह है कि सार्वजनिक उपभोग के लिए पायथन लाइब्रेरी प्रोजेक्ट तैयार करने के लिए पहले कौन से कदम उठाने चाहिए? मुझे लाइब्रेरी को जारी करने की दिशा में काम करने के लिए अपनी निर्देशिका संरचना, गिट रिपॉजिटरी आदि को कैसे पुनर्गठित करना चाहिए?

अधिक आम तौर पर, यह बहुत उपयोगी होगा यदि ऐसे संसाधन हैं जो पहली बार ऐसा करने का प्रयास करते समय सहायक होने के लिए जाने जाते हैं। सर्वोत्तम प्रथाओं और बचने की गलतियों, आदि की ओर इशारा करना भी बहुत सहायक होगा।

कुछ स्पष्टीकरण: वर्तमान उत्तर "मेरी पायथन लाइब्रेरी को दूसरों के उपयोग के लिए अच्छा कैसे बना सकता है?" की तर्ज पर एक सवाल का जवाब दे रहे हैं। यह उपयोगी है, लेकिन यह मेरे द्वारा पूछे जाने वाले प्रश्न से अलग है।

मैं इस समय अपनी परियोजना को जारी करने की दिशा में एक लंबी यात्रा की शुरुआत में हूं। मेरे कार्यान्वयन का मूल काम करता है (और वास्तव में अच्छी तरह से काम करता है), लेकिन मैं अपने आगे काम की मात्रा से अभिभूत महसूस कर रहा हूं, और इस प्रक्रिया को कैसे नेविगेट करना है, इसके लिए मार्गदर्शन की तलाश कर रहा हूं। उदाहरण के लिए:

  • मेरा पुस्तकालय कोड वर्तमान में अपने स्वयं के डोमेन-विशिष्ट कोड के लिए युग्मित है जो इसका उपयोग करता है। यह एक सबफ़ोल्डर में रहता है और उसी गिट रिपॉजिटरी को साझा करता है। आखिरकार, इसे एक स्टैंड-अलोन लाइब्रेरी में बनाने और अपनी खुद की रिपॉजिटरी में रखने की आवश्यकता होगी, लेकिन मैं इस बात को ध्यान में रखता हूं क्योंकि मुझे नहीं पता कि यह कैसे करना है। (न तो 'डेवलपमेंट मोड' में लाइब्रेरी कैसे स्थापित करें, ताकि मैं अभी भी इसे संपादित कर सकूं, न ही दो गिट रिपोज को सिंक में कैसे रखा जाए।)

  • मेरे डोकस्ट्रिंग्स चटक हैं, क्योंकि मुझे पता है कि अंततः मुझे स्फिंक्स या किसी अन्य उपकरण का उपयोग करना होगा। लेकिन ये उपकरण सीखने में सरल नहीं लगते हैं, इसलिए यह एक प्रमुख उप-परियोजना बन जाता है और मैं इसे बंद रखना चाहता हूं।

  • कुछ बिंदुओं पर मुझे इसे सेट करने और निर्भरता को ट्रैक करने के लिए सेटप्टूल या किसी अन्य उपकरण का उपयोग करना सीखना होगा, जो काफी जटिल हैं। मुझे यकीन नहीं है कि मुझे अब ऐसा करने की आवश्यकता है या नहीं, और प्रलेखन एक नए उपयोगकर्ता के लिए एक पूर्ण भूलभुलैया है, इसलिए मैं इसे बाद में करने का निर्णय लेता हूं।

  • मुझे कभी भी व्यवस्थित परीक्षण नहीं करना पड़ा है, लेकिन मैं निश्चित रूप से इस परियोजना के लिए काम करूंगा, इसलिए मुझे यह जानने के लिए परीक्षण के बारे में पर्याप्त (i) सीखना होगा कि मेरी परियोजना के लिए कौन सी कार्यप्रणाली सही है; (ii) सीखें कि मेरे चुने हुए कार्यप्रणाली के लिए कौन से उपकरण उपलब्ध हैं; (iii) मेरे चुने हुए उपकरण का उपयोग करना सीखो; (iv) मेरी परियोजना के लिए परीक्षण सूट आदि लागू करना। यह अपने आप में एक परियोजना है।

  • अच्छी तरह से अन्य चीजें भी हो सकती हैं जो मुझे भी करनी हैं। उदाहरण के लिए, जॉन्सर्शपे ने एक उपयोगी लिंक पोस्ट किया है जिसमें उल्लेख है कि git-flow, tox, TravisCI, virtualenv और कुकीसटर, जिनमें से कोई भी मैंने पहले नहीं सुना था। (पोस्ट 2013 की है, इसलिए मुझे यह पता लगाने के लिए भी कुछ काम करना होगा कि अभी कितना चालू है।)

जब आप यह सब एक साथ करते हैं तो यह बहुत बड़ी मात्रा में काम होता है, लेकिन मुझे यकीन है कि मैं इसे पूरा कर सकता हूं अगर मैं इसे दूर रखता हूं, और मैं जल्दी में नहीं हूं। मेरी समस्या यह जान रही है कि इसे कैसे प्रबंधित करने योग्य चरणों में तोड़ना है जो एक समय में एक किया जा सकता है।

दूसरे शब्दों में, मैं पूछ रहा हूं कि सबसे महत्वपूर्ण ठोस कदम जो मैं ले सकता हूं, ताकि अंततः एक भरोसेमंद उत्पाद तक पहुंच सके। यदि मेरे पास एक मुफ्त सप्ताहांत है, तो मुझे इनमें से किस चीज़ पर ध्यान केंद्रित करना चाहिए? जो (यदि कोई हो) दूसरों से अलग-थलग किया जा सकता है, ताकि मैं कम से कम एक कदम पूरी तरह से करने की आवश्यकता के बिना कर सकूं? इन चीजों को सीखने का सबसे कुशल तरीका क्या है ताकि मेरे पास अभी भी परियोजना पर ध्यान केंद्रित करने का समय हो? (ध्यान में रखते हुए कि यह सब अनिवार्य रूप से एक शौक परियोजना है, मेरा काम नहीं है।) क्या इसमें से कोई भी ऐसा है जो मुझे वास्तव में करने की आवश्यकता नहीं है , इस प्रकार अपने आप को समय और प्रयास की एक बड़ी राशि बचा रही है?

सभी उत्तरों की बहुत सराहना की जाती है, लेकिन मैं विशेष रूप से उन उत्तरों का स्वागत करता हूं जो आधुनिक पायथन विकास के विशिष्ट संदर्भ के साथ इन परियोजना प्रबंधन पहलुओं पर ध्यान केंद्रित करते हैं।



10
यह जांचने का सबसे अच्छा तरीका है कि क्या कोई लाइब्रेरी "जंगली में" रिलीज़ के लिए तैयार है, एक साथी शोधकर्ता या एक छात्र से इसका उपयोग करने की कोशिश करने और उन सभी कठिनाइयों को लिखने के लिए कहें जो वे चलाते हैं। यदि वे आपको सहायता के लिए लगातार कॉल किए बिना इसका उपयोग कर सकते हैं, तो पुस्तकालय एक आकार में है कि इसका उपयोग दूसरों द्वारा किया जा सकता है।
बार्ट वैन इनगेन शानौ

@jonrsharpe धन्यवाद, वहाँ सुपर उपयोगी जानकारी का एक बहुत कुछ नहीं है
नथानिएल

@BartvanIngenSchenau धन्यवाद, मैं एक बार उस कदम के करीब होने पर निश्चित रूप से ध्यान में रखूंगा। मैं "पहले चरण" के मंच पर बहुत कुछ कर रहा हूं, जो कुछ काम करता है, लेकिन रिलीज के लिए तैयार होने से बहुत दूर है, और सोच रहा हूं कि मुझे अब कैसे चीजें करनी चाहिए ताकि यह सुनिश्चित हो सके कि यह भविष्य में भरोसेमंद बन सके।
नथानिएल

3
आपको निश्चित रूप से लाइब्रेरी के लिए स्टैंड-अलोन गिट रेपो बनाना चाहिए और फिर आपका अपना पहला ग्राहक होना चाहिए। केवल अपनी परियोजना में पुस्तकालय का उपयोग एक उचित पुस्तकालय के रूप में करें, इसके स्रोत से लिंक करने के लिए नहीं।
इयान मैकडोनाल्ड

जवाबों:


22

यदि आप अपने पुस्तकालय का उपयोग करना चाहते हैं, तो सेटअप थ्रेड को जोड़ना, जबकि आवश्यक हो, सबसे महत्वपूर्ण कदम नहीं है। अधिक महत्वपूर्ण बात यह है कि अपने पुस्तकालय में प्रलेखन जोड़ना और विज्ञापन करना है। चूंकि दूसरा बिंदु पुस्तकालय पर दृढ़ता से निर्भर करता है, इसलिए मुझे प्रलेखन पहलू पर ध्यान केंद्रित करने दें।

  1. आप अपने पुस्तकालय के बारे में सब कुछ जानते हैं। और यह समस्याग्रस्त है। आप पहले से ही जानते हैं कि कैसे स्थापित करें और इसका उपयोग कैसे करें, इसलिए कई चीजें आपको सहज या स्पष्ट रूप से स्पष्ट लग सकती हैं। दुर्भाग्य से, वही चीजें न तो स्पष्ट हो सकती हैं, न ही उपयोगकर्ताओं के लिए सहज। अपने पुस्तकालय को देखने की कोशिश करें जैसे कि आप इसके बारे में कुछ नहीं जानते थे, और इससे भी महत्वपूर्ण बात, अन्य लोगों को इसका उपयोग करने के लिए कहें और उन सभी कठिनाइयों को हाजिर करने का प्रयास करें।

  2. स्पष्ट करें, सादे अंग्रेजी में, आपके पुस्तकालय के बारे में क्या है। बहुत सारे पुस्तकालयों का मानना ​​है कि हर कोई उनके बारे में जानता है। जब यह मामला नहीं है, तो यह समझना मुश्किल हो सकता है कि पुस्तकालय का उद्देश्य क्या है।

  3. विस्तृत तकनीकी दस्तावेज़ीकरण लिखें, लेकिन कोड के छोटे टुकड़ों के बारे में भी मत भूलना जो दिखाते हैं कि आपके पुस्तकालय के साथ कुछ कार्यों को कैसे करना है। अधिकांश डेवलपर्स जल्दी में होते हैं, और अगर उन्हें यह समझने की कोशिश करने में घंटों बिताने की ज़रूरत होती है कि किसी बुनियादी चीज़ को कैसे करना है, तो वे अन्य पुस्तकालयों में स्विच कर सकते हैं।

  4. अपनी संपर्क जानकारी शामिल करें। यदि आपकी लाइब्रेरी एक सफलता है (और मेरे खुद के अनुभव से पता चला है कि यह अज्ञात के लिए भी मामला है), तो लोग इसके साथ कठिनाइयों का सामना करेंगे: या तो बग या बस इसे समझने या इसके कुछ हिस्सों का उपयोग करने में कठिनाई। अपनी लाइब्रेरी को बेहतर बनाने के लिए उनकी प्रतिक्रिया प्राप्त करना अक्सर उपयोगी होता है: हर उस व्यक्ति के लिए जो किसी समस्या की सूचना देता है, संभवतः ऐसे सैकड़ों व्यक्ति हैं जो इसका सामना करते समय, बस दूसरे पुस्तकालय में जाना पसंद करेंगे।

इसके अतिरिक्त:

  1. यह स्पष्ट करें कि क्या आपका पुस्तकालय पायथन 2 या 3 या दोनों के साथ काम करता है।

  2. यदि लाइब्रेरी विंडोज पर काम नहीं करती है, तो कहें।

  3. सुनिश्चित करें कि आप आधिकारिक सम्मेलनों का उपयोग करते हैं (जाँच करने के लिए pep8 का उपयोग करें)। यदि नहीं, तो या तो इसे स्पष्ट रूप से समझाएं या इसे ठीक करें।

  4. बढ़त के मामलों को संभालने का ध्यान रखें। जब आपकी लाइब्रेरी को एक गलत प्रकार के साथ या एक मूल्य के साथ बुलाया जाता है जो समर्थित नहीं है, तो यह कहना चाहिए, सादे अंग्रेजी में, वास्तव में क्या गलत है। यह क्या नहीं करना चाहिए स्टैक के नीचे एक दस क्रिप्टिक अपवाद उठाना है और उपयोगकर्ता को यह पता लगाने दें कि क्या गलत हुआ।


धन्यवाद, मैं पूरी तरह से सहमत हूं कि प्रलेखन की गुणवत्ता एक परियोजना बनाती है या तोड़ती है। (यह आमतौर पर दूसरी चीज है जो मैं यह तय करते समय जांचता हूं कि किसी परियोजना का उपयोग करना है या नहीं, अंतिम वचन की तारीख के बाद।) अधिक तकनीकी स्तर पर, पायथन कोड के प्रलेखन के लिए उपकरणों का एक बहुत बड़ा पारिस्थितिक तंत्र है। मैं कैसे बता सकता हूं कि मुझे अपनी परियोजना के लिए सीखने में कौन सा निवेश करना चाहिए।
नथानिएल

3
@ नथानियल स्फिंक्स सेट करने के लिए थोड़ा मुश्किल है, लेकिन डी-फैक्टो मानक है। आप वेब पर Sphinx प्रलेखन को होस्ट करने के लिए readthedocs.org का उपयोग कर सकते हैं। स्फिंक्स अपने पुस्तकालय में कार्यों और मॉड्यूल से डॉक्ट्रिंग का उपयोग करने में सक्षम है। वैकल्पिक रूप से, केवल रीडमी फ़ाइल में डॉक्स को स्वयं टाइप करें, लेकिन यह बड़ी परियोजनाओं के लिए अस्पष्ट है। पायथन प्रोजेक्ट मैं बनाए रखने के लिए स्फिंक्स प्रलेखन के लिए जीथब पृष्ठों का उपयोग करता है, जिसका अर्थ है कि मुझे HTML फ़ाइलों को प्रतिबद्ध करना है, हालांकि मैं उससे दूर जाने की योजना बना रहा हूं।
आमोन

5
How can I tell which one I should invest in learning for my project?- तुम नहीं। आप एक ऐसा समय चुनकर बिताते हैं जो उचित लगे और उसके साथ रोल करें। एक जावास्क्रिप्ट देव के रूप में, जहाँ आपके पास हर निर्णय के लिए 40 विकल्प हैं, मैं वादा करता हूँ कि यह सही निर्णय है :)
aaaaaa

2

वर्षों से परिपक्व पुस्तकालयों की तुलना में कुछ कम का उपयोग करने के बाद एक प्रमुख सलाह है कि आप अपने तैनाती के उपकरण को उठा लें। निम्नलिखित में क्या आपका पुस्तकालय वास्तव में उपयोगी है कि आप एक समुदाय का निर्माण कर सकते हैं?

अपने पुस्तकालय की निर्भरता को पहचानें।

या तो डॉक कंटेनर या वीएम में स्वच्छ वातावरण में तैनाती का प्रयास करें। मैं इस कदम को महत्वपूर्ण मानता हूं क्योंकि व्यक्तिगत वातावरण के बारे में अक्सर ऐसा कुछ अनूठा होता है जो समस्याओं का कारण बनता है।

विचार करें कि भविष्य में पुस्तकालय को कौन बनाए रखने जा रहा है, पुस्तकालय भर में आने से ज्यादा निराशा की कोई बात नहीं है कि यह तीन या चार साल के लिए किसी की पालतू परियोजना थी और फिर इसे चालू रखने के लिए आवश्यक अपडेट नहीं मिलते हैं।

इस बात पर विचार करें कि क्या आप या आपकी टीम पुस्तकालय का परीक्षण और दस्तावेज रखने के लिए प्रतिबद्धता बनाना चाहते हैं (इकाई परीक्षण और CI पाइपलाइन समीकरण का हिस्सा बनने शुरू हो रहे हैं)।


2

शायद आप अपने क्षेत्र में एक परिपक्व OSS परियोजना पा सकते हैं और उस परियोजना में अपना कोड योगदान कर सकते हैं? कुछ फायदे हो सकते हैं, जैसे:

  • आप अपने योगदान को अधिकतम कर सकते हैं। वास्तव में, कई "शौक" ओएसएस परियोजनाएं संभावित रूप से मूल्यवान हैं लेकिन समुदाय द्वारा बहुत कम उपयोग की जाती हैं (cf. @ReaddyEddy उत्तर)। यह परियोजना को शुरू में खरोंच करने के लिए, फिर इसे बनाए रखने, इसे विज्ञापित करने, उचित उदाहरण और दस्तावेज प्रदान करने आदि के लिए बस प्रयास का एक बहुत प्रयास है।
  • आपके द्वारा उल्लिखित तकनीकी मुद्दों के बहुत सारे पहले से ही परिपक्व परियोजना में हल हो जाएंगे।
  • यदि आपका पुस्तकालय OSS प्रोजेक्ट में मूल्य जोड़ता है, तो इसके योगदानकर्ता आपके कोड को प्रोजेक्ट मानकों तक लाने में आपकी सहायता कर सकते हैं। तो आप प्रयास को बचा सकते हैं और अनुभव प्राप्त कर सकते हैं। आपको Sphinx, TravisCI, CookieCutter और अन्य तकनीकी पहलुओं के बारे में विशिष्ट उत्तर मिलेंगे।

यदि कोई प्रासंगिक OSS प्रोजेक्ट है जिसे आप पसंद करते हैं और शायद उपयोग करते हैं, तो कोई समस्या या पुल अनुरोध क्यों नहीं खोलते हैं या अन्यथा अनुरक्षकों के संपर्क में रहते हैं? (शुरू करने का एक अच्छा तरीका मौजूदा मुद्दे को हल करना हो सकता है।)


धन्यवाद, यह एक अच्छा विचार है। हालाँकि, मेरे मामले में एक मौजूदा पैकेज नहीं है जिसमें मेरा कोड एकीकृत किया जा सके। इसी तरह की कार्यक्षमता के साथ एक स्थापित ओएसएस परियोजना है, लेकिन यह विभिन्न प्रौद्योगिकी पर बनी है और इसके मूल में एक मौलिक रूप से अलग एल्गोरिथ्म का उपयोग करती है। (परिणामस्वरूप, कुछ चीजें मौलिक रूप से असंभव हैं जो मेरे संस्करण में आसान हो जाती हैं।) मुझे यकीन है कि मेरे कोड के लिए एक छोटा लेकिन संभावित रूप से समर्पित दर्शक हैं, लेकिन क्योंकि यह एक उपन्यास दृष्टिकोण है मुझे नहीं लगता कि इसे बनाने का कोई तरीका है। एक नई परियोजना के रूप में इसे विकसित करने के अलावा अन्य उपलब्ध है।
नाथनियल

2

यह 2019 है, मैं दृढ़ता से सबसे आधुनिक उपकरणों के साथ शुरुआत करने का सुझाव देता हूं। आपको इसकी आवश्यकता नहीं है setup.py, कि पायथन समुदाय के कुछ लोग छुटकारा पाना चाहते हैं, और मुझे विश्वास है कि अंततः वे करेंगे।

पोएट्री ट्राई करें , आपको पछतावा नहीं होगा।


1
जवाब के लिए धन्यवाद। मैं कविता पर एक नज़र डालूंगा। मैं हालांकि कहना चाहूंगा कि 2019 में एक नवागंतुक के लिए यह कल्पना करना मुश्किल है कि वास्तव में सबसे आधुनिक उपकरण क्या हैं। यदि आप नहीं जानते हैं, तो यह बताना बहुत कठिन है कि कौन से उपकरण वास्तविक मानक हैं, जिनका उपयोग हर कोई करता है और जो कई-रैन और प्रायोगिक परियोजनाओं में से हैं। आधिकारिक दस्तावेज़ीकरण इन चीजों के साथ नहीं रखता है, और विकास इतनी तेजी से चलता है कि मुझे जो भी परिचयात्मक सामग्री मिलती है वह तारीख से बाहर होने की गारंटी है।
Nathaniel

जिसमें से सभी को यह कहने के लिए धन्यवाद कहना है कि कविता वह है जिस पर मुझे गौर करना चाहिए, न कि तीन या चार अन्य सक्रिय परियोजनाओं के बजाय मैंने पाया कि वही काम करने लगते हैं। इस तरह की जानकारी मुझे इस सवाल से मिलने की उम्मीद थी।
नथानिएल

@ नथानियल पायथन "पैकेजिंग" तेजी से बदल रहा है (और यही कारण है कि ऐसा करने के कई तरीके हैं, और यह पता लगाना मुश्किल है कि सबसे अच्छा क्या है), लेकिन पीईपी 517, 518 के साथ कई उपकरणों (जैसे कविता) द्वारा कार्यान्वित किया गया है, हम अंत में कुछ ऐसा कर रहे हैं इतना भयानक नहीं है। ध्यान दें कि कविता जरूरी "सर्वश्रेष्ठ" उपकरण नहीं है, लेकिन कम से कम यह सबसे अच्छा में से एक है। Testandcode.com/52 पर एक नज़र डालें , तो आपको इस विषय पर एक बहुत अच्छा विचार मिलेगा।
laike9m

धन्यवाद, यह बहुत उपयोगी है, मैं अब सुन रहा हूं। शायद इसका मतलब यह है कि मुझे अब के लिए एक तरफ पैकेजिंग स्थापित करनी चाहिए और अन्य पहलुओं (जैसे प्रलेखन और परीक्षण के लिए सीखने के उपकरण) पर ध्यान केंद्रित करना चाहिए, बस इसलिए कि छह महीने या उससे अधिक समय में अधिक स्थिर पायथन पैकेजिंग पारिस्थितिकी तंत्र हो सकता है।
नथानिएल

2

यह एक जटिल प्रश्न है जो आप पूछ रहे हैं, और मैं आर्सेनी के उत्तर से पूरी तरह सहमत हूं । अच्छा प्रलेखन एक बहुत महत्वपूर्ण पहलू है। अगर मैं आपकी लाइब्रेरी को प्राप्त करने और कुछ सरल चरणों के साथ चलने में सफल नहीं होता हूं, तो मैं इसे अभी वहीं छोड़ रहा हूं (जब तक कि मैं इसे आज़माने के लिए उत्सुक न हो)।

कुछ बातें जिन पर आप जरूर विचार करें

  • इस बारे में सोचें कि आप अपने पुस्तकालय का संस्करण कैसे बनाने जा रहे हैं। आप कुछ स्तर पर पश्चगामी अनुकूलता चाहते हैं, और मार्ग के साथ बगफिक्स भी। सिमेंटिक वर्जनिंग के बारे में पढ़ें
  • आप एक अपेक्षाकृत रैखिक तरीके से (पूर्ववत करने के लिए) git का उपयोग कर रहे हैं। क्या आप git में ब्रांचिंग से परिचित हैं । यह वास्तव में उतना मुश्किल नहीं है, और जीवन को आसान बनाता है। एक बार जब आप शाखाओं के साथ अपनी पकड़ में आ गए। अपनी रिपॉजिटरी के लिए ब्रांचिंग मॉडल अपनाएं। इस शाखा मॉडल के उन हिस्सों को चुनें जिन्हें आप प्रासंगिक मानते हैं। इसकी तुलना उन रिपॉजिटरी शाखाओं से भी करें जिनकी आप उपयोग कर रहे हैं।
  • लाइसेंसिंग: आपको अपने पुस्तकालय के लिए लाइसेंस प्रदान करना चाहिए। मैं इस मामले का कोई कानूनी विशेषज्ञ नहीं हूं, इसलिए मैं केवल आम लाइसेंस के बीच इस तुलना का लिंक साझा कर सकता हूं । इस विकल्प को हल्के में न लें।
  • बग ट्रैकर। आप चाहते हैं कि उपयोगकर्ता आपको बग रिपोर्ट प्रदान कर सके। यह आपको कोड की गुणवत्ता में सुधार करने में मदद करता है। आपके द्वारा हल किए जाने वाले प्रत्येक बग के लिए, अपने परीक्षण फ़्रेम कार्य में एक परीक्षण जोड़ें, जो यह सुनिश्चित करता है कि यह भविष्य (प्रतिगमन परीक्षण) में ब्रेक नहीं करता है। एक बग ट्रैकिंग सिस्टम का उपयोग सुविधा अनुरोधों के लिए किया जा सकता है।
  • उपयोगकर्ता योगदान। क्या आप उपयोगकर्ता योगदान चाहते हैं? मुझे यकीन नहीं है कि यह आम तौर पर ओपन-सोर्स उत्पादों पर कैसे काम करता है, लेकिन मैं सोच सकता हूं कि आप उपयोगकर्ताओं को सुविधा शाखा बनाने की अनुमति दे सकते हैं। पुलथ अनुरोध के माध्यम से आप इसे नियंत्रित करने में सक्षम प्रतीत होते हैं

मुझे पायथन के साथ कोई प्रासंगिक अनुभव नहीं है, इसलिए मैं आपको उस दिशा में कोई संकेत नहीं दे सकता। हालाँकि, यह संभव है कि आपके रिमोट रिपॉजिटरी (यानी जेनकिन्स का उपयोग करके ) पर प्रत्येक कमिटमेंट द्वारा ट्रिगर किए गए सभी परीक्षण को स्वचालित किया जाए । मैं हालांकि इसे स्थगित करने का सुझाव देता हूं, क्योंकि यह पूर्व अनुभव के बिना स्थापित करने के लिए बहुत काम है।


2

ये महान प्रश्न हैं।

एक भरोसेमंद पुस्तकालय की दिशा में महत्वपूर्ण ठोस वृद्धिशील कदमों के बारे में:

  • उन फ़ाइलों को अलग करें जो बाकी प्रोजेक्ट से लाइब्रेरी बन जाएंगी।
    • पुस्तकालय को अपने स्वयं के भंडार में जाना चाहिए लेकिन आपको इसे अपने वर्तमान भंडार के भीतर एक अलग शीर्ष-स्तरीय निर्देशिका में रखने के लिए एक उपयोगी मध्यवर्ती कदम मिल सकता है। जब आप इसे एक अलग रिपॉजिटरी बनाते हैं, तो अपनी परियोजना के बाकी हिस्सों से सटे स्टोर करें, जो तब ../libraryतक इसके माध्यम से संदर्भित कर सकते हैं जब तक कि आप पाइप पैकेजिंग और विकास मोड चरणों के आसपास नहीं पहुंचते।
    • इस परियोजना के बाकी हिस्सों से इस पुस्तकालय तक सभी पहुंचें अपने सार्वजनिक एपीआई के माध्यम से जानी चाहिए। आपको छेड़ने के लिए कुछ अन्योन्याश्रितियाँ मिल सकती हैं।
  • लाइब्रेरी के एपीआई को दस्तावेज करने के लिए आकस्मिक रूप से डॉकस्ट्रिंग्स लिखिए।
    • आखिरकार डॉकस्ट्रिंग्स एक डॉक्यूमेंटेशन टूल में फीड हो जाएगा, लेकिन महत्वपूर्ण काम उस टेक्स्ट को लिखना है जो एपीआई को अन्य लोगों को स्पष्ट और पर्याप्त रूप से समझाता है। इसे एक बार में एक बार में थोड़ा सा भरना आसान है, और यह किसी न किसी ड्राफ्ट को लिखने और बाद में इसे वापस लेने से बेहतर होगा जब बेहतर स्पष्टीकरण और उदाहरण दिमाग में आते हैं।
    • यदि आपको लगता है कि एपीआई का कुछ हिस्सा दस्तावेज़ में मुश्किल है, तो पूछें कि क्या एपीआई के उस हिस्से में सुधार की गुंजाइश है। क्या यह सरल हो सकता है? अधिक नियमित? क्या यह बहुत सामान्य है? बहुत विशेष? क्या यह अधिक परिचित नामों का उपयोग कर सकता है?
    • डॉक्स्ट्रिंग्स संरचित टिप्पणियों का उपयोग करके तर्क प्रकारों को दस्तावेज़ित कर सकते हैं जो उपकरण जांच सकते हैं। मुझे अभी तक उस पर वास्तविक प्रलेखन नहीं मिला है, लेकिन PyCharm IDE उन डॉकस्ट्रिंग्स के निर्माण में मदद करेगा और पद्धति कॉल को संपादित करते समय तर्क प्रकारों की तुरंत जाँच करेगा।
    • जिसके बारे में बोलते हुए, PyCharm डेवलपर समय बचाने और कोड गुणवत्ता में सुधार करने के लिए एक अद्भुत उपकरण है। जब आप इसे संपादित करते हैं, तो कोड की जांच करने के लिए यह "निरीक्षण" चलाएगा, उदाहरण के लिए जब यह कर सकता है तो जाँच प्रकार, लापता और अप्रयुक्त आयात, डुप्लिकेट तरीकों, पीईपी 8 शैली की गलतियों, और इसी तरह।
  • उपयोग करके इकाई परीक्षण लिखना शुरू करें pytest। रिलीज से पहले लंबे समय तक, यूनिट परीक्षण आपके स्वयं के विकास में कोने के मामलों में बग ढूंढकर और यह विश्वास दिलाता है कि कोड परिवर्तन चीजों को नहीं तोड़ेंगे। फिर, आप इसे समय के साथ बना सकते हैं। इसे शुरू करना बहुत आसान है।
  • मौजूदा ओपन सोर्स लाइब्रेरीज़ (जो लगभग एक ही आकार की हैं) को GitHub पर देखने के लिए कि वे फ़ाइलों और रिलीज़ को कैसे व्यवस्थित करते हैं। देखो कि वे बग / ट्रैकिंग कैसे करते हैं और अनुरोधों को जारी करते हैं। यदि आपके पास वहां अनुभव नहीं है, तो इन बहु-व्यक्ति परियोजना संगठन प्रक्रियाओं के साथ अनुभव प्राप्त करने के लिए उनमें से एक या अधिक का योगदान करें। इन प्रक्रियाओं के लिए GitHub के पास अच्छे उपकरण हैं। यह README.mdशीर्ष स्तर पर और किसी भी निर्देशिका में प्रलेखन फ़ाइलों के साथ और एक लाइसेंस फ़ाइल के साथ अच्छी चीजें करता है ।
  • पुस्तकालय, उसके एपीआई और प्रलेखन पर प्रतिक्रिया प्राप्त करने के लिए एक सहयोगी को सूचीबद्ध करने पर विचार करें।
    • जब आप जारी करते हैं, तो जब आप छुट्टी पर होते हैं, तो उपयोगकर्ता के सवालों के जवाब देने में मदद करने के लिए बग को ठीक करने के लिए एक या एक से अधिक सहयोगी रखने में मदद मिलेगी, और इस बीच, कोड-समीक्षाओं के साथ पुल अनुरोध करना शुरू करना, पुस्तकालय-विमोचन कार्यों को विभाजित करना, और परियोजना प्रबंधन और पुस्तकालय डिजाइन के साथ अतिरिक्त अनुभव में लाना।
  • अब तक आप एक रेखीय git कमिट हिस्ट्री कर रहे हैं। आखिरकार यह विशिष्ट सुधारों और परिवर्तनों के लिए "जारी शाखाओं" का उपयोग करने के लिए उपयोगी होगा, नियंत्रित रन-अप के लिए "रिलीज़ शाखाएँ", और किसी भी बहु-व्यक्ति के लिए "विकास शाखाएँ" प्रगति में हैं जो विलय के लिए तैयार नहीं हैं मास्टर शाखा में। तो इस बारे में जानने के लिए एक या दो दिन अलग से सेट करें और उन अभ्यास कौशल पर भरोसा करने से पहले इसके साथ अभ्यास करना शुरू करें। git बहुत लचीला और उपयोगी है, लेकिन उपयोगकर्ता इंटरफ़ेस खराब हो सकता है
    • Git शाखाओं और उनके उपयोगों के बारे में पढ़ने के लिए एक जगह प्रो Git पुस्तक में है । शाखाओं का उपयोग करने के कई तरीकों में से, बस "जारी शाखाओं" के साथ शुरू करें।
    • GitHub डेस्कटॉप ऐप शाखाओं को प्रबंधित करने के लिए एक शानदार उपकरण है। यह कमिट करने के लिए भी बहुत अच्छा है क्योंकि यह सभी परिवर्तनों की समीक्षा करते हुए प्रतिबद्ध संदेश लिखना आसान बनाता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.