แอตทริบิวต์

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

นี่คือโมดูลระดับบนสุดสำหรับการกำหนดสคีมาแอตทริบิวต์ของกฎหรือแง่มุม แต่ละฟังก์ชันจะแสดงผลออบเจ็กต์ที่แสดงสคีมาของแอตทริบิวต์เดียว ออบเจ็กต์เหล่านี้จะใช้เป็นค่าของอาร์กิวเมนต์พจนานุกรม attrs ของ rule(), aspect(), repository_rule() และ tag_class()

ดูข้อมูลเพิ่มเติมเกี่ยวกับการกําหนดและการใช้แอตทริบิวต์ได้ในหน้ากฎ

สมาชิก

บูลีน

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 สตริง หรือ 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 สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
values ลำดับของ int ค่าเริ่มต้นคือ []
นี่คือรายการค่าที่อนุญาตสำหรับแอตทริบิวต์ ระบบจะแสดงข้อผิดพลาดหากระบุค่าอื่น

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
True หากแอตทริบิวต์ว่างได้
configurable bool หรือ unbound ค่าเริ่มต้นคือ unbound
คุณระบุอาร์กิวเมนต์นี้ได้สำหรับแอตทริบิวต์ของมาโครเชิงสัญลักษณ์เท่านั้น

หากตั้งค่า configurable เป็น False อย่างชัดแจ้ง แอตทริบิวต์มาโครเชิงสัญลักษณ์จะไม่สามารถกําหนดค่าได้ กล่าวคือจะใช้ค่า select() ไม่ได้ หาก configurable ไม่ได้เชื่อมโยงหรือตั้งค่าเป็น True อย่างชัดแจ้ง แอตทริบิวต์จะกําหนดค่าได้และใช้ค่า select() ได้

สำหรับแอตทริบิวต์ของกฎหรือแง่มุม configurable ต้องไม่มีการเชื่อมโยง แอตทริบิวต์กฎ Starlark ส่วนใหญ่กำหนดค่าได้เสมอ ยกเว้นแอตทริบิวต์กฎ attr.output(), attr.output_list() และ attr.license() ซึ่งกำหนดค่าไม่ได้เสมอ

default ลําดับของ int ค่าเริ่มต้นคือ []
ค่าเริ่มต้นที่จะใช้หากไม่ได้ระบุค่าสําหรับแอตทริบิวต์นี้เมื่อสร้างอินสแตนซ์ของกฎ
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=[])

สร้างสคีมาสําหรับแอตทริบิวต์ป้ายกํากับ นี่เป็นแอตทริบิวต์ของทรัพยากร Dependency

แอตทริบิวต์นี้มีค่า 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
หากตั้งค่าไว้ แอตทริบิวต์จะแสดงรายการที่ขึ้นต่อกันและกันซึ่งอยู่ในสถานะ "หยุดทำงาน" จาก Closure แบบทรานซิทีฟ ค่าของพารามิเตอร์นี้ต้องเป็นฟังก์ชันที่เข้าถึงค่าของแอตทริบิวต์ของกฎที่ไม่ใช่ข้อกําหนดหรือมีการทําเครื่องหมายว่าพร้อมสําหรับการแก้ไขข้อกําหนด โดยจะต้องแสดงผลเป็นรายการของทรัพยากร หรือไม่ก็ทรัพยากรที่หยุดทำงานอยู่ ทั้งนี้ขึ้นอยู่กับประเภทของแอตทริบิวต์
doc สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
executable bool; ค่าเริ่มต้นคือ False
True หากต้องสามารถเรียกใช้ข้อมูลดังกล่าวได้ ซึ่งหมายความว่าป้ายกำกับต้องอ้างอิงถึงไฟล์ที่ปฏิบัติการได้ หรือกฎที่แสดงผลไฟล์ที่ปฏิบัติการได้ เข้าถึงป้ายกำกับด้วย 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; ค่าเริ่มต้นคือ []
ผู้ให้บริการที่ต้องระบุโดยข้อกําหนดใดๆ ที่ปรากฏในแอตทริบิวต์นี้

