content: [tool.poetry]
  name = "Moe"
  version = "2.5.0"
  description = "The ultimate tool for managing your music library."
  authors = ["Jacob Pavlock <jtpavlock@gmail.com>"]
  repository = "https://github.com/MoeMusic/Moe"
  documentation = "https://mrmoe.readthedocs.io/en/latest/index.html"
  classifiers=[
      "Development Status :: 5 - Production/Stable",
      "License :: OSI Approved :: MIT License",
      "Topic :: Multimedia :: Sound/Audio :: Editors",
  ]
  readme = "README.rst"
  license = "MIT"
  
  [tool.poetry.scripts]
  moe = 'moe.cli:main'
  
  [tool.poetry.dependencies]
  python = ">=3.9, <3.14"
  alembic = "^1.4.2"
  dynaconf = "^3.1.4"
  importlib-metadata = "^7.0.1"
  mediafile = "^0.13.0"
  pluggy = "^1.3.0"
  rich = "^13.0.0"
  SQLAlchemy = "2.0.*"
  Unidecode = "^1.2.0"
  typing_extensions = { version = "^4.0.0", python = "<3.11" }
  questionary = "^2.0.0"
  musicbrainzngs = { version = "^0.7.1", optional = true}
  
  [tool.poetry.group.test.dependencies]
  debugpy = "^1.4.1"
  pytest = "^8.0.0"
  pytest-cov = "^6.0.0"
  tox = "^4.0.0"
  
  [tool.poetry.group.lint.dependencies]
  ruff = "==0.12.1"
  commitizen = "^3.0.0"
  "github3.py" = "^4.0.0"
  pre-commit = "^4.0.0"
  pyright = "==1.1.402"
  
  [tool.poetry.group.docs.dependencies]
  furo = "*"
  pypandoc = "^1.9"
  Sphinx = "^7.0.0"
  
  [tool.poetry.extras]
  musicbrainz = [ "musicbrainzngs" ]
  
  [tool.commitizen]
  name = "cz_customize"
  version = "2.5.0"
  version_files = [
      "pyproject.toml:^version",
  ]
  tag_format = "v$version"
  
  [tool.commitizen.customize]
  bump_pattern = '^(build|deprecate|feat|fix|perf)'
  bump_map = { feat = "MINOR", build = "PATCH", deprecate = "PATCH", fix = "PATCH", perf = "PATCH" }
  schema_pattern = '(build|ci|deprecate|docs|feat|fix|perf|refactor|release|style|test)(\(\w+\))?!?:\s\S.*'
  
  [tool.pytest.ini_options]
  log_cli_level = 10
  addopts = "--color=yes"
  markers = [
      "darwin: tests that should only run on apple",
      "linux: tests that should only run on linux",
      "win32: tests that should only run on windows",
      "ffmpeg: tests that require ffmpeg to be installed",
      "network: tests that make network calls",
  ]
  
  [tool.pyright]
  exclude = [
      "moe/moe_alembic", "tests"
  ]
  pythonPlatform = "All"
  
  [tool.ruff.lint]
  select = ["ALL"]
  ignore = [
      "COM", # the formatter handles trailing commas
      "G004", # use f strings in logging for a consistent string format
      "PYI056", # use extend on __all__
      "RET501", # don't care about return None semantics
      "RET502", # don't care about return None semantics
      "RET503", # don't care about return None semantics
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "moe/moe_alembic/*" = [
      "ANN", # alembic scripts don't need type annotations
      "D", # alembic scripts don't need docstrings
      "ERA001", # commented code used for examples
      "INP001", # alembic scripts don't need __init__
      "SLF001", # alembic scripts can access private members
  ]
  "docs/conf.py" = [
      "ERA001", # conf.py includes commented config options
      "INP001", # docs directory isn't a python package
  ]
  "tests/*" = [
      "ANN", # tests don't need type annotations
      "ARG", # arguments in pytest are fixtures
      "C90", # tests are as complex as they need to be
      "INP001", # tests don't need __init__
      "RET", # tests don't need returns
      "S", # asserts used in tests
  ]
  "tests/resources/musicbrainz/*" = [
      "RUF001", # keep musicbrainz string formatting
      "E501", # keep original dict formatting
  ]
  
  [tool.ruff.lint.isort]
  known-third-party = ["alembic"]
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  [build-system]
  requires = ["poetry-core>=1.0"]
  build-backend = "poetry.core.masonry.api"
  