ทั่วโลก

ออบเจ็กต์ ฟังก์ชัน และโมดูลที่ลงทะเบียนในสภาพแวดล้อมส่วนกลาง

สมาชิก

ทั้งหมด

bool all(elements)

แสดงผลเป็น "จริง" หากองค์ประกอบทั้งหมดประเมินเป็น "จริง" หรือหากคอลเล็กชันว่างเปล่า ระบบจะแปลงองค์ประกอบเป็นบูลีนโดยใช้ฟังก์ชัน bool
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
elements ต้องระบุ
สตริงหรือคอลเล็กชันขององค์ประกอบ

analysis_test_transition

transition analysis_test_transition(settings)

สร้างการเปลี่ยนการกำหนดค่าเพื่อใช้กับทรัพยากร Dependency ของกฎการวิเคราะห์-การทดสอบ การเปลี่ยนนี้ใช้ได้กับแอตทริบิวต์ของกฎที่มี analysis_test = True เท่านั้น กฎดังกล่าวมีข้อจำกัดในความสามารถ (เช่น ขนาดของแผนผังทรัพยากร Dependency มีจำกัด) ดังนั้นการเปลี่ยนที่สร้างโดยใช้ฟังก์ชันนี้จึงถูกจำกัดในขอบเขตที่เป็นไปได้เมื่อเทียบกับการเปลี่ยนที่สร้างโดยใช้การเปลี่ยน

ฟังก์ชันนี้ออกแบบมาเพื่อช่วยอำนวยความสะดวกในไลบรารีหลักของเฟรมเวิร์กการทดสอบการวิเคราะห์เป็นหลัก ดูแนวทางปฏิบัติแนะนำในเอกสาร (หรือการใช้งาน)

พารามิเตอร์

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

อะไรก็ได้

bool any(elements)

แสดงค่า "จริง" หากองค์ประกอบอย่างน้อย 1 องค์ประกอบประเมินค่าเป็น "จริง" ระบบจะแปลงองค์ประกอบเป็นบูลีนโดยใช้ฟังก์ชัน bool
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
elements ต้องระบุ
สตริงหรือคอลเล็กชันขององค์ประกอบ

archive_override

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

ระบุว่าทรัพยากร Dependency นี้ควรมาจากไฟล์ที่เก็บถาวร (zip, gzip เป็นต้น) ที่ตําแหน่งหนึ่งๆ ไม่ใช่จากรีจิสทรี คำสั่งนี้ใช้ได้เฉพาะในโมดูลรูทเท่านั้น กล่าวคือ หากโมดูลระบุการลบล้างใดก็ตาม จะใช้เป็นทรัพยากร Dependency ของผู้อื่นไม่ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
module_name ต้องระบุ
ชื่อของทรัพยากร Dependency ของโมดูล Bazel ที่จะใช้การลบล้างนี้
urls string; or Iterable of strings ต้องระบุ
URL ของที่เก็บถาวรอาจเป็น URL http(s):// หรือ file://
integrity default = ''
checksum ของไฟล์ที่เก็บถาวรซึ่งอยู่ในรูปแบบ Subresource Integrity
strip_prefix default = ''
คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยกออกมา
patches Iterable of strings; ค่าเริ่มต้น = []
รายการป้ายกำกับที่ชี้ไปยังไฟล์แพตช์ที่จะใช้กับโมดูลนี้ ไฟล์แพตช์ต้องอยู่ในโครงสร้างแหล่งที่มาของโปรเจ็กต์ระดับบนสุด โดยจะใช้ตามลำดับของรายการ
patch_cmds Iterable of strings; default = []
ลำดับของคำสั่ง Bash ที่จะนำไปใช้ใน Linux/Macos หลังจากใช้แพตช์
patch_strip default = 0
เหมือนกับอาร์กิวเมนต์ --strip ของแพตช์ Unix

เฉพาะด้าน

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

สร้างมุมมองใหม่ ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในค่าส่วนกลาง โปรดดูรายละเอียดเพิ่มเติมในข้อมูลเบื้องต้นเกี่ยวกับมุมมอง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
implementation ต้องระบุ
ฟังก์ชัน Starlark ที่นําด้านนี้ไปใช้ โดยมีพารามิเตอร์ 2 รายการ ได้แก่ เป้าหมาย (เป้าหมายที่ใช้ด้านนั้นๆ) และ ctx (บริบทของกฎที่ใช้สร้างเป้าหมาย) แอตทริบิวต์ของเป้าหมายมีให้ใช้งานผ่านช่อง ctx.rule ฟังก์ชันนี้จะได้รับการประเมินในระหว่างช่วงการวิเคราะห์สำหรับการใช้แต่ละแง่มุมกับเป้าหมาย
attr_aspects sequence of strings; ค่าเริ่มต้น = []
รายการชื่อแอตทริบิวต์ ลักษณะเผยแพร่ไปพร้อมกับทรัพยากร Dependency ที่ระบุในแอตทริบิวต์ของเป้าหมายที่ใช้ชื่อเหล่านี้ ค่าทั่วไปในที่นี้ได้แก่ deps และ exports นอกจากนี้ รายการนี้ยังมีสตริง "*" เดียวเพื่อเผยแพร่ในทรัพยากร Dependency ทั้งหมดของเป้าหมาย
attrs dict; or None; ค่าเริ่มต้น = ไม่มี
พจนานุกรมที่ประกาศแอตทริบิวต์ทั้งหมดของการแสดงผล โดยจะจับคู่จากชื่อแอตทริบิวต์กับออบเจ็กต์แอตทริบิวต์ เช่น "attr.label" หรือ "attr.string" (ดูโมดูล attr) แอตทริบิวต์ Aspect ใช้กับฟังก์ชันการใช้งานเป็นช่องของพารามิเตอร์ ctx ได้

แอตทริบิวต์โดยนัยที่ขึ้นต้นด้วย _ ต้องมีค่าเริ่มต้นและเป็นประเภท label หรือ label_list

แอตทริบิวต์ที่ชัดแจ้งต้องมีประเภท string และต้องใช้ข้อจำกัด values แอตทริบิวต์ที่ชัดเจนจะจำกัดขอบเขตที่จะใช้กับกฎที่มีแอตทริบิวต์ชื่อ ประเภท และค่าที่ถูกต้องเหมือนกันตามข้อจำกัดดังกล่าวเท่านั้น

required_providers ค่าเริ่มต้น = []
แอตทริบิวต์นี้อนุญาตให้ส่วนนี้จำกัดการเผยแพร่ไปยังเป้าหมายที่มีกฎในการโฆษณาผู้ให้บริการที่ต้องการเท่านั้น ค่าต้องเป็นรายการที่มีผู้ให้บริการแต่ละรายหรือรายชื่อผู้ให้บริการอย่างใดอย่างหนึ่ง แต่ไม่ใช่ทั้ง 2 อย่าง ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้อง แต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้อง

ระบบจะแปลงรายชื่อผู้ให้บริการที่ไม่ได้ซ้อนเป็นรายชื่อที่มีรายชื่อผู้ให้บริการ 1 รายโดยอัตโนมัติ นั่นคือ [FooInfo, BarInfo] จะแปลงเป็น [[FooInfo, BarInfo]] โดยอัตโนมัติ

หากต้องการให้กฎบางข้อ (เช่น some_rule) ปรากฏแก่แต่ละด้าน some_rule ต้องโฆษณาผู้ให้บริการทั้งหมดจากรายการผู้ให้บริการที่จำเป็นอย่างน้อย 1 รายการ เช่น หาก required_providers ของด้านหนึ่งคือ [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] มุมมองนี้จะเห็นเพียง some_rule เป้าหมายก็ต่อเมื่อ some_rule มี FooInfo *หรือ* BarInfo *หรือ* ทั้ง BazInfo *และ* QuxInfo

required_aspect_providers ค่าเริ่มต้น = []
แอตทริบิวต์นี้ช่วยให้แง่มุมนี้ตรวจสอบด้านอื่นๆ ได้ ค่าต้องเป็นรายการที่มีผู้ให้บริการแต่ละรายหรือรายชื่อผู้ให้บริการอย่างใดอย่างหนึ่ง แต่ไม่ใช่ทั้ง 2 อย่าง ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้อง แต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้อง

ระบบจะแปลงรายชื่อผู้ให้บริการที่ไม่ได้ซ้อนเป็นรายชื่อที่มีรายชื่อผู้ให้บริการ 1 รายโดยอัตโนมัติ นั่นคือ [FooInfo, BarInfo] จะแปลงเป็น [[FooInfo, BarInfo]] โดยอัตโนมัติ

หากต้องการแสดงอีกด้านหนึ่ง (เช่น other_aspect) สำหรับส่วนนี้ other_aspect จะต้องระบุผู้ให้บริการทั้งหมดจากรายการอย่างน้อย 1 รายการ ในตัวอย่างของ [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] มุมมองนี้จะเห็น other_aspect ก็ต่อเมื่อ other_aspect ระบุ FooInfo *หรือ* BarInfo *หรือ* ทั้ง BazInfo *และ* QuxInfo เท่านั้น

provides ค่าเริ่มต้น = []
รายการผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดงผล

นี่เป็นข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นผู้ให้บริการประเภทใดก็ตามที่ระบุไว้ที่นี่ออกจากค่าที่แสดงผล อย่างไรก็ตาม ฟังก์ชันการใช้งานอาจแสดงผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่

องค์ประกอบแต่ละรายการของรายการคือออบเจ็กต์ *Info ที่แสดงผลโดย provider() เว้นแต่ว่าผู้ให้บริการเดิมจะแสดงด้วยชื่อสตริงแทน

