attr

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

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

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

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

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

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

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

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

for_dependency_resolution डिफ़ॉल्ट रूप से unbound
पर सेट होता है अगर यह सेट है, तो एट्रिब्यूट, मटीरियलाइज़र के लिए उपलब्ध होता है. ऐसे एट्रिब्यूट की मदद से, सिर्फ़ एक ही नाम के फ़्लैग वाले नियमों का रेफ़रंस दिया जा सकता है.
flags string का सीक्वेंस; डिफ़ॉल्ट रूप से []
यह काम नहीं करता है, इसे हटा दिया जाएगा.
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 Aspect का क्रम; []
ऐसे आसपेक्ट हैं जिन्हें इस एट्रिब्यूट की तय की गई डिपेंडेंसी या डिपेंडेंसी पर लागू किया जाना चाहिए.

आउटपुट

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

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

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

विश्लेषण के समय, संबंधित File को ctx.outputs का इस्तेमाल करके वापस पाया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
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 स्ट्रिंग या 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 string या 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 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
होता है इस आर्ग्युमेंट को सिर्फ़ सिंबल मैक्रो के एट्रिब्यूट के लिए तय किया जा सकता है.

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

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

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