Spaces:
Running
Running
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/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>=70.0.0", "wheel"] | |
build-backend = "setuptools.build_meta" | |
# Project settings ----------------------------------------------------------------------------------------------------- | |
[project] | |
name = "ultralytics" | |
dynamic = ["version"] | |
description = "Ultralytics YOLO 🚀 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", "YOLOv9", "YOLOv10", "YOLO11", "HUB", "Ultralytics"] | |
authors = [ | |
{ name = "Glenn Jocher", email = "[email protected]" }, | |
{ name = "Jing Qiu", email = "[email protected]" }, | |
] | |
maintainers = [ | |
{ name = "Ultralytics", email = "[email protected]" }, | |
] | |
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 = [ | |
"numpy>=1.23.0", | |
"numpy<2.0.0; sys_platform == 'darwin'", # macOS OpenVINO errors https://github.com/ultralytics/ultralytics/pull/17221 | |
"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", | |
"torch>=1.8.0,!=2.4.0; sys_platform == 'win32'", # Windows CPU errors w/ 2.4.0 https://github.com/ultralytics/ultralytics/issues/15049 | |
"torchvision>=0.9.0", | |
"tqdm>=4.64.0", # progress bars | |
"psutil", # system utilization | |
"py-cpuinfo", # display CPU info | |
"pandas>=1.1.4", | |
"seaborn>=0.11.0", # plotting | |
"ultralytics-thop>=2.0.0", # FLOPs computation https://github.com/ultralytics/thop | |
] | |
# Optional dependencies ------------------------------------------------------------------------------------------------ | |
[project.optional-dependencies] | |
dev = [ | |
"ipython", | |
"pytest", | |
"pytest-cov", | |
"coverage[toml]", | |
"mkdocs>=1.6.0", | |
"mkdocs-material>=9.5.9", | |
"mkdocstrings[python]", | |
"mkdocs-redirects", # 301 redirects | |
"mkdocs-ultralytics-plugin>=0.1.8", # for meta descriptions and images, dates and authors | |
"mkdocs-macros-plugin>=1.0.5" # duplicating content (i.e. export tables) in multiple places | |
] | |
export = [ | |
"onnx>=1.12.0", # ONNX export | |
"coremltools>=7.0; platform_system != 'Windows' and python_version <= '3.11'", # CoreML supported on macOS and Linux | |
"scikit-learn>=1.3.2; platform_system != 'Windows' and python_version <= '3.11'", # CoreML k-means quantization | |
"openvino>=2024.0.0", # OpenVINO export | |
"tensorflow>=2.0.0", # TF bug https://github.com/ultralytics/ultralytics/issues/5161 | |
"tensorflowjs>=3.9.0", # TF.js export, automatically installs tensorflow | |
"tensorstore>=0.1.63; platform_machine == 'aarch64' and python_version >= '3.9'", # for TF Raspberry Pi exports | |
"keras", # not installed automatically by tensorflow>=2.16 | |
"flatbuffers>=23.5.26,<100; platform_machine == 'aarch64'", # update old 'flatbuffers' included inside tensorflow package | |
"numpy==1.23.5; platform_machine == 'aarch64'", # fix error: `np.bool` was a deprecated alias for the builtin `bool` when using TensorRT models on NVIDIA Jetson | |
"h5py!=3.11.0; platform_machine == 'aarch64'", # fix h5py build issues due to missing aarch64 wheels in 3.11 release | |
] | |
solutions = [ | |
"shapely>=2.0.0", # shapely for point and polygon data matching | |
"streamlit", # for live inference on web browser i.e `yolo streamlit-predict` | |
] | |
logging = [ | |
"comet", # https://docs.ultralytics.com/integrations/comet/ | |
"tensorboard>=2.13.0", | |
"dvclive>=2.12.0", | |
] | |
extra = [ | |
"hub-sdk>=0.0.12", # Ultralytics HUB | |
"ipython", # interactive notebook | |
"albumentations>=1.4.6", # training augmentations | |
"pycocotools>=2.0.7", # COCO mAP | |
] | |
[project.urls] | |
"Homepage" = "https://ultralytics.com" | |
"Source" = "https://github.com/ultralytics/ultralytics" | |
"Documentation" = "https://docs.ultralytics.com" | |
"Bug Reports" = "https://github.com/ultralytics/ultralytics/issues" | |
"Changelog" = "https://github.com/ultralytics/ultralytics/releases" | |
[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", "../tests/*.py"], "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.ruff.format] | |
docstring-code-format = true | |
[tool.docformatter] | |
wrap-summaries = 120 | |
wrap-descriptions = 120 | |
pre-summary-newline = true | |
close-quotes-on-newline = true | |
in-place = 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' | |