requires sequence of Aspects; ค่าเริ่มต้น = []
รายการด้านที่ต้องมีการเผยแพร่ก่อนส่วนนี้
fragments sequence of strings; ค่าเริ่มต้น = []
รายการชื่อ Fragment การกำหนดค่าที่การแสดงผลนี้ต้องใช้ในการกำหนดค่าเป้าหมาย
host_fragments sequence of strings; default = []
รายการชื่อ Fragment การกำหนดค่าที่องค์ประกอบนี้ต้องใช้ในการกำหนดค่าโฮสต์
toolchains sequence; default = []
หากตั้งค่าไว้ ชุดเครื่องมือที่กฎนี้ต้องใช้ รายการนี้อาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi รวมกันแบบใดก็ได้ คุณจะพบเครื่องมือเชนได้โดยการตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการนำกฎไปใช้ผ่านทาง ctx.toolchain
incompatible_use_toolchain_transition ค่าเริ่มต้น = เท็จ
เลิกใช้งานแล้ว ไม่มีการใช้งานอีกต่อไปและควรนำออก
doc default = ''
คำอธิบายด้านต่างๆ ที่เครื่องมือสร้างเอกสารดึงมาได้
apply_to_generating_rules โดยค่าเริ่มต้น = False
หากเป็น "จริง" ลักษณะดังกล่าวจะมีผลกับไฟล์เอาต์พุตกับกฎการสร้างของไฟล์เอาต์พุตแทน

ตัวอย่างเช่น สมมติว่าแง่มุมหนึ่งเผยแพร่แบบเปลี่ยนผ่านผ่านแอตทริบิวต์ "deps" และมีการนำไปใช้กับเป้าหมาย "alpha" สมมติว่า "alpha" มี "deps = [':beta_output"]" โดยที่ "beta_output" เป็นเอาต์พุตที่ประกาศของเป้าหมาย "beta" สมมติว่า "beta" มีการเผยแพร่เป้าหมาย "beta" มีการเผยแพร่ "charlie" เป็นเป้าหมายหนึ่งและมีการใช้ "alpha_additional" เป็นแอตทริบิวต์ "alpha_apply" เป็น False_rules`

เท็จโดยค่าเริ่มต้น

exec_compatible_with sequence of strings; ค่าเริ่มต้น = []
รายการข้อจำกัดในแพลตฟอร์มการดำเนินการที่ใช้กับอินสแตนซ์ทั้งหมดของส่วนนี้
exec_groups dict; or None; ค่าเริ่มต้น = ไม่มี
ตามคำบอกชื่อกลุ่มการดำเนินการ (สตริง) เป็น exec_groups หากมีการตั้งค่า จะทำให้แง่มุมต่างๆ เรียกใช้การดำเนินการบนแพลตฟอร์มการดำเนินการหลายแพลตฟอร์มได้ภายในอินสแตนซ์เดียว โปรดดูข้อมูลเพิ่มเติมในเอกสารของกลุ่มการดำเนินการ

bazel_dep

None bazel_dep(name, version='', repo_name='', dev_dependency=False)

ประกาศการพึ่งพาโมดูล Bazel อื่นโดยตรง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
name ต้องระบุ
ชื่อของโมดูลที่จะเพิ่มเป็นแบบอ้างอิงโดยตรง
version default = ''
เวอร์ชันของโมดูลที่จะเพิ่มเป็นแบบอ้างอิงโดยตรง
repo_name default = ''
ชื่อของที่เก็บภายนอกที่แสดงถึงทรัพยากร Dependency นี้ นี่คือชื่อของโมดูลโดยค่าเริ่มต้น
dev_dependency ค่าเริ่มต้น = False
หากเป็น "จริง" ระบบจะไม่สนใจทรัพยากร Dependency นี้หากโมดูลปัจจุบันไม่ใช่โมดูลรูทหรือเปิดใช้ "--ignore_dev_dependency"

bind

None bind(name, actual=None)

คำเตือน: ไม่แนะนำให้ใช้ bind() ดูพิจารณานำการเชื่อมโยงออกสำหรับการสนทนาที่ใช้เวลานานเกี่ยวกับปัญหาและทางเลือกต่างๆ

กำหนดชื่อแทนให้เป้าหมายในแพ็กเกจ //external

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
name ต้องระบุ
ป้ายกํากับในส่วน "//external" จะแสดงเป็นชื่อแทน
actual string; or None; ค่าเริ่มต้น = ไม่มี
ป้ายกำกับจริงที่จะใช้เป็นชื่อแทน

bool

bool bool(x=False)

ตัวสร้างสำหรับประเภทบูลีน และแสดงผล False หากออบเจ็กต์คือ None, False, สตริงว่าง (""), หมายเลข 0 หรือคอลเล็กชันที่ว่างเปล่า (เช่น (), []) มิเช่นนั้นจะแสดงผล True

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x default = False
ตัวแปรที่จะแปลง

configuration_field

LateBoundDefault configuration_field(fragment, name)

อ้างอิงค่าเริ่มต้นที่มีขอบเขตล่าช้าสำหรับแอตทริบิวต์ประเภท label ค่าจะเป็น 'late-bound' หากต้องมีการกำหนดค่าก่อนกำหนดค่า แอตทริบิวต์ที่ใช้ค่านี้เป็นค่าต้องเป็นแบบส่วนตัว

ตัวอย่างการใช้:

การกำหนดแอตทริบิวต์ของกฎ:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

การเข้าถึงในการใช้งานกฎ:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
fragment ต้องระบุ
ชื่อของส่วนย่อยการกำหนดค่าซึ่งมีค่าที่ขอบเขตส่งท้าย
name ต้องระบุ
ชื่อของค่าที่จะรับจาก Fragment การกำหนดค่า

Depset

depset depset(direct=None, order="default", *, transitive=None)

สร้าง Depset พารามิเตอร์ direct คือรายการองค์ประกอบโดยตรงของ Depset และพารามิเตอร์ transitive คือรายการของ Depset ที่มีองค์ประกอบกลายเป็นองค์ประกอบโดยอ้อมของ Depset ที่สร้างขึ้น พารามิเตอร์ order จะระบุลำดับการส่งคืนองค์ประกอบเมื่อแปลง Depset เป็นรายการ ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของรายการ

องค์ประกอบทั้งหมด (โดยตรงและโดยอ้อม) ของดีเซตต้องเป็นประเภทเดียวกัน ตามที่ได้รับจากนิพจน์ type(x)

เนื่องจากชุดที่ใช้แฮชใช้เพื่อกำจัดข้อมูลซ้ำระหว่างทำซ้ำ องค์ประกอบทั้งหมดของ Depset จึงควรแฮชได้ อย่างไรก็ตาม ปัจจุบันค่าไม่แปรผันนี้ยังไม่ได้รับการตรวจสอบอย่างสม่ำเสมอในตัวสร้างทั้งหมด ใช้แฟล็ก --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน นี่จะเป็นลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313

นอกจากนี้ องค์ประกอบต่างๆ จะต้องเปลี่ยนแปลงไม่ได้ในปัจจุบัน แม้ว่าจะมีการผ่อนปรนข้อจำกัดนี้ในอนาคต

ลำดับของ Depset ที่สร้างควรใช้ร่วมกันได้กับลำดับของ Depset transitive คำสั่งซื้อ "default" ใช้ร่วมกับคำสั่งซื้ออื่นๆ ได้ คำสั่งซื้ออื่นๆ ทั้งหมดจะใช้ร่วมกับคำสั่งซื้ออื่นได้เท่านั้น

หมายเหตุเกี่ยวกับความเข้ากันได้แบบย้อนหลัง/ไปข้างหน้า ขณะนี้ฟังก์ชันนี้ยอมรับพารามิเตอร์ items ตามตำแหน่ง เลิกใช้งานและนําออกในอนาคตแล้ว direct จะกลายเป็นพารามิเตอร์ตําแหน่งเดียวของฟังก์ชัน depset หลังจากนําออกแล้ว ดังนั้น การโทรทั้ง 2 แบบต่อไปนี้จึงมีความหมายและรองรับการใช้งานในอนาคต

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
direct sequence; or None; ค่าเริ่มต้น = ไม่มี
รายการองค์ประกอบโดยตรงของดีเซต
order default = "default"
กลยุทธ์การส่งผ่านสำหรับการลดระดับใหม่ ดูค่าที่เป็นไปได้ที่นี่
transitive sequence of depsets; or None; ค่าเริ่มต้น = ไม่มี
รายการของ Depset ที่องค์ประกอบจะกลายเป็นองค์ประกอบทางอ้อมของ Depset

dict

dict dict(pairs=[], **kwargs)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
pairs ค่าเริ่มต้น = []
คำสั่งหรือแบบซ้ำได้ซึ่งมีองค์ประกอบที่มีความยาวแต่ละองค์ประกอบเป็น 2 (คีย์, ค่า)
kwargs ต้องระบุ
พจนานุกรมของรายการเพิ่มเติม

ไดเรกทอรี

list dir(x)

แสดงรายการสตริง: ชื่อแอตทริบิวต์และเมธอดของออบเจ็กต์พารามิเตอร์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
ออบเจ็กต์ที่จะตรวจสอบ

แจกแจง

list enumerate(list, start=0)

แสดงรายการคู่ (Tuples สององค์ประกอบ) พร้อมดัชนี (int) และรายการจากลำดับอินพุต
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
list ต้องระบุ
ลำดับอินพุต
start ค่าเริ่มต้น = 0
ดัชนีเริ่มต้น

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)

สร้างกลุ่มการดำเนินการที่ใช้สร้างการดำเนินการสำหรับแพลตฟอร์มการดำเนินการที่เจาะจงระหว่างการใช้งานกฎได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
toolchains sequence; default = []
ชุดเครื่องมือเชนที่กลุ่มการดำเนินการนี้ต้องการ รายการนี้อาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi รวมกันแบบใดก็ได้
exec_compatible_with sequence of strings; ค่าเริ่มต้น = []
รายการข้อจำกัดในแพลตฟอร์มการดำเนินการ
copy_from_rule ค่าเริ่มต้น = เท็จ
หากตั้งค่าเป็น "จริง" กลุ่มปฏิบัติการนี้จะรับค่า Toolchains และข้อจำกัดของกฎที่มีกลุ่มนี้แนบอยู่ หากตั้งค่าเป็นสตริงอื่นจะทำให้เกิดข้อผิดพลาด

ไม่ผ่าน

None fail(msg=None, attr=None, *args)

