[project] name = "republisher-redux" version = "0.1.0" description = "Mirror RSS and Atom feeds completely offline" readme = "README.md" authors = [{ name = "Abel Luck", email = "abel@guardianproject.info" }] requires-python = ">=3.13" dependencies = [ "scrapy>=2.11.1,<3.0.0", "prometheus-client>=0.20.0,<0.21.0", "python-dateutil>=2.9.0.post0,<3.0.0", "colorlog>=6.8.2,<7.0.0", "feedparser>=6.0.11,<7.0.0", "lxml>=5.2.1,<6.0.0", "pillow>=10.3.0,<11.0.0", "ffmpeg-python>=0.2.0,<0.3.0", "Quart>=0.20.0,<0.21.0", "apscheduler>=3.11.0,<4.0.0", "aiosqlite>=0.21.0,<0.22.0", "datastar-py>=0.8.0,<0.9.0", "greenlet>=3.2.4,<4.0.0", "htpy>=25.12.0,<26.0.0", "peewee>=3.19.0,<4.0.0", "pygea @ git+https://guardianproject.dev/anynews/pygea.git", ] [project.scripts] repub = "repub.entrypoint:entrypoint" [dependency-groups] dev = [ "pytest>=8.1.1,<9.0.0", "black>=24.4.0,<25.0.0", "flake8>=7.0.0,<8.0.0", "bandit>=1.7.8,<2.0.0", "pyright>=1.1.403,<2.0.0", "types-PyYAML>=6.0.12.20240311,<7.0.0", "isort>=5.13.2,<6.0.0", "flake8-black>=0.3.6,<0.4.0", ] [build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] where = ["."] include = ["repub*"] [tool.pytest.ini_options] testpaths = ["tests"] [tool.isort] py_version = 311 profile = "black" src_paths = ["repub", "tests"] [tool.black] line-length = 88 target-version = ['py313'] [tool.pylint.format] max-line-length = "88" [tool.pyright] include = ["repub", "tests"] exclude = [ "repub/crawl.py", "repub/exporters.py", "repub/media.py", "repub/rss.py", "repub/spiders", "repub/srcset.py", ] pythonVersion = "3.13" typeCheckingMode = "basic" reportMissingImports = false [tool.flake8] ignore = [ "D100", "D101", "D102", "D104", "D107", ] exclude = [ ".git", "__pycache__", "docs/source/conf.py", "build", "dist", "data/db/", "kealytics/tests/", "*.pyc", "*.egg-info", ".cache", ".eggs", ] max-complexity = 10 import-order-style = "cryptography" application-import-names = ["repub"] format = "${cyan}%(path)s${reset}:${yellow_bold}%(row)d${reset}:${green_bold}%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s"