attr

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

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

सदस्य

बूलियन

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

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

पैरामीटर

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

int

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

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

पैरामीटर

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

int_list

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

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

पैरामीटर

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

लेबल

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

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

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

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

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

पैरामीटर

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

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

allow_rules स्ट्रिंग का क्रम; या None; डिफ़ॉल्ट वैल्यू None
है टारगेट के तौर पर किन नियमों या क्लास को इस्तेमाल करने की अनुमति है. इसे बंद कर दिया गया है. इसे सिर्फ़ कंपैटिबिलिटी के लिए रखा गया है. इसके बजाय, प्रोवाइडर का इस्तेमाल करें.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "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, *, default={}, doc=None, allow_files=None, allow_rules=None, providers=[], flags=[], mandatory=False, cfg=None, aspects=[])

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

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

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

पैरामीटर

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

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

flags स्ट्रिंग का क्रम; डिफ़ॉल्ट वैल्यू []
है अब इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.
mandatory डिफ़ॉल्ट वैल्यू False है
अगर यह 'सही' हो, तो वैल्यू साफ़ तौर पर बतानी होगी. भले ही, इसमें default मौजूद हो.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "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, *, default=[], doc=None, allow_files=None, allow_rules=None, providers=[], flags=[], mandatory=False, cfg=None, aspects=[])

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

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

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

पैरामीटर

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

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

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

output_list

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

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

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

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

पैरामीटर

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

स्ट्रिंग

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

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

पैरामीटर

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

string_dict

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

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

पैरामीटर

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

string_keyed_label_dict

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

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

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

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

पैरामीटर

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

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

flags स्ट्रिंग का क्रम; डिफ़ॉल्ट वैल्यू []
है अब इस्तेमाल नहीं किया जा सकता. इसे हटा दिया जाएगा.
mandatory डिफ़ॉल्ट वैल्यू False है
अगर यह 'सही' हो, तो वैल्यू साफ़ तौर पर बतानी होगी. भले ही, इसमें default मौजूद हो.
cfg डिफ़ॉल्ट रूप से None
होता है एट्रिब्यूट का कॉन्फ़िगरेशन. यह "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, *, default=[], doc=None)

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

पैरामीटर

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

string_list_dict

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

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

पैरामीटर

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