summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..47600b9
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,113 @@
+import codecs
+import os
+import re
+
+from setuptools import setup, find_packages
+
+
+###############################################################################
+
+NAME = "service_identity"
+KEYWORDS = ["cryptography", "openssl", "pyopenssl"]
+CLASSIFIERS = [
+ "Development Status :: 5 - Production/Stable",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: MIT License",
+ "Natural Language :: English",
+ "Operating System :: MacOS :: MacOS X",
+ "Operating System :: Microsoft :: Windows",
+ "Operating System :: POSIX :: BSD",
+ "Operating System :: POSIX :: Linux",
+ "Operating System :: POSIX",
+ "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ "Programming Language :: Python",
+ "Topic :: Security :: Cryptography",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+]
+INSTALL_REQUIRES = [
+ "attrs",
+ "pyasn1",
+ "pyasn1-modules",
+ "pyopenssl>=0.12",
+]
+EXTRAS_REQUIRE = {
+ "idna": ["idna"],
+}
+
+###############################################################################
+
+HERE = os.path.abspath(os.path.dirname(__file__))
+
+try:
+ PACKAGES
+except NameError:
+ PACKAGES = find_packages(where="src")
+
+try:
+ META_PATH
+except NameError:
+ META_PATH = os.path.join(HERE, "src", NAME, "__init__.py")
+
+
+def read(*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", "utf-8") as f:
+ return f.read()
+
+
+META_FILE = read(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))
+
+URI = find_meta("uri")
+LONG = (
+ read("README.rst") + "\n\n" +
+ "Release Information\n" +
+ "===================\n\n" +
+ re.search("(\d{2}.\d.\d \(.*?\)\n.*?)\n\n\n----\n\n\n",
+ read("CHANGELOG.rst"), re.S).group(1) +
+ "\n\n`Full changelog " +
+ "<{uri}en/stable/changelog.html>`_.\n\n" + read("AUTHORS.rst")
+).format(uri=URI)
+
+
+if __name__ == "__main__":
+ setup(
+ name=NAME,
+ description=find_meta("description"),
+ license=find_meta("license"),
+ url=URI,
+ version=find_meta("version"),
+ author=find_meta("author"),
+ author_email=find_meta("email"),
+ maintainer=find_meta("author"),
+ maintainer_email=find_meta("email"),
+ keywords=KEYWORDS,
+ long_description=LONG,
+ packages=PACKAGES,
+ package_dir={"": "src"},
+ zip_safe=False,
+ classifiers=CLASSIFIERS,
+ install_requires=INSTALL_REQUIRES,
+ extras_require=EXTRAS_REQUIRE,
+ )