2012-02-16 13 views
8

Tengo un proyecto de Python que tiene documentación de Sphinx y distutils para publicar en Pip.Versiones consistentes en el proyecto de Python

Ambas funciones requieren una versión (por ejemplo, 0.4b3)

¿Hay una mejor práctica para mantener automáticamente un número de versión consistente a través de las diversas utilidades que requieren números de versión?

Como beneficio adicional, ¿hay algo que se integre con git (por ejemplo, mediante etiquetas)?

+1

Puede migrar este tema a programmers.stackexchange.com, esto se siente más adecuado para ese sitio. –

Respuesta

0

Esta es una respuesta no probada, pero me imagino que esto sería muy fácil de hacer con sphinx en el script conf.py. Como este guión es sólo Python, se podría hacer algo como esto:

import subprocess 

... 

path_to_source = "../src" 
release = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=path_to_source) 
version = subprocess.check_output(["git", "describe", "--tags", "HEAD"], cwd=path_to_source) 

Naturalmente, es posible que desee hacer un poco de procesamiento de cadenas en la salida de los comandos para conseguirlos como usted desee, y un poco de comprobación de errores, pero la idea básica debe mantenerse.

Como digo, no he probado esto, así que podría estar completamente equivocado, así que dígame si encuentra un problema con esta idea.

+0

Gracias por el fragmento, pero para ser claros, estaba buscando cualquier práctica que ya esté en uso, en lugar de tratar de hacer mi propia. – muckabout

1

Esta es una pregunta favorita en las listas de correo de distutils de Python. Puede importar su módulo desde setup.py así como desde conf.py y obtenga el módulo. versión. Es posible que esto no funcione en función de sus importaciones, su uso de 2to3 u otros factores, en cuyo caso puede mover su versión a un archivo de texto y abrirla desde su módulo, setup.py y conf.py.

Mi opinión personal sobre esto es que no es una gran carga actualizar el número de versión en tres lugares. Es un paso menor en el proceso de lanzamiento.

Cuestiones relacionadas