content: [project]
  name = "onshape-robotics-toolkit"
  version = "0.2.1"
  description = "A python library to facilitate interaction with Onshape's REST API"
  authors = [
      {name = "Senthur Ayyappan", email = "senthurayyappan@gmail.com"}
  ]
  readme = "README.md"
  requires-python = ">=3.10,<3.13"
  dependencies = [
      "python-dotenv>=1.0.1",
      "pydantic>=2.9.2",
      "numpy>=1.26.0",
      "scipy>=1.14.1",
      "numpy-stl>=3.1.2",
      "networkx>=3.4.2",
      "matplotlib>=3.9.2",
      "requests>=2.32.3",
      "lxml>=5.3.0",
      "typing_extensions>=4.12.0",
      "regex>=2024.9.11",
      "pillow>=10.0.0",
  ]
  
  [project.optional-dependencies]
  docs = [
      "mkdocs>=1.4.2",
      "mkdocs-material>=9.2.7",
      "mkdocstrings[python]>=0.26.1",
      "pymdown-extensions>=10.12",
  ]
  
  [project.urls]
  Repository = "https://github.com/neurobionics/onshape-robotics-toolkit"
  Documentation = "https://neurobionics.github.io/onshape-robotics-toolkit/"
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [tool.uv]
  dev-dependencies = [
      "pytest>=7.2.0",
      "pytest-cov>=4.0.0",
      "deptry>=0.16.2",
      "mypy>=1.5.1",
      "pre-commit>=3.4.0",
      "tox>=4.11.1",
      "types-lxml>=2024.12.13",
      "types-requests>=2.32.4.20250913",
      "types-networkx>=3.5.0.20250918",
      "scipy-stubs>=1.15.3.0",
      "pandas-stubs>=2.3.2.250926",
      "types-regex>=2025.9.18.20250921",
  ]
  
  [tool.mypy]
  files = ["onshape_robotics_toolkit"]
  disallow_untyped_defs = true
  disallow_any_unimported = true
  no_implicit_optional = true
  check_untyped_defs = true
  warn_return_any = true
  warn_unused_ignores = true
  show_error_codes = true
  
  [tool.pytest.ini_options]
  testpaths = ["tests"]
  filterwarnings = [
      # Ignore gimbal lock warnings - these are expected in certain configurations
      "ignore:Gimbal lock detected:UserWarning:onshape_robotics_toolkit.robot",
  ]
  
  [tool.ruff]
  target-version = "py39"
  line-length = 120
  fix = true
  select = [
      # flake8-2020
      "YTT",
      # flake8-bandit
      "S",
      # flake8-bugbear
      "B",
      # flake8-builtins
      "A",
      # flake8-comprehensions
      "C4",
      # flake8-debugger
      "T10",
      # flake8-simplify
      "SIM",
      # isort
      "I",
      # mccabe
      "C90",
      # pycodestyle
      "E", "W",
      # pyflakes
      "F",
      # pygrep-hooks
      "PGH",
      # pyupgrade
      "UP",
      # ruff
      "RUF",
      # tryceratops
      "TRY",
  ]
  ignore = [
      # DoNotAssignLambda
      "E731",
      "TRY003",
      "SIM115",
      "C901",
      "TRY300",
  ]
  
  [tool.ruff.format]
  preview = true
  
  [tool.coverage.report]
  skip_empty = true
  
  [tool.coverage.run]
  branch = true
  source = ["onshape_robotics_toolkit"]
  
  [tool.ruff.per-file-ignores]
  "tests/*" = ["S101"]
  
  [tool.deptry]
  # Skip example directories as they are not part of the main package
  extend_exclude = ["examples"]
  # Set dev dependency groups to ignore test/dev dependencies in obsolete check
  pep621_dev_dependency_groups = ["docs"]
  