-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathsetup.py
94 lines (78 loc) · 2.92 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
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You
# may not use this file except in compliance with the License. A copy of
# the License is located at
#
# http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file 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.
import os
from typing import List
from setuptools import find_namespace_packages, setup
_repo: str = "amazon-accessible-rl-sdk"
_pkg: str = "a2rl"
_version = "1.2.0"
def read_lines(fname: str) -> List[str]:
"""Read the content of a file.
You may use this to get the content of, for e.g., requirements.txt, VERSION, etc.
"""
return open(os.path.join(os.path.dirname(__file__), fname)).readlines()
def read_requirements(fname: str) -> List[str]:
lines = [
flip_git(stripped_line)
for stripped_line in (line.strip() for line in read_lines(fname))
if stripped_line != ""
]
return lines
def flip_git(s: str) -> str:
"""Flip pip's git source from ``requirements.txt`` format to `setuptools` format.
If `s` is not a git source, return as-is.
Args:
s (str): a line in ``requirements.txt``.
Returns:
str: if `s` is ``git+.://gh.com/a/b@c#egg=d``, then return ``d @ git+.://gh.com/a/b@c``.
Otherwise, return as-is.
"""
if not s.startswith("git+"):
return s
git_url, egg = s.rsplit("#", 1)
_, egg_name = egg.split("=")
return f"{egg_name} @ {git_url}"
# Declare minimal set for installation
required_packages: List[str] = read_requirements("requirements.txt")
extras = {
"dev": read_requirements("requirements-dev.txt"),
"test": read_requirements("requirements-test.txt"),
}
setup(
name=_pkg,
packages=find_namespace_packages(where="src"),
package_dir={"": "src"},
include_package_data=True,
version=_version,
description="Make recommendations for sequential decision problems using offline data",
long_description="".join(read_lines("README.md")),
long_description_content_type="text/markdown",
author="AWS/ProServe Global Team",
url=f"https://github.com/awslabs/{_repo}/",
download_url="",
project_urls={
"Bug Tracker": f"https://github.com/awslabs/{_repo}/issues/",
"Documentation": f"https://{_repo}.readthedocs.io/en/stable/",
"Source Code": f"https://github.com/awslabs/{_repo}/",
},
license="Apache License 2.0",
platforms=["any"],
classifiers=[
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
python_requires=">=3.8.0",
install_requires=required_packages,
extras_require=extras,
)