-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
79 lines (69 loc) · 2.43 KB
/
utils.py
File metadata and controls
79 lines (69 loc) · 2.43 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
__author__ = 'rcj1492'
__created__ = '2017.06'
__license__ = 'MIT'
def inject_init(init_path, readme_path, setup_kwargs):
'''
a method to add arguments to setup.py from module init file
:param init_path: string with path to module __init__ file
:param readme_path: string with path to module README.rst file
:param setup_kwargs: dictionary with existing setup keyword arguments
:return: dictionary with injected keyword arguments
'''
import re
from os import path
from copy import deepcopy
# retrieve init text
init_text = ''
if not path.exists(init_path):
raise ValueError('%s is not a valid path' % init_path)
init_text = open(init_path).read()
# retrieve init settings
init_kwargs = {
'version': '',
'author': '',
'url': '',
'description': '',
'license': '',
}
for key in init_kwargs.keys():
key_regex = re.compile("__%s__\s?\=\s?'(.*?)'" % key)
key_search = key_regex.findall(init_text)
if key_search:
init_kwargs[key] = key_search[0]
# retrieve modifiable settings
mod_kwargs = {
'module': '',
'email': '',
'entry': '',
'authors': ''
}
for key in mod_kwargs.keys():
key_regex = re.compile("__%s__\s?\=\s?'(.*?)'" % key)
key_search = key_regex.findall(init_text)
if key_search:
mod_kwargs[key] = key_search[0]
if mod_kwargs['module']:
init_kwargs['name'] = mod_kwargs['module']
if mod_kwargs['entry']:
init_kwargs['entry_points'] = {"console_scripts": [mod_kwargs['entry']]}
if mod_kwargs['email']:
init_kwargs['author_email'] = mod_kwargs['email']
init_kwargs['maintainer_email'] = mod_kwargs['email']
if mod_kwargs['authors']:
del init_kwargs['author']
init_kwargs['author_list'] = mod_kwargs['authors'].split(' ')
# add readme
if not path.exists(readme_path):
raise ValueError('%s is not a valid path' % readme_path)
try:
readme_text = open(readme_path).read()
init_kwargs['long_description'] = str(readme_text)
except:
raise ValueError('%s is not a valid text file.' % readme_path)
# merge kwargs
setup_kwargs.update(**init_kwargs)
updated_kwargs = deepcopy(setup_kwargs)
for key, value in updated_kwargs.items():
if not value:
del setup_kwargs[key]
return setup_kwargs