Если я делаю sphinx-quickstart
, меня спрашивают о версии проекта.
Я хочу, чтобы у меня не было двух мест для версии моего проекта.
Как это сделать в мире упаковки python?
Если я делаю sphinx-quickstart
, меня спрашивают о версии проекта.
Я хочу, чтобы у меня не было двух мест для версии моего проекта.
Как это сделать в мире упаковки python?
Самый простой (и, вероятно, самый чистый) способ - определить __version__
для __init__.py
вашего пакета верхнего уровня, а затем импортируйте этот пакет и прочитайте версию как в setup.py
, так и в проекте Sphinx conf.py
.
Итак, скажем, ваш проект называется myproject
.
Перенесите свою текущую версию из setup.py
и вместо нее сделайте ее переменной myproject/__init__.py
:
myproject/__init__.py
# import foo
# ...
__version__ = '1.5'
Импортируйте myproject
в проект setup.py
и замените жестко кодированную версию на myproject.__version__
:
setup.py
from setuptools import setup
from myproject import __version__
project = "myproject"
setup(
name=project,
version=__version__,
# ...
)
В проекте Sphinx conf.py
сделайте то же самое. Поэтому отредактируйте созданный conf.py
вдоль этих строк:
docs/conf.py
from myproject import __version__
# ...
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
release = version
Для примера библиотеки, которая делает это примерно так, смотрите модуль requests
(__init__.py
| setup.py
| conf.py
).
Это позаботится об автогенерированных текстах, где используется версия проекта (например, ссылки на первую страницу документации). Если вы хотите использовать свою версию в определенных пользовательских местах, вы можете использовать директиву rst_epilog
для динамического вставки значений конфигурации, определенных в conf.py
.
Вы можете посмотреть bumpversion
module:
"Небольшой инструмент командной строки для упрощения выпуска программного обеспечения путем обновления всех строк версии в исходном коде с помощью правильного приращения"
Вы можете использовать конфигурационный файл .bumpversion.cfg
для сложных многофайловых операций.