summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorHynek Schlawack <hs@ox.cx>2015-04-30 19:21:40 +0200
committerHynek Schlawack <hs@ox.cx>2015-05-05 16:19:24 +0200
commit5bc17cbfcc45bb2cdcd176a5c04587b888d53991 (patch)
tree06ac2e6085f5062eef10ef0c5025fc7300709d6b /setup.py
parent8b71990171e36d0e2153c736905aabcfa3e36a9b (diff)
downloadpyopenssl-5bc17cbfcc45bb2cdcd176a5c04587b888d53991.tar.gz
Dedup meta data, use README as long_description
Diffstat (limited to 'setup.py')
-rwxr-xr-xsetup.py126
1 files changed, 73 insertions, 53 deletions
diff --git a/setup.py b/setup.py
index c4fbbd5..2e2e394 100755
--- a/setup.py
+++ b/setup.py
@@ -5,17 +5,45 @@
#
"""
-Installation script for the OpenSSL module
+Installation script for the OpenSSL module.
"""
+import codecs
+import os
+import re
import sys
from setuptools import setup
from setuptools.command.test import test as TestCommand
-# XXX Deduplicate this
-__version__ = '0.15.1'
+HERE = os.path.abspath(os.path.dirname(__file__))
+META_PATH = os.path.join("OpenSSL", "version.py")
+
+
+def read_file(*parts):
+ """
+ Build an absolute path from *parts* and and return the contents of the
+ resulting file. Assume UTF-8 encoding.
+ """
+ with codecs.open(os.path.join(HERE, *parts), "rb", "ascii") as f:
+ return f.read()
+
+
+META_FILE = read_file(META_PATH)
+
+
+def find_meta(meta):
+ """
+ Extract __*meta*__ from META_FILE.
+ """
+ meta_match = re.search(
+ r"^__{meta}__ = ['\"]([^'\"]*)['\"]".format(meta=meta),
+ META_FILE, re.M
+ )
+ if meta_match:
+ return meta_match.group(1)
+ raise RuntimeError("Unable to find __{meta}__ string.".format(meta=meta))
class PyTest(TestCommand):
@@ -38,38 +66,18 @@ class PyTest(TestCommand):
sys.exit(errno)
-setup(name='pyOpenSSL', version=__version__,
- packages = ['OpenSSL'],
- package_dir = {'OpenSSL': 'OpenSSL'},
- py_modules = ['OpenSSL.__init__',
- 'OpenSSL.tsafe',
- 'OpenSSL.rand',
- 'OpenSSL.crypto',
- 'OpenSSL.SSL',
- 'OpenSSL.version',
- 'OpenSSL.test.__init__',
- 'OpenSSL.test.util',
- 'OpenSSL.test.test_crypto',
- 'OpenSSL.test.test_rand',
- 'OpenSSL.test.test_ssl',
- 'OpenSSL.test.test_tsafe',
- 'OpenSSL.test.test_util',],
- description = 'Python wrapper module around the OpenSSL library',
- author = 'Jean-Paul Calderone',
- author_email = 'exarkun@twistedmatrix.com',
- maintainer = 'Jean-Paul Calderone',
- maintainer_email = 'exarkun@twistedmatrix.com',
- url = 'https://github.com/pyca/pyopenssl',
- license = 'APL2',
- install_requires=["cryptography>=0.7", "six>=1.5.2"],
- long_description = """\
-High-level wrapper around a subset of the OpenSSL library, includes
- * SSL.Connection objects, wrapping the methods of Python's portable
- sockets
- * Callbacks written in Python
- * Extensive error-handling mechanism, mirroring OpenSSL's error codes
-... and much more ;)""",
- classifiers = [
+setup(
+ name=find_meta("title"),
+ version=find_meta("version"),
+ description=find_meta("summary"),
+ long_description=read_file("README.rst"),
+ author=find_meta("author"),
+ author_email=find_meta("email"),
+ maintainer="Hynek Schlawack",
+ maintainer_email="hs@ox.cx",
+ url=find_meta("uri"),
+ license=find_meta("license"),
+ classifiers=[
'Development Status :: 6 - Mature',
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
@@ -77,19 +85,10 @@ High-level wrapper around a subset of the OpenSSL library, includes
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX',
- # General classifiers to indicate "this project supports Python 2" and
- # "this project supports Python 3".
'Programming Language :: Python :: 2',
- # In particular, this makes pyOpenSSL show up on
- # https://pypi.python.org/pypi?:action=browse&c=533&show=all and is in
- # accordance with
- # http://docs.python.org/2/howto/pyporting.html#universal-bits-of-advice
- 'Programming Language :: Python :: 3',
-
- # More specific classifiers to indicate more precisely which versions
- # of those languages the project supports.
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
@@ -98,11 +97,32 @@ High-level wrapper around a subset of the OpenSSL library, includes
'Topic :: Security :: Cryptography',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: System :: Networking',
- ],
- test_suite="OpenSSL",
- tests_require=[
- "pytest",
- ],
- cmdclass={
- "test": PyTest,
- })
+ ],
+
+ packages=['OpenSSL'],
+ package_dir={'OpenSSL': 'OpenSSL'},
+ py_modules=['OpenSSL.__init__',
+ 'OpenSSL.tsafe',
+ 'OpenSSL.rand',
+ 'OpenSSL.crypto',
+ 'OpenSSL.SSL',
+ 'OpenSSL.version',
+ 'OpenSSL.test.__init__',
+ 'OpenSSL.test.util',
+ 'OpenSSL.test.test_crypto',
+ 'OpenSSL.test.test_rand',
+ 'OpenSSL.test.test_ssl',
+ 'OpenSSL.test.test_tsafe',
+ 'OpenSSL.test.test_util',],
+ install_requires=[
+ "cryptography>=0.7",
+ "six>=1.5.2"
+ ],
+ test_suite="OpenSSL",
+ tests_require=[
+ "pytest",
+ ],
+ cmdclass={
+ "test": PyTest,
+ }
+)