aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py93
1 files changed, 93 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..09b8de4
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,93 @@
+import os
+import platform
+import setuptools
+
+
+# Minimal dependencies required to test immutables.
+TEST_DEPENDENCIES = [
+ # pycodestyle is a dependency of flake8, but it must be frozen because
+ # their combination breaks too often
+ # (example breakage: https://gitlab.com/pycqa/flake8/issues/427)
+ 'flake8~=3.8.4',
+ 'pycodestyle~=2.6.0',
+ 'mypy==0.942',
+ 'pytest~=6.2.4',
+]
+
+EXTRA_DEPENDENCIES = {
+ 'test': TEST_DEPENDENCIES,
+}
+
+CFLAGS = ['-O2']
+if platform.uname().system != 'Windows':
+ CFLAGS.extend(['-std=c99', '-fsigned-char', '-Wall',
+ '-Wsign-compare', '-Wconversion'])
+
+
+with open(os.path.join(
+ os.path.dirname(__file__), 'immutables', '_version.py')) as f:
+ for line in f:
+ if line.startswith('__version__ ='):
+ _, _, version = line.partition('=')
+ VERSION = version.strip(" \n'\"")
+ break
+ else:
+ raise RuntimeError(
+ 'unable to read the version from immutables/_version.py')
+
+
+if platform.python_implementation() == 'CPython':
+ if os.environ.get("DEBUG_IMMUTABLES") == '1':
+ define_macros = []
+ undef_macros = ['NDEBUG']
+ else:
+ define_macros = [('NDEBUG', '1')]
+ undef_macros = []
+
+ ext_modules = [
+ setuptools.Extension(
+ "immutables._map",
+ ["immutables/_map.c"],
+ extra_compile_args=CFLAGS,
+ define_macros=define_macros,
+ undef_macros=undef_macros)
+ ]
+else:
+ ext_modules = []
+
+
+with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as f:
+ readme = f.read()
+
+
+setuptools.setup(
+ name='immutables',
+ version=VERSION,
+ description='Immutable Collections',
+ long_description=readme,
+ python_requires='>=3.6',
+ classifiers=[
+ 'License :: OSI Approved :: Apache Software License',
+ 'Intended Audience :: Developers',
+ 'Programming Language :: Python :: 3 :: Only',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
+ 'Operating System :: POSIX',
+ 'Operating System :: MacOS :: MacOS X',
+ 'Operating System :: Microsoft :: Windows',
+ ],
+ author='MagicStack Inc',
+ author_email='hello@magic.io',
+ url='https://github.com/MagicStack/immutables',
+ license='Apache License, Version 2.0',
+ packages=['immutables'],
+ package_data={"immutables": ["py.typed", "*.pyi"]},
+ provides=['immutables'],
+ include_package_data=True,
+ ext_modules=ext_modules,
+ install_requires=['typing-extensions>=3.7.4.3;python_version<"3.8"'],
+ extras_require=EXTRA_DEPENDENCIES,
+)