ग्लोबल

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
ऑब्जेक्ट, ग्लोबल ऑब्जेक्ट में रजिस्टर किए गए ऑब्जेक्ट, फ़ंक्शन, और मॉड्यूल.

पैसे चुकाकर बने सदस्य

सभी

bool all(elements)

अगर सभी एलिमेंट 'सही' है या कलेक्शन खाली है, तो 'सही' दिखाता है. बूल फ़ंक्शन का इस्तेमाल करके एलिमेंट को बूलियन में बदला जाता है.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

पैरामीटर

पैरामीटर जानकारी
elements ज़रूरी है
स्ट्रिंग या एलिमेंट का कलेक्शन.

विश्लेषण_test_transition

transition analysis_test_transition(settings)

विश्लेषण-टेस्ट नियम' डिपेंडेंसी पर लागू करने के लिए कॉन्फ़िगरेशन ट्रांज़िशन बनाता है. यह ट्रांज़िशन सिर्फ़ analysis_test = True वाले नियमों की विशेषताओं पर लागू हो सकता है. इस तरह के नियमों को सीमित किया जा सकता है (उदाहरण के लिए, डिपेंडेंसी ट्री का साइज़ सीमित होता है). इसलिए, ट्रांज़िशन का इस्तेमाल करके बनाए गए ट्रांज़िशन की तुलना में, इस फ़ंक्शन से बनाए गए ट्रांज़िशन के संभावित दायरे में कमी होती है.

यह फ़ंक्शन मुख्य रूप से विश्लेषण टेस्ट फ़्रेमवर्क मुख्य लाइब्रेरी को आसान बनाने के लिए डिज़ाइन किया गया है. सबसे सही तरीकों के बारे में जानने के लिए, इसके दस्तावेज़ (या इसे लागू करना) देखें.

पैरामीटर

पैरामीटर जानकारी
settings ज़रूरी
कॉन्फ़िगरेशन सेटिंग की जानकारी देने वाला एक शब्दकोश, जिसे इस कॉन्फ़िगरेशन ट्रांज़िशन के ज़रिए सेट किया जाना चाहिए. कुंजियां, बिल्ड सेटिंग के लेबल होती हैं और ट्रांज़िशन के बाद उनकी नई वैल्यू होती हैं. बाकी सभी सेटिंग में कोई बदलाव नहीं किया गया है. इसका इस्तेमाल ऐसी खास कॉन्फ़िगरेशन सेटिंग के बारे में बताने के लिए करें जिसे विश्लेषण की जांच पास करने के लिए सेट करना ज़रूरी है.

कोई भी

bool any(elements)

अगर कम से कम एक एलिमेंट 'सही' है, तो 'सही' दिखाता है. बूल फ़ंक्शन का इस्तेमाल करके एलिमेंट को बूलियन में बदला जाता है.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

पैरामीटर

पैरामीटर जानकारी
elements ज़रूरी है
स्ट्रिंग या एलिमेंट का कलेक्शन.

संग्रहित_ओवरराइड

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

इस नीति से पता चलता है कि यह डिपेंडेंसी, रजिस्ट्री की बजाय किसी खास जगह पर मौजूद संग्रह फ़ाइल (zip, gzip वगैरह) से आनी चाहिए. यह निर्देश सिर्फ़ रूट मॉड्यूल के लिए है. दूसरे शब्दों में, अगर कोई मॉड्यूल किसी भी ओवरराइड को बताता है, तो दूसरे लोग उसे डिपेंडेंसी के तौर पर इस्तेमाल नहीं कर सकते.

पैरामीटर

पैरामीटर जानकारी
module_name ज़रूरी है
इस ओवरराइड को लागू करने के लिए, बेज़ल मॉड्यूल डिपेंडेंसी का नाम.
urls string; or Iterable of strings; ज़रूरी है
संग्रह के यूआरएल; http(s):// या file:// से जुड़े यूआरएल हो सकते हैं.
integrity डिफ़ॉल्ट =#39;'
सबरिसोर्स इंटेग्रिटी फ़ॉर्मैट में संग्रह फ़ाइल का अनुमानित चेकसम.
strip_prefix डिफ़ॉल्ट =#39;'
एक्सट्रैक्ट की गई फ़ाइलों से डायरेक्ट्री प्रीफ़िक्स हटाता है.
patches Iterable of strings; डिफ़ॉल्ट = []
इस मॉड्यूल के लिए लागू करने के लिए, पैच फ़ाइलों पर ले जाने वाले लेबल की सूची. टॉप लेवल प्रोजेक्ट के सोर्स ट्री में, पैच फ़ाइलें मौजूद होनी चाहिए. उन्हें सूची के क्रम में लागू किया जाता है.
patch_cmds Iterable of strings; डिफ़ॉल्ट = []
पैच लागू किए जाने के बाद, Linux/Macos पर Bash निर्देशों का क्रम लागू होगा.
patch_strip डिफ़ॉल्ट = 0
जैसा कि Unix पैच के --स्ट्रिप आर्ग्युमेंट के जैसा है.

आसपेक्ट

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

नया पहलू बनाता है. इस फ़ंक्शन के नतीजे को ग्लोबल वैल्यू में स्टोर करना चाहिए. कृपया ज़्यादा जानकारी के लिए, आस-पास की जानकारी देखें.

पैरामीटर

