Completed
Push — master ( f06638...0a21cc )
by Kyle
50s
created

get_version()   A

Complexity

Conditions 3

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
c 0
b 0
f 0
dl 0
loc 11
rs 9.4285
1
#!/usr/bin/env python
2
3
import sys
4
5
from setuptools import setup
6
7
from subprocess import check_output
8
import platform
9
10
def get_version():
11
    """Get the current version from a git tag, or by reading tdl/version.py"""
12
    try:
13
        version = check_output(['git', 'describe', '--abbrev=0'],
14
                               universal_newlines=True)
15
        assert version.startswith('v')
16
        version = version[1:-1] # remove `v` and newline
17
        open('tdl/version.py', 'w').write('__version__ = %r\n' % version)
18
    except:
19
        exec(open('tdl/version.py').read())
20
        return __version__
21
22
is_pypy = platform.python_implementation() == 'PyPy'
23
24
def get_package_data():
25
    '''get data files which will be included in the main tcod/ directory'''
26
    BITSIZE, LINKAGE = platform.architecture()
27
    files = [
28
        'lib/LIBTCOD-CREDITS.txt',
29
        'lib/LIBTCOD-LICENSE.txt',
30
        'lib/README-SDL.txt'
31
        ]
32
    if 'win32' in sys.platform:
33
        if BITSIZE == '32bit':
34
            files += ['x86/SDL2.dll']
35
        else:
36
            files += ['x64/SDL2.dll']
37
    if sys.platform == 'darwin':
38
        files += ['SDL2.framework/Versions/A/SDL2']
39
    return files
40
41
needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
42
pytest_runner = ['pytest-runner'] if needs_pytest else []
43
44
setup(
45
    name='tdl',
46
    version=get_version(),
47
    author='Kyle Stewart',
48
    author_email='[email protected]',
49
    description='Pythonic cffi port of libtcod.',
50
    long_description='\n'.join([open('README.rst', 'r').read(),
51
                                open('CHANGELOG.rst', 'r').read()]),
52
    url='https://github.com/HexDecimal/python-tdl',
53
    download_url='https://pypi.python.org/pypi/tdl',
54
    packages=['tdl', 'tcod'],
55
    package_data={
56
        'tdl': ['*.png'],
57
        'tcod': get_package_data(),
58
        },
59
    install_requires=[
60
        'cffi>=1.8.1,<2',
61
        'numpy>=1.10,<2' if not is_pypy else '',
62
        ],
63
    cffi_modules=['build_libtcod.py:ffi'],
64
    setup_requires=[
65
        'cffi>=1.8.1,<2',
66
        'pycparser>=2.14,<3',
67
        ] + pytest_runner,
68
    tests_require=[
69
        'pytest',
70
        'pytest-cov',
71
        'pytest-benchmark',
72
        ],
73
    classifiers=[
74
        'Development Status :: 5 - Production/Stable',
75
        'Environment :: Win32 (MS Windows)',
76
        'Environment :: MacOS X',
77
        'Environment :: X11 Applications',
78
        'Intended Audience :: Developers',
79
        'License :: OSI Approved :: BSD License',
80
        'Natural Language :: English',
81
        'Operating System :: POSIX',
82
        'Operating System :: MacOS :: MacOS X',
83
        'Operating System :: Microsoft :: Windows',
84
        'Programming Language :: Python :: 2',
85
        'Programming Language :: Python :: 2.7',
86
        'Programming Language :: Python :: 3',
87
        'Programming Language :: Python :: 3.4',
88
        'Programming Language :: Python :: 3.5',
89
        'Programming Language :: Python :: 3.6',
90
        'Programming Language :: Python :: Implementation :: CPython',
91
        'Programming Language :: Python :: Implementation :: PyPy',
92
        'Topic :: Games/Entertainment',
93
        'Topic :: Multimedia :: Graphics',
94
        'Topic :: Software Development :: Libraries :: Python Modules',
95
        ],
96
    keywords='roguelike cffi Unicode libtcod fov heightmap namegen',
97
    platforms=[
98
        'Windows',
99
        'MacOS',
100
        'Linux',
101
        ],
102
    license='Simplified BSD License',
103
    )
104