content: [build-system]
  requires = ["poetry-core>=2.0.0,<3.0.0"]
  build-backend = "poetry.core.masonry.api"
  
  [project]
  name = "mujoco-toolbox"
  version = "0.6.3"
  requires-python = ">=3.9,<4.0"
  description = "A Modern Simulation Wrapper for Google DeepMind's MuJoCo"
  readme = "README.md"
  license = { file = "LICENSE" }
  packages = [{ include = "mujoco_toolbox" }]
  authors = [
    { name = "MGross21", email = "MGross21@example.com" }
  ]
  keywords = ["MuJoCo", "mujoco", "robotics", "simulation", "toolbox", "wrapper"]
  classifiers = [
      "Development Status :: 4 - Beta",
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Operating System :: OS Independent"
  ]
  dynamic = ["classifiers","dependencies"]
  
  [tool.poetry.dependencies]
  python = "^3.11"
  mujoco = "*"
  numpy = "*"
  scipy = "*"
  matplotlib = "*"
  pyyaml = "*"
  ffmpeg = "*"
  imageio = { version = "*", extras = ["ffmpeg"] }
  trimesh = "*"
  tqdm = "*"
  ipywidgets = "*"
  jinja2 = "*"
  screeninfo = "*"
  colorama = "*"
  rich = "*"
  defusedxml = "^0.7.1"
  gym = { version = "*", optional = true }
  
  [project.optional-dependencies]
  # beautified = ["colorama", "rich"]
  gym = ["gym"]
  
  [project.urls]
  homepage = "https://github.com/MGross21/mujoco-toolbox"
  repository = "https://github.com/MGross21/mujoco-toolbox"
  documentation = "https://mgross21.github.io/mujoco-toolbox/"
  changelog = "https://github.com/MGross21/mujoco-toolbox/blob/main/CHANGELOG.md"
  "Bug Tracker" = "https://github.com/MGross21/mujoco-toolbox/issues"
  
  [tool.poetry.group.dev.dependencies]
  pytest = "^8.3.5"
  ruff = "^0.11.2"
  mypy = "*"
  pytypes = "^1.0b10"
  black = "^25.1.0"
  isort = "^6.0.1"
  flake8 = "^7.1.2"
  bandit = "^1.8.3"
  pylint = "^3.3.4"
  python-semantic-release = "^9.21.0"
  python-dotenv = "^1.1.0"
  pytest-cov = "^3.0.0"
  sphinx = "^8.2.3"
  sphinx-rtd-theme = "^3.0.2"
  
  [tool.semantic_release.branches.main]
  match = "main"
  prerelease = false
  
  [tool.semantic_release.branches.dev]
  match = "dev"
  prerelease = true
  
  [tool.semantic_release]
  version_variables = [
      "pyproject.toml:version",
      "mujoco_toolbox/__init__.py:__version__",
      "CITATION.cff:version",
  
  ]
  changelog_file = "CHANGELOG.md"
  build_command = "poetry build"
  dist_path = "dist/"
  upload_to_pypi = true
  upload_to_release = true
  commit_version_number = true
  tag_format = "v{version}"
  commit_message = "chore(release): {version} [skip ci]"
  
  [tool.semantic_release.commit_analyzer]
  preset = "angular"
  release_rules = [
      { type = "feat", release = "minor" },
      { type = "fix", release = "patch" },
      { type = "perf", release = "patch" },
      { type = "refactor", release = "patch" },
      { type = "docs", release = false },
      { type = "style", release = false },
      { type = "chore", release = false },
      { type = "build", release = false },
      { type = "ci", release = false },
      { type = "test", release = false }
  ]
  parser_opts = {allowed_tags = [
          "build",
          "chore",
          "ci",
          "docs",
          "feat",
          "fix",
          "perf",
          "style",
          "refactor",
          "test"]}
  
  [tool.semantic_release.release_notes_generator]
  preset = "angular"
  preset_config = {types = [
          { type = "feat", section = "Features", hidden = false },
          { type = "fix", section = "Bug Fixes", hidden = false },
          { type = "perf", section = "Performance Improvements", hidden = false },
          { type = "refactor", section = "Refactors", hidden = false }
      ]}
  
  [tool.black]
  line-length = 79 # PEP8 line length
  
  [tool.ruff]
  line-length = 79 # PEP8 line length
  
  [tool.ruff.lint]
  # select = ["E", "F", "W", "C90"]  # Select error, warning, and flake8 rules
  select = ["ALL"]    # Enable all rules
  ignore = ["T20","INP001"]    # Rules to Ignore
  fixable = ["ALL"]   # Enable auto-fixing for all fixable issues
  extend-select = ["I", "B", "Q", "S"]
  exclude = [
      "*venv/", "*__pycache__", "build/", "dist/",
      ".tox/", ".eggs/", ".git/", ".idea/", ".mypy_cache/"
  ]  # Exclude these directories from linting
  
  [tool.mypy]
  ignore_missing_imports = true
  disallow_untyped_calls = true
  disallow_untyped_defs = true
  strict_optional = true
  
  [tool.isort]
  profile = "black"  # Use black's code style
  known_third_party = [
      "mujoco", "numpy", "scipy", "matplotlib", "pyyaml",
      "mediapy", "ffmpeg", "trimesh", "screeninfo", "colorama"
  ]
  known_first_party = ["mujoco_toolbox"]
  line_length = 79  # PEP8 line length
  
  # Flake8 settings
  [tool.flake8]
  max-line-length = 79  # PEP8 line length
  extend-ignore = ["E203", "W503"]  # For compatibility with black
  
  # Bandit settings
  [tool.bandit]
  # Enable all checks, you can modify this depending on your project needs
  skips = ["B101", "B102"]  # Ignore certain checks like hardcoded passwords
  
  # Pylint settings
  [tool.pylint]
  max-line-length = 79  # PEP8 line length
  disable = ["C0114", "C0115", "C0116"]  # Disable docstring warnings