ग्लोबल

ग्लोबल एनवायरमेंट में रजिस्टर किए गए ऑब्जेक्ट, फ़ंक्शन, और मॉड्यूल.

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

सभी

bool all(elements)

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

पैरामीटर

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

analysis_test_transition

transition analysis_test_transition(settings)

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

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

पैरामीटर

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

कोई भी

bool any(elements)

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

पैरामीटर

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

archive_override

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

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

पैरामीटर

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

आसपेक्ट

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 ज़रूरी है
Starlark फ़ंक्शन, जो इस पहलू को लागू करता है. इसमें सिर्फ़ दो पैरामीटर होते हैं: टारगेट (वह टारगेट जिस पर आसपेक्ट रेशियो लागू किया गया है) और ctx (वह नियम कॉन्टेक्स्ट जिससे टारगेट बनाया गया है). टारगेट के एट्रिब्यूट, 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 डिफ़ॉल्ट = []
सेवा देने वाली उन कंपनियों की सूची जिन्हें लागू करने वाला फ़ंक्शन दिखाना ज़रूरी है.

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

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

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

उदाहरण के लिए, मान लें कि कोई आसपेक्ट, `deps` विशेषता के ज़रिए ट्रांज़िट रूप से लागू होता है और `ऐल्फ़ा` को टारगेट करने पर इसे लागू किया जाता है. मान लीजिए कि `ऐल्फ़ा` में `deps = [':beta_return']`, जहां `बीटा_आउटपुट` टारगेट `बीटा` का एलान किया गया आउटपुट है. मान लीजिए कि `बीटा` में कोई टारगेट `चार्ली` है, तो यह आसपेक्ट के ज़रिए लागू होगा.

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

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 डिफ़ॉल्ट = ''
मॉड्यूल का वह वर्शन जिसे डायरेक्ट डिपेंडेंसी के तौर पर जोड़ा जाना है.
repo_name डिफ़ॉल्ट = ''
इस डिपेंडेंसी को दिखाने वाले एक्सटर्नल रेपो का नाम. डिफ़ॉल्ट रूप से यह मॉड्यूल का नाम होता है.
dev_dependency डिफ़ॉल्ट = False
सही होने पर, अगर मौजूदा मॉड्यूल रूट मॉड्यूल नहीं है या `--ignore_dev_dependency` चालू है, तो इस डिपेंडेंसी को अनदेखा किया जाएगा.

bind

None bind(name, actual=None)

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

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

पैरामीटर

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

bool

bool bool(x=False)

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

पैरामीटर

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

configuration_field

LateBoundDefault configuration_field(fragment, name)

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

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

नियम एट्रिब्यूट तय करना:

'_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_elements फ़्लैग का इस्तेमाल करें; आने वाले समय की रिलीज़ में यह डिफ़ॉल्ट व्यवहार होगा; समस्या 10313 देखें.

इसके अलावा, यह ज़रूरी है कि एलिमेंट ऐसे हों जिन्हें बदला न जा सके. हालांकि, आने वाले समय में इस पाबंदी में छूट दी जाएगी.

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

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

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

पैरामीटर

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

dict

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

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

पैरामीटर

पैरामीटर ब्यौरा
pairs डिफ़ॉल्ट = []
लिखवाने या बार-बार इस्तेमाल किए जा सकने वाले ऐसे एलिमेंट जिनके एलिमेंट की लंबाई 2 (कुंजी, वैल्यू) होती है.
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 डिफ़ॉल्ट = False
अगर 'सही है' पर सेट किया जाता है, तो यह एक्ज़ीक्यूट ग्रुप उस नियम के टूलचेन और कंस्ट्रेंट को इनहेरिट कर लेता है जिससे यह ग्रुप जुड़ा है. अगर इसे किसी दूसरी स्ट्रिंग पर सेट किया जाता है, तो गड़बड़ी हो सकती है.

विफल रहा

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

इससे, प्रोग्राम चलाने में गड़बड़ी होती है.

पैरामीटर

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

float

float float(x=unbound)

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

