แอตทริบิวต์

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

int

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

สร้างสคีมาสําหรับแอตทริบิวต์จำนวนเต็ม ค่าต้องอยู่ในช่วง 32 บิตแบบมีเครื่องหมาย แอตทริบิวต์ ctx.attr ที่เกี่ยวข้องจะเป็นประเภท int

พารามิเตอร์

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

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

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

default int; ค่าเริ่มต้นคือ 0
ค่าเริ่มต้นที่จะใช้หากไม่ได้ระบุค่าสำหรับแอตทริบิวต์นี้เมื่อสร้างอินสแตนซ์ของกฎ
doc สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายแอตทริบิวต์ที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
values sequence ของ 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() แสดงผล (หรือในกรณีของผู้ให้บริการเดิม ให้ใช้ชื่อสตริงของผู้ให้บริการ) ทรัพยากร Dependency ต้องแสดงผลผู้ให้บริการทั้งหมดที่กล่าวถึงในรายการภายในอย่างน้อย 1 รายการ อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวเพื่อความสะดวกด้วย ซึ่งในกรณีนี้ ระบบจะรวมไว้ในรายการภายนอกที่มีองค์ประกอบเดียว กฎของ Dependency ไม่จำเป็นต้องโฆษณาผู้ให้บริการเหล่านั้นในพารามิเตอร์ provides แต่ถือเป็นแนวทางปฏิบัติแนะนำ

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่านี้ไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับโปรแกรมสร้าง ระบบจะอนุญาตให้อ้างอิงกฎที่มีเครื่องหมายแฟล็กชื่อเดียวกันผ่านแอตทริบิวต์ดังกล่าวได้เท่านั้น
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 ค่าเริ่มต้นคือ []
ขอบเขตที่ควรนำไปใช้กับทรัพยากร Dependency หรือทรัพยากร Dependency ที่ระบุโดยแอตทริบิวต์นี้
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 ที่เกี่ยวข้อง ซึ่งจะช่วยให้คุณเข้าถึงผู้ให้บริการของข้อกําหนดของเป้าหมายปัจจุบันได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
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; ค่าเริ่มต้นคือ []
ผู้ให้บริการที่ต้องได้รับโดยทรัพยากร Dependency ที่ปรากฏในแอตทริบิวต์นี้

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

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

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

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

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่านี้ไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับโปรแกรมสร้าง ระบบจะอนุญาตให้อ้างอิงกฎที่มีเครื่องหมายแฟล็กชื่อเดียวกันผ่านแอตทริบิวต์ดังกล่าวได้เท่านั้น
flags ลำดับ ของสตริง ค่าเริ่มต้นคือ []
ที่เลิกใช้งานแล้ว และจะถูกนำออก
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็น "จริง" ต้องระบุค่านี้อย่างชัดเจน (แม้ว่าจะมี default ก็ตาม)
skip_validations bool; ค่าเริ่มต้นคือ False
หากเป็นจริง จะไม่มีการเรียกใช้การดำเนินการตรวจสอบทรัพยากร Dependency แบบทรานซิทีฟจากแอตทริบิวต์นี้ การดำเนินการนี้เป็นมาตรการบรรเทาชั่วคราวและจะถูกนำออกในอนาคต
cfg default is None
Configuration of the attribute. อาจเป็น "exec" ซึ่งบ่งบอกว่ามีการสร้างทรัพยากร Dependency สำหรับ execution platform หรือ "target" ซึ่งบ่งบอกว่าทรัพยากร Dependency สร้างขึ้นสำหรับ 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
จริงหากแอตทริบิวต์ว่างเปล่าได้
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 สตริง หรือ 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 ที่เกี่ยวข้อง ซึ่งจะช่วยให้คุณเข้าถึงผู้ให้บริการของข้อกําหนดของเป้าหมายปัจจุบันได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
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 รายการ อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวเพื่อความสะดวกด้วย ซึ่งในกรณีนี้ ระบบจะรวมไว้ในรายการภายนอกที่มีองค์ประกอบเดียว กฎของ Dependency ไม่จำเป็นต้องโฆษณาผู้ให้บริการเหล่านั้นในพารามิเตอร์ 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 ค่าเริ่มต้นคือ []
ขอบเขตที่ควรนำไปใช้กับทรัพยากร Dependency หรือทรัพยากร Dependency ที่ระบุโดยแอตทริบิวต์นี้

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 ก็ตาม)