forked from ivy-llc/ivy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
89 lines (75 loc) · 3.16 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
# 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..
# ==============================================================================
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')
# 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' \
' :width: 100%'
backends_chunk = '\n\n'.join(bc[0:1] + [img_str] + bc[2:])
# library logos
libraries_chunk = chunks[3]
lc = libraries_chunk.split('\n\n')
img_str = '.. image:: https://github.com/unifyai/unifyai.github.io/blob/master/img/externally_linked/ivy_libraries.png?raw=true\n' \
' :width: 100%'
libraries_chunk = '\n\n'.join(lc[0:1] + [img_str] + lc[2:])
# re-join
chunks[3] = libraries_chunk
return ''.join(
['.. raw:: html'.join(chunks[0:2]), backends_chunk, '.. raw:: html'.join(chunks[3:])])
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
this_directory = Path(__file__).parent
text = (this_directory / "README.rst").read_text()
lines = _replace_logos_html(text).replace('. Click on the icons below to learn more!', '!').split('\n')
lines = [line for line in lines if not (_is_html(line) or _is_raw_block(line))]
long_description = '\n'.join(lines)
setup(name='ivy-core',
version='1.1.9',
author='Ivy Team',
author_email='ivydl.team@gmail.com',
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/ivy/',
'Source': 'https://github.com/unifyai/ivy',
},
packages=setuptools.find_packages(),
install_requires=[_strip(line) for line in open('requirements.txt', 'r')],
classifiers=['License :: OSI Approved :: Apache Software License'],
license='Apache 2.0'
)