पैरामीटर जानकारी
implementation ज़रूरी है
एक स्टारलार्क फ़ंक्शन, जो इस पहलू को लागू करता है, जिसमें बस दो पैरामीटर होते हैं: टारगेट (वह लक्ष्य जिस पर आसपेक्ट रेशियो लागू होता है) और टैब (जिस नियम से टारगेट बनाया गया है). टारगेट के एट्रिब्यूट, ctx.rule फ़ील्ड में उपलब्ध हैं. किसी फ़ंक्शन के हर ऐप्लिकेशन के विश्लेषण चरण के दौरान, इस फ़ंक्शन का मूल्यांकन एक लक्ष्य के रूप में किया जाता है.
attr_aspects sequence of strings; डिफ़ॉल्ट = []
एट्रिब्यूट के नामों की सूची. यह आसपेक्ट, किसी टारगेट की विशेषताओं में बताई गई डिपेंडेंसी के साथ लागू होता है. यहां सामान्य वैल्यू में deps और exports शामिल हैं. सूची में किसी टारगेट की सभी डिपेंडेंसी के साथ एक स्ट्रिंग "*" भी हो सकती है.
attrs dict; or None; डिफ़ॉल्ट = कोई नहीं
डिक्शनरी, आसपेक्ट के सभी एट्रिब्यूट के बारे में बताती है. यह एट्रिब्यूट के नाम से किसी एट्रिब्यूट ऑब्जेक्ट, जैसे कि attr.label` या `attr.string` को मैप करता है (attr मॉड्यूल देखें). आसपेक्ट रेशियो (चौड़ाई-ऊंचाई का एट्रिब्यूट) लागू करने के फ़ंक्शन के लिए, ctx पैरामीटर के फ़ील्ड के तौर पर उपलब्ध हैं.

_ से शुरू होने वाले इंप्लिसिट एट्रिब्यूट में डिफ़ॉल्ट वैल्यू होनी चाहिए. साथ ही, उनका टाइप label या label_list होना चाहिए.

अश्लील विशेषताओं में string टाइप का इस्तेमाल होना चाहिए और उनमें values की पाबंदी होनी चाहिए. अश्लील एट्रिब्यूट से, सिर्फ़ उन नियमों का इस्तेमाल करने में आसानी होती है जो पाबंदी के हिसाब से एक जैसे नाम, टाइप, और मान्य वैल्यू रखते हैं.

required_providers डिफ़ॉल्ट = []
इस एट्रिब्यूट का इस्तेमाल करके, सिर्फ़ उन टारगेट को लागू किया जा सकता है जिनके नियम सेवा देने वाली कंपनियों के लिए ज़रूरी हैं. वैल्यू, सूची में, सेवा देने वाली अलग-अलग कंपनियों की होनी चाहिए या फिर दोनों की नहीं. उदाहरण के लिए, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] एक मान्य वैल्यू है, जबकि [FooInfo, BarInfo, [BazInfo, QuxInfo]] मान्य नहीं है.

सेवा देने वाली कंपनियों की किसी नेस्ट नहीं की गई सूची को अपने-आप एक ऐसी सूची में बदल दिया जाएगा जिसमें सेवा देने वाली कंपनियों की एक सूची होगी. इसका मतलब है कि [FooInfo, BarInfo] अपने-आप [[FooInfo, BarInfo]] में बदल जाएगा.

किसी नियम (जैसे कि some_rule) के टारगेट को किसी आसपेक्ट के लिए दिखने लायक बनाने के लिए, some_rule को सेवा देने वाली कंपनियों की कम से कम एक सूची में मौजूद, सेवा देने वाली सभी कंपनियों के विज्ञापन दिखाने होंगे. उदाहरण के लिए, अगर required_providers की चौड़ाई [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] है, तो यह some_rule के टारगेट सिर्फ़ तब ही दिखेंगे, जब some_rule, FooInfo *या* BarInfo *या* दोनों BazInfo *और* QuxInfo देता है.

required_aspect_providers डिफ़ॉल्ट = []
इस एट्रिब्यूट से, दूसरे पहलुओं की जांच करने में मदद मिलती है. वैल्यू, सूची में, सेवा देने वाली अलग-अलग कंपनियों की होनी चाहिए या फिर दोनों की नहीं. उदाहरण के लिए, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] एक मान्य वैल्यू है, जबकि [FooInfo, BarInfo, [BazInfo, QuxInfo]] मान्य नहीं है.

सेवा देने वाली कंपनियों की किसी नेस्ट नहीं की गई सूची को अपने-आप एक ऐसी सूची में बदल दिया जाएगा जिसमें सेवा देने वाली कंपनियों की एक सूची होगी. इसका मतलब है कि [FooInfo, BarInfo] अपने-आप [[FooInfo, BarInfo]] में बदल जाएगा.

इस पहलू को कोई दूसरा पहलू (जैसे, other_aspect) दिखाने के लिए, other_aspect को कम से कम किसी एक सूची से सभी कंपनियों की जानकारी देनी होगी. [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] के उदाहरण में, यह पहलू सिर्फ़ तब other_aspect देख सकता है, जब other_aspect FooInfo *या* BarInfo *या* दोनों BazInfo *और* QuxInfo देता है.

provides डिफ़ॉल्ट = []
सेवा देने वाली उन कंपनियों की सूची जिन्हें लागू करने का फ़ंक्शन रिटर्न करना है.

अगर लागू करने का फ़ंक्शन, रिटर्न वैल्यू में से यहां दी गई किसी भी तरह की सेवा देने वाली कंपनी को हटा देता है, तो यह एक गड़बड़ी होती है. हालांकि, लागू करने की प्रक्रिया में ऐसी दूसरी कंपनियां भी शामिल हो सकती हैं जो यहां नहीं दी गई हैं.

सूची में मौजूद हर एलिमेंट, *Info ऑब्जेक्ट है जो provider() ने लौटाया है. हालांकि, इसमें किसी लेगसी प्रोवाइडर का नाम, उसके स्ट्रिंग के नाम से दिखता है.

requires sequence of Aspects; डिफ़ॉल्ट = []
इस पहलू से पहले, जिन पहलुओं को लागू करना है उनकी सूची.
fragments sequence of strings; डिफ़ॉल्ट = []
कॉन्फ़िगरेशन फ़्रैगमेंट के उन नामों की सूची जिनकी ज़रूरत टारगेट कॉन्फ़िगरेशन में होती है.
host_fragments sequence of strings; डिफ़ॉल्ट = []
कॉन्फ़िगरेशन फ़्रैगमेंट के ऐसे नामों की सूची जिन्हें होस्ट कॉन्फ़िगरेशन में ज़रूरी है.
toolchains sequence; डिफ़ॉल्ट = []
अगर यह सेट है, तो इस नियम के लिए उपलब्ध टूल चेन का सेट. इस सूची में स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट शामिल हो सकते हैं. टूलचेन को मौजूदा प्लैटफ़ॉर्म से जांचा जाएगा और ctx.toolchain के ज़रिए नियम लागू करने की जानकारी दी जाएगी.
incompatible_use_toolchain_transition डिफ़ॉल्ट = गलत
इस्तेमाल पर नहीं है, अब यह इस्तेमाल में नहीं है और इसे हटा दिया जाना चाहिए.
doc डिफ़ॉल्ट =#39;'
उस आसपेक्ट का ब्यौरा जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
apply_to_generating_rules डिफ़ॉल्ट = गलत
अगर सही है, तो आउटपुट फ़ाइल पर लागू किए जाने पर, आसपेक्ट आउटपुट फ़ाइल पर लागू होने वाला नियम ही लागू होगा.

उदाहरण के लिए, मान के हिसाब से एक पहलू `देप` के आधार पर अस्थायी रूप से बढ़ता है और इसे `ऐल्फ़ा` पर लागू किया जाता है. मान लें कि `ऐल्फ़ा` का `[':बीटा_टाइप" बताता है. जहां `बीटा_कोल” का मान डाला गया है, तो इसके बाद इसके &कोल डालने के बाद `ल अपने & को अपने &`को रखने वाले रखने के लिए **

डिफ़ॉल्ट रूप से गलत.

exec_compatible_with sequence of strings; डिफ़ॉल्ट = []
उस एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कंस्ट्रेंट की सूची जो इस पहलू के सभी इंस्टेंस पर लागू होता है.
exec_groups dict; or None; डिफ़ॉल्ट = कोई नहीं
एक्ज़ीक्यूशन ग्रुप के नाम (स्ट्रिंग) को exec_group पर सेट करें. अगर इस नीति को सेट किया गया है, तो एक ही इंस्टेंस के तहत, एक्ज़ीक्यूशन के लिए कई प्लैटफ़ॉर्म पर कार्रवाइयां की जा सकती हैं. ज़्यादा जानकारी के लिए, प्लान के हिसाब से बनाए गए ग्रुप के दस्तावेज़ देखें.

bazel_dep

None bazel_dep(name, version='', repo_name='', dev_dependency=False)

यह डेटा, किसी अन्य Bazel मॉड्यूल के लिए डायरेक्ट डिपेंडेंसी के बारे में बताता है.

पैरामीटर

पैरामीटर जानकारी
name ज़रूरी है
मॉड्यूल का नाम, डायरेक्ट डिपेंडेंसी के तौर पर जोड़ा जाएगा.
version डिफ़ॉल्ट =#39;'
मॉड्यूल का वर्शन, जिसे डायरेक्ट डिपेंडेंसी के तौर पर जोड़ा जाना है.
repo_name डिफ़ॉल्ट =#39;'
इस डिपेंडेंसी को दिखाने वाले बाहरी डेटा का नाम. यह डिफ़ॉल्ट रूप से मॉड्यूल का नाम है.
dev_dependency डिफ़ॉल्ट = गलत
अगर सही है, तो मौजूदा मॉड्यूल रूट मॉड्यूल नहीं है या `--ignore_dev_dependency` चालू होने पर, इस डिपेंडेंसी को अनदेखा किया जाएगा.

बाइंड

None bind(name, actual=None)

चेतावनी: हमारा सुझाव है कि आप bind() का इस्तेमाल न करें. उनकी समस्याओं और विकल्पों के बारे में ज़्यादा जानने के लिए, बाइंड को हटाने के बारे में सोचें.

//external पैकेज को टारगेट देता है.

पैरामीटर

पैरामीटर जानकारी
name ज़रूरी है
अन्य नाम के तौर पर इस्तेमाल करने के लिए, #&39;//external' के तहत लेबल
actual string; or None; डिफ़ॉल्ट = कोई नहीं
असल उपनाम को उपनाम किया गया

बूल

bool bool(x=False)

बूल प्रकार के लिए कंस्ट्रक्टर. अगर ऑब्जेक्ट None, False, एक खाली स्ट्रिंग (""), संख्या 0 या एक खाली कलेक्शन (जैसे, (), []) है, तो यह False दिखाता है. नहीं तो, यह True दिखाता है.

पैरामीटर

पैरामीटर जानकारी
x डिफ़ॉल्ट = गलत
कन्वर्ज़न के लिए वैरिएबल.

कॉन्फ़िगरेशन_फ़ील्ड

LateBoundDefault configuration_field(fragment, name)

लेबल टाइप वाले एट्रिब्यूट के लिए, देरी से तय डिफ़ॉल्ट वैल्यू की जानकारी देता है. वैल्यू को तय करने से पहले, इसे बनाने के लिए कॉन्फ़िगरेशन की ज़रूरत होती है. वैल्यू के तौर पर इसका इस्तेमाल करने वाले किसी भी एट्रिब्यूट को निजी होना चाहिए.

इस्तेमाल के उदाहरण:

नियम की परिभाषा तय करना:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

नियम लागू करने का ऐक्सेस:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

पैरामीटर

पैरामीटर जानकारी
fragment ज़रूरी
ऐसे कॉन्फ़िगरेशन फ़्रैगमेंट का नाम जिसमें देर से आने वाली वैल्यू होती है.
name ज़रूरी
कॉन्फ़िगरेशन फ़्रैगमेंट से मिलने वाली वैल्यू का नाम.

Depset

depset depset(direct=None, order="default", *, transitive=None)

डिसेट बनाता है. direct पैरामीटर, डेप्सेट के डायरेक्ट एलिमेंट की लिस्ट है और transitive पैरामीटर उन डिपेट की सूची है जिनके एलिमेंट, बनाए गए डिसेट के इनडायरेक्ट एलिमेंट बन जाते हैं. order पैरामीटर से पता चलता है कि किसी सूची में डेप्सेट के बदलने पर एलिमेंट किस क्रम में दिखाए जाते हैं. ज़्यादा जानकारी के लिए, डीप की खास जानकारी देखें.

एक्सप्रेशन के type(x) में मिले सभी एलिमेंट (डायरेक्ट और सीधे तौर पर नहीं) एक ही तरह के होने चाहिए.

हैश-आधारित सेट का इस्तेमाल इटरेशन के दौरान डुप्लीकेट को खत्म करने के लिए किया जाता है, इसलिए डिसेट के सभी एलिमेंट हैश किए जा सकते हैं. हालांकि, फ़िलहाल सभी कंस्ट्रक्टर में इस वैरिएंट की जांच हमेशा नहीं की जाती है. लगातार जांचने की सुविधा चालू करने के लिए, --insupported_always_check_depset_एलिमेंट फ़्लैग का इस्तेमाल करें. यह आने वाले वर्शन में डिफ़ॉल्ट रूप से लागू होगा; समस्या 10313 देखें.

इसके अलावा, एलिमेंट में बदलाव नहीं किया जा सकता. हालांकि, आने वाले समय में इस पाबंदी में छूट मिलेगी.

बनाए गए डिसेट का क्रम, उसके transitive लेआउट के क्रम से काम करने वाला होना चाहिए. "default" ऑर्डर किसी दूसरे ऑर्डर के साथ काम करता है. बाकी सभी ऑर्डर सिर्फ़ अपने ऑर्डर से मेल खाते हैं.

पुराने/आगे के काम करने के बारे में जानकारी. फ़िलहाल, यह फ़ंक्शन पोज़िशनल items पैरामीटर स्वीकार करता है. इसे बंद कर दिया गया है और आगे चलकर इसे हटा दिया जाएगा. इसके बाद, direct, depset फ़ंक्शन का पोज़िशनल पैरामीटर बन जाएगा. इसलिए, ये दोनों कॉल बराबर हैं और आने वाले समय में सुरक्षित नहीं हैं:

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

पैरामीटर

पैरामीटर जानकारी
direct sequence; or None; डिफ़ॉल्ट = कोई नहीं
किसी डिफ़ॉल्ट के तौर पर डायरेक्ट एलिमेंट की सूची.
order डिफ़ॉल्ट = "default"
नए डिसेट के लिए ट्रैवर्सल रणनीति. संभावित वैल्यू के लिए यहां देखें.
transitive sequence of depsets; or None; डिफ़ॉल्ट = कोई नहीं
उन डेपट्स की सूची जिनके एलिमेंट, डेप्सेट के सीधे तौर पर नहीं बनने वाले एलिमेंट बन जाएंगे.

शब्दकोश

dict dict(pairs=[], **kwargs)

किसी वैकल्पिक पोज़िशनल आर्ग्युमेंट और कीवर्ड के आर्ग्युमेंट के किसी वैकल्पिक सेट से शब्दकोश बनाता है. जहां एक ही कुंजी कई बार दी गई है, वहां आखिरी वैल्यू का इस्तेमाल किया जाएगा. कीवर्ड आर्ग्युमेंट के ज़रिए दी गई एंट्री, पोज़िशनल आर्ग्युमेंट के ज़रिए दी गई एंट्री के बाद मानी जाती हैं.

पैरामीटर

पैरामीटर जानकारी
pairs डिफ़ॉल्ट = []
कोई निर्देश या बार-बार दोहराने वाला ऐसा एलिमेंट जिसके हर एलिमेंट की लंबाई दो है (कुंजी, वैल्यू).
kwargs ज़रूरी
दूसरी एंट्री की डिक्शनरी.

दीर

list dir(x)

स्ट्रिंग की सूची दिखाता है: एट्रिब्यूट के नाम और पैरामीटर के ऑब्जेक्ट के तरीके की जानकारी देता है.

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
जांचने के लिए ऑब्जेक्ट.

गणना करें

list enumerate(list, start=0)

इंडेक्स (इंटेट) और इनपुट क्रम में मौजूद आइटम के साथ जोड़े (दो एलिमेंट वाले टपल) की सूची दिखाता है.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

पैरामीटर

पैरामीटर जानकारी
list इनपुट के
क्रम की ज़रूरत है.
start डिफ़ॉल्ट = 0
इंडेक्स शुरू करें.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)

एक एक्ज़ीक्यूशन ग्रुप बनाता है. इसका इस्तेमाल नियम लागू करने के दौरान, किसी खास एक्ज़ीक्यूशन प्लैटफ़ॉर्म के लिए कार्रवाइयां बनाने के लिए किया जा सकता है.

पैरामीटर