पैरामीटर

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

गेटट्री

unknown getattr(x, name, default=unbound)

दिए गए नाम का स्ट्रक्चर फ़ील्ड मौजूद होने पर यह दिखाता है. अगर ऐसा नहीं है, तो यह 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 रिपॉज़िटरी की किसी तय शर्त से आना चाहिए. इस डायरेक्टिव का इस्तेमाल सिर्फ़ रूट मॉड्यूल में किया जा सकता है. दूसरे शब्दों में, अगर कोई मॉड्यूल किसी बदलाव को तय करता है, तो कोई दूसरा उसे डिपेंडेंसी के तौर पर इस्तेमाल नहीं कर सकता.

पैरामीटर

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

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)

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

len

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 ज़रूरी है
इस बदलाव को लागू करने के लिए, Bazel मॉड्यूल डिपेंडेंसी का नाम.
path ज़रूरी है
उस डायरेक्ट्री का पाथ जहां यह मॉड्यूल है.

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

unknown max(*args)

दिए गए सभी तर्कों में से सबसे बड़ा तर्क लौटाता है. अगर सिर्फ़ एक तर्क दिया गया हो, तो ऐसा होना चाहिए कि एलिमेंट खाली न हो.इसलिए, अगर एलिमेंट की तुलना नहीं की जा सकती (उदाहरण के लिए, स्ट्रिंग के साथ पूर्णांक न होना) या कोई तर्क न दिए जाने पर यह गड़बड़ी होती है.
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 रेपो से दिखाया जाता है. ये प्रॉपर्टी, मॉड्यूल (जैसे कि नाम और वर्शन) का ज़रूरी मेटाडेटा होती हैं या इनसे मौजूदा मॉड्यूल और उस पर निर्भर लोगों के व्यवहार पर असर पड़ता है.

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

पैरामीटर

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

module_extension

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

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

पैरामीटर

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

multiple_version_override

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

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

पैरामीटर

पैरामीटर ब्यौरा
module_name ज़रूरी है
इस बदलाव को लागू करने के लिए, Bazel मॉड्यूल डिपेंडेंसी का नाम.
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 वैल्यू और रॉ कंस्ट्रक्टर की कॉल करने लायक वैल्यू. ज़्यादा जानकारी के लिए, नियम (कस्टम सेवा देने वाली कंपनियों को पसंद के मुताबिक बनाना) देखें. साथ ही, नीचे दिए गए 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() दो एलिमेंट का टपल दिखाता है: नॉर्मल प्रोवाइडर सिंबल और रॉ कंस्ट्रक्टर.

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

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

  • अगर args खाली नहीं है, तो गड़बड़ी होती है.
  • अगर provider() को कॉल करते समय fields पैरामीटर दिया गया था और kwargs में कोई ऐसी कुंजी है जो fields में शामिल नहीं थी, तो गड़बड़ी होती है.
  • ऐसा न करने पर, c एक नया इंस्टेंस दिखाता है, जिसमें kwargs की हर k: v एंट्री के लिए, v वैल्यू वाले k नाम का फ़ील्ड होता है.
अगर 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. d की एंट्री के साथ, डिफ़ॉल्ट कंस्ट्रक्टर को कॉल करके, P का नया इंस्टेंस जनरेट किया जाता है, जैसे कि c(**d) में.

ध्यान दें: ऊपर दिए गए तरीके के मुताबिक, अगर *args या **kwargs, init के सिग्नेचर से मेल नहीं खाते हैं या 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 होती है). यह नकारात्मक हो सकता है.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

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

पैरामीटर

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

register_execution_platforms()

None register_execution_platforms(*platform_labels)

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

पैरामीटर

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

register_toolchains()

None register_toolchains(*toolchain_labels)

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

पैरामीटर

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

register_toolchains()

None register_toolchains(*toolchain_labels)

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

