# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the license found in the # LICENSE file in the root directory of this source tree. import re from pathlib import Path from typing import List, Tuple from setuptools import find_packages, setup NAME = "dinov2" DESCRIPTION = "PyTorch code and models for the DINOv2 self-supervised learning method." URL = "https://github.com/facebookresearch/dinov2" AUTHOR = "FAIR" REQUIRES_PYTHON = ">=3.9.0" HERE = Path(__file__).parent try: with open(HERE / "README.md", encoding="utf-8") as f: long_description = "\n" + f.read() except FileNotFoundError: long_description = DESCRIPTION def get_requirements( path: str = HERE / "requirements.txt", ) -> Tuple[List[str], List[str]]: requirements = [] extra_indices = [] with open(path) as f: for line in f.readlines(): line = line.rstrip("\r\n") if line.startswith("--extra-index-url "): extra_indices.append(line[18:]) continue requirements.append(line) return requirements, extra_indices def get_package_version() -> str: with open(HERE / "dinov2/__init__.py") as f: result = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", f.read(), re.M) if result: return result.group(1) raise RuntimeError("Can't get package version") requirements, extra_indices = get_requirements() version = get_package_version() dev_requirements, _ = get_requirements(HERE / "requirements-dev.txt") setup( name=NAME, version=version, description=DESCRIPTION, long_description=long_description, long_description_content_type="text/markdown", author=AUTHOR, python_requires=REQUIRES_PYTHON, url=URL, packages=find_packages(), package_data={ "": ["*.yaml"], }, install_requires=requirements, dependency_links=extra_indices, extras_require={ "dev": dev_requirements, }, install_package_data=True, license="CC-BY-NC", license_files=("LICENSE",), classifiers=[ # Trove classifiers: https://github.com/pypa/trove-classifiers/blob/main/src/trove_classifiers/__init__.py "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: Other/Proprietary License", "Programming Language :: Python :: 3.9", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Python Modules", ], )