|
| 1 | +import ast |
| 2 | +import os |
| 3 | +import re |
| 4 | +import sys |
| 5 | + |
| 6 | +from setuptools import setup, __version__ as setuptools_version |
| 7 | + |
| 8 | + |
| 9 | +def readme(name='README.rst'): |
| 10 | + try: |
| 11 | + with open(name) as f: |
| 12 | + rst = f.read() |
| 13 | + return re.sub( |
| 14 | + r'(^|\n).. include::\s*([^\n]+)($|\n)', |
| 15 | + lambda m: m.group(1) + (readme(m.group(2)) or '') + m.group(3), |
| 16 | + rst |
| 17 | + ) |
| 18 | + except (IOError, OSError): |
| 19 | + return |
| 20 | + |
| 21 | + |
| 22 | +def get_version(): |
| 23 | + module_path = os.path.join(os.path.dirname(__file__), 'nirum_http.py') |
| 24 | + module_file = open(module_path) |
| 25 | + try: |
| 26 | + module_code = module_file.read() |
| 27 | + finally: |
| 28 | + module_file.close() |
| 29 | + tree = ast.parse(module_code, module_path) |
| 30 | + for node in ast.iter_child_nodes(tree): |
| 31 | + if not isinstance(node, ast.Assign) or len(node.targets) != 1: |
| 32 | + continue |
| 33 | + target, = node.targets |
| 34 | + if isinstance(target, ast.Name) and target.id == '__version__': |
| 35 | + value = node.value |
| 36 | + if isinstance(value, ast.Str): |
| 37 | + return value.s |
| 38 | + raise ValueError('__version__ is not defined as a string literal') |
| 39 | + raise ValueError('could not find __version__') |
| 40 | + |
| 41 | + |
| 42 | +setup_requires = [] |
| 43 | +install_requires = [ |
| 44 | + 'nirum >= 0.6.0', |
| 45 | + 'requests >= 2.11.1', |
| 46 | + 'six', |
| 47 | +] |
| 48 | +tests_require = [ |
| 49 | + 'flake8-import-order >= 0.12, < 1.0', |
| 50 | + 'flake8-import-order-spoqa >= 1.0.0, < 2.0.0', |
| 51 | + 'pytest >= 3.1.2, < 4.0.0', |
| 52 | + 'pytest-flake8 >= 0.8.1, < 1.0.0', |
| 53 | + 'requests-mock >= 1.3.0, < 1.4.0', |
| 54 | +] |
| 55 | +extras_require = { |
| 56 | + 'tests': tests_require, |
| 57 | +} |
| 58 | +below35_requires = [ |
| 59 | + 'typing', |
| 60 | +] |
| 61 | + |
| 62 | + |
| 63 | +if 'bdist_wheel' not in sys.argv and sys.version_info < (3, 5): |
| 64 | + install_requires.extend(below35_requires) |
| 65 | + |
| 66 | + |
| 67 | +if tuple(map(int, setuptools_version.split('.'))) < (17, 1): |
| 68 | + setup_requires = ['setuptools >= 17.1'] |
| 69 | + extras_require.update({":python_version=='3.4'": below35_requires}) |
| 70 | + extras_require.update({":python_version=='2.7'": below35_requires}) |
| 71 | +else: |
| 72 | + extras_require.update({":python_version<'3.5'": below35_requires}) |
| 73 | + |
| 74 | + |
| 75 | +setup( |
| 76 | + name='nirum-http', |
| 77 | + version=get_version(), |
| 78 | + description='Nirum HTTP transport for Python', |
| 79 | + long_description=readme(), |
| 80 | + url='https://github.com/spoqa/nirum-python-http', |
| 81 | + author='Kang Hyojun', |
| 82 | + author_email='iam.kanghyojun' '@' 'gmail.com', |
| 83 | + license='MIT license', |
| 84 | + py_modules=['nirum_http'], |
| 85 | + install_requires=install_requires, |
| 86 | + setup_requires=setup_requires, |
| 87 | + extras_require=extras_require |
| 88 | +) |
0 commit comments