Global

Objek, fungsi, dan modul yang terdaftar di lingkungan global.

Anggota

semua

bool all(elements)

Menampilkan true (benar) jika semua elemen bernilai True atau jika kumpulan kosong. Elemen dikonversi ke boolean menggunakan fungsi bool.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

Parameter

Parameter Deskripsi
elements wajib
String atau kumpulan elemen.

analysis_test_transition

transition analysis_test_transition(settings)

Membuat transisi konfigurasi untuk diterapkan pada dependensi aturan analisis-pengujian. Transisi ini hanya dapat diterapkan pada atribut aturan dengan analysis_test = True. Kemampuan aturan tersebut dibatasi (misalnya, ukuran hierarki dependensinya terbatas), sehingga transisi yang dibuat menggunakan fungsi ini memiliki potensi cakupan yang terbatas jika dibandingkan dengan transisi yang dibuat menggunakan transisi.

Fungsi ini terutama dirancang untuk memfasilitasi library inti Framework Pengujian Analisis. Lihat dokumentasi (atau penerapannya) untuk mengetahui praktik terbaik.

Parameter

Parameter Deskripsi
settings wajib
Kamus yang berisi informasi tentang setelan konfigurasi yang harus disetel oleh transisi konfigurasi ini. Kunci adalah label setelan build, dan nilai adalah nilai pasca-transisi baru. Semua setelan lainnya tidak berubah. Gunakan ini untuk mendeklarasikan setelan konfigurasi tertentu yang diperlukan untuk menetapkan pengujian analisis agar lulus.

apa pun

bool any(elements)

Menampilkan true (benar) jika setidaknya satu elemen bernilai True (Benar). Elemen dikonversi ke boolean menggunakan fungsi bool.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

Parameter

Parameter Deskripsi
elements wajib
String atau kumpulan elemen.

archive_override

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

Menentukan bahwa dependensi ini harus berasal dari file arsip (zip, gzip, dll.) di lokasi tertentu, bukan dari registry. Perintah ini hanya berlaku di modul root; Dengan kata lain, jika modul digunakan sebagai dependensi oleh orang lain, penggantiannya sendiri akan diabaikan.

Parameter

Parameter Deskripsi
module_name wajib
Nama dependensi modul Bazel tempat penggantian ini diterapkan.
urls string; or Iterable of strings; wajib
URL arsip; dapat berupa URL http(s):// atau file://.
integrity default = ''
Checksum file arsip yang diharapkan, dalam format Integritas Subresource.
strip_prefix default = ''
Awalan direktori yang akan dihapus dari file yang diekstrak.
patches Iterable of strings; default = []
Daftar label yang mengarah ke file patch yang akan diterapkan ke modul ini. File patch harus ada di hierarki sumber project tingkat atas. Aturan tersebut diterapkan dalam urutan daftar.
patch_cmds Iterable of strings; default = []
Urutan perintah Bash yang akan diterapkan di Linux/Macos setelah patch diterapkan.
patch_strip default = 0
Sama seperti argumen --strip pada Unix patch.

aspek

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)

Membuat aspek baru. Hasil dari fungsi ini harus disimpan dalam nilai global. Lihat pengantar Aspek untuk detail selengkapnya.

Parameter

Parameter Deskripsi
implementation wajib
Fungsi Starlark yang menerapkan aspek ini, dengan tepat dua parameter: Target (target tempat aspek diterapkan) dan ctx (konteks aturan tempat target dibuat). Atribut target tersedia melalui kolom ctx.rule. Fungsi ini dievaluasi selama fase analisis untuk setiap penerapan aspek pada target.
attr_aspects sequence of strings; default = []
Daftar nama atribut. Aspek ini disebarkan bersama dependensi yang ditentukan dalam atribut target dengan nama-nama ini. Nilai umum di sini mencakup deps dan exports. Daftar ini juga dapat berisi satu string "*" untuk diterapkan di sepanjang semua dependensi target.
attrs dict; or None; default = Tidak ada
Kamus yang mendeklarasikan semua atribut aspek. Atribut ini memetakan dari nama atribut ke objek atribut, seperti `attr.label` atau `attr.string` (lihat modul attr). Atribut aspek tersedia untuk fungsi penerapan sebagai kolom parameter ctx.

Atribut implisit yang dimulai dengan _ harus memiliki nilai default, dan memiliki jenis label atau label_list.

Atribut eksplisit harus memiliki jenis string, dan harus menggunakan batasan values. Atribut eksplisit membatasi aspek agar hanya digunakan dengan aturan yang memiliki atribut dengan nama, jenis, dan nilai valid yang sama sesuai dengan batasan.

required_providers default = []
Atribut ini memungkinkan aspek membatasi penerapannya hanya ke target yang aturannya mengiklankan penyedia yang diperlukan. Nilainya harus berupa daftar yang berisi penyedia individual atau daftar penyedia, tetapi tidak keduanya. Misalnya, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] adalah nilai yang valid, sedangkan [FooInfo, BarInfo, [BazInfo, QuxInfo]] tidak valid.

Daftar penyedia yang tidak bertingkat akan otomatis dikonversi ke daftar yang berisi satu daftar penyedia. Artinya, [FooInfo, BarInfo] akan otomatis dikonversi menjadi [[FooInfo, BarInfo]].

Agar beberapa target aturan (misalnya, some_rule) terlihat oleh aspek, some_rule harus mengiklankan semua penyedia dari minimal salah satu daftar penyedia yang diwajibkan. Misalnya, jika required_providers aspek adalah [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], aspek ini hanya dapat melihat target some_rule jika dan hanya jika some_rule menyediakan FooInfo *atau* BarInfo *atau* BazInfo *dan* QuxInfo.

required_aspect_providers default = []
Atribut ini memungkinkan aspek ini memeriksa aspek lain. Nilainya harus berupa daftar yang berisi penyedia individual atau daftar penyedia, tetapi tidak keduanya. Misalnya, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] adalah nilai yang valid, sedangkan [FooInfo, BarInfo, [BazInfo, QuxInfo]] tidak valid.

Daftar penyedia yang tidak bertingkat akan otomatis dikonversi ke daftar yang berisi satu daftar penyedia. Artinya, [FooInfo, BarInfo] akan otomatis dikonversi menjadi [[FooInfo, BarInfo]].

Untuk membuat aspek lain (misalnya, other_aspect) terlihat pada aspek ini, other_aspect harus menyediakan semua penyedia dari setidaknya salah satu daftar. Dalam contoh [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], aspek ini hanya dapat melihat other_aspect jika dan hanya jika other_aspect menyediakan FooInfo *atau* BarInfo *atau* BazInfo *dan* QuxInfo.

provides default = []
Daftar penyedia yang harus ditampilkan oleh fungsi implementasi.

Muncul error jika fungsi implementasi menghilangkan salah satu jenis penyedia yang tercantum di sini dari nilai yang ditampilkannya. Namun, fungsi implementasi mungkin menampilkan penyedia tambahan yang tidak tercantum di sini.

Setiap elemen daftar adalah objek *Info yang ditampilkan oleh provider(), kecuali bahwa penyedia lama diwakili oleh nama stringnya.

