[MO] Align MO namespaces (#7708)
* Moved and merged mo/ and extensions/ into openvino/tools/mo
* edited imports
* edited docs to use mo script from entry_point
* edited MO transformations list loading and setup.py
* changed full path -> 'mo' entry point in docs (leftovers)
* corrected package_BOM
* updated resolving --transformation_config in cli_parser.py
* pkgutil-style __init__.py, added summarize_graph into entry points
* updated DOCs for the new --transformations_config
* fix select
* updated install instructions, fixed setup.py for windows and python_version < 3.8
* fixed typo in requirements.txt
* resolved conflicts
* removed creating custom __init__.py from setup.py
* corrected folder with caffe proto
* corrected loading user defined extensions
* fix openvino.tools.mo import in serialize.py
* corrected layer tests for new namespace
* fix in get_testdata.py
* moved model-optimizer into tools/
* renamed import in POT
* corrected mo.yml
* correct CMakeLists.txt for the newest tools/mo
* corrected find_ie_version.py
* docs and openvino-dev setup.py update for the newest tools/mo
* miscellaneous leftovers and fixes
* corrected CI files, pybind11_add_module in CMakeLists.txt and use of tools/mo path instead of tools/model_optimizer
* add_subdirectory pybind11 for tools/mo
* POT path fix
* updated setupvars.sh setupvars.bat
* Revert "updated setupvars.sh setupvars.bat"
This reverts commit c011142340.
* removed model-optimizer env variables from setupvars
* updated CMakeLists.txt to pack MO properly with tests component
* corrected left imports, corrected loading requirements for layer tests
* mo doc typo correction
* minor corrections in docs; removed summarize_graph from entry_points
* get_started_windows.md, MonoDepth_how_to.md corrections, mo path corrections
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (C) 2018-2021 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
"""
|
||||
Use this script to create a wheel with Model Optimizer code:
|
||||
|
||||
$ python setup.py sdist bdist_wheel
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
from pathlib import Path
|
||||
from shutil import copyfile
|
||||
|
||||
from setuptools import setup, find_namespace_packages
|
||||
from setuptools.command.build_py import build_py
|
||||
from setuptools.command.install import install
|
||||
|
||||
prefix = 'openvino/tools/mo/'
|
||||
SETUP_DIR = Path(__file__).resolve().parent / Path(prefix)
|
||||
|
||||
|
||||
def read_text(path):
|
||||
return (Path(__file__).resolve().parent / path).read_text()
|
||||
|
||||
|
||||
# Detect all the framework specific requirements_*.txt files.
|
||||
requirements_txt = []
|
||||
py_modules = []
|
||||
for item in os.listdir():
|
||||
if re.match(r'requirements(.*)\.txt', item):
|
||||
requirements_txt.append(item)
|
||||
for item in os.listdir(prefix):
|
||||
if re.match(r'mo(.*)\.py|main(.*)\.py', item):
|
||||
py_modules.append(prefix.replace('/', '.') + item.split('.')[0])
|
||||
py_modules.append(prefix.replace('/', '.') + 'subprocess_main')
|
||||
py_modules.append(prefix.replace('/', '.') + '__main__')
|
||||
|
||||
# Minimal set of dependencies
|
||||
deps_whitelist = ['networkx', 'defusedxml', 'numpy']
|
||||
|
||||
# for py37 and less on Windows need importlib-metadata in order to use entry_point *.exe files
|
||||
if sys.platform == 'win32' and sys.version_info[1] < 8:
|
||||
deps_whitelist.append('importlib-metadata')
|
||||
|
||||
deps = []
|
||||
with open('requirements.txt', 'rt') as req_file:
|
||||
for line in req_file.read().split('\n'):
|
||||
if line.startswith(tuple(deps_whitelist)):
|
||||
deps.append(line)
|
||||
|
||||
|
||||
class InstallCmd(install):
|
||||
def run(self):
|
||||
install.run(self)
|
||||
# Create requirements.txt files for all the frameworks
|
||||
for name in requirements_txt:
|
||||
path = os.path.join(self.install_purelib, prefix, name)
|
||||
with open(path, 'wt') as common_reqs_file:
|
||||
common_reqs_file.write('\n'.join(deps))
|
||||
# Add version.txt if exists
|
||||
version_txt = 'version.txt'
|
||||
if os.path.exists(version_txt):
|
||||
copyfile(os.path.join(version_txt),
|
||||
os.path.join(self.install_purelib, prefix, version_txt))
|
||||
|
||||
|
||||
class BuildCmd(build_py):
|
||||
def find_package_modules(self, package, package_dir):
|
||||
modules = super().find_package_modules(package, package_dir)
|
||||
return [
|
||||
(pkg, module, filename)
|
||||
for (pkg, module, filename) in modules
|
||||
]
|
||||
|
||||
|
||||
packages = find_namespace_packages(prefix[:-1])
|
||||
packages = [prefix.replace('/', '.') + p for p in packages]
|
||||
|
||||
setup(
|
||||
name='openvino-mo',
|
||||
version='0.0.0',
|
||||
author='Intel Corporation',
|
||||
author_email='openvino_pushbot@intel.com',
|
||||
url='https://github.com/openvinotoolkit/openvino',
|
||||
packages=packages,
|
||||
py_modules=py_modules,
|
||||
cmdclass={
|
||||
'install': InstallCmd,
|
||||
'build_py': BuildCmd,
|
||||
},
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'mo = openvino.tools.mo.__main__:main',
|
||||
],
|
||||
},
|
||||
package_data={
|
||||
'openvino.tools.mo.front.caffe.proto': ['*.proto'],
|
||||
'openvino.tools.mo.front.mxnet': ['*.json'],
|
||||
'openvino.tools.mo.front.onnx': ['*.json'],
|
||||
'openvino.tools.mo.front.tf': ['*.json'],
|
||||
},
|
||||
extras_require={
|
||||
'caffe': read_text('requirements_caffe.txt'),
|
||||
'kaldi': read_text('requirements_kaldi.txt'),
|
||||
'mxnet': read_text('requirements_mxnet.txt'),
|
||||
'onnx': read_text('requirements_onnx.txt'),
|
||||
'tensorflow': read_text('requirements_tf.txt'),
|
||||
'tensorflow2': read_text('requirements_tf2.txt'),
|
||||
},
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3",
|
||||
"License :: OSI Approved :: Apache Software License",
|
||||
"Operating System :: OS Independent",
|
||||
],
|
||||
install_requires=deps,
|
||||
)
|
||||
Reference in New Issue
Block a user