forked from ivy-llc/ivy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
113 lines (93 loc) · 3.21 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
# lint as: python3
# Copyright 2021 The Ivy Authors. 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.
# 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..
# ==============================================================================
__version__ = None
import setuptools
from pathlib import Path
from distutils.core import setup
def _strip(line):
return line.split(" ")[0].split("#")[0].split(",")[0]
def _replace_logos_html(txt):
# html-containing chunks
chunks = txt.split(".. raw:: html")
# light-dark logo
chunks[0] = _remove_dark_logo(chunks[0])
# backend logos
backends_chunk = chunks[2]
bc = backends_chunk.split("\n\n")
img_str = (
".. image:: https://github.com/unifyai/unifyai.github.io/blob/master/img/externally_linked/logos/supported/frameworks.png?raw=true\n" # noqa
" :width: 100%\n"
" :class: dark-light"
)
backends_chunk = "\n\n".join(bc[0:1] + [img_str] + bc[2:])
# re-join
return "".join(
[
".. raw:: html".join(chunks[0:2]),
backends_chunk,
".. raw:: html".join(chunks[3:]),
]
)
def _remove_dark_logo(txt):
return txt.split("\n\n")[0]
def _is_html(line):
line_squashed = line.replace(" ", "")
if not line_squashed:
return False
if line_squashed[0] == "<" and line_squashed[-1] == ">":
return True
return False
def _is_raw_block(line):
line_squashed = line.replace(" ", "")
if len(line_squashed) < 11:
return False
if line_squashed[-11:] == "..raw::html":
return True
return False
def read_description(path):
with open(path, "r", encoding="utf-8") as f:
return f.read()
this_directory = Path(__file__).parent
text = read_description("README.rst")
lines = _replace_logos_html(text).split("\n")
lines = [line for line in lines if not (_is_html(line) or _is_raw_block(line))]
long_description = "\n".join(lines)
with open("ivy/_version.py") as f:
exec(f.read(), __version__)
setup(
name="ivy-core",
version=__version__,
author="Ivy Team",
author_email="[email protected]",
description=(
"The unified machine learning framework, enabling framework-agnostic "
"functions, layers and libraries."
),
long_description=long_description,
long_description_content_type="text/x-rst",
url="https://lets-unify.ai/ivy",
project_urls={
"Docs": "https://lets-unify.ai/docs/ivy/",
"Source": "https://github.com/unifyai/ivy",
},
packages=setuptools.find_packages(),
install_requires=[
_strip(line)
for line in open("requirements/requirements.txt", "r", encoding="utf-8")
],
classifiers=["License :: OSI Approved :: Apache Software License"],
license="Apache 2.0",
)