python/setup.py (67 lines of code) (raw):

#!/usr/bin/env python3 """ VMAF - Video Multimethod Assessment Fusion VMAF is a perceptual video quality assessment algorithm developed by Netflix. VMAF Development Kit (VDK) is a software package that contains the VMAF algorithm implementation, as well as a set of tools that allows a user to train and test a custom VMAF model. """ import os from setuptools import setup PYTHON_PROJECT = os.path.dirname(os.path.abspath(__file__)) def get_version(): """Version from vmaf __init__""" try: with open(os.path.join(PYTHON_PROJECT, "vmaf", "__init__.py")) as fh: for line in fh: if line.startswith("__version__"): return line.strip().rpartition(" ")[2].replace('"', "") except Exception: pass return "0.0-dev" class LazyExtensions(list): _extensions = None @property def extensions(self): if self._extensions is None: from Cython.Build import cythonize import numpy self._extensions = cythonize([ 'vmaf/core/adm_dwt2_cy.pyx' ], compiler_directives={'language_level' : "3"}) self._extensions[0].include_dirs = [numpy.get_include(), '../libvmaf/src'] return self._extensions def __iter__(self): return iter(self.extensions) def __contains__(self, value): return value in self.extensions def __len__(self): return len(self.extensions) setup( name="vmaf", version=get_version(), author="Zhi Li", author_email="zli@netflix.com", description="Video Multimethod Assessment Fusion", long_description=open(os.path.join(PYTHON_PROJECT, "README.rst")).read(), long_description_content_type="text/x-rst", url="https://github.com/Netflix/vmaf", packages=["vmaf", "vmaf.tools", "vmaf.core", "vmaf.script"], include_package_data=True, install_requires=[ "numpy>=1.18.2", "scipy>=1.4.1", "matplotlib>=3.2.1", "pandas>=1.0.3", "scikit-learn>=0.22.2", "scikit-image>=0.16.2", "h5py>=2.6.0", "sureal>=0.4.2", "dill>=0.3.1", ], entry_points = { 'console_scripts': [ 'run_cleaning_cache=vmaf.script.run_cleaning_cache:main', 'run_psnr=vmaf.script.run_psnr:main', 'run_result_assembly=vmaf.script.run_result_assembly:main', 'run_testing=vmaf.script.run_testing:main', 'run_toddnoiseclassifier=vmaf.script.run_toddnoiseclassifier:main', 'run_vmaf=vmaf.script.run_vmaf:main', 'run_vmaf_cross_validation=vmaf.script.run_vmaf_cross_validation:main', 'run_vmaf_in_batch=vmaf.script.run_vmaf_in_batch:main', 'run_vmaf_training=vmaf.script.run_vmaf_training:main', ], }, ext_modules=LazyExtensions(), )