ทำให้การดำเนินการล้มเหลวโดยมีข้อผิดพลาด

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
msg default = ไม่มี
เลิกใช้งานแล้ว: ใช้อาร์กิวเมนต์ตำแหน่งแทน อาร์กิวเมนต์นี้ทำหน้าที่เหมือนอาร์กิวเมนต์ตำแหน่งนำหน้าโดยนัย
attr string; or None ค่าเริ่มต้น = ไม่มี
เลิกใช้งานแล้ว ทำให้มีการเพิ่มคำนำหน้าที่ไม่บังคับซึ่งมีสตริงนี้ในข้อความแสดงข้อผิดพลาด
args ต้องระบุ
รายการค่าที่จัดรูปแบบด้วย str และผนวกด้วยการเว้นวรรคที่ปรากฏในข้อความแสดงข้อผิดพลาด

float

float float(x=unbound)

แสดง x เป็นค่าทศนิยม
  • หาก x เป็นแบบลอยอยู่แล้ว float จะแสดงผลค่าดังกล่าวโดยไม่เปลี่ยนแปลง
  • หาก x เป็นบูลีน float จะแสดงผล 1.0 สำหรับ True และ 0.0 สำหรับ False
  • หาก x เป็น int float จะแสดงผลค่าจุดลอยตัวจำกัดที่ใกล้ที่สุดเป็น x หรือแสดงข้อผิดพลาดหากขนาดใหญ่เกินไป
  • หาก x เป็นสตริง ค่าจะต้องเป็นลิเทอรัลจุดลอยตัวที่ถูกต้อง หรือเท่ากัน (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ถึง NaN, Inf หรือ Infinity โดยจะนำหน้าด้วยเครื่องหมาย + หรือ - ก็ได้
ค่าอื่นๆ จะทำให้เกิดข้อผิดพลาด เมื่อไม่มีอาร์กิวเมนต์ float() จะแสดงผล 0.0

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x default = unbound
ค่าที่จะแปลง

Getattr

unknown getattr(x, name, default=unbound)

แสดงผลฟิลด์ของโครงสร้างของชื่อที่ระบุ (หากมี) ไม่เช่นนั้นก็จะแสดงผล default (หากระบุไว้) หรือเกิดข้อผิดพลาด getattr(x, "foobar") เทียบเท่ากับ x.foobar
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
โครงสร้างที่มีการเข้าถึงแอตทริบิวต์
name ต้องระบุ
ชื่อของแอตทริบิวต์ Struct
default ค่าเริ่มต้น = ยกเลิกการเชื่อมโยง
ค่าเริ่มต้นที่จะแสดงผลในกรณีที่โครงสร้างไม่มีแอตทริบิวต์ของชื่อที่ระบุ

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)

ระบุว่าทรัพยากร Dependency ควรมาจากคอมมิตของที่เก็บ Git คำสั่งนี้ใช้ได้เฉพาะในโมดูลรูทเท่านั้น กล่าวคือ หากโมดูลระบุการลบล้างใดก็ตาม จะใช้เป็นทรัพยากร Dependency ของผู้อื่นไม่ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
module_name ต้องระบุ
ชื่อของทรัพยากร Dependency ของโมดูล Bazel ที่จะใช้การลบล้างนี้
remote ต้องระบุ
URL ของที่เก็บ Git ระยะไกล
commit default = ''
คอมมิตที่ควรตรวจสอบ
patches Iterable of strings; ค่าเริ่มต้น = []
รายการป้ายกำกับที่ชี้ไปยังไฟล์แพตช์ที่จะใช้กับโมดูลนี้ ไฟล์แพตช์ต้องอยู่ในโครงสร้างแหล่งที่มาของโปรเจ็กต์ระดับบนสุด โดยจะใช้ตามลำดับของรายการ
patch_cmds Iterable of strings; default = []
ลำดับของคำสั่ง Bash ที่จะนำไปใช้ใน Linux/Macos หลังจากใช้แพตช์
patch_strip default = 0
เหมือนกับอาร์กิวเมนต์ --strip ของแพตช์ Unix

Hasattr

bool hasattr(x, name)

แสดงผลเป็น "จริง" หากออบเจ็กต์ x มีแอตทริบิวต์หรือเมธอดของ name ที่ระบุ มิเช่นนั้นจะเป็น "เท็จ" ตัวอย่าง
hasattr(ctx.attr, "myattr")

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
ออบเจ็กต์ที่จะตรวจสอบ
name ต้องระบุ
ชื่อของแอตทริบิวต์

แฮช

int hash(value)

แสดงผลค่าแฮชสำหรับสตริง ซึ่งจะคำนวณโดยใช้อัลกอริทึมเดียวกับ String.hashCode() ของ Java กล่าวคือ
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
ขณะนี้ระบบยังไม่รองรับการแฮชค่านอกเหนือจากสตริง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
value ต้องระบุ
ค่าสตริงเพื่อแฮช

int

int int(x, base=unbound)

แสดง x เป็นค่า int
  • หาก x เป็น int อยู่แล้ว int จะแสดงผลค่าไม่เปลี่ยนแปลง
  • หาก x เป็นบูลีน int จะแสดงผล 1 สำหรับ "จริง" และ 0 สำหรับ "เท็จ"
  • หาก x เป็นสตริง ต้องอยู่ในรูปแบบ <sign><prefix><digits> <sign> เป็น "+", "-" หรือว่างเปล่า (ตีความว่าเป็นเชิงบวก) <digits> คือชุดตัวเลขตั้งแต่ 0 ถึง base - 1 โดยตัวอักษร a-z (หรือเทียบเท่า A-Z) จะใช้เป็นตัวเลข 10-35 ในกรณีที่ base คือ 8/2/16 จะมี <prefix> หรือไม่ก็ได้ และอาจเป็น 0b/0o/0x (หรือเทียบเท่า 0B/0O/0X) ตามลำดับ หาก base เป็นค่าอื่นใดนอกเหนือจากฐานเหล่านี้หรือค่าพิเศษ 0 คำนำหน้าจะต้องว่างเปล่า ในกรณีที่ base เป็น 0 ระบบจะตีความสตริงเป็นจำนวนเต็มลิเทอรัล เมื่อมีการเลือกฐาน 2/8/10/16 ตัวใดตัวหนึ่งโดยขึ้นอยู่กับคำนำหน้าว่ามีการใช้ค่าใด หาก base เป็น 0 จะไม่มีการใช้คำนำหน้าและมีมากกว่า 1 หลัก ตัวเลขนำหน้าก็จะเป็น 0 ไม่ได้ ทั้งนี้เพื่อหลีกเลี่ยงความสับสนระหว่างเลขฐานแปดและฐานสิบ ขนาดของจำนวนที่แสดงโดยสตริงต้องอยู่ภายในช่วงที่อนุญาตของประเภท int
  • หาก x เป็นแบบลอย int จะแสดงผลค่าจำนวนเต็มของแบบลอยโดยปัดเศษเป็น 0 หาก x เป็นค่าอนันต์ (NaN หรือค่าอนันต์) ระบบจะแสดงข้อผิดพลาด
ฟังก์ชันนี้จะใช้งานไม่ได้หาก x เป็นประเภทประเภทอื่น หรือหากค่าเป็นสตริงที่ไม่ตรงกับรูปแบบข้างต้น ฟังก์ชันนี้ต่างจากฟังก์ชัน int ของ Python ตรงที่ไม่อนุญาตให้ใช้อาร์กิวเมนต์ 0 และไม่อนุญาตให้ใช้ช่องว่างที่เกินมาสำหรับอาร์กิวเมนต์สตริง

ตัวอย่าง:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
สตริงที่จะแปลง
base ค่าเริ่มต้น = ยกเลิกการเชื่อมโยง
ฐานที่ใช้ตีความค่าสตริง มีค่าเริ่มต้นเป็น 10 ต้องอยู่ระหว่าง 2 ถึง 36 (รวม) หรือ 0 เพื่อตรวจจับฐานเสมือนว่า x เป็นจำนวนเต็มลิเทอรัล ต้องระบุพารามิเตอร์นี้หากค่าไม่ใช่สตริง

len

int len(x)

แสดงผลความยาวของสตริง ลำดับ (เช่น รายการหรือ Tuple), dict หรือทำซ้ำอื่นๆ ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
ค่าที่มีความยาวที่จะรายงาน

ลิสต์

list list(x=[])

แสดงรายการใหม่ที่มีองค์ประกอบเดียวกับค่าที่ทำซ้ำได้
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ค่าเริ่มต้น = []
ออบเจ็กต์ที่จะแปลง

local_path_override

None local_path_override(module_name, path)

ระบุว่าทรัพยากร Dependency ควรมาจากไดเรกทอรีบางรายการบนดิสก์ในเครื่อง คำสั่งนี้ใช้ได้เฉพาะในโมดูลรูทเท่านั้น กล่าวคือ หากโมดูลระบุการลบล้างใดก็ตาม จะใช้เป็นทรัพยากร Dependency ของผู้อื่นไม่ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
module_name ต้องระบุ
ชื่อของทรัพยากร Dependency ของโมดูล Bazel ที่จะใช้การลบล้างนี้
path ต้องระบุ
เส้นทางไปยังไดเรกทอรีที่มีโมดูลนี้

สูงสุด

unknown max(*args)

แสดงผลอาร์กิวเมนต์ที่ใหญ่ที่สุดทั้งหมดที่ระบุ หากระบุอาร์กิวเมนต์เพียงรายการเดียว อาร์กิวเมนต์นั้นต้องเป็นอาร์กิวเมนต์ที่ไม่ว่างเปล่า ข้อผิดพลาดนั้นจะเป็นข้อผิดพลาดหากองค์ประกอบไม่สามารถเปรียบเทียบกันได้ (เช่น int ที่มีสตริง) หรือหากไม่มีการให้อาร์กิวเมนต์
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
args จำเป็น
องค์ประกอบที่ต้องตรวจสอบ

นาที

unknown min(*args)

แสดงผลอาร์กิวเมนต์ที่เล็กที่สุดในบรรดาอาร์กิวเมนต์ที่ระบุทั้งหมด หากมีเพียงอาร์กิวเมนต์เดียว อาร์กิวเมนต์นั้นต้องเป็นอาร์กิวเมนต์ที่เว้นว่างไม่ได้ ระบบจะแสดงข้อผิดพลาดหากองค์ประกอบไม่สามารถเปรียบเทียบกันได้ (เช่น int ที่มีสตริง) หรือหากไม่มีการให้อาร์กิวเมนต์
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
args จำเป็น
องค์ประกอบที่ต้องตรวจสอบ

โมดูล

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