requires sequence of Aspects; default = []
Daftar aspek yang diperlukan untuk disebarkan sebelum aspek ini.
fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aspek dalam konfigurasi target.
host_fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aspek dalam konfigurasi host.
toolchains sequence; default = []
Jika ditetapkan, set toolchain yang diperlukan aturan ini. Daftar dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun. Toolchain akan ditemukan dengan memeriksa platform saat ini, dan diberikan ke penerapan aturan melalui ctx.toolchain.
incompatible_use_toolchain_transition default = Salah
Tidak digunakan lagi, tidak lagi digunakan dan harus dihapus.
doc default = ''
Deskripsi aspek yang dapat diekstrak dengan alat penghasil dokumentasi.
apply_to_generating_rules default = Salah
Jika benar, aspek akan, saat diterapkan ke file output, akan diterapkan ke aturan pembuatan file output.

Misalnya, aspek menyebar secara transitif melalui atribut `deps` dan diterapkan ke `alpha` target. Misalkan `alpha` memiliki `deps = [':beta_output']`, dengan `beta_output` adalah output yang dideklarasikan dari `beta` target. Misalkan `beta` memiliki target `charlie` sebagai salah satu `deps`-nya. Jika `apply_to_generate_rules=True` untuk aspek, aspek tersebut akan menyebar ke seluruh `alpha`, `beta`, dan `charlie`. Jika False, aspek ini hanya akan disebarkan ke `alpha`.

Salah secara default.

exec_compatible_with sequence of strings; default = []
Daftar batasan pada platform eksekusi yang berlaku untuk semua instance aspek ini.
exec_groups dict; or None; default = Tidak ada
Dikte nama grup eksekusi (string) ke exec_group dtk. Jika ditetapkan, memungkinkan aspek untuk menjalankan tindakan pada beberapa platform eksekusi dalam satu instance. Lihat dokumentasi grup eksekusi untuk info selengkapnya.

bazel_dep

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

Mendeklarasikan dependensi langsung pada modul Bazel lainnya.

Parameter

Parameter Deskripsi
name wajib
Nama modul yang akan ditambahkan sebagai dependensi langsung.
version default = ''
Versi modul yang akan ditambahkan sebagai dependensi langsung.
max_compatibility_level default = -1
compatibility_level maksimum yang didukung untuk modul yang akan ditambahkan sebagai dependensi langsung. Versi modul menyiratkan kompatibilitas_level minimum yang didukung, serta level maksimum jika atribut ini tidak ditentukan.
repo_name default = ''
Nama repo eksternal yang mewakili dependensi ini. Ini secara default adalah nama modul.
dev_dependency default = Salah
Jika true (benar), dependensi ini akan diabaikan jika modul saat ini bukan modul root atau `--ignore_dev_dependency` diaktifkan.

pengikatan

None bind(name, actual=None)

Peringatan: penggunaan bind() tidak direkomendasikan. Lihat Mempertimbangkan penghapusan ikatan untuk diskusi panjang tentang masalah dan alternatifnya.

Memberikan alias pada target dalam paket //external.

Parameter

Parameter Deskripsi
name wajib
Label di bagian '//eksternal' digunakan sebagai nama alias
actual string; or None; default = Tidak ada
Label sebenarnya yang akan diberi alias

bool

bool bool(x=False)

Konstruktor untuk jenis bool. Metode ini menampilkan False jika objeknya adalah None, False, string kosong (""), angka 0, atau koleksi kosong (misalnya, (), []). Jika tidak, True akan ditampilkan.

Parameter

Parameter Deskripsi
x default = Salah
Variabel yang akan dikonversi.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Mereferensikan nilai default akhir batas untuk atribut jenis label. Nilainya adalah 'terikat terlambat' jika memerlukan konfigurasi yang harus dibangun sebelum menentukan nilainya. Setiap atribut yang menggunakan ini sebagai nilai harus bersifat pribadi.

Contoh penggunaan:

Menentukan atribut aturan:

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

Mengakses dalam penerapan aturan:

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

Parameter

Parameter Deskripsi
fragment wajib
Nama fragmen konfigurasi yang berisi nilai yang terikat akhir.
name wajib
Nama nilai yang akan diperoleh dari fragmen konfigurasi.

Depset

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

Membuat depset. Parameter direct adalah daftar elemen langsung dari depset, dan parameter transitive adalah daftar depset yang elemennya menjadi elemen tidak langsung dari depset yang dibuat. Urutan elemen yang ditampilkan saat depset dikonversi menjadi daftar ditentukan oleh parameter order. Lihat Ringkasan DEX untuk mengetahui informasi selengkapnya.

Semua elemen (langsung dan tidak langsung) dari depset harus berjenis sama, seperti yang diperoleh dengan ekspresi type(x).

Karena set berbasis hash digunakan untuk menghilangkan duplikat selama iterasi, semua elemen depset harus dapat di-hash. Namun, invarian ini saat ini tidak diperiksa secara konsisten di semua konstruktor. Menggunakan tanda --incompatible_always_check_depset_ elements untuk memungkinkan pemeriksaan yang konsisten; ini akan menjadi perilaku default dalam rilis mendatang; lihat Masalah 10313.

Selain itu, elemen saat ini harus tidak dapat diubah, meskipun batasan ini akan dilonggarkan pada masa mendatang.

Urutan depset yang dibuat harus kompatibel dengan urutan depset transitive-nya. Pesanan "default" kompatibel dengan pesanan lainnya, semua pesanan lainnya hanya kompatibel dengan pesanan sendiri.

Catatan tentang kompatibilitas mundur/maju. Saat ini fungsi ini menerima parameter items posisi. Fungsi ini tidak digunakan lagi dan akan dihapus di masa mendatang, dan setelah dihapus, direct akan menjadi parameter posisi tunggal fungsi depset. Dengan demikian, kedua panggilan berikut ini setara dan siap menghadapi masa depan:

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

Parameter

Parameter Deskripsi
direct sequence; or None; default = Tidak ada
Daftar elemen langsung dari depset.
order default = "default"
Strategi traversal untuk depset baru. Lihat di sini untuk nilai yang memungkinkan.
transitive sequence of depsets; or None; default = Tidak ada
Daftar depset yang elemennya akan menjadi elemen tidak langsung dari depset.

dik

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

Membuat kamus dari argumen posisi opsional dan kumpulan argumen kata kunci opsional. Jika kunci yang sama diberikan beberapa kali, nilai terakhir akan digunakan. Entri yang diberikan melalui argumen kata kunci dianggap muncul setelah entri diberikan melalui argumen posisi.

Parameter

Parameter Deskripsi
pairs default = []
Dikte, atau iterable yang elemennya masing-masing memiliki panjang 2 (kunci, nilai).
kwargs wajib
Kamus entri tambahan.

dir

list dir(x)

Menampilkan daftar string: nama atribut dan metode dari objek parameter.

Parameter

Parameter Deskripsi
x wajib
Objek yang akan diperiksa.

sebutkan

list enumerate(list, start=0)

Menampilkan daftar pasangan (tuple dua elemen), dengan indeks (int) dan item dari urutan input.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

Parameter

Parameter Deskripsi
list wajib
urutan input teks.
start default = 0
mulai indeks.

exec_group

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

Membuat grup eksekusi yang dapat digunakan untuk membuat tindakan untuk platform eksekusi tertentu selama penerapan aturan.

Parameter

Parameter Deskripsi
toolchains sequence; default = []
Set toolchain yang diperlukan grup eksekusi ini. Daftar dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun.
exec_compatible_with sequence of strings; default = []
Daftar batasan pada platform eksekusi.
copy_from_rule default = Salah
Jika disetel ke benar (true), grup exec ini akan mewarisi toolchain dan batasan aturan tempat grup ini terpasang. Jika disetel ke string lain, error ini akan muncul.

