แอตทริบิวต์

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