ประกาศคุณสมบัติบางอย่างของโมดูล Bazel ที่แสดงโดยที่เก็บ Bazel ปัจจุบัน พร็อพเพอร์ตี้เหล่านี้เป็นข้อมูลเมตาที่สำคัญของโมดูล (เช่น ชื่อและเวอร์ชัน) หรือส่งผลต่อลักษณะการทำงานของโมดูลปัจจุบันและโมดูลที่เกี่ยวข้อง

ควรเรียกใช้ไม่เกิน 1 ครั้ง โดยสามารถละเว้นได้ต่อเมื่อโมดูลนี้เป็นโมดูลรากเท่านั้น (เช่น ในกรณีที่โมดูลอื่นไม่ได้อ้างอิงโดยโมดูลอื่น)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
name ค่าเริ่มต้น = ''
ชื่อของโมดูล ละเว้นได้ต่อเมื่อโมดูลนี้เป็นโมดูลรูทเท่านั้น (เช่น ในกรณีที่โมดูลอื่นไม่ได้อ้างอิงโดยโมดูลอื่น) ชื่อโมดูลที่ถูกต้องต้องมีลักษณะดังนี้ 1) มีเฉพาะตัวอักษรพิมพ์เล็ก (a-z) ตัวเลข (0-9) จุด (.) ขีดกลาง (-) และขีดล่าง (_); 2) ขึ้นต้นด้วยตัวอักษรพิมพ์เล็ก 3) ลงท้ายด้วยตัวอักษรพิมพ์เล็กหรือตัวเลข
version default = ''
เวอร์ชันของโมดูล ละเว้นได้ต่อเมื่อโมดูลนี้เป็นโมดูลรูทเท่านั้น (เช่น ในกรณีที่โมดูลอื่นไม่ได้อ้างอิงโดยโมดูลอื่น)
compatibility_level ค่าเริ่มต้น = 0
ระดับความเข้ากันได้ของโมดูล ซึ่งควรเปลี่ยนทุกครั้งที่มีการทำการเปลี่ยนแปลงสำคัญที่ใช้ร่วมกันไม่ได้ โดยพื้นฐานแล้ว นี่ก็คือ "เวอร์ชันหลัก" ของโมดูลในแง่ของ SemVer ยกเว้นว่าโมดูลนี้ไม่ได้ฝังอยู่ในสตริงเวอร์ชันเอง แต่อยู่อีกช่องหนึ่ง โมดูลที่มีระดับความเข้ากันได้แตกต่างกันจะเข้าร่วมในความละเอียดของเวอร์ชันเหมือนเป็นโมดูลที่มีชื่อต่างกัน แต่กราฟทรัพยากร Dependency ในขั้นสุดท้ายไม่สามารถมีโมดูลหลายรายการที่มีชื่อเดียวกันแต่มีระดับความเข้ากันได้แตกต่างกัน (ยกเว้นกรณีที่ multiple_version_override มีผลใช้งาน ดูรายละเอียดเพิ่มเติม)
repo_name default = ''
ชื่อของที่เก็บที่แสดงถึงโมดูลนี้ ตามที่โมดูลมองเห็น โดยค่าเริ่มต้น ชื่อของที่เก็บจะเป็นชื่อของโมดูล คุณสามารถระบุเพื่อให้ย้ายข้อมูลได้ง่ายขึ้นสำหรับโปรเจ็กต์ที่ใช้ชื่อที่เก็บสำหรับตัวเองซึ่งต่างจากชื่อโมดูล
bazel_compatibility Iterable of strings; ค่าเริ่มต้น = []
รายการเวอร์ชัน Bazel ที่อนุญาตให้ผู้ใช้ประกาศว่าเวอร์ชัน Bazel ใดที่เข้ากันได้กับโมดูลนี้ โดยจะไม่ส่งผลต่อการแก้ปัญหาทรัพยากร Dependency แต่ bzlmod จะใช้ข้อมูลนี้เพื่อตรวจสอบว่า Bazel เวอร์ชันปัจจุบันของคุณใช้งานร่วมกันได้หรือไม่ รูปแบบของค่านี้เป็นสตริงของค่าข้อจำกัดบางค่าที่คั่นด้วยเครื่องหมายจุลภาค ระบบรองรับข้อจำกัด 3 ประการ ได้แก่ <=X.X.X: เวอร์ชัน Bazel ต้องเท่ากับหรือมากกว่า X.X.X โดยจะใช้เมื่อมีการเปลี่ยนแปลงที่ใช้ร่วมกันไม่ได้ในเวอร์ชันที่ใหม่กว่า >=X.X.X: เวอร์ชัน Bazel ต้องเท่ากับหรือใหม่กว่า X.X.X. ใช้เมื่อคุณขึ้นอยู่กับฟีเจอร์บางอย่างที่ใช้ได้ตั้งแต่ X.X.X. -X.X.X: Bazel เวอร์ชัน X.X.X ไม่สามารถทำงานร่วมกันได้ ใช้เมื่อมีข้อบกพร่องใน X.X.X ที่รบกวนคุณ แต่ได้รับการแก้ไขในเวอร์ชันหลังๆ

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='')

สร้างส่วนขยายโมดูลใหม่ จัดเก็บไว้ในค่าส่วนกลางเพื่อให้ส่งออกและใช้ในไฟล์ MODULE.bazel ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
implementation ต้องระบุ
ฟังก์ชันที่ใช้งานส่วนขยายโมดูลนี้ ต้องใช้พารามิเตอร์เดียว นั่นคือ module_ctx ระบบจะเรียกใช้ฟังก์ชันนี้ครั้งเดียวเมื่อเริ่มต้นบิลด์เพื่อกำหนดชุดของที่เก็บที่ใช้ได้
tag_classes default = {}
พจนานุกรมสำหรับประกาศคลาสแท็กทั้งหมดที่ส่วนขยายใช้ โดยแมปจากชื่อคลาสแท็กกับออบเจ็กต์ tag_class
doc default = ''
คำอธิบายของส่วนขยายโมดูลที่เครื่องมือสร้างเอกสารดึงออกมาได้

multiple_version_override

None multiple_version_override(module_name, versions, registry='')

ระบุว่าทรัพยากร Dependency ควรมาจากรีจิสทรี แต่ควรอนุญาตให้ทรัพยากร Dependency หลายเวอร์ชันอยู่ร่วมกันได้ คำสั่งนี้ใช้ได้เฉพาะในโมดูลรูทเท่านั้น กล่าวคือ หากโมดูลระบุการลบล้างใดก็ตาม จะใช้เป็นทรัพยากร Dependency ของผู้อื่นไม่ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
module_name ต้องระบุ
ชื่อของทรัพยากร Dependency ของโมดูล Bazel ที่จะใช้การลบล้างนี้
versions Iterable of strings ต้องระบุ
ระบุเวอร์ชันที่อนุญาตให้ใช้งานร่วมกันอย่างชัดแจ้ง โดยเวอร์ชันเหล่านี้จะต้องอยู่ในการเลือกกราฟการอ้างอิงล่วงหน้าอยู่แล้ว ระบบจะ "อัปเกรด" ทรัพยากร Dependency ของโมดูลนี้เป็นเวอร์ชันที่อนุญาตที่สูงกว่าที่ใกล้เคียงที่สุดในระดับความเข้ากันได้เดียวกัน ในขณะที่ทรัพยากร Dependency ที่มีเวอร์ชันสูงกว่าเวอร์ชันที่อนุญาตในระดับความเข้ากันได้เดียวกันจะส่งผลให้เกิดข้อผิดพลาด
registry default = ''
ลบล้างรีจิสทรีของโมดูลนี้ แทนที่จะค้นหาโมดูลนี้จากรายการรีจิสทรีเริ่มต้น ควรใช้รีจิสทรีที่ระบุ

พิมพ์

None print(sep=" ", *args)

พิมพ์ args เป็นเอาต์พุตการแก้ไขข้อบกพร่อง ซึ่งจะนำหน้าด้วยสตริง "DEBUG" และตำแหน่ง (ไฟล์และหมายเลขบรรทัด) ของการโทรนี้ ไม่มีการระบุวิธีแปลงอาร์กิวเมนต์เป็นสตริงโดยละเอียดและอาจเปลี่ยนแปลงได้ตลอดเวลา โดยเฉพาะอย่างยิ่ง อาจแตกต่างจาก (และมีรายละเอียดมากกว่า) การจัดรูปแบบที่ str() และ repr() ทำ

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
sep default = " "
สตริงตัวคั่นระหว่างออบเจ็กต์ ค่าเริ่มต้นคือเว้นวรรค (" ")
args จำเป็น
ออบเจ็กต์ที่จะพิมพ์

ผู้ให้บริการ

unknown provider(doc='', *, fields=None, init=None)

กำหนดสัญลักษณ์ผู้ให้บริการ ผู้ให้บริการอาจสร้างอินสแตนซ์โดยการเรียกใช้ หรือใช้เป็นคีย์ในการเรียกอินสแตนซ์ของผู้ให้บริการนั้นจากเป้าหมายโดยตรง ตัวอย่าง:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

โปรดอ่านกฎ (ผู้ให้บริการ) เพื่อดูคำแนะนำที่ครอบคลุมเกี่ยวกับวิธีใช้ผู้ให้บริการ

แสดงผลค่าที่เรียกใช้ได้ของ Provider หากไม่ได้ระบุ init

หากระบุ init จะแสดง Tuple ของ 2 องค์ประกอบ ได้แก่ ค่าที่สามารถเรียกได้ของ Provider และค่าเรียกได้ของเครื่องมือสร้างดิบ ดูรายละเอียดได้ที่กฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการที่กำหนดเอง) และการสนทนาเกี่ยวกับพารามิเตอร์ init ด้านล่าง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
doc default = ''
คำอธิบายของผู้ให้บริการที่เครื่องมือสร้างเอกสารดึงข้อมูลได้
fields sequence of strings; or dict; or None; ค่าเริ่มต้น = ไม่มี
หากระบุ จะจำกัดชุดช่องที่อนุญาต
ค่าที่เป็นไปได้มีดังนี้
  • รายการช่อง:
    provider(fields = ['a', 'b'])

  • ชื่อช่องพจนานุกรม -> เอกสารประกอบ:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
