forked from Avaiga/taipy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
121 lines (105 loc) · 4.15 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
# Copyright 2021-2024 Avaiga Private Limited
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
"""The setup script for taipy package"""
import os
import json
import platform
import subprocess
from pathlib import Path
from setuptools import find_packages, setup
from setuptools.command.build_py import build_py
root_folder = Path(__file__).parent
package_desc = Path("package_desc.md").read_text("UTF-8")
# get current version
with open(os.path.join("taipy", "version.json")) as version_file:
version = json.load(version_file)
version_string = f'{version.get("major", 0)}.{version.get("minor", 0)}.{version.get("patch", 0)}'
if vext := version.get("ext"):
version_string = f"{version_string}.{vext}"
def get_requirements():
# get requirements from the different setups in tools/packages (removing taipy packages)
reqs = set()
for pkg in (root_folder / "tools" / "packages").iterdir():
requirements_file = pkg / "setup.requirements.txt"
if requirements_file.exists():
reqs.update(requirements_file.read_text("UTF-8").splitlines())
return [r for r in reqs if r and not r.startswith("taipy")]
test_requirements = ["pytest>=3.8"]
extras_require = {
"ngrok": ["pyngrok>=5.1,<6.0"],
"image": [
"python-magic>=0.4.24,<0.5;platform_system!='Windows'",
"python-magic-bin>=0.4.14,<0.5;platform_system=='Windows'",
],
"rdp": ["rdp>=0.8"],
"arrow": ["pyarrow>=14.0.2,<15.0"],
"mssql": ["pyodbc>=4"],
}
class NPMInstall(build_py):
def run(self):
subprocess.run(
["python", "bundle_build.py"],
cwd=root_folder / "tools" / "frontend",
check=True,
shell=platform.system() == "Windows",
)
build_py.run(self)
setup(
author="Avaiga",
author_email="[email protected]",
python_requires=">=3.8",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development",
"Topic :: Scientific/Engineering",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Operating System :: Unix",
"Operating System :: MacOS",
],
description="A 360° open-source platform from Python pilots to production-ready web apps.",
install_requires=get_requirements(),
entry_points={
"console_scripts": [
"taipy = taipy._entrypoint:_entrypoint",
]
},
license="Apache License 2.0",
long_description=package_desc,
long_description_content_type="text/markdown",
keywords="taipy",
name="taipy",
packages=find_packages(include=["taipy", "taipy.*"]),
include_package_data=True,
test_suite="tests",
version=version_string,
zip_safe=False,
extras_require=extras_require,
cmdclass={"build_py": NPMInstall},
project_urls={
"Homepage": "https://www.taipy.io",
"Documentation": "https://docs.taipy.io",
"Source": "https://github.com/Avaiga/taipy",
"Download": "https://pypi.org/project/taipy/#files",
"Tracker": "https://github.com/Avaiga/taipy/issues",
"Security": "https://github.com/Avaiga/taipy?tab=security-ov-file#readme",
f"Release notes": "https://docs.taipy.io/en/release-{version_string}/relnotes/",
},
)