-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsetup.py
80 lines (64 loc) · 2.08 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import os
import sys
from setuptools import setup, find_packages
import shutil
from pathlib import Path
# allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
import otree
version = otree.__version__
MSG_PY_VERSION = """
Error: This version of oTree requires Python 3.7 or higher.
"""
if sys.version_info < (3, 7):
sys.exit(MSG_PY_VERSION)
def clean_requirements(requirements_text):
required_raw = requirements_text.splitlines()
required = []
for line in required_raw:
req = line.split('#')[0].strip()
if req:
required.append(req)
return required
README = Path('README.rst').read_text('utf8')
required = clean_requirements(Path('requirements.txt').read_text())
required_mturk = clean_requirements(Path('requirements_mturk.txt').read_text())
if sys.argv[-1] == 'publish':
if Path('dist').is_dir():
shutil.rmtree('dist')
for cmd in [
"python setup.py sdist bdist_wheel",
"twine upload dist/*",
f'git tag -a {version} -m "version {version}"',
"git push --tags",
]:
sys.stdout.write(cmd + '\n')
exit_code = os.system(cmd)
if exit_code != 0:
raise AssertionError
if Path('build').is_dir():
shutil.rmtree('build')
sys.exit()
setup(
name='otree',
version=version,
include_package_data=True,
license='MIT License',
# 2017-10-03: find_packages function works correctly, but tests
# are still being included in the package.
# not sure why. so instead i use
# recursive-exclude in MANIFEST.in.
packages=find_packages(),
description=(
'oTree is a toolset that makes it easy to create and '
'administer web-based social science experiments.'
),
long_description=README,
url='http://otree.org/',
author='[email protected]',
author_email='[email protected]',
install_requires=required,
entry_points={'console_scripts': ['otree=otree.main:execute_from_command_line']},
zip_safe=False,
extras_require={'mturk': required_mturk},
)