Laporkan masalahopen_in_new
Lihat sumberopen_in_new
Nightly
·
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, 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`.
|
srcs
|
Daftar label; wajib diisi
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`. Jika tidak, akan diabaikan.
:::
:::{seealso}
Variabel lingkungan {obj}`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 pra-kompilasi.
:::
|
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 adalah dependensi khusus 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 cocok 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 cache jarak jauh untuk biner dan tindakan hilir yang bergantung padanya.
* `stamp = 0`: Selalu ganti informasi build dengan nilai konstanta. Hal ini memberikan
penyimpanan dalam 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, compatible_with, deprecation, distribs, exec_compatible_with, exec_group_compatible_with, exec_properties, 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
file 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`.
|
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.
|
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 pra-kompilasi.
:::
|
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 adalah dependensi khusus 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, 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`.
|
srcs
|
Daftar label; wajib diisi
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`. Jika tidak, akan diabaikan.
:::
:::{seealso}
Variabel lingkungan {obj}`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 pra-kompilasi.
:::
|
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 adalah dependensi khusus 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 cocok 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 cache jarak jauh untuk biner dan tindakan hilir yang bergantung padanya.
* `stamp = 0`: Selalu ganti informasi build dengan nilai konstanta. Hal ini memberikan
penyimpanan dalam 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, 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-hermetis. Hal ini memaksakan persyaratan pada
platform target untuk memiliki interpreter yang berada di jalur tertentu. Runtime
dalam build 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 sewaktu-waktu.
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 yang 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: int opsional, nomor versi mikro
* releaselevel: str opsional, tingkat rilis
* serial: int opsional, 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, maka 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
motivasi.
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`.
:::
|