This repository has been archived by the owner on Sep 26, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
101 lines (78 loc) · 3.35 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
from setuptools import setup, find_packages
import re
from os.path import dirname, isdir, join
from subprocess import CalledProcessError, check_output
tag_re = re.compile(r'\btag: %s([0-9][^,]*)\b')
version_re = re.compile('^Version: (.+)$', re.M)
def readme():
with open('README.md') as f:
return f.read()
def version_from_git_describe(version):
if version[0] == 'v':
version = version[1:]
# PEP 440 compatibility
number_commits_ahead = 0
if '-' in version:
version, number_commits_ahead, commit_hash = version.split('-')
number_commits_ahead = int(number_commits_ahead)
# print('number_commits_ahead', number_commits_ahead)
split_versions = version.split('.')
if 'post' in split_versions[-1]:
suffix = split_versions[-1]
split_versions = split_versions[:-1]
else:
suffix = None
for pre_release_segment in ['a', 'b', 'rc']:
if pre_release_segment in split_versions[-1]:
if number_commits_ahead > 0:
split_versions[-1] = str(split_versions[-1].split(pre_release_segment)[0])
if len(split_versions) == 2:
split_versions.append('0')
if len(split_versions) == 1:
split_versions.extend(['0', '0'])
split_versions[-1] = str(int(split_versions[-1])+1)
future_version = '.'.join(split_versions)
return '{}.dev{}'.format(future_version, number_commits_ahead)
else:
return '.'.join(split_versions)
if number_commits_ahead > 0:
if len(split_versions) == 2:
split_versions.append('0')
if len(split_versions) == 1:
split_versions.extend(['0', '0'])
split_versions[-1] = str(int(split_versions[-1])+1)
split_versions = '.'.join(split_versions)
return '{}.dev{}'.format(split_versions, number_commits_ahead)
else:
if suffix is not None:
split_versions.append(suffix)
return '.'.join(split_versions)
# Just testing if get_version works well
assert version_from_git_describe('v0.1.7.post2') == '0.1.7.post2'
assert version_from_git_describe('v0.0.1-25-gaf0bf53') == '0.0.2.dev25'
assert version_from_git_describe('v0.1-15-zsdgaz') == '0.1.1.dev15'
assert version_from_git_describe('v1') == '1'
assert version_from_git_describe('v1-3-aqsfjbo') == '1.0.1.dev3'
def get_version():
# Return the version if it has been injected into the file by git-archive
version = tag_re.search('$Format:%D$')
if version:
return version.group(1)
d = dirname(__file__)
if isdir(join(d, '.git')):
cmd = 'git describe --tags'
try:
version = check_output(cmd.split()).decode().strip()[:]
except CalledProcessError:
raise RuntimeError('Unable to get version number from git tags')
return version_from_git_describe(version)
else:
# Extract the version from the PKG-INFO file.
with open(join(d, 'PKG-INFO')) as f:
version = version_re.search(f.read()).group(1)
return version
setup(version=get_version(), name='hello_dessia', description='',
long_description=readme(), author='hello',
author_email='hello@dessia.tech',
install_requires=['dessia_common', 'plot_data>=0.5.11', 'volmdlr>=0.2.11'],
packages=find_packages())