Каcтомный путь до .pypirc
Файл .pypirc задаёт настройки для того, чтобы пушить пакеты в registry. Но он может находиться только в $HOME. Как установить кастомную директорию для нахождения .pypirc, а не домашнюю?
Ответы (1 шт):
Это можно сделать путем перегрузки классов команд по умолчанию, используемых для связи с PyPI или вашим настраиваемым сервером репозитория. Это можно сделать в вашем скрипте setup.py. Пусть сначала говорит код:
# this is your project's setup.py script
import os
from distutils.command.register import register as register_orig
from distutils.command.upload import upload as upload_orig
from setuptools import setup
class register(register_orig):
def _get_rc_file(self):
return os.path.join('.', '.pypirc')
class upload(upload_orig):
def _get_rc_file(self):
return os.path.join('.', '.pypirc')
setup(
name='myproj',
...
cmdclass={
'register': register,
'upload': upload,
}
)
Заметьте, что некоторые импорты в IDE могут выделяться как ненайденные. Не стоит этого пугаться. Из консоли всё прекрасно работает:
$ python setup.py sdist register upload
учетные данные сервера будут взяты из .pypirc в каталоге проекта, а не из стандартного~/.pypirc.
Таким образом, все, что вам нужно сделать, это заменить команды register и upload на свои собственные реализации. Эти реализации переопределяют метод _get_rc_file с вашей собственной логикой. После этого не забудьте настроить аргумент cmd_class в вашей функции setup так, чтобы вместо стандартных классов использовались ваши собственные классы команд.
Конечно, поскольку оба класса переопределяют один и тот же метод, вы можете изменить код, например, написание класса миксина и его повторное использование и т. д. Кроме того, если вы загружаете документы sphinx в PyPI с помощью команды upload_docs, вам придется перегрузить его таким же образом. В любом случае, вы должны получить общее представление о перегрузке команд из приведенного выше фрагмента.