attr

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

सदस्य

बूल

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

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

पैरामीटर

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

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

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

default bool; डिफ़ॉल्ट False
है नियम को लागू करते समय, अगर इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू.
doc स्ट्रिंग या 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
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबल मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

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

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

default int; डिफ़ॉल्ट 0
नियम को लागू करते समय, अगर इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू.
doc स्ट्रिंग या 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
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबल मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

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

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

default int का sequence; डिफ़ॉल्ट []
है नियम को लागू करते समय, अगर इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू.
doc स्ट्रिंग या 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
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबल मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर 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 स्ट्रिंग या None; डिफ़ॉल्ट तौर पर None
एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
executable bool; डिफ़ॉल्ट रूप से False
पर सेट होती है अगर डिपेंडेंसी को चलाया जा सकता है, तो 'सही' पर सेट करें. इसका मतलब है कि लेबल में किसी एक्ज़ीक्यूटेबल फ़ाइल या ऐसे नियम का रेफ़रंस होना चाहिए जो एक्ज़ीक्यूटेबल फ़ाइल को आउटपुट करता हो. ctx.executable.<attribute_name> का इस्तेमाल करके लेबल को ऐक्सेस करें.
allow_files bool; या स्ट्रिंग का क्रम; या 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 ऑब्जेक्ट (या लेगसी सेवा देने वाली कंपनी के मामले में, उसका स्ट्रिंग नाम). डिपेंडेंसी, कम से कम एक इनर सूची में बताए गए सभी प्रोवाइडर दिखानी चाहिए. सुविधा के लिए, यह आर्ग्युमेंट सेवा देने वाली कंपनियों की एक-लेवल की सूची भी हो सकती है. इस मामले में, इसे एक एलिमेंट वाली बाहरी सूची में लपेटा जाता है. यह ज़रूरी नहीं है कि डिपेंडेंसी का नियम, अपने provides पैरामीटर में उन प्रोवाइडर का विज्ञापन करे. हालांकि, इसे सबसे सही तरीका माना जाता है.

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

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, cfg=None, aspects=[])

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

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

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

पैरामीटर

पैरामीटर ब्यौरा
allow_empty bool; डिफ़ॉल्ट तौर पर, इसकी वैल्यू True
होती है अगर एट्रिब्यूट की वैल्यू खाली हो सकती है, तो इसकी वैल्यू 'सही' होनी चाहिए.
configurable bool या अनबाउंड; डिफ़ॉल्ट तौर पर 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 स्ट्रिंग या None; डिफ़ॉल्ट तौर पर None
एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
allow_files bool; या स्ट्रिंग का क्रम; या None; डिफ़ॉल्ट रूप से None
क्या File टारगेट की अनुमति है. यह True, False (डिफ़ॉल्ट) या अनुमति वाले फ़ाइल एक्सटेंशन की सूची हो सकती है. उदाहरण के लिए, [".cc", ".cpp"].
allow_rules स्ट्रिंग का क्रम या None; डिफ़ॉल्ट रूप से None
किन नियम टारगेट (क्लास का नाम) की अनुमति है. इसे बंद कर दिया गया है (सिर्फ़ काम करने के लिए रखा गया है). इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
providers sequence; डिफ़ॉल्ट []
है इस एट्रिब्यूट में दिखने वाली किसी भी डिपेंडेंसी से, ये प्रोवाइडर दिए जाने चाहिए.

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

for_dependency_resolution डिफ़ॉल्ट रूप से unbound
पर सेट होता है अगर यह सेट है, तो एट्रिब्यूट, मटीरियलाइज़र के लिए उपलब्ध होता है. ऐसे एट्रिब्यूट की मदद से, सिर्फ़ एक ही नाम के फ़्लैग वाले नियमों का रेफ़रंस दिया जा सकता है.
flags स्ट्रिंग का क्रम; डिफ़ॉल्ट रूप से []
होता है इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर यह 'सही है' है, तो वैल्यू साफ़ तौर पर बताई जानी चाहिए. भले ही, उसमें default हो.
cfg डिफ़ॉल्ट रूप से, एट्रिब्यूट का कॉन्फ़िगरेशन None
होता है. यह "exec" या "target" हो सकता है. "exec" से पता चलता है कि डिपेंडेंसी, execution platform के लिए बनाई गई है. वहीं, "target" से पता चलता है कि डिपेंडेंसी, target platform के लिए बनाई गई है. मोबाइल ऐप्लिकेशन बनाते समय, इस अंतर का एक अच्छा उदाहरण है. यहां target platform, Android या iOS होता है, जबकि execution platform, Linux, macOS या Windows होता है.
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 एट्रिब्यूट, Target की सूची टाइप का होगा.

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

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

पैरामीटर

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

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

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

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

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

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

आउटपुट

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

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

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

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

पैरामीटर

पैरामीटर ब्यौरा
doc स्ट्रिंग या 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 स्ट्रिंग या None; डिफ़ॉल्ट तौर पर None
एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
mandatory bool; डिफ़ॉल्ट वैल्यू False
है अगर यह 'सही है' है, तो वैल्यू साफ़ तौर पर बताई जानी चाहिए. भले ही, उसमें default हो.

स्ट्रिंग

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

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

पैरामीटर

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

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

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

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

string_dict

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

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

पैरामीटर

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

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

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

default dict; डिफ़ॉल्ट {}
नियम को लागू करते समय, अगर इस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी जाती है, तो इस्तेमाल करने के लिए डिफ़ॉल्ट वैल्यू.
doc स्ट्रिंग या 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
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबल मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

अगर 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 स्ट्रिंग या None; डिफ़ॉल्ट तौर पर None
एट्रिब्यूट की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है.
allow_files bool; या स्ट्रिंग का क्रम; या None; डिफ़ॉल्ट रूप से None
क्या File टारगेट की अनुमति है. यह True, False (डिफ़ॉल्ट) या अनुमति वाले फ़ाइल एक्सटेंशन की सूची हो सकती है. उदाहरण के लिए, [".cc", ".cpp"].
allow_rules स्ट्रिंग का क्रम या None; डिफ़ॉल्ट रूप से None
किन नियम टारगेट (क्लास का नाम) की अनुमति है. इसे बंद कर दिया गया है (सिर्फ़ काम करने के लिए रखा गया है). इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
providers sequence; डिफ़ॉल्ट []
है इस एट्रिब्यूट में दिखने वाली किसी भी डिपेंडेंसी से, ये प्रोवाइडर दिए जाने चाहिए.

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

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

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

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

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

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

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

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