[project]
authors = [{ name = "Wardy", email = "wardy3@gmail.com" }]
description = "Scrape various Untappd web pages and return as parsed dataclasses"
keywords = ["beer", "scraper", "untappd"]
license = { file = "LICENSE" }
name = "untappd-scraper"
readme = "README.md"
requires-python = "<4.0,>=3.13"
version = "0.4.0.1"

classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.13",
    "Topic :: Software Development :: Libraries :: Python Modules",
]

dependencies = [
    "PyYAML>=6.0.2",
    "brotli>=1.1.0",
    # "core>=0.1.4.3",
    "haversine>=2.9.0",
    "lxml[html-clean]>=5.3.2",
    "parse>=1.20.2",
    "python-dateutil>=2.9.0.post0",
    "ratelim>=0.1.6",
    "requests-cache>=1.2.1",
    "requests-html>=0.10.0",
    "tenacity>=9.1.2",
    "wardy-core>=0.1.4.3",
]

[dependency-groups]
dev = [
    "mypy>=1.15.0",
    "python-dotenv>=1.0.1",
    "types-python-dateutil>=2.9.0.20241206",
    "vulture>=2.14",
]
test = ["test-environment>=1.3.2"]

[build-system]
build-backend = "hatchling.build"
requires = ["hatchling"]

[[tool.uv.index]]
explicit = true
name = "Aaarrrrgghile"
publish-url = "https://gitlab.com/api/v4/projects/23576087/packages/pypi"
url = "https://gitlab.com/api/v4/projects/23576087/packages/pypi/simple"

[[tool.uv.index]]
explicit = true
name = "Private-Idaho"
publish-url = "https://gitlab.com/api/v4/projects/68880898/packages/pypi"
url = "https://gitlab.com/api/v4/projects/68880898/packages/pypi/simple"

[tool.uv.sources]
# core = { index = "Aaarrrrgghile" }
test-environment = { index = "Aaarrrrgghile" }
# untappd-scraper = { index = "Aaarrrrgghile" }

[tool.pytest.ini_options]
addopts = "-v --capture=tee-sys --durations=3 -p no:pastebin -p no:nose -p no:doctest"
log_level = "DEBUG"
minversion = "6.0"
pythonpath = [".", "tests"]
xfail_strict = true

filterwarnings = "ignore::urllib3.exceptions.InsecureRequestWarning"

[tool.coverage.report]
exclude_lines = ["@.*overload", "pragma: no cover", 'class \w+\((typing.|tp.)?Protocol\)']

[tool.mypy]
enable_error_code = "ignore-without-code"
explicit_package_bases = true
namespace_packages = true
strict = true
warn_unused_configs = true

[[tool.mypy.overrides]]
ignore_missing_imports = true
module = ["brotli", "requests_html"]
