[build-system] requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" [project] name = "redlens" version = "0.4.0" description = "Archive any Reddit user's public history into a local SQLite database you own, and analyze it" readme = "README.md" license = "MIT" license-files = ["LICENSE"] requires-python = ">=3.11" keywords = ["reddit", "archive", "analytics", "sqlite", "arctic-shift"] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Database", "Topic :: Internet", ] dependencies = [ "platformdirs>=4", # sqlmodel is 0.0.x and can break API on any bump; cap below 0.1. "sqlmodel>=0.0.14,<0.1", ] [project.urls] Homepage = "https://www.redlens.dev" Repository = "https://github.com/TheWeiHu/redlens" Issues = "https://github.com/TheWeiHu/redlens/issues" Changelog = "https://github.com/TheWeiHu/redlens/blob/main/CHANGELOG.md" [project.optional-dependencies] # ruff floor raised to keep local lint identical to CI: <0.9 still enforced the # now-deprecated UP038, so a stale local ruff flagged code that CI passed. dev = ["pytest>=7", "pytest-cov>=5", "ruff>=0.9", "mypy>=1.8"] [project.scripts] redlens = "redlens.cli:main" [tool.setuptools.packages.find] include = ["redlens*"] exclude = ["tests*"] [tool.setuptools.package-data] redlens = ["data/*.txt", "prompts/*.txt"] "redlens.reporting" = ["*.css"] "redlens.serve_assets" = ["*.html"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I", "UP", "B", "SIM"] ignore = ["E501"] [tool.mypy] python_version = "3.11" strict = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false [tool.pytest.ini_options] testpaths = ["tests"] # The default run is offline: network-marked tests are deselected so `pytest` # never reaches out to arctic. Opt in explicitly with `pytest -m integration`. addopts = "-m 'not integration'" markers = [ "integration: hits the network (arctic) — skipped by default; run with `pytest -m integration`", ] [tool.coverage.run] branch = true source = ["redlens"] [tool.coverage.report] show_missing = true skip_covered = true