รูปแบบของอาร์กิวเมนต์นี้คือลิสต์ของลิสต์ผู้ให้บริการ ซึ่งเป็นออบเจ็กต์ *Info ที่ provider() แสดงผล (หรือในกรณีของผู้ให้บริการเดิม ให้ใช้ชื่อสตริงของผู้ให้บริการ) รายการดังกล่าวต้องแสดงผู้ให้บริการทั้งหมดที่กล่าวถึงในรายการย่อยอย่างน้อย 1 รายการ อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวเพื่อความสะดวกด้วย ซึ่งในกรณีนี้ ระบบจะรวมไว้ในรายการภายนอกที่มีองค์ประกอบเดียว กฎของข้อกําหนดนี้ไม่จําเป็นต้องแสดงผู้ให้บริการเหล่านั้นในพารามิเตอร์ provides แต่ถือเป็นแนวทางปฏิบัติแนะนำ

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่านี้ไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับโปรแกรมสร้าง ระบบจะอนุญาตให้อ้างอิงเฉพาะกฎที่มีการทำเครื่องหมายด้วย Flag ที่มีชื่อเดียวกันผ่านแอตทริบิวต์ดังกล่าว
allow_rules ลําดับของ สตริง หรือ None หรือ ค่าเริ่มต้นคือ None
ซึ่งกฎเป้าหมาย (ชื่อของคลาส) ที่ได้รับอนุญาต การตั้งค่านี้เลิกใช้งานแล้ว (เก็บไว้เพื่อใช้งานร่วมกันได้เท่านั้น) ให้ใช้ผู้ให้บริการแทน
cfg default is None
Configuration of the attribute. ซึ่งอาจเป็น "exec" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ execution platform หรือ "target" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ target platform ตัวอย่างทั่วไปของความแตกต่างคือการสร้างแอปบนอุปกรณ์เคลื่อนที่ โดยที่ target platform คือ Android หรือ iOS ส่วน execution platform คือ Linux, macOS หรือ Windows พารามิเตอร์นี้จําเป็นหาก executable เป็น True เพื่อป้องกันการสร้างเครื่องมือโฮสต์ในการกําหนดค่าเป้าหมายโดยไม่ตั้งใจ "target" ไม่มีผลเชิงความหมาย ดังนั้นอย่าตั้งค่าเมื่อ executable เป็น False เว้นแต่ว่าจะช่วยชี้แจงเจตนาของคุณได้จริงๆ
aspects ลําดับของ Aspect ค่าเริ่มต้นคือ []
Aspect ที่ควรใช้กับ Dependency หรือ Dependencies ที่ระบุโดยแอตทริบิวต์นี้
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=[])

สร้างสคีมาสําหรับแอตทริบิวต์ที่มีพจนานุกรม โดยที่คีย์คือป้ายกํากับและค่าคือสตริง นี่เป็นแอตทริบิวต์ของทรัพยากร Dependency

แอตทริบิวต์นี้มีค่า Label ที่ไม่ซ้ำกัน หากระบุสตริงแทน Label ระบบจะแปลงสตริงโดยใช้เครื่องมือสร้างป้ายกำกับ ระบบจะแก้ไขส่วนที่สัมพันธ์กันของเส้นทางป้ายกำกับ ซึ่งรวมถึงที่เก็บ (อาจเปลี่ยนชื่อ) โดยอิงตามแพ็กเกจของเป้าหมายที่สร้างขึ้น

ในเวลาวิเคราะห์ (ภายในฟังก์ชันการใช้งานของกฎ) เมื่อดึงค่าแอตทริบิวต์จาก ctx.attr ระบบจะแทนที่ป้ายกํากับด้วย Target ที่เกี่ยวข้อง ซึ่งจะช่วยให้คุณเข้าถึงผู้ให้บริการของ Dependency ของเป้าหมายปัจจุบันได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
allow_empty bool; ค่าเริ่มต้นคือ True
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 สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
allow_files bool หรือลําดับสตริง หรือ None ค่าเริ่มต้นคือ None
อนุญาตให้ใช้เป้าหมาย File หรือไม่ อาจเป็น True, False (ค่าเริ่มต้น) หรือรายการนามสกุลไฟล์ที่อนุญาต (เช่น [".cc", ".cpp"])
allow_rules ลําดับของ สตริง หรือ None หรือ ค่าเริ่มต้นคือ None
ซึ่งกฎเป้าหมาย (ชื่อของคลาส) ได้รับอนุญาต การตั้งค่านี้เลิกใช้งานแล้ว (เก็บไว้เพื่อใช้งานร่วมกันได้เท่านั้น) ให้ใช้ผู้ให้บริการแทน
providers sequence; ค่าเริ่มต้นคือ []
ผู้ให้บริการที่ต้องระบุโดยข้อกําหนดใดๆ ที่ปรากฏในแอตทริบิวต์นี้

