ग्लोबल

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

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

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

सभी

bool all(elements)

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

पैरामीटर

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

विश्लेषण_टेस्ट_ट्रांज़िशन

transition analysis_test_transition(settings)

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

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

पैरामीटर

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

कोई भी

bool any(elements)

अगर कम से कम एक एलिमेंट 'सही' पर सेट है, तो 'सही' दिखाता है. bool फ़ंक्शन का इस्तेमाल करके एलिमेंट को बूलियन में बदला जाता है.
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 ज़रूरी है
उस ओवरराइड पर लागू करने के लिए Bazel मॉड्यूल की डिपेंडेंसी का नाम.
urls string; or Iterable of strings; ज़रूरी है
संग्रह के यूआरएल; http(s):// या file:// यूआरएल हो सकते हैं.
integrity डिफ़ॉल्ट = ''
सब-सोर्स इंटेग्रिटी फ़ॉर्मैट में संग्रह फ़ाइल का अनुमानित चेकसम.
strip_prefix डिफ़ॉल्ट = ''
निकाली गई फ़ाइलों से स्ट्रिप करने के लिए निर्देशिका उपसर्ग.
patches Iterable of strings; डिफ़ॉल्ट = []
इस मॉड्यूल के लिए लागू होने वाले पैच फ़ाइलों पर ले जाने वाले लेबल की सूची. पैच फ़ाइलें टॉप लेवल प्रोजेक्ट के सोर्स ट्री में मौजूद होनी चाहिए. उन्हें सूची के क्रम में लागू किया जाता है.
patch_cmds Iterable of strings; डिफ़ॉल्ट = []
पैच लागू होने के बाद, Linux/Macos पर Bash कमांड का क्रम लागू करें.
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 से FooInfo *या* BarInfo *या* दोनों BazInfo *और* QuxInfo मिलते हैं, तो ही यह आसपेक्ट other_aspect देख सकता है.

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

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

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

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

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

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

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

बाइंड

None bind(name, actual=None)

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

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

पैरामीटर

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

बूल

bool bool(x=False)

बूल टाइप के लिए कंस्ट्रक्टर. अगर ऑब्जेक्ट None, खाली स्ट्रिंग (""), संख्या 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(direct=None, order="default", *, transitive=None)

depset बनाता है. 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 डिफ़ॉल्ट = "डिफ़ॉल्ट"
नए डेस्कटॉप के लिए ट्रैवर्सल रणनीति. संभावित वैल्यू के लिए यहां देखें.
transitive sequence of depsets; or None; डिफ़ॉल्ट = कोई नहीं
उन डेपसेट की सूची जिनके एलिमेंट, डिक्रिप्ट के इनडायरेक्ट एलिमेंट बन जाएंगे.

शब्द

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

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

पैरामीटर

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

Dir

list dir(x)

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

पैरामीटर

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

गिनती करो

list enumerate(list, start=0)

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

फ़ेल

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

इससे, एक्ज़ीक्यूशन के दौरान कोई गड़बड़ी होती है.

पैरामीटर

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

फ़्लोट

float float(x=unbound)

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

पैरामीटर

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

Getattr

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 पर Bash कमांड का क्रम लागू करें.
patch_strip डिफ़ॉल्ट = 0
Unix पैच के --strip आर्ग्युमेंट के जैसा.

Hasattr

bool hasattr(x, name)

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

पैरामीटर

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

हैश

int hash(value)

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

लेन

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)

