ทั่วโลก

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

สมาชิก

ทั้งหมด

bool all(elements)

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

พารามิเตอร์

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

analysis_test_transition

transition analysis_test_transition(settings)

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
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)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
module_name ต้องระบุ
ชื่อของโมดูล Bazel ที่ต้องพึ่งพาเพื่อใช้การลบล้างนี้
urls string; or Iterable of strings; ต้องระบุ
URL ของไฟล์เก็บถาวร อาจเป็น URL รูปแบบ http(s):// หรือ file://
integrity default = ''
ค่าการตรวจสอบผลรวมที่คาดไว้ของไฟล์ที่เก็บถาวรในรูปแบบความสมบูรณ์ของเนื้อหาย่อย
strip_prefix default = ''
คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก
patches Iterable of strings; default = []
รายการป้ายกำกับที่ชี้ไปยังไฟล์แพตช์ที่จะใช้กับโมดูลนี้ ไฟล์แพตช์ต้องอยู่ในแผนผังซอร์สโค้ดของโปรเจ็กต์ระดับบนสุด ระบบจะบังคับใช้ตามลำดับรายการ
patch_cmds Iterable of strings; default = []
ลําดับคําสั่ง Bash ที่จะใช้ใน Linux/Macos หลังจากติดตั้งแพตช์
patch_strip ค่าเริ่มต้น = 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 รายการ ได้แก่ Target (เป้าหมายที่จะใช้แง่มุม) และ ctx (บริบทกฎที่สร้างเป้าหมาย) แอตทริบิวต์ของเป้าหมายจะแสดงผ่านช่อง ctx.rule ระบบจะประเมินฟังก์ชันนี้ในระหว่างระยะการวิเคราะห์สําหรับการใช้แง่มุมกับเป้าหมายแต่ละรายการ
attr_aspects sequence of strings; default = []
ชื่อแอตทริบิวต์ โดยแง่มุมจะเผยแพร่ไปตามข้อกําหนดซึ่งระบุไว้ในแอตทริบิวต์ของเป้าหมายที่มีชื่อเหล่านี้ ค่าที่พบบ่อยที่นี่ ได้แก่ deps และ exports รายการนี้อาจมีสตริง "*" รายการเดียวเพื่อนำไปใช้กับรายการที่เกี่ยวข้องทั้งหมดของเป้าหมาย
attrs dict; or None; default = None
คําจํานวนที่ประกาศแอตทริบิวต์ทั้งหมดของมุมมอง โดยจะแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ เช่น "attr.label" หรือ "attr.string" (ดูโมดูล attr) แอตทริบิวต์ของลักษณะจะพร้อมใช้งานสำหรับฟังก์ชันการใช้งานเป็นช่องของพารามิเตอร์ ctx

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

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

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

