content: 
  [dependency-groups]
  dev = [
   'ruff',
   'pytest',
   'pytest-cov',
   'pytest-profiling',
   'pytest-timeout',
   'pre-commit',
   'snakeviz',
   'py-spy',
   'flameprof',
   'mypy',
   'mypy-extensions',
   "pytest-xdist>=3.7.0",
   "types-pyyaml>=6.0.12.20250516",
   "pytest-mock>=3.14.1",
  ]
  
  
  [tool.setuptools]
  license-files = ['LICEN[CS]E*', 'COPYING*', 'NOTICE*', 'AUTHORS*']
  
  [tool.ruff]
  line-length = 88
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".git-rewrite",
      ".hg",
      ".ipynb_checkpoints",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".pyenv",
      ".pytest_cache",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      ".vscode",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "site-packages",
      "venv",
      "notebooks",
  ]
  
  [tool.ruff.lint]
  select = [
      "E",
      "W",
      "F",
      "I",
      "NPY",
  ]
  preview = true
  fixable = ["A", "B", "C", "D", "E", "F", "W", "I"]
  exclude = ["**/gql/**", "scripts/**"]
  ignore = ["E501"]
  
  [tool.ruff.lint.per-file-ignores]
  "**/test_*.py" = [
      "D", # Don't care about docstrings in tests
      "S101", # Allow asserts in tests
      "E501",  # Allow long lines in tests
  ]
  
  
  [tool.pytest.ini_options]
  log_cli_level = "DEBUG"
  filterwarnings = [
      'ignore:distutils Version classes are deprecated:DeprecationWarning',
      'ignore:`np.bool8` is a deprecated alias for `np.bool_`:DeprecationWarning',
      'ignore:Training and eval env are not of the same type:UserWarning',
  ]
  markers = [
      "slow: marks tests as slow (deselect with '-m \"not slow\"')",
  ]
  
  [tool.coverage.run]
  source = ['newclid/src', 'ncdgen/src', 'yuclid/python']
  omit = ['newclid/src/newclid/animation/*']
  
  [tool.coverage.report]
  exclude_also = [
      # Don't complain about missing debug-only code:
      "def __repr__",
      "if self\\.debug",
  
      # Don't complain if tests don't hit defensive assertion code:
      "raise AssertionError",
      "raise NotImplementedError",
  
      # Don't complain if non-runnable code isn't run:
      "if 0:",
      "if __name__ == .__main__.:",
  
      # Don't complain about abstract methods, they aren't run:
      "@(abc\\.)?abstractmethod",
  
      # Don't complain about typing imports, they aren't run:
      "if TYPE_CHECKING:",
  
      # Don't complain about optional imports, they don't matter for now:
      "except ImportError:"
  ]
  
  [tool.uv.workspace]
  members = [
      "newclid",
      "ncdgen",
      "yuclid",
  ]
  