facexlib
/
setup.py
107 строк · 3.0 Кб
1#!/usr/bin/env python
2
3from setuptools import find_packages, setup
4
5import os
6import subprocess
7import time
8
9version_file = 'facexlib/version.py'
10
11
12def readme():
13with open('README.md', encoding='utf-8') as f:
14content = f.read()
15return content
16
17
18def get_git_hash():
19
20def _minimal_ext_cmd(cmd):
21# construct minimal environment
22env = {}
23for k in ['SYSTEMROOT', 'PATH', 'HOME']:
24v = os.environ.get(k)
25if v is not None:
26env[k] = v
27# LANGUAGE is used on win32
28env['LANGUAGE'] = 'C'
29env['LANG'] = 'C'
30env['LC_ALL'] = 'C'
31out = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=env).communicate()[0]
32return out
33
34try:
35out = _minimal_ext_cmd(['git', 'rev-parse', 'HEAD'])
36sha = out.strip().decode('ascii')
37except OSError:
38sha = 'unknown'
39
40return sha
41
42
43def get_hash():
44if os.path.exists('.git'):
45sha = get_git_hash()[:7]
46else:
47sha = 'unknown'
48
49return sha
50
51
52def write_version_py():
53content = """# GENERATED VERSION FILE
54# TIME: {}
55__version__ = '{}'
56__gitsha__ = '{}'
57version_info = ({})
58"""
59sha = get_hash()
60with open('VERSION', 'r') as f:
61SHORT_VERSION = f.read().strip()
62VERSION_INFO = ', '.join([x if x.isdigit() else f'"{x}"' for x in SHORT_VERSION.split('.')])
63
64version_file_str = content.format(time.asctime(), SHORT_VERSION, sha, VERSION_INFO)
65with open(version_file, 'w') as f:
66f.write(version_file_str)
67
68
69def get_version():
70with open(version_file, 'r') as f:
71exec(compile(f.read(), version_file, 'exec'))
72return locals()['__version__']
73
74
75def get_requirements(filename='requirements.txt'):
76here = os.path.dirname(os.path.realpath(__file__))
77with open(os.path.join(here, filename), 'r') as f:
78requires = [line.replace('\n', '') for line in f.readlines()]
79return requires
80
81
82if __name__ == '__main__':
83write_version_py()
84setup(
85name='facexlib',
86version=get_version(),
87description='Basic face library',
88long_description=readme(),
89long_description_content_type='text/markdown',
90author='Xintao Wang',
91author_email='xintao.wang@outlook.com',
92keywords='computer vision, face, detection, landmark, alignment',
93url='https://github.com/xinntao/facexlib',
94include_package_data=True,
95packages=find_packages(exclude=('options', 'datasets', 'experiments', 'results', 'tb_logger', 'wandb')),
96classifiers=[
97'Development Status :: 4 - Beta',
98'License :: OSI Approved :: Apache Software License',
99'Operating System :: OS Independent',
100'Programming Language :: Python :: 3',
101'Programming Language :: Python :: 3.7',
102'Programming Language :: Python :: 3.8',
103],
104license='Apache License 2.0',
105setup_requires=['cython', 'numpy'],
106install_requires=get_requirements(),
107zip_safe=False)
108