ระบบจะแปลงรายการผู้ให้บริการแบบไม่ฝังเป็นรายการที่มีรายการผู้ให้บริการรายการเดียวโดยอัตโนมัติ กล่าวคือ [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 default = []
แอตทริบิวต์นี้ช่วยให้แง่มุมนี้ตรวจสอบแง่มุมอื่นๆ ได้ ค่าต้องเป็นรายการที่มีผู้ให้บริการรายเดียวหรือรายการผู้ให้บริการ แต่ต้องไม่ใช่ทั้ง 2 อย่าง ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้อง แต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้อง

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

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

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

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

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

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

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

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

exec_compatible_with sequence of strings; default = []
รายข้อจำกัดในแพลตฟอร์มการดำเนินการที่มีผลกับอินสแตนซ์ทั้งหมดของด้านนี้
exec_groups dict; or None; default = None
Dict of execution group name (string) to exec_groups. หากตั้งค่าไว้ จะช่วยให้แง่มุมทําการบนแพลตฟอร์มการดําเนินการหลายแพลตฟอร์มภายในอินสแตนซ์เดียวได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับกลุ่มการดําเนินการ

bazel_dep

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

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

พารามิเตอร์

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

เชื่อมโยง

None bind(name, actual=None)

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
name ต้องระบุ
ป้ายกำกับในส่วน "//external" เพื่อใช้เป็นชื่อแทน
actual string; or None; default = None
The real label to be aliased

บูลีน

bool bool(x=False)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
x default = False
The variable to convert.

configuration_field

LateBoundDefault configuration_field(fragment, name)

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

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

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

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

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
fragment required
ชื่อของข้อมูลโค้ดการกําหนดค่าที่มีค่าที่ผูกในภายหลัง
name required
ชื่อของค่าที่จะรับจากข้อมูลโค้ดที่ตัดมาจากการกำหนดค่า

depset

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

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

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

เนื่องจากชุดที่อิงตามแฮชใช้เพื่อกำจัดรายการที่ซ้ำกันระหว่างการทำซ้ำ องค์ประกอบทั้งหมดของ depset จึงควรเป็นแฮชได้ อย่างไรก็ตาม ปัจจุบันยังไม่มีการตรวจสอบค่าคงที่นี้อย่างสม่ำเสมอในคอนสตรัคเตอร์ทั้งหมด ใช้ Flag --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; default = None
รายการองค์ประกอบ direct ของ depset
order default = "default"
กลยุทธ์การเรียกดูชุดข้อมูลใหม่ ดูค่าที่เป็นไปได้ได้ที่นี่
transitive sequence of depsets; or None; default = None
A list of depsets whose elements will become indirect elements of the depset.

dict

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

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

พารามิเตอร์

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

dir

list dir(x)

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

พารามิเตอร์

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

แจกแจง

list enumerate(list, start=0)

แสดงผลรายการคู่ (ทูเพลตแบบ 2 องค์ประกอบ) ที่มีดัชนี (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 = []
ชุดเครื่องมือทางเทคนิคที่กลุ่มการดำเนินการนี้ต้องใช้ รายการอาจมีออบเจ็กต์สตริง ป้ายกำกับ หรือ StarlarkToolchainTypeApi ผสมกันก็ได้
exec_compatible_with sequence of strings; default = []
A list of constraints on the execution platform.
copy_from_rule default = False
หากตั้งค่าเป็น "จริง" กลุ่ม exec นี้จะรับค่าโซลูชันเครื่องมือและข้อจำกัดของกฎที่แนบอยู่กับกลุ่มนี้ หากตั้งค่าเป็นสตริงอื่น ระบบจะแสดงข้อผิดพลาด

ล้มเหลว

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

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

พารามิเตอร์

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

จำนวนลอยตัว

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 required
สตรัคเจอร์ที่มีการเข้าถึงแอตทริบิวต์
name required
ชื่อแอตทริบิวต์ struct
default default = unbound
ค่าเริ่มต้นที่จะแสดงในกรณีที่โครงสร้างไม่มีแอตทริบิวต์ที่มีชื่อที่ระบุ

git_override

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

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

พารามิเตอร์

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

hasattr

bool hasattr(x, name)

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

พารามิเตอร์

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

แฮช

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 เป็น 2/8/16 <prefix> จะระบุหรือไม่ก็ได้และอาจเป็น 0b/0o/0x (หรือเทียบเท่าคือ 0B/0O/0X) ตามลำดับ หาก base เป็นค่าอื่นนอกเหนือจากฐานเหล่านี้หรือค่าพิเศษ 0 ส่วนนำหน้าต้องว่าง ในกรณีที่ base เป็น 0 ระบบจะตีความสตริงเป็นค่าตัวเลขเต็มตามตัวอักษร ในแง่ที่ว่าระบบจะเลือกฐานใดฐานหนึ่งจาก 2/8/10/16 โดยขึ้นอยู่กับคำนำหน้าที่ใช้ (หากมี) หาก base เป็น 0 ระบบจะไม่ใช้คำนำหน้า และหากมีตัวเลขมากกว่า 1 ตัว ตัวเลขนำหน้าต้องไม่ใช่ 0 ทั้งนี้เพื่อไม่ให้เกิดความสับสนระหว่างฐาน 8 กับฐาน 10 ขนาดของตัวเลขที่แสดงโดยสตริงต้องอยู่ภายในช่วงที่อนุญาตสําหรับประเภท int
  • หาก x เป็นตัวเลขทศนิยม int จะแสดงผลค่าจำนวนเต็มของตัวเลขทศนิยม โดยปัดเศษให้ใกล้กับ 0 ระบบจะแสดงข้อผิดพลาดหาก x ไม่ใช่จำนวนจำกัด (NaN หรือ Infinity)
ฟังก์ชันนี้จะใช้งานไม่ได้หาก x เป็นประเภทอื่น หรือหากค่าเป็นสตริงที่ไม่ตรงกับรูปแบบข้างต้น ฟังก์ชันนี้ไม่อนุญาตให้ใช้อาร์กิวเมนต์เป็น 0 และไม่อนุญาตให้มีเว้นวรรคที่ไม่จำเป็นสำหรับอาร์กิวเมนต์สตริง ซึ่งแตกต่างจากฟังก์ชัน int ของ Python

ตัวอย่าง

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 default = unbound
ค่าฐานที่ใช้ตีความค่าสตริง โดยค่าเริ่มต้นคือ 10 ต้องอยู่ระหว่าง 2 ถึง 36 (รวม) หรือ 0 เพื่อตรวจหาฐานเสมือนว่า x เป็นนิพจน์จำนวนเต็ม ต้องไม่ระบุพารามิเตอร์นี้หากค่าไม่ใช่สตริง

len

int len(x)

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

พารามิเตอร์

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

list

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 default = []
ออบเจ็กต์ที่จะแปลง

local_path_override

None local_path_override(module_name, path)

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

พารามิเตอร์

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

สูงสุด

unknown max(*args)

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

พารามิเตอร์

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

นาที

unknown min(*args)

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

พารามิเตอร์

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

โมดูล

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

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

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

พารามิเตอร์

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
implementation required
ฟังก์ชันที่ใช้ส่วนขยายโมดูลนี้ ต้องรับพารามิเตอร์เดียว module_ctx ระบบจะเรียกใช้ฟังก์ชันนี้ 1 ครั้งในช่วงเริ่มต้นของการสร้างเพื่อระบุชุดที่เก็บที่มีอยู่
tag_classes default = {}
พจนานุกรมสำหรับประกาศคลาสแท็กทั้งหมดที่ใช้โดยส่วนขยาย โดยแมปจากชื่อคลาสแท็กไปยังออบเจ็กต์ tag_class
doc default = ''
คำอธิบายส่วนขยายของโมดูลที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้
environ sequence of strings; default = []
ให้รายการตัวแปรสภาพแวดล้อมที่ส่วนขยายโมดูลนี้ใช้ หากตัวแปรสภาพแวดล้อมในรายการมีการเปลี่ยนแปลง ระบบจะประเมินส่วนขยายอีกครั้ง
os_dependent default = False
ระบุว่าส่วนขยายนี้ขึ้นอยู่กับระบบปฏิบัติการหรือไม่
arch_dependent default = False
ระบุว่าส่วนขยายนี้ขึ้นอยู่กับสถาปัตยกรรมหรือไม่

multiple_version_override

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

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

พารามิเตอร์

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

พิมพ์

None print(sep=" ", *args)

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

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

พารามิเตอร์

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

provider

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 ระบบจะแสดงผล tupple ที่มี 2 องค์ประกอบ ได้แก่ ค่าที่เรียกใช้ได้ของ Provider และค่าที่เรียกใช้ได้ของ ตัวสร้างแบบดิบ ดูรายละเอียดได้ที่กฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการที่กำหนดเอง) และการพูดคุยเกี่ยวกับพารามิเตอร์ init ด้านล่าง

พารามิเตอร์

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

  • ชื่อฟิลด์พจนานุกรม -> เอกสารประกอบ:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
ไม่จำเป็นต้องกรอกข้อมูลครบทุกช่อง
init callable; or None; default = None
การเรียกกลับที่ไม่บังคับสําหรับการประมวลผลก่อนการประมวลผลและตรวจสอบค่าฟิลด์ของผู้ให้บริการระหว่างการสร้างอินสแตนซ์ หากระบุ init provider() จะแสดงผล tupple ที่มี 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() จะกลายเป็นทูเปิล (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 required
ค่าขององค์ประกอบเริ่มต้นหากระบุค่าหยุดไว้ มิฉะนั้นค่าของหยุดและค่าเริ่มต้นจริงจะเป็น 0
stop_or_none int; or None; default = None
index ของรายการแรก (ไม่บังคับ) ที่ไม่รวมอยู่ในรายการผลลัพธ์ การสร้างรายการจะหยุดก่อนถึง stop
step default = 1
การเพิ่มขึ้น (ค่าเริ่มต้นคือ 1) ผลลัพธ์อาจออกมาเป็นลบ

register_execution_platforms()

None register_execution_platforms(*platform_labels)

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

พารามิเตอร์

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

register_execution_platforms(dev_dependency)

None register_execution_platforms(dev_dependency=False, *platform_labels)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
dev_dependency default = False
หากเป็น "จริง" ระบบจะไม่ลงทะเบียนแพลตฟอร์มการเรียกใช้หากโมดูลปัจจุบันไม่ใช่โมดูลรูทหรือเปิดใช้ `--ignore_dev_dependency`
platform_labels sequence of strings; ต้องระบุ
ป้ายกำกับของแพลตฟอร์มที่จะจดทะเบียน

register_toolchains()

None register_toolchains(*toolchain_labels)

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

พารามิเตอร์

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

register_toolchains(dev_dependency)

None register_toolchains(dev_dependency=False, *toolchain_labels)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
dev_dependency default = False
หากเป็น "จริง" ระบบจะไม่ลงทะเบียนเครื่องมือทางเทคนิคหากโมดูลปัจจุบันไม่ใช่โมดูลรูทหรือเปิดใช้ `--ignore_dev_dependency`
toolchain_labels sequence of strings; ต้องระบุ
ป้ายกำกับของเครื่องมือทางเทคนิคที่จะลงทะเบียน

repository_rule

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

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

พารามิเตอร์

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

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

ค่าของอาร์กิวเมนต์นี้คือพจนานุกรมหรือฟังก์ชัน Callback ที่สร้างพจนานุกรม ฟังก์ชัน Callback ทํางานคล้ายกับแอตทริบิวต์ความเกี่ยวข้องที่คำนวณแล้ว โดยระบบจะจับคู่ชื่อพารามิเตอร์ของฟังก์ชันกับแอตทริบิวต์ของกฎ เช่น หากคุณส่ง 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" dirname คือ a และ basename คือ b.c

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

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

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

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

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

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

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

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

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

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

ชื่อของกฎนี้ตามที่ 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
Dict ที่แมปเงื่อนไขการกําหนดค่ากับค่า คีย์แต่ละรายการคือป้ายกํากับหรือสตริงป้ายกํากับที่ระบุอินสแตนซ์ config_setting หรือ constraint_value ดูเอกสารประกอบเกี่ยวกับมาโครเพื่อดูกรณีที่ควรใช้ป้ายกำกับแทนสตริง
no_match_error default = ''
ข้อผิดพลาดที่กำหนดเองซึ่งไม่บังคับเพื่อรายงานหากไม่มีเงื่อนไขที่ตรงกัน

single_version_override

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

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

พารามิเตอร์

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

จัดเรียง

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
iterable ต้องระบุ
ลําดับที่วนซ้ำได้เพื่อจัดเรียง
key default = None
เป็นฟังก์ชันที่ไม่บังคับซึ่งใช้กับแต่ละองค์ประกอบก่อนการเปรียบเทียบ
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 default = {}
พจนานุกรมเพื่อประกาศแอตทริบิวต์ทั้งหมดของคลาสแท็กนี้ โดยจะแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr)
doc default = ''
คำอธิบายคลาสแท็กที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้

มัด

tuple tuple(x=())

แสดงผลทูเปิลที่มีองค์ประกอบเหมือนกับค่าที่รับค่าซ้ำได้
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 required
ออบเจ็กต์ที่จะตรวจสอบประเภท

use_extension

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

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

พารามิเตอร์

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

ปัจจุบันพารามิเตอร์นี้เป็นเวอร์ชันทดลองและใช้ได้กับ Flag --experimental_isolated_extension_usages เท่านั้น

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() โดยตรงและตรรกะสั้นๆ ที่จําเป็นต่อการกำหนดอาร์กิวเมนต์

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

พารามิเตอร์

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

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

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

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

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

โปรดทราบว่า Flag --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

ชื่อนี้ใช้สำหรับไดเรกทอรีที่จัดเก็บไฟล์รันไทม์ของที่เก็บ ตัวอย่างเช่น หากมีไฟล์เรียกใช้ foo/bar ในที่เก็บข้อมูลในเครื่องและไฟล์ WORKSPACE มี workspace(name = 'baz') ไฟล์เรียกใช้จะอยู่ใน mytarget.runfiles/baz/foo/bar หากไม่ได้ระบุชื่อพื้นที่ทํางาน ระบบจะลิงก์ไฟล์เรียกใช้กับ 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 โดยที่ทูเปิลที่ i จะมีองค์ประกอบที่ i จากลําดับอาร์กิวเมนต์หรือรายการที่วนซ้ำได้แต่ละรายการ รายการจะมีขนาดเท่ากับอินพุตที่สั้นที่สุด เมื่อใช้อาร์กิวเมนต์ที่วนซ้ำได้รายการเดียว ฟังก์ชันนี้จะแสดงผลรายการมัลติเพล็กซ์ 1 รายการ หากไม่มีอาร์กิวเมนต์ ระบบจะแสดงผลรายการว่าง ตัวอย่าง
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 รายการ
ต้องระบุเพื่อใส่ไฟล์ ZIP