Repository navigation
Expand file tree
/
Copy pathsetup.py
More file actions
94 lines (79 loc) · 3.04 KB
/
Copy pathsetup.py
File metadata and controls
94 lines (79 loc) · 3.04 KB
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 2022 Google LLC.
#
# 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
#
# https://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.
import os
import re
from setuptools import find_packages
from setuptools import setup
from setuptools.command.install import install
from setuptools.dist import Distribution
class InstallPlatlib(install):
def finalize_options(self):
install.finalize_options(self)
if self.distribution.has_ext_modules():
self.install_lib = self.install_platlib
class BinaryDistribution(Distribution):
def has_ext_modules(self):
return True
def is_pure(self):
return False
def _read_version() -> str:
"""Returns `__version__` from dgf/__init__.py (the single source of truth)."""
with open(os.path.join("dgf", "__init__.py")) as f:
match = re.search(r'^__version__ = "([^"]+)"$', f.read(), re.MULTILINE)
if not match:
raise ValueError("Cannot find __version__ in dgf/__init__.py")
return match.group(1)
def _read_requirements(path: str) -> list[str]:
"""Returns the requirements of a requirements file, without the comments."""
with open(path) as f:
lines = [line.split("#")[0].strip() for line in f]
return [line for line in lines if line]
setup(
# "dgf-nightly" for the nightly package (see script/build_pip_package.sh).
name=os.environ.get("DGF_PACKAGE_NAME", "dgf"),
version=_read_version(),
author="Mathieu Guillame-Bert, Brandon Mayer",
description="Distributed Graph Flow",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
url="https://github.com/google/distributed_graph_flow",
project_urls={
"Documentation": "https://dgf.readthedocs.io/",
"Source": "https://github.com/google/distributed_graph_flow.git",
"Tracker": "https://github.com/google/distributed_graph_flow/issues",
},
entry_points={
"console_scripts": [
"dgf-validate-graph=dgf.src.bin:validate_graph",
],
},
license="Apache 2.0",
distclass=BinaryDistribution,
include_package_data=True,
zip_safe=False,
packages=find_packages(),
package_data={"dgf": ["LICENSE", "**/*.so"]},
cmdclass={"install": InstallPlatlib},
python_requires=">=3.11",
install_requires=_read_requirements("requirements.txt"),
extras_require={
# The weak dependencies e.g. `pip install dgf[all]`.
"all": _read_requirements("requirements-dev.txt"),
},
classifiers=[
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
],
)