attr

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

यह किसी नियम या पहलू के एट्रिब्यूट स्कीमा को तय करने के लिए, टॉप-लेवल मॉड्यूल है. हर फ़ंक्शन, एक ऑब्जेक्ट दिखाता है. यह ऑब्जेक्ट, किसी एट्रिब्यूट के स्कीमा को दिखाता है. इन ऑब्जेक्ट का इस्तेमाल, rule(), aspect(), repository_rule(), और tag_class() के attrs डिक्शनरी आर्ग्युमेंट की वैल्यू के तौर पर किया जाता है.

एट्रिब्यूट तय करने और इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, नियमों का पेज देखें.

सदस्य

बूल

Attribute attr.bool(configurable=unbound, default=False, doc=None, mandatory=False)

यह बूलियन एट्रिब्यूट के लिए स्कीमा बनाता है. इसके हिसाब से ctx.attr एट्रिब्यूट की वैल्यू bool टाइप की होगी.

पैरामीटर

पैरामीटर ब्यौरा
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default bool; डिफ़ॉल्ट तौर पर False
होता है अगर नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.

int

Attribute attr.int(configurable=unbound, default=0, doc=None, mandatory=False, values=[])

यह फ़ंक्शन, पूर्णांक एट्रिब्यूट के लिए स्कीमा बनाता है. वैल्यू, साइंड 32-बिट रेंज में होनी चाहिए. इसके हिसाब से ctx.attr एट्रिब्यूट की वैल्यू int टाइप की होगी.

पैरामीटर

पैरामीटर ब्यौरा
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default int; डिफ़ॉल्ट वैल्यू 0
है अगर नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
values int का sequence; डिफ़ॉल्ट रूप से []
होता है यह एट्रिब्यूट के लिए इस्तेमाल की जा सकने वाली वैल्यू की सूची होती है. कोई दूसरी वैल्यू देने पर गड़बड़ी का मैसेज दिखता है.

int_list

Attribute attr.int_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

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

पैरामीटर

पैरामीटर ब्यौरा
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default ints का sequence; डिफ़ॉल्ट वैल्यू []
है यह एक डिफ़ॉल्ट वैल्यू है. इसका इस्तेमाल तब किया जाता है, जब नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.

लेबल

Attribute attr.label(configurable=unbound, default=None, materializer=None, doc=None, executable=False, allow_files=None, allow_single_file=None, mandatory=False, skip_validations=False, providers=[], for_dependency_resolution=unbound, allow_rules=None, cfg=None, aspects=[], flags=[])

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

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

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

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

पैरामीटर

पैरामीटर ब्यौरा
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default Label; या string; या LateBoundDefault; या NativeComputedDefault; या function; या None; डिफ़ॉल्ट रूप से None
होता है अगर नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू. डिफ़ॉल्ट वैल्यू तय करने के लिए, स्ट्रिंग या Label फ़ंक्शन का इस्तेमाल करें. उदाहरण के लिए, attr.label(default = "//a:b").
materializer function; डिफ़ॉल्ट रूप से None
होता है एक्सपेरिमेंट के तौर पर उपलब्ध है. यह पैरामीटर एक्सपेरिमेंट के तौर पर उपलब्ध है. इसमें कभी भी बदलाव किया जा सकता है. कृपया इसके भरोसे न रहें. इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है. इसके लिए, --experimental_dormant_deps
को सेट करना होगा. अगर इसे सेट किया जाता है, तो एट्रिब्यूट, ट्रांज़िटिव क्लोज़र से डॉर्मेंट डिपेंडेंसी को मटीरियलाइज़ करता है. इस पैरामीटर की वैल्यू एक ऐसा फ़ंक्शन होना चाहिए जो नियम के उन एट्रिब्यूट की वैल्यू को ऐक्सेस करता है जो डिपेंडेंसी नहीं हैं या जिन्हें डिपेंडेंसी रिज़ॉल्यूशन के लिए उपलब्ध के तौर पर मार्क किया गया है. इसे एट्रिब्यूट के टाइप के आधार पर, या तो डॉर्मेंट डिपेंडेंसी या उनकी सूची दिखानी चाहिए
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
executable bool; डिफ़ॉल्ट तौर पर False
होता है अगर डिपेंडेंसी को लागू करना है, तो यह वैल्यू सही होती है. इसका मतलब है कि लेबल, किसी एक्ज़ीक्यूटेबल फ़ाइल या किसी ऐसे नियम के बारे में होना चाहिए जो एक्ज़ीक्यूटेबल फ़ाइल बनाता है. ctx.executable.<attribute_name> की मदद से लेबल ऐक्सेस करें.
allow_files bool; या string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है क्या File टारगेट की अनुमति है. यह True, False (डिफ़ॉल्ट) या फ़ाइल एक्सटेंशन की ऐसी सूची हो सकती है जिन्हें अनुमति है (उदाहरण के लिए, [".cc", ".cpp"]).
allow_single_file डिफ़ॉल्ट वैल्यू None
है यह allow_files के जैसा ही है. हालांकि, इसमें यह पाबंदी है कि लेबल, किसी एक फ़ाइल से मेल खाना चाहिए. इसे ctx.file.<attribute_name> के ज़रिए ऐक्सेस करें.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
skip_validations bool; डिफ़ॉल्ट तौर पर False
होता है अगर सही है, तो इस एट्रिब्यूट से ट्रांज़िटिव डिपेंडेंसी की पुष्टि करने वाली कार्रवाइयां नहीं चलेंगी. यह समस्या को कुछ समय के लिए ठीक करने का तरीका है. आने वाले समय में इसे हटा दिया जाएगा.
providers sequence; डिफ़ॉल्ट रूप से []
होता है इस एट्रिब्यूट में दिखने वाली किसी भी डिपेंडेंसी के लिए, सेवा देने वाली कंपनियों की जानकारी देना ज़रूरी है.

