Files
openvino/tools/pot/setup.py
Przemyslaw Wysocki d2871fd52c [PyOV] Enable Python 3.10 on Azure CI (#12578)
* Fix mypy for numpy==1.21.6

* Apply CR changes

* Allow Python 3.6 for open source

* Attempt to silence mypy

* Revert to 3.6 in setup.pys

* Fix merge conflict

* Add newline

* Fix Python version assert

* Test Python 3.10 CI

* Try bumping up pybind to 2.10

* Link default python to python 3.10

* Add sudo to changing default python

* Bump python version in setupvars

* Fix exception in test

* Do the same for compatibility

* Apply same CI changes to other pipelines

* Attempt to fix arm and windows CIs

* Fix win py lib version and links?

* Try to fix CI

* Fix win python path

* Update win path

* Test disable PDPD

* Disable TF for testing CI

* Add sudo to rm

* Test linux

* Update requirements

* RM sudo

* Add debug step to CI on ARM

* build py from source on linux

* Remove debug step from ARM

* Fix err

* Fill num_proc

* Fic py installation

* Bump pdpd to 2.3.1

* Bump np vers

* Try to upgrade onnx to 1.12.0

* Revert onnx upgrade, enable frontends

* Build py shared

* Export library

* activate py env

* Bump scipy for py3.10

* Another scipy bump

* Fix Windows path, add nfs helper for mount

* Attempt to fix win_cc

* Batch of changes

* Try to fix ngraph-onnx-lin

* Install lsb-release for docker on ngraph-onnx-lin

* Link lsb_release

* Try bumping Ubuntu to 22.04

* Revert ubuntu change in dockerfile

* Refactor tests for onnx1.12

* Fix ONNX compatibility and numpy warnings

* Refactor tests for onnx1.12

* Fix ONNX compatibility and numpy warnings

* Upgrade ONNX to 1.12 in cpp

* Skip unsupported ops

* Revert "Fix ONNX compatibility and numpy warnings"

This reverts commit cd8a0e6b8e.

* Small changes

* Remove unnecessary changes

* Bump Python version in github workflows

* Fix flake error

* Another flake error

* Even more flake errors

* Xfail more tests

* Fix mypy errors

* Change onnx version in tests

* Bump ONNX in MO

* Fix onnx utils in comp

* Minor changes

* Import pathlib

* Add xfails to compatibility tests

* Skip segfaulting tests

* Fix onnx nametuple

* Fix flake

* Try to fix py3.6 onnx

* Switch to venv in windows

* Fix model importer and reqs

* Add __test__

* Debug print

* Fix flake

* Update linux.yml

* Update windows.yml

* Update linux.yml

* Update windows.yml

* Install python3.10

* Update windows.yml

* Update windows.yml

* Update windows.yml

* Update windows.yml

* Update windows.yml

* Update windows.yml

* Update windows.yml

* Update windows.yml

* Install py embedded

* Fix dir

* Fix curl

* Add complete file

* CP file

* Bump py ver

* Fix missing venv

* Try to install

* Disable venv

* Bump OMZ commit

* checkout omz

* Revert omz

* Bump omz

* Revert pybind bump

* Update .gitmodules

* Change pybind to fork

* change ssize_t to size_t

* Install bz2 for py build

* Bump omz

* Bump pandas requirement version

* Revert omz

* Install missing clang

* Bump omz

* Bump versions on fork

* Bump numpy in model zoo

* Fix clang

* Skip segfaulting pdpd test

* Skip another pdpd test

* Skip pdpd places.cpp

* Bump py ver in setupvars.bat

* Disable paddle tests

* Use int instead of str

* Fix requirements path

* Enable lin-cc

* Fixes in CI

* lin-cc and ngrpah-onnx changes

* Update num_proc

* Update ngraph-onnx

* Minor change

* Fix env var

* Change ubuntu to 20

* Get compiler on ngraph-onnx

* Add sudo to apt-get

* Add SSL

* Download ssl

* Different way of installing ssl

* Minor changes

* install zlib

* Fix env var

* Fix docker building error

* Revert changes

* Modify dockerfile

* Change pychecks python version

* Cleanup

* Add LayerNorm to expanded ONNX functions

* Revert previous commit

* Add LayerNorm to expanded ONNX functions

* Apply clang

* Move LayerNorm tests to skip_segfault

* Unskip pdpd tests

* Enable pdpd tests on linux

* Refactoring

* Remove 3.6 from reqs

* Refactoring

* Minor changes

* Minor changes

* Relax MO reqs

* Bump torch version

* relax pytest

* Specify pytest version

* Fix pytest pip conflict

* Bump pybind11 to v2.10.1 release tag

* Specify separate pytest version for py3.10

* Bump attrs

* Add py dependency

* Refactor versions

* Add venv activation to tf tests

* Fix fdupes

* Bump OMZ submodule

* Remove find and replace

* Change pybind to upstream fork

* Set pybind to proper commit

* Minor changes

* Try to fix scipy

* Updated exclude patterns for nlohmann json

* [PyOV] Fix wheel requirements for new package versions

* Specify CPU plugin versions

* Bump OMZ version

* Fix linter

* Fix linter 2

* Fix linter 3

* Disable linter

Co-authored-by: Mateusz <mateusz.mikolajczyk@intel.com>
Co-authored-by: jiwaszki <jan.iwaszkiewicz@intel.com>
Co-authored-by: Ilya Lavrenov <ilya.lavrenov@intel.com>
2022-11-08 11:38:39 +04:00

165 lines
4.8 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 = [
"scipy~=1.7; python_version == '3.7'",
"scipy>=1.8; python_version >= '3.8'",
"jstyleson>=0.0.2",
"numpy>=1.16.6,<=1.23.1",
"addict>=2.4.0",
"networkx<2.8.1",
"tqdm>=4.54.1",
"texttable>=1.6.3",
"pandas~=1.3.5",
"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",
"openpyxl==2.6.4",
"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=get_version(),
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'
]
}
)