fail

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

Menyebabkan eksekusi gagal dengan error.

Parameter

Parameter Deskripsi
msg default = Tidak ada
Tidak digunakan lagi: sebagai gantinya gunakan argumen posisi. Argumen ini berfungsi seperti argumen posisi utama yang implisit.
attr string; or None; default = Tidak ada
Tidak digunakan lagi. Menyebabkan awalan opsional yang berisi string ini ditambahkan ke pesan error.
args wajib
Daftar nilai, yang diformat dengan debugPrint (yang secara default setara dengan str) dan digabungkan dengan spasi, yang muncul dalam pesan error.

float

float float(x=unbound)

Menampilkan x sebagai nilai float.
  • Jika x sudah berupa float, float akan menampilkannya tanpa perubahan.
  • Jika x adalah bool, float akan menampilkan 1,0 untuk Benar dan 0,0 untuk Salah.
  • Jika x adalah int, float akan menampilkan nilai floating point terbatas yang terdekat dengan x, atau error jika magnitudonya terlalu besar.
  • Jika x adalah string, nilai tersebut harus berupa literal floating point yang valid, atau sama (mengabaikan huruf besar/kecil) dengan NaN, Inf, atau Infinity, secara opsional didahului dengan tanda + atau -.
Nilai lainnya akan menyebabkan error. Tanpa argumen, float() menampilkan 0.0.

Parameter

Parameter Deskripsi
x default = tak terikat
Nilai yang akan dikonversi.

getattr

unknown getattr(x, name, default=unbound)

Menampilkan kolom struct dari nama yang diberikan, jika ada. Jika tidak, tindakan tersebut akan menampilkan default (jika ditentukan) atau menyebabkan error. getattr(x, "foobar") setara dengan x.foobar.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

Parameter

Parameter Deskripsi
x wajib
Struct yang atributnya diakses.
name wajib
Nama atribut struct.
default default = tak terikat
Nilai default yang akan ditampilkan jika struct tidak memiliki atribut dengan nama yang diberikan.

git_override

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

Menentukan bahwa dependensi harus berasal dari commit tertentu dalam repositori Git. Perintah ini hanya berlaku di modul root; Dengan kata lain, jika modul digunakan sebagai dependensi oleh orang lain, penggantiannya sendiri akan diabaikan.

Parameter

Parameter Deskripsi
module_name wajib
Nama dependensi modul Bazel tempat penggantian ini diterapkan.
remote wajib
URL repositori Git jarak jauh.
commit default = ''
Commit yang harus diperiksa.
patches Iterable of strings; default = []
Daftar label yang mengarah ke file patch yang akan diterapkan ke modul ini. File patch harus ada di hierarki sumber project tingkat atas. Aturan tersebut diterapkan dalam urutan daftar.
patch_cmds Iterable of strings; default = []
Urutan perintah Bash yang akan diterapkan di Linux/Macos setelah patch diterapkan.
patch_strip default = 0
Sama seperti argumen --strip pada Unix patch.

hasattr

bool hasattr(x, name)

Menampilkan Benar jika objek x memiliki atribut atau metode dari name yang diberikan, jika tidak, Salah. Contoh:
hasattr(ctx.attr, "myattr")

Parameter

Parameter Deskripsi
x wajib
Objek yang akan diperiksa.
name wajib
Nama atribut.

hash

int hash(value)

Menampilkan nilai hash untuk string. Hal ini dihitung secara deterministik menggunakan algoritma yang sama seperti String.hashCode() Java, yaitu:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
Hashing nilai selain string saat ini tidak didukung.

Parameter

Parameter Deskripsi
value wajib
Nilai string yang akan di-hash.

int

int int(x, base=unbound)

Menampilkan x sebagai nilai int.
  • Jika x sudah merupakan int, int akan menampilkannya tanpa perubahan.
  • Jika x adalah bool, int akan menampilkan 1 untuk Benar dan 0 untuk Salah.
  • Jika x berupa string, maka harus memiliki format <sign><prefix><digits>. <sign> adalah "+", "-", atau kosong (ditafsirkan sebagai positif). <digits> adalah urutan digit dari 0 hingga base - 1, dengan huruf a-z (atau ekuivalen, A-Z) digunakan sebagai digit untuk 10-35. Jika base adalah 2/8/16, <prefix> bersifat opsional dan dapat berupa 0b/0o/0x (atau ekuivalen, 0B/0O/0X); jika base adalah nilai lain selain basis ini atau nilai khusus 0, awalan harus kosong. Jika base adalah 0, string ditafsirkan sebagai literal bilangan bulat, dalam artian bahwa salah satu basis 2/8/10/16 dipilih bergantung pada awalan mana jika ada digunakan. Jika base adalah 0, tidak ada awalan yang digunakan, dan ada lebih dari satu digit, digit di awal tidak boleh 0; ini untuk menghindari kebingungan antara oktal dan desimal. Besarnya angka yang diwakili oleh string harus berada dalam rentang yang diizinkan untuk jenis int.
  • Jika x adalah float, int akan menampilkan nilai bilangan bulat float, yang dibulatkan ke nol. Ini adalah kesalahan jika x tidak terbatas (NaN atau tak terhingga).
Fungsi ini akan gagal jika x adalah jenis lain, atau jika nilai adalah string yang tidak memenuhi format di atas. Tidak seperti fungsi int Python, fungsi ini tidak mengizinkan argumen nol, dan tidak mengizinkan spasi kosong yang tidak relevan untuk argumen string.

Contoh:

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

Parameter

Parameter Deskripsi
x wajib
String yang akan dikonversi.
base default = tak terikat
Basis yang digunakan untuk menafsirkan nilai string; defaultnya adalah 10. Harus antara 2 dan 36 (inklusif), atau 0 untuk mendeteksi dasar seolah-olah x adalah literal bilangan bulat. Parameter ini tidak boleh diberikan jika nilainya bukan string.

Len

int len(x)

Menampilkan panjang string, urutan (seperti daftar atau tuple), dict, atau iterable lainnya.

Parameter

Parameter Deskripsi
x wajib
Nilai yang durasinya dilaporkan.

list

list list(x=[])

Menampilkan daftar baru dengan elemen yang sama dengan nilai iterable yang diberikan.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

Parameter

Parameter Deskripsi
x default = []
Objek yang akan dikonversi.

local_path_override

None local_path_override(module_name, path)

Menentukan bahwa dependensi harus berasal dari direktori tertentu pada disk lokal. Perintah ini hanya berlaku di modul root; Dengan kata lain, jika modul digunakan sebagai dependensi oleh orang lain, penggantiannya sendiri akan diabaikan.

Parameter

Parameter Deskripsi
module_name wajib
Nama dependensi modul Bazel tempat penggantian ini diterapkan.
path wajib
Jalur ke direktori tempat modul ini berada.

maks

unknown max(*args)

Menampilkan salah satu terbesar dari semua argumen yang diberikan. Jika hanya ada satu argumen yang diberikan, argumen tersebut harus berupa iterable yang tidak kosong.Argumen tersebut akan error jika elemen tidak sebanding (misalnya, int dengan string), atau jika tidak ada argumen yang diberikan.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

Parameter

Parameter Deskripsi
args wajib
Elemen yang akan diperiksa.

mnt

unknown min(*args)