รูปแบบของอาร์กิวเมนต์นี้คือลิสต์ของลิสต์ผู้ให้บริการ ซึ่งเป็นออบเจ็กต์ *Info ที่ provider() แสดงผล (หรือในกรณีของผู้ให้บริการเดิม ให้ใช้ชื่อสตริงของผู้ให้บริการ) รายการดังกล่าวต้องแสดงผู้ให้บริการทั้งหมดที่กล่าวถึงในรายการย่อยอย่างน้อย 1 รายการ อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวเพื่อความสะดวกด้วย ซึ่งในกรณีนี้ ระบบจะรวมไว้ในรายการภายนอกที่มีองค์ประกอบเดียว กฎของข้อกําหนดนี้ไม่จําเป็นต้องโฆษณาผู้ให้บริการเหล่านั้นในพารามิเตอร์ provides แต่ถือเป็นแนวทางปฏิบัติแนะนำ

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่าไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับโปรแกรมสร้าง ระบบจะอนุญาตให้อ้างอิงเฉพาะกฎที่มีการทำเครื่องหมายด้วย Flag ที่มีชื่อเดียวกันผ่านแอตทริบิวต์ดังกล่าว
flags ลําดับสตริง ค่าเริ่มต้นคือ []
เลิกใช้งานแล้วและจะถูกนําออก
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
cfg default is None
Configuration of the attribute. ซึ่งอาจเป็น "exec" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ execution platform หรือ "target" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ target platform ตัวอย่างทั่วไปของความแตกต่างคือการสร้างแอปบนอุปกรณ์เคลื่อนที่ โดยที่ target platform คือ Android หรือ iOS ส่วน execution platform คือ Linux, macOS หรือ Windows
aspects ลําดับของ Aspect ค่าเริ่มต้นคือ []
Aspect ที่ควรใช้กับ Dependency หรือ Dependencies ที่ระบุโดยแอตทริบิวต์นี้

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=[])

สร้างสคีมาสำหรับแอตทริบิวต์รายการป้ายกำกับ นี่เป็นแอตทริบิวต์ของทรัพยากร Dependency แอตทริบิวต์ ctx.attr ที่เกี่ยวข้องจะเป็นประเภทลิสต์ของ Target

แอตทริบิวต์นี้มีค่า Label ที่ไม่ซ้ำกัน หากระบุสตริงแทน Label ระบบจะแปลงสตริงโดยใช้เครื่องมือสร้างป้ายกำกับ ระบบจะแก้ไขส่วนที่สัมพันธ์กันของเส้นทางป้ายกำกับ ซึ่งรวมถึงที่เก็บ (อาจเปลี่ยนชื่อ) โดยอิงตามแพ็กเกจของเป้าหมายที่สร้างขึ้น

