| #!/usr/bin/env python |
| # -*- coding: utf-8 -*- |
| # |
| # Copyright (C) Jean-Paul Calderone 2008-2015, All rights reserved |
| # |
| |
| """ |
| 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 |
| |
| |
| 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): |
| user_options = [("pytest-args=", "a", "Arguments to pass to py.test")] |
| |
| def initialize_options(self): |
| TestCommand.initialize_options(self) |
| self.pytest_args = None |
| |
| def finalize_options(self): |
| TestCommand.finalize_options(self) |
| self.test_args = [] |
| self.test_suite = True |
| |
| def run_tests(self): |
| # import here, cause outside the eggs aren't loaded |
| import pytest |
| errno = pytest.main(self.pytest_args or [] + |
| ["OpenSSL"]) |
| sys.exit(errno) |
| |
| |
| 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', |
| 'Operating System :: MacOS :: MacOS X', |
| 'Operating System :: Microsoft :: Windows', |
| 'Operating System :: POSIX', |
| |
| 'Programming Language :: Python :: 2', |
| 'Programming Language :: Python :: 2.6', |
| 'Programming Language :: Python :: 2.7', |
| 'Programming Language :: Python :: 3', |
| 'Programming Language :: Python :: 3.3', |
| |
| 'Programming Language :: Python :: Implementation :: CPython', |
| 'Programming Language :: Python :: Implementation :: PyPy', |
| 'Topic :: Security :: Cryptography', |
| 'Topic :: Software Development :: Libraries :: Python Modules', |
| 'Topic :: System :: Networking', |
| ], |
| |
| 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, |
| } |
| ) |