[project]
name = "seacogs"
version = "0.1.0"
description = "My assorted cogs for Red-DiscordBot."
authors = [{ name = "cswimr", email = "seaswimmerthefsh@gmail.com" }]
license = { file = "LICENSE" }
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
    "aiosqlite>=0.20.0",
    "beautifulsoup4>=4.12.3",
    "colorthief>=0.2.1",
    "markdownify>=0.13.1",
    "numpy>=2.1.2",
    "phx-class-registry>=5.0.0",
    "pillow>=10.4.0",
    "pip>=24.3.1",
    "py-dactyl",
    "pydantic>=2.9.2",
    "red-discordbot>=3.5.14",
    "watchdog>=5.0.3",
    "websockets>=13.1",
]

[project.optional-dependencies]
documentation = [
    "mkdocs>=1.6.1",
    "mkdocs-git-authors-plugin>=0.9.0",
    "mkdocs-git-revision-date-localized-plugin>=1.2.9",
    "mkdocs-material[imaging]>=9.5.40",
    "mkdocstrings[python]>=0.26.1",
    "mkdocs-redirects>=1.2.1",
]

[tool.uv]
dev-dependencies = ["pylint>=3.3.1", "ruff>=0.6.9", "sqlite-web>=0.6.4"]

[tool.uv.sources]
py-dactyl = { git = "https://github.com/cswimr/pydactyl" }

[tool.ruff]
# 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",
]

# Same as Black.
line-length = 320
indent-width = 4

# Assume Python 3.11
target-version = "py311"

[tool.ruff.lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`)  codes by default.
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
# McCabe complexity (`C901`) by default.
select = [
    "I",
    "N",
    "F",
    "W",
    "E",
    "G",
    "INP",
    "T20",
    "PLC",
    "PLE",
    "PLW",
    "PLR",
    "LOG",
    "SLF",
    "ERA",
    "FIX",
]
ignore = ["PLR0912", "PLR0915", "PLR2004", "PLR0913"]

# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []

# Allow unused variables when underscore-prefixed.
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"

# Like Black, indent with spaces, rather than tabs.
indent-style = "space"

# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false

# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"

# Enable auto-formatting of code examples in docstrings. Markdown,
# reStructuredText code/literal blocks and doctests are all supported.
#
# This is currently disabled by default, but it is planned for this
# to be opt-out in the future.
docstring-code-format = false

# Set the line length limit used when formatting code snippets in
# docstrings.
#
# This only has an effect when the `docstring-code-format` setting is
# enabled.
docstring-code-line-length = "dynamic"