इस आर्ग्युमेंट का फ़ॉर्मैट, प्रोवाइडर की सूचियों की सूची होती है. यह provider() से मिले *Info ऑब्जेक्ट होते हैं. हालांकि, लेगसी प्रोवाइडर के मामले में, यह उसका स्ट्रिंग नाम होता है. डिपेंडेंसी को, कम से कम एक इनर लिस्ट में बताए गए सभी प्रोवाइडर की जानकारी देनी होगी. सुविधा के लिए, यह आर्ग्युमेंट प्रोवाइडर की एक लेवल वाली सूची भी हो सकता है. ऐसे में, इसे एक एलिमेंट वाली बाहरी सूची में रैप किया जाता है. इसका मतलब है कि [A, B] का मतलब [[A, B]] है. यह ज़रूरी नहीं है कि डिपेंडेंसी का नियम, अपने provides पैरामीटर में उन प्रोवाइडर का विज्ञापन दिखाए. हालांकि, इसे सबसे सही तरीका माना जाता है.

for_dependency_resolution डिफ़ॉल्ट तौर पर unbound
होता है इसे सेट करने पर, एट्रिब्यूट, मटीरियलाइज़र के लिए उपलब्ध होता है. इस तरह के एट्रिब्यूट के ज़रिए, सिर्फ़ उन नियमों को रेफ़रंस किया जा सकता है जिन्हें एक ही नाम वाले फ़्लैग से मार्क किया गया है.
allow_rules string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है नियम के लिए, टारगेट करने की अनुमति वाली क्लास के नाम. इसे बंद कर दिया गया है. इसे सिर्फ़ कंपैटिबिलिटी के लिए रखा गया है. इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "exec" हो सकता है, जिसका मतलब है कि डिपेंडेंसी execution platform के लिए बनाई गई है. इसके अलावा, यह "target" भी हो सकता है, जिसका मतलब है कि डिपेंडेंसी target platform के लिए बनाई गई है. मोबाइल ऐप्लिकेशन बनाते समय, इस अंतर का एक सामान्य उदाहरण यह है कि target platform, Android या iOS होता है, जबकि execution platform, Linux, macOS या Windows होता है. अगर executable की वैल्यू True पर सेट है, तो इस पैरामीटर की ज़रूरत होती है. इससे टारगेट कॉन्फ़िगरेशन में गलती से होस्ट टूल बनाने से बचने में मदद मिलती है. "target" का कोई सिमैंटिक असर नहीं होता. इसलिए, जब executable की वैल्यू False हो, तब इसे सेट न करें. हालांकि, अगर इससे आपके इरादों को समझने में मदद मिलती है, तो इसे सेट किया जा सकता है.
aspects sequence of Aspects; डिफ़ॉल्ट रूप से []
होता है ऐसे आसपेक्ट जिन्हें इस एट्रिब्यूट से तय की गई डिपेंडेंसी या डिपेंडेंसी पर लागू किया जाना चाहिए.
flags sequence of strings; डिफ़ॉल्ट तौर पर []
होता है अब इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.

