"""Setup file for anomalib.""" # Copyright (C) 2020 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions # and limitations under the License. import os from importlib.util import module_from_spec, spec_from_file_location from typing import List from setuptools import find_packages, setup def load_module(name: str = "anomalib/__init__.py"): """Load Python Module. Args: name (str, optional): Name of the module to load. Defaults to "anomalib/__init__.py". Returns: _type_: _description_ """ location = os.path.join(os.path.dirname(__file__), name) spec = spec_from_file_location(name=name, location=location) module = module_from_spec(spec) # type: ignore spec.loader.exec_module(module) # type: ignore return module def get_version() -> str: """Get version from `anomalib.__init__`. Version is stored in the main __init__ module in `anomalib`. The varible storing the version is `__version__`. This function reads `__init__` file, checks `__version__ variable and return the value assigned to it. Example: >>> # Assume that __version__ = "0.2.6" >>> get_version() "0.2.6" Returns: str: `anomalib` version. """ anomalib = load_module(name="anomalib/__init__.py") version = anomalib.__version__ return version def get_required_packages(requirement_files: List[str]) -> List[str]: """Get packages from requirements.txt file. This function returns list of required packages from requirement files. Args: requirement_files (List[str]): txt files that contains list of required packages. Example: >>> get_required_packages(requirement_files=["openvino"]) ['onnx>=1.8.1', 'networkx~=2.5', 'openvino-dev==2021.4.1', ...] Returns: List[str]: List of required packages """ required_packages: List[str] = [] for requirement_file in requirement_files: with open(f"requirements/{requirement_file}.txt", "r", encoding="utf8") as file: for line in file: package = line.strip() if package and not package.startswith(("#", "-f")): required_packages.append(package) return required_packages VERSION = get_version() INSTALL_REQUIRES = get_required_packages(requirement_files=["base"]) EXTRAS_REQUIRE = { "dev": get_required_packages(requirement_files=["dev", "docs"]), "openvino": get_required_packages(requirement_files=["openvino"]), "full": get_required_packages(requirement_files=["dev", "docs", "openvino"]), } setup( name="anomalib", version=get_version(), author="Intel OpenVINO", author_email="help@openvino.intel.com", description="anomalib - Anomaly Detection Library", url="", license="Copyright (c) Intel - All Rights Reserved. " 'Licensed under the Apache License, Version 2.0 (the "License")' "See LICENSE file for more details.", python_requires=">=3.7", packages=find_packages("."), install_requires=INSTALL_REQUIRES, extras_require=EXTRAS_REQUIRE, package_data={"": ["config.yaml"]}, )