पैरामीटर जानकारी
toolchains sequence; डिफ़ॉल्ट = []
इस एक्ज़ीक्यूशन ग्रुप के लिए ज़रूरी है. इस सूची में स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट शामिल हो सकते हैं.
exec_compatible_with sequence of strings; डिफ़ॉल्ट = []
एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कंस्ट्रेंट की सूची.
copy_from_rule डिफ़ॉल्ट = गलत
अगर 'सही है' पर सेट किया जाता है, तो इस एक्ज़ीक्यूटिव ग्रुप को उस ग्रुप के टूलटिप और कंस्ट्रेंट मिलते हैं जिससे यह ग्रुप अटैच किया गया है. अगर इसे किसी अन्य स्ट्रिंग पर सेट किया जाता है, तो गड़बड़ी दिखेगी.

विफल

None fail(msg=None, attr=None, *args)

इससे एक्ज़ीक्यूशन में गड़बड़ी होती है.

पैरामीटर

पैरामीटर जानकारी
msg डिफ़ॉल्ट = कुछ नहीं
अब इस्तेमाल में नहीं है: इसके बजाय पोज़िशनल आर्ग्युमेंट का इस्तेमाल करें. यह आर्ग्युमेंट, किसी इंप्लिसिट पोज़िशनल पोज़िशनल आर्ग्युमेंट की तरह काम करता है.
attr string; or None; डिफ़ॉल्ट = कोई नहीं
बहिष्कृत. इससे, स्ट्रिंग में शामिल वैकल्पिक प्रीफ़िक्स, गड़बड़ी के मैसेज में जुड़ जाता है.
args ज़रूरी है
गड़बड़ी के मैसेज में दिखने वाली वैल्यू की सूची, जिसे str के साथ फ़ॉर्मैट किया गया है और स्पेस में शामिल की गई है.

फ़्लोट

float float(x=unbound)

फ़्लोट वैल्यू के तौर पर x दिखाता है.
  • अगर x पहले से ही फ़्लोट है, तो float इसे नहीं बदलता.
  • अगर x एक बूल है, तो float सही के लिए 1.0 और गलत के लिए 0.0 दिखाता है.
  • अगर x पूर्णांक है, तो float सबसे नज़दीकी फ़्लोटिंग-पॉइंट वैल्यू को x पर दिखाता है. वहीं, अगर तीव्रता बहुत बड़ी है, तो गड़बड़ी दिखाता है.
  • अगर x एक स्ट्रिंग है, तो यह एक मान्य फ़्लोटिंग-पॉइंट लिटरल होना चाहिए या NaN, Inf या Infinity के बराबर (छोटे-बड़े अक्षरों को अनदेखा करते हुए) होना चाहिए. इसके पहले, + या - का निशान होना चाहिए.
किसी दूसरी वैल्यू की वजह से गड़बड़ी होती है. बिना किसी तर्क के, float() से 0.0 मिलता है.

पैरामीटर

पैरामीटर जानकारी
x डिफ़ॉल्ट = अनबाउंड
कन्वर्ज़न वैल्यू.

getattr

unknown getattr(x, name, default=unbound)

अगर किसी नाम का स्ट्रैट's फ़ील्ड मौजूद है, तो उसे दिखाता है. अगर ऐसा नहीं होता है, तो यह default दिखाता है (अगर बताया गया हो) या गड़बड़ी दिखाता है. getattr(x, "foobar"), x.foobar के बराबर है.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी
वह स्ट्रक्चर जिसके एट्रिब्यूट को ऐक्सेस किया जाता है.
name ज़रूरी है
स्ट्रक्चर एट्रिब्यूट का नाम.
default डिफ़ॉल्ट = अनबाउंड
अगर दिया गया नाम एट्रिब्यूट नहीं है, तो दिया जाने वाला डिफ़ॉल्ट वैल्यू.

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)

इस नीति से तय होता है कि डिपेंडेंसी, Git repository की एक खास प्रतिबद्धता से ली जानी चाहिए. यह निर्देश सिर्फ़ रूट मॉड्यूल के लिए है. दूसरे शब्दों में, अगर कोई मॉड्यूल किसी भी ओवरराइड को बताता है, तो दूसरे लोग उसे डिपेंडेंसी के तौर पर इस्तेमाल नहीं कर सकते.

पैरामीटर

पैरामीटर जानकारी
module_name ज़रूरी है
इस ओवरराइड को लागू करने के लिए, बेज़ल मॉड्यूल डिपेंडेंसी का नाम.
remote ज़रूरी
रिमोट रिपॉज़िटरी (डेटा स्टोर करने की जगह) का यूआरएल.
commit डिफ़ॉल्ट = ''
वह वादा जिसे चुना जाना चाहिए.
patches Iterable of strings; डिफ़ॉल्ट = []
इस मॉड्यूल के लिए लागू करने के लिए, पैच फ़ाइलों पर ले जाने वाले लेबल की सूची. टॉप लेवल प्रोजेक्ट के सोर्स ट्री में, पैच फ़ाइलें मौजूद होनी चाहिए. उन्हें सूची के क्रम में लागू किया जाता है.
patch_cmds Iterable of strings; डिफ़ॉल्ट = []
पैच लागू किए जाने के बाद, Linux/Macos पर Bash निर्देशों का क्रम लागू होगा.
patch_strip डिफ़ॉल्ट = 0
जैसा कि Unix पैच के --स्ट्रिप आर्ग्युमेंट के जैसा है.

Hasattr

bool hasattr(x, name)

सही है अगर ऑब्जेक्ट x में, दिए गए name के लिए कोई एट्रिब्यूट या तरीका है, नहीं तो 'गलत है'. उदाहरण:
hasattr(ctx.attr, "myattr")

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
जांचने के लिए ऑब्जेक्ट.
name एट्रिब्यूट का नाम
ज़रूरी है.

हैश

int hash(value)

स्ट्रिंग के लिए हैश वैल्यू दिखाएं. इसकी गणना Java और # के String.hashCode() के एल्गोरिदम की मदद से, तय की गई वैल्यू के तौर पर की जाती है. जैसे:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
स्ट्रिंग के अलावा, वैल्यू की हैशिंग की सुविधा फ़िलहाल उपलब्ध नहीं है.

पैरामीटर

पैरामीटर जानकारी
value ज़रूरी है
हैश करने के लिए स्ट्रिंग वैल्यू.

int

int int(x, base=unbound)

int वैल्यू के रूप में x दिखाता है.
  • अगर x पहले से ही एक int है, तो int इसे पहले जैसा नहीं करता.
  • अगर x 'बूल' है, तो int, 'सही' और 'गलत' के लिए 1 दिखाता है.
  • अगर x एक स्ट्रिंग है, तो इसका फ़ॉर्मैट <sign><prefix><digits> होना चाहिए. <sign> या तो "+", "-" या खाली है (जिसे सकारात्मक नहीं समझा जाता). <digits>, 0 से base - 1 तक के अंकों का क्रम होता है, जहां a-z (या इसके बराबर A-Z) अक्षरों का इस्तेमाल 10-35 के अंकों के रूप में किया जाता है. जहां base 2/8/16 है, वहां <prefix> ज़रूरी नहीं होता है. अगर 0B/0o/0x (या इसके बराबर, 0B/0O/0X) है, तो base इन बेस या खास वैल्यू 0 के अलावा कोई दूसरा वैल्यू खाली होनी चाहिए. इस मामले में, जहां base 0 होती है, स्ट्रिंग को एक पूर्णांक लिटरल के रूप में समझा जाता है. इस हिसाब से, 2/8/10/16 में से किसी एक आधार को चुना जाता है. अगर base 0 है, तो किसी भी प्रीफ़िक्स का इस्तेमाल नहीं किया जाता है और एक से ज़्यादा अंक होते हैं. साथ ही, मुख्य अंक 0 नहीं हो सकता. ऐसा ऑक्टल और दशमलव के बीच भ्रम की स्थिति से बचने के लिए किया जाता है. स्ट्रिंग के ज़रिए तय की गई संख्या का विस्तार, int प्रकार की अनुमति दी गई सीमा के अंदर होना चाहिए.
  • अगर x एक फ़्लोट है, तो int फ़्लोट का पूर्णांक मान दिखाता है और उसे शून्य की ओर राउंड करता है. अगर x का मान सीमित नहीं है (NAN या इनफ़िनिटी) है, तो यह गड़बड़ी है.
अगर x कोई दूसरा टाइप है या वैल्यू ऐसी स्ट्रिंग है जो ऊपर दिए गए फ़ॉर्मैट के मुताबिक नहीं है, तो यह फ़ंक्शन काम नहीं करता. Python's int फ़ंक्शन के उलट, यह फ़ंक्शन शून्य आर्ग्युमेंट की अनुमति नहीं देता और स्ट्रिंग आर्ग्युमेंट के लिए बाहरी खाली सफ़ेद जगह की अनुमति नहीं देता.

उदाहरण:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
ऐसी स्ट्रिंग जिसे बदला जाना है.
base डिफ़ॉल्ट = अनबाउंड
किसी स्ट्रिंग की वैल्यू को समझने के लिए इस्तेमाल किया गया बेस; डिफ़ॉल्ट रूप से 10. यह संख्या 2 से 36 के बीच होनी चाहिए (इसमें ये भी शामिल हैं) या 0 होना चाहिए, ताकि आधार का पता लगाया जा सके, जैसे कि x एक पूर्णांक लिटरल हो. अगर वैल्यू कोई स्ट्रिंग नहीं है, तो यह पैरामीटर नहीं दिया जाना चाहिए.

Lens

int len(x)

स्ट्रिंग, क्रम (जैसे कि सूची या ट्यूल), शब्द या अन्य दोहराव वाली लंबाई दिखाता है.

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
वह वैल्यू जिसकी रिपोर्ट करनी है.

सूची

list list(x=[])

दी गई फिर से शुरू की जा सकने वाली वैल्यू वाले एलिमेंट के साथ नई सूची दिखाता है.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

पैरामीटर

पैरामीटर जानकारी
x डिफ़ॉल्ट = []]
बदला जाने वाला ऑब्जेक्ट.

local_path_override

None local_path_override(module_name, path)

इस नीति से तय होता है कि किसी डिपेंडेंसी को स्थानीय डिस्क की किसी खास डायरेक्ट्री से आना चाहिए. यह निर्देश सिर्फ़ रूट मॉड्यूल के लिए है. दूसरे शब्दों में, अगर कोई मॉड्यूल किसी भी ओवरराइड को बताता है, तो दूसरे लोग उसे डिपेंडेंसी के तौर पर इस्तेमाल नहीं कर सकते.

पैरामीटर

पैरामीटर जानकारी
module_name ज़रूरी है
इस ओवरराइड को लागू करने के लिए, बेज़ल मॉड्यूल डिपेंडेंसी का नाम.
path ज़रूरी डायरेक्ट्री
उस डायरेक्ट्री का पाथ जहां यह मॉड्यूल है.

ज़्यादा से ज़्यादा

unknown max(*args)

दिए गए सभी आर्ग्युमेंट में से सबसे बड़ा आर्ग्युमेंट दिखाता है. अगर सिर्फ़ एक आर्ग्युमेंट दिया जाता है, तो यह खाली नहीं होना चाहिए.अगर एलिमेंट तुलना में नहीं हैं (उदाहरण के लिए, स्ट्रिंग के साथ int) या कोई आर्ग्युमेंट नहीं दिया गया है, तो यह एक गड़बड़ी है.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

पैरामीटर