ในเวลาวิเคราะห์ (ภายในฟังก์ชันการใช้งานของกฎ) เมื่อดึงค่าแอตทริบิวต์จาก ctx.attr ระบบจะแทนที่ป้ายกํากับด้วย Target ที่เกี่ยวข้อง ซึ่งจะช่วยให้คุณเข้าถึงผู้ให้บริการของข้อกําหนดของเป้าหมายปัจจุบันได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
allow_empty bool; ค่าเริ่มต้นคือ True
True หากแอตทริบิวต์ว่างได้
configurable bool หรือ unbound ค่าเริ่มต้นคือ 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
หากตั้งค่าไว้ แอตทริบิวต์จะแสดงรายการที่ขึ้นต่อกันและกันซึ่งอยู่ในสถานะ "หยุดทำงาน" จาก Closure แบบทรานซิทีฟ ค่าของพารามิเตอร์นี้ต้องเป็นฟังก์ชันที่เข้าถึงค่าของแอตทริบิวต์ของกฎที่ไม่ใช่ข้อกําหนดหรือมีการทําเครื่องหมายว่าพร้อมสําหรับการแก้ไขข้อกําหนด โดยจะต้องแสดงผลเป็นรายการของทรัพยากร หรือไม่ก็ทรัพยากรที่หยุดทำงานอยู่ ทั้งนี้ขึ้นอยู่กับประเภทของแอตทริบิวต์
doc สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
allow_files bool หรือลําดับสตริง หรือ None ค่าเริ่มต้นคือ None
อนุญาตให้ใช้เป้าหมาย File หรือไม่ อาจเป็น True, False (ค่าเริ่มต้น) หรือรายการนามสกุลไฟล์ที่อนุญาต (เช่น [".cc", ".cpp"])
allow_rules ลําดับของ สตริง หรือ None หรือ ค่าเริ่มต้นคือ None
ซึ่งกฎเป้าหมาย (ชื่อของคลาส) ที่ได้รับอนุญาต การตั้งค่านี้เลิกใช้งานแล้ว (เก็บไว้เพื่อใช้งานร่วมกันได้เท่านั้น) ให้ใช้ผู้ให้บริการแทน
providers sequence; ค่าเริ่มต้นคือ []
ผู้ให้บริการที่ต้องระบุโดยข้อกําหนดใดๆ ที่ปรากฏในแอตทริบิวต์นี้

รูปแบบของอาร์กิวเมนต์นี้คือลิสต์ของลิสต์ผู้ให้บริการ ซึ่งเป็นออบเจ็กต์ *Info ที่ provider() แสดงผล (หรือในกรณีของผู้ให้บริการเดิม ให้ใช้ชื่อสตริงของผู้ให้บริการ) รายการดังกล่าวต้องแสดงผู้ให้บริการทั้งหมดที่กล่าวถึงในรายการย่อยอย่างน้อย 1 รายการ อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวเพื่อความสะดวกด้วย ซึ่งในกรณีนี้ ระบบจะรวมไว้ในรายการภายนอกที่มีองค์ประกอบเดียว กฎของข้อกําหนดนี้ไม่จําเป็นต้องโฆษณาผู้ให้บริการเหล่านั้นในพารามิเตอร์ provides แต่ถือเป็นแนวทางปฏิบัติแนะนำ

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่านี้ไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับโปรแกรมสร้าง ระบบจะอนุญาตให้อ้างอิงเฉพาะกฎที่มีการทำเครื่องหมายด้วย Flag ที่มีชื่อเดียวกันผ่านแอตทริบิวต์ดังกล่าว
flags ลําดับของ สตริง ค่าเริ่มต้นคือ []
เลิกใช้งานแล้วและจะถูกนําออก
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
skip_validations bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" การดำเนินการตรวจสอบของข้อกำหนดเบื้องต้นแบบทรานซิทีฟจากแอตทริบิวต์นี้จะไม่ทำงาน การดำเนินการนี้เป็นมาตรการบรรเทาชั่วคราวและจะถูกนำออกในอนาคต
cfg default is None
Configuration of the attribute. ซึ่งอาจเป็น "exec" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ execution platform หรือ "target" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ target platform ตัวอย่างทั่วไปของความแตกต่างคือการสร้างแอปบนอุปกรณ์เคลื่อนที่ โดยที่ target platform คือ Android หรือ iOS ส่วน execution platform คือ Linux, macOS หรือ Windows
aspects ลําดับของ Aspect ค่าเริ่มต้นคือ []
Aspect ที่ควรใช้กับ Dependency หรือ Dependencies ที่ระบุโดยแอตทริบิวต์นี้

เอาต์พุต

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

สร้างสคีมาสําหรับแอตทริบิวต์เอาต์พุต (ป้ายกํากับ)

แอตทริบิวต์นี้มีค่า Label ที่ไม่ซ้ำกัน หากระบุสตริงแทน Label ระบบจะแปลงสตริงโดยใช้เครื่องมือสร้างป้ายกำกับ ระบบจะแก้ไขส่วนที่สัมพันธ์กันของเส้นทางป้ายกำกับ ซึ่งรวมถึงที่เก็บ (อาจเปลี่ยนชื่อ) โดยอิงตามแพ็กเกจของเป้าหมายที่สร้างขึ้น

