Passed
Push — release ( 05f30f...608763 )
by Konstantinos
01:27
created

setup.readme()   A

Complexity

Conditions 2

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 2
nop 0
1
import os
2
import re
3
from setuptools import setup
4
from collections import OrderedDict
5
6
7
my_dir = os.path.dirname(os.path.realpath(__file__))
8
9
10
# CONSTANTS
11
setup_cfg_filename = 'setup.cfg'
12
readme_filename = 'README.rst'
13
changelog_filename = 'CHANGELOG.rst'
14
source_code_repo = 'https://github.com/boromir674/so-magic'
15
# changelog = '{}/blob/master/CHANGELOG.rst'.format(source_code_repo)
16
17
README = os.path.join(my_dir, readme_filename)
18
CHANGELOG = os.path.join(my_dir, changelog_filename)
19
20
# Compute long description that will be rendered in the pypi server
21
long_description = ''
22
if not long_description:  # if not custom long description is supplied, then create one automatically
23
    if not os.path.isfile(README):
24
        long_description = 'Pending to provide with a long description for the software/package'
25
    else:
26
        with open(README) as f:
27
            long_description = f.read()
28
29
30
def requirements():
31
    with open(os.path.join(my_dir, 'requirements', 'base.txt')) as fh:
32
        return fh.read().split('\n')
33
34
35
# Automatically compute package vesion from the [semantic_release] section in setup.cfg
36
with open(os.path.join(my_dir, setup_cfg_filename), 'r') as f:
37
    regex = r"\[semantic_release\][\w\s=/\.:\d]+version_variable[\ \t]*=[\ \t]*([\w\.]+(?:/[\w\.]+)*):(\w+)"
38
    m = re.search(regex, f.read(), re.MULTILINE)
39
    if m:
40
        target_file = os.path.join(my_dir, m.group(1))
41
        target_string = m.group(2)
42
    else:
43
        raise RuntimeError(f"Expected to find the '[semantic_release]' section, in the '{setup_cfg_filename}' file, with key 'version_variable'."
44
                           f"\nExample (it does not have to be a .py file) to indicate that the version is stored in the '__version__' string:\n[semantic_release]\nversion_variable = src/package_name/__init__.py:__version__")
45
46
47
if not os.path.isfile(target_file):
48
    raise FileNotFoundError(
49
        f"Path '{target_file} does not appear to be valid. Please go to the '{setup_cfg_filename}' file, [semantic_release] section, 'version_variable' key and indicate a valid path (to look for the version string)")
50
51
reg_string = r'\s*=\s*[\'\"]([^\'\"]*)[\'\"]'
52
53
with open(os.path.join(my_dir, target_file), 'r') as f:
54
    content = f.read()
55
    reg = f'^{target_string}' + reg_string
56
    m = re.search(reg, content, re.MULTILINE)
57
    if m:
58
        _version = m.group(1)
59
    else:
60
        raise AttributeError(f"Could not find a match for regex {reg} when applied to:\n{content}")
61
62
63
setup(
64
    version=_version,
65
    description='library',
66
    long_description=long_description,
67
    long_description_content_type='text/x-rst',
68
    test_suite='tests',
69
    install_requires=['attrs', 'numpy', 'scikit-learn', 'pandas', 'somoclu'],
70
    project_urls=OrderedDict([
71
        ('1-Tracker', f'{source_code_repo}/issues'),
72
        ('2-Changelog', CHANGELOG),
73
        ('3-Source', source_code_repo),
74
        ('4-Documentation', 'https://so-magic.readthedocs.io/en/dev/'), # "https://blahblah.readthedocs.io/en/v{}/".format(_version)
75
    ]),
76
77
    # download_url='https://github.com/boromir674/music-album-creator/archive/v{}.tar.gz'.format(_version),  # help easy_install do its tricks
78
    # extras_require={},
79
    # setup_requires=[],
80
)
81
# py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')],
82