forked from paninski-lab/yass
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
119 lines (96 loc) · 3.44 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from __future__ import absolute_import
from __future__ import print_function
import io
import re
import ast
from glob import glob
import os
import sys
from os.path import basename
from os.path import splitext
from shutil import rmtree
from setuptools import find_packages, Command, setup
# yass was taken...
NAME = 'yass-algorithm'
DESCRIPTION = 'YASS: Yet Another Spike Sorter'
URL = 'https://github.com/paninski-lab/yass'
EMAIL = '[email protected]'
AUTHOR = 'Peter Lee, Eduardo Blancas'
LICENSE = 'Apache'
# pathlib2 and funcsigs are required to be compatible with python 2
INSTALL_REQUIRES_DOCS = ['pathlib2', 'funcsigs', 'cerberus']
INSTALL_REQUIRES = [
'numpy', 'scipy', 'scikit-learn', 'pyyaml', 'python-dateutil', 'click',
'tqdm', 'multiprocess', 'coloredlogs'
] + INSTALL_REQUIRES_DOCS
# pass an empty INSTALL_REQUIRES if building the docs, to avoid breaking the
# build, modules are mocked in conf.py
INSTALL_REQUIRES = (INSTALL_REQUIRES_DOCS if os.environ.get('READTHEDOCS')
else INSTALL_REQUIRES)
EXTRAS_REQUIRE = {'tensorflow': ['tensorflow']}
here = os.path.abspath(os.path.dirname(__file__))
with io.open(os.path.join(here, 'README.rst'), encoding='utf-8') as f:
long_description = '\n' + f.read()
_version_re = re.compile(r'__version__\s+=\s+(.*)')
with open('src/yass/__init__.py', 'rb') as f:
VERSION = str(ast.literal_eval(_version_re.search(
f.read().decode('utf-8')).group(1)))
class UploadCommand(Command):
"""Support setup.py upload."""
description = 'Build and publish the package.'
user_options = []
@staticmethod
def status(s):
"""Prints things in bold."""
print('\033[1m{0}\033[0m'.format(s))
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
try:
self.status('Removing previous builds...')
rmtree(os.path.join(here, 'dist'))
except OSError:
pass
self.status('Building Source and Wheel (universal) distribution...')
os.system('{0} setup.py sdist bdist_wheel '
'--universal'.format(sys.executable))
self.status('Uploading the package to PyPi via Twine...')
os.system('twine upload dist/*')
sys.exit()
setup(
name=NAME,
version=VERSION,
license=LICENSE,
description=DESCRIPTION,
long_description=long_description,
author=AUTHOR,
author_email=EMAIL,
url=URL,
packages=find_packages('src'),
package_dir={'': 'src'},
py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')],
include_package_data=True,
zip_safe=False,
classifiers=[
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython',
],
install_requires=INSTALL_REQUIRES,
extras_require=EXTRAS_REQUIRE,
entry_points={
'console_scripts': ['yass=yass.command_line:cli'],
},
download_url='{url}/archive/{version}.tar.gz'.format(url=URL,
version=VERSION),
)