|
|
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
|
|
|
|
|
|
import re
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
from setuptools import find_packages, setup
|
|
|
|
|
|
|
|
# Settings
|
|
|
|
FILE = Path(__file__).resolve()
|
|
|
|
PARENT = FILE.parent # root directory
|
|
|
|
README = (PARENT / 'README.md').read_text(encoding='utf-8')
|
|
|
|
|
|
|
|
|
|
|
|
def get_version():
|
|
|
|
file = PARENT / 'ultralytics/__init__.py'
|
|
|
|
return re.search(r'^__version__ = [\'"]([^\'"]*)[\'"]', file.read_text(encoding='utf-8'), re.M)[1]
|
|
|
|
|
|
|
|
|
|
|
|
def parse_requirements(file_path: Path):
|
|
|
|
"""
|
|
|
|
Parse a requirements.txt file, ignoring lines that start with '#' and any text after '#'.
|
|
|
|
|
|
|
|
Args:
|
|
|
|
file_path (str | Path): Path to the requirements.txt file.
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
List[str]: List of parsed requirements.
|
|
|
|
"""
|
|
|
|
|
|
|
|
requirements = []
|
|
|
|
for line in Path(file_path).read_text().splitlines():
|
|
|
|
line = line.strip()
|
|
|
|
if line and not line.startswith('#'):
|
|
|
|
requirements.append(line.split('#')[0].strip()) # ignore inline comments
|
|
|
|
|
|
|
|
return requirements
|
|
|
|
|
|
|
|
|
|
|
|
setup(
|
|
|
|
name='ultralytics', # name of pypi package
|
|
|
|
version=get_version(), # version of pypi package
|
|
|
|
python_requires='>=3.8',
|
|
|
|
license='AGPL-3.0',
|
|
|
|
description=('Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, '
|
|
|
|
'pose estimation and image classification.'),
|
|
|
|
long_description=README,
|
|
|
|
long_description_content_type='text/markdown',
|
|
|
|
url='https://github.com/ultralytics/ultralytics',
|
|
|
|
project_urls={
|
|
|
|
'Bug Reports': 'https://github.com/ultralytics/ultralytics/issues',
|
|
|
|
'Funding': 'https://ultralytics.com',
|
|
|
|
'Source': 'https://github.com/ultralytics/ultralytics'},
|
|
|
|
author='Ultralytics',
|
|
|
|
author_email='hello@ultralytics.com',
|
|
|
|
packages=find_packages(), # required
|
|
|
|
package_data={
|
|
|
|
'': ['*.yaml'],
|
|
|
|
'ultralytics.assets': ['*.jpg']},
|
|
|
|
include_package_data=True,
|
|
|
|
install_requires=parse_requirements(PARENT / 'requirements.txt'),
|
|
|
|
extras_require={
|
|
|
|
'dev': [
|
|
|
|
'ipython',
|
|
|
|
'check-manifest',
|
|
|
|
'pytest',
|
|
|
|
'pytest-cov',
|
|
|
|
'coverage',
|
|
|
|
'mkdocs-material',
|
|
|
|
'mkdocstrings[python]',
|
|
|
|
'mkdocs-redirects', # for 301 redirects
|
|
|
|
'mkdocs-ultralytics-plugin>=0.0.27', # for meta descriptions and images, dates and authors
|
|
|
|
],
|
|
|
|
'export': [
|
|
|
|
'coremltools>=7.0.b1',
|
|
|
|
'openvino-dev>=2023.0',
|
|
|
|
'tensorflowjs', # automatically installs tensorflow
|
|
|
|
], },
|
|
|
|
classifiers=[
|
|
|
|
'Development Status :: 4 - Beta',
|
|
|
|
'Intended Audience :: Developers',
|
|
|
|
'Intended Audience :: Education',
|
|
|
|
'Intended Audience :: Science/Research',
|
|
|
|
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
|
|
|
|
'Programming Language :: Python :: 3',
|
|
|
|
'Programming Language :: Python :: 3.8',
|
|
|
|
'Programming Language :: Python :: 3.9',
|
|
|
|
'Programming Language :: Python :: 3.10',
|
|
|
|
'Programming Language :: Python :: 3.11',
|
|
|
|
'Topic :: Software Development',
|
|
|
|
'Topic :: Scientific/Engineering',
|
|
|
|
'Topic :: Scientific/Engineering :: Artificial Intelligence',
|
|
|
|
'Topic :: Scientific/Engineering :: Image Recognition',
|
|
|
|
'Operating System :: POSIX :: Linux',
|
|
|
|
'Operating System :: MacOS',
|
|
|
|
'Operating System :: Microsoft :: Windows', ],
|
|
|
|
keywords='machine-learning, deep-learning, vision, ML, DL, AI, YOLO, YOLOv3, YOLOv5, YOLOv8, HUB, Ultralytics',
|
|
|
|
entry_points={'console_scripts': ['yolo = ultralytics.cfg:entrypoint', 'ultralytics = ultralytics.cfg:entrypoint']})
|