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(),
)