पैरामीटर

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

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

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 डिफ़ॉल्ट = False
इससे पता चलता है कि इस नियम के तहत, लोकल सिस्टम से मिलने वाली सभी जानकारी फ़ेच की जाती है. साथ ही, हर बार फ़ेच करने पर इसका फिर से आकलन किया जाना चाहिए.
environ sequence of strings; डिफ़ॉल्ट = []
एनवायरमेंट वैरिएबल की सूची देता है, जिस पर यह रिपॉज़िटरी नियम निर्भर करता है. अगर उस सूची में मौजूद किसी एनवायरमेंट वैरिएबल में बदलाव होता है, तो रिपॉज़िटरी को फिर से फ़ेच किया जाएगा.
configure डिफ़ॉल्ट = False
इससे पता चलता है कि रिपॉज़िटरी, कॉन्फ़िगरेशन के मकसद से सिस्टम की जांच करती है
remotable डिफ़ॉल्ट = गलत
एक्सपेरिमेंटल. इस पैरामीटर पर एक्सपेरिमेंट जारी है और यह किसी भी समय बदल सकता है. कृपया इस पर निर्भर न रहें. इसे ---experimental_repo_remote_exec
रिमोट एक्ज़ीक्यूट करने की सुविधा के साथ काम करता है" को सेट करके, एक्सपेरिमेंट के तौर पर चालू किया जा सकता है
doc डिफ़ॉल्ट = ''
डेटा स्टोर करने की जगह के नियम की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल की मदद से हासिल किया जा सकता है.

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

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 डिफ़ॉल्ट = False
इससे पता चलता है कि इस नियम के तहत, लोकल सिस्टम से मिलने वाली सभी जानकारी फ़ेच की जाती है. साथ ही, हर बार फ़ेच करने पर इसका फिर से आकलन किया जाना चाहिए.
environ sequence of strings; डिफ़ॉल्ट = []
एनवायरमेंट वैरिएबल की सूची देता है, जिस पर यह रिपॉज़िटरी नियम निर्भर करता है. अगर उस सूची में मौजूद किसी एनवायरमेंट वैरिएबल में बदलाव होता है, तो रिपॉज़िटरी को फिर से फ़ेच किया जाएगा.
configure डिफ़ॉल्ट = False
इससे पता चलता है कि रिपॉज़िटरी, कॉन्फ़िगरेशन के मकसद से सिस्टम की जांच करती है
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 फ़ाइल में ग्लोबल वैरिएबल के लिए नियम असाइन किए जाने चाहिए; ग्लोबल वैरिएबल का नाम नियम का नाम होता है.

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

पैरामीटर

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

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

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

डिक्शनरी में हर एंट्री, पहले से तय किया गया एक आउटपुट बनाता है. इसमें कुंजी एक आइडेंटिफ़ायर होता है और वैल्यू एक स्ट्रिंग टेंप्लेट होती है, जो आउटपुट का लेबल तय करती है. नियम लागू करने वाले फ़ंक्शन में, आइडेंटिफ़ायर, ctx.outputs में आउटपुट के File को ऐक्सेस करने के लिए इस्तेमाल किया जाने वाला फ़ील्ड का नाम बन जाता है. आउटपुट के लेबल में, नियम के मुताबिक वही पैकेज होता है और पैकेज बनाने के बाद का हिस्सा, "%{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 default = False
अगर सही है, तो फ़ाइलें bin डायरेक्ट्री के बजाय 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 डिफ़ॉल्ट = False
अब काम नहीं करता, इसका इस्तेमाल नहीं किया जा रहा है और इसे हटा देना चाहिए.
doc डिफ़ॉल्ट = ''
नियम का ब्यौरा, जिसे दस्तावेज़ जनरेट करने वाले टूल की मदद से हासिल किया जा सकता है.
provides डिफ़ॉल्ट = []
सेवा देने वाली उन कंपनियों की सूची जिन्हें लागू करने वाला फ़ंक्शन दिखाना ज़रूरी है.

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

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

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

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

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

  • इस नियम के टारगेट, उन पर लागू होने वाली ट्रांज़िट डिपेंडेंसी की संख्या तक सीमित हैं.
  • इस नियम को टेस्ट नियम माना जाता है (जैसे कि test=True सेट किया गया). यह test की वैल्यू की जगह लागू हो जाएगा
  • ऐसा हो सकता है कि नियम लागू करने वाला फ़ंक्शन, कार्रवाइयों को रजिस्टर न करे. इसके बजाय, इसे AnalysisTestResultInfo देकर पास/फ़ेल नतीजा रजिस्टर करना होगा.
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_डिपेंडेंसी: अगर एक से ज़्यादा नियम तय की गई फ़ाइल का इस्तेमाल करते हैं, तो क्या हमें इस नियम को अन्य नियमों के ऊपर चुनना चाहिए.
name string; or None; डिफ़ॉल्ट = कोई नहीं
अब सेवा में नहीं है. यह पैरामीटर अब काम नहीं करता है. इसे जल्द ही हटा दिया जाएगा. कृपया इस पर निर्भर न रहें. यह --+incompatible_remove_rule_name_parameter के साथ बंद है. इस फ़्लैग का इस्तेमाल करके, पुष्टि करें कि आपका कोड जल्द ही हटाए जाने के लिए तैयार है.
अब काम नहीं करता: इस्तेमाल न करें.

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

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

