content: [project]
  name = "om1"
  version = "0.1.0"
  description = "OM1 - a modern agent and robotics runtime system"
  readme = "README.md"
  requires-python = ">=3.10"
  dependencies = [
      "ultralytics",
      "soundfile",
      "osascript",
      "sounddevice",
      "pynmeagps",
      "bleak",
      "bezier",
      "scipy",
      "matplotlib",
      "json5",
      "jsonschema",
      "pycdr2",
      "eclipse-zenoh>=1.4.0",
      "audiosegment",
      "pyaudio",
      "openai>=1.59.5",
      "pillow>=11.1.0",
      "python-dotenv>=1.0.1",
      "typer>=0.15.1",
      "opencv-python",
      "deepface>=0.0.81",
      "tensorflow>=2.15.0",
      "tf_keras>=2.15.0",
      "web3",
      "numpy",
      "cdp-sdk==0.21.0",
      "hid",
      "cv_bridge",
      "torch",
      "torchvision",
      "pyserial",
      "py-mjpeg",
      "fastapi>=0.110.0",
      "uvicorn>=0.27.1",
      "websockets>=12.0",
      "om1-modules @ git+https://github.com/OpenMind/om1-modules.git@16a1fd187bb030e5cdc045c97ff1603cbcc2dca5",
      "aiohttp>=3.9.3",
      "python-multipart>=0.0.9",
      "jinja2>=3.1.3",
      "pydub>=0.25.1",
      "pynput>=1.8.1",
      "dimo-python-sdk @ git+https://github.com/openminddev/dimo-python-sdk.git@6b47fcd28654a4145cedee649a0999a8eb08a2f6",
      "nest-asyncio>=1.6.0",
  ]
  
  [project.optional-dependencies]
  dds = [
      "cyclonedds==0.10.2"
  ]
  
  [dependency-groups]
  dev = [
      "black>=24.10.0",
      "isort>=5.13.2",
      "pre-commit>=4.1.0",
      "pyright>=1.1.406",
      "pytest>=8.3.4",
      "pytest-asyncio>=0.25.2",
      "ruff>=0.9.3",
  ]
  
  [tool.pytest.ini_options]
  pythonpath = ["src"]
  asyncio_mode = "auto"
  addopts = "-m \"not integration\""
  norecursedirs = ["src/unitree", "system_hw_test", "gazebo", "src/ubtech"]
  markers = [
      "integration: marks tests as integration tests",
  ]
  
  [tool.black]
  line-length = 88
  include = '\.pyi?$'
  exclude = "(.venv)|(/src/unitree)|(/src/ubtech)|(/gazebo)"
  
  [tool.isort]
  profile = "black"
  multi_line_output = 3
  line_length = 88
  sources = ["src", "tests"]
  skip_glob = [".venv*", "/src/unitree", "/gazebo", "/src/ubtech"]
  
  [tool.ruff]
  line-length = 88
  indent-width = 4
  src = ["src"]
  exclude = ["src/unitree","gazebo", "src/ubtech"]
  
  [tool.ruff.lint]
  select = ["E", "F", "I"]
  ignore = ["E203", "E501"]
  fixable = ["ALL"]
  unfixable = []
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  