แอตทริบิวต์

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

สร้างสคีมาสำหรับแอตทริบิวต์ป้ายกำกับ นี่คือแอตทริบิวต์การขึ้นต่อกัน

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

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

นอกจากไฟล์ต้นฉบับทั่วไปแล้ว แอตทริบิวต์ประเภทนี้มักใช้เพื่ออ้างอิงถึงเครื่องมือ เช่น คอมไพเลอร์ เครื่องมือดังกล่าวถือเป็นทรัพยากร Dependency เช่นเดียวกับไฟล์ต้นฉบับ หากไม่ต้องการให้ผู้ใช้ระบุป้ายกำกับของเครื่องมือทุกครั้งที่ใช้กฎในไฟล์ BUILD คุณสามารถฮาร์ดโค้ดป้ายกำกับของเครื่องมือ Canonical เป็นค่า 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
หากตั้งค่าไว้ แอตทริบิวต์จะทำให้การอ้างอิงที่ไม่ได้ใช้งานปรากฏขึ้นจากการปิดทรานซิทีฟ ค่าของพารามิเตอร์นี้ต้องเป็นฟังก์ชันที่เข้าถึงค่าของแอตทริบิวต์ของกฎที่ไม่ได้เป็นทรัพยากร Dependency หรือทำเครื่องหมายว่าพร้อมสำหรับการแก้ปัญหาทรัพยากร Dependency โดยจะต้องแสดงผลการอ้างอิงที่ไม่ได้ใช้งานหรือรายการของการอ้างอิงดังกล่าว ทั้งนี้ขึ้นอยู่กับประเภทของแอตทริบิวต์
doc สตริง หรือ None; ค่าเริ่มต้นคือ None
คำอธิบายของแอตทริบิวต์ที่เครื่องมือสร้างเอกสารสามารถดึงข้อมูลได้
executable bool; ค่าเริ่มต้นคือ False
True หากต้องเรียกใช้ทรัพยากร Dependency ซึ่งหมายความว่าป้ายกำกับต้องอ้างอิงถึงไฟล์ที่เรียกใช้งานได้ หรือกฎที่ส่งออกไฟล์ที่เรียกใช้งานได้ เข้าถึงป้ายกำกับด้วย ctx.executable.<attribute_name>
allow_files bool หรือ sequence ของ string หรือ 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 รายการ เพื่อความสะดวก อาร์กิวเมนต์นี้อาจเป็นรายการผู้ให้บริการระดับเดียวด้วย ในกรณีนี้ อาร์กิวเมนต์จะอยู่ในรายการด้านนอกที่มีองค์ประกอบเดียว (เช่น [A, B] หมายถึง [[A, B]]) กฎของการขึ้นต่อกันไม่จำเป็นต้องโฆษณาผู้ให้บริการเหล่านั้นในพารามิเตอร์ provides แต่ถือเป็นแนวทางปฏิบัติแนะนำ

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

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

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

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

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

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 ที่เกี่ยวข้องจะเป็นประเภทlist ของ Targets

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

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

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

เอาต์พุต

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

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

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

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

for_dependency_resolution ค่าเริ่มต้นคือ unbound
หากตั้งค่านี้ไว้ แอตทริบิวต์จะพร้อมใช้งานสำหรับผู้สร้างโมเดล ระบบจะอนุญาตให้มีการอ้างอิงผ่านแอตทริบิวต์ดังกล่าวเฉพาะกฎที่ทำเครื่องหมายด้วยธงที่มีชื่อเดียวกันเท่านั้น
flags ลำดับของสตริง ค่าเริ่มต้นคือ []
เลิกใช้งานแล้วและจะถูกนำออก
mandatory bool; ค่าเริ่มต้นคือ False
หากเป็นจริง จะต้องระบุค่าอย่างชัดเจน (แม้ว่าจะมี default)
cfg ค่าเริ่มต้นคือ None
การกำหนดค่าของแอตทริบิวต์ โดยอาจเป็น "exec" ซึ่งระบุว่าสร้างการอ้างอิงสำหรับ execution platform หรือ "target" ซึ่งระบุว่าสร้างการอ้างอิงสำหรับ target platform ตัวอย่างทั่วไปของความแตกต่างคือเมื่อสร้างแอปบนอุปกรณ์เคลื่อนที่ ซึ่ง target platform คือ Android หรือ iOS ในขณะที่ execution platform คือ Linux, macOS หรือ Windows
aspects ลำดับของ 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)