Menampilkan nilai terkecil dari semua argumen yang diberikan. Jika hanya satu argumen yang diberikan, argumen tersebut harus berupa iterable yang tidak kosong. Akan muncul error jika elemen tidak sebanding (misalnya, int dengan string), atau jika tidak ada argumen yang diberikan.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

Parameter

Parameter Deskripsi
args wajib
Elemen yang akan diperiksa.

modul

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

Mendeklarasikan properti modul Bazel tertentu yang diwakili oleh repo Bazel saat ini. Properti ini merupakan metadata penting modul (seperti nama dan versi), atau memengaruhi perilaku modul saat ini dan dependensinya.

Fungsi ini harus dipanggil paling banyak sekali. Elemen ini hanya dapat dihilangkan jika modul ini merupakan modul root (misalnya, jika modul tersebut tidak akan bergantung pada modul lain).

Parameter

Parameter Deskripsi
name default = ''
Nama modul. Hanya dapat dihilangkan jika modul ini merupakan modul root (misalnya, jika modul ini tidak akan bergantung pada modul lain). Nama modul yang valid harus: 1) hanya berisi huruf kecil (a-z), angka (0-9), titik (.), tanda hubung (-), dan garis bawah (_); 2) diawali dengan huruf kecil; 3) diakhiri dengan huruf kecil atau angka.
version default = ''
Versi modul. Hanya dapat dihilangkan jika modul ini merupakan modul root (misalnya, jika modul ini tidak akan bergantung pada modul lain).
compatibility_level default = 0
Tingkat kompatibilitas modul; ini harus diubah setiap kali muncul perubahan besar yang tidak kompatibel. Pada dasarnya, ini adalah "versi utama" modul dalam hal SemVer, kecuali bahwa modul tersebut tidak disematkan dalam string versi itu sendiri, tetapi ada sebagai kolom terpisah. Modul dengan tingkat kompatibilitas yang berbeda berpartisipasi dalam resolusi versi seolah-olah merupakan modul dengan nama yang berbeda, tetapi grafik dependensi akhir tidak boleh berisi beberapa modul dengan nama yang sama, tetapi tingkat kompatibilitasnya berbeda (kecuali jika multiple_version_override berlaku; lihat detail selengkapnya).
repo_name default = ''
Nama repositori yang merepresentasikan modul ini, seperti yang terlihat oleh modul itu sendiri. Secara default, nama repo adalah nama modul. Nama ini dapat ditentukan untuk memudahkan migrasi project yang telah menggunakan nama repo untuk dirinya sendiri yang berbeda dengan nama modulnya.
bazel_compatibility Iterable of strings; default = []
Daftar versi bazel yang memungkinkan pengguna menyatakan versi Bazel mana yang kompatibel dengan modul ini. Ini TIDAK memengaruhi resolusi dependensi, tetapi bzlmod akan menggunakan informasi ini untuk memeriksa apakah versi Bazel Anda saat ini kompatibel. Format nilai ini adalah string beberapa nilai batasan yang dipisahkan oleh koma. Tiga batasan yang didukung: <=X.X.X: Versi Bazel harus sama atau lebih lama dari X.X.X. Digunakan saat ada perubahan yang diketahui tidak kompatibel dalam versi yang lebih baru. >=X.X.X: Versi Bazel harus sama atau lebih baru dari X.X.X.Digunakan jika Anda bergantung pada beberapa fitur yang hanya tersedia sejak X.X.X. -X.X.X: Versi Bazel X.X.X tidak kompatibel. Digunakan saat ada bug di X.X.X yang mengganggu Anda, tetapi diperbaiki di versi yang lebih baru.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='', environ=[], os_dependent=False, arch_dependent=False)

Membuat ekstensi modul baru. Simpan dalam nilai global, sehingga dapat diekspor dan digunakan dalam file MODULE.bazel.

Parameter

Parameter Deskripsi
implementation wajib
Fungsi yang mengimplementasikan ekstensi modul ini. Harus mengambil satu parameter, module_ctx. Fungsi ini dipanggil sekali pada awal build untuk menentukan kumpulan repositori yang tersedia.
tag_classes default = {}
Kamus untuk mendeklarasikan semua class tag yang digunakan oleh ekstensi. Class ini memetakan dari nama class tag ke objek tag_class.
doc default = ''
Deskripsi ekstensi modul yang dapat diekstrak dengan alat pembuat dokumentasi.
environ sequence of strings; default = []
Menyediakan daftar variabel lingkungan yang diandalkan oleh ekstensi modul ini. Jika variabel lingkungan dalam daftar tersebut berubah, ekstensi akan dievaluasi ulang.
os_dependent default = Salah
Menunjukkan apakah ekstensi ini bergantung pada OS atau tidak
arch_dependent default = Salah
Menunjukkan apakah ekstensi ini bergantung pada arsitektur atau tidak

multiple_version_override

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

Menentukan bahwa dependensi harus tetap berasal dari registry, tetapi beberapa versi harus diizinkan untuk berdampingan. Lihat dokumentasi untuk mengetahui detail selengkapnya. Perintah ini hanya berlaku di modul root; Dengan kata lain, jika modul digunakan sebagai dependensi oleh orang lain, penggantiannya sendiri akan diabaikan.

Parameter

Parameter Deskripsi
module_name wajib
Nama dependensi modul Bazel tempat penggantian ini diterapkan.
versions Iterable of strings; wajib
Secara eksplisit menentukan versi yang diizinkan untuk berdampingan. Versi ini harus sudah ada di pra-pemilihan grafik dependensi. Dependensi pada modul ini akan "diupgrade" ke versi terdekat yang lebih tinggi yang diizinkan pada tingkat kompatibilitas yang sama, sedangkan dependensi yang memiliki versi lebih tinggi daripada versi yang diizinkan pada tingkat kompatibilitas yang sama akan menyebabkan error.
registry default = ''
Mengganti registry untuk modul ini; Alih-alih menemukan modul ini dari daftar default registry, Anda harus menggunakan registry yang ditentukan.

cetak

None print(sep=" ", *args)

Mencetak args sebagai output debug. Nama ini akan diawali dengan string "DEBUG" dan lokasi (file dan nomor baris) panggilan ini. Cara persis argumen dikonversi ke string tidak ditentukan dan dapat berubah kapan saja. Secara khusus, pemformatan ini mungkin berbeda dengan (dan lebih mendetail dibandingkan) pemformatan yang dilakukan oleh str() dan repr().

Menggunakan print dalam kode produksi tidak disarankan karena spam yang dibuat untuk pengguna. Untuk penghentian penggunaan, pilih error berat menggunakan fail() jika memungkinkan.

Parameter

Parameter Deskripsi
sep default = " "
" String pemisah antar-objek, defaultnya adalah spasi (" ").
args wajib
Objek yang akan dicetak.

provider

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

Menentukan simbol penyedia. Penyedia dapat dibuat instance-nya dengan memanggilnya, atau digunakan langsung sebagai kunci untuk mengambil instance penyedia tersebut dari target. Contoh:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Lihat Aturan (Penyedia) untuk mengetahui panduan komprehensif tentang cara menggunakan penyedia.

Menampilkan nilai callable Provider jika init tidak ditentukan.

Jika init ditentukan, akan menampilkan tuple yang terdiri dari 2 elemen: nilai callable Provider dan nilai callable konstruktor mentah. Lihat Aturan (Inisialisasi kustom untuk penyedia kustom) dan pembahasan parameter init di bawah untuk mengetahui detailnya.