ในเวลาที่วิเคราะห์ คุณสามารถดึงข้อมูล File ที่เกี่ยวข้องได้โดยใช้ ctx.outputs

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
doc สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)

output_list

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

สร้างสคีมาสําหรับแอตทริบิวต์รายการเอาต์พุต

แอตทริบิวต์นี้มีค่า Label ที่ไม่ซ้ำกัน หากระบุสตริงแทน Label ระบบจะแปลงสตริงโดยใช้เครื่องมือสร้างป้ายกำกับ ระบบจะแก้ไขส่วนที่สัมพันธ์กันของเส้นทางป้ายกำกับ ซึ่งรวมถึงที่เก็บ (อาจเปลี่ยนชื่อ) โดยอิงตามแพ็กเกจของเป้าหมายที่สร้างขึ้น

ในเวลาที่วิเคราะห์ คุณสามารถดึงข้อมูล File ที่เกี่ยวข้องได้โดยใช้ ctx.outputs

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
allow_empty bool; ค่าเริ่มต้นคือ True
True หากแอตทริบิวต์ว่างได้
doc สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)

สตริง

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

สร้างสคีมาสําหรับแอตทริบิวต์สตริง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
configurable bool หรือ unbound ค่าเริ่มต้นคือ unbound
คุณระบุอาร์กิวเมนต์นี้ได้สำหรับแอตทริบิวต์ของมาโครเชิงสัญลักษณ์เท่านั้น

หากตั้งค่า configurable เป็น False อย่างชัดแจ้ง แอตทริบิวต์มาโครเชิงสัญลักษณ์จะกำหนดค่าไม่ได้ กล่าวคือจะใช้ค่า select() ไม่ได้ หาก configurable ไม่ได้เชื่อมโยงหรือตั้งค่าเป็น True อย่างชัดแจ้ง แอตทริบิวต์จะกําหนดค่าได้และใช้ค่า select() ได้

สำหรับแอตทริบิวต์ของกฎหรือแง่มุม configurable ต้องไม่มีการเชื่อมโยง แอตทริบิวต์กฎ Starlark ส่วนใหญ่กำหนดค่าได้เสมอ ยกเว้นแอตทริบิวต์กฎ attr.output(), attr.output_list() และ attr.license() ซึ่งกำหนดค่าไม่ได้เสมอ

default สตริง หรือ 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
True หากแอตทริบิวต์ว่างได้
configurable bool หรือ unbound ค่าเริ่มต้นคือ 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=[])

สร้างสคีมาสําหรับแอตทริบิวต์ซึ่งมีค่าเป็นพจนานุกรมที่คีย์คือสตริงและค่าคือป้ายกํากับ นี่เป็นแอตทริบิวต์ของทรัพยากร Dependency

แอตทริบิวต์นี้มีค่า Label ที่ไม่ซ้ำกัน หากระบุสตริงแทน Label ระบบจะแปลงสตริงโดยใช้เครื่องมือสร้างป้ายกำกับ ระบบจะแก้ไขส่วนที่สัมพันธ์กันของเส้นทางป้ายกำกับ ซึ่งรวมถึงที่เก็บ (อาจเปลี่ยนชื่อ) โดยอิงตามแพ็กเกจของเป้าหมายที่สร้างขึ้น

ในเวลาวิเคราะห์ (ภายในฟังก์ชันการใช้งานของกฎ) เมื่อดึงค่าแอตทริบิวต์จาก ctx.attr ระบบจะแทนที่ป้ายกํากับด้วย Target ที่เกี่ยวข้อง ซึ่งจะช่วยให้คุณเข้าถึงผู้ให้บริการของ Dependency ของเป้าหมายปัจจุบันได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
allow_empty bool; ค่าเริ่มต้นคือ True
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 สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
allow_files bool หรือลําดับสตริง หรือ None ค่าเริ่มต้นคือ None
อนุญาตให้ใช้เป้าหมาย File หรือไม่ อาจเป็น True, False (ค่าเริ่มต้น) หรือรายการนามสกุลไฟล์ที่อนุญาต (เช่น [".cc", ".cpp"])
allow_rules ลําดับของ สตริง หรือ None หรือ ค่าเริ่มต้นคือ None
ซึ่งกฎเป้าหมาย (ชื่อของคลาส) ที่ได้รับอนุญาต การตั้งค่านี้เลิกใช้งานแล้ว (เก็บไว้เพื่อใช้งานร่วมกันได้เท่านั้น) ให้ใช้ผู้ให้บริการแทน
providers sequence; ค่าเริ่มต้นคือ []
ผู้ให้บริการที่ต้องระบุโดยข้อกําหนดใดๆ ที่ปรากฏในแอตทริบิวต์นี้