label_keyed_string_dict

Attribute attr.label_keyed_string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])

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

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

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

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default dict; या function; डिफ़ॉल्ट रूप से {}
होता है अगर नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू. डिफ़ॉल्ट वैल्यू तय करने के लिए, स्ट्रिंग या Label फ़ंक्शन का इस्तेमाल करें. उदाहरण के लिए, attr.label_keyed_string_dict(default = {"//a:b": "value", "//a:c": "string"}).
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
allow_files bool; या string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है क्या File टारगेट की अनुमति है. यह True, False (डिफ़ॉल्ट) या फ़ाइल एक्सटेंशन की ऐसी सूची हो सकती है जिन्हें अनुमति है (उदाहरण के लिए, [".cc", ".cpp"]).
allow_rules string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है नियम के लिए, टारगेट करने की अनुमति वाली क्लास के नाम. इसे बंद कर दिया गया है. इसे सिर्फ़ कंपैटिबिलिटी के लिए रखा गया है. इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
providers sequence; डिफ़ॉल्ट रूप से []
होता है इस एट्रिब्यूट में दिखने वाली किसी भी डिपेंडेंसी के लिए, सेवा देने वाली कंपनियों की जानकारी देना ज़रूरी है.

इस आर्ग्युमेंट का फ़ॉर्मैट, प्रोवाइडर की सूचियों की सूची होती है. यह provider() से मिले *Info ऑब्जेक्ट होते हैं. हालांकि, लेगसी प्रोवाइडर के मामले में, यह उसका स्ट्रिंग नाम होता है. डिपेंडेंसी को, कम से कम एक इनर लिस्ट में बताए गए सभी प्रोवाइडर की जानकारी देनी होगी. सुविधा के लिए, यह आर्ग्युमेंट प्रोवाइडर की एक लेवल वाली सूची भी हो सकता है. ऐसे में, इसे एक एलिमेंट वाली बाहरी सूची में रैप किया जाता है. इसका मतलब है कि [A, B] का मतलब [[A, B]] है. यह ज़रूरी नहीं है कि डिपेंडेंसी का नियम, अपने provides पैरामीटर में उन प्रोवाइडर का विज्ञापन दिखाए. हालांकि, इसे सबसे सही तरीका माना जाता है.

for_dependency_resolution डिफ़ॉल्ट तौर पर unbound
होता है इसे सेट करने पर, एट्रिब्यूट, मटीरियलाइज़र के लिए उपलब्ध होता है. इस तरह के एट्रिब्यूट के ज़रिए, सिर्फ़ उन नियमों को रेफ़रंस किया जा सकता है जिन्हें एक ही नाम वाले फ़्लैग से मार्क किया गया है.
flags sequence of strings; डिफ़ॉल्ट तौर पर []
होता है अब इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
skip_validations bool; डिफ़ॉल्ट तौर पर False
होता है अगर सही है, तो इस एट्रिब्यूट से ट्रांज़िटिव डिपेंडेंसी की पुष्टि करने वाली कार्रवाइयां नहीं चलेंगी. यह समस्या को कुछ समय के लिए ठीक करने का तरीका है. आने वाले समय में इसे हटा दिया जाएगा.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "exec" हो सकता है, जिसका मतलब है कि डिपेंडेंसी execution platform के लिए बनाई गई है. इसके अलावा, यह "target" भी हो सकता है, जिसका मतलब है कि डिपेंडेंसी target platform के लिए बनाई गई है. मोबाइल ऐप्लिकेशन बनाते समय, इस अंतर का एक सामान्य उदाहरण यह है कि target platform, Android या iOS होता है, जबकि execution platform, Linux, macOS या Windows होता है.
aspects sequence of Aspects; डिफ़ॉल्ट रूप से []
होता है ऐसे आसपेक्ट जिन्हें इस एट्रिब्यूट से तय की गई डिपेंडेंसी या डिपेंडेंसी पर लागू किया जाना चाहिए.

label_list

