basic feed rebuilding

This commit is contained in:
Abel Luck 2024-04-18 11:57:24 +02:00
parent 4ab05c9000
commit 6add19c288
17 changed files with 772 additions and 69 deletions

124
poetry.lock generated
View file

@ -1,10 +1,9 @@
# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
[[package]]
name = "attrs"
version = "23.2.0"
description = "Classes Without Boilerplate"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -24,7 +23,6 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p
name = "automat"
version = "22.10.0"
description = "Self-service finite-state machines for the programmer on the go."
category = "main"
optional = false
python-versions = "*"
files = [
@ -43,7 +41,6 @@ visualize = ["Twisted (>=16.1.1)", "graphviz (>0.5.1)"]
name = "bandit"
version = "1.7.8"
description = "Security oriented static analyser for python code."
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -68,7 +65,6 @@ yaml = ["PyYAML"]
name = "black"
version = "24.4.0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -113,7 +109,6 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "certifi"
version = "2024.2.2"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = ">=3.6"
files = [
@ -125,7 +120,6 @@ files = [
name = "cffi"
version = "1.16.0"
description = "Foreign Function Interface for Python calling C code."
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -190,7 +184,6 @@ pycparser = "*"
name = "charset-normalizer"
version = "3.3.2"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
python-versions = ">=3.7.0"
files = [
@ -290,7 +283,6 @@ files = [
name = "click"
version = "8.1.7"
description = "Composable command line interface toolkit"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -305,7 +297,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
@ -313,11 +304,27 @@ files = [
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]
[[package]]
name = "colorlog"
version = "6.8.2"
description = "Add colours to the output of Python's logging module."
optional = false
python-versions = ">=3.6"
files = [
{file = "colorlog-6.8.2-py3-none-any.whl", hash = "sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33"},
{file = "colorlog-6.8.2.tar.gz", hash = "sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44"},
]
[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
[package.extras]
development = ["black", "flake8", "mypy", "pytest", "types-colorama"]
[[package]]
name = "constantly"
version = "23.10.4"
description = "Symbolic constants in Python"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -329,7 +336,6 @@ files = [
name = "cryptography"
version = "42.0.5"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -384,7 +390,6 @@ test-randomorder = ["pytest-randomly"]
name = "cssselect"
version = "1.2.0"
description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -392,11 +397,24 @@ files = [
{file = "cssselect-1.2.0.tar.gz", hash = "sha256:666b19839cfaddb9ce9d36bfe4c969132c647b92fc9088c4e23f786b30f1b3dc"},
]
[[package]]
name = "feedparser"
version = "6.0.11"
description = "Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds"
optional = false
python-versions = ">=3.6"
files = [
{file = "feedparser-6.0.11-py3-none-any.whl", hash = "sha256:0be7ee7b395572b19ebeb1d6aafb0028dee11169f1c934e0ed67d54992f4ad45"},
{file = "feedparser-6.0.11.tar.gz", hash = "sha256:c9d0407b64c6f2a065d0ebb292c2b35c01050cc0dc33757461aaabdc4c4184d5"},
]
[package.dependencies]
sgmllib3k = "*"
[[package]]
name = "filelock"
version = "3.13.4"
description = "A platform independent file lock."
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -413,7 +431,6 @@ typing = ["typing-extensions (>=4.8)"]
name = "flake8"
version = "7.0.0"
description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false
python-versions = ">=3.8.1"
files = [
@ -430,7 +447,6 @@ pyflakes = ">=3.2.0,<3.3.0"
name = "flake8-black"
version = "0.3.6"
description = "flake8 plugin to call black as a code style validator"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -449,7 +465,6 @@ develop = ["build", "twine"]
name = "hyperlink"
version = "21.0.0"
description = "A featureful, immutable, and correct URL for Python."
category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@ -464,7 +479,6 @@ idna = ">=2.5"
name = "idna"
version = "3.7"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=3.5"
files = [
@ -476,7 +490,6 @@ files = [
name = "incremental"
version = "22.10.0"
description = "\"A small library that versions your Python projects.\""
category = "main"
optional = false
python-versions = "*"
files = [
@ -492,7 +505,6 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"]
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -504,7 +516,6 @@ files = [
name = "isort"
version = "5.13.2"
description = "A Python utility / library to sort Python imports."
category = "dev"
optional = false
python-versions = ">=3.8.0"
files = [
@ -519,7 +530,6 @@ colors = ["colorama (>=0.4.6)"]
name = "itemadapter"
version = "0.8.0"
description = "Common interface for data container classes"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -531,7 +541,6 @@ files = [
name = "itemloaders"
version = "1.1.0"
description = "Base library for scrapy's ItemLoader"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -549,7 +558,6 @@ w3lib = ">=1.17.0"
name = "jmespath"
version = "1.0.1"
description = "JSON Matching Expressions"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -561,7 +569,6 @@ files = [
name = "lxml"
version = "5.2.1"
description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
category = "main"
optional = false
python-versions = ">=3.6"
files = [
@ -733,7 +740,6 @@ source = ["Cython (>=3.0.10)"]
name = "markdown-it-py"
version = "3.0.0"
description = "Python port of markdown-it. Markdown parsing, done right!"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -758,7 +764,6 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
name = "mccabe"
version = "0.7.0"
description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -770,7 +775,6 @@ files = [
name = "mdurl"
version = "0.1.2"
description = "Markdown URL utilities"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -782,7 +786,6 @@ files = [
name = "mypy"
version = "1.9.0"
description = "Optional static typing for Python"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -829,7 +832,6 @@ reports = ["lxml"]
name = "mypy-extensions"
version = "1.0.0"
description = "Type system extensions for programs checked with the mypy type checker."
category = "dev"
optional = false
python-versions = ">=3.5"
files = [
@ -841,7 +843,6 @@ files = [
name = "packaging"
version = "24.0"
description = "Core utilities for Python packages"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -853,7 +854,6 @@ files = [
name = "parsel"
version = "1.9.1"
description = "Parsel is a library to extract data from HTML and XML using XPath and CSS selectors"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -872,7 +872,6 @@ w3lib = ">=1.19.0"
name = "pathspec"
version = "0.12.1"
description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -884,7 +883,6 @@ files = [
name = "pbr"
version = "6.0.0"
description = "Python Build Reasonableness"
category = "dev"
optional = false
python-versions = ">=2.6"
files = [
@ -896,7 +894,6 @@ files = [
name = "platformdirs"
version = "4.2.0"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -912,7 +909,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-
name = "pluggy"
version = "1.4.0"
description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -928,7 +924,6 @@ testing = ["pytest", "pytest-benchmark"]
name = "prometheus-client"
version = "0.20.0"
description = "Python client for the Prometheus monitoring system."
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -943,7 +938,6 @@ twisted = ["twisted"]
name = "protego"
version = "0.3.1"
description = "Pure-Python robots.txt parser with support for modern conventions"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -955,7 +949,6 @@ files = [
name = "pyasn1"
version = "0.6.0"
description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -967,7 +960,6 @@ files = [
name = "pyasn1-modules"
version = "0.4.0"
description = "A collection of ASN.1-based protocols modules"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -982,7 +974,6 @@ pyasn1 = ">=0.4.6,<0.7.0"
name = "pycodestyle"
version = "2.11.1"
description = "Python style guide checker"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -994,7 +985,6 @@ files = [
name = "pycparser"
version = "2.22"
description = "C parser in Python"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1006,7 +996,6 @@ files = [
name = "pydispatcher"
version = "2.0.7"
description = "Multi-producer multi-consumer in-memory signal dispatch system"
category = "main"
optional = false
python-versions = "*"
files = [
@ -1021,7 +1010,6 @@ dev = ["tox"]
name = "pyflakes"
version = "3.2.0"
description = "passive checker of Python programs"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -1033,7 +1021,6 @@ files = [
name = "pygments"
version = "2.17.2"
description = "Pygments is a syntax highlighting package written in Python."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@ -1049,7 +1036,6 @@ windows-terminal = ["colorama (>=0.4.6)"]
name = "pyopenssl"
version = "24.1.0"
description = "Python wrapper module around the OpenSSL library"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -1068,7 +1054,6 @@ test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"]
name = "pypydispatcher"
version = "2.1.2"
description = "Multi-producer-multi-consumer signal dispatching mechanism"
category = "main"
optional = false
python-versions = "*"
files = [
@ -1079,7 +1064,6 @@ files = [
name = "pytest"
version = "8.1.1"
description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -1096,11 +1080,24 @@ pluggy = ">=1.4,<2.0"
[package.extras]
testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
name = "python-dateutil"
version = "2.9.0.post0"
description = "Extensions to the standard Python datetime module"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
]
[package.dependencies]
six = ">=1.5"
[[package]]
name = "pyyaml"
version = "6.0.1"
description = "YAML parser and emitter for Python"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
@ -1160,7 +1157,6 @@ files = [
name = "queuelib"
version = "1.6.2"
description = "Collection of persistent (disk-based) and non-persistent (memory-based) queues"
category = "main"
optional = false
python-versions = ">=3.5"
files = [
@ -1172,7 +1168,6 @@ files = [
name = "requests"
version = "2.31.0"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -1194,7 +1189,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
name = "requests-file"
version = "2.0.0"
description = "File transport adapter for Requests"
category = "main"
optional = false
python-versions = "*"
files = [
@ -1209,7 +1203,6 @@ requests = ">=1.0.0"
name = "rich"
version = "13.7.1"
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
category = "dev"
optional = false
python-versions = ">=3.7.0"
files = [
@ -1228,7 +1221,6 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
name = "scrapy"
version = "2.11.1"
description = "A high-level Web Crawling and Web Scraping framework"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1260,7 +1252,6 @@ w3lib = ">=1.17.0"
name = "service-identity"
version = "24.1.0"
description = "Service identity verification for pyOpenSSL & cryptography."
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1285,7 +1276,6 @@ tests = ["coverage[toml] (>=5.0.2)", "pytest"]
name = "setuptools"
version = "69.5.1"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1298,11 +1288,20 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments
testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
[[package]]
name = "sgmllib3k"
version = "1.0.0"
description = "Py3k port of sgmllib."
optional = false
python-versions = "*"
files = [
{file = "sgmllib3k-1.0.0.tar.gz", hash = "sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9"},
]
[[package]]
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@ -1314,7 +1313,6 @@ files = [
name = "stevedore"
version = "5.2.0"
description = "Manage dynamic plugins for Python applications"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -1329,7 +1327,6 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0"
name = "tldextract"
version = "5.1.2"
description = "Accurately separates a URL's subdomain, domain, and public suffix, using the Public Suffix List (PSL). By default, this includes the public ICANN TLDs and their exceptions. You can optionally support the Public Suffix List's private domains as well."
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1351,7 +1348,6 @@ testing = ["black", "mypy", "pytest", "pytest-gitignore", "pytest-mock", "respon
name = "twisted"
version = "24.3.0"
description = "An asynchronous networking framework written in Python"
category = "main"
optional = false
python-versions = ">=3.8.0"
files = [
@ -1388,7 +1384,6 @@ windows-platform = ["pywin32 (!=226)", "pywin32 (!=226)", "twisted[all-non-platf
name = "twisted-iocpsupport"
version = "1.0.4"
description = "An extension for use in the twisted I/O Completion Ports reactor."
category = "main"
optional = false
python-versions = "*"
files = [
@ -1417,7 +1412,6 @@ files = [
name = "types-pyyaml"
version = "6.0.12.20240311"
description = "Typing stubs for PyYAML"
category = "dev"
optional = false
python-versions = ">=3.8"
files = [
@ -1429,7 +1423,6 @@ files = [
name = "typing-extensions"
version = "4.11.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1441,7 +1434,6 @@ files = [
name = "urllib3"
version = "2.2.1"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=3.8"
files = [
@ -1459,7 +1451,6 @@ zstd = ["zstandard (>=0.18.0)"]
name = "w3lib"
version = "2.1.2"
description = "Library of web-related functions"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -1471,7 +1462,6 @@ files = [
name = "zope-interface"
version = "6.3"
description = "Interfaces for Python"
category = "main"
optional = false
python-versions = ">=3.7"
files = [
@ -1524,4 +1514,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
content-hash = "27fab51ed6a71945f44582652b13310b6fb429d3676af9df70095c085c056957"
content-hash = "c7cada0d348ebdcb48a3468d0b45aa8509b57ab3cd4d3c4065421bb0c0f1f57b"