Python नियम

समस्या की शिकायत करें सोर्स देखें Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

नियम

py_binary

नियम का सोर्स देखें
py_binary(name, deps, srcs, data, args, aspect_hints, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, interpreter_args, legacy_create_init, licenses, main, main_module, output_licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

deps

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

टारगेट में लिंक की जाने वाली अन्य लाइब्रेरी की सूची. [`deps` एट्रिब्यूट के बारे में टिप्पणियां देखें. इस एट्रिब्यूट को आम तौर पर नियमों के हिसाब से तय किया जाता है](https://bazel.build/reference/be/common-definitions#typical-attributes). ये आम तौर पर `py_library` नियम होते हैं. ऐसे टारगेट जो सिर्फ़ रनटाइम में इस्तेमाल की जाने वाली डेटा फ़ाइलें उपलब्ध कराते हैं उन्हें `data` एट्रिब्यूट में शामिल किया जाता है.
srcs

लेबल की सूची; ज़रूरी है

टारगेट बनाने के लिए प्रोसेस की गई Python सोर्स फ़ाइलों की सूची. इसमें चेक-इन किया गया आपका पूरा कोड शामिल होता है. साथ ही, इसमें जनरेट की गई सोर्स फ़ाइलें भी शामिल हो सकती हैं. `.py` फ़ाइलें `srcs` में होनी चाहिए और लाइब्रेरी टारगेट `deps` में होने चाहिए. रन टाइम में ज़रूरी अन्य बाइनरी फ़ाइलें `data` में होनी चाहिए.
data

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

रनटाइम के दौरान, इस लाइब्रेरी के लिए ज़रूरी फ़ाइलों की सूची. [`data` एट्रिब्यूट के बारे में टिप्पणियां देखें. इस एट्रिब्यूट को आम तौर पर नियमों के हिसाब से तय किया जाता है](https://bazel.build/reference/be/common-definitions#typical-attributes). `cc_embed_data` और `go_embed_data` की तरह, `py_embed_data` नहीं होता है. ऐसा इसलिए है, क्योंकि Python में रनटाइम रिसॉर्स का कॉन्सेप्ट होता है.
distribs

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

imports

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

इंपोर्ट की जाने वाली डायरेक्ट्री की सूची, जिसे PYTHONPATH में जोड़ा जाना है. "बदलाव करें" सुविधा के तहत, इसमें बदलाव किया जा सकता है. ये इंपोर्ट डायरेक्ट्री, इस नियम और इस पर निर्भर सभी नियमों के लिए जोड़ी जाएंगी. ध्यान दें: यह उन नियमों के लिए नहीं जोड़ी जाएंगी जिन पर यह नियम निर्भर है. इस नियम पर निर्भर रहने वाले `py_binary` नियमों के ज़रिए, हर डायरेक्ट्री को `PYTHONPATH` में जोड़ा जाएगा. स्ट्रिंग, repo-runfiles-root के हिसाब से होती हैं, ऐब्सलूट पाथ (ऐसे पाथ जो `/` से शुरू होते हैं) और ऐसे पाथ इस्तेमाल करने की अनुमति नहीं है जो एक्ज़ीक्यूशन रूट से ऊपर के पाथ को रेफ़रंस करते हैं. ऐसा करने पर गड़बड़ी होगी.
interpreter_args

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

ऐसे आर्ग्युमेंट जो सिर्फ़ इंटरप्रेटर पर लागू होते हैं. इंटरप्रेटर के साथ काम करने वाले आर्ग्युमेंट, इंटरप्रेटर के हिसाब से तय होते हैं. CPython के लिए, https://docs.python.org/3/using/cmdline.html पर जाएं. :::{note} यह सिर्फ़ {obj}`--bootstrap_impl=script` के लिए काम करता है. अन्य मामलों में इसे अनदेखा कर दिया जाता है. ::: :::{seealso} {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` एनवायरमेंट वैरिएबल ::: :::{versionadded} 1.3.0 :::
legacy_create_init

पूर्णांक; डिफ़ॉल्ट वैल्यू -1 है

यह तय करता है कि रनफ़ाइल ट्री में, खाली `__init__.py` फ़ाइलें अपने-आप बनेंगी या नहीं. ये फ़ाइलें, Python सोर्स कोड या शेयर की गई लाइब्रेरी वाली हर डायरेक्ट्री में बनाई जाती हैं. साथ ही, इन डायरेक्ट्री की हर पैरंट डायरेक्ट्री में भी बनाई जाती हैं. हालांकि, ये फ़ाइलें repo रूट डायरेक्ट्री में नहीं बनाई जाती हैं. डिफ़ॉल्ट वैल्यू `-1` (अपने-आप) का मतलब है कि यह सही है. हालांकि, ऐसा तब तक होता है, जब तक `--incompatible_default_to_explicit_init_py` का इस्तेमाल न किया जाए. अगर यह वैल्यू false है, तो उपयोगकर्ता को `__init__.py` फ़ाइलें बनानी होंगी. ये फ़ाइलें खाली भी हो सकती हैं. साथ ही, इन्हें Python टारगेट के `srcs` में जोड़ना होगा.
main

लेबल; डिफ़ॉल्ट वैल्यू None है

यह विकल्प इस्तेमाल करना ज़रूरी नहीं है. यह सोर्स फ़ाइल का नाम है, जो ऐप्लिकेशन का मुख्य एंट्री पॉइंट है. इस फ़ाइल को `srcs` में भी शामिल किया जाना चाहिए. अगर इसे तय नहीं किया जाता है, तो इसकी जगह `.py` जोड़कर `name` का इस्तेमाल किया जाता है. अगर `name` एट्रिब्यूट की वैल्यू, `srcs` एट्रिब्यूट की वैल्यू में मौजूद किसी भी फ़ाइल के नाम से मेल नहीं खाती है, तो `main` एट्रिब्यूट की वैल्यू तय करना ज़रूरी है. यह {obj}`main_module` के साथ म्यूचुअली एक्सक्लूसिव है.
main_module

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

मुख्य प्रोग्राम के तौर पर चलाने के लिए मॉड्यूल का नाम. इस विकल्प को सेट करने पर, `srcs` की ज़रूरत नहीं होती. साथ ही, यह माना जाता है कि मॉड्यूल को किसी डिपेंडेंसी से उपलब्ध कराया गया है. मॉड्यूल को मुख्य प्रोग्राम के तौर पर चलाने के बारे में ज़्यादा जानकारी के लिए, https://docs.python.org/3/using/cmdline.html#cmdoption-m देखें. यह {obj}`main` के साथ इस्तेमाल नहीं किया जा सकता. :::{versionadded} 1.3.0 :::
precompile

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

क्या **इस टारगेट के लिए** py सोर्स फ़ाइलों को पहले से कंपाइल किया जाना चाहिए. वैल्यू: * `inherit`: इससे डाउनस्ट्रीम बाइनरी को यह तय करने की अनुमति मिलती है कि पहले से कंपाइल की गई फ़ाइलों का इस्तेमाल किया जाए या नहीं. * `enabled`: बिल्ड के समय Python के सोर्स फ़ाइलों को कंपाइल करता है. * `disabled`: इस विकल्प को चुनने पर, बिल्ड के समय Python की सोर्स फ़ाइलों को कंपाइल नहीं किया जाता. ::{seealso} * {flag}`--precompile` फ़्लैग, जो कुछ मामलों में इस एट्रिब्यूट को बदल सकता है. साथ ही, यह बिल्ड करते समय सभी टारगेट पर असर डालेगा. * {obj}`pyc_collection` एट्रिब्यूट, जिसका इस्तेमाल हर टारगेट के हिसाब से प्रीकंपाइलिंग को ट्रांज़िटिव तरीके से चालू करने के लिए किया जाता है. * प्रीकंपाइलिंग का इस्तेमाल करने के बारे में गाइड के लिए, [प्रीकंपाइलिंग](precompiling) दस्तावेज़. :::
precompile_invalidation_mode

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "auto" है

प्रीकंपाइल की गई फ़ाइलों की पुष्टि कैसे की जानी चाहिए, ताकि यह पता चल सके कि वे उनसे जुड़ी सोर्स फ़ाइलों के साथ अप-टू-डेट हैं. इस एट्रिब्यूट की ये वैल्यू हो सकती हैं: * `auto`: इस एट्रिब्यूट की वैल्यू, बिल्ड की अन्य सेटिंग के हिसाब से अपने-आप तय हो जाएगी. * `checked_hash`: अगर सोर्स फ़ाइल का हैश, pyc फ़ाइल में रिकॉर्ड किए गए हैश से मेल खाता है, तो pyc फ़ाइल का इस्तेमाल करें. यह सुविधा, ऐसे कोड के साथ काम करते समय सबसे ज़्यादा मददगार होती है जिसमें बदलाव किया जा सकता है. * `unchecked_hash`: हमेशा pyc फ़ाइल का इस्तेमाल करें. pyc फ़ाइल के हैश की तुलना, सोर्स फ़ाइल से न करें. यह तब सबसे ज़्यादा काम आता है, जब कोड में बदलाव नहीं किया जाता. pyc फ़ाइल को अमान्य करने के मोड के बारे में ज़्यादा जानने के लिए, https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode पर जाएं
precompile_optimize_level

पूर्णांक; डिफ़ॉल्ट वैल्यू 0 है

प्रीकंपाइल की गई फ़ाइलों के लिए ऑप्टिमाइज़ेशन लेवल. ऑप्टिमाइज़ेशन लेवल के बारे में ज़्यादा जानने के लिए, `compile()` फ़ंक्शन के `optimize` आर्ग्युमेंट के दस्तावेज़ देखें. इसके लिए, https://docs.python.org/3/library/functions.html#compile पर जाएं ध्यान दें: वैल्यू `-1` का मतलब "मौजूदा इंटरप्रेटर" है. यह इंटरप्रेटर, _pyc जनरेट करते समय इस्तेमाल किया जाएगा_, न कि कोड के रनटाइम में इस्तेमाल किया जाने वाला इंटरप्रेटर.
precompile_source_retention

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

यह तय करता है कि सोर्स फ़ाइल को कंपाइल करने पर, सोर्स फ़ाइल को नतीजे के तौर पर मिले आउटपुट में रखा जाएगा या नहीं. मान्य वैल्यू ये हैं: * `inherit`: {flag}`--precompile_source_retention` फ़्लैग से वैल्यू इनहेरिट करें. * `keep_source`: इसमें ओरिजनल Python सोर्स शामिल होता है. * `omit_source`: ओरिजनल py सोर्स को शामिल न करें.
pyc_collection

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

यह कुकी तय करती है कि डिपेंडेंसी से pyc फ़ाइलों को मैन्युअल तरीके से शामिल किया जाना चाहिए या नहीं. मान्य वैल्यू ये हैं: * `inherit`: {flag}`--precompile` से वैल्यू इनहेरिट करें. * `include_pyc`: डिपेंडेंसी से, अपने-आप जनरेट होने वाली pyc फ़ाइलें जोड़ें. जैसे, उन टारगेट के लिए pyc फ़ाइलें जो {attr}`precompile="inherit"` के बारे में बताती हैं. * `disabled`: अपने-आप जनरेट होने वाली pyc फ़ाइलें न जोड़ें. ध्यान दें कि pyc फ़ाइलें अब भी उन डिपेंडेंसी से आ सकती हैं जो टारगेट लेवल पर प्रीकंपाइलिंग की सुविधा चालू करती हैं.
pyi_deps

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

लाइब्रेरी के लिए ज़रूरी टाइप की परिभाषाएं देने वाली डिपेंडेंसी. ये ऐसी डिपेंडेंसी हैं जो `typing.TYPE_CHECKING` से सुरक्षित इंपोर्ट को पूरा करती हैं. ये सिर्फ़ बिल्ड-टाइम की डिपेंडेंसी हैं और इन्हें रन किए जा सकने वाले प्रोग्राम के हिस्से के तौर पर शामिल नहीं किया जाता है. हालांकि, पैकेजिंग के नियमों में इन्हें शामिल किया जा सकता है. :::versionadded} 1.1.0 :::
pyi_srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

लाइब्रेरी के लिए टाइप डेफ़िनिशन फ़ाइलें. ये आम तौर पर `.pyi` फ़ाइलें होती हैं. हालांकि, टाइप-चेकर के लिए खास फ़ॉर्मैट वाली अन्य फ़ाइल टाइप की अनुमति है. ये फ़ाइलें, सिर्फ़ बिल्ड-टाइम की डिपेंडेंसी होती हैं. इन्हें रन किए जा सकने वाले प्रोग्राम के हिस्से के तौर पर शामिल नहीं किया जाता. हालांकि, पैकेजिंग के नियमों में इन्हें शामिल किया जा सकता है. :::versionadded} 1.1.0 :::
python_version

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

Python का वह वर्शन जिसका इस्तेमाल इस टारगेट को करना चाहिए. वैल्यू, `X.Y` या `X.Y.Z` (या इसके साथ काम करने वाले) फ़ॉर्मैट में होनी चाहिए. अगर यह फ़ील्ड खाली है या इसकी वैल्यू तय नहीं की गई है, तो आने वाले कॉन्फ़िगरेशन के {obj}`--python_version` फ़्लैग की वैल्यू इस्तेमाल की जाती है. पिछले वर्शन के साथ काम करने के लिए, `PY2` और `PY3` वैल्यू स्वीकार की जाती हैं. हालांकि, इन्हें खाली/बिना तय की गई वैल्यू के तौर पर माना जाता है. :::{note} अनुरोध किए गए वर्शन का इस्तेमाल करने के लिए, Python वर्शन से मेल खाने वाला टूलचेन कॉन्फ़िगर किया जाना चाहिए. अगर ऐसा नहीं होता है, तो टूलचेन के कॉन्फ़िगरेशन के आधार पर, इसे अनदेखा किया जा सकता है या कोई गड़बड़ी हो सकती है. ::: :::{versionchanged} 1.1.0 इस एट्रिब्यूट की वैल्यू को `PY2` और `PY3` से बदलकर, Python के किसी भी वर्शन को स्वीकार करने की सुविधा दी गई है. :::
srcs_version

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

यह सुविधा अब काम नहीं करती और इसका इस्तेमाल नहीं किया जाता.
stamp

पूर्णांक; डिफ़ॉल्ट वैल्यू -1 है

बिल्ड की जानकारी को बाइनरी में कोड में बदलना है या नहीं. संभावित वैल्यू: * `stamp = 1`: बिल्ड की जानकारी को हमेशा बाइनरी में स्टैंप करें. भले ही, `--nostamp` बिल्ड में ऐसा न किया गया हो. **इस सेटिंग का इस्तेमाल नहीं करना चाहिए**, क्योंकि इससे बाइनरी और उस पर निर्भर डाउनस्ट्रीम कार्रवाइयों के लिए रिमोट कैशिंग बंद हो जाती है. * `stamp = 0`: बिल्ड की जानकारी को हमेशा कॉन्सटेंट वैल्यू से बदलें. इससे, बिल्ड के नतीजों को बेहतर तरीके से कैश मेमोरी में सेव किया जा सकता है. * `stamp = -1`: बिल्ड की जानकारी को एम्बेड करने की सुविधा, `--[no]stamp` फ़्लैग से कंट्रोल की जाती है. स्टैंप किए गए बाइनरी को तब तक फिर से नहीं बनाया जाता, जब तक उनकी डिपेंडेंसी में बदलाव नहीं होता. चेतावनी: स्टैंपिंग से, बिल्ड की परफ़ॉर्मेंस पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि इससे कैश हिट कम हो जाते हैं. इसलिए, अगर हो सके, तो स्टैंपिंग से बचें.

py_library

नियम का सोर्स देखें
py_library(name, deps, srcs, data, aspect_hints, compatible_with, deprecation, distribs, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyi_deps, pyi_srcs, restricted_to, srcs_version, tags, target_compatible_with, testonly, toolchains, visibility)
यह Python कोड की एक लाइब्रेरी है, जिस पर भरोसा किया जा सकता है. डिफ़ॉल्ट आउटपुट: * इनपुट Python सोर्स * सोर्स से पहले से कंपाइल किए गए आर्टफ़ैक्ट. ध्यान दें: प्रीकंपाइलेशन से यह तय होता है कि डिफ़ॉल्ट आउटपुट में से कौनसे आउटपुट, रनफ़ाइल में शामिल किए जाएंगे. ज़्यादा जानकारी के लिए, प्रीकंपाइल से जुड़े एट्रिब्यूट और फ़्लैग देखें. ::{versionchanged} 0.37.0 सोर्स फ़ाइलों को अब सीधे तौर पर रनफ़ाइलों में नहीं जोड़ा जाता है. :::

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

deps

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

टारगेट में लिंक की जाने वाली अन्य लाइब्रेरी की सूची. [`deps` एट्रिब्यूट के बारे में टिप्पणियां देखें. इस एट्रिब्यूट को आम तौर पर नियमों के हिसाब से तय किया जाता है](https://bazel.build/reference/be/common-definitions#typical-attributes). ये आम तौर पर `py_library` नियम होते हैं. ऐसे टारगेट जो सिर्फ़ रनटाइम में इस्तेमाल की जाने वाली डेटा फ़ाइलें उपलब्ध कराते हैं उन्हें `data` एट्रिब्यूट में शामिल किया जाता है.
srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

टारगेट बनाने के लिए प्रोसेस की गई Python सोर्स फ़ाइलों की सूची. इसमें चेक-इन किया गया आपका पूरा कोड शामिल होता है. साथ ही, इसमें जनरेट की गई सोर्स फ़ाइलें भी शामिल हो सकती हैं. `.py` फ़ाइलें `srcs` में होनी चाहिए और लाइब्रेरी टारगेट `deps` में होने चाहिए. रन टाइम में ज़रूरी अन्य बाइनरी फ़ाइलें `data` में होनी चाहिए.
data

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

रनटाइम के दौरान, इस लाइब्रेरी के लिए ज़रूरी फ़ाइलों की सूची. [`data` एट्रिब्यूट के बारे में टिप्पणियां देखें. इस एट्रिब्यूट को आम तौर पर नियमों के हिसाब से तय किया जाता है](https://bazel.build/reference/be/common-definitions#typical-attributes). `cc_embed_data` और `go_embed_data` की तरह, `py_embed_data` नहीं होता है. ऐसा इसलिए है, क्योंकि Python में रनटाइम रिसॉर्स का कॉन्सेप्ट होता है.
distribs

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

imports

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

इंपोर्ट की जाने वाली डायरेक्ट्री की सूची, जिसे PYTHONPATH में जोड़ा जाना है. "बदलाव करें" सुविधा के तहत, इसमें बदलाव किया जा सकता है. ये इंपोर्ट डायरेक्ट्री, इस नियम और इस पर निर्भर सभी नियमों के लिए जोड़ी जाएंगी. ध्यान दें: यह उन नियमों के लिए नहीं जोड़ी जाएंगी जिन पर यह नियम निर्भर है. इस नियम पर निर्भर रहने वाले `py_binary` नियमों के ज़रिए, हर डायरेक्ट्री को `PYTHONPATH` में जोड़ा जाएगा. स्ट्रिंग, repo-runfiles-root के हिसाब से होती हैं, ऐब्सलूट पाथ (ऐसे पाथ जो `/` से शुरू होते हैं) और ऐसे पाथ इस्तेमाल करने की अनुमति नहीं है जो एक्ज़ीक्यूशन रूट से ऊपर के पाथ को रेफ़रंस करते हैं. ऐसा करने पर गड़बड़ी होगी.
precompile

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

क्या **इस टारगेट के लिए** py सोर्स फ़ाइलों को पहले से कंपाइल किया जाना चाहिए. वैल्यू: * `inherit`: इससे डाउनस्ट्रीम बाइनरी को यह तय करने की अनुमति मिलती है कि पहले से कंपाइल की गई फ़ाइलों का इस्तेमाल किया जाए या नहीं. * `enabled`: बिल्ड के समय Python के सोर्स फ़ाइलों को कंपाइल करता है. * `disabled`: इस विकल्प को चुनने पर, बिल्ड के समय Python की सोर्स फ़ाइलों को कंपाइल नहीं किया जाता. ::{seealso} * {flag}`--precompile` फ़्लैग, जो कुछ मामलों में इस एट्रिब्यूट को बदल सकता है. साथ ही, यह बिल्ड करते समय सभी टारगेट पर असर डालेगा. * {obj}`pyc_collection` एट्रिब्यूट, जिसका इस्तेमाल हर टारगेट के हिसाब से प्रीकंपाइलिंग को ट्रांज़िटिव तरीके से चालू करने के लिए किया जाता है. * प्रीकंपाइलिंग का इस्तेमाल करने के बारे में गाइड के लिए, [प्रीकंपाइलिंग](precompiling) दस्तावेज़. :::
precompile_invalidation_mode

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "auto" है

प्रीकंपाइल की गई फ़ाइलों की पुष्टि कैसे की जानी चाहिए, ताकि यह पता चल सके कि वे उनसे जुड़ी सोर्स फ़ाइलों के साथ अप-टू-डेट हैं. इस एट्रिब्यूट की ये वैल्यू हो सकती हैं: * `auto`: इस एट्रिब्यूट की वैल्यू, बिल्ड की अन्य सेटिंग के हिसाब से अपने-आप तय हो जाएगी. * `checked_hash`: अगर सोर्स फ़ाइल का हैश, pyc फ़ाइल में रिकॉर्ड किए गए हैश से मेल खाता है, तो pyc फ़ाइल का इस्तेमाल करें. यह सुविधा, ऐसे कोड के साथ काम करते समय सबसे ज़्यादा मददगार होती है जिसमें बदलाव किया जा सकता है. * `unchecked_hash`: हमेशा pyc फ़ाइल का इस्तेमाल करें. pyc फ़ाइल के हैश की तुलना, सोर्स फ़ाइल से न करें. यह तब सबसे ज़्यादा काम आता है, जब कोड में बदलाव नहीं किया जाता. pyc फ़ाइल को अमान्य करने के मोड के बारे में ज़्यादा जानने के लिए, https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode पर जाएं
precompile_optimize_level

पूर्णांक; डिफ़ॉल्ट वैल्यू 0 है

प्रीकंपाइल की गई फ़ाइलों के लिए ऑप्टिमाइज़ेशन लेवल. ऑप्टिमाइज़ेशन लेवल के बारे में ज़्यादा जानने के लिए, `compile()` फ़ंक्शन के `optimize` आर्ग्युमेंट के दस्तावेज़ देखें. इसके लिए, https://docs.python.org/3/library/functions.html#compile पर जाएं ध्यान दें: वैल्यू `-1` का मतलब "मौजूदा इंटरप्रेटर" है. यह इंटरप्रेटर, _pyc जनरेट करते समय इस्तेमाल किया जाएगा_, न कि कोड के रनटाइम में इस्तेमाल किया जाने वाला इंटरप्रेटर.
precompile_source_retention

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

यह तय करता है कि सोर्स फ़ाइल को कंपाइल करने पर, सोर्स फ़ाइल को नतीजे के तौर पर मिले आउटपुट में रखा जाएगा या नहीं. मान्य वैल्यू ये हैं: * `inherit`: {flag}`--precompile_source_retention` फ़्लैग से वैल्यू इनहेरिट करें. * `keep_source`: इसमें ओरिजनल Python सोर्स शामिल होता है. * `omit_source`: ओरिजनल py सोर्स को शामिल न करें.
pyi_deps

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

लाइब्रेरी के लिए ज़रूरी टाइप की परिभाषाएं देने वाली डिपेंडेंसी. ये ऐसी डिपेंडेंसी हैं जो `typing.TYPE_CHECKING` से सुरक्षित इंपोर्ट को पूरा करती हैं. ये सिर्फ़ बिल्ड-टाइम की डिपेंडेंसी हैं और इन्हें रन किए जा सकने वाले प्रोग्राम के हिस्से के तौर पर शामिल नहीं किया जाता है. हालांकि, पैकेजिंग के नियमों में इन्हें शामिल किया जा सकता है. :::versionadded} 1.1.0 :::
pyi_srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

लाइब्रेरी के लिए टाइप डेफ़िनिशन फ़ाइलें. ये आम तौर पर `.pyi` फ़ाइलें होती हैं. हालांकि, टाइप-चेकर के लिए खास फ़ॉर्मैट वाली अन्य फ़ाइल टाइप की अनुमति है. ये फ़ाइलें, सिर्फ़ बिल्ड-टाइम की डिपेंडेंसी होती हैं. इन्हें रन किए जा सकने वाले प्रोग्राम के हिस्से के तौर पर शामिल नहीं किया जाता. हालांकि, पैकेजिंग के नियमों में इन्हें शामिल किया जा सकता है. :::versionadded} 1.1.0 :::
srcs_version

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

यह सुविधा अब काम नहीं करती और इसका इस्तेमाल नहीं किया जाता.

py_test

नियम का सोर्स देखें
py_test(name, deps, srcs, data, args, aspect_hints, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, imports, interpreter_args, legacy_create_init, licenses, local, main, main_module, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

deps

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

टारगेट में लिंक की जाने वाली अन्य लाइब्रेरी की सूची. [`deps` एट्रिब्यूट के बारे में टिप्पणियां देखें. इस एट्रिब्यूट को आम तौर पर नियमों के हिसाब से तय किया जाता है](https://bazel.build/reference/be/common-definitions#typical-attributes). ये आम तौर पर `py_library` नियम होते हैं. ऐसे टारगेट जो सिर्फ़ रनटाइम में इस्तेमाल की जाने वाली डेटा फ़ाइलें उपलब्ध कराते हैं उन्हें `data` एट्रिब्यूट में शामिल किया जाता है.
srcs

लेबल की सूची; ज़रूरी है

टारगेट बनाने के लिए प्रोसेस की गई Python सोर्स फ़ाइलों की सूची. इसमें चेक-इन किया गया आपका पूरा कोड शामिल होता है. साथ ही, इसमें जनरेट की गई सोर्स फ़ाइलें भी शामिल हो सकती हैं. `.py` फ़ाइलें `srcs` में होनी चाहिए और लाइब्रेरी टारगेट `deps` में होने चाहिए. रन टाइम में ज़रूरी अन्य बाइनरी फ़ाइलें `data` में होनी चाहिए.
data

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

रनटाइम के दौरान, इस लाइब्रेरी के लिए ज़रूरी फ़ाइलों की सूची. [`data` एट्रिब्यूट के बारे में टिप्पणियां देखें. इस एट्रिब्यूट को आम तौर पर नियमों के हिसाब से तय किया जाता है](https://bazel.build/reference/be/common-definitions#typical-attributes). `cc_embed_data` और `go_embed_data` की तरह, `py_embed_data` नहीं होता है. ऐसा इसलिए है, क्योंकि Python में रनटाइम रिसॉर्स का कॉन्सेप्ट होता है.
distribs

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

imports

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

इंपोर्ट की जाने वाली डायरेक्ट्री की सूची, जिसे PYTHONPATH में जोड़ा जाना है. "बदलाव करें" सुविधा के तहत, इसमें बदलाव किया जा सकता है. ये इंपोर्ट डायरेक्ट्री, इस नियम और इस पर निर्भर सभी नियमों के लिए जोड़ी जाएंगी. ध्यान दें: यह उन नियमों के लिए नहीं जोड़ी जाएंगी जिन पर यह नियम निर्भर है. इस नियम पर निर्भर रहने वाले `py_binary` नियमों के ज़रिए, हर डायरेक्ट्री को `PYTHONPATH` में जोड़ा जाएगा. स्ट्रिंग, repo-runfiles-root के हिसाब से होती हैं, ऐब्सलूट पाथ (ऐसे पाथ जो `/` से शुरू होते हैं) और ऐसे पाथ इस्तेमाल करने की अनुमति नहीं है जो एक्ज़ीक्यूशन रूट से ऊपर के पाथ को रेफ़रंस करते हैं. ऐसा करने पर गड़बड़ी होगी.
interpreter_args

स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू [] है

ऐसे आर्ग्युमेंट जो सिर्फ़ इंटरप्रेटर पर लागू होते हैं. इंटरप्रेटर के साथ काम करने वाले आर्ग्युमेंट, इंटरप्रेटर के हिसाब से तय होते हैं. CPython के लिए, https://docs.python.org/3/using/cmdline.html पर जाएं. :::{note} यह सिर्फ़ {obj}`--bootstrap_impl=script` के लिए काम करता है. अन्य मामलों में इसे अनदेखा कर दिया जाता है. ::: :::{seealso} {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` एनवायरमेंट वैरिएबल ::: :::{versionadded} 1.3.0 :::
legacy_create_init

पूर्णांक; डिफ़ॉल्ट वैल्यू -1 है

यह तय करता है कि रनफ़ाइल ट्री में, खाली `__init__.py` फ़ाइलें अपने-आप बनेंगी या नहीं. ये फ़ाइलें, Python सोर्स कोड या शेयर की गई लाइब्रेरी वाली हर डायरेक्ट्री में बनाई जाती हैं. साथ ही, इन डायरेक्ट्री की हर पैरंट डायरेक्ट्री में भी बनाई जाती हैं. हालांकि, ये फ़ाइलें repo रूट डायरेक्ट्री में नहीं बनाई जाती हैं. डिफ़ॉल्ट वैल्यू `-1` (अपने-आप) का मतलब है कि यह सही है. हालांकि, ऐसा तब तक होता है, जब तक `--incompatible_default_to_explicit_init_py` का इस्तेमाल न किया जाए. अगर यह वैल्यू false है, तो उपयोगकर्ता को `__init__.py` फ़ाइलें बनानी होंगी. ये फ़ाइलें खाली भी हो सकती हैं. साथ ही, इन्हें Python टारगेट के `srcs` में जोड़ना होगा.
main

लेबल; डिफ़ॉल्ट वैल्यू None है

यह विकल्प इस्तेमाल करना ज़रूरी नहीं है. यह सोर्स फ़ाइल का नाम है, जो ऐप्लिकेशन का मुख्य एंट्री पॉइंट है. इस फ़ाइल को `srcs` में भी शामिल किया जाना चाहिए. अगर इसे तय नहीं किया जाता है, तो इसकी जगह `.py` जोड़कर `name` का इस्तेमाल किया जाता है. अगर `name` एट्रिब्यूट की वैल्यू, `srcs` एट्रिब्यूट की वैल्यू में मौजूद किसी भी फ़ाइल के नाम से मेल नहीं खाती है, तो `main` एट्रिब्यूट की वैल्यू तय करना ज़रूरी है. यह {obj}`main_module` के साथ म्यूचुअली एक्सक्लूसिव है.
main_module

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

मुख्य प्रोग्राम के तौर पर चलाने के लिए मॉड्यूल का नाम. इस विकल्प को सेट करने पर, `srcs` की ज़रूरत नहीं होती. साथ ही, यह माना जाता है कि मॉड्यूल को किसी डिपेंडेंसी से उपलब्ध कराया गया है. मॉड्यूल को मुख्य प्रोग्राम के तौर पर चलाने के बारे में ज़्यादा जानकारी के लिए, https://docs.python.org/3/using/cmdline.html#cmdoption-m देखें. यह {obj}`main` के साथ इस्तेमाल नहीं किया जा सकता. :::{versionadded} 1.3.0 :::
precompile

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

क्या **इस टारगेट के लिए** py सोर्स फ़ाइलों को पहले से कंपाइल किया जाना चाहिए. वैल्यू: * `inherit`: इससे डाउनस्ट्रीम बाइनरी को यह तय करने की अनुमति मिलती है कि पहले से कंपाइल की गई फ़ाइलों का इस्तेमाल किया जाए या नहीं. * `enabled`: बिल्ड के समय Python के सोर्स फ़ाइलों को कंपाइल करता है. * `disabled`: इस विकल्प को चुनने पर, बिल्ड के समय Python की सोर्स फ़ाइलों को कंपाइल नहीं किया जाता. ::{seealso} * {flag}`--precompile` फ़्लैग, जो कुछ मामलों में इस एट्रिब्यूट को बदल सकता है. साथ ही, यह बिल्ड करते समय सभी टारगेट पर असर डालेगा. * {obj}`pyc_collection` एट्रिब्यूट, जिसका इस्तेमाल हर टारगेट के हिसाब से प्रीकंपाइलिंग को ट्रांज़िटिव तरीके से चालू करने के लिए किया जाता है. * प्रीकंपाइलिंग का इस्तेमाल करने के बारे में गाइड के लिए, [प्रीकंपाइलिंग](precompiling) दस्तावेज़. :::
precompile_invalidation_mode

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "auto" है

प्रीकंपाइल की गई फ़ाइलों की पुष्टि कैसे की जानी चाहिए, ताकि यह पता चल सके कि वे उनसे जुड़ी सोर्स फ़ाइलों के साथ अप-टू-डेट हैं. इस एट्रिब्यूट की ये वैल्यू हो सकती हैं: * `auto`: इस एट्रिब्यूट की वैल्यू, बिल्ड की अन्य सेटिंग के हिसाब से अपने-आप तय हो जाएगी. * `checked_hash`: अगर सोर्स फ़ाइल का हैश, pyc फ़ाइल में रिकॉर्ड किए गए हैश से मेल खाता है, तो pyc फ़ाइल का इस्तेमाल करें. यह सुविधा, ऐसे कोड के साथ काम करते समय सबसे ज़्यादा मददगार होती है जिसमें बदलाव किया जा सकता है. * `unchecked_hash`: हमेशा pyc फ़ाइल का इस्तेमाल करें. pyc फ़ाइल के हैश की तुलना, सोर्स फ़ाइल से न करें. यह तब सबसे ज़्यादा काम आता है, जब कोड में बदलाव नहीं किया जाता. pyc फ़ाइल को अमान्य करने के मोड के बारे में ज़्यादा जानने के लिए, https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode पर जाएं
precompile_optimize_level

पूर्णांक; डिफ़ॉल्ट वैल्यू 0 है

प्रीकंपाइल की गई फ़ाइलों के लिए ऑप्टिमाइज़ेशन लेवल. ऑप्टिमाइज़ेशन लेवल के बारे में ज़्यादा जानने के लिए, `compile()` फ़ंक्शन के `optimize` आर्ग्युमेंट के दस्तावेज़ देखें. इसके लिए, https://docs.python.org/3/library/functions.html#compile पर जाएं ध्यान दें: वैल्यू `-1` का मतलब "मौजूदा इंटरप्रेटर" है. यह इंटरप्रेटर, _pyc जनरेट करते समय इस्तेमाल किया जाएगा_, न कि कोड के रनटाइम में इस्तेमाल किया जाने वाला इंटरप्रेटर.
precompile_source_retention

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

यह तय करता है कि सोर्स फ़ाइल को कंपाइल करने पर, सोर्स फ़ाइल को नतीजे के तौर पर मिले आउटपुट में रखा जाएगा या नहीं. मान्य वैल्यू ये हैं: * `inherit`: {flag}`--precompile_source_retention` फ़्लैग से वैल्यू इनहेरिट करें. * `keep_source`: इसमें ओरिजनल Python सोर्स शामिल होता है. * `omit_source`: ओरिजनल py सोर्स को शामिल न करें.
pyc_collection

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "inherit" है

यह कुकी तय करती है कि डिपेंडेंसी से pyc फ़ाइलों को मैन्युअल तरीके से शामिल किया जाना चाहिए या नहीं. मान्य वैल्यू ये हैं: * `inherit`: {flag}`--precompile` से वैल्यू इनहेरिट करें. * `include_pyc`: डिपेंडेंसी से, अपने-आप जनरेट होने वाली pyc फ़ाइलें जोड़ें. जैसे, उन टारगेट के लिए pyc फ़ाइलें जो {attr}`precompile="inherit"` के बारे में बताती हैं. * `disabled`: अपने-आप जनरेट होने वाली pyc फ़ाइलें न जोड़ें. ध्यान दें कि pyc फ़ाइलें अब भी उन डिपेंडेंसी से आ सकती हैं जो टारगेट लेवल पर प्रीकंपाइलिंग की सुविधा चालू करती हैं.
pyi_deps

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

लाइब्रेरी के लिए ज़रूरी टाइप की परिभाषाएं देने वाली डिपेंडेंसी. ये ऐसी डिपेंडेंसी हैं जो `typing.TYPE_CHECKING` से सुरक्षित इंपोर्ट को पूरा करती हैं. ये सिर्फ़ बिल्ड-टाइम की डिपेंडेंसी हैं और इन्हें रन किए जा सकने वाले प्रोग्राम के हिस्से के तौर पर शामिल नहीं किया जाता है. हालांकि, पैकेजिंग के नियमों में इन्हें शामिल किया जा सकता है. :::versionadded} 1.1.0 :::
pyi_srcs

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

लाइब्रेरी के लिए टाइप डेफ़िनिशन फ़ाइलें. ये आम तौर पर `.pyi` फ़ाइलें होती हैं. हालांकि, टाइप-चेकर के लिए खास फ़ॉर्मैट वाली अन्य फ़ाइल टाइप की अनुमति है. ये फ़ाइलें, सिर्फ़ बिल्ड-टाइम की डिपेंडेंसी होती हैं. इन्हें रन किए जा सकने वाले प्रोग्राम के हिस्से के तौर पर शामिल नहीं किया जाता. हालांकि, पैकेजिंग के नियमों में इन्हें शामिल किया जा सकता है. :::versionadded} 1.1.0 :::
python_version

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

Python का वह वर्शन जिसका इस्तेमाल इस टारगेट को करना चाहिए. वैल्यू, `X.Y` या `X.Y.Z` (या इसके साथ काम करने वाले) फ़ॉर्मैट में होनी चाहिए. अगर यह फ़ील्ड खाली है या इसकी वैल्यू तय नहीं की गई है, तो आने वाले कॉन्फ़िगरेशन के {obj}`--python_version` फ़्लैग की वैल्यू इस्तेमाल की जाती है. पिछले वर्शन के साथ काम करने के लिए, `PY2` और `PY3` वैल्यू स्वीकार की जाती हैं. हालांकि, इन्हें खाली/बिना तय की गई वैल्यू के तौर पर माना जाता है. :::{note} अनुरोध किए गए वर्शन का इस्तेमाल करने के लिए, Python वर्शन से मेल खाने वाला टूलचेन कॉन्फ़िगर किया जाना चाहिए. अगर ऐसा नहीं होता है, तो टूलचेन के कॉन्फ़िगरेशन के आधार पर, इसे अनदेखा किया जा सकता है या कोई गड़बड़ी हो सकती है. ::: :::{versionchanged} 1.1.0 इस एट्रिब्यूट की वैल्यू को `PY2` और `PY3` से बदलकर, Python के किसी भी वर्शन को स्वीकार करने की सुविधा दी गई है. :::
srcs_version

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

यह सुविधा अब काम नहीं करती और इसका इस्तेमाल नहीं किया जाता.
stamp

पूर्णांक; डिफ़ॉल्ट वैल्यू 0 है

बिल्ड की जानकारी को बाइनरी में कोड में बदलना है या नहीं. संभावित वैल्यू: * `stamp = 1`: बिल्ड की जानकारी को हमेशा बाइनरी में स्टैंप करें. भले ही, `--nostamp` बिल्ड में ऐसा न किया गया हो. **इस सेटिंग का इस्तेमाल नहीं करना चाहिए**, क्योंकि इससे बाइनरी और उस पर निर्भर डाउनस्ट्रीम कार्रवाइयों के लिए रिमोट कैशिंग बंद हो जाती है. * `stamp = 0`: बिल्ड की जानकारी को हमेशा कॉन्सटेंट वैल्यू से बदलें. इससे, बिल्ड के नतीजों को बेहतर तरीके से कैश मेमोरी में सेव किया जा सकता है. * `stamp = -1`: बिल्ड की जानकारी को एम्बेड करने की सुविधा, `--[no]stamp` फ़्लैग से कंट्रोल की जाती है. स्टैंप किए गए बाइनरी को तब तक फिर से नहीं बनाया जाता, जब तक उनकी डिपेंडेंसी में बदलाव नहीं होता. चेतावनी: स्टैंपिंग से, बिल्ड की परफ़ॉर्मेंस पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि इससे कैश हिट कम हो जाते हैं. इसलिए, अगर हो सके, तो स्टैंपिंग से बचें.

py_runtime

नियम का सोर्स देखें
py_runtime(name, abi_flags, aspect_hints, bootstrap_template, compatible_with, coverage_tool, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, files, implementation_name, interpreter, interpreter_path, interpreter_version_info, package_metadata, pyc_tag, python_version, restricted_to, site_init_template, stage2_bootstrap_template, stub_shebang, tags, target_compatible_with, testonly, toolchains, visibility, zip_main_template)
यह Python कोड को चलाने के लिए इस्तेमाल किए जाने वाले Python रनटाइम को दिखाता है. `py_runtime` टारगेट, *प्लैटफ़ॉर्म रनटाइम* या *इन-बिल्ट रनटाइम* को दिखा सकता है. प्लैटफ़ॉर्म रनटाइम, सिस्टम में इंस्टॉल किए गए इंटरप्रेटर को किसी जाने-पहचाने पाथ पर ऐक्सेस करता है. वहीं, इन-बिल्ट रनटाइम, इंटरप्रेटर के तौर पर काम करने वाले किसी एक्ज़ीक्यूटेबल टारगेट की ओर इशारा करता है. दोनों मामलों में, "इंटरप्रेटर" का मतलब किसी भी एक्ज़ीक्यूटेबल बाइनरी या रैपर स्क्रिप्ट से है. यह कमांड लाइन पर पास की गई Python स्क्रिप्ट को चला सकती है. साथ ही, यह स्टैंडर्ड CPython इंटरप्रेटर के नियमों का पालन करती है. प्लैटफ़ॉर्म रनटाइम, स्वभाव से नॉन-हर्मेटिक होता है. यह टारगेट प्लैटफ़ॉर्म पर, किसी खास पाथ पर इंटरप्रेटर होने की ज़रूरी शर्त लागू करता है. पहले से मौजूद रनटाइम हर्मेटिक हो सकता है या नहीं भी हो सकता है. यह इस बात पर निर्भर करता है कि वह चेक-इन किए गए इंटरप्रेटर या सिस्टम इंटरप्रेटर को ऐक्सेस करने वाली रैपर स्क्रिप्ट की ओर इशारा करता है या नहीं. उदाहरण ``` load("@rules_python//python:py_runtime.bzl", "py_runtime") py_runtime( name = "python-2.7.12", files = glob(["python-2.7.12/**"]), interpreter = "python-2.7.12/bin/python", ) py_runtime( name = "python-3.6.0", interpreter_path = "/opt/pyenv/versions/3.6.0/bin/python", ) ```

तर्क

विशेषताएं
name

नाम; ज़रूरी है

इस टारगेट के लिए यूनीक नाम.

abi_flags

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

रनटाइम के एबीआई फ़्लैग, यानी कि `sys.abiflags`. अगर इसे सेट नहीं किया गया है, तो इसे फ़्लैग के आधार पर सेट किया जाएगा.
bootstrap_template

लेबल; डिफ़ॉल्ट वैल्यू "@rules_python//python/private:bootstrap_template" है

इस्तेमाल की जाने वाली बूटस्ट्रैप स्क्रिप्ट टेंप्लेट फ़ाइल. इसमें %python_binary%, %workspace_name%, %main%, और %imports% होना चाहिए. एक्सपैंड होने के बाद, यह टेंप्लेट एक्ज़ीक्यूटेबल फ़ाइल बन जाता है. इसका इस्तेमाल प्रोसेस शुरू करने के लिए किया जाता है. इसलिए, यह बूटस्ट्रैपिंग की शुरुआती कार्रवाइयों के लिए ज़िम्मेदार होता है. जैसे, Python इंटरप्रेटर और रनफ़ाइल ढूंढना. साथ ही, Python ऐप्लिकेशन को चलाने के लिए एनवायरमेंट बनाना. फ़िलहाल, इस एट्रिब्यूट का इस्तेमाल करना ज़रूरी नहीं है. हालांकि, जब Python के नियमों को Bazel से हटा दिया जाएगा, तब इसका इस्तेमाल करना ज़रूरी हो जाएगा. बढ़ाए गए सटीक वैरिएबल के नाम, एक अस्थिर एपीआई है और इसमें बदलाव हो सकता है. Python के नियमों को Bazel से बाहर ले जाने पर, एपीआई ज़्यादा स्टेबल हो जाएगा. ज़्यादा वैरिएबल के लिए, @bazel_tools//tools/python:python_bootstrap_template.txt देखें.
coverage_tool

लेबल; डिफ़ॉल्ट वैल्यू None है

यह {rule}`py_binary` और {rule}`py_test` टारगेट से कोड कवरेज की जानकारी इकट्ठा करने के लिए इस्तेमाल किया जाने वाला टारगेट है. अगर टारगेट सेट किया गया है, तो टारगेट से एक फ़ाइल जनरेट होनी चाहिए या वह एक एक्ज़ीक्यूटेबल टारगेट होना चाहिए. सिंगल फ़ाइल का पाथ या अगर टारगेट एक्ज़ीक्यूटेबल है, तो एक्ज़ीक्यूटेबल, Python कवरेज टूल के लिए एंट्री पॉइंट तय करता है. कवरेज की सुविधा चालू होने पर, टारगेट और उसकी रनफ़ाइलें, रनफ़ाइलों में जोड़ दी जाएंगी. टूल का एंट्री पॉइंट, Python इंटरप्रेटर से लोड किया जा सकने वाला होना चाहिए. जैसे, `.py` या `.pyc` फ़ाइल. इसमें [`coverage.py`](https://coverage.readthedocs.io) के कमांड लाइन आर्ग्युमेंट स्वीकार किए जाने चाहिए. इनमें कम से कम `run` और `lcov` सब-कमांड शामिल होनी चाहिए.
files

लेबल की सूची; डिफ़ॉल्ट वैल्यू [] है

इन-बिल्ड रनटाइम के लिए, यह उन फ़ाइलों का सेट होता है जिनमें यह रनटाइम शामिल होता है. ये फ़ाइलें, Python बाइनरी की रनफ़ाइल में जोड़ी जाएंगी. ये बाइनरी, इस रनटाइम का इस्तेमाल करती हैं. किसी प्लैटफ़ॉर्म के रनटाइम के लिए, इस एट्रिब्यूट को सेट नहीं किया जाना चाहिए.
implementation_name

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "cpython" है

Python के वर्शन का नाम (`sys.implementation.name`)
interpreter

लेबल; डिफ़ॉल्ट वैल्यू None है

इन-बिल्ट रनटाइम के लिए, यह इंटरप्रेटर के तौर पर लागू करने का टारगेट होता है. यह इनमें से कोई एक हो सकता है: * एक फ़ाइल, जो इंटरप्रेटर बाइनरी होगी. यह माना जाता है कि इस तरह के इंटरप्रेटर, एक ही फ़ाइल में मौजूद होते हैं या `files` में किसी भी तरह की साथ काम करने वाली फ़ाइलें दी गई होती हैं. * एक्ज़ीक्यूटेबल टारगेट. टारगेट का एक्ज़ीक्यूटेबल, इंटरप्रेटर बाइनरी होगा. अन्य डिफ़ॉल्ट आउटपुट (`target.files`) और सामान्य फ़ाइलें (`runfiles.files`) अपने-आप शामिल हो जाएंगी. ऐसा माना जाएगा कि इन्हें `files` एट्रिब्यूट में शामिल किया गया है. ध्यान दें: ऐसा हो सकता है कि टारगेट की रनफ़ाइलें, टूलचेन/इंटरप्रेटर के उपभोक्ताओं के लिए अब तक ठीक से काम न कर रही हों/प्रॉपगेट न हो रही हों. इसके लिए, bazel-contrib/rules_python/issues/1612 देखें अगर प्लैटफ़ॉर्म रनटाइम (यानी कि `interpreter_path` सेट किया गया है) के लिए, इस एट्रिब्यूट को सेट नहीं किया जाना चाहिए.
interpreter_path

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

किसी प्लैटफ़ॉर्म रनटाइम के लिए, यह टारगेट प्लैटफ़ॉर्म पर Python इंटरप्रेटर का ऐब्सलूट पाथ होता है. इन-बिल्ट रनटाइम के लिए, इस एट्रिब्यूट को सेट नहीं किया जाना चाहिए.
interpreter_version_info

डिक्शनरी: स्ट्रिंग -> स्ट्रिंग; डिफ़ॉल्ट वैल्यू {} है

यह रनटाइम, इंटरप्रेटर के जिस वर्शन को उपलब्ध कराता है उसके बारे में जानकारी. अगर इसे तय नहीं किया जाता है, तो {obj}`--python_version` का इस्तेमाल किया जाता है सपोर्ट की गई कुंजियां, `sys.version_info` के नामों से मेल खाती हैं. इनपुट वैल्यू स्ट्रिंग होती हैं, लेकिन ज़्यादातर को पूर्णांकों में बदल दिया जाता है. इन कुंजियों का इस्तेमाल किया जा सकता है: * major: int, मुख्य वर्शन नंबर * minor: int, माइनर वर्शन नंबर * micro: optional int, माइक्रो वर्शन नंबर * releaselevel: optional str, रिलीज़ लेवल * serial: optional int, रिलीज़ का सीरियल नंबर :::{versionchanged} 0.36.0 {obj}`--python_version` डिफ़ॉल्ट वैल्यू तय करता है. :::
pyc_tag

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "" है

यह स्ट्रिंग ज़रूरी नहीं है.यह pyc फ़ाइल के नाम का टैग वाला हिस्सा होता है. उदाहरण के लिए, `foo.cpython-39.pyc` का `cpython-39` इनफ़िक्स. PEP 3147 देखें. अगर इसे नहीं बताया जाता है, तो इसकी गिनती `implementation_name` और `interpreter_version_info` से की जाएगी. अगर कोई pyc_tag उपलब्ध नहीं है, तो सिर्फ़ सोर्स के बिना pyc जनरेट करने की सुविधा सही तरीके से काम करेगी.
python_version

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "PY3" है

यह रनटाइम, Python के मेजर वर्शन 2 या 3 के लिए है या नहीं. मान्य वैल्यू `"PY2"` और `"PY3"` हैं. डिफ़ॉल्ट वैल्यू को `--incompatible_py3_is_default` फ़्लैग से कंट्रोल किया जाता है. हालांकि, आने वाले समय में इस एट्रिब्यूट को शामिल करना ज़रूरी होगा और इसकी कोई डिफ़ॉल्ट वैल्यू नहीं होगी.
site_init_template

लेबल; डिफ़ॉल्ट वैल्यू "@rules_python//python/private:site_init_template" है

यह टेंप्लेट, स्टार्टअप के समय इंटरप्रेटर के ज़रिए चलाए जाने वाले, बाइनरी के हिसाब से साइट-इनिट हुक के लिए इस्तेमाल किया जाता है. :::{versionadded} 0.41.0 :::
stage2_bootstrap_template

लेबल; डिफ़ॉल्ट वैल्यू "@rules_python//python/private:stage2_bootstrap_template" है

दो चरणों वाले बूटस्ट्रैपिंग की सुविधा चालू होने पर इस्तेमाल किया जाने वाला टेंप्लेट :::{seealso} {obj}`PyRuntimeInfo.stage2_bootstrap_template` और {obj}`--bootstrap_impl` :::
stub_shebang

स्ट्रिंग; डिफ़ॉल्ट वैल्यू "#!/usr/bin/env python3" है

{rule}`py_binary` टारगेट को एक्ज़ीक्यूट करते समय इस्तेमाल की जाने वाली, बूटस्ट्रैपिंग Python स्टब स्क्रिप्ट के पहले जोड़ा गया "Shebang" एक्सप्रेशन. इस बारे में ज़्यादा जानने के लिए, https://github.com/bazelbuild/bazel/issues/8685 पर जाएं. यह सुविधा Windows पर काम नहीं करती.
zip_main_template

लेबल; डिफ़ॉल्ट वैल्यू "@rules_python//python/private:zip_main_template" है

ज़िप फ़ाइल की टॉप-लेवल `__main__.py` फ़ाइल के लिए इस्तेमाल किया जाने वाला टेंप्लेट. जब `python foo.zip` चलाया जाता है, तब यह एंट्री पॉइंट एक्ज़ीक्यूट होता है. :::{seealso} {obj}`PyRuntimeInfo.zip_main_template` फ़ील्ड. :::