Attribute attr.label_list(allow_empty=True, *, configurable=unbound, default=[], materializer=None, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, skip_validations=False, cfg=None, aspects=[])

यह फ़ंक्शन, लेबल की सूची वाले एट्रिब्यूट के लिए स्कीमा बनाता है. यह एक डिपेंडेंसी एट्रिब्यूट है. इससे जुड़ा ctx.attr एट्रिब्यूट, Targets की list टाइप का होगा.

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

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

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default Label का sequence; या function; डिफ़ॉल्ट रूप से []
होता है अगर नियम को इंस्टैंटिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू. डिफ़ॉल्ट वैल्यू तय करने के लिए, स्ट्रिंग या Label फ़ंक्शन का इस्तेमाल करें. उदाहरण के लिए, attr.label_list(default = ["//a:b", "//a:c"]).
materializer function; डिफ़ॉल्ट रूप से None
होता है एक्सपेरिमेंट के तौर पर उपलब्ध है. यह पैरामीटर एक्सपेरिमेंट के तौर पर उपलब्ध है. इसमें कभी भी बदलाव किया जा सकता है. कृपया इसके भरोसे न रहें. इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है. इसके लिए, --experimental_dormant_deps
को सेट करना होगा. अगर इसे सेट किया जाता है, तो एट्रिब्यूट, ट्रांज़िटिव क्लोज़र से डॉर्मेंट डिपेंडेंसी को मटीरियलाइज़ करता है. इस पैरामीटर की वैल्यू एक ऐसा फ़ंक्शन होना चाहिए जो नियम के उन एट्रिब्यूट की वैल्यू को ऐक्सेस करता है जो डिपेंडेंसी नहीं हैं या जिन्हें डिपेंडेंसी रिज़ॉल्यूशन के लिए उपलब्ध के तौर पर मार्क किया गया है. इसे एट्रिब्यूट के टाइप के आधार पर, या तो डॉर्मेंट डिपेंडेंसी या उनकी सूची दिखानी चाहिए
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
allow_files bool; या string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है क्या File टारगेट की अनुमति है. यह True, False (डिफ़ॉल्ट) या फ़ाइल एक्सटेंशन की ऐसी सूची हो सकती है जिन्हें अनुमति है (उदाहरण के लिए, [".cc", ".cpp"]).
allow_rules string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है नियम के लिए, टारगेट करने की अनुमति वाली क्लास के नाम. इसे बंद कर दिया गया है. इसे सिर्फ़ कंपैटिबिलिटी के लिए रखा गया है. इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
providers sequence; डिफ़ॉल्ट रूप से []
होता है इस एट्रिब्यूट में दिखने वाली किसी भी डिपेंडेंसी के लिए, सेवा देने वाली कंपनियों की जानकारी देना ज़रूरी है.

इस आर्ग्युमेंट का फ़ॉर्मैट, प्रोवाइडर की सूचियों की सूची होती है. यह provider() से मिले *Info ऑब्जेक्ट होते हैं. हालांकि, लेगसी प्रोवाइडर के मामले में, यह उसका स्ट्रिंग नाम होता है. डिपेंडेंसी को, कम से कम एक इनर लिस्ट में बताए गए सभी प्रोवाइडर की जानकारी देनी होगी. सुविधा के लिए, यह आर्ग्युमेंट प्रोवाइडर की एक लेवल वाली सूची भी हो सकता है. ऐसे में, इसे एक एलिमेंट वाली बाहरी सूची में रैप किया जाता है. इसका मतलब है कि [A, B] का मतलब [[A, B]] है. यह ज़रूरी नहीं है कि डिपेंडेंसी का नियम, अपने provides पैरामीटर में उन प्रोवाइडर का विज्ञापन दिखाए. हालांकि, इसे सबसे सही तरीका माना जाता है.

