pyproject.toml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
  2. # Overview:
  3. # This pyproject.toml file manages the build, packaging, and distribution of the Ultralytics library.
  4. # It defines essential project metadata, dependencies, and settings used to develop and deploy the library.
  5. # Key Sections:
  6. # - [build-system]: Specifies the build requirements and backend (e.g., setuptools, wheel).
  7. # - [project]: Includes details like name, version, description, authors, dependencies and more.
  8. # - [project.optional-dependencies]: Provides additional, optional packages for extended features.
  9. # - [tool.*]: Configures settings for various tools (pytest, yapf, etc.) used in the project.
  10. # Installation:
  11. # The Ultralytics library can be installed using the command: 'pip install ultralytics'
  12. # For development purposes, you can install the package in editable mode with: 'pip install -e .'
  13. # This approach allows for real-time code modifications without the need for re-installation.
  14. # Documentation:
  15. # For comprehensive documentation and usage instructions, visit: https://docs.ultralytics.com
  16. [build-system]
  17. requires = ["setuptools>=70.0.0", "wheel"]
  18. build-backend = "setuptools.build_meta"
  19. # Project settings -----------------------------------------------------------------------------------------------------
  20. [project]
  21. name = "ultralytics"
  22. dynamic = ["version"]
  23. description = "Ultralytics YOLO 🚀 for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification."
  24. readme = "README.md"
  25. requires-python = ">=3.8"
  26. license = { "text" = "AGPL-3.0" }
  27. keywords = ["machine-learning", "deep-learning", "computer-vision", "ML", "DL", "AI", "YOLO", "YOLOv3", "YOLOv5", "YOLOv8", "YOLOv9", "YOLOv10", "YOLO11", "HUB", "Ultralytics"]
  28. authors = [
  29. { name = "Glenn Jocher", email = "glenn.jocher@ultralytics.com" },
  30. { name = "Jing Qiu", email = "jing.qiu@ultralytics.com" },
  31. ]
  32. maintainers = [
  33. { name = "Ultralytics", email = "hello@ultralytics.com" },
  34. ]
  35. classifiers = [
  36. "Development Status :: 4 - Beta",
  37. "Intended Audience :: Developers",
  38. "Intended Audience :: Education",
  39. "Intended Audience :: Science/Research",
  40. "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
  41. "Programming Language :: Python :: 3",
  42. "Programming Language :: Python :: 3.8",
  43. "Programming Language :: Python :: 3.9",
  44. "Programming Language :: Python :: 3.10",
  45. "Programming Language :: Python :: 3.11",
  46. "Programming Language :: Python :: 3.12",
  47. "Topic :: Software Development",
  48. "Topic :: Scientific/Engineering",
  49. "Topic :: Scientific/Engineering :: Artificial Intelligence",
  50. "Topic :: Scientific/Engineering :: Image Recognition",
  51. "Operating System :: POSIX :: Linux",
  52. "Operating System :: MacOS",
  53. "Operating System :: Microsoft :: Windows",
  54. ]
  55. # Required dependencies ------------------------------------------------------------------------------------------------
  56. dependencies = [
  57. "numpy>=1.23.0",
  58. "numpy<2.0.0; sys_platform == 'darwin'", # macOS OpenVINO errors https://github.com/ultralytics/ultralytics/pull/17221
  59. "matplotlib>=3.3.0",
  60. "opencv-python>=4.6.0",
  61. "pillow>=7.1.2",
  62. "pyyaml>=5.3.1",
  63. "requests>=2.23.0",
  64. "scipy>=1.4.1",
  65. "torch>=1.8.0",
  66. "torch>=1.8.0,!=2.4.0; sys_platform == 'win32'", # Windows CPU errors w/ 2.4.0 https://github.com/ultralytics/ultralytics/issues/15049
  67. "torchvision>=0.9.0",
  68. "tqdm>=4.64.0", # progress bars
  69. "psutil", # system utilization
  70. "py-cpuinfo", # display CPU info
  71. "pandas>=1.1.4",
  72. "seaborn>=0.11.0", # plotting
  73. "ultralytics-thop>=2.0.0", # FLOPs computation https://github.com/ultralytics/thop
  74. ]
  75. # Optional dependencies ------------------------------------------------------------------------------------------------
  76. [project.optional-dependencies]
  77. dev = [
  78. "ipython",
  79. "pytest",
  80. "pytest-cov",
  81. "coverage[toml]",
  82. "mkdocs>=1.6.0",
  83. "mkdocs-material>=9.5.9",
  84. "mkdocstrings[python]",
  85. "mkdocs-redirects", # 301 redirects
  86. "mkdocs-ultralytics-plugin>=0.1.8", # for meta descriptions and images, dates and authors
  87. "mkdocs-macros-plugin>=1.0.5" # duplicating content (i.e. export tables) in multiple places
  88. ]
  89. export = [
  90. "onnx>=1.12.0", # ONNX export
  91. "coremltools>=7.0; platform_system != 'Windows' and python_version <= '3.11'", # CoreML supported on macOS and Linux
  92. "scikit-learn>=1.3.2; platform_system != 'Windows' and python_version <= '3.11'", # CoreML k-means quantization
  93. "openvino>=2024.0.0", # OpenVINO export
  94. "tensorflow>=2.0.0", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
  95. "tensorflowjs>=3.9.0", # TF.js export, automatically installs tensorflow
  96. "tensorstore>=0.1.63; platform_machine == 'aarch64' and python_version >= '3.9'", # for TF Raspberry Pi exports
  97. "keras", # not installed automatically by tensorflow>=2.16
  98. "flatbuffers>=23.5.26,<100; platform_machine == 'aarch64'", # update old 'flatbuffers' included inside tensorflow package
  99. "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
  100. "h5py!=3.11.0; platform_machine == 'aarch64'", # fix h5py build issues due to missing aarch64 wheels in 3.11 release
  101. ]
  102. solutions = [
  103. "shapely>=2.0.0", # shapely for point and polygon data matching
  104. "streamlit", # for live inference on web browser i.e `yolo streamlit-predict`
  105. ]
  106. logging = [
  107. "comet", # https://docs.ultralytics.com/integrations/comet/
  108. "tensorboard>=2.13.0",
  109. "dvclive>=2.12.0",
  110. ]
  111. extra = [
  112. "hub-sdk>=0.0.12", # Ultralytics HUB
  113. "ipython", # interactive notebook
  114. "albumentations>=1.4.6", # training augmentations
  115. "pycocotools>=2.0.7", # COCO mAP
  116. ]
  117. [project.urls]
  118. "Homepage" = "https://ultralytics.com"
  119. "Source" = "https://github.com/ultralytics/ultralytics"
  120. "Documentation" = "https://docs.ultralytics.com"
  121. "Bug Reports" = "https://github.com/ultralytics/ultralytics/issues"
  122. "Changelog" = "https://github.com/ultralytics/ultralytics/releases"
  123. [project.scripts]
  124. yolo = "ultralytics.cfg:entrypoint"
  125. ultralytics = "ultralytics.cfg:entrypoint"
  126. # Tools settings -------------------------------------------------------------------------------------------------------
  127. [tool.setuptools] # configuration specific to the `setuptools` build backend.
  128. packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
  129. package-data = { "ultralytics" = ["**/*.yaml", "../tests/*.py"], "ultralytics.assets" = ["*.jpg"] }
  130. [tool.setuptools.dynamic]
  131. version = { attr = "ultralytics.__version__" }
  132. [tool.pytest.ini_options]
  133. addopts = "--doctest-modules --durations=30 --color=yes"
  134. markers = [
  135. "slow: skip slow tests unless --slow is set",
  136. ]
  137. norecursedirs = [".git", "dist", "build"]
  138. [tool.coverage.run]
  139. source = ["ultralytics/"]
  140. data_file = "tests/.coverage"
  141. omit = ["ultralytics/utils/callbacks/*"]
  142. [tool.isort]
  143. line_length = 120
  144. multi_line_output = 0
  145. [tool.yapf]
  146. based_on_style = "pep8"
  147. spaces_before_comment = 2
  148. column_limit = 120
  149. coalesce_brackets = true
  150. spaces_around_power_operator = true
  151. space_between_ending_comma_and_closing_bracket = true
  152. split_before_closing_bracket = false
  153. split_before_first_argument = false
  154. [tool.ruff]
  155. line-length = 120
  156. [tool.ruff.format]
  157. docstring-code-format = true
  158. [tool.docformatter]
  159. wrap-summaries = 120
  160. wrap-descriptions = 120
  161. pre-summary-newline = true
  162. close-quotes-on-newline = true
  163. in-place = true
  164. [tool.codespell]
  165. ignore-words-list = "crate,nd,ned,strack,dota,ane,segway,fo,gool,winn,commend,bloc,nam,afterall"
  166. 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'