ทั้งนี้ คุณไม่จำเป็นต้องกรอกทั้ง 2 ช่อง
init callable; or None; ค่าเริ่มต้น = ไม่มี
โค้ดเรียกกลับที่ไม่บังคับสำหรับการประมวลผลล่วงหน้าและตรวจสอบความถูกต้องของค่าในช่องของผู้ให้บริการระหว่างอินสแตนซ์ หากระบุ init แล้ว provider() จะแสดงผล Tuple ของ 2 องค์ประกอบ ได้แก่ สัญลักษณ์ผู้ให้บริการปกติและ ตัวสร้างดิบ

ต่อไปนี้เป็นคำอธิบายโดยละเอียด โปรดดูกฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการ) สำหรับการสนทนาและกรณีการใช้งานที่เข้าใจง่าย

ให้ P เป็นสัญลักษณ์ของผู้ให้บริการที่สร้างโดยการโทรหา provider() โดยหลักแล้ว อินสแตนซ์ของ P สร้างขึ้นโดยการเรียกใช้ฟังก์ชันตัวสร้างเริ่มต้น c(*args, **kwargs) ซึ่งทำสิ่งต่อไปนี้

  • หาก args ไม่ว่างเปล่า เกิดข้อผิดพลาดขึ้น
  • หากระบุพารามิเตอร์ fields ไว้เมื่อมีการเรียกใช้ provider() และหาก kwargs มีคีย์ที่ไม่ได้ระบุไว้ใน fields ก็จะเกิดข้อผิดพลาดขึ้น
  • ไม่เช่นนั้น c จะแสดงผลอินสแตนซ์ใหม่ที่มีช่องชื่อ k ที่มีค่า v สำหรับแต่ละรายการของ k: v ใน kwargs
ในกรณีที่ไม่ได้ระบุการเรียกกลับ init การเรียกสัญลักษณ์ P จะทำหน้าที่เป็นการเรียกฟังก์ชันตัวสร้างเริ่มต้น c กล่าวคือ P(*args, **kwargs) จะแสดงผลค่า c(*args, **kwargs) ตัวอย่างเช่น
MyInfo = provider()
m = MyInfo(foo = 1)
จะทำให้ m เป็นอินสแตนซ์ MyInfo ที่มี m.foo == 1 โดยตรง

แต่ในกรณีที่ระบุ init ไว้ การเรียก P(*args, **kwargs) จะทำตามขั้นตอนต่อไปนี้แทน

  1. มีการเรียกกลับด้วย init(*args, **kwargs) กล่าวคือ มีอาร์กิวเมนต์ตำแหน่งและคำหลักเหมือนกับที่ส่งไปยัง P
  2. ค่าที่ส่งกลับมาจาก init ควรเป็นพจนานุกรม d ซึ่งมีคีย์เป็นสตริงชื่อช่อง ไม่เช่นนั้นจะเกิดข้อผิดพลาด
  3. ระบบจะสร้างอินสแตนซ์ใหม่ของ P ราวกับว่าเรียกใช้ตัวสร้างเริ่มต้นพร้อมด้วยรายการของ d เป็นอาร์กิวเมนต์คีย์เวิร์ด เช่นเดียวกับใน c(**d)

หมายเหตุ: ขั้นตอนข้างต้นบอกเป็นนัยว่าข้อผิดพลาดจะเกิดขึ้นหาก *args หรือ **kwargs ไม่ตรงกับลายเซ็นของ init หรือการประเมินเนื้อหาของ init ล้มเหลว (อาจเจตนาผ่านการเรียกไปยัง fail()) หรือหากค่าที่ส่งคืนของ init ไม่ใช่พจนานุกรมที่มีสคีมาที่คาดไว้

ด้วยวิธีนี้ โค้ดเรียกกลับ init จะนำโครงสร้างของผู้ให้บริการตามปกติโดยอนุญาตให้ใช้อาร์กิวเมนต์ตามตำแหน่งและตรรกะที่กำหนดเองสำหรับการประมวลผลและการตรวจสอบล่วงหน้า ไม่อนุญาตให้มีการหลีกเลี่ยงรายการ fields ที่ได้รับอนุญาต

เมื่อระบุ init ค่าที่แสดงผล provider() จะกลายเป็น Tuple (P, r) โดยที่ r เป็น ตัวสร้างดิบ ในความเป็นจริงแล้ว ลักษณะการทำงานของ r ก็เหมือนกับของฟังก์ชันเครื่องมือสร้างเริ่มต้น c ที่กล่าวถึงด้านบนทุกประการ โดยปกติแล้ว r จะผูกอยู่กับตัวแปรที่มีชื่อนำหน้าด้วยขีดล่างเท่านั้น เพื่อให้เฉพาะไฟล์ .bzl ปัจจุบันเท่านั้นที่เข้าถึงได้โดยตรง

MyInfo, _new_myinfo = provider(init = ...)

ช่วง

sequence range(start_or_stop, stop_or_none=None, step=1)

สร้างรายการที่แสดงรายการจาก start ไปยัง stop โดยเพิ่มขึ้นทีละ step หากระบุอาร์กิวเมนต์เดียว รายการจะมีช่วงตั้งแต่ 0 ถึงองค์ประกอบนั้น
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
start_or_stop ต้องระบุ
ค่าขององค์ประกอบเริ่มต้นหากมีการระบุการหยุด มิฉะนั้น ค่าของการหยุด และจุดเริ่มต้นตามจริงจะเป็น 0
stop_or_none int; or None; ค่าเริ่มต้น = ไม่มี
ดัชนีที่ไม่บังคับของรายการแรกที่ไม่จะรวมอยู่ในรายการผลลัพธ์ การสร้างรายการจะหยุดก่อนที่จะถึง stop
step default = 1
จำนวนที่เพิ่มขึ้น (ค่าเริ่มต้นคือ 1) อาจเป็นค่าลบ

register_execution_platforms()

None register_execution_platforms(*platform_labels)

ลงทะเบียนแพลตฟอร์มที่กำหนดไว้แล้วเพื่อให้ Bazel ใช้เป็นแพลตฟอร์มการดำเนินการในระหว่างการแก้ปัญหา Toolchain

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
platform_labels sequence of strings ต้องระบุ
ป้ายกำกับของแพลตฟอร์มที่จะจดทะเบียน

register_execution_platforms()

None register_execution_platforms(*platform_labels)

ระบุแพลตฟอร์มการดำเนินการที่กำหนดไว้แล้วสำหรับการลงทะเบียนเมื่อเลือกโมดูลนี้ ควรเป็นรูปแบบเป้าหมายสัมบูรณ์ (เช่น ขึ้นต้นด้วย @ หรือ //) โปรดดูข้อมูลเพิ่มเติมในการแก้ปัญหาของ Toolchain

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
platform_labels sequence of strings ต้องระบุ
ป้ายกำกับของแพลตฟอร์มที่จะจดทะเบียน

register_toolchains()

None register_toolchains(*toolchain_labels)

ลงทะเบียน Toolchain ที่กำหนดไว้แล้วเพื่อให้ Bazel ใช้งานได้ในระหว่างการแก้ปัญหา Toolchain ดูตัวอย่างของการกำหนดและการลงทะเบียน Toolchain

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
toolchain_labels sequence of strings ต้องระบุ
ป้ายกำกับของเชนเครื่องมือในการลงทะเบียน

register_toolchains()

None register_toolchains(*toolchain_labels)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
toolchain_labels sequence of strings ต้องระบุ
ป้ายกำกับของเชนเครื่องมือในการลงทะเบียน

Firestore_rule(คู่มือการติดตั้ง, attrs, ภายใน, สภาพแวดล้อม, กำหนดค่า, เข้าถึงได้อีกครั้ง, เอกสาร)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

สร้างกฎที่เก็บใหม่ จัดเก็บไว้ในค่าส่วนกลางเพื่อให้โหลดและเรียกใช้จากไฟล์ WORKSPACE ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
implementation ต้องระบุ
ฟังก์ชันที่ใช้กฎนี้ ต้องมีพารามิเตอร์เดียว นั่นคือ repository_ctx ระบบจะเรียกใช้ฟังก์ชันนี้ในระหว่างขั้นตอนการโหลดสำหรับอินสแตนซ์แต่ละรายการของกฎ
attrs dict; or None; ค่าเริ่มต้น = ไม่มี
พจนานุกรมที่จะประกาศแอตทริบิวต์ทั้งหมดของกฎ ซึ่งแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) แอตทริบิวต์ที่ขึ้นต้นด้วย _ จะเป็นแบบส่วนตัว และใช้เพื่อเพิ่มทรัพยากร Dependency แบบโดยนัยของป้ายกำกับไปยังไฟล์ได้ (กฎที่เก็บต้องไม่ขึ้นอยู่กับอาร์ติแฟกต์ที่สร้างขึ้น) มีการเพิ่มแอตทริบิวต์ name โดยนัยและต้องไม่ระบุ
local ค่าเริ่มต้น = เท็จ
ระบุว่ากฎนี้ดึงข้อมูลทุกอย่างจากระบบในเครื่องและควรประเมินใหม่ทุกครั้งที่ดึงข้อมูล
environ sequence of strings; default = []
ระบุรายการตัวแปรสภาพแวดล้อมที่กฎที่เก็บนี้ใช้อยู่ หากตัวแปรสภาพแวดล้อมในรายการนั้นมีการเปลี่ยนแปลง ระบบจะดึงข้อมูลที่เก็บอีกครั้ง
configure default = False
ระบุว่าที่เก็บตรวจสอบระบบเพื่อวัตถุประสงค์ในการกำหนดค่า
remotable default = False
ทดลอง พารามิเตอร์นี้อยู่ในขั้นทดลองและอาจมีการเปลี่ยนแปลงได้ตลอดเวลา โปรดอย่าพึ่งพาสิ่งนี้ อาจเปิดใช้ในขั้นทดลองโดยการตั้งค่า ---experimental_repo_remote_exec
เข้ากันได้กับการดำเนินการจากระยะไกล
doc default = ''
คำอธิบายของกฎที่เก็บที่เครื่องมือสร้างเอกสารดึงข้อมูลได้

Firestore_rule(คู่มือการติดตั้ง, attrs, ภายใน, สภาพแวดล้อม, กำหนดค่า, เข้าถึงได้อีกครั้ง, เอกสาร)

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