for_dependency_resolution डिफ़ॉल्ट तौर पर unbound
होता है इसे सेट करने पर, एट्रिब्यूट, मटीरियलाइज़र के लिए उपलब्ध होता है. इस तरह के एट्रिब्यूट के ज़रिए, सिर्फ़ उन नियमों को रेफ़रंस किया जा सकता है जिन्हें एक ही नाम वाले फ़्लैग से मार्क किया गया है.
flags sequence of strings; डिफ़ॉल्ट तौर पर []
होता है अब इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
skip_validations bool; डिफ़ॉल्ट तौर पर False
होता है अगर सही है, तो इस एट्रिब्यूट से ट्रांज़िटिव डिपेंडेंसी की पुष्टि करने वाली कार्रवाइयां नहीं चलेंगी. यह समस्या को कुछ समय के लिए ठीक करने का तरीका है. आने वाले समय में इसे हटा दिया जाएगा.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "exec" हो सकता है, जिसका मतलब है कि डिपेंडेंसी execution platform के लिए बनाई गई है. इसके अलावा, यह "target" भी हो सकता है, जिसका मतलब है कि डिपेंडेंसी target platform के लिए बनाई गई है. मोबाइल ऐप्लिकेशन बनाते समय, इस अंतर का एक सामान्य उदाहरण यह है कि target platform, Android या iOS होता है, जबकि execution platform, Linux, macOS या Windows होता है.
aspects sequence of Aspects; डिफ़ॉल्ट रूप से []
होता है ऐसे आसपेक्ट जिन्हें इस एट्रिब्यूट से तय की गई डिपेंडेंसी या डिपेंडेंसी पर लागू किया जाना चाहिए.

आउटपुट

Attribute attr.output(doc=None, mandatory=False)

यह फ़ंक्शन, आउटपुट (लेबल) एट्रिब्यूट के लिए स्कीमा बनाता है.

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

विश्लेषण के समय, ctx.outputs का इस्तेमाल करके, इससे जुड़ा File वापस पाया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.

output_list

Attribute attr.output_list(allow_empty=True, *, doc=None, mandatory=False)

यह फ़ंक्शन, लिस्ट-ऑफ़-आउटपुट एट्रिब्यूट के लिए स्कीमा बनाता है.

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

विश्लेषण के समय, ctx.outputs का इस्तेमाल करके, इससे जुड़ा File वापस पाया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.

स्ट्रिंग

Attribute attr.string(configurable=unbound, default='', doc=None, mandatory=False, values=[])

यह string एट्रिब्यूट के लिए स्कीमा बनाता है.

पैरामीटर

पैरामीटर ब्यौरा
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default string; या NativeComputedDefault; डिफ़ॉल्ट वैल्यू ''
है यह डिफ़ॉल्ट वैल्यू तब इस्तेमाल की जाती है, जब नियम को लागू करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
values string का sequence; डिफ़ॉल्ट रूप से []
होता है यह एट्रिब्यूट के लिए, अनुमति वाली वैल्यू की सूची होती है. कोई दूसरी वैल्यू देने पर गड़बड़ी का मैसेज दिखता है.

string_dict

Attribute attr.string_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

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

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default dict; डिफ़ॉल्ट तौर पर {}
होता है यह एक डिफ़ॉल्ट वैल्यू है. इसका इस्तेमाल तब किया जाता है, जब नियम को इंस्टैंटिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.

string_keyed_label_dict

Attribute attr.string_keyed_label_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], for_dependency_resolution=unbound, flags=[], mandatory=False, cfg=None, aspects=[])

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

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

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

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default dict; या function; डिफ़ॉल्ट रूप से {}
होता है अगर नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू. डिफ़ॉल्ट वैल्यू तय करने के लिए, स्ट्रिंग या Label फ़ंक्शन का इस्तेमाल करें. उदाहरण के लिए, attr.string_keyed_label_dict(default = {"foo": "//a:b", "bar": "//a:c"}).
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
allow_files bool; या string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है क्या File टारगेट की अनुमति है. यह True, False (डिफ़ॉल्ट) या फ़ाइल एक्सटेंशन की ऐसी सूची हो सकती है जिन्हें अनुमति है (उदाहरण के लिए, [".cc", ".cpp"]).
allow_rules string का sequence; या None; डिफ़ॉल्ट रूप से None
होता है नियम के लिए, टारगेट करने की अनुमति वाली क्लास के नाम. इसे बंद कर दिया गया है. इसे सिर्फ़ कंपैटिबिलिटी के लिए रखा गया है. इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
providers sequence; डिफ़ॉल्ट रूप से []
होता है इस एट्रिब्यूट में दिखने वाली किसी भी डिपेंडेंसी के लिए, सेवा देने वाली कंपनियों की जानकारी देना ज़रूरी है.

