|
|
@ -1,14 +1,39 @@ |
|
|
|
#!/usr/bin/env python |
|
|
|
#!/usr/bin/env python |
|
|
|
|
|
|
|
|
|
|
|
from io import open |
|
|
|
from io import open |
|
|
|
|
|
|
|
from setuptools import find_packages, setup |
|
|
|
import os |
|
|
|
import os |
|
|
|
from setuptools import setup, find_packages |
|
|
|
import re |
|
|
|
|
|
|
|
import subprocess |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
Use `git tag 1.0.0` to tag a release; `python setup.py --version` |
|
|
|
|
|
|
|
to update the _version.py file. |
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_version(prefix): |
|
|
|
def get_version(prefix): |
|
|
|
import re |
|
|
|
if os.path.exists('.git'): |
|
|
|
with open(os.path.join(prefix, '__init__.py')) as fd: |
|
|
|
parts = subprocess.check_output(['git', 'describe', '--tags']).decode().strip().split('-') |
|
|
|
metadata = dict(re.findall("__([a-z]+)__ = '([^']+)'", fd.read())) |
|
|
|
if len(parts) == 3: |
|
|
|
|
|
|
|
version = '{}.{}+{}'.format(*parts) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
version = parts[0] |
|
|
|
|
|
|
|
version_py = "__version__ = '{}'".format(version) |
|
|
|
|
|
|
|
_version = os.path.join(prefix, '_version.py') |
|
|
|
|
|
|
|
if not os.path.exists(_version) or open(_version).read().strip() != version_py: |
|
|
|
|
|
|
|
with open(_version, 'w') as fd: |
|
|
|
|
|
|
|
fd.write(version_py) |
|
|
|
|
|
|
|
return version |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
for f in ('_version.py', '__init__.py'): |
|
|
|
|
|
|
|
f = os.path.join(prefix, f) |
|
|
|
|
|
|
|
if os.path.exists(f): |
|
|
|
|
|
|
|
with open(f) as fd: |
|
|
|
|
|
|
|
metadata = dict(re.findall("__([a-z]+)__ = '([^']+)'", fd.read())) |
|
|
|
|
|
|
|
if 'version' in metadata: |
|
|
|
|
|
|
|
break |
|
|
|
return metadata['version'] |
|
|
|
return metadata['version'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|