Skip to content

Commit e0cad9c

Browse files
committed
add tag base versioning mechanism
1 parent 9d3cc49 commit e0cad9c

File tree

5 files changed

+106
-1
lines changed

5 files changed

+106
-1
lines changed

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
include pypop/version
12
recursive-include pypop/examples *
23
recursive-include pypop/cfgs *
34
recursive-include pypop/cutters *

pypop/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,11 @@
99
from . import metrics
1010
from . import prv
1111
from . import config
12+
13+
from .version import get_version
14+
15+
__all__ = ['__version__']
16+
17+
__version__ = get_version()
18+
19+

pypop/version.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env python3
2+
3+
from warnings import warn
4+
from pkg_resources import resource_filename
5+
from subprocess import run, PIPE
6+
7+
_k_unknown_ver = "Unknown"
8+
9+
def get_git_verstring():
10+
git_result = run(
11+
['git', 'describe', '--tags', '--dirty', '--long'],
12+
stdout=PIPE,
13+
stderr=PIPE,
14+
)
15+
if git_result.returncode != 0:
16+
return _k_unknown_ver
17+
18+
ver_string = git_result.stdout.decode().strip()
19+
ver_tokens = ver_string.split('-')
20+
21+
dirty = None
22+
if ver_tokens[-1] == "dirty":
23+
dirty = ver_tokens.pop()
24+
25+
sha = ver_tokens.pop()
26+
commitcount = ver_tokens.pop()
27+
tag = '-'.join(ver_tokens)
28+
29+
if commitcount == '0':
30+
return "-".join([tag, dirty]) if dirty else tag
31+
32+
return ver_string
33+
34+
35+
def get_version():
36+
37+
gitver = get_git_verstring()
38+
if gitver != _k_unknown_ver:
39+
return gitver
40+
41+
try:
42+
with open(resource_filename(__name__, 'version'), 'rt') as fh:
43+
fileversion = fh.readlines().strip()
44+
return fileversion
45+
except FileNotFoundError:
46+
pass
47+
48+
return _k_unknown_ver

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
# Copyright (c) 2019, The Numerical Algorithms Group, Ltd. All rights reserved.
44

55
from setuptools import setup, find_packages
6+
from versionate import versionate
67

78
setup(
89
name="pypop",
9-
version="0.2.0rc8",
10+
version=versionate(),
1011
url="https://github.com/numericalalgorithmsgroup/pypop.git",
1112
author="Numerical Algorithms Group",
1213
author_email="[email protected]",

versionate.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/bin/env python3
2+
3+
from warnings import warn
4+
from subprocess import run, PIPE
5+
6+
_k_unknown_ver = "Unknown"
7+
8+
9+
def get_git_verstring():
10+
git_result = run(
11+
['git', 'describe', '--tags', '--dirty', '--long'],
12+
stdout=PIPE,
13+
stderr=PIPE,
14+
)
15+
if git_result.returncode != 0:
16+
warn("Git failed with error: {}".format(str(err.stderr)))
17+
return _k_unknown_ver
18+
19+
ver_string = git_result.stdout.decode().strip()
20+
ver_tokens = ver_string.split('-')
21+
22+
dirty = None
23+
if ver_tokens[-1] == "dirty":
24+
dirty = ver_tokens.pop()
25+
26+
sha = ver_tokens.pop()
27+
commitcount = ver_tokens.pop()
28+
tag = '-'.join(ver_tokens)
29+
30+
if commitcount == '0':
31+
return "-".join([tag, dirty]) if dirty else tag
32+
33+
return ver_string
34+
35+
36+
def versionate():
37+
38+
ver_string = get_git_verstring()
39+
40+
with open('pypop/version', 'wt') as fh:
41+
fh.write(ver_string)
42+
43+
return ver_string
44+
45+
46+
if __name__ == "__main__":
47+
print(get_git_verstring())

0 commit comments

Comments
 (0)