gac में योगदान करना
May 17, 2026 · View on GitHub
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano
इस प्रोजेक्ट में योगदान करने में आपकी रुचि के लिए धन्यवाद! आपकी मदद की सराहना की जाती है। कृपया इन दिशानिर्देशों का पालन करें ताकि प्रक्रिया सभी के लिए सुगम रहे।
विषय-सूची
- gac में योगदान करना
विकास वातावरण सेटअप
यह प्रोजेक्ट निर्भरता प्रबंधन के लिए uv का उपयोग करता है और सामान्य विकास कार्यों के लिए एक Makefile प्रदान करता है:
त्वरित सेटअप
# Lefthook हुक सहित सब कुछ सेट करने के लिए एक कमांड
make dev
यह कमांड निम्न कार्य करेगा:
- विकास निर्भरताएं इंस्टॉल करें
- git हुक इंस्टॉल करें
- किसी भी मौजूदा समस्या को ठीक करने के लिए सभी फाइलों में Lefthook हुक चलाएं
वैकल्पिक सेटअप (यदि आप चरण-दर-चरण पसंद करते हैं)
# वर्चुअल एनवायरनमेंट बनाएं और निर्भरताएं इंस्टॉल करें
make setup
# विकास निर्भरताएं इंस्टॉल करें
make dev
# Lefthook हुक इंस्टॉल करें
brew install lefthook # या विकल्पों के नीचे देखें
lefthook install
lefthook run pre-commit --all
उपलब्ध कमांड
make setup- वर्चुअल एनवायरनमेंट बनाएं और सभी निर्भरताएं इंस्टॉल करेंmake dev- पूर्ण विकास सेटअप - Lefthook हुक सहितmake test- मानक परीक्षण चलाएं (इंटीग्रेशन परीक्षणों को छोड़कर)make test-integration- केवल इंटीग्रेशन परीक्षण चलाएं (API कुंजियों की आवश्यकता है)make test-all- सभी परीक्षण चलाएंmake test-cov- कवरेज रिपोर्ट के साथ परीक्षण चलाएंmake lint- कोड गुणवत्ता जांचें (ruff, prettier, markdownlint)make format- कोड फॉर्मेटिंग समस्याओं को स्वचालित रूप से ठीक करें
वर्जन बंपिंग
महत्वपूर्ण: PRs में src/gac/__version__.py में एक वर्जन बंप शामिल होना चाहिए जब उनमें रिलीज़ किए जाने वाले परिवर्तन होते हैं।
वर्जन कैसे बंप करें
src/gac/__version__.pyसंपादित करें और वर्जन नंबर बढ़ाएं- सिमेंटिक वर्जनिंग का पालन करें:
- पैच (1.6.X): बग फिक्सेस, छोटे सुधार
- माइनर (1.X.0): नई सुविधाएं, पिछड़े-संगत परिवर्तन (जैसे, नया प्रोवाइडर जोड़ना)
- मेजर (X.0.0): ब्रेकिंग परिवर्तन
रिलीज़ प्रक्रिया
रिलीज़ें वर्जन टैग धक्का देकर ट्रिगर होती हैं:
- वर्जन बंप के साथ PR(s) को main में मर्ज करें
- एक टैग बनाएं:
git tag v1.6.1 - टैग धक्का दें:
git push origin v1.6.1 - GitHub Actions स्वचालित रूप से PyPI पर प्रकाशित करता है
उदाहरण:
# src/gac/__version__.py
__version__ = "1.6.1" # 1.6.0 से बंप किया गया
bump-my-version का उपयोग करना (वैकल्पिक)
यदि आपके पास bump-my-version इंस्टॉल है, तो आप इसका स्थानीय रूप से उपयोग कर सकते हैं:
# बग फिक्सेस के लिए:
bump-my-version bump patch
# नई सुविधाओं के लिए:
bump-my-version bump minor
# ब्रेकिंग परिवर्तनों के लिए:
bump-my-version bump major
कोडिंग मानक
- Python 3.10+ को लक्षित करें (3.10, 3.11, 3.12, 3.13, 3.14)
- सभी फंक्शन पैरामीटर और रिटर्न वैल्यू के लिए टाइप हिंट का उपयोग करें
- कोड को साफ, कॉम्पैक्ट, और पठनीय रखें
- अनावश्यक जटिलता से बचें
- प्रिंट स्टेटमेंट के बजाय लॉगिंग का उपयोग करें
- फॉर्मेटिंग
ruffद्वारा हैंडल किया जाता है (एक उपकरण में लिंटिंग, फॉर्मेटिंग, और आयात छंटाई; अधिकतम लाइन लंबाई: 120) pytestके साथ न्यूनतम, प्रभावी परीक्षण लिखें
Git हुक (Lefthook)
यह प्रोजेक्ट कोड गुणवत्ता जांच को तेज़ और संगत रखने के लिए Lefthook का उपयोग करता है। कॉन्फ़िगर किए गए हुक हमारे पिछले प्री-कमिट सेटअप को दर्शाते हैं:
ruff- Python लिंटिंग और फॉर्मेटिंग (black, isort, और flake8 को बदलता है)markdownlint-cli2- Markdown लिंटिंगprettier- फाइल फॉर्मेटिंग (markdown, yaml, json)check-upstream- अपस्ट्रीम परिवर्तनों की जांच के लिए कस्टम हुक
सेटअप
अनुशंसित दृष्टिकोण:
make dev
मैनुअल सेटअप (यदि आप चरण-दर-चरण पसंद करते हैं):
-
Lefthook इंस्टॉल करें (अपने सेटअप से मेल खाने वाला विकल्प चुनें):
brew install lefthook # macOS (Homebrew) # या cargo install lefthook # Rust टूलचेन # या asdf plugin add lefthook && asdf install lefthook latest -
git हुक इंस्टॉल करें:
lefthook install -
(वैकल्पिक) सभी फाइलों के खिलाफ चलाएं:
lefthook run pre-commit --all
अब हुक प्रत्येक कमिट पर स्वचालित रूप से चलेंगे। यदि कोई जांच विफल होती है, तो आपको कमिट करने से पहले समस्याओं को ठीक करना होगा।
Git हुक छोड़ना
यदि आपको अस्थायी रूप से Lefthook जांच को छोड़ने की आवश्यकता है, तो --no-verify फ्लैग का उपयोग करें:
git commit --no-verify -m "Your commit message"
नोट: इसका उपयोग केवल तभी किया जाना चाहिए जब यह पूरी तरह से आवश्यक हो, क्योंकि यह महत्वपूर्ण कोड गुणवत्ता जांच को बायपास करता है।
परीक्षण दिशानिर्देश
प्रोजेक्ट परीक्षण के लिए pytest का उपयोग करता है। नई सुविधाएं जोड़ते समय या बग ठीक करते समय, कृपया उन परीक्षण शामिल करें जो आपके परिवर्तनों को कवर करते हों।
ध्यान दें कि scripts/ निर्देशिका उन कार्यक्षमताओं के लिए परीक्षण स्क्रिप्ट्स रखती है जिन्हें आसानी से pytest के साथ परीक्षित नहीं किया जा सकता।
जटिल परिदृश्यों या इंटीग्रेशन परीक्षणों के लिए यहां स्क्रिप्ट्स जोड़ने के लिए स्वतंत्र महसूस करें जो मानक pytest फ्रेमवर्क का उपयोग करके लागू करना मुश्किल होगा।
परीक्षण चलाना
# मानक परीक्षण चलाएं (वास्तविक API कॉल के साथ इंटीग्रेशन परीक्षणों को छोड़कर)
make test
# केवल प्रोवाइडर इंटीग्रेशन परीक्षण चलाएं (API कुंजियों की आवश्यकता है)
make test-integration
# प्रोवाइडर इंटीग्रेशन परीक्षणों सहित सभी परीक्षण चलाएं
make test-all
# कवरेज के साथ परीक्षण चलाएं
make test-cov
# विशिष्ट परीक्षण फाइल चलाएं
uv run -- pytest tests/test_prompt.py
# विशिष्ट परीक्षण चलाएं
uv run -- pytest tests/test_prompt.py::TestExtractRepositoryContext::test_extract_repository_context_with_docstring
प्रोवाइडर इंटीग्रेशन परीक्षण
प्रोवाइडर इंटीग्रेशन परीक्षण यह सत्यापित करने के लिए वास्तविक API कॉल करते हैं कि प्रोवाइडर कार्यान्वयन वास्तविक API के साथ सही ढंग से काम करता है। ये परीक्षण @pytest.mark.integration के साथ चिह्नित होते हैं और डिफ़ॉल्ट रूप से छोड़ दिए जाते हैं ताकि:
- नियमित विकास के दौरान API क्रेडिट की खपत से बचें
- API कुंजी कॉन्फ़िगर न होने पर परीक्षण विफलताओं को रोकें
- तीव्र पुनरावृत्ति के लिए परीक्षण निष्पादन को तेज़ रखें
प्रोवाइडर इंटीग्रेशन परीक्षण चलाने के लिए:
-
API कुंजियां सेट करें उन प्रोवाइडर्स के लिए जिन्हें आप परीक्षण करना चाहते हैं:
export ANTHROPIC_API_KEY="your-key" export CEREBRAS_API_KEY="your-key" export GEMINI_API_KEY="your-key" export GROQ_API_KEY="your-key" export OPENAI_API_KEY="your-key" export OPENROUTER_API_KEY="your-key" export STREAMLAKE_API_KEY="your-key" export ZAI_API_KEY="your-key" # LM Studio और Ollama को एक स्थानीय इंस्टेंस चलाने की आवश्यकता है # LM Studio और Ollama के लिए API कुंजी वैकल्पिक हैं जब तक कि आपका डिप्लॉयमेंट प्रमाणीकरण लागू नहीं करता है -
प्रोवाइडर परीक्षण चलाएं:
make test-integration
परीक्षण उन प्रोवाइडर्स को छोड़ देंगे जहां API कुंजी कॉन्फ़िगर नहीं हैं। ये परीक्षण API परिवर्तनों का जल्दी पता लगाने और प्रोवाइडर APIs के साथ संगतता सुनिश्चित करने में मदद करते हैं।
आचार संहिता
सम्मानजनक और रचनात्मक रहें। उत्पीड़न या दुर्व्यवहार सहन नहीं किया जाएगा।
लाइसेंस
योगदान द्वारा, आप सहमत होते हैं कि आपका योगदान प्रोजेक्ट के समान लाइसेंस के तहत लाइसेंस प्राप्त किया जाएगा।
सहायता कहां प्राप्त करें
- ट्रबलशूटिंग के लिए, TROUBLESHOOTING.md देखें
- उपयोग और CLI विकल्पों के लिए, ../USAGE.md देखें
- लाइसेंस विवरण के लिए, ../LICENSE देखें
uvx gac को बेहतर बनाने में मदद करने के लिए धन्यवाद!