-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
122 lines (102 loc) · 3.89 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
#! python3 # noqa: E265
"""Setup script to package into a Python module."""
# ############################################################################
# ########## Libraries #############
# ##################################
# standard library
from pathlib import Path
from typing import Union
# 3rd party
from setuptools import find_packages, setup
# package (to get version)
from geotribu_cli import __about__
# ############################################################################
# ########### Globals ##############
# ##################################
# The directory containing this file
HERE = Path(__file__).parent
# The text of the README file
README = (HERE / "README.md").read_text()
# ############################################################################
# ########### Functions ############
# ##################################
def load_requirements(requirements_files: Union[Path, list[Path]]) -> list:
"""Helper to load requirements list from a path or a list of paths.
Args:
requirements_files (Path | list[Path]): path or list to paths of requirements
file(s)
Returns:
list: list of requirements loaded from file(s)
"""
out_requirements = []
if isinstance(requirements_files, Path):
requirements_files = [
requirements_files,
]
for requirements_file in requirements_files:
with requirements_file.open(encoding="UTF-8") as f:
out_requirements += [
line
for line in f.read().splitlines()
if not line.startswith(("#", "-")) and len(line)
]
return out_requirements
# ############################################################################
# ########### Main #################
# ##################################
setup(
name=__about__.__package_name__,
author=__about__.__author__,
author_email=__about__.__email__,
description=__about__.__summary__,
long_description=README,
long_description_content_type="text/markdown",
keywords=__about__.__keywords__,
url=__about__.__uri_homepage__,
project_urls={
"Docs": __about__.__uri_homepage__,
"Bug Reports": __about__.__uri_tracker__,
"Source": __about__.__uri_repository__,
},
version=__about__.__version__,
classifiers=[
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Information Technology",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Operating System :: OS Independent",
"Topic :: Scientific/Engineering :: GIS",
],
# packaging
py_modules=["geotribu_cli"],
packages=find_packages(
exclude=["contrib", "docs", "*.tests", "*.tests.*", "tests.*", "tests", ".venv"]
),
include_package_data=True,
install_requires=load_requirements(HERE / "requirements/base.txt"),
extras_require={
# tooling
"dev": load_requirements(HERE / "requirements/development.txt"),
"doc": load_requirements(HERE / "requirements/documentation.txt"),
"test": load_requirements(HERE / "requirements/testing.txt"),
# functional
"all": load_requirements(
list(HERE.joinpath("requirements").glob("extra.*.txt"))
),
"img-local": load_requirements(HERE / "requirements/extra.img-local.txt"),
"img-remote": load_requirements(HERE / "requirements/extra.img-remote.txt"),
},
# cli
entry_points={
"console_scripts": [
f"{__about__.__executable_name__} = geotribu_cli.cli:main",
"geotribu-cli = geotribu_cli.cli:main",
]
},
)