दिए गए सभी तर्कों में से सबसे बड़ा तर्क देता है. अगर सिर्फ़ एक आर्ग्युमेंट दिया गया है, तो वह ऐसा होना चाहिए जिसे खाली न छोड़ा जा सके.ऐसा तब होता है, जब एलिमेंट की तुलना नहीं की जा सकती (उदाहरण के लिए, स्ट्रिंग के साथ 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 डिफ़ॉल्ट = ''
मॉड्यूल का वर्शन. इसे सिर्फ़ तभी छोड़ा जा सकता है, जब यह मॉड्यूल रूट मॉड्यूल हो (जैसे, अगर यह किसी दूसरे मॉड्यूल पर निर्भर न हो). यह वर्शन, SemVer फ़ॉर्मैट में होना चाहिए. ज़्यादा जानकारी के लिए, दस्तावेज़ पढ़ें.
compatibility_level डिफ़ॉल्ट = 0
मॉड्यूल का कम्पैटबिलटी लेवल; हर बार बदलाव करते समय, इसे बड़ा बदलाव करने के लिए बदला जाना चाहिए. यह असल में, SemVer के संदर्भ में मॉड्यूल का "मेजर वर्शन" है. हालांकि, यह वर्शन स्ट्रिंग में एम्बेड नहीं किया जाता, लेकिन यह एक अलग फ़ील्ड के तौर पर मौजूद होता है. अलग-अलग कम्पैटबिलटी लेवल वाले मॉड्यूल, वर्शन रिज़ॉल्यूशन में इस तरह से शामिल होते हैं जैसे कि वे अलग-अलग नामों वाले मॉड्यूल हों. हालांकि, आखिरी डिपेंडेंसी ग्राफ़ में एक ही नाम वाले अलग-अलग मॉड्यूल नहीं हो सकते, लेकिन अलग-अलग कमिटी लेवल हैं (जब तक कि multiple_version_override लागू न हो). ज़्यादा जानकारी के लिए, दस्तावेज़ देखें.
repo_name डिफ़ॉल्ट = ''
इस मॉड्यूल को दिखाने वाले रिपॉज़िटरी का नाम, जिसे मॉड्यूल में देखा जा सकता है. डिफ़ॉल्ट रूप से, डेटाबेस का नाम मॉड्यूल का नाम होता है. इसे उन प्रोजेक्ट के लिए माइग्रेशन को आसान बनाने के लिए दिया जा सकता है जो अपने मॉड्यूल के नाम से अलग repo नाम का इस्तेमाल करते हैं.
bazel_compatibility Iterable of strings; डिफ़ॉल्ट = []
बेज़ल वर्शन की सूची, जिससे उपयोगकर्ता यह एलान कर सकते हैं कि कौनसे मॉड्यूल वर्शन के साथ काम करते हैं. इससे डिपेंडेंसी रिज़ॉल्यूशन पर कोई असर नहीं पड़ता है, लेकिन 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 में कोई गड़बड़ी होने पर, इसका इस्तेमाल किया जाता है. यह गड़बड़ी बाद में ठीक होती रहती है.

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

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

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

पैरामीटर

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

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

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() दो एलिमेंट का टपल लौटाता है: सामान्य प्रोवाइडर सिंबल और रॉ कंस्ट्रक्टर.

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

provider() को कॉल करके P को, सेवा देने वाली कंपनी का निशान बनाने की अनुमति दें. सैद्धांतिक तौर पर, 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.foo == 1 के साथ m एक MyInfo इंस्टेंस बन जाए.

लेकिन अगर init के बारे में बताया गया है, तो कॉल P(*args, **kwargs) की जगह ये कदम उठाएं:

  1. कॉलबैक को init(*args, **kwargs) के तौर पर शुरू किया जाता है. इसका मतलब है कि यहां वही पोज़िशनल और कीवर्ड आर्ग्युमेंट होते हैं जो P में पास किए गए थे.
  2. init की रिटर्न वैल्यू एक डिक्शनरी, d होनी चाहिए. इसकी कुंजियां, फ़ील्ड के नाम वाली स्ट्रिंग होती हैं. अगर ऐसा नहीं है, तो गड़बड़ी होती है.
  3. P के नए इंस्टेंस से ऐसा होता है जैसे कि डिफ़ॉल्ट कंस्ट्रक्टर को d के एंट्री के साथ, कीवर्ड आर्ग्युमेंट के तौर पर कॉल करके. जैसे कि 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 है). यह नतीजा नेगेटिव हो सकता है.

रजिस्टर_execution_platforms()

None register_execution_platforms(*platform_labels)

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

पैरामीटर

पैरामीटर जानकारी
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 फ़ाइल में ग्लोबल वैरिएबल को असाइन किया जाना चाहिए; ग्लोबल वैरिएबल का नाम नियम का नाम होता है.

टेस्ट के नियमों के लिए, _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 एट्रिब्यूट का ऐक्सेस होता है. शब्दकोश सीधे बताया गया हो या फ़ंक्शन के ज़रिए, इसे इस तरह समझा जाता है.

डिक्शनरी की हर एंट्री में पहले से बताया गया आउटपुट होता है. इसमें कुंजी एक आइडेंटिफ़ायर होती है और वैल्यू एक स्ट्रिंग टेंप्लेट होती है जो आउटपुट का लेबल तय करती है. नियम लागू करने के फ़ंक्शन में, आइडेंटिफ़ायर उस फ़ील्ड का नाम बन जाता है जिसे 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 डिफ़ॉल्ट = गलत
अगर सही है, तो फ़ाइलें, बिन डायरेक्ट्री के बजाय genfiles डायरेक्ट्री में जनरेट होंगी. जब तक आपको मौजूदा नियमों के साथ काम करने की ज़रूरत न हो (उदाहरण के लिए, C++ के लिए हेडर फ़ाइलें जनरेट करते समय), तब तक इस फ़्लैग को सेट न करें.
fragments sequence of strings; डिफ़ॉल्ट = []
कॉन्फ़िगरेशन फ़्रैगमेंट के उन नामों की सूची जिनकी ज़रूरत टारगेट कॉन्फ़िगरेशन में होती है.
host_fragments sequence of strings; डिफ़ॉल्ट = []
कॉन्फ़िगरेशन के उन हिस्सों के नाम जिनकी सूची को होस्ट कॉन्फ़िगरेशन में ज़रूरी है.
_skylark_testable डिफ़ॉल्ट = गलत
(प्रयोग के तौर पर)

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

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

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

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

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

ध्यान दें: विश्लेषण जांच के नियमों को मुख्य तौर पर 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(...) के तौर पर दी जाएगी.

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

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

चुनें

unknown select(x, no_match_error='')

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

पैरामीटर

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

सिंगल_वर्शन_ओवरराइड

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 पर Bash कमांड का क्रम लागू करें.
patch_strip डिफ़ॉल्ट = 0
Unix पैच के --strip आर्ग्युमेंट के जैसा.

क्रम से लगाएं

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

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

पैरामीटर

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

एसटीआर

string str(x)

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

पैरामीटर

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

टैग_क्लास

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

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

पैरामीटर

पैरामीटर जानकारी
attrs डिफ़ॉल्ट = {}
इस टैग क्लास की सभी विशेषताओं के बारे में बताने वाला शब्दकोश. यह एट्रिब्यूट के नाम से किसी एट्रिब्यूट ऑब्जेक्ट तक मैप करता है (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 ज़रूरी है
ऐसा ऑब्जेक्ट जिसकी जांच करनी है.

यूज़_एक्सटेंशन

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` चालू है.

इस्तेमाल_रिपो

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, maven_jar वाले workspace(name = 'foo%bar') के लिए एक Workspace फ़ाइल लिखने की कोशिश करेगा.

पैरामीटर

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

zip

list zip(*args)

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