สร้างกฎที่เก็บใหม่ จัดเก็บไว้ในค่าส่วนกลางเพื่อให้โหลดและเรียกใช้จากไฟล์ WORKSPACE ได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
implementation ต้องระบุ
ฟังก์ชันที่ใช้กฎนี้ ต้องมีพารามิเตอร์เดียว นั่นคือ repository_ctx ระบบจะเรียกใช้ฟังก์ชันนี้ในระหว่างขั้นตอนการโหลดสำหรับอินสแตนซ์แต่ละรายการของกฎ
attrs dict; or None; ค่าเริ่มต้น = ไม่มี
พจนานุกรมที่จะประกาศแอตทริบิวต์ทั้งหมดของกฎ ซึ่งแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) แอตทริบิวต์ที่ขึ้นต้นด้วย _ จะเป็นแบบส่วนตัว และใช้เพื่อเพิ่มทรัพยากร Dependency แบบโดยนัยของป้ายกำกับไปยังไฟล์ได้ (กฎที่เก็บต้องไม่ขึ้นอยู่กับอาร์ติแฟกต์ที่สร้างขึ้น) มีการเพิ่มแอตทริบิวต์ name โดยนัยและต้องไม่ระบุ
local ค่าเริ่มต้น = เท็จ
ระบุว่ากฎนี้ดึงข้อมูลทุกอย่างจากระบบในเครื่องและควรประเมินใหม่ทุกครั้งที่ดึงข้อมูล
environ sequence of strings; default = []
ระบุรายการตัวแปรสภาพแวดล้อมที่กฎที่เก็บนี้ใช้อยู่ หากตัวแปรสภาพแวดล้อมในรายการนั้นมีการเปลี่ยนแปลง ระบบจะดึงข้อมูลที่เก็บอีกครั้ง
configure default = False
ระบุว่าที่เก็บตรวจสอบระบบเพื่อวัตถุประสงค์ในการกำหนดค่า
remotable default = False
ทดลอง พารามิเตอร์นี้อยู่ในขั้นทดลองและอาจมีการเปลี่ยนแปลงได้ตลอดเวลา โปรดอย่าพึ่งพาสิ่งนี้ อาจเปิดใช้ในขั้นทดลองโดยการตั้งค่า ---experimental_repo_remote_exec
เข้ากันได้กับการดำเนินการจากระยะไกล
doc default = ''
คำอธิบายของกฎที่เก็บที่เครื่องมือสร้างเอกสารดึงข้อมูลได้

repr

string repr(x)

แปลงออบเจ็กต์ใดๆ ให้เป็นตัวแทนสตริง ซึ่งเป็นประโยชน์ในการแก้ไขข้อบกพร่อง
repr("ab") == '"ab"'

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
ออบเจ็กต์ที่จะแปลง

ย้อนกลับ

list reversed(sequence)

แสดงรายการใหม่ที่ไม่ได้ตรึงไว้ซึ่งมีองค์ประกอบของลำดับที่ทำซ้ำเดิมได้ในลำดับที่กลับกัน
reversed([3, 5, 4]) == [4, 5, 3]

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
sequence ต้องระบุ
ลำดับที่ทำซ้ำได้ (เช่น รายการ) ที่จะย้อนกลับ

กฎ

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

สร้างกฎใหม่ซึ่งสามารถเรียกจากไฟล์ BUILD หรือมาโครเพื่อสร้างเป้าหมาย

ต้องกำหนดกฎให้กับตัวแปรร่วมในไฟล์ .bzl ชื่อตัวแปรร่วมคือชื่อของกฎ

กฎการทดสอบต้องมีชื่อที่ลงท้ายด้วย _test ขณะที่กฎอื่นๆ ทั้งหมดต้องไม่มีคำต่อท้ายนี้ (ข้อจำกัดนี้มีผลกับกฎเท่านั้น ไม่ใช้กับเป้าหมายของกฎเท่านั้น)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
implementation จำเป็น
ฟังก์ชัน Starlark ที่ใช้กฎนี้จะต้องมีพารามิเตอร์ 1 รายการเท่านั้น: ctx ระบบจะเรียกใช้ฟังก์ชันนี้ในระหว่างขั้นตอนการวิเคราะห์สำหรับอินสแตนซ์แต่ละรายการของกฎ สามารถเข้าถึงแอตทริบิวต์ที่ผู้ใช้ให้ไว้ จะต้องสร้างการดำเนินการเพื่อสร้างเอาต์พุตที่ประกาศทั้งหมด
test default = False
ระบุว่ากฎนี้เป็นกฎทดสอบหรือไม่ นั่นคือว่ากฎนี้อาจเกี่ยวข้องกับคำสั่ง blaze test หรือไม่ กฎการทดสอบทั้งหมดจะถือว่าดำเนินการได้โดยอัตโนมัติ คุณไม่จำเป็นต้องตั้งค่า executable = True สำหรับกฎการทดสอบอย่างชัดแจ้ง ดูข้อมูลเพิ่มเติมได้ที่ หน้ากฎ
attrs dict; or None; ค่าเริ่มต้น = ไม่มี
พจนานุกรมที่จะประกาศแอตทริบิวต์ทั้งหมดของกฎ ซึ่งแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) แอตทริบิวต์ที่ขึ้นต้นด้วย _ จะเป็นแบบส่วนตัว และใช้เพื่อเพิ่มทรัพยากร Dependency แบบโดยนัยในป้ายกำกับได้ มีการเพิ่มแอตทริบิวต์ name โดยนัยและต้องไม่ระบุ แอตทริบิวต์ visibility, deprecation, tags, testonly และ features มีการเพิ่มโดยนัยและลบล้างไม่ได้ กฎส่วนใหญ่ต้องการแอตทริบิวต์เพียงไม่กี่รายการ ฟังก์ชันของกฎจะกำหนดขนาดของแอตทริบิวต์เพื่อจำกัดการใช้งานหน่วยความจำ
outputs dict; or None; or function ค่าเริ่มต้น = ไม่มี
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพาสิ่งนี้ ถูกปิดใช้กับ ---incompatible_no_rule_outputs_param ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนําออกที่กำลังจะเกิดขึ้น
เลิกใช้งานพารามิเตอร์นี้แล้ว ย้ายข้อมูลกฎเพื่อใช้ OutputGroupInfo หรือ attr.output แทน

สคีมาสำหรับการกำหนดเอาต์พุตที่ประกาศไว้ล่วงหน้า ซึ่งต่างจากแอตทริบิวต์ output และ output_list ตรงที่ผู้ใช้ไม่ได้ระบุป้ายกำกับสำหรับไฟล์เหล่านี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเอาต์พุตที่ประกาศไว้ล่วงหน้าได้ในหน้ากฎ

ค่าของอาร์กิวเมนต์นี้คือพจนานุกรมหรือฟังก์ชันเรียกกลับที่สร้างพจนานุกรม โค้ดเรียกกลับทำงานคล้ายกับแอตทริบิวต์ทรัพยากร Dependency ที่คำนวณ กล่าวคือ ชื่อพารามิเตอร์ของฟังก์ชันจะจับคู่กับแอตทริบิวต์ของกฎ ตัวอย่างเช่น หากคุณส่ง outputs = _my_func โดยมีคำจำกัดความ def _my_func(srcs, deps): ... ฟังก์ชันดังกล่าวจะมีสิทธิ์เข้าถึงแอตทริบิวต์ srcs และ deps ไม่ว่าจะระบุพจนานุกรมโดยตรงหรือผ่านฟังก์ชัน ก็จะมีการตีความดังนี้

แต่ละรายการในพจนานุกรมจะสร้างเอาต์พุตที่ประกาศไว้ล่วงหน้าซึ่งคีย์เป็นตัวระบุ และค่าคือเทมเพลตสตริงที่กำหนดป้ายกำกับของเอาต์พุต ในฟังก์ชันการใช้งานของกฎ ตัวระบุจะกลายเป็นชื่อช่องที่ใช้เข้าถึง File ของเอาต์พุตใน ctx.outputs ป้ายกำกับของเอาต์พุตมีแพ็กเกจเดียวกับกฎ และส่วนหลังจากสร้างแพ็กเกจโดยแทนที่ตัวยึดตำแหน่งแต่ละรายการของแบบฟอร์ม "%{ATTR}" ด้วยสตริงที่สร้างจากค่าของแอตทริบิวต์ ATTR ดังนี้

  • แอตทริบิวต์ที่พิมพ์ด้วยสตริงจะแทนด้วยคำต่อคำ
  • แอตทริบิวต์ที่พิมพ์ด้วยป้ายกำกับจะกลายเป็นส่วนหนึ่งของป้ายกำกับหลังแพ็กเกจ ลบด้วยนามสกุลไฟล์ ตัวอย่างเช่น ป้ายกำกับ "//pkg:a/b.c" จะกลายเป็น "a/b"
  • แอตทริบิวต์ประเภทเอาต์พุตจะกลายเป็นส่วนหนึ่งของป้ายกำกับหลังแพ็กเกจ รวมถึงนามสกุลไฟล์ (สำหรับตัวอย่างข้างต้นคือ "a/b.c")
  • แอตทริบิวต์ประเภทลิสต์รายการทั้งหมด (เช่น attr.label_list) ที่ใช้ในตัวยึดตำแหน่งต้องมีองค์ประกอบเดียว Conversion ของผู้ใช้เหล่านี้เหมือนกับเวอร์ชันที่ไม่ได้อยู่ในรายการ (attr.label)
  • แอตทริบิวต์ประเภทอื่นๆ อาจไม่ปรากฏในตัวยึดตำแหน่ง
  • ตัวยึดตำแหน่งพิเศษที่ไม่มีแอตทริบิวต์ %{dirname} และ %{basename} จะขยายไปยังส่วนเหล่านั้นของป้ายกำกับของกฎ โดยไม่รวมแพ็กเกจ เช่น ใน "//pkg:a/b.c" ชื่อไดเรกทอรีคือ a และชื่อฐานคือ b.c