Parameter

Parameter Deskripsi
doc default = ''
Deskripsi penyedia yang dapat diekstrak dengan alat penghasil dokumentasi.
fields sequence of strings; or dict; or None; default = Tidak ada
Jika ditentukan, akan membatasi kumpulan kolom yang diizinkan.
Kemungkinan nilainya adalah:
  • daftar kolom:
    provider(fields = ['a', 'b'])

  • nama bidang kamus -> dokumentasi:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Semua kolom bersifat opsional.
init callable; or None; default = Tidak ada
Callback opsional untuk pra-pemrosesan dan memvalidasi nilai kolom penyedia selama pembuatan instance. Jika init ditentukan, provider() akan menampilkan tuple yang berisi 2 elemen: simbol penyedia normal dan konstruktor mentah.

Berikut deskripsi tepatnya; lihat Aturan (Inisialisasi kustom penyedia) untuk mengetahui diskusi dan kasus penggunaan yang intuitif.

Misalkan P menjadi simbol penyedia yang dibuat dengan memanggil provider(). Secara konseptual, instance P dihasilkan dengan memanggil fungsi konstruktor default c(*args, **kwargs), yang melakukan hal berikut:

  • Jika args tidak kosong, error akan terjadi.
  • Jika parameter fields ditentukan saat provider() dipanggil, dan jika kwargs berisi kunci yang tidak tercantum dalam fields, error akan terjadi.
  • Jika tidak, c menampilkan instance baru yang memiliki kolom bernama k dengan nilai v untuk setiap entri k: v di kwargs.
Jika callback init tidak diberikan, panggilan ke simbol P itu sendiri akan bertindak sebagai panggilan ke fungsi konstruktor default c; dengan kata lain, P(*args, **kwargs) menampilkan c(*args, **kwargs). Misalnya,
MyInfo = provider()
m = MyInfo(foo = 1)
akan langsung membuatnya sehingga m adalah instance MyInfo dengan m.foo == 1.

Namun, jika init ditentukan, panggilan P(*args, **kwargs) akan melakukan langkah-langkah berikut:

  1. Callback dipanggil sebagai init(*args, **kwargs), yaitu dengan argumen kata kunci dan posisi yang sama persis seperti yang diteruskan ke P.
  2. Nilai yang ditampilkan init diharapkan berupa kamus, d, yang kuncinya adalah string nama kolom. Jika tidak, error akan terjadi.
  3. Instance baru P dibuat seolah-olah dengan memanggil konstruktor default dengan entri d sebagai argumen kata kunci, seperti di c(**d).

Catatan: langkah-langkah di atas menyiratkan bahwa error terjadi jika *args atau **kwargs tidak cocok dengan tanda tangan init, atau evaluasi isi init gagal (mungkin sengaja dilakukan melalui panggilan ke fail()), atau jika nilai yang ditampilkan init bukan kamus dengan skema yang diharapkan.

Dengan cara ini, callback init menggeneralisasi konstruksi penyedia normal dengan mengizinkan argumen posisi dan logika arbitrer untuk prapemrosesan dan validasi. Tindakan ini tidak memungkinkan pengelakan dari daftar fields yang diizinkan.

Jika init ditentukan, nilai yang ditampilkan provider() akan menjadi tuple (P, r), dengan r adalah konstruktor mentah. Bahkan, perilaku r persis seperti fungsi konstruktor default c yang dibahas di atas. Biasanya, r terikat dengan variabel yang namanya diawali dengan garis bawah, sehingga hanya file .bzl saat ini yang memiliki akses langsung ke variabel tersebut:

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

rentang

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

Membuat daftar tempat item berpindah dari start ke stop, menggunakan penambahan step. Jika satu argumen diberikan, item akan berkisar dari 0 hingga elemen tersebut.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

Parameter

Parameter Deskripsi
start_or_stop wajib
Nilai elemen awal jika perhentian diberikan, jika tidak, nilai perhentian dan awal yang sebenarnya adalah 0
stop_or_none int; or None; default = Tidak ada
indeks opsional item pertama tidak untuk disertakan dalam daftar yang dihasilkan; pembuatan daftar akan berhenti sebelum stop tercapai.
step default = 1
Penambahan (defaultnya adalah 1). Ini mungkin negatif.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Daftarkan platform yang sudah ditentukan sehingga Bazel dapat menggunakannya sebagai platform eksekusi selama resolusi toolchain.

Parameter

Parameter Deskripsi
platform_labels sequence of strings; wajib
Label platform yang akan didaftarkan.

register_execution_platforms(dev_dependency)

None register_execution_platforms(dev_dependency=False, *platform_labels)

