Incremental es un administrador de versiones de CalVer que respalda el futuro.
La documentación de la API se puede encontrar aquí. A continuación se presenta la documentación narrativa.
Contenido
Teoría de la operación
Inicio rápido
Usando herramientas de configuración
Usando crías
Usando setup.py
Inicializar el proyecto
Integración en tiempo de ejecución
Versiones incrementales
Actualizando
Versiones indeterminadas
Un número de versión tiene el formato AA.MM.PATCH.
Si su proyecto se llama "Shrubbery", su código se encuentra en shrubbery/
o src/shrubbery/
.
Incremental almacena el número de versión de tu proyecto en {src/}shrubbery/_version.py
.
Para actualizar la versión, ejecute incremental update Shrubbery
, pasando --rc
y/o --patch
según corresponda (consulte Actualización, a continuación).
Cambiar la versión también actualiza cualquier versión indeterminada en su código base, como "Srubbery NEXT", para que pueda hacer referencia a la próxima versión en la documentación. Así es como Incremental apoya el futuro.
Agregue Incremental a su pyproject.toml
:
[build-system]requires = ["setuptools","incremental>=24.7.2", # ← Agregar incremental como dependencia de compilación]build-backend = "setuptools.build_meta"[project]name = ""dynamic = ["versión"] # ← Marcar la versión Dynamicdependencies = ["incremental>=24.7.2", # ← Depender del incremental en tiempo de ejecución]# ...[tool.incremental] # ← Activar el complemento de herramientas de configuración de Incremental
Está bien si la tabla [tool.incremental]
está vacía, pero debe estar presente.
Elimine cualquier [project] version =
y cualquier [tool.setuptools.dynamic] version =
.
A continuación, inicialice el proyecto.
Si está utilizando Hatchling para empaquetar su proyecto, active el complemento Hatchling de Incremental modificando su pyproject.toml
:
[build-system]requires = ["hatchling","incremental>=24.7.2", # ← Agregar incremental como dependencia de compilación]build-backend = "hatchling.build"[project]name = ""dynamic = ["version"] # ← Marcar la versión Dynamicdependencies = ["incremental>=24.7.2", # ← Depender del incremental en tiempo de ejecución]# ...[tool.hatch.version]source = "incremental" # ← Activar Complemento Hatchling de Incremental
Incremental se puede configurar como de costumbre en una tabla opcional [tool.incremental]
.
El comando hatch version
informará la versión administrada incremental. Utilice el comando incremental update
para cambiar la versión (no se admite configurarla con hatch version
).
A continuación, inicialice el proyecto.
setup.py
Se puede usar incremental desde setup.py
en lugar de pyproject.toml
. Agregue esto a su llamada setup()
, eliminando cualquier otro argumento de control de versiones:
setup(use_incremental=True,setup_requires=['incremental'],install_requires=['incremental'], # junto con cualquier otra dependencia de instalación... }
Luego inicialice el proyecto.
Instale Incremental en su entorno local con pipx install incremental
. Luego ejecute incremental update
. Creará un archivo en su paquete llamado _version.py
como este:
de importación incremental Versión__versión__ = Versión("", 24, 1, 0)__all__ = ["__versión__"]
Las instalaciones posteriores de su proyecto utilizarán Incremental para el control de versiones.
Puede exponer la incremental.Version
de _version.py
en la API de su paquete. Para hacerlo, agregue al __init__.py
de su paquete raíz:
desde ._version importar __version__
Nota
Proporcionar un atributo __version__
está pasando de moda luego de la introducción de importlib.metadata.version() en Python 3.6, que puede recuperar la versión de un paquete instalado.
Si no expone este objeto públicamente ni lo utiliza dentro de su paquete, entonces no es necesario depender de Incremental en tiempo de ejecución. Puedes eliminarlo de la matriz de dependencies
de tu proyecto (o, en setup.py
, de install_requires
).
incremental.Version
es una clase que representa una versión de un proyecto determinado. Se compone de los siguientes elementos (que se proporcionan durante la creación de instancias):
package
(obligatorio), el nombre del paquete que representa esta Version
.
major
, minor
, micro
(todos requeridos), el XYZ de Version
de su proyecto.
release_candidate
(opcional), establecido en 0 o superior para marcar que esta Version
es una versión candidata (a veces también llamada "prelanzamiento").
post
(opcional), establecido en 0 o superior para marcar esta Version
como posterior al lanzamiento.
dev
(opcional), establecido en 0 o superior para marcar esta Version
como una versión de desarrollo.
Puede extraer una cadena de versión compatible con PEP-440 utilizando el método .public()
, que devuelve una str
que contiene la versión completa. Esta es la versión que debe proporcionar a los usuarios o utilizar públicamente. Un resultado de ejemplo sería "13.2.0"
, "17.1.2dev1"
o "18.8.0rc2"
.
Llamar repr()
con una Version
dará una representación del código fuente de Python, y llamar str()
en una Version
produce una cadena como '[Incremental, version 16.10.1]'
.
Incremental incluye una herramienta para automatizar la actualización de la versión de su proyecto de uso incremental llamada incremental
. Actualiza el archivo _version.py
y actualiza automáticamente algunos usos de las versiones incrementales desde una versión indeterminada a la actual. Requiere click
desde PyPI.
incremental update
realizará actualizaciones en ese paquete. Los comandos que se pueden dar después determinan cuál es la próxima versión.
--newversion=
, para configurar la versión del proyecto en una versión completamente especificada (como 1.2.3 o 17.1.0dev1).
--rc
, para establecer la versión del proyecto en
si la versión actual no es una versión candidata, o aumentar el número de versión candidata en 1 si lo es.
--dev
, para establecer el número de versión de desarrollo del proyecto en 0 si no es una versión de desarrollo, o aumentar el número de versión de desarrollo en 1 si lo es.
--patch
, para incrementar el número de parche de la versión. Esto también restablecerá el número de versión candidata, pase --rc
al mismo tiempo para incrementar el número de parche y convertirlo en una versión candidata.
--post
, para establecer el número posterior al lanzamiento del proyecto en 0 si no es un lanzamiento posterior, o aumentar el número posterior al lanzamiento en 1 si lo es. Esto también restablecerá los números de versión candidata y de desarrollo.
Si no proporciona argumentos, se eliminará el número del candidato de versión, convirtiéndola en una "versión completa".
Incremental admite versiones "indeterminadas", como sustituto de la próxima versión "completa". Esto se puede utilizar cuando se desconoce la versión que se mostrará al usuario final (por ejemplo, "introducida en" o "obsoleta en"). Incremental admite las siguientes versiones indeterminadas:
Version("
Cuando ejecuta incremental update
, estas se actualizarán a versiones reales (suponiendo que la versión final de destino sea 17.1.0):
Version("
Una vez realizada la versión final, quedará:
Version("