पैरामीटर जानकारी
args ज़रूरी
जांचे जाने वाले एलिमेंट.

कम से कम

unknown min(*args)

दिए गए सभी आर्ग्युमेंट में से सबसे छोटा तर्क दिखाता है. अगर सिर्फ़ एक तर्क दिया जाता है, तो यह खाली नहीं होना चाहिए. अगर एलिमेंट तुलना करने लायक नहीं हैं (उदाहरण के लिए, स्ट्रिंग के साथ int) या कोई आर्ग्युमेंट नहीं दिया गया है, तो यह एक गड़बड़ी है.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

पैरामीटर

पैरामीटर जानकारी
args ज़रूरी
जांचे जाने वाले एलिमेंट.

मॉड्यूल

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

Bazel मॉड्यूल की कुछ प्रॉपर्टी के बारे में बताता है जो मौजूदा Bazel repo के हिसाब से होती है. ये प्रॉपर्टी, मॉड्यूल के ज़रूरी मेटाडेटा होते हैं (जैसे कि नाम और वर्शन) या मौजूदा मॉड्यूल और उसके निर्भरों के व्यवहार पर असर डालती हैं.

इसे ज़्यादा से ज़्यादा एक बार कॉल किया जाना चाहिए. इसे सिर्फ़ तब छोड़ा जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो (जैसे, अगर यह किसी दूसरे मॉड्यूल पर निर्भर नहीं होता).

पैरामीटर

पैरामीटर जानकारी
name डिफ़ॉल्ट = ''
मॉड्यूल का नाम. इन्हें सिर्फ़ तब छोड़ा जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो (जैसे, अगर यह किसी दूसरे मॉड्यूल पर निर्भर नहीं होता). किसी मान्य मॉड्यूल नाम में: 1) सिर्फ़ अंग्रेज़ी के छोटे अक्षर (a-z), अंक (0-9), बिंदु (.), हाइफ़न (-), और अंडरस्कोर (_); 2) अंग्रेज़ी के छोटे अक्षर से शुरू और 3) छोटे अक्षर या अंक से खत्म होने चाहिए.
version डिफ़ॉल्ट = ''
मॉड्यूल का वर्शन. इन्हें सिर्फ़ तब छोड़ा जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो (जैसे, अगर यह किसी दूसरे मॉड्यूल पर निर्भर नहीं होता).
compatibility_level डिफ़ॉल्ट = 0
मॉड्यूल का काम करने का लेवल; हर बार कोई बड़ा बदलाव होने पर इसे बदला जाना चाहिए. यह असल में Sermer के संदर्भ में मॉड्यूल का "major वर्शन" है, जो वर्शन स्ट्रिंग में एम्बेड नहीं होता है, लेकिन एक अलग फ़ील्ड के रूप में मौजूद होता है. अलग-अलग कम्पैटबिलटी लेवल वाले मॉड्यूल, वर्शन रिज़ॉल्यूशन में उसी तरह हिस्सा लेते हैं जैसे वे अलग-अलग नाम वाले मॉड्यूल होते हैं. हालांकि, फ़ाइनल डिपेंडेंसी ग्राफ़ में एक ही नाम वाले कई मॉड्यूल नहीं हो सकते, लेकिन अलग-अलग कम्पैटबिलटी लेवल वाले मॉड्यूल हो सकते हैं. हालांकि, multiple_version_override के लागू होने पर, ज़्यादा जानकारी के लिए यहां देखें.
repo_name डिफ़ॉल्ट =#39;'
इस मॉड्यूल को दिखाने वाले रिपॉज़िटरी का नाम, जैसा कि मॉड्यूल में दिखता है. डिफ़ॉल्ट रूप से, रेपो का नाम मॉड्यूल का नाम होता है. यह उन प्रोजेक्ट के लिए माइग्रेशन की प्रक्रिया को आसान बनाने के लिए बताया जा सकता है जो खुद के लिए रीपो नाम का इस्तेमाल करते हैं, जो इसके मॉड्यूल नाम से अलग है.
bazel_compatibility Iterable of strings; default = []
bazel के वर्शन की सूची, जिससे उपयोगकर्ता यह बता सकते हैं कि Bazel के कौनसे वर्शन इस मॉड्यूल के साथ काम करते हैं. इससे डिपेंडेंसी के रिज़ॉल्यूशन पर असर नहीं पड़ता है. हालांकि, bzlmod इस जानकारी का इस्तेमाल करके, यह जांच करेगा कि आपका Bazel का मौजूदा वर्शन काम करता है या नहीं. इस वैल्यू का फ़ॉर्मैट, कंस्ट्रेंट की कुछ वैल्यू की स्ट्रिंग होती है जिन्हें कॉमा लगाकर अलग किया जाता है. तीन कंस्ट्रेंट काम करते हैं: <=X.X.X: बेज़ल वर्शन X.X.X के बराबर या उससे पुराना होना चाहिए. नए वर्शन में कोई असामान्य बदलाव होने पर इसका इस्तेमाल किया जाता है. >=X.X.X: Bazel का वर्शन X.X.X.X के बराबर या उससे नया होना चाहिए. यह तब इस्तेमाल किया जाता है, जब आप कुछ ऐसी सुविधाओं पर निर्भर करते हैं जो सिर्फ़ X.X.X. -X.X.X के बाद उपलब्ध होती हैं: Bazel वर्शन X.X.X काम नहीं करता. इसका इस्तेमाल तब किया जाता है, जब X.X.X में कोई गड़बड़ी होती है, जो आपको गड़बड़ी देती है, लेकिन बाद के वर्शन में ठीक की जाती है.

मॉड्यूल_एक्सटेंशन

unknown module_extension(implementation, *, tag_classes={}, doc='')

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

पैरामीटर

पैरामीटर जानकारी
implementation ज़रूरी है
वह फ़ंक्शन जो इस मॉड्यूल एक्सटेंशन को लागू करता है. सिर्फ़ एक पैरामीटर, module_ctx लेना ज़रूरी है. फ़ंक्शन के लिए उपलब्ध रीपो का सेट तय करने के लिए, फ़ंक्शन को बिल्ड की शुरुआत में एक बार कॉल किया जाता है.
tag_classes डिफ़ॉल्ट = {}
एक डिक्शनरी है, जिसका इस्तेमाल एक्सटेंशन वाली सभी टैग क्लास के बारे में किया जाता है. यह टैग क्लास के नाम से tag_class ऑब्जेक्ट तक मैप होता है.
doc डिफ़ॉल्ट =##39;'
मॉड्यूल एक्सटेंशन का ब्यौरा. इसे दस्तावेज़ जनरेट करने वाले टूल की मदद से निकाला जा सकता है.

एक से ज़्यादा_वर्शन_ओवरराइड

None multiple_version_override(module_name, versions, registry='')

इस नीति से पता चलता है कि डिपेंडेंसी अब भी रजिस्ट्री से आनी चाहिए. हालांकि, उसके एक से ज़्यादा वर्शन एक साथ मौजूद होने चाहिए. यह निर्देश सिर्फ़ रूट मॉड्यूल के लिए है. दूसरे शब्दों में, अगर कोई मॉड्यूल किसी भी ओवरराइड को बताता है, तो दूसरे लोग उसे डिपेंडेंसी के तौर पर इस्तेमाल नहीं कर सकते.

पैरामीटर

पैरामीटर जानकारी
module_name ज़रूरी है
इस ओवरराइड को लागू करने के लिए, बेज़ल मॉड्यूल डिपेंडेंसी का नाम.
versions Iterable of strings; ज़रूरी है
उन वर्शन के बारे में साफ़ तौर पर बताता है जो एक साथ मौजूद हैं. ये वर्शन पहले से चुने जाने के लिए, डिपेंडेंसी ग्राफ़ में मौजूद होने चाहिए. इस मॉड्यूल पर निर्भर करता है कि किसी एक ही कम्पैटबिलटी लेवल पर सबसे पास के अनुमति वाले वर्शन में से किस वर्शन को अपग्रेड किया जाना चाहिए. वहीं, ऐसी डिपेंडेंसी से गड़बड़ी हो सकती है जो वर्शन के साथ काम करने वाले किसी वर्शन पर स्वीकार किए गए वर्शन से बेहतर हैं.
registry डिफ़ॉल्ट = ''
इस मॉड्यूल के लिए रजिस्ट्री को ओवरराइड करता है; रजिस्ट्री की डिफ़ॉल्ट सूची से इस मॉड्यूल को ढूंढने के बजाय, दी गई रजिस्ट्री का इस्तेमाल किया जाना चाहिए.

प्रिंट करें

None print(sep=" ", *args)

args को डीबग आउटपुट के तौर पर प्रिंट करता है. इसमें, "DEBUG" स्ट्रिंग और इसकी जगह के हिसाब से (फ़ाइल और लाइन नंबर) प्रीफ़िक्स शामिल होंगे. आर्ग्युमेंट के स्ट्रिंग में बदलने के तरीके की जानकारी नहीं दी गई है. साथ ही, यह किसी भी समय बदल सकती है. खास तौर पर, यह str() और repr() की फ़ॉर्मैटिंग से अलग हो सकता है.

उपयोगकर्ताओं के लिए बनाए गए स्पैम की वजह से, प्रोडक्शन कोड में print का इस्तेमाल करने की सलाह नहीं दी जाती है. इस सुविधा को बंद करने के लिए, जब भी हो सके, fail() का इस्तेमाल करके मुश्किल गड़बड़ी को प्राथमिकता दें.

पैरामीटर

पैरामीटर जानकारी
sep डिफ़ॉल्ट = " "
ऑब्जेक्ट के बीच सेपरेटर स्ट्रिंग, डिफ़ॉल्ट स्पेस (" " है).
args ज़रूरी
प्रिंट किए जाने वाले ऑब्जेक्ट.

सामग्री देने वाले का नाम

unknown provider(doc='', *, fields=None, init=None)

सेवा देने वाले के चिह्न के बारे में बताता है. सेवा देने वाली कंपनी को कॉल करके, यह इंस्टैंशिएट किया जा सकता है या टारगेट से उस कंपनी का इंस्टेंस पाने के लिए सीधे कुंजी के तौर पर इस्तेमाल किया जा सकता है. उदाहरण:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

सेवा देने वाली कंपनियों के इस्तेमाल से जुड़ी गाइड के बारे में ज़्यादा जानने के लिए, नियम (सेवा देने वाली कंपनी) देखें.

अगर init नहीं बताया गया है, तो Provider कॉल की जा सकने वाली वैल्यू दिखाता है.

अगर init के बारे में बताया गया हो, तो दो ट्यूलेट देता है: Provider कॉल करने लायक वैल्यू और RAW कंस्ट्रक्टर कॉल करने लायक वैल्यू. नियम बनाने वाली कंपनी (कस्टम सेवा देने वाली कंपनियों के हिसाब से शुरू करने की सुविधा) के नियम और नीचे init पैरामीटर के बारे में जानकारी देखें.

पैरामीटर

पैरामीटर जानकारी
doc डिफ़ॉल्ट = ''
सेवा देने वाली कंपनी का ब्यौरा, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
fields sequence of strings; or dict; or None; डिफ़ॉल्ट = कोई नहीं
अगर बताया गया हो, तो अनुमति वाले फ़ील्ड के सेट पर पाबंदी लगाता है.
संभावित मान ये हैं:
  • फ़ील्ड की सूची:
    provider(fields = ['a', 'b'])

  • शब्दकोश फ़ील्ड नाम -> दस्तावेज़:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
