Aturan Python

Laporkan masalah Lihat sumber Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Aturan

py_binary

Lihat sumber aturan
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 aturan
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 aturan
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 aturan
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`. :::