163 lines
4.7 KiB
Python
163 lines
4.7 KiB
Python
# Copyright (C) 2020-2022 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
from shutil import copyfile
|
|
from setuptools import setup, find_packages
|
|
from setuptools.command.install import install
|
|
|
|
UNKNOWN_VERSION = "unknown version"
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
prefix = os.path.join("openvino", "tools")
|
|
|
|
with open(os.path.join(here, 'README.md'), 'r') as fh:
|
|
long_description = fh.read()
|
|
|
|
|
|
class InstallCmd(install):
|
|
def run(self):
|
|
install.run(self)
|
|
|
|
if self.root is None and self.record is None:
|
|
# install requires
|
|
self.do_egg_install()
|
|
|
|
version_txt = os.path.join(prefix, "pot", "version.txt")
|
|
if os.path.exists(version_txt):
|
|
copyfile(os.path.join(version_txt),
|
|
os.path.join(self.install_purelib, version_txt))
|
|
|
|
|
|
def generate_pot_version():
|
|
try:
|
|
pot_dir = os.path.normpath(os.path.join(here, prefix))
|
|
branch_name = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=pot_dir)
|
|
commit_hash = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=pot_dir)
|
|
return "custom_{}_{}".format(branch_name.strip().decode(), commit_hash.strip().decode())
|
|
except Exception: # pylint:disable=W0703
|
|
return UNKNOWN_VERSION
|
|
|
|
|
|
def get_version():
|
|
version_txt = os.path.join(here, prefix, "pot", "version.txt")
|
|
if os.path.isfile(version_txt):
|
|
with open(version_txt) as f:
|
|
version = f.readline().replace('\n', '')
|
|
else:
|
|
version = generate_pot_version()
|
|
with open(version_txt, 'w') as f:
|
|
f.write(version + '\n')
|
|
return version
|
|
|
|
|
|
INSTALL_EXTRAS = False
|
|
INSTALL_DEV_EXTRAS = False
|
|
|
|
if '--install-extras' in sys.argv:
|
|
INSTALL_EXTRAS = True
|
|
sys.argv.remove('--install-extras')
|
|
|
|
if '--install-dev-extras' in sys.argv:
|
|
INSTALL_DEV_EXTRAS = True
|
|
sys.argv.remove('--install-dev-extras')
|
|
|
|
INSTALL_REQUIRES = [
|
|
"numpy>=1.16.6",
|
|
"scipy~=1.7; python_version == '3.7'",
|
|
"scipy>=1.8,<1.11; python_version >= '3.8'",
|
|
"jstyleson>=0.0.2",
|
|
"addict>=2.4.0",
|
|
"networkx<=3.1",
|
|
"tqdm>=4.54.1",
|
|
"texttable>=1.6.3",
|
|
"openvino-telemetry>=2022.1.0"
|
|
]
|
|
|
|
ALGO_EXTRAS = []
|
|
|
|
DEV_EXTRAS = [
|
|
"pytest>=5.0,<=7.0.1;python_version<'3.10'",
|
|
"pytest==7.2.0;python_version>='3.10'",
|
|
"py>=1.9.0",
|
|
"pytest-mock==3.1.1"
|
|
]
|
|
|
|
DEPENDENCY_LINKS = []
|
|
|
|
python_version = sys.version_info[:2]
|
|
if python_version[0] < 3:
|
|
print('Only Python >= 3.7 is supported by POT/OV')
|
|
sys.exit(0)
|
|
elif python_version[1] < 7:
|
|
print('Only Python >= 3.7 is supported by POT/OV')
|
|
sys.exit(0)
|
|
|
|
|
|
OS_POSTFIXES = {
|
|
'win32': 'win_amd64',
|
|
'linux': 'linux_x86_64',
|
|
}
|
|
|
|
version_string = "{}{}".format(sys.version_info[0], sys.version_info[1])
|
|
version_string_with_mem_manager = version_string + 'm' if sys.version_info[1] < 8 else version_string
|
|
os_string = None if sys.platform not in OS_POSTFIXES else OS_POSTFIXES[sys.platform]
|
|
|
|
TORCH_VERSION = '1.12.1'
|
|
TORCH_SOURCE_URL_TEMPLATE = 'https://download.pytorch.org/whl/cpu/torch-{tv}%2Bcpu-cp{ver}-cp{' \
|
|
'ver_m}-{os}.whl'
|
|
|
|
torch_source_url = TORCH_SOURCE_URL_TEMPLATE.format(
|
|
tv=TORCH_VERSION,
|
|
ver=version_string,
|
|
ver_m=version_string_with_mem_manager,
|
|
os=os_string,
|
|
)
|
|
|
|
torch_dependency = 'torch @ {}'.format(torch_source_url) \
|
|
if os_string is not None else 'torch=={}'.format(TORCH_VERSION)
|
|
|
|
ALGO_EXTRAS.extend([torch_dependency])
|
|
|
|
if INSTALL_EXTRAS:
|
|
INSTALL_REQUIRES.extend(ALGO_EXTRAS)
|
|
if INSTALL_DEV_EXTRAS:
|
|
INSTALL_REQUIRES.extend(DEV_EXTRAS)
|
|
|
|
DEPENDENCY_LINKS = [torch_source_url]
|
|
|
|
|
|
setup(
|
|
name='pot',
|
|
version='0.0.0',
|
|
author='Intel',
|
|
author_email='alexander.kozlov@intel.com',
|
|
description='Post-training Optimization Toolkit',
|
|
long_description=long_description,
|
|
long_description_content_type='text/markdown',
|
|
url='https://software.intel.com/openvino-toolkit',
|
|
packages=find_packages(exclude=["tests", "tests.*",
|
|
"tools", "tools.*"]),
|
|
package_data={'openvino.tools.pot.configs.hardware': ['*.json'],
|
|
'openvino.tools.pot.api.samples': ['*.md', '*/*.md'],
|
|
'openvino.tools.pot.configs.templates': ['*.json']},
|
|
include_package_data=True,
|
|
cmdclass={
|
|
'install': InstallCmd,
|
|
},
|
|
classifiers=[
|
|
'Programming Language :: Python :: 3',
|
|
'License :: OSI Approved :: EULA for the Intel(R) Software Development Products',
|
|
'Operating System :: OS Independent',
|
|
],
|
|
install_requires=INSTALL_REQUIRES,
|
|
dependency_links=DEPENDENCY_LINKS,
|
|
entry_points={
|
|
'console_scripts': [
|
|
'pot=openvino.tools.pot.app.run:main'
|
|
]
|
|
}
|
|
)
|