इस आर्ग्युमेंट का फ़ॉर्मैट, प्रोवाइडर की सूचियों की सूची होती है. यह provider() से मिले *Info ऑब्जेक्ट होते हैं. हालांकि, लेगसी प्रोवाइडर के मामले में, यह उसका स्ट्रिंग नाम होता है. डिपेंडेंसी को, कम से कम एक इनर लिस्ट में बताए गए सभी प्रोवाइडर की जानकारी देनी होगी. सुविधा के लिए, यह आर्ग्युमेंट प्रोवाइडर की एक लेवल वाली सूची भी हो सकता है. ऐसे में, इसे एक एलिमेंट वाली बाहरी सूची में रैप किया जाता है. इसका मतलब है कि [A, B] का मतलब [[A, B]] है. यह ज़रूरी नहीं है कि डिपेंडेंसी का नियम, अपने provides पैरामीटर में उन प्रोवाइडर का विज्ञापन दिखाए. हालांकि, इसे सबसे सही तरीका माना जाता है.

for_dependency_resolution डिफ़ॉल्ट तौर पर unbound
होता है इसे सेट करने पर, एट्रिब्यूट, मटीरियलाइज़र के लिए उपलब्ध होता है. इस तरह के एट्रिब्यूट के ज़रिए, सिर्फ़ उन नियमों को रेफ़रंस किया जा सकता है जिन्हें एक ही नाम वाले फ़्लैग से मार्क किया गया है.
flags sequence of strings; डिफ़ॉल्ट तौर पर []
होता है अब इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "exec" हो सकता है, जिसका मतलब है कि डिपेंडेंसी execution platform के लिए बनाई गई है. इसके अलावा, यह "target" भी हो सकता है, जिसका मतलब है कि डिपेंडेंसी target platform के लिए बनाई गई है. मोबाइल ऐप्लिकेशन बनाते समय, इस अंतर का एक सामान्य उदाहरण यह है कि target platform, Android या iOS होता है, जबकि execution platform, Linux, macOS या Windows होता है.
aspects sequence of Aspects; डिफ़ॉल्ट रूप से []
होता है ऐसे आसपेक्ट जिन्हें इस एट्रिब्यूट से तय की गई डिपेंडेंसी या डिपेंडेंसी पर लागू किया जाना चाहिए.

string_list

Attribute attr.string_list(mandatory=False, allow_empty=True, *, configurable=unbound, default=[], doc=None)

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

पैरामीटर

पैरामीटर ब्यौरा
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default string का sequence; या NativeComputedDefault; डिफ़ॉल्ट वैल्यू []
है यह एक डिफ़ॉल्ट वैल्यू है. इसका इस्तेमाल तब किया जाता है, जब नियम को इंस्टैंशिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.

string_list_dict

Attribute attr.string_list_dict(allow_empty=True, *, configurable=unbound, default={}, doc=None, mandatory=False)

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

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट रूप से True
होता है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो यह वैल्यू सही होती है.
configurable bool; या unbound; डिफ़ॉल्ट रूप से unbound
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबॉलिक मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर configurable को साफ़ तौर पर False पर सेट किया गया है, तो सिंबॉलिक मैक्रो एट्रिब्यूट को कॉन्फ़िगर नहीं किया जा सकता. इसका मतलब है कि यह select() वैल्यू नहीं ले सकता. अगर configurable को अनबाउंड किया गया है या इसे साफ़ तौर पर True पर सेट किया गया है, तो एट्रिब्यूट को कॉन्फ़िगर किया जा सकता है. साथ ही, इसे select() वैल्यू दी जा सकती है.

किसी नियम या पहलू के एट्रिब्यूट के लिए, configurable को अनबाउंड छोड़ना होगा. ज़्यादातर Starlark नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर किया जा सकता है. हालांकि, attr.output(), attr.output_list(), और attr.license() नियम एट्रिब्यूट को हमेशा कॉन्फ़िगर नहीं किया जा सकता.

default dict; डिफ़ॉल्ट तौर पर {}
होता है यह एक डिफ़ॉल्ट वैल्यू है. इसका इस्तेमाल तब किया जाता है, जब नियम को इंस्टैंटिएट करते समय इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है.
doc string; या None; डिफ़ॉल्ट तौर पर None
होता है एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर वैल्यू सही है, तो उसे साफ़ तौर पर बताना होगा. भले ही, उसमें default मौजूद हो.