Reglas de Python

Informar un problema Ver fuente Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Reglas

py_binary

Ver la fuente de la regla
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)

Argumentos

Atributos
name

Nombre (obligatorio)

Es un nombre único para este destino.

deps

Lista de etiquetas. El valor predeterminado es [].

Es la lista de bibliotecas adicionales que se vincularán al destino. Consulta los comentarios sobre el [atributo `deps` que suelen definir las reglas](https://bazel.build/reference/be/common-definitions#typical-attributes). Por lo general, son reglas `py_library`. Los destinos que solo proporcionan archivos de datos que se usan en el tiempo de ejecución pertenecen al atributo "data".
srcs

Lista de etiquetas; obligatorio

Es la lista de archivos fuente de Python que se procesan para crear el destino. Esto incluye todo el código que se registró y puede incluir archivos fuente generados. Los archivos `.py` pertenecen a `srcs`, y los destinos de biblioteca pertenecen a `deps`. Otros archivos binarios que se pueden necesitar en el tiempo de ejecución pertenecen a `data`.
data

Lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos que necesita esta biblioteca en el tiempo de ejecución. Consulta los comentarios sobre el [atributo `data` que suelen definir las reglas](https://bazel.build/reference/be/common-definitions#typical-attributes). No hay un elemento `py_embed_data` como `cc_embed_data` y `go_embed_data`, ya que Python tiene un concepto de recursos de tiempo de ejecución.
distribs

Lista de cadenas; el valor predeterminado es []

imports

Lista de cadenas; el valor predeterminado es []

Lista de directorios de importación que se agregarán a PYTHONPATH. Sujeto a la sustitución de "Crear variable". Estos directorios de importación se agregarán a esta regla y a todas las reglas que dependan de ella (nota: no a las reglas de las que depende esta regla). Cada directorio se agregará a `PYTHONPATH` con las reglas `py_binary` que dependen de esta regla. Las cadenas son relativas a la raíz de los archivos ejecutables del repo. No se permiten las rutas de acceso absolutas (las que comienzan con "/") ni las que hacen referencia a una ruta de acceso por encima de la raíz de ejecución, y se generará un error.
interpreter_args

Lista de cadenas; el valor predeterminado es []

Son argumentos que solo se aplican al intérprete. Los argumentos que admite un intérprete son específicos de ese intérprete. En el caso de CPython, consulta https://docs.python.org/3/using/cmdline.html. ::{note} Solo se admite para {obj}`--bootstrap_impl=script`. De lo contrario, se ignora. ::: :::{seealso} La variable de entorno {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` ::: :::{versionadded} 1.3.0 :::
legacy_create_init

Número entero; el valor predeterminado es -1

Indica si se deben crear de forma implícita archivos "__init__.py" vacíos en el árbol de archivos ejecutables. Se crean en cada directorio que contiene código fuente de Python o bibliotecas compartidas, y en cada directorio principal de esos directorios, excepto el directorio raíz del repo. El valor predeterminado, "-1" (automático), significa verdadero, a menos que se use "--incompatible_default_to_explicit_init_py". Si es falso, el usuario es responsable de crear archivos `__init__.py` (posiblemente vacíos) y agregarlos a los `srcs` de los destinos de Python según sea necesario.
main

Etiqueta: El valor predeterminado es None.

Opcional: Es el nombre del archivo fuente que es el punto de entrada principal de la aplicación. Este archivo también debe aparecer en `srcs`. Si no se especifica, se usa `name` con `.py` agregado. Si `name` no coincide con ningún nombre de archivo en `srcs`, se debe especificar `main`. Este campo es mutuamente exclusivo con {obj}`main_module`.
main_module

Cadena. El valor predeterminado es "".

Nombre del módulo que se ejecutará como programa principal. Cuando se configura, no se requiere `srcs` y se supone que el módulo se proporciona a través de una dependencia. Consulta https://docs.python.org/3/using/cmdline.html#cmdoption-m para obtener más información sobre cómo ejecutar módulos como el programa principal. Este campo es mutuamente exclusivo con {obj}`main`. :::{versionadded} 1.3.0 :::
precompile

Cadena. El valor predeterminado es "inherit".

Indica si los archivos fuente de Python **para este destino** se deben precompilar. Valores: * `inherit`: Permite que el objeto binario de nivel inferior decida si se usan archivos precompilados. * `enabled`: Compila los archivos fuente de Python durante la compilación. * `disabled`: No compila archivos fuente de Python durante la compilación. ::{seealso} * La marca {flag}`--precompile`, que puede anular este atributo en algunos casos y afectará a todos los destinos durante la compilación. * El atributo {obj}`pyc_collection` para habilitar de forma transitiva la precompilación por objetivo. * Los documentos de [Precompilación](precompiling) para obtener una guía sobre el uso de la precompilación :::
precompile_invalidation_mode

Cadena. El valor predeterminado es "auto".

Cómo se deben verificar los archivos precompilados para que estén actualizados con sus archivos fuente asociados Los valores posibles son los siguientes: * `auto`: Otros parámetros de configuración de compilación determinarán automáticamente el valor efectivo. * `checked_hash`: Usa el archivo pyc si el hash del archivo fuente coincide con el hash registrado en el archivo pyc. Esto es más útil cuando trabajas con código que puedes modificar. * "unchecked_hash": Siempre usa el archivo pyc; no verifiques el hash del archivo pyc con el archivo fuente. Esto es más útil cuando el código no se modificará. Para obtener más información sobre los modos de invalidación de pyc, consulta https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

Número entero; el valor predeterminado es 0

Es el nivel de optimización para los archivos precompilados. Para obtener más información sobre los niveles de optimización, consulta la documentación del argumento "optimize" de la función "compile()" en https://docs.python.org/3/library/functions.html#compile. NOTA: El valor "-1" significa "intérprete actual", que será el intérprete que se use _en el momento de la compilación cuando se generen los archivos .pyc_, no el intérprete que se use en el tiempo de ejecución cuando se ejecute el código.
precompile_source_retention

Cadena. El valor predeterminado es "inherit".

Determina, cuando se compila un archivo fuente, si este se conserva en el resultado final o no. Los valores válidos son los siguientes: * `inherit`: Hereda el valor de la marca {flag}`--precompile_source_retention`. * `keep_source`: Incluye el código fuente original de Python. * `omit_source`: No incluye el código fuente original de Python.
pyc_collection

Cadena. El valor predeterminado es "inherit".

Determina si los archivos .pyc de las dependencias se deben incluir de forma manual. Los valores válidos son los siguientes: * `inherit`: Hereda el valor de {flag}`--precompile`. * `include_pyc`: Agrega archivos. pyc generados de forma implícita a partir de dependencias, es decir, archivos.pyc para destinos que especifican {attr}`precompile="inherit"`. * `disabled`: No agrega archivos .pyc generados de forma implícita. Ten en cuenta que los archivos .pyc aún pueden provenir de dependencias que habilitan la precompilación a nivel del destino.
pyi_deps

Lista de etiquetas. El valor predeterminado es [].

Son las dependencias que proporcionan las definiciones de tipo que necesita la biblioteca. Son dependencias que satisfacen las importaciones protegidas por "typing.TYPE_CHECKING". Son dependencias solo para el tiempo de compilación y no se incluyen como parte de un programa ejecutable (sin embargo, las reglas de empaquetado pueden incluirlas). ::: {versionadded} 1.1.0 ::::
pyi_srcs

Lista de etiquetas. El valor predeterminado es [].

Son los archivos de definición de tipos para la biblioteca. Por lo general, son archivos ".pyi", pero se permiten otros tipos de archivos para formatos específicos del verificador de tipos. Estos archivos son dependencias solo de tiempo de compilación y no se incluyen como parte de un programa ejecutable (sin embargo, las reglas de empaquetado pueden incluirlos). ::: {versionadded} 1.1.0 ::::
python_version

Cadena. El valor predeterminado es "".

Es la versión de Python que debe usar este destino. El valor debe tener el formato "X.Y" o "X.Y.Z" (o un formato compatible). Si está vacío o no se especifica, se hereda la marca {obj}`--python_version` de la configuración entrante. Para la retrocompatibilidad, se aceptan los valores "PY2" y "PY3", pero se tratan como un valor vacío o no especificado. :::{note} Para que se use la versión solicitada, debe haber una cadena de herramientas configurada para que coincida con la versión de Python. Si no hay ninguno, es posible que se ignore de forma silenciosa o que se produzca un error, según la configuración de la cadena de herramientas. ::: :::{versionchanged} 1.1.0 Se cambió este atributo para que acepte versiones arbitrarias de Python, en lugar de solo los valores "PY2" y "PY3". :::
srcs_version

Cadena. El valor predeterminado es "".

Obsoleto, no se usa y no hace nada.
stamp

Número entero; el valor predeterminado es -1

Indica si se debe codificar la información de compilación en el archivo binario. Valores posibles: * `stamp = 1`: Siempre se incluye la información de compilación en el binario, incluso en las compilaciones `--nostamp`. **Se debe evitar este parámetro de configuración**, ya que podría detener el almacenamiento en caché remoto del binario y cualquier acción posterior que dependa de él. * `stamp = 0`: Siempre reemplaza la información de compilación por valores constantes. Esto permite un buen almacenamiento en caché de los resultados de la compilación. * `stamp = -1`: La marca `--[no]stamp` controla la incorporación de información de compilación. Los archivos binarios con marca de tiempo no se vuelven a compilar, a menos que cambien sus dependencias. ADVERTENCIA: El estampado puede perjudicar el rendimiento de la compilación, ya que reduce los aciertos de caché, por lo que se debe evitar si es posible.

py_library

Ver la fuente de la regla
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)
Biblioteca de código de Python de la que se puede depender. Salidas predeterminadas: * Las fuentes de Python de entrada * Los artefactos precompilados de las fuentes NOTA: La precompilación afecta a cuáles de los resultados predeterminados se incluyen en los archivos ejecutables resultantes. Consulta los atributos y las marcas relacionados con la precompilación para obtener más información. ::{versionchanged} 0.37.0 Los archivos fuente ya no se agregan directamente a los archivos de ejecución. :::

Argumentos

Atributos
name

Nombre (obligatorio)

Es un nombre único para este destino.

deps

Lista de etiquetas. El valor predeterminado es [].

Es la lista de bibliotecas adicionales que se vincularán al destino. Consulta los comentarios sobre el [atributo `deps` que suelen definir las reglas](https://bazel.build/reference/be/common-definitions#typical-attributes). Por lo general, son reglas `py_library`. Los destinos que solo proporcionan archivos de datos que se usan en el tiempo de ejecución pertenecen al atributo "data".
srcs

Lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos fuente de Python que se procesan para crear el destino. Esto incluye todo el código que se registró y puede incluir archivos fuente generados. Los archivos `.py` pertenecen a `srcs`, y los destinos de biblioteca pertenecen a `deps`. Otros archivos binarios que se pueden necesitar en el tiempo de ejecución pertenecen a `data`.
data

Lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos que necesita esta biblioteca en el tiempo de ejecución. Consulta los comentarios sobre el [atributo `data` que suelen definir las reglas](https://bazel.build/reference/be/common-definitions#typical-attributes). No hay un elemento `py_embed_data` como `cc_embed_data` y `go_embed_data`, ya que Python tiene un concepto de recursos de tiempo de ejecución.
distribs

Lista de cadenas; el valor predeterminado es []

imports

Lista de cadenas; el valor predeterminado es []

Lista de directorios de importación que se agregarán a PYTHONPATH. Sujeto a la sustitución de "Crear variable". Estos directorios de importación se agregarán a esta regla y a todas las reglas que dependan de ella (nota: no a las reglas de las que depende esta regla). Cada directorio se agregará a `PYTHONPATH` con las reglas `py_binary` que dependen de esta regla. Las cadenas son relativas a la raíz de los archivos ejecutables del repo. No se permiten las rutas de acceso absolutas (las que comienzan con "/") ni las que hacen referencia a una ruta de acceso por encima de la raíz de ejecución, y se generará un error.
precompile

Cadena. El valor predeterminado es "inherit".

Indica si los archivos fuente de Python **para este destino** se deben precompilar. Valores: * `inherit`: Permite que el objeto binario de nivel inferior decida si se usan archivos precompilados. * `enabled`: Compila los archivos fuente de Python durante la compilación. * `disabled`: No compila archivos fuente de Python durante la compilación. ::{seealso} * La marca {flag}`--precompile`, que puede anular este atributo en algunos casos y afectará a todos los destinos durante la compilación. * El atributo {obj}`pyc_collection` para habilitar de forma transitiva la precompilación por objetivo. * Los documentos de [Precompilación](precompiling) para obtener una guía sobre el uso de la precompilación :::
precompile_invalidation_mode

Cadena. El valor predeterminado es "auto".

Cómo se deben verificar los archivos precompilados para que estén actualizados con sus archivos fuente asociados Los valores posibles son los siguientes: * `auto`: Otros parámetros de configuración de compilación determinarán automáticamente el valor efectivo. * `checked_hash`: Usa el archivo pyc si el hash del archivo fuente coincide con el hash registrado en el archivo pyc. Esto es más útil cuando trabajas con código que puedes modificar. * "unchecked_hash": Siempre usa el archivo pyc; no verifiques el hash del archivo pyc con el archivo fuente. Esto es más útil cuando el código no se modificará. Para obtener más información sobre los modos de invalidación de pyc, consulta https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

Número entero; el valor predeterminado es 0

Es el nivel de optimización para los archivos precompilados. Para obtener más información sobre los niveles de optimización, consulta la documentación del argumento "optimize" de la función "compile()" en https://docs.python.org/3/library/functions.html#compile. NOTA: El valor "-1" significa "intérprete actual", que será el intérprete que se use _en el momento de la compilación cuando se generen los archivos .pyc_, no el intérprete que se use en el tiempo de ejecución cuando se ejecute el código.
precompile_source_retention

Cadena. El valor predeterminado es "inherit".

Determina, cuando se compila un archivo fuente, si este se conserva en el resultado final o no. Los valores válidos son los siguientes: * `inherit`: Hereda el valor de la marca {flag}`--precompile_source_retention`. * `keep_source`: Incluye el código fuente original de Python. * `omit_source`: No incluye el código fuente original de Python.
pyi_deps

Lista de etiquetas. El valor predeterminado es [].

Son las dependencias que proporcionan las definiciones de tipo que necesita la biblioteca. Son dependencias que satisfacen las importaciones protegidas por "typing.TYPE_CHECKING". Son dependencias solo para el tiempo de compilación y no se incluyen como parte de un programa ejecutable (sin embargo, las reglas de empaquetado pueden incluirlas). ::: {versionadded} 1.1.0 ::::
pyi_srcs

Lista de etiquetas. El valor predeterminado es [].

Son los archivos de definición de tipos para la biblioteca. Por lo general, son archivos ".pyi", pero se permiten otros tipos de archivos para formatos específicos del verificador de tipos. Estos archivos son dependencias solo de tiempo de compilación y no se incluyen como parte de un programa ejecutable (sin embargo, las reglas de empaquetado pueden incluirlos). ::: {versionadded} 1.1.0 ::::
srcs_version

Cadena. El valor predeterminado es "".

Obsoleto, no se usa y no hace nada.

py_test

Ver la fuente de la regla
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)

Argumentos

Atributos
name

Nombre (obligatorio)

Es un nombre único para este destino.

deps

Lista de etiquetas. El valor predeterminado es [].

Es la lista de bibliotecas adicionales que se vincularán al destino. Consulta los comentarios sobre el [atributo `deps` que suelen definir las reglas](https://bazel.build/reference/be/common-definitions#typical-attributes). Por lo general, son reglas `py_library`. Los destinos que solo proporcionan archivos de datos que se usan en el tiempo de ejecución pertenecen al atributo "data".
srcs

Lista de etiquetas; obligatorio

Es la lista de archivos fuente de Python que se procesan para crear el destino. Esto incluye todo el código que se registró y puede incluir archivos fuente generados. Los archivos `.py` pertenecen a `srcs`, y los destinos de biblioteca pertenecen a `deps`. Otros archivos binarios que se pueden necesitar en el tiempo de ejecución pertenecen a `data`.
data

Lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos que necesita esta biblioteca en el tiempo de ejecución. Consulta los comentarios sobre el [atributo `data` que suelen definir las reglas](https://bazel.build/reference/be/common-definitions#typical-attributes). No hay un elemento `py_embed_data` como `cc_embed_data` y `go_embed_data`, ya que Python tiene un concepto de recursos de tiempo de ejecución.
distribs

Lista de cadenas; el valor predeterminado es []

imports

Lista de cadenas; el valor predeterminado es []

Lista de directorios de importación que se agregarán a PYTHONPATH. Sujeto a la sustitución de "Crear variable". Estos directorios de importación se agregarán a esta regla y a todas las reglas que dependan de ella (nota: no a las reglas de las que depende esta regla). Cada directorio se agregará a `PYTHONPATH` con las reglas `py_binary` que dependen de esta regla. Las cadenas son relativas a la raíz de los archivos ejecutables del repo. No se permiten las rutas de acceso absolutas (las que comienzan con "/") ni las que hacen referencia a una ruta de acceso por encima de la raíz de ejecución, y se generará un error.
interpreter_args

Lista de cadenas; el valor predeterminado es []

Son argumentos que solo se aplican al intérprete. Los argumentos que admite un intérprete son específicos de ese intérprete. En el caso de CPython, consulta https://docs.python.org/3/using/cmdline.html. ::{note} Solo se admite para {obj}`--bootstrap_impl=script`. De lo contrario, se ignora. ::: :::{seealso} La variable de entorno {obj}`RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` ::: :::{versionadded} 1.3.0 :::
legacy_create_init

Número entero; el valor predeterminado es -1

Indica si se deben crear de forma implícita archivos "__init__.py" vacíos en el árbol de archivos ejecutables. Se crean en cada directorio que contiene código fuente de Python o bibliotecas compartidas, y en cada directorio principal de esos directorios, excepto el directorio raíz del repo. El valor predeterminado, "-1" (automático), significa verdadero, a menos que se use "--incompatible_default_to_explicit_init_py". Si es falso, el usuario es responsable de crear archivos `__init__.py` (posiblemente vacíos) y agregarlos a los `srcs` de los destinos de Python según sea necesario.
main

Etiqueta: El valor predeterminado es None.

Opcional: Es el nombre del archivo fuente que es el punto de entrada principal de la aplicación. Este archivo también debe aparecer en `srcs`. Si no se especifica, se usa `name` con `.py` agregado. Si `name` no coincide con ningún nombre de archivo en `srcs`, se debe especificar `main`. Este campo es mutuamente exclusivo con {obj}`main_module`.
main_module

Cadena. El valor predeterminado es "".

Nombre del módulo que se ejecutará como programa principal. Cuando se configura, no se requiere `srcs` y se supone que el módulo se proporciona a través de una dependencia. Consulta https://docs.python.org/3/using/cmdline.html#cmdoption-m para obtener más información sobre cómo ejecutar módulos como el programa principal. Este campo es mutuamente exclusivo con {obj}`main`. :::{versionadded} 1.3.0 :::
precompile

Cadena. El valor predeterminado es "inherit".

Indica si los archivos fuente de Python **para este destino** se deben precompilar. Valores: * `inherit`: Permite que el objeto binario de nivel inferior decida si se usan archivos precompilados. * `enabled`: Compila los archivos fuente de Python durante la compilación. * `disabled`: No compila archivos fuente de Python durante la compilación. ::{seealso} * La marca {flag}`--precompile`, que puede anular este atributo en algunos casos y afectará a todos los destinos durante la compilación. * El atributo {obj}`pyc_collection` para habilitar de forma transitiva la precompilación por objetivo. * Los documentos de [Precompilación](precompiling) para obtener una guía sobre el uso de la precompilación :::
precompile_invalidation_mode

Cadena. El valor predeterminado es "auto".

Cómo se deben verificar los archivos precompilados para que estén actualizados con sus archivos fuente asociados Los valores posibles son los siguientes: * `auto`: Otros parámetros de configuración de compilación determinarán automáticamente el valor efectivo. * `checked_hash`: Usa el archivo pyc si el hash del archivo fuente coincide con el hash registrado en el archivo pyc. Esto es más útil cuando trabajas con código que puedes modificar. * "unchecked_hash": Siempre usa el archivo pyc; no verifiques el hash del archivo pyc con el archivo fuente. Esto es más útil cuando el código no se modificará. Para obtener más información sobre los modos de invalidación de pyc, consulta https://docs.python.org/3/library/py_compile.html#py_compile.PycInvalidationMode
precompile_optimize_level

Número entero; el valor predeterminado es 0

Es el nivel de optimización para los archivos precompilados. Para obtener más información sobre los niveles de optimización, consulta la documentación del argumento "optimize" de la función "compile()" en https://docs.python.org/3/library/functions.html#compile. NOTA: El valor "-1" significa "intérprete actual", que será el intérprete que se use _en el momento de la compilación cuando se generen los archivos .pyc_, no el intérprete que se use en el tiempo de ejecución cuando se ejecute el código.
precompile_source_retention

Cadena. El valor predeterminado es "inherit".

Determina, cuando se compila un archivo fuente, si este se conserva en el resultado final o no. Los valores válidos son los siguientes: * `inherit`: Hereda el valor de la marca {flag}`--precompile_source_retention`. * `keep_source`: Incluye el código fuente original de Python. * `omit_source`: No incluye el código fuente original de Python.
pyc_collection

Cadena. El valor predeterminado es "inherit".

Determina si los archivos .pyc de las dependencias se deben incluir de forma manual. Los valores válidos son los siguientes: * `inherit`: Hereda el valor de {flag}`--precompile`. * `include_pyc`: Agrega archivos. pyc generados de forma implícita a partir de dependencias, es decir, archivos.pyc para destinos que especifican {attr}`precompile="inherit"`. * `disabled`: No agrega archivos .pyc generados de forma implícita. Ten en cuenta que los archivos .pyc aún pueden provenir de dependencias que habilitan la precompilación a nivel del destino.
pyi_deps

Lista de etiquetas. El valor predeterminado es [].

Son las dependencias que proporcionan las definiciones de tipo que necesita la biblioteca. Son dependencias que satisfacen las importaciones protegidas por "typing.TYPE_CHECKING". Son dependencias solo para el tiempo de compilación y no se incluyen como parte de un programa ejecutable (sin embargo, las reglas de empaquetado pueden incluirlas). ::: {versionadded} 1.1.0 ::::
pyi_srcs

Lista de etiquetas. El valor predeterminado es [].

Son los archivos de definición de tipos para la biblioteca. Por lo general, son archivos ".pyi", pero se permiten otros tipos de archivos para formatos específicos del verificador de tipos. Estos archivos son dependencias solo de tiempo de compilación y no se incluyen como parte de un programa ejecutable (sin embargo, las reglas de empaquetado pueden incluirlos). ::: {versionadded} 1.1.0 ::::
python_version

Cadena. El valor predeterminado es "".

Es la versión de Python que debe usar este destino. El valor debe tener el formato "X.Y" o "X.Y.Z" (o un formato compatible). Si está vacío o no se especifica, se hereda la marca {obj}`--python_version` de la configuración entrante. Para la retrocompatibilidad, se aceptan los valores "PY2" y "PY3", pero se tratan como un valor vacío o no especificado. :::{note} Para que se use la versión solicitada, debe haber una cadena de herramientas configurada para que coincida con la versión de Python. Si no hay ninguno, es posible que se ignore de forma silenciosa o que se produzca un error, según la configuración de la cadena de herramientas. ::: :::{versionchanged} 1.1.0 Se cambió este atributo para que acepte versiones arbitrarias de Python, en lugar de solo los valores "PY2" y "PY3". :::
srcs_version

Cadena. El valor predeterminado es "".

Obsoleto, no se usa y no hace nada.
stamp

Número entero; el valor predeterminado es 0

Indica si se debe codificar la información de compilación en el archivo binario. Valores posibles: * `stamp = 1`: Siempre se incluye la información de compilación en el binario, incluso en las compilaciones `--nostamp`. **Se debe evitar este parámetro de configuración**, ya que podría detener el almacenamiento en caché remoto del binario y cualquier acción posterior que dependa de él. * `stamp = 0`: Siempre reemplaza la información de compilación por valores constantes. Esto permite un buen almacenamiento en caché de los resultados de la compilación. * `stamp = -1`: La marca `--[no]stamp` controla la incorporación de información de compilación. Los archivos binarios con marca de tiempo no se vuelven a compilar, a menos que cambien sus dependencias. ADVERTENCIA: El estampado puede perjudicar el rendimiento de la compilación, ya que reduce los aciertos de caché, por lo que se debe evitar si es posible.

py_runtime

Ver la fuente de la regla
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)
Representa un entorno de ejecución de Python que se usa para ejecutar código de Python. Un destino `py_runtime` puede representar un *tiempo de ejecución de la plataforma* o un *tiempo de ejecución integrado*. Un tiempo de ejecución de la plataforma accede a un intérprete instalado en el sistema en una ruta conocida, mientras que un tiempo de ejecución integrado apunta a un destino ejecutable que actúa como intérprete. En ambos casos, un "intérprete" significa cualquier objeto binario ejecutable o secuencia de comandos de wrapper que sea capaz de ejecutar una secuencia de comandos de Python que se pase en la línea de comandos, siguiendo las mismas convenciones que el intérprete estándar de CPython. Por su naturaleza, un tiempo de ejecución de la plataforma no es hermético. Impone un requisito en la plataforma de destino para que tenga un intérprete ubicado en una ruta específica. Un tiempo de ejecución integrado puede ser hermético o no, según si apunta a un intérprete registrado o a un script de wrapper que accede al intérprete del sistema. Ejemplo: ``` 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", ) ```

Argumentos

Atributos
name

Nombre (obligatorio)

Es un nombre único para este destino.

abi_flags

Cadena. El valor predeterminado es "".

Son las marcas de ABI del tiempo de ejecución, es decir, "sys.abiflags". Si no se configuran, se establecerán según las marcas.
bootstrap_template

Etiqueta: El valor predeterminado es "@rules_python//python/private:bootstrap_template".

Es el archivo de plantilla de la secuencia de comandos de arranque que se usará. Debe tener %python_binary%, %workspace_name%, %main% y %imports%. Esta plantilla, después de la expansión, se convierte en el archivo ejecutable que se usa para iniciar el proceso, por lo que es responsable de las acciones de arranque iniciales, como encontrar el intérprete de Python y los runfiles, y construir un entorno para ejecutar la aplicación de Python prevista. Si bien este atributo es opcional en la actualidad, será obligatorio cuando las reglas de Python se quiten de Bazel. Los nombres exactos de las variables expandidas son una API inestable y están sujetos a cambios. La API se volverá más estable cuando las reglas de Python se quiten de Bazel. Consulta @bazel_tools//tools/python:python_bootstrap_template.txt para obtener más variables.
coverage_tool

Etiqueta: El valor predeterminado es None.

Es un destino que se usa para recopilar información de cobertura de código de los destinos {rule}`py_binary` y {rule}`py_test`. Si se configura, el destino debe producir un solo archivo o ser un destino ejecutable. La ruta de acceso al archivo único o al ejecutable, si el destino es ejecutable, determina el punto de entrada para la herramienta de cobertura de Python. El destino y sus archivos de ejecución se agregarán a los archivos de ejecución cuando se habilite la cobertura. Un intérprete de Python debe poder cargar el punto de entrada de la herramienta (p.ej., un archivo `.py` o `.pyc`). Debe aceptar los argumentos de la línea de comandos de [`coverage.py`](https://coverage.readthedocs.io), incluidos, al menos, los subcomandos `run` y `lcov`.
files

Lista de etiquetas. El valor predeterminado es [].

En el caso de un entorno de ejecución integrado en la compilación, este es el conjunto de archivos que lo componen. Estos archivos se agregarán a los archivos ejecutables de los archivos binarios de Python que usan este tiempo de ejecución. Para un tiempo de ejecución de la plataforma, este atributo no se debe establecer.
implementation_name

Cadena. El valor predeterminado es "cpython".

Nombre de la implementación de Python (`sys.implementation.name`)
interpreter

Etiqueta: El valor predeterminado es None.

Para un tiempo de ejecución integrado en la compilación, este es el destino que se invocará como intérprete. Puede ser uno de los siguientes elementos: * Un solo archivo, que será el archivo binario del intérprete. Se supone que estos intérpretes son ejecutables de un solo archivo autónomos o que los archivos de asistencia se especifican en "files". * Un destino ejecutable. El ejecutable del destino será el objeto binario del intérprete. Cualquier otro archivo ejecutable (`runfiles.files`) y salida predeterminada (`target.files`) se incluirán automáticamente como si se hubieran especificado en el atributo `files`. NOTA: Es posible que los archivos ejecutables del destino aún no se respeten o propaguen correctamente a los consumidores de la cadena de herramientas o el intérprete.Consulta bazel-contrib/rules_python/issues/1612. Este atributo no se debe establecer para un tiempo de ejecución de la plataforma (es decir, si se establece `interpreter_path`).
interpreter_path

Cadena. El valor predeterminado es "".

En el caso de un tiempo de ejecución de la plataforma, esta es la ruta de acceso absoluta de un intérprete de Python en la plataforma de destino. Para un tiempo de ejecución integrado, este atributo no debe establecerse.
interpreter_version_info

Diccionario: Cadena -> Cadena; el valor predeterminado es {}

Es la información de versión sobre el intérprete que proporciona este tiempo de ejecución. Si no se especifica, se usa {obj}`--python_version`.<0x0A><0x0A>Las claves admitidas coinciden con los nombres de `sys.version_info`. Si bien los valores de entrada son cadenas, la mayoría se convierten en números enteros. Las claves admitidas son las siguientes: * major: int, número de versión principal * minor: int, número de versión secundaria * micro: int opcional, número de versión micro * releaselevel: str opcional, nivel de lanzamiento * serial: int opcional, número de serie de la versión :::{versionchanged} 0.36.0 {obj}`--python_version` determina el valor predeterminado. :::
pyc_tag

Cadena. El valor predeterminado es "".

Es una cadena opcional; es la parte de la etiqueta de un nombre de archivo .pyc, p. ej., el infijo "cpython-39" de "foo.cpython-39.pyc". Consulta el PEP 3147. Si no se especifica, se calculará a partir de `implementation_name` y `interpreter_version_info`. Si no hay disponible un pyc_tag, solo funcionará correctamente la generación de pyc sin fuente.
python_version

Cadena. El valor predeterminado es "PY3".

Indica si este entorno de ejecución es para la versión principal 2 o 3 de Python. Los valores válidos son"PY2" y"PY3". El valor predeterminado se controla con la marca `--incompatible_py3_is_default`. Sin embargo, en el futuro, este atributo será obligatorio y no tendrá un valor predeterminado.
site_init_template

Etiqueta: El valor predeterminado es "@rules_python//python/private:site_init_template".

Es la plantilla que se usará para el gancho de inicialización del sitio específico del binario que ejecuta el intérprete durante el inicio. ::: {versionadded} 0.41.0 ::::
stage2_bootstrap_template

Etiqueta: El valor predeterminado es "@rules_python//python/private:stage2_bootstrap_template".

Es la plantilla que se usa cuando se habilita el arranque de dos etapas. :::{seealso} {obj}`PyRuntimeInfo.stage2_bootstrap_template` y {obj}`--bootstrap_impl` :::
stub_shebang

Cadena. El valor predeterminado es "#!/usr/bin/env python3".

Expresión "shebang" antepuesta al script auxiliar de Python de bootstrapping que se usa cuando se ejecutan los destinos {rule}`py_binary`. Consulta https://github.com/bazelbuild/bazel/issues/8685 para conocer la motivación. No se aplica a Windows.
zip_main_template

Etiqueta: El valor predeterminado es "@rules_python//python/private:zip_main_template".

Es la plantilla que se usará para el archivo `__main__.py` de nivel superior de un archivo zip. Este se convierte en el punto de entrada que se ejecuta cuando se ejecuta "python foo.zip". ::{seealso} El campo {obj}`PyRuntimeInfo.zip_main_template`. :::