|
|
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
|
|
|
|
|
|
# Overview:
|
|
|
|
# This pyproject.toml file manages the build, packaging, and distribution of the Ultralytics library.
|
|
|
|
# It defines essential project metadata, dependencies, and settings used to develop and deploy the library.
|
|
|
|
|
|
|
|
# Key Sections:
|
|
|
|
# - [build-system]: Specifies the build requirements and backend (e.g., setuptools, wheel).
|
|
|
|
# - [project]: Includes details like name, version, description, authors, dependencies and more.
|
|
|
|
# - [project.optional-dependencies]: Provides additional, optional packages for extended features.
|
|
|
|
# - [tool.*]: Configures settings for various tools (pytest, yapf, etc.) used in the project.
|
|
|
|
|
|
|
|
# Installation:
|
|
|
|
# The Ultralytics library can be installed using the command: 'pip install ultralytics'
|
|
|
|
# For development purposes, you can install the package in editable mode with: 'pip install -e .'
|
|
|
|
# This approach allows for real-time code modifications without the need for re-installation.
|
|
|
|
|
|
|
|
# Documentation:
|
|
|
|
# For comprehensive documentation and usage instructions, visit: https://docs.ultralytics.com
|
|
|
|
|
|
|
|
[build-system]
|
|
|
|
requires = ["setuptools>=43.0.0", "wheel"]
|
|
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
|
|
|
|
# Project settings -----------------------------------------------------------------------------------------------------
|
|
|
|
[project]
|
|
|
|
name = "ultralytics"
|
|
|
|
dynamic = ["version"]
|
|
|
|
description = "Ultralytics YOLOv8 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification."
|
|
|
|
readme = "README.md"
|
|
|
|
requires-python = ">=3.8"
|
|
|
|
license = { "text" = "AGPL-3.0" }
|
|
|
|
keywords = ["machine-learning", "deep-learning", "computer-vision", "ML", "DL", "AI", "YOLO", "YOLOv3", "YOLOv5", "YOLOv8", "HUB", "Ultralytics"]
|
|
|
|
authors = [
|
|
|
|
{ name = "Glenn Jocher" },
|
|
|
|
{ name = "Ayush Chaurasia" },
|
|
|
|
{ name = "Jing Qiu" }
|
|
|
|
]
|
|
|
|
maintainers = [
|
|
|
|
{ name = "Glenn Jocher" },
|
|
|
|
{ name = "Ayush Chaurasia" },
|
|
|
|
{ name = "Jing Qiu" }
|
|
|
|
]
|
|
|
|
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",
|
|
|
|
"Programming Language :: Python :: 3.12",
|
|
|
|
"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",
|
|
|
|
]
|
|
|
|
|
|
|
|
# Required dependencies ------------------------------------------------------------------------------------------------
|
|
|
|
dependencies = [
|
|
|
|
"matplotlib>=3.3.0",
|
|
|
|
"opencv-python>=4.6.0",
|
|
|
|
"pillow>=7.1.2",
|
|
|
|
"pyyaml>=5.3.1",
|
|
|
|
"requests>=2.23.0",
|
|
|
|
"scipy>=1.4.1",
|
|
|
|
"torch>=1.8.0",
|
|
|
|
"torchvision>=0.9.0",
|
|
|
|
"tqdm>=4.64.0", # progress bars
|
|
|
|
"psutil", # system utilization
|
|
|
|
"py-cpuinfo", # display CPU info
|
|
|
|
"thop>=0.1.1", # FLOPs computation
|
|
|
|
"pandas>=1.1.4",
|
|
|
|
"seaborn>=0.11.0", # plotting
|
|
|
|
]
|
|
|
|
|
|
|
|
# Optional dependencies ------------------------------------------------------------------------------------------------
|
|
|
|
[project.optional-dependencies]
|
|
|
|
dev = [
|
|
|
|
"ipython",
|
|
|
|
"check-manifest",
|
|
|
|
"pre-commit",
|
|
|
|
"pytest",
|
|
|
|
"pytest-cov",
|
|
|
|
"coverage[toml]",
|
|
|
|
"mkdocs-material>=9.5.9",
|
|
|
|
"mkdocstrings[python]",
|
|
|
|
"mkdocs-jupyter", # for notebooks
|
|
|
|
"mkdocs-redirects", # for 301 redirects
|
|
|
|
"mkdocs-ultralytics-plugin>=0.0.44", # for meta descriptions and images, dates and authors
|
|
|
|
]
|
|
|
|
export = [
|
|
|
|
"onnx>=1.12.0", # ONNX export
|
|
|
|
"coremltools>=7.0; platform_system != 'Windows' and python_version <= '3.11'", # CoreML supported on macOS and Linux
|
|
|
|
"openvino>=2024.0.0", # OpenVINO export
|
|
|
|
"tensorflow<=2.13.1; python_version <= '3.11'", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
|
|
|
|
"tensorflowjs>=3.9.0; python_version <= '3.11'", # TF.js export, automatically installs tensorflow
|
|
|
|
]
|
|
|
|
explorer = [
|
|
|
|
"lancedb", # vector search
|
|
|
|
"duckdb<=0.9.2", # SQL queries, duckdb==0.10.0 bug https://github.com/ultralytics/ultralytics/pull/8181
|
|
|
|
"streamlit", # visualizing with GUI
|
|
|
|
]
|
|
|
|
# tensorflow>=2.4.1,<=2.13.1 # TF exports (-cpu, -aarch64, -macos)
|
|
|
|
# tflite-support # for TFLite model metadata
|
|
|
|
# nvidia-pyindex # TensorRT export
|
|
|
|
# nvidia-tensorrt # TensorRT export
|
|
|
|
logging = [
|
|
|
|
"comet", # https://docs.ultralytics.com/integrations/comet/
|
|
|
|
"tensorboard>=2.13.0",
|
|
|
|
"dvclive>=2.12.0",
|
|
|
|
]
|
|
|
|
extra = [
|
|
|
|
"hub-sdk>=0.0.2", # Ultralytics HUB
|
|
|
|
"ipython", # interactive notebook
|
|
|
|
"albumentations>=1.0.3", # training augmentations
|
|
|
|
"pycocotools>=2.0.7", # COCO mAP
|
|
|
|
]
|
|
|
|
|
|
|
|
[project.urls]
|
|
|
|
"Bug Reports" = "https://github.com/ultralytics/ultralytics/issues"
|
|
|
|
"Funding" = "https://ultralytics.com"
|
|
|
|
"Source" = "https://github.com/ultralytics/ultralytics/"
|
|
|
|
|
|
|
|
[project.scripts]
|
|
|
|
yolo = "ultralytics.cfg:entrypoint"
|
|
|
|
ultralytics = "ultralytics.cfg:entrypoint"
|
|
|
|
|
|
|
|
# Tools settings -------------------------------------------------------------------------------------------------------
|
|
|
|
[tool.setuptools] # configuration specific to the `setuptools` build backend.
|
|
|
|
packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
|
|
|
|
package-data = { "ultralytics" = ["**/*.yaml"], "ultralytics.assets" = ["*.jpg"] }
|
|
|
|
|
|
|
|
[tool.setuptools.dynamic]
|
|
|
|
version = { attr = "ultralytics.__version__" }
|
|
|
|
|
|
|
|
[tool.pytest.ini_options]
|
|
|
|
addopts = "--doctest-modules --durations=30 --color=yes"
|
|
|
|
markers = [
|
|
|
|
"slow: skip slow tests unless --slow is set",
|
|
|
|
]
|
|
|
|
norecursedirs = [".git", "dist", "build"]
|
|
|
|
|
|
|
|
|
|
|
|
[tool.coverage.run]
|
|
|
|
source = ["ultralytics/"]
|
|
|
|
data_file = "tests/.coverage"
|
|
|
|
omit = ["ultralytics/utils/callbacks/*"]
|
|
|
|
|
|
|
|
[tool.isort]
|
|
|
|
line_length = 120
|
|
|
|
multi_line_output = 0
|
|
|
|
|
|
|
|
[tool.yapf]
|
|
|
|
based_on_style = "pep8"
|
|
|
|
spaces_before_comment = 2
|
|
|
|
column_limit = 120
|
|
|
|
coalesce_brackets = true
|
|
|
|
spaces_around_power_operator = true
|
|
|
|
space_between_ending_comma_and_closing_bracket = true
|
|
|
|
split_before_closing_bracket = false
|
|
|
|
split_before_first_argument = false
|
|
|
|
|
|
|
|
[tool.ruff]
|
|
|
|
line-length = 120
|
|
|
|
|
|
|
|
[tool.docformatter]
|
|
|
|
wrap-summaries = 120
|
|
|
|
wrap-descriptions = 120
|
|
|
|
in-place = true
|
|
|
|
pre-summary-newline = true
|
|
|
|
close-quotes-on-newline = true
|
|
|
|
|
|
|
|
[tool.codespell]
|
|
|
|
ignore-words-list = "crate,nd,ned,strack,dota,ane,segway,fo,gool,winn,commend,bloc,nam,afterall"
|
|
|
|
skip = '*.pt,*.pth,*.torchscript,*.onnx,*.tflite,*.pb,*.bin,*.param,*.mlmodel,*.engine,*.npy,*.data*,*.csv,*pnnx*,*venv*,*translat*,__pycache__*,*.ico,*.jpg,*.png,*.mp4,*.mov,/runs,/.git,./docs/??/*.md,./docs/mkdocs_??.yml'
|