ในทางปฏิบัติ ตัวยึดตำแหน่งที่ใช้แทนที่พบบ่อยที่สุดคือ "%{name}" เช่น สำหรับเป้าหมายชื่อ "foo" เอาต์พุต dict {"bin": "%{name}.exe"} จะประกาศเอาต์พุตที่ชื่อ foo.exe ซึ่งเข้าถึงได้ในฟังก์ชันการใช้งานเป็น ctx.outputs.bin

executable default = False
จะถือว่ากฎนี้ดำเนินการหรือไม่ กล่าวคือ พิจารณาว่ากฎนี้อาจเกี่ยวข้องกับคำสั่ง blaze run หรือไม่ ดูข้อมูลเพิ่มเติมได้ที่ หน้ากฎ
output_to_genfiles default = False
หากเป็น true ระบบจะสร้างไฟล์ในไดเรกทอรี genfiles แทนไดเรกทอรี bin อย่าตั้งค่าธงนี้ ยกเว้นในกรณีที่คุณต้องการเพื่อให้เข้ากันได้กับกฎที่มีอยู่ (เช่น เมื่อสร้างไฟล์ส่วนหัวสำหรับ C++)
fragments sequence of strings; default = []
รายการชื่อ Fragment การกำหนดค่าที่กฎต้องใช้ในการกำหนดค่าเป้าหมาย
host_fragments sequence of strings; default = []
รายการชื่อ Fragment การกำหนดค่าที่กฎต้องใช้ในการกำหนดค่าโฮสต์
_skylark_testable ค่าเริ่มต้น = เท็จ
(ทดลอง)

หากเป็น "จริง" กฎนี้จะแสดงการดำเนินการเพื่อรับการตรวจสอบตามกฎที่ขึ้นอยู่กับการดำเนินการผ่านผู้ให้บริการการดำเนินการ นอกจากนี้ ผู้ให้บริการยังใช้กับกฎได้โดยเรียก ctx.created_actions()

ควรใช้สำหรับการทดสอบลักษณะการทำงานในเวลาวิเคราะห์ของกฎ Starlark เท่านั้น ธงนี้อาจถูกนำออกในอนาคต
toolchains sequence; default = []
หากตั้งค่าไว้ ชุดเครื่องมือที่กฎนี้ต้องใช้ รายการนี้อาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi รวมกันแบบใดก็ได้ คุณจะพบเครื่องมือเชนได้โดยการตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการนำกฎไปใช้ผ่านทาง ctx.toolchain
incompatible_use_toolchain_transition ค่าเริ่มต้น = เท็จ
เลิกใช้งานแล้ว ไม่มีการใช้งานอีกต่อไปและควรนำออก
doc default = ''
คำอธิบายของกฎที่แยกได้ด้วยเครื่องมือสร้างเอกสาร
provides ค่าเริ่มต้น = []
รายการผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดงผล

นี่เป็นข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นผู้ให้บริการประเภทใดก็ตามที่ระบุไว้ที่นี่ออกจากค่าที่แสดงผล อย่างไรก็ตาม ฟังก์ชันการใช้งานอาจแสดงผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่

องค์ประกอบแต่ละรายการของรายการคือออบเจ็กต์ *Info ที่แสดงผลโดย provider() เว้นแต่ว่าผู้ให้บริการเดิมจะแสดงด้วยชื่อสตริงแทน

exec_compatible_with sequence of strings; ค่าเริ่มต้น = []
รายการข้อจำกัดในแพลตฟอร์มการดำเนินการที่ใช้กับเป้าหมายทั้งหมดของกฎประเภทนี้
analysis_test ค่าเริ่มต้น = เท็จ
หากเป็น "จริง" ระบบจะถือว่ากฎนี้เป็นการทดสอบการวิเคราะห์

หมายเหตุ: กฎการทดสอบการวิเคราะห์จะกำหนดโดยใช้โครงสร้างพื้นฐานที่มีอยู่ในไลบรารีหลักของ Starlark เป็นหลัก ดูคำแนะนำที่การทดสอบ

หากมีการกำหนดให้กฎเป็นกฎการทดสอบการวิเคราะห์ ระบบจะอนุญาตให้ใช้การเปลี่ยนการกำหนดค่าที่กำหนดโดยใช้ analysis_test_transition กับแอตทริบิวต์ได้ แต่เลือกใช้ข้อจำกัดต่อไปนี้ได้

  • เป้าหมายของกฎนี้มีการจำกัดจำนวนทรัพยากร Dependency ชั่วคราวที่อาจมี
  • ระบบจะถือว่ากฎนั้นเป็นกฎทดสอบ (เหมือนกับการตั้งค่า test=True) มีผลแทนค่าของ test
  • ฟังก์ชันการใช้งานกฎอาจไม่บันทึกการดำเนินการ แต่จะต้องลงทะเบียนผลลัพธ์ผ่าน/ไม่ผ่านผ่านการระบุ AnalysisTestResultInfo
build_setting BuildSetting; or None; ค่าเริ่มต้น = ไม่มี
หากตั้งค่าไว้ ให้อธิบายประเภทของbuild settingกฎนี้ ดูโมดูล config หากตั้งค่าไว้ ระบบจะเพิ่มแอตทริบิวต์ที่จำเป็นชื่อ "build_setting_default" ลงในกฎนี้โดยอัตโนมัติ โดยมีประเภทที่สอดคล้องกับค่าที่ส่งมาที่นี่
cfg ค่าเริ่มต้น = ไม่มี
หากตั้งค่าไว้ ให้ชี้ไปที่การเปลี่ยนการกำหนดค่า ซึ่งกฎจะมีผลกับการกำหนดค่าเองก่อนการวิเคราะห์
exec_groups dict; or None; ค่าเริ่มต้น = ไม่มี
ตามคำบอกชื่อกลุ่มการดำเนินการ (สตริง) เป็น exec_groups หากตั้งค่าไว้ อนุญาตให้กฎเรียกใช้การดำเนินการในแพลตฟอร์มการดำเนินการหลายแพลตฟอร์มภายในเป้าหมายเดียว โปรดดูข้อมูลเพิ่มเติมในเอกสารของกลุ่มการดำเนินการ
compile_one_filetype sequence of strings; or None; default = None
ใช้โดย --commerce_one_dependency: หากมีกฎหลายข้อที่ใช้ไฟล์ที่ระบุ เราควรเลือกกฎนี้มากกว่าข้ออื่น
name string; or None ค่าเริ่มต้น = ไม่มี
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพาสิ่งนี้ ถูกปิดใช้กับ --+incompatible_remove_rule_name_parameter ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนําออกที่กำลังจะเกิดขึ้น
เลิกใช้งานแล้ว: ไม่ใช้

ชื่อของกฎนี้ตามที่ Bazel เข้าใจและรายงานในบริบทต่างๆ เช่น การบันทึก native.existing_rule(...)[kind] และ bazel query โดยปกติแล้วจะเหมือนกับตัวระบุ Starlark ที่ผูกกับกฎนี้ ตัวอย่างเช่น กฎที่เรียกว่า foo_library มักจะได้รับการประกาศเป็น foo_library = rule(...) และเริ่มต้นในไฟล์ BUILD เป็น foo_library(...)

หากละเว้นพารามิเตอร์นี้ ชื่อของกฎจะตั้งเป็นชื่อของตัวแปรร่วม Starlark แรกที่ผูกกับกฎนี้ภายในโมดูล .bzl ที่ประกาศ ดังนั้น foo_library = rule(...) จึงไม่จำเป็นต้องระบุพารามิเตอร์นี้หากชื่อคือ foo_library

การระบุชื่อที่ชัดเจนสําหรับกฎจะไม่เปลี่ยนตำแหน่งที่ได้รับอนุญาตให้เริ่มสร้างอินสแตนซ์ของกฎ

เลือก

unknown select(x, no_match_error='')

select() เป็นฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์ของกฎกำหนดค่าได้ ดูรายละเอียดได้ที่สารานุกรมสร้าง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x required
ไดเรกทอรีที่แมปเงื่อนไขการกําหนดค่ากับค่า แต่ละคีย์คือป้ายกำกับหรือสตริงป้ายกำกับที่ระบุอินสแตนซ์ config_setting หรือrestriction_value ดูเอกสารเกี่ยวกับมาโครเพื่อดูว่าควรใช้ป้ายกำกับแทนสตริงเมื่อใด
no_match_error default = ''
ข้อผิดพลาดที่กำหนดเองที่ไม่บังคับเพื่อรายงานหากไม่มีเงื่อนไขที่ตรงกัน

single_version_override

None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
module_name ต้องระบุ
ชื่อของทรัพยากร Dependency ของโมดูล Bazel ที่จะใช้การลบล้างนี้
version default = ''
ลบล้างเวอร์ชันที่ประกาศของโมดูลนี้ในกราฟการอ้างอิง กล่าวคือ โมดูลนี้จะถูก "ปักหมุด" ไว้กับเวอร์ชันการลบล้างนี้ คุณละเว้นแอตทริบิวต์นี้ได้หากแอตทริบิวต์ทั้งหมดต้องการลบล้างคือรีจิสทรีหรือแพตช์
registry default = ''
ลบล้างรีจิสทรีของโมดูลนี้ แทนที่จะค้นหาโมดูลนี้จากรายการรีจิสทรีเริ่มต้น ควรใช้รีจิสทรีที่ระบุ
patches Iterable of strings; ค่าเริ่มต้น = []
รายการป้ายกำกับที่ชี้ไปยังไฟล์แพตช์ที่จะใช้กับโมดูลนี้ ไฟล์แพตช์ต้องอยู่ในโครงสร้างแหล่งที่มาของโปรเจ็กต์ระดับบนสุด โดยจะใช้ตามลำดับของรายการ
patch_cmds Iterable of strings; default = []
ลำดับของคำสั่ง Bash ที่จะนำไปใช้ใน Linux/Macos หลังจากใช้แพตช์
patch_strip default = 0
เหมือนกับอาร์กิวเมนต์ --strip ของแพตช์ Unix

เรียงลำดับแล้ว

list sorted(iterable, *, key=None, reverse=False)

