तारीख सेव करें: BazelCon 2023, 24 से 25 अक्टूबर तक Google म्यूनिख में होगा! रजिस्ट्रेशन अब शुरू हो गया है! ज़्यादा जानें

.bzl फ़ाइलें

समस्या की शिकायत करें

इस पेज में सभी .bzl फ़ाइलों में उपलब्ध ग्लोबल तरीके मौजूद हैं.

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

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

transition analysis_test_transition(settings)

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

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

पैरामीटर

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

आसपेक्ट

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

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

पैरामीटर

पैरामीटर जानकारी
implementation ज़रूरी है
इस आसपेक्ट रेशियो को लागू करने वाला Starlark फ़ंक्शन, सिर्फ़ दो पैरामीटर का इस्तेमाल करता है: टारगेट (जिस आसपेक्ट पर आसपेक्ट रेशियो लागू होता है) और टॉक (नियम का वह रेफ़रंस जिससे टारगेट बनाया जाता है). टारगेट के एट्रिब्यूट, 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 string; or None: डिफ़ॉल्ट = कोई नहीं
उस आसपेक्ट का ब्यौरा जो दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
apply_to_generating_rules डिफ़ॉल्ट = गलत
अगर सही है, तो आउटपुट फ़ाइल पर लागू किए जाने पर आसपेक्ट रेशियो, आउटपुट फ़ाइल के नियम पर लागू होगा.

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

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

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

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

LateBoundDefault configuration_field(fragment, name)

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

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

नियम की विशेषता तय करना:

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

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

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

पैरामीटर

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

Depset

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

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

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

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

हालांकि, आने वाले समय में एलिमेंट में कोई बदलाव नहीं हो सकेगा.

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

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

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

पैरामीटर

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

exec_group

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

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

पैरामीटर

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

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

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

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

पैरामीटर

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

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

unknown provider(doc=None, *, 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 string; or None: डिफ़ॉल्ट = कोई नहीं
प्रोवाइडर के बारे में जानकारी, जो दस्तावेज़ जनरेट करने वाले टूल से निकाली जा सकती है.
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. P का एक नया इंस्टेंस जनरेट किया जाता है, जो c(**d) की तरह डिफ़ॉल्ट आर्ग्युमेंट को d आर्ग्युमेंट के तौर पर कॉल करता है.

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

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

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

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

रिपॉज़िटरी_नियम

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 डिफ़ॉल्ट = ''
रिपॉज़िटरी नियम का ब्यौरा. इसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.

नियम

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=None, *, 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 फ़ंक्शन का सिर्फ़ एक पैरामीटर होना ज़रूरी है: lock. नियम के हर इंस्टेंस के लिए विश्लेषण के चरण में फ़ंक्शन को कॉल किया जाता है. यह उपयोगकर्ता से मिले एट्रिब्यूट को ऐक्सेस कर सकता है. इससे, एलान किए गए सभी आउटपुट जनरेट करने के लिए, कार्रवाइयां बनानी होंगी.
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 एट्रिब्यूट से अलग, उपयोगकर्ता इन फ़ाइलों के लिए लेबल तय नहीं करता. पहले से बताए गए आउटपुट के बारे में ज़्यादा जानने के लिए, नियम पेज देखें.

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

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

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

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

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

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

ध्यान दें: विश्लेषण में जांच के नियम, मुख्य तौर पर 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_dependency: अगर एक से ज़्यादा नियम तय फ़ाइल का इस्तेमाल करते हैं, तो क्या हमें इस नियम को दूसरों से चुनना चाहिए.
name string; or None: डिफ़ॉल्ट = कोई नहीं
काम नहीं करता. यह पैरामीटर काम नहीं करता है और इसे जल्द ही हटा दिया जाएगा. कृपया इस पर भरोसा न करें. यह --+incompatible_remove_rule_name_parameter के साथ बंद है. इस फ़्लैग का इस्तेमाल करके पुष्टि करें कि आपका कोड जल्द ही हटा दिया जाएगा.
अब सेवा में नहीं है: इस्तेमाल न करें.

इस नियम का नाम, जैसा कि बेज़ल ने समझ लिया था. साथ ही, वे native.existing_rule(...)[kind] और bazel query जैसे संदर्भ में रिपोर्ट करते थे. आम तौर पर, यह Starrk

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

किसी नियम के लिए साफ़ तौर पर जानकारी देने वाला नाम तय करने से, नियम लागू करने की जगह पर कोई असर नहीं पड़ता.

चुनें

unknown select(x, no_match_error='')

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

पैरामीटर

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

टैग_क्लास

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

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

पैरामीटर

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

कैसा दिखाई दे

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" की वैल्यू हमेशा उपलब्ध होती हैं. साथ ही, "//..." को हमेशा "मौजूदा डेटा स्टोर करने की जगह के सभी पैकेज" के तौर पर माना जाता है.