-
Notifications
You must be signed in to change notification settings - Fork 32
/
setup.py
129 lines (115 loc) · 3.95 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
120
121
122
123
124
125
126
127
128
129
#! /usr/bin/env python3
import os
import subprocess
import time
from setuptools import setup, find_packages
GIT_VERSION_FILE = os.path.join("cwl_airflow","git_version")
HERE = os.path.abspath(os.path.dirname(__file__))
def get_git_tag():
return subprocess.check_output(["git", "describe", "--contains"], text=True).split("^")[0].strip()
def get_git_timestamp():
gitinfo = subprocess.check_output(
["git", "log", "--first-parent", "--max-count=1", "--format=format:%ct", "."], text=True).strip()
return time.strftime("%Y%m%d%H%M%S", time.gmtime(int(gitinfo)))
def get_description():
README = os.path.join(HERE, "README.md")
with open(README, "r") as f:
return f.read()
def get_version():
"""
Tries to get pachage version with following order:
0. default version
1. from git_version file - when installing from pip, this is the only source to get version
2. from tag
3. from commit timestamp
Updates/creates git_version file with the package version
:return: package version
"""
version = "1.2.0" # set default version
try:
with open(GIT_VERSION_FILE, "r") as input_stream: # try to get version info from file
version = input_stream.read()
except Exception:
pass
try:
version = get_git_tag() # try to get version info from the closest tag
except Exception:
try:
version = "1.2." + get_git_timestamp() # try to get version info from commit date
except Exception:
pass
try:
with open(GIT_VERSION_FILE, "w") as output_stream: # save updated version to file (or the same)
output_stream.write(version)
except Exception:
pass
return version
EXTRAS_REQUIRE = {
"celery": [
"celery~=4.4.2",
"flower>=0.7.3, <1.0",
"vine~=1.3"
],
"mysql": [
"mysql-connector-python>=8.0.11, <=8.0.22",
"mysqlclient>=1.3.6,<3",
],
"statsd": [
"statsd>=3.3.0, <4.0"
],
"rabbitmq": [
"amqp<5.0.0"
],
"postgres": [
"psycopg2-binary>=2.7.4"
]
}
setup(
name="cwl-airflow",
description="Python package to extend Airflow functionality with CWL v1.1 support",
long_description=get_description(),
long_description_content_type="text/markdown",
version=get_version(),
url="https://github.com/Barski-lab/cwl-airflow",
download_url="https://github.com/Barski-lab/cwl-airflow",
author="Michael Kotliar",
author_email="[email protected]",
license="Apache-2.0",
include_package_data=True,
packages=find_packages(
exclude=["docs", "tests", "dev"]
),
extras_require=EXTRAS_REQUIRE,
install_requires=[
"apache-airflow==2.1.4",
"cwltool==3.1.20210816212154",
"cwltest==2.1.20210626101542",
"jsonmerge",
"connexion",
"tornado",
"docker",
"swagger-ui-bundle"
],
zip_safe=False,
scripts=["cwl_airflow/bin/cwl-airflow"],
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: Other Environment",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: Healthcare Industry",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX",
"Operating System :: POSIX :: Linux",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.7",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Bio-Informatics",
"Topic :: Scientific/Engineering :: Chemistry",
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Scientific/Engineering :: Medical Science Apps."
]
)