सभी फ़ील्ड ज़रूरी नहीं हैं.
init callable; or None; डिफ़ॉल्ट = कोई नहीं
इंस्टैंशिएशन के दौरान, सेवा देने वाली कंपनी के फ़ील्ड वैल्यू की पहले से प्रोसेस करने और उनकी पुष्टि करने के लिए एक वैकल्पिक कॉलबैक. अगर init बताया गया है, तो provider() दो एलिमेंट का ट्यूलल दिखाता है: प्रोवाइडर का सामान्य सिंबल और एक रॉ कंस्ट्रक्टर.

सटीक जानकारी के बाद, आसान चर्चा और इस्तेमाल के उदाहरणों के लिए, नियम (सेवा देने वालों के हिसाब से शुरू करना) देखें.

provider() को कॉल करके P को, कंपनी का लोगो बनाने दें. सैद्धांतिक तौर पर, P का इंस्टेंस, डिफ़ॉल्ट कंस्ट्रक्टर फ़ंक्शन c(*args, **kwargs) को कॉल करके जनरेट किया जाता है, जो ये काम करता है:

  • अगर args खाली नहीं है, तो कोई गड़बड़ी होती है.
  • अगर provider() को कॉल करते समय fields पैरामीटर दिया गया था और kwargs में ऐसी कोई कुंजी है जो fields में मौजूद नहीं है, तो गड़बड़ी होती है.
  • अगर ऐसा नहीं है, तो c एक नया इंस्टेंस दिखाता है, जिसमें k: v नाम की हर kwargs फ़ील्ड में k नाम की फ़ील्ड में v शामिल होता है.
अगर init कॉलबैक दिया गया नहीं है, तो ऐसे मामलों में P चिह्न, डिफ़ॉल्ट कंस्ट्रक्टर फ़ंक्शन c पर कॉल करता है. इसका मतलब है कि P(*args, **kwargs), c(*args, **kwargs) दिखाता है. उदाहरण के लिए,
MyInfo = provider()
m = MyInfo(foo = 1)
सादगी से काम करेगा, ताकि m m.foo == 1 के साथ एक MyInfo इंस्टेंस हो.

हालांकि, init के बारे में बताने वाले मामले में, इसके बजाय P(*args, **kwargs) कॉल किया जाएगा:

  1. कॉलबैक को init(*args, **kwargs) के तौर पर शुरू किया जाता है. यह वही पोज़िशनल और कीवर्ड ऑर्ग्युमेंट होता है जो P में पास किए गए थे.
  2. init के रिटर्न की वैल्यू को डिक्शनरी, d होने की उम्मीद है. इसकी कुंजियां, फ़ील्ड के नाम वाली स्ट्रिंग हैं. अगर ऐसा नहीं होता है, तो कोई गड़बड़ी होती है.
  3. c(**d) की तरह, P के नए इंस्टेंस को डिफ़ॉल्ट रूप से, d और #39; की एंट्री के साथ कॉल करके, जनरेट किया जाता है.

ध्यान दें: ऊपर बताया गया तरीका यह बताता है कि अगर *args या **kwargs, init's के हस्ताक्षर के मूल्यांकन या init' के शरीर के मूल्यांकन से मेल नहीं खाता है (शायद जान-बूझकर fail() पर कॉल करके) मेल नहीं खाता है या init की रिटर्न वैल्यू सही स्कीमा के साथ डिक्शनरी न हो.

इस तरह, init कॉलबैक, पहले से प्रोसेस करने और पुष्टि करने के लिए, पोज़िशनल आर्ग्युमेंट और आर्बिट्ररी लॉजिक की अनुमति देकर, सामान्य प्रोवाइडर को सामान्य बनाता है. यह अनुमति दिए गए fields की सूची को धोखा देने में मदद नहीं करती है.

जब init के बारे में बताया जाता है, तो provider() की रिटर्न वैल्यू एक टपल (P, r) बन जाती है, जहां r रॉ कंस्ट्रक्टर है. असल में, r का व्यवहार ऊपर बताए गए डिफ़ॉल्ट कंस्ट्रक्टर फ़ंक्शन c के जैसा ही है. आम तौर पर, r किसी ऐसे वैरिएबल से जुड़ा होता है जिसके नाम के पहले अंडरस्कोर होता है, ताकि सिर्फ़ मौजूदा .bzl फ़ाइल के पास इसका ऐक्सेस हो:

MyInfo, _new_myinfo = provider(init = ...)

सीमा

sequence range(start_or_stop, stop_or_none=None, step=1)

step वृद्धि का उपयोग करके एक सूची बनाता है, जहां आइटम start से stop तक जाते हैं. अगर एक आर्ग्युमेंट दिया जाता है, तो आइटम 0 से उस एलिमेंट तक होंगे.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

पैरामीटर

पैरामीटर जानकारी
start_or_stop ज़रूरी होने पर
स्टॉप दिए जाने पर, स्टार्ट एलिमेंट की वैल्यू. अगर ऐसा नहीं है, तो स्टॉप की वैल्यू 0 होनी चाहिए
stop_or_none int; or None; डिफ़ॉल्ट = कोई नहीं
पहले आइटम के वैकल्पिक इंडेक्स को नतीजे वाली सूची में शामिल नहीं किया जाएगा; stop के पूरा होने से पहले ही सूची का जनरेट होना बंद हो जाएगा.
step डिफ़ॉल्ट = 1
बढ़ोतरी (डिफ़ॉल्ट 1 है). यह नेगेटिव हो सकता है.

रजिस्टर_execution_platforms()

None register_execution_platforms(*platform_labels)

पहले से तय प्लैटफ़ॉर्म को रजिस्टर करें, ताकि बैज़ेल इसका इस्तेमाल टूलचेन रिज़ॉल्यूशन के दौरान, एक्ज़ीक्यूशन प्लैटफ़ॉर्म के तौर पर कर सके.

पैरामीटर

पैरामीटर जानकारी
platform_labels sequence of strings; ज़रूरी है
रजिस्टर करने के लिए प्लैटफ़ॉर्म के लेबल.

रजिस्टर_execution_platforms()

None register_execution_platforms(*platform_labels)