แสดงรายการที่จัดเรียงรายการใหม่ซึ่งมีองค์ประกอบทั้งหมดของลำดับที่ทำซ้ำได้ที่ระบุ เกิดข้อผิดพลาดหากระบบไม่สามารถเปรียบเทียบองค์ประกอบ x, y ด้วย x < y องค์ประกอบจะได้รับการจัดเรียงจากน้อยไปมาก เว้นแต่อาร์กิวเมนต์แบบย้อนกลับจะเป็น True ซึ่งในกรณีนี้ จะเรียงลำดับจากมากไปน้อย การจัดเรียงมีความเสถียร: องค์ประกอบที่เปรียบเทียบเท่ากันจะรักษาลำดับสัมพัทธ์เดิมไว้
sorted([3, 5, 4]) == [3, 4, 5]

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
iterable ต้องระบุ
ลำดับที่ทำซ้ำเพื่อจัดเรียงได้
key default = ไม่มี
ฟังก์ชันที่ไม่บังคับที่ใช้กับแต่ละองค์ประกอบก่อนการเปรียบเทียบ
reverse default = False
แสดงผลการค้นหาตามลำดับจากมากไปน้อย

str

string str(x)

แปลงออบเจ็กต์ใดๆ ให้เป็นสตริง ซึ่งเป็นประโยชน์ในการแก้ไขข้อบกพร่อง
str("ab") == "ab"
str(8) == "8"

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
ออบเจ็กต์ที่จะแปลง

tag_class

tag_class tag_class(attrs={}, *, doc='')

สร้างออบเจ็กต์ tag_class ใหม่ซึ่งกำหนดสคีมาแอตทริบิวต์สำหรับคลาสของแท็ก ซึ่งเป็นออบเจ็กต์ข้อมูลที่ส่วนขยายโมดูลใช้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
attrs ค่าเริ่มต้น = {}
พจนานุกรมสำหรับประกาศแอตทริบิวต์ทั้งหมดของคลาสแท็กนี้ ซึ่งแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr)
doc default = ''
คำอธิบายของคลาสแท็กที่แยกได้ด้วยเครื่องมือสร้างเอกสาร

tuple

tuple tuple(x=())

แสดงผล Tuple ที่มีองค์ประกอบเดียวกับค่าที่ทำซ้ำได้
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x default = ()
ออบเจ็กต์ที่จะแปลง

ประเภท

string type(x)

แสดงผลชื่อประเภทของอาร์กิวเมนต์ ซึ่งมีประโยชน์สำหรับการแก้ไขข้อบกพร่องและการตรวจสอบการพิมพ์ ตัวอย่าง
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
ฟังก์ชันนี้อาจเปลี่ยนแปลงในอนาคต หากต้องการเขียนโค้ดที่ใช้ร่วมกับ Python ได้และเพื่อให้ใช้งานได้ในอนาคต ให้ใช้โค้ดดังกล่าวเพื่อเปรียบเทียบค่าที่แสดง ดังนี้
if type(x) == type([]):  # if x is a list

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x ต้องระบุ
ออบเจ็กต์ที่จะตรวจสอบประเภท

use_extension

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False)

แสดงผลออบเจ็กต์พร็อกซีที่แสดงส่วนขยายโมดูล โดยคุณสามารถเรียกใช้เมธอดเพื่อสร้างแท็กส่วนขยายโมดูลได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
extension_bzl_file ต้องระบุ
ป้ายกำกับไฟล์ Starlark ที่บ่งบอกถึงส่วนขยายโมดูล
extension_name ต้องระบุ
ชื่อของส่วนขยายโมดูลที่จะใช้ ไฟล์ Starlark ต้องส่งออกสัญลักษณ์ที่มีชื่อนี้
dev_dependency ค่าเริ่มต้น = False
หากเป็น "จริง" ระบบจะไม่สนใจการใช้ส่วนขยายโมดูลนี้ หากโมดูลปัจจุบันไม่ใช่โมดูลรากหรือมีการเปิดใช้ "--ignore_dev_dependency"

use_repo

None use_repo(extension_proxy, *args, **kwargs)

นำเข้าที่เก็บซึ่งสร้างโดยส่วนขยายโมดูลที่ระบุลงในขอบเขตของโมดูลปัจจุบันอย่างน้อย 1 รายการ

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
extension_proxy ต้องระบุ
ออบเจ็กต์พร็อกซีของส่วนขยายโมดูลที่แสดงผลโดยการเรียก use_extension
args ต้องระบุ
ชื่อของที่เก็บที่จะนำเข้า
kwargs ต้องระบุ
ระบุที่เก็บบางรายการที่จะนำเข้าไปยังขอบเขตของโมดูลปัจจุบันโดยใช้ชื่อต่างกัน คีย์ควรเป็นชื่อที่ใช้ในขอบเขตปัจจุบัน ส่วนค่าควรเป็นชื่อเดิมที่ส่วนขยายโมดูลส่งออก

การเปิดเผย

None visibility(value)

ตั้งค่าการเปิดเผยการโหลดของโมดูล .bzl ที่กำลังเริ่มต้นอยู่ในขณะนี้

การเปิดเผยการโหลดของโมดูลจะควบคุมว่าไฟล์ BUILD และ .bzl อื่นๆ จะโหลดหรือไม่ (ซึ่งจะแตกต่างจากระดับการเข้าถึงเป้าหมายของไฟล์ต้นฉบับ .bzl ซึ่งควบคุมว่าไฟล์ดังกล่าวอาจปรากฏเป็นปลายทางของเป้าหมายอื่นๆ หรือไม่) การเปิดเผยโหลดทำงานที่ระดับแพ็กเกจ: หากต้องการโหลดโมดูล ไฟล์ที่โหลดต้องปรากฏในแพ็กเกจที่ให้สิทธิ์การเปิดเผยโมดูลแล้ว โมดูลจะโหลดภายในแพ็กเกจของตนเองได้เสมอ โดยไม่คำนึงถึงระดับการเข้าถึง

สามารถเรียกใช้ visibility() ได้เพียงครั้งเดียวต่อไฟล์ .bzl และเรียกใช้ที่ระดับบนสุดเท่านั้น ไม่ใช่ในฟังก์ชัน รูปแบบที่แนะนำคือวางการเรียกใช้นี้ด้านล่างคำสั่ง load() และตรรกะสั้นๆ ที่จำเป็นในการระบุอาร์กิวเมนต์

หากตั้งค่าแฟล็ก --check_bzl_visibility เป็น "เท็จ" การละเมิดระดับการเข้าถึงโหลดจะส่งคำเตือน แต่การสร้างบิลด์จะไม่ล้มเหลว

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
value ต้องระบุ
รายการสตริงข้อมูลจำเพาะของแพ็กเกจ หรือสตริงข้อกำหนดแพ็กเกจเดียว

ข้อมูลจำเพาะของแพ็กเกจมีรูปแบบเดียวกันกับ package_group เว้นแต่จะไม่อนุญาตให้ใช้ข้อกำหนดเกี่ยวกับแพ็กเกจเชิงลบ กล่าวคือ ข้อกำหนดอาจมีรูปแบบดังนี้

  • "//foo": แพ็กเกจ //foo
  • "//foo/...": แพ็กเกจ //foo และแพ็กเกจย่อยทั้งหมด
  • "public" หรือ "private": แพ็กเกจทั้งหมดหรือไม่มีแพ็กเกจตามลำดับ

ไม่สามารถใช้ไวยากรณ์ "@" ได้ ระบบจะตีความข้อกำหนดทั้งหมดที่เกี่ยวข้องกับที่เก็บของโมดูลปัจจุบัน

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

โปรดทราบว่าแฟล็ก --incompatible_package_group_has_public_syntax และ --incompatible_fix_package_group_reporoot_syntax จะไม่มีผลกับอาร์กิวเมนต์นี้ ค่า "public" และ "private" จะใช้ได้เสมอและระบบจะตีความ "//..." เป็น "แพ็กเกจทั้งหมดในที่เก็บปัจจุบัน" เสมอ

พื้นที่ทำงาน

None workspace(name)

ฟังก์ชันนี้ใช้ได้เฉพาะในไฟล์ WORKSPACE และต้องประกาศก่อนฟังก์ชันอื่นๆ ทั้งหมดในไฟล์ WORKSPACE ไฟล์ WORKSPACE แต่ละไฟล์ควรมีฟังก์ชัน workspace

ตั้งชื่อให้พื้นที่ทำงานนี้ ชื่อพื้นที่ทำงานควรเป็นคำอธิบายโปรเจ็กต์ในรูปแบบ Java โดยใช้ขีดล่างเป็นตัวคั่น เช่น github.com/bazelbuild/bazel ควรใช้ com_github_bazelbuild_bazel

ชื่อนี้จะใช้เป็นไดเรกทอรีที่เก็บ Runfile ของที่เก็บ เช่น ถ้ามี Runfile foo/bar ในที่เก็บภายใน และไฟล์ WORKSPACE มี workspace(name = 'baz') ไฟล์ Runfile จะอยู่ใน mytarget.runfiles/baz/foo/bar หากไม่ได้ระบุชื่อพื้นที่ทำงานไว้ ไฟล์ Runfile จะลิงก์กับ bar.runfiles/foo/bar

ชื่อกฎของที่เก็บระยะไกลต้องเป็นชื่อพื้นที่ทำงานที่ถูกต้อง ตัวอย่างเช่น คุณอาจมี maven_jar(name = 'foo') แต่ไม่ใช่ maven_jar(name = 'foo%bar') เนื่องจาก Bazel จะพยายามเขียนไฟล์ WORKSPACE สำหรับ maven_jar ที่มี workspace(name = 'foo%bar')

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
name ต้องระบุ
ชื่อพื้นที่ทำงาน ชื่อต้องขึ้นต้นด้วยตัวอักษรและมีได้เฉพาะตัวอักษร ตัวเลข ขีดล่าง ขีดกลาง และจุดเท่านั้น

zip

list zip(*args)

แสดงผล list ของ tuple โดยที่ Tuple i-th มีองค์ประกอบ i จากลำดับอาร์กิวเมนต์หรือแบบวนซ้ำแต่ละรายการ รายการจะมีขนาดของอินพุตที่สั้นที่สุด ด้วยอาร์กิวเมนต์ที่ทำซ้ำได้เดี่ยว ระบบจะแสดงรายการ 1-tuples เมื่อไม่มีอาร์กิวเมนต์ ระบบจะแสดงรายการที่ว่างเปล่า ตัวอย่าง:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
args รายการที่
จำเป็นต้องบีบอัด