Menentukan platform eksekusi yang telah ditentukan untuk didaftarkan saat modul ini dipilih. Harus berupa pola target absolut (yaitu, diawali dengan @ atau //). Lihat resolusi toolchain untuk informasi selengkapnya.

Parameter

Parameter Deskripsi
dev_dependency default = Salah
Jika true (benar), platform eksekusi tidak akan didaftarkan jika modul saat ini bukan modul root atau `--ignore_dev_dependency` diaktifkan.
platform_labels sequence of strings; wajib
Label platform yang akan didaftarkan.

register_toolchains()

None register_toolchains(*toolchain_labels)

Daftarkan toolchain yang telah ditetapkan sehingga Bazel dapat menggunakannya selama resolusi toolchain. Lihat contoh cara menentukan dan mendaftarkan toolchain.

Parameter

Parameter Deskripsi
toolchain_labels sequence of strings; wajib
Label toolchain yang akan didaftarkan.

register_toolchains(dev_dependency)

None register_toolchains(dev_dependency=False, *toolchain_labels)

Menentukan toolchain yang telah ditetapkan untuk didaftarkan saat modul ini dipilih. Harus berupa pola target absolut (yaitu, diawali dengan @ atau //). Lihat resolusi toolchain untuk informasi selengkapnya.

Parameter

Parameter Deskripsi
dev_dependency default = Salah
Jika true (benar), toolchain tidak akan didaftarkan jika modul saat ini bukan modul root atau `--ignore_dev_dependency` diaktifkan.
toolchain_labels sequence of strings; wajib
Label toolchain yang akan didaftarkan.

repository_rule

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

Membuat aturan repositori baru. Simpan dalam nilai global, sehingga dapat dimuat dan dipanggil dari file WORKSPACE.

Parameter

Parameter Deskripsi
implementation wajib
fungsi yang mengimplementasikan aturan ini. Harus memiliki satu parameter, repository_ctx. Fungsi ini dipanggil selama fase pemuatan untuk setiap instance aturan.
attrs dict; or None; default = Tidak ada
kamus untuk mendeklarasikan semua atribut aturan. Atribut ini memetakan dari nama atribut ke objek atribut (lihat modul attr). Atribut yang dimulai dengan _ bersifat pribadi, dan dapat digunakan untuk menambahkan dependensi implisit pada label ke file (aturan repositori tidak dapat bergantung pada artefak yang dihasilkan). Atribut name ditambahkan secara implisit dan tidak boleh ditentukan.
local default = Salah
Tunjukkan bahwa aturan ini mengambil semuanya dari sistem lokal dan harus dievaluasi ulang setiap kali pengambilan.
environ sequence of strings; default = []
Menyediakan daftar variabel lingkungan yang diandalkan oleh aturan repositori ini. Jika variabel lingkungan dalam daftar tersebut berubah, repositori akan diambil kembali.
configure default = Salah
Menunjukkan bahwa repositori memeriksa sistem untuk tujuan konfigurasi
remotable default = Salah
Eksperimental. Parameter ini bersifat eksperimental dan dapat berubah kapan saja. Harap tidak bergantung padanya. Fitur ini dapat diaktifkan secara eksperimental dengan menyetel ---experimental_repo_remote_exec
Kompatibel dengan eksekusi jarak jauh
doc default = ''
Deskripsi aturan repositori yang dapat diekstrak dengan alat yang menghasilkan dokumentasi.

repr

string repr(x)

Mengonversi objek apa pun menjadi representasi string. Hal ini berguna untuk proses debug.
repr("ab") == '"ab"'

Parameter

Parameter Deskripsi
x wajib
Objek yang akan dikonversi.

dibalik

list reversed(sequence)

Menampilkan daftar baru yang tidak dibekukan yang berisi elemen urutan iterable asli dalam urutan terbalik.
reversed([3, 5, 4]) == [4, 5, 3]

Parameter

Parameter Deskripsi
sequence wajib
Urutan iterable (misalnya, daftar) yang akan dibalik.

aturan

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)

Membuat aturan baru, yang dapat dipanggil dari file BUILD atau makro untuk membuat target.

Aturan harus ditetapkan ke variabel global dalam file .bzl; nama variabel global adalah nama aturan.

Aturan pengujian harus memiliki nama yang diakhiri dengan _test, sedangkan semua aturan lainnya tidak boleh memiliki akhiran ini. (Pembatasan ini hanya berlaku untuk aturan, bukan targetnya.)

Parameter

Parameter Deskripsi
implementation wajib
fungsi Starlark yang menerapkan aturan ini harus memiliki tepat satu parameter: ctx. Fungsi tersebut dipanggil selama fase analisis untuk setiap instance aturan. Dapat mengakses atribut yang disediakan oleh pengguna. Aplikasi harus membuat tindakan untuk menghasilkan semua output yang dideklarasikan.
test default = Salah
Apakah aturan ini merupakan aturan pengujian, yaitu apakah aturan tersebut merupakan subjek perintah blaze test. Semua aturan pengujian secara otomatis dianggap dapat dijalankan; executable = True tidak perlu ditetapkan (dan tidak disarankan) untuk aturan pengujian secara eksplisit. Lihat halaman Aturan untuk mengetahui informasi selengkapnya.
attrs dict; or None; default = Tidak ada
kamus untuk mendeklarasikan semua atribut aturan. Atribut ini memetakan dari nama atribut ke objek atribut (lihat modul attr). Atribut yang dimulai dengan _ bersifat pribadi, dan dapat digunakan untuk menambahkan dependensi implisit pada label. Atribut name ditambahkan secara implisit dan tidak boleh ditentukan. Atribut visibility, deprecation, tags, testonly, dan features ditambahkan secara implisit dan tidak dapat diganti. Sebagian besar aturan hanya memerlukan beberapa atribut. Untuk membatasi penggunaan memori, fungsi aturan akan menetapkan batas ukuran atribut.
outputs dict; or None; or function; default = Tidak ada
Tidak digunakan lagi. Parameter ini tidak digunakan lagi dan akan segera dihapus. Harap tidak bergantung padanya. Layanan ini dinonaktifkan dengan ---incompatible_no_rule_outputs_param. Gunakan tanda ini untuk memverifikasi bahwa kode Anda kompatibel dengan penghapusan yang akan segera terjadi.
Parameter ini tidak digunakan lagi. Migrasikan aturan untuk menggunakan OutputGroupInfo atau attr.output sebagai gantinya.

Skema untuk menentukan output yang telah dideklarasikan. Tidak seperti atribut output dan output_list, pengguna tidak menentukan label untuk file ini. Lihat halaman Aturan untuk mengetahui informasi selengkapnya tentang output yang telah dideklarasikan.

Nilai argumen ini adalah kamus atau fungsi callback yang menghasilkan kamus. Callback berfungsi mirip dengan atribut dependensi yang dihitung: Nama parameter fungsi dicocokkan dengan atribut aturan, jadi misalnya jika Anda meneruskan outputs = _my_func dengan definisi def _my_func(srcs, deps): ..., fungsi tersebut memiliki akses ke atribut srcs dan deps. Baik kamus ditentukan secara langsung atau melalui fungsi, kamus akan ditafsirkan sebagai berikut.

Tiap entri dalam kamus membuat output yang telah dideklarasikan sebelumnya, dengan kuncinya adalah ID dan nilainya adalah template string yang menentukan label output. Dalam fungsi penerapan aturan, ID menjadi nama kolom yang digunakan untuk mengakses File output di ctx.outputs. Label output memiliki paket yang sama dengan aturan, dan bagian setelah paket dibuat dengan mengganti setiap placeholder dari bentuk "%{ATTR}" dengan string yang dibentuk dari nilai atribut ATTR:

  • Atribut bertipe string diganti verbatim.
  • Atribut berjenis label menjadi bagian dari label setelah paket, tanpa ekstensi file. Misalnya, label "//pkg:a/b.c" menjadi "a/b".
  • Atribut berjenis output menjadi bagian dari label setelah paket, termasuk ekstensi file (untuk contoh di atas, "a/b.c").
  • Semua atribut jenis daftar (misalnya, attr.label_list) yang digunakan dalam placeholder harus memiliki persis satu elemen. Konversinya sama dengan versi non-daftarnya (attr.label).
  • Jenis atribut lainnya mungkin tidak muncul di placeholder.
  • Placeholder non-atribut khusus %{dirname} dan %{basename} diperluas ke bagian label aturan tersebut, tidak termasuk paketnya. Misalnya, dalam "//pkg:a/b.c", dirname-nya adalah a dan basename-nya adalah b.c.

Dalam praktiknya, placeholder pengganti yang paling umum adalah "%{name}". Misalnya, untuk target bernama "foo", output dict {"bin": "%{name}.exe"} mendeklarasikan output bernama foo.exe di awal yang dapat diakses dalam fungsi implementasi sebagai ctx.outputs.bin.

executable default = Salah
Apakah aturan ini dianggap dapat dieksekusi, yaitu apakah aturan ini merupakan subjek perintah blaze run. Lihat halaman Aturan untuk mengetahui informasi selengkapnya.
output_to_genfiles default = Salah
Jika true (benar), file akan dibuat di direktori genfiles, bukan direktori bin. Jangan setel flag ini kecuali Anda memerlukannya untuk kompatibilitas dengan aturan yang ada (misalnya saat membuat file header untuk C++).
fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aturan dalam konfigurasi target.
host_fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aturan dalam konfigurasi host.
_skylark_testable default = Salah
(Eksperimental)

Jika true (benar), aturan ini akan menampilkan tindakannya untuk diperiksa oleh aturan yang bergantung padanya melalui penyedia Actions. Penyedia juga tersedia untuk aturan itu sendiri dengan memanggil ctx.created_actions().

Ini hanya boleh digunakan untuk menguji perilaku waktu analisis aturan Starlark. Tanda ini dapat dihapus pada masa mendatang.
toolchains sequence; default = []
Jika ditetapkan, set toolchain yang diperlukan aturan ini. Daftar dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun. Toolchain akan ditemukan dengan memeriksa platform saat ini, dan diberikan ke penerapan aturan melalui ctx.toolchain.
incompatible_use_toolchain_transition default = Salah
Tidak digunakan lagi, tidak lagi digunakan dan harus dihapus.
doc default = ''
Deskripsi aturan yang dapat diekstrak dengan alat pembuat dokumentasi.
provides default = []
Daftar penyedia yang harus ditampilkan oleh fungsi implementasi.

Muncul error jika fungsi implementasi menghilangkan salah satu jenis penyedia yang tercantum di sini dari nilai yang ditampilkannya. Namun, fungsi implementasi mungkin menampilkan penyedia tambahan yang tidak tercantum di sini.

Setiap elemen daftar adalah objek *Info yang ditampilkan oleh provider(), kecuali bahwa penyedia lama diwakili oleh nama stringnya.

exec_compatible_with sequence of strings; default = []
Daftar batasan pada platform eksekusi yang berlaku untuk semua target jenis aturan ini.
analysis_test default = Salah
Jika true (benar), aturan ini diperlakukan sebagai pengujian analisis.

Catatan: Aturan pengujian analisis terutama ditentukan menggunakan infrastruktur yang disediakan di library Starlark inti. Lihat Menguji untuk mendapatkan panduan.

Jika sebuah aturan ditetapkan sebagai aturan pengujian analisis, aturan tersebut akan diizinkan untuk menggunakan transisi konfigurasi yang ditentukan menggunakan analysis_test_transition di atributnya, tetapi dapat menerapkan beberapa batasan berikut:

  • Jumlah target aturan ini terbatas dalam jumlah dependensi transitif yang mungkin dimilikinya.
  • Aturan ini dianggap sebagai aturan pengujian (seolah-olah test=True ditetapkan). Ini menggantikan nilai test
  • Fungsi penerapan aturan tidak boleh mendaftarkan tindakan. Sebagai gantinya, aplikasi harus mendaftarkan hasil yang lulus/gagal dengan memberikan AnalysisTestResultInfo.
build_setting BuildSetting; or None; default = Tidak ada
Jika ditetapkan, menjelaskan jenis build setting aturan ini. Lihat modul config. Jika disetel, atribut wajib bernama "build_setting_default" secara otomatis ditambahkan ke aturan ini, dengan jenis yang sesuai dengan nilai yang diteruskan di sini.
cfg default = Tidak ada
Jika ditetapkan, mengarah ke transisi konfigurasi yang akan diterapkan aturan ke konfigurasinya sendiri sebelum analisis.
exec_groups dict; or None; default = Tidak ada
Dikte nama grup eksekusi (string) ke exec_group dtk. Jika ditetapkan, mengizinkan aturan untuk menjalankan tindakan pada beberapa platform eksekusi dalam satu target. Lihat dokumentasi grup eksekusi untuk info selengkapnya.
compile_one_filetype sequence of strings; or None; default = Tidak ada
Digunakan oleh --compile_one_dependency: jika beberapa aturan menggunakan file yang ditentukan, apakah kita harus memilih aturan ini daripada aturan lainnya.
name string; or None; default = Tidak ada
Tidak digunakan lagi. Parameter ini tidak digunakan lagi dan akan segera dihapus. Harap tidak bergantung padanya. Layanan ini dinonaktifkan dengan --+incompatible_remove_rule_name_parameter. Gunakan tanda ini untuk memverifikasi bahwa kode Anda kompatibel dengan penghapusan yang akan segera terjadi.
Tidak digunakan lagi: jangan digunakan.

Nama aturan ini, seperti yang dipahami oleh Bazel dan dilaporkan dalam konteks seperti logging, native.existing_rule(...)[kind], dan bazel query. Biasanya sama dengan pengenal Starlark yang terikat dengan aturan ini; misalnya aturan yang disebut foo_library biasanya akan dideklarasikan sebagai foo_library = rule(...) dan dibuat instance-nya dalam file BUILD sebagai foo_library(...).

Jika parameter ini dihilangkan, nama aturan ditetapkan ke nama variabel global Starlark pertama yang akan terikat dengan aturan ini dalam modul .bzl yang mendeklarasikan. Dengan demikian, foo_library = rule(...) tidak perlu menentukan parameter ini jika namanya adalah foo_library.

Menentukan nama eksplisit untuk aturan tidak akan mengubah tempat Anda diizinkan untuk membuat instance aturan.

pilih

unknown select(x, no_match_error='')

select() adalah fungsi bantuan yang membuat atribut aturan dapat dikonfigurasi. Lihat membuat ensiklopedia untuk mengetahui detailnya.

Parameter

Parameter Deskripsi
x wajib
Dikte yang memetakan kondisi konfigurasi ke nilai. Setiap kunci adalah Label atau string label yang mengidentifikasi instance config_setting atau constraint_value. Lihat dokumentasi tentang makro untuk mengetahui kapan harus menggunakan Label, bukan string.
no_match_error default = ''
Error kustom opsional yang akan dilaporkan jika tidak ada kondisi yang cocok.

single_version_override

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

Menentukan bahwa dependensi harus tetap berasal dari registry, tetapi versinya harus disematkan, atau registrynya diganti, atau daftar patch diterapkan. Perintah ini hanya berlaku di modul root; Dengan kata lain, jika modul digunakan sebagai dependensi oleh orang lain, penggantiannya sendiri akan diabaikan.

Parameter

Parameter Deskripsi
module_name wajib
Nama dependensi modul Bazel tempat penggantian ini diterapkan.
version default = ''
Mengganti versi yang dideklarasikan modul ini dalam grafik dependensi. Dengan kata lain, modul ini akan "disematkan" ke versi pengganti ini. Atribut ini dapat dihilangkan jika semua yang ingin diganti adalah registry atau patch.
registry default = ''
Mengganti registry untuk modul ini; Alih-alih menemukan modul ini dari daftar default registry, Anda harus menggunakan registry yang ditentukan.
patches Iterable of strings; default = []
Daftar label yang mengarah ke file patch yang akan diterapkan ke modul ini. File patch harus ada di hierarki sumber project tingkat atas. Aturan tersebut diterapkan dalam urutan daftar.
patch_cmds Iterable of strings; default = []
Urutan perintah Bash yang akan diterapkan di Linux/Macos setelah patch diterapkan.
patch_strip default = 0
Sama seperti argumen --strip pada Unix patch.

diurutkan

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

Menampilkan daftar baru yang diurutkan yang berisi semua elemen urutan iterable yang disediakan. Kesalahan dapat terjadi jika sepasang elemen x, y mungkin tidak dibandingkan menggunakan x < t Elemen diurutkan ke dalam urutan menaik, kecuali jika argumen terbaliknya adalah True, dalam hal ini urutannya menurun. Penyortiran stabil: elemen yang membandingkan sama dengan mempertahankan urutan relatif aslinya.
sorted([3, 5, 4]) == [3, 4, 5]

Parameter

Parameter Deskripsi
iterable wajib
Urutan iterable untuk mengurutkan.
key default = Tidak ada
Fungsi opsional yang diterapkan pada setiap elemen sebelum perbandingan.
reverse default = Salah
Tampilkan hasil dalam urutan menurun.

str

string str(x)

Mengonversi objek apa pun menjadi string. Hal ini berguna untuk proses debug.
str("ab") == "ab"
str(8) == "8"

Parameter

Parameter Deskripsi
x wajib
Objek yang akan dikonversi.

tag_class

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

Membuat objek tag_class baru, yang menentukan skema atribut untuk class tag, yang merupakan objek data yang dapat digunakan oleh ekstensi modul.

Parameter

Parameter Deskripsi
attrs default = {}
Kamus untuk mendeklarasikan semua atribut class tag ini. Atribut ini memetakan dari nama atribut ke objek atribut (lihat modul attr).
doc default = ''
Deskripsi class tag yang dapat diekstrak dengan alat pembuat dokumentasi.

tuple

tuple tuple(x=())

Menampilkan tuple dengan elemen yang sama seperti nilai iterable yang diberikan.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

Parameter

Parameter Deskripsi
x default = ()
Objek yang akan dikonversi.

jenis

string type(x)

Menampilkan nama jenis argumennya. Ini berguna untuk proses debug dan pemeriksaan jenis. Contoh:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
Fungsi ini mungkin berubah pada masa mendatang. Untuk menulis kode yang kompatibel dengan Python dan membuatnya siap menghadapi masa depan, gunakan kode tersebut hanya untuk membandingkan nilai yang ditampilkan:
if type(x) == type([]):  # if x is a list

Parameter

Parameter Deskripsi
x wajib
Objek untuk diperiksa jenisnya.

use_extension

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

Menampilkan objek proxy yang merepresentasikan ekstensi modul; metodenya bisa dipanggil untuk membuat tag ekstensi modul.

Parameter

Parameter Deskripsi
extension_bzl_file wajib
Label ke file Starlark yang menentukan ekstensi modul.
extension_name wajib
Nama ekstensi modul yang akan digunakan. Simbol dengan nama ini harus diekspor oleh file Starlark.
dev_dependency default = Salah
Jika true (benar), penggunaan ekstensi modul ini akan diabaikan jika modul saat ini bukan modul root atau `--ignore_dev_dependency` diaktifkan.
isolate default = Salah
Eksperimental. Parameter ini bersifat eksperimental dan dapat berubah kapan saja. Harap tidak bergantung padanya. Fitur ini dapat diaktifkan secara eksperimental dengan menyetel ---experimental_isolated_extension_usages
Jika true (benar), penggunaan ekstensi modul ini akan diisolasi dari semua penggunaan lain, baik dalam modul ini maupun modul lainnya. Tag yang dibuat untuk penggunaan ini tidak memengaruhi penggunaan lain dan repositori yang dihasilkan oleh ekstensi untuk penggunaan ini akan berbeda dengan semua repositori lain yang dihasilkan oleh ekstensi.

Parameter ini saat ini bersifat eksperimental dan hanya tersedia dengan tanda --experimental_isolated_extension_usages.

use_repo

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

Mengimpor satu atau beberapa repositori yang dihasilkan oleh ekstensi modul tertentu ke dalam cakupan modul saat ini.

Parameter

Parameter Deskripsi
extension_proxy wajib
Objek proxy ekstensi modul yang ditampilkan oleh panggilan use_extension.
args wajib
Nama repositori yang akan diimpor.
kwargs wajib
Menentukan repositori tertentu yang akan diimpor ke dalam cakupan modul saat ini dengan nama yang berbeda. Kunci harus berupa nama yang akan digunakan dalam cakupan saat ini, sedangkan nilai harus berupa nama asli yang diekspor oleh ekstensi modul.

visibilitas

None visibility(value)

Menyetel visibilitas beban modul .bzl yang sedang diinisialisasi.

Visibilitas muatan modul mengatur apakah file BUILD dan .bzl lain dapat memuatnya atau tidak. (Hal ini berbeda dengan visibilitas target file sumber .bzl yang mendasarinya, yang mengatur apakah file tersebut muncul sebagai dependensi target lain.) Visibilitas beban berfungsi di level paket: Untuk memuat modul, file yang melakukan pemuatan harus berada di paket yang telah diberi visibilitas ke modul. Modul selalu dapat dimuat dalam paketnya sendiri, terlepas dari visibilitasnya.

visibility() hanya dapat dipanggil sekali per file .bzl, dan hanya di level teratas, bukan di dalam fungsi. Gaya yang disukai adalah menempatkan panggilan ini tepat di bawah pernyataan load() dan logika singkat yang diperlukan untuk menentukan argumen.

Jika tanda --check_bzl_visibility ditetapkan ke salah (false), pelanggaran visibilitas pemuatan akan memberikan peringatan, tetapi tidak akan menggagalkan build.

Parameter

Parameter Deskripsi
value wajib
Daftar string spesifikasi paket, atau string spesifikasi paket tunggal.

Spesifikasi paket mengikuti format yang sama seperti package_group, namun spesifikasi paket negatif tidak diizinkan. Artinya, spesifikasi dapat berupa:

  • "//foo": paket //foo
  • "//foo/...": paket //foo dan semua sub-paketnya.
  • "public" atau "private": semua paket atau tanpa paket

Huruf "@" {i>syntax<i} tidak diizinkan; semua spesifikasi diinterpretasikan relatif terhadap repositori modul saat ini.

Jika value adalah daftar string, kumpulan paket yang diberi visibilitas ke modul ini adalah gabungan dari paket yang direpresentasikan oleh setiap spesifikasi. (Daftar kosong memiliki efek yang sama dengan private.) Jika value adalah string tunggal, string tersebut diperlakukan seolah-olah itu adalah daftar singleton [value].

Perhatikan bahwa flag --incompatible_package_group_has_public_syntax dan --incompatible_fix_package_group_reporoot_syntax tidak berpengaruh pada argumen ini. Nilai "public" dan "private" selalu tersedia, dan "//..." selalu ditafsirkan sebagai "semua paket di repositori saat ini".

ruang kerja

None workspace(name)

Fungsi ini hanya dapat digunakan dalam file WORKSPACE dan harus dideklarasikan sebelum semua fungsi lain dalam file WORKSPACE. Setiap file WORKSPACE harus memiliki fungsi workspace.

Menetapkan nama untuk ruang kerja ini. Nama ruang kerja harus berupa deskripsi project bergaya Java, menggunakan garis bawah sebagai pemisah, misalnya, github.com/bazelbuild/bazel harus menggunakan com_github_bazelbuild_bazel.

Nama ini digunakan untuk direktori tempat runfile repositori disimpan. Misalnya, jika ada foo/bar runfile di repositori lokal dan file WORKSPACE berisi workspace(name = 'baz'), runfile akan tersedia di bagian mytarget.runfiles/baz/foo/bar. Jika nama ruang kerja tidak ditentukan, runfile akan di-symlink ke bar.runfiles/foo/bar.

Nama aturan repositori jarak jauh harus berupa nama ruang kerja yang valid. Misalnya, Anda dapat memiliki maven_jar(name = 'foo'), tetapi bukan maven_jar(name = 'foo%bar'), karena Bazel akan mencoba menulis file WORKSPACE untuk maven_jar yang berisi workspace(name = 'foo%bar').

Parameter

Parameter Deskripsi
name wajib
nama ruang kerja. Nama harus diawali dengan huruf dan hanya berisi huruf, angka, garis bawah, tanda hubung, dan titik.

zip

list zip(*args)

Menampilkan list dari tuple, dengan tuple ke-i berisi elemen ke-i dari setiap urutan argumen atau iterable. Daftar ini memiliki ukuran input terpendek. Dengan satu argumen iterable, fungsi ini menampilkan daftar 1-tuple. Tanpa argumen, kueri akan menampilkan daftar kosong. Contoh:
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)]

Parameter

Parameter Deskripsi
args wajib
ke file ZIP.