Как отключить загрузку пакета в PyPi, если --public не передан команде загрузки
Я разрабатываю пакеты и загружаю версии моих пакетов для разработки / тестирования / и т. Д. На локальный сервер devpi.
Чтобы предотвратить случайную загрузку в PyPi, я принял общепринятую практику:
setup(...,
classifiers=[
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Private :: Do not Upload"
],
...)
который прекрасно работает, но что делать, когда я наконец готов загрузить пакет в PyPi?
Я придумал совершенно некрасивый, но простой взлом, который требует, чтобы я определил классификаторы как глобальную переменную вне вызова setup (), который выглядит следующим образом:
CLASSIFIERS = [
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7"
]
if "--public" not in sys.argv:
CLASSIFIERS.append("Private :: Do Not Upload")
else:
sys.argv.remove("--public")
setup(...
classifiers=CLASSIFIERS,
...)
Другой, и, возможно, более простой вариант - просто закомментировать «Private :: Do not Upload», но это не кажется более профессиональным, чем мой хак.
Что бы ялайк чтобы сделать, это создать правильный подкласс команды загрузки под названиемSafeUpload
и проверить это для--public
опция cmd-line. Возможно, поскольку сборка может существовать до загрузки,SafeBuild
может быть лучшим вариантом.
К сожалению, у меня проблемы с пониманием документации setuptools по созданию пользовательских команд.
У кого-нибудь есть идеи, как это реализовать? Мне не ясно, имеет ли пользовательская команда доступ к параметрам, переданным вsetup()
то есть он мог напрямую манипулироватьclassifiers
перешел кsetup()
или потребует, чтобы пользователь команды следовал соглашению об определении CLASSIFIERS в качестве глобальной переменнойдрянь?