Laporkan masalahopen_in_new
Lihat sumberopen_in_new
Nightly
·
8.4
·
8.3
·
8.2
·
8.1
·
8.0
·
7.6
Aturan
py_binary
Lihat sumber aturanopen_in_new
py_binary(name, deps, srcs, data, args, aspect_hints, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, imports, interpreter_args, legacy_create_init, licenses, main, main_module, output_licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
Argumen
Atribut |
name |
Nama; wajib
Nama unik untuk target ini.
|
deps
|
Daftar label; defaultnya adalah []
Daftar library tambahan yang akan ditautkan ke target.
Lihat komentar tentang
atribut [`deps` yang biasanya ditentukan oleh
aturan](https://bazel.build/reference/be/common-definitions#typical-attributes).
Biasanya berupa aturan `py_library`.
Target yang hanya menyediakan file data yang digunakan saat runtime termasuk dalam atribut `data`.
:::{note}
Urutan daftar ini penting karena memengaruhi urutan penggabungan informasi
dari dependensi, yang dapat relevan bergantung pada mode pengurutan
depset yang digabungkan.
* {obj}`PyInfo.site_packages_symlinks` menggunakan pengurutan topologi.
Lihat {obj}`PyInfo` untuk mengetahui informasi selengkapnya tentang pengurutan depsets dan cara penggabungan kolomnya.
:::
|
srcs
|
Daftar label; defaultnya adalah []
Daftar file sumber Python yang diproses untuk membuat target. Hal ini mencakup semua kode yang Anda check in dan dapat mencakup file sumber yang dihasilkan. File
`.py` berada di `srcs` dan target library berada di `deps`. File biner
lain yang mungkin diperlukan saat runtime berada di `data`.
|
data
|
Daftar label; defaultnya adalah []
Daftar file yang diperlukan oleh library ini saat runtime. Lihat komentar tentang
atribut [`data` yang biasanya ditentukan oleh aturan](https://bazel.build/reference/be/common-definitions#typical-attributes).
Tidak ada `py_embed_data` seperti `cc_embed_data` dan `go_embed_data`.
Hal ini karena Python memiliki konsep resource runtime.
|
distribs
|
Daftar string; defaultnya adalah []
|
imports
|
Daftar string; defaultnya adalah []
Daftar direktori impor yang akan ditambahkan ke PYTHONPATH.
Tunduk pada substitusi "Buat variabel". Direktori impor ini akan ditambahkan untuk aturan ini dan semua aturan yang bergantung padanya (catatan: bukan aturan yang bergantung pada aturan ini). Setiap direktori akan ditambahkan ke `PYTHONPATH` oleh aturan `py_binary` yang bergantung pada aturan ini. String bersifat relatif terhadap repo-runfiles-root,
Jalur absolut (jalur yang dimulai dengan `/`) dan jalur yang mereferensikan jalur
di atas root eksekusi tidak diizinkan dan akan menyebabkan error.
|
interpreter_args
|
Daftar string; defaultnya adalah []
Argumen yang hanya berlaku untuk interpreter.
Argumen yang didukung interpreter bersifat khusus untuk interpreter tersebut. Untuk
CPython, lihat https://docs.python.org/3/using/cmdline.html.
::{note}
Hanya didukung untuk {obj}`--bootstrap_impl=script`. Diabaikan jika tidak.
:::
:::{seealso}
Variabel lingkungan {any}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS`
:::
:::{versionadded} 1.3.0
:::
|
legacy_create_init
|
Bilangan bulat; defaultnya adalah -1
Apakah akan membuat file `__init__.py` kosong secara implisit di hierarki runfile.
File ini dibuat di setiap direktori yang berisi kode sumber Python atau library bersama, dan setiap direktori induk dari direktori tersebut, kecuali direktori root repo. Default, `-1` (otomatis), berarti benar kecuali jika
`--incompatible_default_to_explicit_init_py` digunakan. Jika salah (false), pengguna
bertanggung jawab untuk membuat file `__init__.py` (mungkin kosong) dan menambahkannya ke `srcs` target Python sesuai kebutuhan.
|
main
|
Label; defaultnya adalah None
Opsional; nama file sumber yang merupakan titik entri utama
aplikasi. File ini juga harus tercantum di `srcs`. Jika tidak ditentukan, `name`, dengan `.py` ditambahkan, akan digunakan. Jika `name` tidak cocok dengan nama file mana pun di `srcs`, `main` harus ditentukan.
Ini tidak dapat muncul bersamaan dengan {obj}`main_module`.
|
main_module
|
String; default-nya adalah ""
Nama modul yang akan dieksekusi sebagai program utama.
Jika disetel, `srcs` tidak diperlukan, dan diasumsikan modul disediakan oleh dependensi.
Lihat https://docs.python.org/3/using/cmdline.html#cmdoption-m untuk mengetahui informasi selengkapnya tentang menjalankan modul sebagai program utama.
Ini tidak dapat muncul bersamaan dengan {obj}`main`.
:::{versionadded} 1.3.0
:::
|
precompile
|
String; default-nya adalah "inherit"
Apakah file sumber py **untuk target ini** harus dikompilasi sebelumnya.
Nilai:
* `inherit`: Izinkan biner hilir memutuskan apakah file yang telah dikompilasi sebelumnya digunakan.
* `enabled`: Mengompilasi file sumber Python pada waktu build.
* `disabled`: Jangan kompilasi file sumber Python pada waktu build.
::{seealso}
* Flag {flag}`--precompile`, yang dapat menggantikan atribut ini dalam beberapa kasus
dan akan memengaruhi semua target saat membangun.
* Atribut {obj}`pyc_collection` untuk mengaktifkan pra-kompilasi secara transitif berdasarkan per target.
* Dokumen [Precompiling](precompiling) untuk panduan tentang penggunaan precompiling.
:::
|
precompile_invalidation_mode
|
String; default-nya adalah "auto"
Cara memverifikasi apakah file yang telah dikompilasi sebelumnya sudah terbaru dengan file sumber terkaitnya. Nilai yang mungkin adalah:
* `auto`: Nilai efektif akan ditentukan secara otomatis oleh setelan build lainnya.
* `checked_hash`: Gunakan file pyc jika hash file sumber cocok dengan hash
yang dicatat dalam file pyc. Hal ini paling berguna saat bekerja dengan kode yang
mungkin Anda ubah.
* `unchecked_hash`: Selalu gunakan file pyc; jangan periksa hash pyc terhadap
file sumber. Hal ini paling berguna saat kode tidak akan diubah.
Untuk mengetahui informasi selengkapnya tentang mode pembatalan pyc, lihat
https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
|
precompile_optimize_level
|
Bilangan bulat; defaultnya adalah 0
Tingkat pengoptimalan untuk file yang telah dikompilasi sebelumnya.
Untuk mengetahui informasi selengkapnya tentang tingkat pengoptimalan, lihat dokumen argumen `optimize` fungsi `compile()` di https://docs.python.org/3/library/functions.html#compile
CATATAN: Nilai `-1` berarti "interpreter saat ini", yang akan menjadi interpreter yang digunakan _pada waktu build saat pyc dibuat_, bukan interpreter yang digunakan pada waktu runtime saat kode benar-benar berjalan.
|
precompile_source_retention
|
String; default-nya adalah "inherit"
Menentukan, saat file sumber dikompilasi, apakah file sumber disimpan
dalam output yang dihasilkan atau tidak. Nilai yang valid adalah:
* `inherit`: Mewarisi nilai dari tanda {flag}`--precompile_source_retention`.
* `keep_source`: Menyertakan sumber Python asli.
* `omit_source`: Jangan sertakan sumber py asli.
|
pyc_collection
|
String; default-nya adalah "inherit"
Menentukan apakah file pyc dari dependensi harus disertakan secara manual.
Nilai yang valid adalah:
* `inherit`: Mewarisi nilai dari {flag}`--precompile`.
* `include_pyc`: Menambahkan file pyc yang dibuat secara implisit dari dependensi. Artinya,
file pyc untuk target yang menentukan {attr}`precompile="inherit"`.
* `disabled`: Jangan menambahkan file pyc yang dibuat secara implisit. Perhatikan bahwa
file pyc masih dapat berasal dari dependensi yang memungkinkan pra-kompilasi di
tingkat target.
|
pyi_deps
|
Daftar label; defaultnya adalah []
Dependensi yang menyediakan definisi jenis yang dibutuhkan library.
Ini adalah dependensi yang memenuhi impor yang dilindungi oleh `typing.TYPE_CHECKING`.
Ini hanya dependensi waktu build dan tidak disertakan sebagai bagian dari program
yang dapat dijalankan (namun, aturan pengemasan dapat menyertakannya).
::{versionadded} 1.1.0
:::
|
pyi_srcs
|
Daftar label; defaultnya adalah []
File definisi jenis untuk library.
Biasanya berupa file `.pyi`, tetapi jenis file lain untuk format khusus pemeriksa jenis diizinkan. File ini hanya merupakan dependensi waktu build dan tidak disertakan
sebagai bagian dari program yang dapat dijalankan (namun, aturan pengemasan dapat menyertakannya).
::{versionadded} 1.1.0
:::
|
python_version
|
String; default-nya adalah ""
Versi Python yang harus digunakan target ini.
Nilai harus dalam format `X.Y` atau `X.Y.Z` (atau yang kompatibel). Jika kosong atau tidak ditentukan, tanda {obj}`--python_version` konfigurasi masuk akan diwarisi. Untuk kompatibilitas mundur, nilai `PY2` dan `PY3` diterima, tetapi diperlakukan sebagai nilai kosong/tidak ditentukan.
::{note}
Agar versi yang diminta dapat digunakan, harus ada toolchain yang dikonfigurasi agar sesuai dengan versi Python. Jika tidak ada, maka
mungkin diabaikan tanpa pemberitahuan, atau error dapat terjadi, bergantung pada konfigurasi toolchain.
:::
:::{versionchanged} 1.1.0
Atribut ini diubah dari hanya menerima nilai `PY2` dan `PY3` menjadi
menerima versi Python arbitrer.
:::
|
srcs_version
|
String; default-nya adalah ""
Tidak berfungsi, tidak digunakan, tidak melakukan apa pun.
|
stamp
|
Bilangan bulat; defaultnya adalah -1
Apakah akan mengenkode informasi build ke dalam biner. Nilai yang mungkin:
* `stamp = 1`: Selalu mencap informasi build ke dalam biner, bahkan dalam build
`--nostamp`. **Setelan ini harus dihindari**, karena berpotensi menghentikan
penyimpanan dalam cache jarak jauh untuk biner dan tindakan hilir yang bergantung padanya.
* `stamp = 0`: Selalu ganti informasi build dengan nilai konstanta. Hal ini memberikan
penyimpanan cache hasil build yang baik.
* `stamp = -1`: Penyematan informasi build dikontrol oleh
flag `--[no]stamp`.
Biner yang diberi stempel tidak dibangun ulang kecuali jika dependensinya berubah.
PERINGATAN: Pemberian stempel dapat merusak performa build dengan mengurangi hit cache dan harus dihindari jika memungkinkan.
|
py_library
Lihat sumber aturanopen_in_new
py_library(name, deps, srcs, data, aspect_hints, compatible_with, deprecation, distribs, exec_compatible_with, exec_group_compatible_with, exec_properties, experimental_venvs_site_packages, features, imports, licenses, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyi_deps, pyi_srcs, restricted_to, srcs_version, tags, target_compatible_with, testonly, toolchains, visibility)
Library kode Python yang dapat diandalkan.
Output default:
* Sumber Python input
* Artefak yang telah dikompilasi sebelumnya dari sumber.
CATATAN: Pra-kompilasi memengaruhi output default mana yang disertakan dalam
runfile yang dihasilkan. Lihat atribut dan flag terkait pra-kompilasi untuk mengetahui informasi selengkapnya.
::{versionchanged} 0.37.0
File sumber tidak lagi ditambahkan langsung ke runfile.
:::
Argumen
Atribut |
name |
Nama; wajib
Nama unik untuk target ini.
|
deps
|
Daftar label; defaultnya adalah []
Daftar library tambahan yang akan ditautkan ke target.
Lihat komentar tentang
atribut [`deps` yang biasanya ditentukan oleh
aturan](https://bazel.build/reference/be/common-definitions#typical-attributes).
Biasanya berupa aturan `py_library`.
Target yang hanya menyediakan file data yang digunakan saat runtime termasuk dalam atribut `data`.
:::{note}
Urutan daftar ini penting karena memengaruhi urutan penggabungan informasi
dari dependensi, yang dapat relevan bergantung pada mode pengurutan
depset yang digabungkan.
* {obj}`PyInfo.site_packages_symlinks` menggunakan pengurutan topologi.
Lihat {obj}`PyInfo` untuk mengetahui informasi selengkapnya tentang pengurutan depsets dan cara penggabungan kolomnya.
:::
|
srcs
|
Daftar label; defaultnya adalah []
Daftar file sumber Python yang diproses untuk membuat target. Hal ini mencakup semua kode yang Anda check in dan dapat mencakup file sumber yang dihasilkan. File
`.py` berada di `srcs` dan target library berada di `deps`. File biner
lain yang mungkin diperlukan saat runtime berada di `data`.
|
data
|
Daftar label; defaultnya adalah []
Daftar file yang diperlukan oleh library ini saat runtime. Lihat komentar tentang
atribut [`data` yang biasanya ditentukan oleh aturan](https://bazel.build/reference/be/common-definitions#typical-attributes).
Tidak ada `py_embed_data` seperti `cc_embed_data` dan `go_embed_data`.
Hal ini karena Python memiliki konsep resource runtime.
|
distribs
|
Daftar string; defaultnya adalah []
|
experimental_venvs_site_packages
|
Label; defaultnya adalah None
**ATRIBUT INTERNAL. HANYA BOLEH DITETAPKAN OLEH kode rules_python-INTERNAL.**
::{include} /_includes/experimental_api.md
:::
Flag yang menentukan apakah library harus memperlakukan sumbernya sebagai tata letak site-packages.
Jika tanda ditetapkan ke `yes`, file `srcs` akan diperlakukan sebagai tata letak paket situs yang relatif terhadap atribut `imports`. Atribut `imports` hanya dapat memiliki satu elemen. Ini adalah jalur file yang dapat dijalankan relatif terhadap repo.
Misalnya, dalam file `my/pkg/BUILD.bazel`, jika diberikan
`srcs=["site-packages/foo/bar.py"]`, dengan menentukan
`imports=["my/pkg/site-packages"]` berarti `foo/bar.py` adalah jalur file
di direktori site-packages venv biner yang harus tersedia (yaitu,
`import foo.bar` akan berfungsi).
File `__init__.py` diperlakukan secara khusus untuk memberikan dukungan dasar bagi [paket namespace implisit](
https://packaging.python.org/en/latest/guides/packaging-namespace-packages/#native-namespace-packages).
Namun, *konten* file tidak dapat dipertimbangkan, hanya
keberadaan atau ketidakberadaannya. Dengan kata lain: [paket namespace gaya pkgutil](
https://packaging.python.org/en/latest/guides/packaging-namespace-packages/#pkgutil-style-namespace-packages)
tidak akan dipahami sebagai paket namespace; paket tersebut akan dilihat sebagai paket reguler. Hal ini kemungkinan akan menyebabkan konflik dengan target lain yang berkontribusi pada namespace.
::{tip}
Atribut ini mengisi {obj}`PyInfo.site_packages_symlinks`, yang merupakan
depset yang diurutkan secara topologi. Artinya, dependensi yang lebih dekat dan lebih awal
dengan konsumen akan diprioritaskan. Lihat {obj}`PyInfo.site_packages_symlinks` untuk
mengetahui informasi selengkapnya.
::
:::{versionadded} 1.4.0
:::
|
imports
|
Daftar string; defaultnya adalah []
Daftar direktori impor yang akan ditambahkan ke PYTHONPATH.
Tunduk pada substitusi "Buat variabel". Direktori impor ini akan ditambahkan untuk aturan ini dan semua aturan yang bergantung padanya (catatan: bukan aturan yang bergantung pada aturan ini). Setiap direktori akan ditambahkan ke `PYTHONPATH` oleh aturan `py_binary` yang bergantung pada aturan ini. String bersifat relatif terhadap repo-runfiles-root,
Jalur absolut (jalur yang dimulai dengan `/`) dan jalur yang mereferensikan jalur
di atas root eksekusi tidak diizinkan dan akan menyebabkan error.
|
precompile
|
String; default-nya adalah "inherit"
Apakah file sumber py **untuk target ini** harus dikompilasi sebelumnya.
Nilai:
* `inherit`: Izinkan biner hilir memutuskan apakah file yang telah dikompilasi sebelumnya digunakan.
* `enabled`: Mengompilasi file sumber Python pada waktu build.
* `disabled`: Jangan kompilasi file sumber Python pada waktu build.
::{seealso}
* Flag {flag}`--precompile`, yang dapat menggantikan atribut ini dalam beberapa kasus
dan akan memengaruhi semua target saat membangun.
* Atribut {obj}`pyc_collection` untuk mengaktifkan pra-kompilasi secara transitif berdasarkan per target.
* Dokumen [Precompiling](precompiling) untuk panduan tentang penggunaan precompiling.
:::
|
precompile_invalidation_mode
|
String; default-nya adalah "auto"
Cara memverifikasi apakah file yang telah dikompilasi sebelumnya sudah terbaru dengan file sumber terkaitnya. Nilai yang mungkin adalah:
* `auto`: Nilai efektif akan ditentukan secara otomatis oleh setelan build lainnya.
* `checked_hash`: Gunakan file pyc jika hash file sumber cocok dengan hash
yang dicatat dalam file pyc. Hal ini paling berguna saat bekerja dengan kode yang
mungkin Anda ubah.
* `unchecked_hash`: Selalu gunakan file pyc; jangan periksa hash pyc terhadap
file sumber. Hal ini paling berguna saat kode tidak akan diubah.
Untuk mengetahui informasi selengkapnya tentang mode pembatalan pyc, lihat
https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
|
precompile_optimize_level
|
Bilangan bulat; defaultnya adalah 0
Tingkat pengoptimalan untuk file yang telah dikompilasi sebelumnya.
Untuk mengetahui informasi selengkapnya tentang tingkat pengoptimalan, lihat dokumen argumen `optimize` fungsi `compile()` di https://docs.python.org/3/library/functions.html#compile
CATATAN: Nilai `-1` berarti "interpreter saat ini", yang akan menjadi interpreter yang digunakan _pada waktu build saat pyc dibuat_, bukan interpreter yang digunakan pada waktu runtime saat kode benar-benar berjalan.
|
precompile_source_retention
|
String; default-nya adalah "inherit"
Menentukan, saat file sumber dikompilasi, apakah file sumber disimpan
dalam output yang dihasilkan atau tidak. Nilai yang valid adalah:
* `inherit`: Mewarisi nilai dari tanda {flag}`--precompile_source_retention`.
* `keep_source`: Menyertakan sumber Python asli.
* `omit_source`: Jangan sertakan sumber py asli.
|
pyi_deps
|
Daftar label; defaultnya adalah []
Dependensi yang menyediakan definisi jenis yang dibutuhkan library.
Ini adalah dependensi yang memenuhi impor yang dilindungi oleh `typing.TYPE_CHECKING`.
Ini hanya dependensi waktu build dan tidak disertakan sebagai bagian dari program
yang dapat dijalankan (namun, aturan pengemasan dapat menyertakannya).
::{versionadded} 1.1.0
:::
|
pyi_srcs
|
Daftar label; defaultnya adalah []
File definisi jenis untuk library.
Biasanya berupa file `.pyi`, tetapi jenis file lain untuk format khusus pemeriksa jenis diizinkan. File ini hanya merupakan dependensi waktu build dan tidak disertakan
sebagai bagian dari program yang dapat dijalankan (namun, aturan pengemasan dapat menyertakannya).
::{versionadded} 1.1.0
:::
|
srcs_version
|
String; default-nya adalah ""
Tidak berfungsi, tidak digunakan, tidak melakukan apa pun.
|
py_test
Lihat sumber aturanopen_in_new
py_test(name, deps, srcs, data, args, aspect_hints, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, imports, interpreter_args, legacy_create_init, licenses, local, main, main_module, package_metadata, precompile, precompile_invalidation_mode, precompile_optimize_level, precompile_source_retention, pyc_collection, pyi_deps, pyi_srcs, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
Argumen
Atribut |
name |
Nama; wajib
Nama unik untuk target ini.
|
deps
|
Daftar label; defaultnya adalah []
Daftar library tambahan yang akan ditautkan ke target.
Lihat komentar tentang
atribut [`deps` yang biasanya ditentukan oleh
aturan](https://bazel.build/reference/be/common-definitions#typical-attributes).
Biasanya berupa aturan `py_library`.
Target yang hanya menyediakan file data yang digunakan saat runtime termasuk dalam atribut `data`.
:::{note}
Urutan daftar ini penting karena memengaruhi urutan penggabungan informasi
dari dependensi, yang dapat relevan bergantung pada mode pengurutan
depset yang digabungkan.
* {obj}`PyInfo.site_packages_symlinks` menggunakan pengurutan topologi.
Lihat {obj}`PyInfo` untuk mengetahui informasi selengkapnya tentang pengurutan depsets dan cara penggabungan kolomnya.
:::
|
srcs
|
Daftar label; defaultnya adalah []
Daftar file sumber Python yang diproses untuk membuat target. Hal ini mencakup semua kode yang Anda check in dan dapat mencakup file sumber yang dihasilkan. File
`.py` berada di `srcs` dan target library berada di `deps`. File biner
lain yang mungkin diperlukan saat runtime berada di `data`.
|
data
|
Daftar label; defaultnya adalah []
Daftar file yang diperlukan oleh library ini saat runtime. Lihat komentar tentang
atribut [`data` yang biasanya ditentukan oleh aturan](https://bazel.build/reference/be/common-definitions#typical-attributes).
Tidak ada `py_embed_data` seperti `cc_embed_data` dan `go_embed_data`.
Hal ini karena Python memiliki konsep resource runtime.
|
distribs
|
Daftar string; defaultnya adalah []
|
imports
|
Daftar string; defaultnya adalah []
Daftar direktori impor yang akan ditambahkan ke PYTHONPATH.
Tunduk pada substitusi "Buat variabel". Direktori impor ini akan ditambahkan untuk aturan ini dan semua aturan yang bergantung padanya (catatan: bukan aturan yang bergantung pada aturan ini). Setiap direktori akan ditambahkan ke `PYTHONPATH` oleh aturan `py_binary` yang bergantung pada aturan ini. String bersifat relatif terhadap repo-runfiles-root,
Jalur absolut (jalur yang dimulai dengan `/`) dan jalur yang mereferensikan jalur
di atas root eksekusi tidak diizinkan dan akan menyebabkan error.
|
interpreter_args
|
Daftar string; defaultnya adalah []
Argumen yang hanya berlaku untuk interpreter.
Argumen yang didukung interpreter bersifat khusus untuk interpreter tersebut. Untuk
CPython, lihat https://docs.python.org/3/using/cmdline.html.
::{note}
Hanya didukung untuk {obj}`--bootstrap_impl=script`. Diabaikan jika tidak.
:::
:::{seealso}
Variabel lingkungan {any}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS`
:::
:::{versionadded} 1.3.0
:::
|
legacy_create_init
|
Bilangan bulat; defaultnya adalah -1
Apakah akan membuat file `__init__.py` kosong secara implisit di hierarki runfile.
File ini dibuat di setiap direktori yang berisi kode sumber Python atau library bersama, dan setiap direktori induk dari direktori tersebut, kecuali direktori root repo. Default, `-1` (otomatis), berarti benar kecuali jika
`--incompatible_default_to_explicit_init_py` digunakan. Jika salah (false), pengguna
bertanggung jawab untuk membuat file `__init__.py` (mungkin kosong) dan menambahkannya ke `srcs` target Python sesuai kebutuhan.
|
main
|
Label; defaultnya adalah None
Opsional; nama file sumber yang merupakan titik entri utama
aplikasi. File ini juga harus tercantum di `srcs`. Jika tidak ditentukan, `name`, dengan `.py` ditambahkan, akan digunakan. Jika `name` tidak cocok dengan nama file mana pun di `srcs`, `main` harus ditentukan.
Ini tidak dapat muncul bersamaan dengan {obj}`main_module`.
|
main_module
|
String; default-nya adalah ""
Nama modul yang akan dieksekusi sebagai program utama.
Jika disetel, `srcs` tidak diperlukan, dan diasumsikan modul disediakan oleh dependensi.
Lihat https://docs.python.org/3/using/cmdline.html#cmdoption-m untuk mengetahui informasi selengkapnya tentang menjalankan modul sebagai program utama.
Ini tidak dapat muncul bersamaan dengan {obj}`main`.
:::{versionadded} 1.3.0
:::
|
precompile
|
String; default-nya adalah "inherit"
Apakah file sumber py **untuk target ini** harus dikompilasi sebelumnya.
Nilai:
* `inherit`: Izinkan biner hilir memutuskan apakah file yang telah dikompilasi sebelumnya digunakan.
* `enabled`: Mengompilasi file sumber Python pada waktu build.
* `disabled`: Jangan kompilasi file sumber Python pada waktu build.
::{seealso}
* Flag {flag}`--precompile`, yang dapat menggantikan atribut ini dalam beberapa kasus
dan akan memengaruhi semua target saat membangun.
* Atribut {obj}`pyc_collection` untuk mengaktifkan pra-kompilasi secara transitif berdasarkan per target.
* Dokumen [Precompiling](precompiling) untuk panduan tentang penggunaan precompiling.
:::
|
precompile_invalidation_mode
|
String; default-nya adalah "auto"
Cara memverifikasi apakah file yang telah dikompilasi sebelumnya sudah terbaru dengan file sumber terkaitnya. Nilai yang mungkin adalah:
* `auto`: Nilai efektif akan ditentukan secara otomatis oleh setelan build lainnya.
* `checked_hash`: Gunakan file pyc jika hash file sumber cocok dengan hash
yang dicatat dalam file pyc. Hal ini paling berguna saat bekerja dengan kode yang
mungkin Anda ubah.
* `unchecked_hash`: Selalu gunakan file pyc; jangan periksa hash pyc terhadap
file sumber. Hal ini paling berguna saat kode tidak akan diubah.
Untuk mengetahui informasi selengkapnya tentang mode pembatalan pyc, lihat
https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
|
precompile_optimize_level
|
Bilangan bulat; defaultnya adalah 0
Tingkat pengoptimalan untuk file yang telah dikompilasi sebelumnya.
Untuk mengetahui informasi selengkapnya tentang tingkat pengoptimalan, lihat dokumen argumen `optimize` fungsi `compile()` di https://docs.python.org/3/library/functions.html#compile
CATATAN: Nilai `-1` berarti "interpreter saat ini", yang akan menjadi interpreter yang digunakan _pada waktu build saat pyc dibuat_, bukan interpreter yang digunakan pada waktu runtime saat kode benar-benar berjalan.
|
precompile_source_retention
|
String; default-nya adalah "inherit"
Menentukan, saat file sumber dikompilasi, apakah file sumber disimpan
dalam output yang dihasilkan atau tidak. Nilai yang valid adalah:
* `inherit`: Mewarisi nilai dari tanda {flag}`--precompile_source_retention`.
* `keep_source`: Menyertakan sumber Python asli.
* `omit_source`: Jangan sertakan sumber py asli.
|
pyc_collection
|
String; default-nya adalah "inherit"
Menentukan apakah file pyc dari dependensi harus disertakan secara manual.
Nilai yang valid adalah:
* `inherit`: Mewarisi nilai dari {flag}`--precompile`.
* `include_pyc`: Menambahkan file pyc yang dibuat secara implisit dari dependensi. Artinya,
file pyc untuk target yang menentukan {attr}`precompile="inherit"`.
* `disabled`: Jangan menambahkan file pyc yang dibuat secara implisit. Perhatikan bahwa
file pyc masih dapat berasal dari dependensi yang memungkinkan pra-kompilasi di
tingkat target.
|
pyi_deps
|
Daftar label; defaultnya adalah []
Dependensi yang menyediakan definisi jenis yang dibutuhkan library.
Ini adalah dependensi yang memenuhi impor yang dilindungi oleh `typing.TYPE_CHECKING`.
Ini hanya dependensi waktu build dan tidak disertakan sebagai bagian dari program
yang dapat dijalankan (namun, aturan pengemasan dapat menyertakannya).
::{versionadded} 1.1.0
:::
|
pyi_srcs
|
Daftar label; defaultnya adalah []
File definisi jenis untuk library.
Biasanya berupa file `.pyi`, tetapi jenis file lain untuk format khusus pemeriksa jenis diizinkan. File ini hanya merupakan dependensi waktu build dan tidak disertakan
sebagai bagian dari program yang dapat dijalankan (namun, aturan pengemasan dapat menyertakannya).
::{versionadded} 1.1.0
:::
|
python_version
|
String; default-nya adalah ""
Versi Python yang harus digunakan target ini.
Nilai harus dalam format `X.Y` atau `X.Y.Z` (atau yang kompatibel). Jika kosong atau tidak ditentukan, tanda {obj}`--python_version` konfigurasi masuk akan diwarisi. Untuk kompatibilitas mundur, nilai `PY2` dan `PY3` diterima, tetapi diperlakukan sebagai nilai kosong/tidak ditentukan.
::{note}
Agar versi yang diminta dapat digunakan, harus ada toolchain yang dikonfigurasi agar sesuai dengan versi Python. Jika tidak ada, maka
mungkin diabaikan tanpa pemberitahuan, atau error dapat terjadi, bergantung pada konfigurasi toolchain.
:::
:::{versionchanged} 1.1.0
Atribut ini diubah dari hanya menerima nilai `PY2` dan `PY3` menjadi
menerima versi Python arbitrer.
:::
|
srcs_version
|
String; default-nya adalah ""
Tidak berfungsi, tidak digunakan, tidak melakukan apa pun.
|
stamp
|
Bilangan bulat; defaultnya adalah 0
Apakah akan mengenkode informasi build ke dalam biner. Nilai yang mungkin:
* `stamp = 1`: Selalu mencap informasi build ke dalam biner, bahkan dalam build
`--nostamp`. **Setelan ini harus dihindari**, karena berpotensi menghentikan
penyimpanan dalam cache jarak jauh untuk biner dan tindakan hilir yang bergantung padanya.
* `stamp = 0`: Selalu ganti informasi build dengan nilai konstanta. Hal ini memberikan
penyimpanan cache hasil build yang baik.
* `stamp = -1`: Penyematan informasi build dikontrol oleh
flag `--[no]stamp`.
Biner yang diberi stempel tidak dibangun ulang kecuali jika dependensinya berubah.
PERINGATAN: Pemberian stempel dapat merusak performa build dengan mengurangi hit cache dan harus dihindari jika memungkinkan.
|
py_runtime
Lihat sumber aturanopen_in_new
py_runtime(name, abi_flags, aspect_hints, bootstrap_template, compatible_with, coverage_tool, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, files, implementation_name, interpreter, interpreter_path, interpreter_version_info, package_metadata, pyc_tag, python_version, restricted_to, site_init_template, stage2_bootstrap_template, stub_shebang, tags, target_compatible_with, testonly, toolchains, visibility, zip_main_template)
Mewakili runtime Python yang digunakan untuk mengeksekusi kode Python.
Target `py_runtime` dapat merepresentasikan *runtime platform* atau *runtime dalam build*. Runtime platform mengakses interpreter yang diinstal sistem di jalur yang diketahui, sedangkan runtime dalam build mengarah ke target yang dapat dieksekusi yang bertindak sebagai interpreter. Dalam kedua kasus tersebut, "interpreter" berarti biner yang dapat dieksekusi atau skrip wrapper yang mampu menjalankan skrip Python yang diteruskan di command line, mengikuti konvensi yang sama dengan interpreter CPython standar.
Runtime platform pada dasarnya bersifat non-hermetik. Hal ini memaksakan persyaratan pada
platform target untuk memiliki interpreter yang berada di jalur tertentu. Runtime bawaan mungkin hermetik atau tidak, bergantung pada apakah runtime tersebut mengarah ke interpreter yang di-check-in atau skrip wrapper yang mengakses interpreter sistem.
Contoh
```
load("@rules_python//python:py_runtime.bzl", "py_runtime")
py_runtime(
name = "python-2.7.12",
files = glob(["python-2.7.12/**"]),
interpreter = "python-2.7.12/bin/python",
)
py_runtime(
name = "python-3.6.0",
interpreter_path = "/opt/pyenv/versions/3.6.0/bin/python",
)
```
Argumen
Atribut |
name |
Nama; wajib
Nama unik untuk target ini.
|
abi_flags
|
String; default-nya adalah ""
Flag ABI runtime, yaitu `sys.abiflags`.
Jika tidak ditetapkan, maka akan ditetapkan berdasarkan flag.
|
bootstrap_template
|
Label; defaultnya adalah "@rules_python//python/private:bootstrap_template"
File template skrip bootstrap yang akan digunakan. Harus memiliki %python_binary%,
%workspace_name%, %main%, dan %imports%.
Template ini, setelah diekspansi, akan menjadi file yang dapat dieksekusi yang digunakan untuk memulai proses, sehingga bertanggung jawab atas tindakan bootstrapping awal seperti menemukan interpreter Python, runfile, dan membuat lingkungan untuk menjalankan aplikasi Python yang dimaksud.
Meskipun saat ini atribut ini bersifat opsional, atribut ini akan menjadi wajib saat aturan
Python dipindahkan dari Bazel itu sendiri.
Nama variabel yang tepat yang diperluas adalah API yang tidak stabil dan dapat berubah.
API akan menjadi lebih stabil saat aturan Python dipindahkan dari Bazel itu sendiri.
Lihat @bazel_tools//tools/python:python_bootstrap_template.txt untuk mengetahui variabel lainnya.
|
coverage_tool
|
Label; defaultnya adalah None
Ini adalah target yang akan digunakan untuk mengumpulkan informasi cakupan kode dari target {rule}`py_binary` dan {rule}`py_test`.
Jika disetel, target harus menghasilkan satu file atau menjadi target yang dapat dieksekusi.
Jalur ke satu file, atau file yang dapat dieksekusi jika targetnya dapat dieksekusi,
menentukan titik entri untuk alat cakupan python. Target dan file run-nya akan ditambahkan ke file run saat cakupan diaktifkan.
Titik entri untuk alat harus dapat dimuat oleh interpreter Python (misalnya, file
`.py` atau `.pyc`). Skrip ini harus menerima argumen command line
dari [`coverage.py`](https://coverage.readthedocs.io), setidaknya termasuk
subperintah `run` dan `lcov`.
|
files
|
Daftar label; defaultnya adalah []
Untuk runtime dalam build, ini adalah kumpulan file yang membentuk runtime ini.
File ini akan ditambahkan ke file run dari biner Python yang menggunakan runtime ini. Untuk runtime platform, atribut ini tidak boleh ditetapkan.
|
implementation_name
|
String; default-nya adalah "cpython"
Nama implementasi Python (`sys.implementation.name`)
|
interpreter
|
Label; defaultnya adalah None
Untuk runtime dalam build, ini adalah target yang akan dipanggil sebagai interpreter. Dapat berupa:
* Satu file, yang akan menjadi biner interpreter. Diasumsikan bahwa interpreter tersebut adalah file yang dapat dieksekusi mandiri atau file pendukung apa pun ditentukan dalam `files`.
* Target yang dapat dieksekusi. File yang dapat dieksekusi target akan menjadi biner interpreter.
Output default lainnya (`target.files`) dan runfile file biasa
(`runfiles.files`) akan otomatis disertakan seolah-olah ditentukan dalam
atribut `files`.
CATATAN: file yang dapat dieksekusi target mungkin belum diterapkan/diteruskan dengan benar
ke konsumen toolchain/interpreter, lihat
bazel-contrib/rules_python/issues/1612
Untuk runtime platform (yaitu, `interpreter_path` disetel), atribut ini tidak boleh disetel.
|
interpreter_path
|
String; default-nya adalah ""
Untuk runtime platform, ini adalah jalur absolut interpreter Python di platform target. Untuk runtime bawaan, atribut ini tidak boleh ditetapkan.
|
interpreter_version_info
|
Dictionary: String -> String; default-nya adalah {}
Informasi versi tentang interpreter yang disediakan runtime ini.
Jika tidak ditentukan, gunakan {obj}`--python_version`
Kunci yang didukung cocok dengan nama untuk `sys.version_info`. Meskipun nilai
input adalah string, sebagian besar dikonversi menjadi bilangan bulat. Kunci yang didukung adalah:
* major: int, nomor versi utama
* minor: int, nomor versi minor
* micro: opsional int, nomor versi mikro
* releaselevel: opsional str, tingkat rilis
* serial: opsional int, nomor seri rilis
:::{versionchanged} 0.36.0
{obj}`--python_version` menentukan nilai default.
:::
|
pyc_tag
|
String; default-nya adalah ""
String opsional; bagian tag dari nama file pyc, misalnya, infiks `cpython-39` dari `foo.cpython-39.pyc`. Lihat PEP 3147. Jika tidak ditentukan, nilai ini akan dihitung
dari `implementation_name` dan `interpreter_version_info`. Jika tidak ada pyc_tag, hanya pembuatan pyc tanpa sumber yang akan berfungsi dengan benar.
|
python_version
|
String; default-nya adalah "PY3"
Apakah runtime ini untuk versi utama Python 2 atau 3. Nilai yang valid adalah `"PY2"`
dan `"PY3"`.
Nilai default dikontrol oleh tanda `--incompatible_py3_is_default`.
Namun, pada masa mendatang, atribut ini akan menjadi wajib dan tidak memiliki nilai
default.
|
site_init_template
|
Label; defaultnya adalah "@rules_python//python/private:site_init_template"
Template yang akan digunakan untuk hook inisialisasi situs khusus biner yang dijalankan oleh
interpreter saat startup.
::{versionadded} 0.41.0
:::
|
stage2_bootstrap_template
|
Label; defaultnya adalah "@rules_python//python/private:stage2_bootstrap_template"
Template yang akan digunakan saat bootstrapping dua tahap diaktifkan
:::{seealso}
{obj}`PyRuntimeInfo.stage2_bootstrap_template` dan {obj}`--bootstrap_impl`
:::
|
stub_shebang
|
String; default-nya adalah "#!/usr/bin/env python3"
Ekspresi "Shebang" yang ditambahkan ke skrip stub Python bootstrapping
yang digunakan saat mengeksekusi target {rule}`py_binary`.
Lihat https://github.com/bazelbuild/bazel/issues/8685 untuk mengetahui motivasinya.
Tidak berlaku untuk Windows.
|
zip_main_template
|
Label; defaultnya adalah "@rules_python//python/private:zip_main_template"
Template yang akan digunakan untuk file `__main__.py` level teratas zip.
File ini menjadi titik entri yang dijalankan saat `python foo.zip` dijalankan.
::{seealso}
Kolom {obj}`PyRuntimeInfo.zip_main_template`.
:::
|