mirror of
https://github.com/certbot/certbot.git
synced 2026-01-19 13:24:57 +03:00
The motivation is to free us of a reliance on a rather modern version of setuptools, which caused le-auto failures for people on Wheezy and other older distros. (The alternative would have been to forcibly upgrade setuptools as the old le-auto did, but less is more.) Mock is used only in tests, so we move it to tests_require. It will still be installed automatically when setup.py test is run. Give all packages a test_suite so this works. The "testing" extra remains for optional packages not required for the nose tests but used in tox. However, the extra is much less useful now and is a candidate for deletion. We could roll the list of packages therein into the tox config so as not to favor any particular package. Remove tests_require=install_requires, which I don't think does anything useful, since install requirements are implicitly installed when running setup.py test. Fix tests to pass with mock removed. We had to stop them pulling down LE from PyPI, since the current version there (0.1.1) requires mock and explodes when `letsencrypt` is run.
141 lines
4.2 KiB
Python
141 lines
4.2 KiB
Python
import codecs
|
|
import os
|
|
import re
|
|
import sys
|
|
|
|
from setuptools import setup
|
|
from setuptools import find_packages
|
|
|
|
# Workaround for http://bugs.python.org/issue8876, see
|
|
# http://bugs.python.org/issue8876#msg208792
|
|
# This can be removed when using Python 2.7.9 or later:
|
|
# https://hg.python.org/cpython/raw-file/v2.7.9/Misc/NEWS
|
|
if os.path.abspath(__file__).split(os.path.sep)[1] == 'vagrant':
|
|
del os.link
|
|
|
|
|
|
def read_file(filename, encoding='utf8'):
|
|
"""Read unicode from given file."""
|
|
with codecs.open(filename, encoding=encoding) as fd:
|
|
return fd.read()
|
|
|
|
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
# read version number (and other metadata) from package init
|
|
init_fn = os.path.join(here, 'letsencrypt', '__init__.py')
|
|
meta = dict(re.findall(r"""__([a-z]+)__ = '([^']+)""", read_file(init_fn)))
|
|
|
|
readme = read_file(os.path.join(here, 'README.rst'))
|
|
changes = read_file(os.path.join(here, 'CHANGES.rst'))
|
|
version = meta['version']
|
|
|
|
install_requires = [
|
|
'acme=={0}'.format(version),
|
|
'configobj',
|
|
'cryptography>=0.7,<1.2', # load_pem_x509_certificate
|
|
'parsedatetime',
|
|
'psutil>=2.1.0', # net_connections introduced in 2.1.0
|
|
'PyOpenSSL',
|
|
'pyrfc3339',
|
|
'python2-pythondialog>=3.2.2rc1', # Debian squeeze support, cf. #280
|
|
'pytz',
|
|
'setuptools', # pkg_resources
|
|
'six',
|
|
'zope.component',
|
|
'zope.interface',
|
|
]
|
|
|
|
# env markers in extras_require cause problems with older pip: #517
|
|
# Keep in sync with conditional_requirements.py.
|
|
if sys.version_info < (2, 7):
|
|
install_requires.extend([
|
|
# only some distros recognize stdlib argparse as already satisfying
|
|
'argparse',
|
|
'ConfigArgParse>=0.10.0', # python2.6 support, upstream #17
|
|
])
|
|
else:
|
|
install_requires.extend([
|
|
'ConfigArgParse',
|
|
])
|
|
|
|
dev_extras = [
|
|
# Pin astroid==1.3.5, pylint==1.4.2 as a workaround for #289
|
|
'astroid==1.3.5',
|
|
'pylint==1.4.2', # upstream #248
|
|
'twine',
|
|
'wheel',
|
|
]
|
|
|
|
docs_extras = [
|
|
'repoze.sphinx.autointerface',
|
|
'Sphinx>=1.0', # autodoc_member_order = 'bysource', autodoc_default_flags
|
|
'sphinx_rtd_theme',
|
|
'sphinxcontrib-programoutput',
|
|
]
|
|
|
|
testing_extras = [
|
|
'coverage',
|
|
'nose',
|
|
'nosexcover',
|
|
'pep8',
|
|
'tox',
|
|
]
|
|
|
|
setup(
|
|
name='letsencrypt',
|
|
version=version,
|
|
description="Let's Encrypt client",
|
|
long_description=readme, # later: + '\n\n' + changes
|
|
url='https://github.com/letsencrypt/letsencrypt',
|
|
author="Let's Encrypt Project",
|
|
author_email='client-dev@letsencrypt.org',
|
|
license='Apache License 2.0',
|
|
classifiers=[
|
|
'Development Status :: 3 - Alpha',
|
|
'Environment :: Console',
|
|
'Environment :: Console :: Curses',
|
|
'Intended Audience :: System Administrators',
|
|
'License :: OSI Approved :: Apache Software License',
|
|
'Operating System :: POSIX :: Linux',
|
|
'Programming Language :: Python',
|
|
'Programming Language :: Python :: 2',
|
|
'Programming Language :: Python :: 2.6',
|
|
'Programming Language :: Python :: 2.7',
|
|
'Topic :: Internet :: WWW/HTTP',
|
|
'Topic :: Security',
|
|
'Topic :: System :: Installation/Setup',
|
|
'Topic :: System :: Networking',
|
|
'Topic :: System :: Systems Administration',
|
|
'Topic :: Utilities',
|
|
],
|
|
|
|
packages=find_packages(exclude=['docs', 'examples', 'tests', 'venv']),
|
|
include_package_data=True,
|
|
|
|
install_requires=install_requires,
|
|
tests_require='mock<1.1.0' if sys.version_info < (2, 7) else 'mock',
|
|
extras_require={
|
|
'dev': dev_extras,
|
|
'docs': docs_extras,
|
|
'testing': testing_extras,
|
|
},
|
|
|
|
# to test all packages run "python setup.py test -s
|
|
# {acme,letsencrypt_apache,letsencrypt_nginx}"
|
|
test_suite='letsencrypt',
|
|
|
|
entry_points={
|
|
'console_scripts': [
|
|
'letsencrypt = letsencrypt.cli:main',
|
|
'letsencrypt-renewer = letsencrypt.renewer:main',
|
|
],
|
|
'letsencrypt.plugins': [
|
|
'manual = letsencrypt.plugins.manual:Authenticator',
|
|
'null = letsencrypt.plugins.null:Installer',
|
|
'standalone = letsencrypt.plugins.standalone:Authenticator',
|
|
'webroot = letsencrypt.plugins.webroot:Authenticator',
|
|
],
|
|
},
|
|
)
|