content: [project]
  name = "moderngl-window"
  version = "3.1.1"
  description = "A cross platform helper library for ModernGL making window creation and resource loading simple"
  readme = "README.md"
  authors = [{ name = "Einar Forselv", email = "eforselv@gmail.com" }]
  requires-python = ">=3.9"
  license = { file = "license.rst" }
  classifiers = [
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
      "Topic :: Games/Entertainment",
      "Topic :: Multimedia :: Graphics",
      "Topic :: Multimedia :: Graphics :: 3D Rendering",
      "Topic :: Scientific/Engineering :: Visualization",
      "Programming Language :: Python :: 3 :: Only",
      "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",
  ]
  dependencies = [
      "moderngl<6",
      "pyglet>=2.0.0",
      "numpy",
      "pyglm>=2.7.0,<3",
      "Pillow>=10.0.1",
  ]
  
  [tool.setuptools.packages.find]
  include = ["moderngl_window", "moderngl_window.*"]
  
  [project.optional-dependencies]
  dev = [
      "pytest",
      "mypy",
      "coverage",
      "pywavefront",
      "trimesh",
      "scipy",
      "build",
      "ruff",
  ]
  docs = [
      "Sphinx~=8.1.3 ",
      "sphinx-rtd-theme~=3.0.1",
      "sphinx-rtd-dark-mode==1.3.0",
      "doc8",
  ]
  imgui = ["imgui-bundle"] # 1.6.0 originally
  pygame = ["pygame>=2.0.1"]
  pygame-ce = ["pygame-ce>=2.0.1"]
  tk = ["pyopengltk>=0.0.3"]
  trimesh = ["trimesh>=3.2.6"]
  pywavefront = ["pywavefront>=1.2.0,<2"]
  PySDL2 = ["PySDL2"]
  glfw = ["glfw"]
  pyqt5 = ["PyQt5"]
  PySide2 = ["PySide2<6"]
  pdf = ["ReportLab>=1.2"]
  av = ["av"]
  draco = ["DracoPy"]
  
  [project.urls]
  Source = "https://github.com/moderngl/moderngl_window"
  Documentation = "https://moderngl-window.readthedocs.io"
  ModernGL = "https://github.com/moderngl/moderngl"
  
  [tool.coverage.run]
  source = ["moderngl_window"]
  
  [build-system]
  requires = ["setuptools", "wheel"]
  build-backend = "setuptools.build_meta"
  
  [tool.ruff]
  exclude = [
      "docs",
      "tests",
      # These are a complete mess to lint
      "moderngl_window/context/tk/keys.py",
      "moderngl_window/context/sdl2/keys.py",
      "moderngl_window/context/pyside2/keys.py",
      "moderngl_window/context/pyqt5/keys.py",
      "moderngl_window/context/pyglet/keys.py",
      "moderngl_window/context/pygame2/keys.py",
      "moderngl_window/context/glfw/keys.py",
      "moderngl_window/context/base/keys.py",
  ]
  line-length = 100
  output-format = "full"
  # lint.ignore = ["E731", "E741"]
  lint.select = [
      "E",
      "F",
      # Whitespace linting must be re-enabled manually for ruff
      # see https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml
      "W",
  ]
  
  [tool.black]
  line-length = 100
  force-exclude = '''
  (
    docs
    | tests
  )
  '''
  
  [tool.mypy]
  disable_error_code = "annotation-unchecked"
  
  [[tool.mypy.overrides]]
  module = "pyglet.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "PIL.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "rocket.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "imgui.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "sdl2.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "pyopengltk.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "PySide2.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "pygame.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "glfw.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "PyQt5.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "PyGLM.*"
  ignore_missing_imports = true
  
  [[tool.mypy.overrides]]
  module = "trimesh.*"
  ignore_missing_imports = true
  