รูปแบบของอาร์กิวเมนต์นี้คือลิสต์ของลิสต์ผู้ให้บริการ ซึ่งเป็นออบเจ็กต์ *Info ที่ provider() แสดงผล (หรือในกรณีของผู้ให้บริการเดิม ให้ใช้ชื่อสตริงของผู้ให้บริการ) รายการดังกล่าวต้องแสดงผู้ให้บริการทั้งหมดที่กล่าวถึงในรายการย่อยอย่างน้อย 1 รายการ อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวเพื่อความสะดวกด้วย ซึ่งในกรณีนี้ ระบบจะรวมไว้ในรายการภายนอกที่มีองค์ประกอบเดียว กฎของข้อกําหนดนี้ไม่จําเป็นต้องแสดงผู้ให้บริการเหล่านั้นในพารามิเตอร์ provides แต่ถือเป็นแนวทางปฏิบัติแนะนำ

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่านี้ไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับโปรแกรมสร้าง ระบบจะอนุญาตให้อ้างอิงเฉพาะกฎที่มีการทำเครื่องหมายด้วย Flag ที่มีชื่อเดียวกันผ่านแอตทริบิวต์ดังกล่าว
flags ลําดับสตริง ค่าเริ่มต้นคือ []
เลิกใช้งานแล้วและจะถูกนําออก
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
cfg default is None
Configuration of the attribute. ซึ่งอาจเป็น "exec" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ execution platform หรือ "target" ซึ่งระบุว่ามีการบิลด์ข้อกำหนดสำหรับ target platform ตัวอย่างทั่วไปของความแตกต่างคือการสร้างแอปบนอุปกรณ์เคลื่อนที่ โดยที่ target platform คือ Android หรือ iOS ส่วน execution platform คือ Linux, macOS หรือ Windows
aspects ลําดับของ Aspect; ค่าเริ่มต้นคือ []
Aspect ที่ควรใช้กับ Dependency หรือ Dependencies ที่ระบุโดยแอตทริบิวต์นี้

string_list

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

สร้างสคีมาสำหรับแอตทริบิวต์รายการสตริง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
allow_empty bool; ค่าเริ่มต้นคือ True
True หากแอตทริบิวต์ว่างได้
configurable bool หรือ unbound ค่าเริ่มต้นคือ unbound
คุณระบุอาร์กิวเมนต์นี้ได้สำหรับแอตทริบิวต์ของมาโครเชิงสัญลักษณ์เท่านั้น

หากตั้งค่า configurable เป็น False อย่างชัดแจ้ง แอตทริบิวต์มาโครเชิงสัญลักษณ์จะกำหนดค่าไม่ได้ กล่าวคือจะใช้ค่า select() ไม่ได้ หาก configurable ไม่ได้เชื่อมโยงหรือตั้งค่าเป็น True อย่างชัดแจ้ง แอตทริบิวต์จะกําหนดค่าได้และใช้ค่า select() ได้

สำหรับแอตทริบิวต์ของกฎหรือแง่มุม configurable ต้องไม่มีการเชื่อมโยง แอตทริบิวต์กฎ Starlark ส่วนใหญ่กำหนดค่าได้เสมอ ยกเว้นแอตทริบิวต์กฎ attr.output(), attr.output_list() และ attr.license() ซึ่งกำหนดค่าไม่ได้เสมอ

default ลําดับของ สตริง หรือ NativeComputedDefault ค่าเริ่มต้นคือ []
ค่าเริ่มต้นที่จะใช้หากไม่ได้ระบุค่าสําหรับแอตทริบิวต์นี้เมื่อสร้างอินสแตนซ์ของกฎ
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
True หากแอตทริบิวต์ว่างได้
configurable bool หรือ unbound ค่าเริ่มต้นคือ 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 ก็ตาม)