नियम के लिए साफ़ तौर पर कोई नाम तय करने से, नियम को वहां इंस्टैंशिएट करने की अनुमति नहीं मिलती.

चुनें

unknown select(x, no_match_error='')

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

पैरामीटर

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

single_version_override

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

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

पैरामीटर

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

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

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

दिए गए बार-बार इस्तेमाल किए जा सकने वाले क्रम के सभी एलिमेंट वाली नई सूची दिखाता है. अगर x और y के किसी भी जोड़े की तुलना 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 default = {}
एक डिक्शनरी, जो इस टैग क्लास के सभी एट्रिब्यूट के बारे में जानकारी देती है. यह एट्रिब्यूट के नाम से एट्रिब्यूट ऑब्जेक्ट में मैप करता है (attr मॉड्यूल देखें).
doc डिफ़ॉल्ट = ''
टैग क्लास की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल की मदद से निकाला जा सकता है.

tuple

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_extension

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

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

पैरामीटर

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

use_repo

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

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

पैरामीटर

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

किसे दिखे

None visibility(value)

यह नीति, फ़िलहाल शुरू किए जा रहे .bzl मॉड्यूल के लोड दिखने की सेटिंग को सेट करती है.

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

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

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

पैरामीटर

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

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

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

"@" सिंटैक्स की अनुमति नहीं है; सभी स्पेसिफ़िकेशन की व्याख्या, मौजूदा मॉड्यूल के रिपॉज़िटरी के हिसाब से की जाती है.

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

ध्यान दें कि --incompatible_package_group_has_public_syntax और --incompatible_fix_package_group_reporoot_syntax फ़्लैग का इस तर्क पर कोई असर नहीं पड़ता. "public" और "private" वैल्यू हमेशा उपलब्ध होती हैं. साथ ही, "//..." को हमेशा "डेटा स्टोर करने की मौजूदा जगह में मौजूद सभी पैकेज" के तौर पर माना जाता है.

कार्यस्थान

None workspace(name)

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

इस फ़ाइल फ़ोल्डर का नाम सेट करता है. फ़ाइल फ़ोल्डर के नाम, प्रोजेक्ट के Java-पैकेज-स्टाइल की जानकारी देने वाले होने चाहिए.इसमें अंडरस्कोर को सेपरेटर के तौर पर इस्तेमाल किया जाना चाहिए. जैसे, 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') नहीं, क्योंकि Bazel workspace(name = 'foo%bar') वाले maven_jar के लिए एक ऐसी Workspace फ़ाइल लिखने की कोशिश करेगा.

पैरामीटर

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

zip

list zip(*args)

tuple का list दिखाता है, जहां i-वें टपल में हर आर्ग्युमेंट क्रम या बार-बार इस्तेमाल किए जा सकने वाले एलिमेंट से 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 ज़िप करने के लिए,
सूचियाँ ज़रूरी हैं.