इस मॉड्यूल के चुने जाने पर, पहले से तय किए गए एक्ज़ीक्यूशन प्लैटफ़ॉर्म के बारे में बताता है. सटीक लक्ष्य पैटर्न होना चाहिए (यानी कि @ या // से शुरू). ज़्यादा जानकारी के लिए टूलचेन रिज़ॉल्यूशन देखें.

पैरामीटर

पैरामीटर जानकारी
platform_labels sequence of strings; ज़रूरी है
रजिस्टर करने के लिए प्लैटफ़ॉर्म के लेबल.

रजिस्टर_टूलचेन()

None register_toolchains(*toolchain_labels)

पहले से तय किए गए टूलचेन को रजिस्टर करें, ताकि Bazel, टूलचेन रिज़ॉल्यूशन के दौरान इसका इस्तेमाल कर सके. तय करने और टूलचेन रजिस्टर करने के उदाहरण देखें.

पैरामीटर

पैरामीटर जानकारी
toolchain_labels sequence of strings; ज़रूरी है
रजिस्टर करने के लिए, टूलचेन के लेबल.

रजिस्टर_टूलचेन()

None register_toolchains(*toolchain_labels)

इस मॉड्यूल के चुने जाने पर, पहले से तय टूलचेन के बारे में बताता है. सटीक लक्ष्य पैटर्न होना चाहिए (यानी कि @ या // से शुरू). ज़्यादा जानकारी के लिए टूलचेन रिज़ॉल्यूशन देखें.

पैरामीटर

पैरामीटर जानकारी
toolchain_labels sequence of strings; ज़रूरी है
रजिस्टर करने के लिए, टूलचेन के लेबल.

रिपॉज़िटरी_नियम(लागू करना, attr, लोकल, एनवायरमेंट, कॉन्फ़िगर, फिर से बदला जा सकने वाला, दस्तावेज़)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

डेटा स्टोर करने की नई जगह का नियम बनाता है. इसे ग्लोबल वैल्यू में सेव करें, ताकि इसे WORKSPACE फ़ाइल से लोड किया जा सके और कॉल किया जा सके.

पैरामीटर

पैरामीटर जानकारी
implementation इस नियम को लागू करने वाला
फ़ंक्शन. इसमें एक पैरामीटर, repository_ctx होना चाहिए. लोड करने के दौरान फ़ंक्शन को कॉल किया जाता है. यह नियम के हर इंस्टेंस के लिए होता है.
attrs dict; or None; डिफ़ॉल्ट = कोई नहीं
शब्दकोश, नियम की सभी विशेषताओं के बारे में बताता है. यह एट्रिब्यूट के नाम से किसी एट्रिब्यूट ऑब्जेक्ट तक मैप होता है (attr मॉड्यूल देखें). _ से शुरू होने वाले एट्रिब्यूट निजी होते हैं. साथ ही, इनका इस्तेमाल फ़ाइल पर लेबल के साथ इंप्लिसिट डिपेंडेंसी जोड़ने के लिए किया जा सकता है. रिपॉज़िटरी नियम, जनरेट किए गए आर्टफ़ैक्ट पर निर्भर नहीं हो सकता. name एट्रिब्यूट साफ़ तौर पर जोड़ा गया है और इसकी जानकारी नहीं दी जानी चाहिए.
local डिफ़ॉल्ट = गलत
बताएं कि यह नियम स्थानीय सिस्टम से सब कुछ हासिल करता है और हर फ़ेच पर फिर से आकलन किया जाना चाहिए.
environ sequence of strings; डिफ़ॉल्ट = []
एनवायरमेंट वैरिएबल की सूची उपलब्ध कराता है, जिस पर रिपॉज़िटरी का यह नियम निर्भर करता है. अगर उस सूची का एनवायरमेंट वैरिएबल बदल जाता है, तो रिपॉज़िटरी को फिर से फ़ेच किया जाएगा.
configure डिफ़ॉल्ट = गलत
बताएं कि रिपॉज़िटरी, कॉन्फ़िगरेशन के मकसद से सिस्टम की जांच करता है
remotable डिफ़ॉल्ट = गलत
प्रयोग के तौर पर. इस पैरामीटर पर प्रयोग किया जा रहा है और यह किसी भी समय बदल सकता है. कृपया इस पर निर्भर न रहें. ---experimental_repo_remote_exec
को रिमोट तरीके से काम करने के साथ सेट करके, इसे प्रयोग के हिसाब से चालू किया जा सकता है
doc डिफ़ॉल्ट = ''
डेटा स्टोर करने के नियम का ब्यौरा जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.

रिपॉज़िटरी_नियम(लागू करना, attr, लोकल, एनवायरमेंट, कॉन्फ़िगर, फिर से बदला जा सकने वाला, दस्तावेज़)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

डेटा स्टोर करने की नई जगह का नियम बनाता है. इसे ग्लोबल वैल्यू में सेव करें, ताकि इसे WORKSPACE फ़ाइल से लोड किया जा सके और कॉल किया जा सके.

पैरामीटर

पैरामीटर जानकारी
implementation इस नियम को लागू करने वाला
फ़ंक्शन. इसमें एक पैरामीटर, repository_ctx होना चाहिए. लोड करने के दौरान फ़ंक्शन को कॉल किया जाता है. यह नियम के हर इंस्टेंस के लिए होता है.
attrs dict; or None; डिफ़ॉल्ट = कोई नहीं
शब्दकोश, नियम की सभी विशेषताओं के बारे में बताता है. यह एट्रिब्यूट के नाम से किसी एट्रिब्यूट ऑब्जेक्ट तक मैप होता है (attr मॉड्यूल देखें). _ से शुरू होने वाले एट्रिब्यूट निजी होते हैं. साथ ही, इनका इस्तेमाल फ़ाइल पर लेबल के साथ इंप्लिसिट डिपेंडेंसी जोड़ने के लिए किया जा सकता है. रिपॉज़िटरी नियम, जनरेट किए गए आर्टफ़ैक्ट पर निर्भर नहीं हो सकता. name एट्रिब्यूट साफ़ तौर पर जोड़ा गया है और इसकी जानकारी नहीं दी जानी चाहिए.
local डिफ़ॉल्ट = गलत
बताएं कि यह नियम स्थानीय सिस्टम से सब कुछ हासिल करता है और हर फ़ेच पर फिर से आकलन किया जाना चाहिए.
environ sequence of strings; डिफ़ॉल्ट = []
एनवायरमेंट वैरिएबल की सूची उपलब्ध कराता है, जिस पर रिपॉज़िटरी का यह नियम निर्भर करता है. अगर उस सूची का एनवायरमेंट वैरिएबल बदल जाता है, तो रिपॉज़िटरी को फिर से फ़ेच किया जाएगा.
configure डिफ़ॉल्ट = गलत
बताएं कि रिपॉज़िटरी, कॉन्फ़िगरेशन के मकसद से सिस्टम की जांच करता है
remotable डिफ़ॉल्ट = गलत
प्रयोग के तौर पर. इस पैरामीटर पर प्रयोग किया जा रहा है और यह किसी भी समय बदल सकता है. कृपया इस पर निर्भर न रहें. ---experimental_repo_remote_exec
को रिमोट तरीके से काम करने के साथ सेट करके, इसे प्रयोग के हिसाब से चालू किया जा सकता है
doc डिफ़ॉल्ट = ''
डेटा स्टोर करने के नियम का ब्यौरा जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.

जवाब

string repr(x)

किसी भी ऑब्जेक्ट को स्ट्रिंग के रूप में दिखाता है. यह डीबग करने के लिए कारगर है.
repr("ab") == '"ab"'

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
बदला जाने वाला ऑब्जेक्ट.

वापस

list reversed(sequence)

एक नई, फ़्रीज़ की गई सूची देता है, जिसमें मूल क्रम में लगाने लायक मूल क्रम के एलिमेंट शामिल होते हैं.
reversed([3, 5, 4]) == [4, 5, 3]

पैरामीटर

पैरामीटर जानकारी
sequence ज़रूरी है
बार-बार दोहराए जाने वाले क्रम (उदाहरण के लिए, सूची) को उलटा जाना ज़रूरी है.

नियम

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

एक नया नियम बनाता है, जिसे टारगेट बनाने के लिए एक BUILD फ़ाइल या मैक्रो से कॉल किया जा सकता है.

.bzl फ़ाइल में ग्लोबल वैरिएबल के लिए नियम असाइन किए जाने चाहिए; ग्लोबल वैरिएबल का नाम नियम's का नाम है.

जांच के नियमों के नाम में खत्म होने वाला _test होना ज़रूरी है, जबकि बाकी सभी नियमों में यह सफ़िक्स नहीं होना चाहिए. (यह पाबंदी सिर्फ़ नियमों पर लागू होती है, अपने टारगेट पर लागू नहीं होती.)

पैरामीटर

पैरामीटर जानकारी
implementation ज़रूरी है
इस नियम को लागू करने वाले Starlark फ़ंक्शन में सिर्फ़ एक पैरामीटर होना चाहिए: ctx. फ़ंक्शन को, विश्लेषण के फ़ेज़ के दौरान नियम के हर इंस्टेंस के लिए कॉल किया जाता है. यह उपयोगकर्ता के दिए गए एट्रिब्यूट को ऐक्सेस कर सकता है. साथ ही, यह एलान किए गए सभी आउटपुट को जनरेट करने के लिए, कार्रवाइयां बनानी चाहिए.
test डिफ़ॉल्ट = गलत
क्या यह नियम एक टेस्ट नियम है, यानी कि क्या यह blaze test निर्देश का विषय हो सकता है. जांच के सभी नियमों को अपने-आप एक्ज़ीक्यूटेबल माना जाता है. जांच के नियम के लिए, executable = True को साफ़ तौर पर सेट करना ज़रूरी नहीं है. ज़्यादा जानकारी के लिए, नियम पेज देखें.
attrs dict; or None; डिफ़ॉल्ट = कोई नहीं
शब्दकोश, नियम की सभी विशेषताओं के बारे में बताता है. यह एट्रिब्यूट के नाम से किसी एट्रिब्यूट ऑब्जेक्ट तक मैप होता है (attr मॉड्यूल देखें). _ से शुरू होने वाले एट्रिब्यूट निजी होते हैं. इनका इस्तेमाल, लेबल पर इंप्लिसिट डिपेंडेंसी जोड़ने के लिए किया जा सकता है. name एट्रिब्यूट साफ़ तौर पर जोड़ा गया है और इसकी जानकारी नहीं दी जानी चाहिए. visibility, deprecation, tags, testonly, और features एट्रिब्यूट को साफ़ तौर पर जोड़ा जाता है और इन्हें बदला नहीं जा सकता. ज़्यादातर नियमों के लिए सिर्फ़ कुछ एट्रिब्यूट की ज़रूरत होती है. मेमोरी के इस्तेमाल को सीमित करने के लिए, नियम फ़ंक्शन attr के साइज़ पर कैप लागू करता है.
outputs dict; or None; or function; डिफ़ॉल्ट = कोई नहीं
काम नहीं करता. यह पैरामीटर अब काम नहीं करता. इसे जल्द ही हटा दिया जाएगा. कृपया इस पर निर्भर न रहें. यह ---incompatible_no_rule_outputs_param के साथ बंद है. इस कोड का इस्तेमाल करके इस बात की पुष्टि करें कि आपका कोड जल्द ही हटाया जा सकता है.
यह पैरामीटर हटा दिया गया है. इसके बजाय, OutputGroupInfo या attr.output का इस्तेमाल करने के लिए, नियम माइग्रेट करें.

पहले से तय किए गए आउटपुट के बारे में जानकारी देने वाला स्कीमा. output और output_list एट्रिब्यूट के उलट, उपयोगकर्ता इन फ़ाइलों के लिए लेबल नहीं बताता. पहले से तय आउटपुट के बारे में ज़्यादा जानने के लिए, नियम पेज देखें.

इस आर्ग्युमेंट की वैल्यू, कोई डिक्शनरी या डिक्शनरी बनाने वाला कॉलबैक फ़ंक्शन है. कॉलबैक, कंप्यूट किए गए डिपेंडेंसी एट्रिब्यूट की तरह ही काम करता है: फ़ंक्शन' के पैरामीटर के नाम, नियम' के एट्रिब्यूट से मेल खाते हैं. इसलिए, outputs = _my_func को def _my_func(srcs, deps): ... डेफ़िनिशन के साथ पास करने पर, फ़ंक्शन के पास srcs और deps एट्रिब्यूट का ऐक्सेस होता है. चाहे डिक्शनरी सीधे बताई गई हो या फ़ंक्शन के ज़रिए दी गई हो, उसे इस तरह समझा जाता है.

डिक्शनरी की हर एंट्री पहले से बताया गया आउटपुट बनाती है, जहां कुंजी एक आइडेंटिफ़ायर होती है. वैल्यू एक स्ट्रिंग टेंप्लेट होती है जो आउटपुट और # लेबल को तय करती है. नियम' के लागू करने के फ़ंक्शन में, आउटपुट फ़ील्ड को ऐक्सेस करने के लिए आइडेंटिफ़ायर फ़ील्ड का नाम बन जाता है's File में ctx.outputs. आउटपुट's लेबल का नियम पैकेज के समान होता है और पैकेज बनाने के बाद वाला हिस्सा "%{ATTR}" एट्रिब्यूट को ATTR एट्रिब्यूट की वैल्यू से बनाई गई स्ट्रिंग के साथ बदलता है:

  • स्ट्रिंग के टाइप वाले एट्रिब्यूट को, जहां चाहें, लिखा जा सकता है.
  • लेबल टाइप करने वाले एट्रिब्यूट, पैकेज के बाद लेबल का हिस्सा बन जाते हैं और फ़ाइल एक्सटेंशन को छोटा कर देते हैं. उदाहरण के लिए, "//pkg:a/b.c" लेबल, "a/b" हो जाता है.
  • आउटपुट टाइप के एट्रिब्यूट, पैकेज के बाद लेबल का हिस्सा बन जाते हैं. इनमें फ़ाइल एक्सटेंशन (ऊपर दिए गए उदाहरण के लिए, "a/b.c") भी शामिल है.
  • प्लेसहोल्डर में इस्तेमाल किए गए सभी टाइप की गई विशेषताओं (उदाहरण के लिए, attr.label_list) के लिए ज़रूरी है कि ठीक एक एलिमेंट हो. उनका कन्वर्ज़न, उनके बिना वर्शन वाले वर्शन (attr.label) जैसा ही है.
  • हो सकता है कि दूसरे एट्रिब्यूट के टाइप, प्लेसहोल्डर में न दिखें.
  • खास गैर-विशेषता %{dirname} प्लेसहोल्डर और %{basename} नियम, नियम के उन हिस्सों तक पहुंच जाते हैं जिनमें पैकेज शामिल नहीं होता. उदाहरण के लिए, "//pkg:a/b.c" में, पकवान का नाम a है और बेस का नाम b.c है.

व्यावहारिक तौर पर, बदलाव करने के लिए सबसे आम प्लेसहोल्डर "%{name}" है. उदाहरण के लिए, आउटपुट के तौर पर टारगेट किए गए "foo" के लिए, आउटपुट निर्देश {"bin": "%{name}.exe"}, foo.exe नाम का वह आउटपुट बताता है जिसे लागू करने के फ़ंक्शन में ctx.outputs.bin के तौर पर ऐक्सेस किया जा सकता है.

executable डिफ़ॉल्ट = गलत
अगर इस नियम को एक्ज़ीक्यूटेबल माना जाता है, तो क्या उसे blaze run पर लागू किया जा सकता है. ज़्यादा जानकारी के लिए, नियम पेज देखें.
output_to_genfiles डिफ़ॉल्ट = गलत
अगर सही है, तो फ़ाइलें बिन डायरेक्ट्री के बजाय genfiles डायरेक्ट्री में जनरेट होंगी. जब तक आपको मौजूदा नियमों के साथ काम करने की ज़रूरत न हो (उदाहरण के लिए, C++ के लिए हेडर फ़ाइलें जनरेट करते समय), तब तक इस फ़्लैग को सेट न करें.
fragments sequence of strings; डिफ़ॉल्ट = []
कॉन्फ़िगरेशन फ़्रैगमेंट के ऐसे नामों की सूची जिनके लिए नियम, टारगेट कॉन्फ़िगरेशन में ज़रूरी है.
host_fragments sequence of strings; डिफ़ॉल्ट = []
कॉन्फ़िगरेशन फ़्रैगमेंट के ऐसे नामों की सूची जिनके लिए नियम, होस्ट कॉन्फ़िगरेशन में ज़रूरी है.
_skylark_testable डिफ़ॉल्ट = गलत
(प्रयोग के तौर पर)

सही होने पर, यह नियम उन नियमों के हिसाब से जांच के लिए अपनी कार्रवाइयों को दिखाएगा जो इस पर निर्भर हैं. इसके लिए, कार्रवाइयां की सेवा देने वाली कंपनी का इस्तेमाल किया जाता है. सेवा देने वाली कंपनी, नियम बनाने के लिए, ctx.created_actions() कॉल करके भी उपलब्ध है.

इसका इस्तेमाल सिर्फ़ Starlark के नियमों के विश्लेषण करने के समय की जांच करने के लिए किया जाना चाहिए. आने वाले समय में, इस फ़्लैग को हटाया जा सकता है.
toolchains sequence; डिफ़ॉल्ट = []
अगर यह सेट है, तो इस नियम के लिए उपलब्ध टूल चेन का सेट. इस सूची में स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट शामिल हो सकते हैं. टूलचेन को मौजूदा प्लैटफ़ॉर्म से जांचा जाएगा और ctx.toolchain के ज़रिए नियम लागू करने की जानकारी दी जाएगी.
incompatible_use_toolchain_transition डिफ़ॉल्ट = गलत
इस्तेमाल पर नहीं है, अब यह इस्तेमाल में नहीं है और इसे हटा दिया जाना चाहिए.
doc डिफ़ॉल्ट =#&39;'
नियम का ब्यौरा, जिसे दस्तावेज़ जनरेट करने वाले टूल की मदद से निकाला जा सकता है.
provides डिफ़ॉल्ट = []
सेवा देने वाली उन कंपनियों की सूची जिन्हें लागू करने का फ़ंक्शन रिटर्न करना है.

अगर लागू करने का फ़ंक्शन, रिटर्न वैल्यू में से यहां दी गई किसी भी तरह की सेवा देने वाली कंपनी को हटा देता है, तो यह एक गड़बड़ी होती है. हालांकि, लागू करने की प्रक्रिया में ऐसी दूसरी कंपनियां भी शामिल हो सकती हैं जो यहां नहीं दी गई हैं.

सूची में मौजूद हर एलिमेंट, *Info ऑब्जेक्ट है जो provider() ने लौटाया है. हालांकि, इसमें किसी लेगसी प्रोवाइडर का नाम, उसके स्ट्रिंग के नाम से दिखता है.

exec_compatible_with sequence of strings; डिफ़ॉल्ट = []
एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कंस्ट्रेंट की सूची जो इस नियम टाइप के सभी टारगेट पर लागू होती है.
analysis_test डिफ़ॉल्ट = गलत
अगर सही है, तो इस नियम को विश्लेषण टेस्ट माना जाता है.

ध्यान दें: विश्लेषण जांच के नियमों को मुख्य रूप से Core Starlark लाइब्रेरी में दिए गए इंफ़्रास्ट्रक्चर का इस्तेमाल करके तय किया जाता है. सलाह के लिए जांच देखें.

अगर किसी नियम को विश्लेषण के टेस्ट नियम के तौर पर तय किया जाता है, तो वह अपने एट्रिब्यूट पर analysis_test_transition का इस्तेमाल करके तय किए गए कॉन्फ़िगरेशन ट्रांज़िशन का इस्तेमाल करने की अनुमति देता है, लेकिन कुछ पाबंदियों के लिए ऑप्ट इन करता है:

  • इस नियम के लिए टारगेट, ऐसी ट्रांज़िशनल डिपेंडेंसी तक सीमित हैं जिन पर ये काम कर सकते हैं.
  • नियम को टेस्ट रूल माना जाता है (जैसे test=True सेट किया गया था). यह test के मान की जगह ले लेता है
  • हो सकता है कि नियम लागू करने वाला फ़ंक्शन, कार्रवाइयों को रजिस्टर न करे. इसके बजाय, इसे AalysisTestResultInfo पर जाकर, पास/फ़ेल का नतीजा रजिस्टर करना होगा.
build_setting BuildSetting; or None; डिफ़ॉल्ट = कोई नहीं
अगर सेट है, तो बताता है कि यह नियम किस तरह का build setting है. config मॉड्यूल देखें. अगर यह सेट है, तो इस नियम में इस्तेमाल की गई वैल्यू से जुड़े टाइप के साथ, "build_setting_default" नाम का एक ज़रूरी एट्रिब्यूट अपने-आप जुड़ जाता है.
cfg डिफ़ॉल्ट = कुछ नहीं
अगर सेट हो, तो कॉन्फ़िगरेशन के ट्रांज़िशन के बारे में बताने वाला नियम, विश्लेषण से पहले अपने खुद के कॉन्फ़िगरेशन पर लागू होगा.
exec_groups dict; or None; डिफ़ॉल्ट = कोई नहीं
एक्ज़ीक्यूशन ग्रुप के नाम (स्ट्रिंग) को exec_group पर सेट करें. अगर यह सेट है, तो नियमों को एक ही टारगेट के अंदर एक से ज़्यादा एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाइयां करने की अनुमति मिलती है. ज़्यादा जानकारी के लिए, प्लान के हिसाब से बनाए गए ग्रुप के दस्तावेज़ देखें.
compile_one_filetype sequence of strings; or None; डिफ़ॉल्ट = कोई नहीं
--compile_one_dependency इस्तेमाल करती है: अगर कई नियम बताई गई फ़ाइल का इस्तेमाल करते हैं, तो क्या हमें इस नियम को दूसरों पर लागू करना चाहिए.
name string; or None; डिफ़ॉल्ट = कोई नहीं
काम नहीं करता. यह पैरामीटर अब काम नहीं करता. इसे जल्द ही हटा दिया जाएगा. कृपया इस पर निर्भर न रहें. यह --+incompatible_remove_rule_name_parameter के साथ बंद है. इस कोड का इस्तेमाल करके इस बात की पुष्टि करें कि आपका कोड जल्द ही हटाया जा सकता है.
अब इस्तेमाल में नहीं है: इस्तेमाल न करें.

इस नियम का नाम, जिसे बैज़ल ने समझ लिया था और लॉग करने, native.existing_rule(...)[kind], और bazel query जैसे संदर्भों में रिपोर्ट किया था. आम तौर पर, यह Starlark आइडेंटिफ़ायर जैसा होता है जो इस नियम से जुड़ा होता है. उदाहरण के लिए, foo_library नाम के नियम को आम तौर पर foo_library = rule(...) के तौर पर बताया जाएगा. साथ ही, BUILD फ़ाइल में foo_library(...) के तौर पर इंस्टैंशिएट किया जाएगा.

अगर यह पैरामीटर मौजूद नहीं है, तो नियम और नाम का नाम, एलान करने वाले .bzl मॉड्यूल के अंदर लागू होने वाले पहले Starlark ग्लोबल वैरिएबल के नाम पर सेट हो जाता है. इसलिए, अगर नाम foo_library है, तो foo_library = rule(...) को यह पैरामीटर बताने की ज़रूरत नहीं है.

किसी नियम के लिए अश्लील नाम तय करने से इस बात पर कोई असर नहीं पड़ता कि नियम को कहां इंस्टैंशिएट किया जा सकता है.

चुनें

unknown select(x, no_match_error='')

select(), हेल्पर फ़ंक्शन है. इसकी मदद से, नियम एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. जानकारी के लिए, एन्साइक्लोपीडिया बनाएं देखें.

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
एक ऐसा शब्द जिसमें कॉन्फ़िगरेशन की शर्तों को वैल्यू के साथ मैप किया जाता है. हर कुंजी, लेबल या लेबल स्ट्रिंग होती है, जो config_setting या restricted_value की पहचान करती है. स्ट्रिंग के बजाय लेबल का इस्तेमाल कब करना चाहिए, इसके लिए मैक्रो पर दस्तावेज़ देखें.
no_match_error डिफ़ॉल्ट =#39;'
अगर कोई शर्त मेल नहीं खाती है, तो रिपोर्ट करने के लिए वैकल्पिक कस्टम गड़बड़ी.

एकल_वर्शन_ओवरराइड

None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

इस नीति से पता चलता है कि डिपेंडेंसी अब भी रजिस्ट्री से आनी चाहिए. हालांकि, इसके वर्शन को पिन किया जाना चाहिए या इसकी रजिस्ट्री को बदला जाना चाहिए या लागू किए गए पैच की सूची. यह निर्देश सिर्फ़ रूट मॉड्यूल के लिए है. दूसरे शब्दों में, अगर कोई मॉड्यूल किसी भी ओवरराइड को बताता है, तो दूसरे लोग उसे डिपेंडेंसी के तौर पर इस्तेमाल नहीं कर सकते.

पैरामीटर

पैरामीटर जानकारी
module_name ज़रूरी है
इस ओवरराइड को लागू करने के लिए, बेज़ल मॉड्यूल डिपेंडेंसी का नाम.
version डिफ़ॉल्ट =##39;'
डिपेंडेंसी ग्राफ़ में इस मॉड्यूल के तय किए गए वर्शन को बदल देता है. दूसरे शब्दों में, यह मॉड्यूल इस ओवरराइड वर्शन में "पिन किया गया" होगा. अगर सभी रजिस्ट्री या पैच हैं, तो इस एट्रिब्यूट को छोड़ा जा सकता है.
registry डिफ़ॉल्ट = ''
इस मॉड्यूल के लिए रजिस्ट्री को ओवरराइड करता है; रजिस्ट्री की डिफ़ॉल्ट सूची से इस मॉड्यूल को ढूंढने के बजाय, दी गई रजिस्ट्री का इस्तेमाल किया जाना चाहिए.
patches Iterable of strings; डिफ़ॉल्ट = []
इस मॉड्यूल के लिए लागू करने के लिए, पैच फ़ाइलों पर ले जाने वाले लेबल की सूची. टॉप लेवल प्रोजेक्ट के सोर्स ट्री में, पैच फ़ाइलें मौजूद होनी चाहिए. उन्हें सूची के क्रम में लागू किया जाता है.
patch_cmds Iterable of strings; डिफ़ॉल्ट = []
पैच लागू किए जाने के बाद, Linux/Macos पर Bash निर्देशों का क्रम लागू होगा.
patch_strip डिफ़ॉल्ट = 0
जैसा कि Unix पैच के --स्ट्रिप आर्ग्युमेंट के जैसा है.

क्रम से लगाया गया

list sorted(iterable, *, key=None, reverse=False)

एक नई क्रम से लगाई गई सूची देता है जिसमें सप्लाई किए जा सकने वाले क्रम के सभी एलिमेंट शामिल होते हैं. अगर x के किसी भी जोड़े को x < y का इस्तेमाल करके तुलना नहीं की जा सकती, तो कोई गड़बड़ी हो सकती है. एलिमेंट को बढ़ते क्रम में लगाया जाता है, बशर्ते रिवर्स आर्ग्युमेंट 'सही' हो. इस स्थिति में, क्रम घटते क्रम में होता है. क्रम स्थायी है: बराबर तुलना करने वाले एलिमेंट अपने मूल रिलेशन ऑर्डर में बदलाव नहीं करते.
sorted([3, 5, 4]) == [3, 4, 5]

पैरामीटर

पैरामीटर जानकारी
iterable ज़रूरी है
क्रम से लगाने के लिए, क्रम में लगाने का क्रम.
key डिफ़ॉल्ट = कोई नहीं
तुलना करने से पहले, हर एलिमेंट पर एक वैकल्पिक फ़ंक्शन लागू किया जाता है.
reverse डिफ़ॉल्ट = गलत
नतीजे को घटते क्रम में दिखाता है.

str

string str(x)

किसी भी ऑब्जेक्ट को स्ट्रिंग में बदलता है. यह डीबग करने के लिए कारगर है.
str("ab") == "ab"
str(8) == "8"

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
बदला जाने वाला ऑब्जेक्ट.

Tag_class

tag_class tag_class(attrs={}, *, doc='')

एक नया Tag_class ऑब्जेक्ट बनाता है, जो टैग के क्लास के लिए एक एट्रिब्यूट स्कीमा तय करता है. ये ऐसे ऑब्जेक्ट होते हैं जिन्हें मॉड्यूल एक्सटेंशन से इस्तेमाल किया जा सकता है.

पैरामीटर

पैरामीटर जानकारी
attrs डिफ़ॉल्ट = {}
इस टैग क्लास की सभी विशेषताओं के बारे में बताने वाला शब्दकोश. यह एट्रिब्यूट के नाम से किसी एट्रिब्यूट ऑब्जेक्ट तक मैप होता है (attr मॉड्यूल देखें).
doc डिफ़ॉल्ट =#39;'
टैग क्लास का ब्यौरा, जिसे दस्तावेज़ जनरेट करने वाले टूल की मदद से निकाला जा सकता है.

टपल

tuple tuple(x=())

दिए गए दोहराव वाले मान वाले ट्यूल के साथ ट्यूल मिलता है.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

पैरामीटर

पैरामीटर जानकारी
x डिफ़ॉल्ट = ()
बदला जाने वाला ऑब्जेक्ट.

टाइप करें

string type(x)

अपने आर्ग्युमेंट का टाइप नाम दिखाता है. यह डीबग करने और टाइप की जांच करने के लिए कारगर है. उदाहरण:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
यह फ़ंक्शन आने वाले समय में बदल सकता है. Python के साथ काम करने वाला कोड लिखने और आने वाले समय की पुष्टि करने के लिए, इसका इस्तेमाल सिर्फ़ सामान की वैल्यू की तुलना करने के लिए करें:
if type(x) == type([]):  # if x is a list

पैरामीटर

पैरामीटर जानकारी
x ज़रूरी है
ऑब्जेक्ट की जांच करने के लिए ऑब्जेक्ट.

Use_extensions का उपयोग करें

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False)

मॉड्यूल एक्सटेंशन दिखाने वाला प्रॉक्सी ऑब्जेक्ट दिखाता है. मॉड्यूल एक्सटेंशन टैग बनाने के लिए, इसके तरीके लागू किए जा सकते हैं.

पैरामीटर

पैरामीटर जानकारी
extension_bzl_file ज़रूरी है
मॉड्यूल एक्सटेंशन को परिभाषित करने वाली Starlark फ़ाइल का लेबल.
extension_name ज़रूरी है
इस्तेमाल करने के लिए मॉड्यूल एक्सटेंशन का नाम. इस नाम का प्रतीक Starlark फ़ाइल के ज़रिए निर्यात किया जाना चाहिए.
dev_dependency डिफ़ॉल्ट = गलत
अगर सही है, तो मॉड्यूल मॉड्यूल का इस्तेमाल अनदेखा किया जाएगा, अगर मौजूदा मॉड्यूल रूट मॉड्यूल नहीं है या `--ignore_dev_dependency` चालू है.

Use_repo

None use_repo(extension_proxy, *args, **kwargs)

दिए गए मॉड्यूल एक्सटेंशन से जनरेट किए गए एक या एक से ज़्यादा रिपोज़िट, मौजूदा मॉड्यूल के दायरे में इंपोर्ट करता है.

पैरामीटर

पैरामीटर जानकारी
extension_proxy ज़रूरी है
use_extension कॉल से मिला मॉड्यूल एक्सटेंशन प्रॉक्सी ऑब्जेक्ट.
args ज़रूरी
इंपोर्ट करने के लिए डेटा स्टोर करने की जगह के नाम.
kwargs ज़रूरी
इससे मौजूदा मॉड्यूल के दायरे में, अलग-अलग नामों से इंपोर्ट करने के बारे में पता चलता है. कुंजियां, मौजूदा दायरे में इस्तेमाल की जाने वाली नाम होनी चाहिए, जबकि वैल्यू वही होनी चाहिए जो मॉड्यूल एक्सटेंशन से एक्सपोर्ट की गई थीं.

कैसा दिखाई दे

None visibility(value)

(प्रयोग के तौर पर; --experimental_bzl_visibility के ज़रिए चालू किया गया.)

.bzl मॉड्यूल की bzl-विज़िबिलिटी अभी सेट की जाती है.

किसी मॉड्यूल की bzl-विज़िबिलिटी नियंत्रित करती है कि अन्य BUILD और .bzl फ़ाइलें उसे लोड कर सकती हैं या नहीं. (यह टारगेट किए गए .bzl सोर्स फ़ाइल के टारगेट विज़िबिलिटी से अलग है, जो यह कंट्रोल करता है कि फ़ाइल दूसरे टारगेट की डिपेंडेंसी के तौर पर दिख सकती है या नहीं.) Bzl-विज़िबिलिटी, पैकेज के लेवल पर काम करती है: मॉड्यूल लोड करने के लिए, लोड होने वाली फ़ाइल उस पैकेज में होनी चाहिए जिसे मॉड्यूल ने ऐक्सेस करने की अनुमति दी हो. मॉड्यूल हमेशा अपने पैकेज में लोड किया जा सकता है, चाहे वह किसी भी तरह का हो.

visibility() को हर .bzl फ़ाइल के लिए सिर्फ़ एक बार कॉल किया जा सकता है. साथ ही, इसे सिर्फ़ सबसे ऊपर के लेवल पर कॉल किया जा सकता है, किसी फ़ंक्शन में नहीं. इस कॉल को प्राथमिकता देने के लिए, इस कॉल को load() स्टेटमेंट के ठीक नीचे और तर्क को तय करने के लिए ज़रूरी छोटे तर्क के नीचे रखा जाना चाहिए.

अगर फ़्लैग --check_bzl_visibility को 'गलत है' पर सेट किया गया है, तो bzl-विज़िबिलिटी उल्लंघनों से चेतावनियां मिलेंगी. हालांकि, ये बिल्ड में सफल नहीं होंगे.

पैरामीटर

पैरामीटर जानकारी
value ज़रूरी है
पैकेज की खास बातों वाली स्ट्रिंग या एक खास पैकेज की स्ट्रिंग.

पैकेज की खास बातों में package_group के फ़ॉर्मैट का इस्तेमाल किया जाता है. हालांकि, इसमें पैकेज की खास बातों की अनुमति नहीं है. इसका मतलब है कि किसी खास जानकारी में ये फ़ॉर्म शामिल हो सकते हैं:

  • "//foo": पैकेज //foo
  • "//foo/...": पैकेज //foo और इसके सभी सब-पैकेज.
  • "public" या "private": सभी पैकेज या कोई पैकेज नहीं

"@" सिंटैक्स की अनुमति नहीं है; सभी विशेषताओं को मौजूदा मॉड्यूल' के डेटा संग्रह के हिसाब से समझा जाता है.

अगर value स्ट्रिंग की सूची है, तो इस मॉड्यूल के लिए सेट किए गए पैकेज के सेट, हर खास जानकारी के साथ दिखाए गए पैकेज की सूची हैं. (किसी खाली सूची का भी private जैसा ही असर होता है.) अगर value एक स्ट्रिंग है, तो इसे इस तरह माना जाएगा जैसे वह सिंगलटन सूची [value] हो.

ध्यान दें कि स्पेसिफ़िकेशन "//..." को हमेशा मौजूदा रिपॉज़िटरी और कोट में सभी पैकेज के तौर पर माना जाता है, भले ही --incompatible_fix_package_group_reporoot_syntax फ़्लैग की वैल्यू कुछ भी हो.

कार्यस्थान

None workspace(name)

इस फ़ंक्शन का इस्तेमाल सिर्फ़ WORKSPACE फ़ाइल में किया जा सकता है. इसे WORKSPACE फ़ाइल में मौजूद दूसरे सभी फ़ंक्शन से पहले एलान किया जाना चाहिए. हर WORKSPACE फ़ाइल में workspace फ़ंक्शन होना चाहिए.

इस फ़ाइल फ़ोल्डर का नाम सेट करता है. Workspace के नामों में, प्रोजेक्ट का Java-package का ब्यौरा होना चाहिए.इसमें सेपरेटर के तौर पर अंडरस्कोर का इस्तेमाल किया जाना चाहिए. उदाहरण के लिए, github.com/bazelbuild/bazel में com_github_bazelbuild_bazel का इस्तेमाल किया जाना चाहिए.

इस नाम का इस्तेमाल उस डायरेक्ट्री के लिए किया जाता है जिसमें रिपॉज़िटरी' की रन फ़ाइलें सेव की जाती हैं. उदाहरण के लिए, अगर लोकल रिपॉज़िटरी (डेटा स्टोर करने की जगह) में foo/bar वाली रनफ़ाइल है और WORKSPACE फ़ाइल में workspace(name = 'baz') है, तो रनफ़ाइल, mytarget.runfiles/baz/foo/bar में उपलब्ध होगी. अगर फ़ाइल फ़ोल्डर का कोई नाम नहीं दिया गया है, तो रनफ़ाइल को bar.runfiles/foo/bar से सिंक कर दिया जाएगा.

रिमोट डेटा संग्रह स्थान नियम के नाम मान्य फ़ाइल फ़ोल्डर नाम होने चाहिए. उदाहरण के लिए, आपके पास maven_jar(name = 'foo') हो सकता है, लेकिन maven_jar(name = 'foo%bar') नहीं, क्योंकि बैज़ेल maven_jar वाली workspace(name = 'foo%bar') के लिए एक WORKSPACE फ़ाइल लिखने की कोशिश करेगा.

पैरामीटर

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

zip

list zip(*args)

tuple का list देता है, जहां i-th tugle में आर्ग्युमेंट के हर क्रम या बार-बार आने वाले i-th एलिमेंट को शामिल किया गया है. सूची में सबसे छोटे इनपुट का साइज़ होता है. एक बार लागू होने वाले आर्ग्युमेंट के साथ, यह 1-ट्यूल की सूची दिखाता है. बिना किसी तर्क के, यह एक खाली सूची दिखाता है. उदाहरण:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

पैरामीटर

पैरामीटर जानकारी
args पिन करने के लिए,
ज़रूरी है.