diff --git a/.gitignore b/.gitignore index 9046f10..231893e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ site/ .python-venv +.venv __pycache__ diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml index 7264b0c..aabd02e 100644 --- a/.markdownlint-cli2.yaml +++ b/.markdownlint-cli2.yaml @@ -1,6 +1,9 @@ config: default: true MD013: false # Disable line length check + MD033: + allowed_elements: + - img globs: - "docs/**/*.md" diff --git a/Makefile b/Makefile index 21cd653..fdf28d2 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,7 @@ +VENV := .venv +export VIRTUAL_ENV := $(CURDIR)/$(VENV) +export PATH := $(VIRTUAL_ENV)/bin:$(PATH) + all: @echo all @@ -5,12 +9,10 @@ sync: uv sync build: - . .venv/bin/activate && \ - mkdocs build + mkdocs build serve: - . .venv/bin/activate && \ - mkdocs serve -a 0.0.0.0:8000 + mkdocs serve -a 0.0.0.0:8000 clean: rm -rf site .env @@ -18,5 +20,5 @@ clean: lint: docker run --rm -v "$$(pwd):/workdir" davidanson/markdownlint-cli2:latest -fix-lint: +lint-fix: docker run --rm --user "$$(id -u):$$(id -g)" -v "$$(pwd):/workdir" davidanson/markdownlint-cli2:latest --fix diff --git a/docs/assets/icon.svg b/docs/assets/icon.svg new file mode 100644 index 0000000..0918482 --- /dev/null +++ b/docs/assets/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/screenshots/bbc/bbc-article1-basic.png b/docs/assets/screenshots/bbc/bbc-article1-basic.png new file mode 100644 index 0000000..2293d47 Binary files /dev/null and b/docs/assets/screenshots/bbc/bbc-article1-basic.png differ diff --git a/docs/assets/screenshots/bbc/bbc-article1-expanded.png b/docs/assets/screenshots/bbc/bbc-article1-expanded.png new file mode 100644 index 0000000..a61d0d8 Binary files /dev/null and b/docs/assets/screenshots/bbc/bbc-article1-expanded.png differ diff --git a/docs/assets/screenshots/bbc/bbc-article2-basic.png b/docs/assets/screenshots/bbc/bbc-article2-basic.png new file mode 100644 index 0000000..b9c3ac3 Binary files /dev/null and b/docs/assets/screenshots/bbc/bbc-article2-basic.png differ diff --git a/docs/assets/screenshots/bbc/bbc-article2-expanded.png b/docs/assets/screenshots/bbc/bbc-article2-expanded.png new file mode 100644 index 0000000..16c43da Binary files /dev/null and b/docs/assets/screenshots/bbc/bbc-article2-expanded.png differ diff --git a/docs/assets/screenshots/bbc/bbc-portal.jpg b/docs/assets/screenshots/bbc/bbc-portal.jpg new file mode 100644 index 0000000..5572e4a Binary files /dev/null and b/docs/assets/screenshots/bbc/bbc-portal.jpg differ diff --git a/docs/assets/screenshots/bbc/portal-hover.png b/docs/assets/screenshots/bbc/portal-hover.png new file mode 100644 index 0000000..c461a3c Binary files /dev/null and b/docs/assets/screenshots/bbc/portal-hover.png differ diff --git a/docs/assets/screenshots/lmstudio-rtx3060.png b/docs/assets/screenshots/lmstudio-rtx3060.png new file mode 100644 index 0000000..9d35f08 Binary files /dev/null and b/docs/assets/screenshots/lmstudio-rtx3060.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png b/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png new file mode 100644 index 0000000..d1351fa Binary files /dev/null and b/docs/assets/screenshots/tagesschau/tagesschau-article1-basic.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png b/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png new file mode 100644 index 0000000..de1f524 Binary files /dev/null and b/docs/assets/screenshots/tagesschau/tagesschau-article1-expanded.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png b/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png new file mode 100644 index 0000000..91ac25b Binary files /dev/null and b/docs/assets/screenshots/tagesschau/tagesschau-article2-basic.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png b/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png new file mode 100644 index 0000000..e429d01 Binary files /dev/null and b/docs/assets/screenshots/tagesschau/tagesschau-article2-expanded.png differ diff --git a/docs/assets/screenshots/tagesschau/tagesschau-portal.jpg b/docs/assets/screenshots/tagesschau/tagesschau-portal.jpg new file mode 100644 index 0000000..9df5915 Binary files /dev/null and b/docs/assets/screenshots/tagesschau/tagesschau-portal.jpg differ diff --git a/docs/de/index.md b/docs/de/index.md index cae4dbf..7ea5916 100644 --- a/docs/de/index.md +++ b/docs/de/index.md @@ -22,10 +22,6 @@ Warum ist Sprachanalyse effektiv? Richten Sie Ihre eigene [Instanz](https://github.com/deframer/news-deframer/blob/main/docs/SETUP.md) ein. -## Übersicht - -- [TODO / Status](https://github.com/deframer/news-deframer/blob/main/TODO.md) - ## Ressourcen - [Quellcode](https://github.com/deframer/news-deframer/) diff --git a/docs/de/screenshots/bbc.md b/docs/de/screenshots/bbc.md new file mode 100644 index 0000000..92261ab --- /dev/null +++ b/docs/de/screenshots/bbc.md @@ -0,0 +1,41 @@ +# BBC + +- RSS-Feed `https://feeds.bbci.co.uk/news/world/rss.xml` + +## Portal + +Das Plugin überlagert die ursprüngliche Webseite, um eine ablenkungsfreie Umgebung zu schaffen. + +**Hauptmerkmale:** + +- **Neutralisierter Inhalt**: Sie sehen nicht die ursprünglichen, potenziell emotional aufgeladenen Titel oder Beschreibungen. Stattdessen generiert die KI neutrale Zusammenfassungen, die informieren statt zu provozieren. +- **Sensations-Score**: Die Prozentanzeige zeigt das Niveau des erkannten Sensationalismus oder der Voreingenommenheit an. Ein roter Indikator deutet auf ein hohes Maß an Manipulation, Framing, Voreingenommenheit oder Fehlinformationen hin. + +**Empfehlung**: Ein Score von 50 % oder höher deutet auf eine erhebliche Voreingenommenheit hin. Wir empfehlen, alternative Quellen für eine ausgewogenere Perspektive zu suchen. + +BBC Portal + +**Schnelle Einblicke**: Wenn Sie mit der Maus über die Prozentanzeige fahren, wird die detaillierte Analyse des News Deframers angezeigt. Dies bietet oft genügend Kontext, um den vollständigen Artikel zu überspringen. + +Portal Hover + +## Artikel + +Sie behalten die volle Kontrolle über Ihr Leseerlebnis. Das Plugin fängt die Navigation zu Artikel-URLs ab. Unabhängig davon, ob Sie über das Portal oder einen direkten Link auf den Artikel zugreifen, präsentiert News Deframer immer zuerst die Analysevorschau, um Sie zu schützen. + +**Wichtiger Hinweis**: Das Plugin analysiert derzeit nur die Metadaten des RSS-Feeds (Titel und Beschreibung). Der Inhalt des Artikels bleibt unberührt. Zukünftige Updates können eine Volltext-KI-Analyse beinhalten, die von vertrauenswürdigen menschlichen Prüfern ausgelöst wird. + +- **"Verstecken"-Button**: Schließt das Deframer-Overlay, um den ursprünglichen Artikel auf der Website des Herausgebers anzuzeigen. +- **Geschützte Ansicht**: Standardmäßig sind der ursprüngliche Titel und die Beschreibung ausgeblendet, um die emotionale Wirkung zu reduzieren. Sie können die Ansicht erweitern, um die Argumentation der KI und den Originaltext zu sehen. + +Artikel 1 + +| Einfach | Erweitert | +| :---: | :---: | +| BBC Artikel 1 - Einfach | BBC Artikel 1 - Erweitert | + +Artikel 2 + +| Einfach | Erweitert | +| :---: | :---: | +| BBC Artikel 2 - Einfach | BBC Artikel 2 - Erweitert | diff --git a/docs/de/screenshots/index.md b/docs/de/screenshots/index.md new file mode 100644 index 0000000..15e42e0 --- /dev/null +++ b/docs/de/screenshots/index.md @@ -0,0 +1,29 @@ +# Screenshots + +Beispiele für unser Browser-Plugin. + +## Präsentationen + +- [BBC](bbc.md) +- [Tagesschau](tagesschau.md) + +## KI-Konfiguration + +Die folgende Konfiguration wurde verwendet, um diese Beispiele zu erstellen: + +- **Hardware**: Mac Mini M1 (16GB RAM), unter macOS Tahoe 26.2 +- **Software**: [LM Studio](https://lmstudio.ai/) 0.3.39 +- **Modell**: [meta-llama-3.1-8b-instruct](https://huggingface.co/lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF) + +Das System verwendet diese [Prompts](https://github.com/deframer/news-deframer/tree/main/pkg/think/prompts/). + +**Zitat:** *"Du bist ein streng objektiver, neutraler Medienanalyst und Nachrichtenredakteur. Deine Aufgabe ist es, Texte (Titel und Beschreibung) auf journalistische Qualität, Einseitigkeit (Bias) und Sensationalismus zu analysieren und eine neutrale Version zu erstellen. Du musst spezifische, prägnante Begründungen für jede Bewertung und Korrektur liefern, die in einer gesamtanalytischen Zusammenfassung gipfeln. [...]"* + +Dieser Prompt weist die KI an, strikte Objektivität und politische Neutralität zu wahren. + +*Hinweis: Obwohl die LLM-Leistung auf dem M1-Chip bescheiden ist (ca. 26s pro Anfrage), bietet sie eine kostengünstige und effiziente lokale Lösung.* + +```txt +level=DEBUG msg="openai request duration" duration=26.833331235s +level=DEBUG msg="openai token usage" prompt_tokens=1470 completion_tokens=303 thoughts_tokens=0 total_tokens=1773 +``` diff --git a/docs/de/screenshots/tagesschau.md b/docs/de/screenshots/tagesschau.md new file mode 100644 index 0000000..1a28ec2 --- /dev/null +++ b/docs/de/screenshots/tagesschau.md @@ -0,0 +1,23 @@ +# Tagesschau + +- RSS-Feed `https://www.tagesschau.de/index~rss2.xml` + +## Portal + +**Empfehlung**: Ein Score von 50 % oder höher dient als Warnung. Er deutet auf die Verwendung von Spekulationen, Framing oder Sensationslust hin. Wir empfehlen, den ursprünglichen Titel und die Beschreibung vollständig zu meiden und objektivere Quellen zu suchen. Dies deutet darauf hin, dass professionelle Techniken absichtlich eingesetzt werden, um Ihre Wahrnehmung zu manipulieren. + +Tagesschau Portal + +## Artikel + +Artikel 1 + +| Einfach | Erweitert | +| :---: | :---: | +| Tagesschau Artikel 1 - Einfach | Tagesschau Artikel 1 - Erweitert | + +Artikel 2 + +| Einfach | Erweitert | +| :---: | :---: | +| Tagesschau Artikel 2 - Einfach | Tagesschau Artikel 2 - Erweitert | diff --git a/docs/en/index.md b/docs/en/index.md index 1a7fcf3..16fdb3d 100644 --- a/docs/en/index.md +++ b/docs/en/index.md @@ -22,10 +22,6 @@ Why is language analysis effective? Set up your own [instance](https://github.com/deframer/news-deframer/blob/main/docs/SETUP.md). -## Overview - -- [TODO / Status](https://github.com/deframer/news-deframer/blob/main/TODO.md) - ## Resources - [Source Code](https://github.com/deframer/news-deframer/) diff --git a/docs/en/license.md b/docs/en/license.md new file mode 100644 index 0000000..a44af76 --- /dev/null +++ b/docs/en/license.md @@ -0,0 +1,27 @@ +# License + +```txt +Copyright © 2025,2026 News Deframer Contributors + +MIT License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` diff --git a/docs/en/screenshots/bbc.md b/docs/en/screenshots/bbc.md new file mode 100644 index 0000000..3c4d6aa --- /dev/null +++ b/docs/en/screenshots/bbc.md @@ -0,0 +1,41 @@ +# BBC + +- RSS feed `https://feeds.bbci.co.uk/news/world/rss.xml` + +## Portal + +The plugin overlays the original web page to provide a distraction-free environment. + +**Key Features:** + +- **Neutralized Content**: You will not see the original, potentially emotionally charged titles or descriptions. Instead, the AI generates neutral summaries designed to inform rather than provoke. +- **Sensationalism Score**: The percentage indicator reveals the level of detected sensationalism or bias. A red indicator suggests high levels of manipulation, framing, bias, or misinformation. + +**Recommendation**: A score of 50% or higher suggests significant bias. We recommend seeking alternative sources for a more balanced perspective. + +BBC Portal + +**Quick Insights**: Hovering over the percentage bar reveals the detailed analysis from the News Deframer. This often provides enough context to skip the full article. + +Portal Hover + +## Article + +You retain full control over your reading experience. The plugin intercepts navigation to article URLs. Regardless of whether you access the article via the portal or a direct link, News Deframer always presents the analysis preview first to protect you. + +**Important Note**: The plugin currently analyzes only the RSS feed metadata (title and description). The body of the article remains untouched. Future updates may include full-text AI analysis triggered via human trusted flaggers. + +- **"Hide" Button**: Dismisses the Deframer overlay to reveal the original article on the publisher's site. +- **Protected Viewing**: By default, the original title and description are hidden to reduce emotional impact. You can choose to expand the view to see the AI's reasoning and the original text. + +Article 1 + +| Basic | Expanded | +| :---: | :---: | +| BBC Article 1 - Basic | BBC Article 1 - Expanded | + +Article 2 + +| Basic | Expanded | +| :---: | :---: | +| BBC Article 2 - Basic | BBC Article 2 - Expanded | diff --git a/docs/en/screenshots/index.md b/docs/en/screenshots/index.md new file mode 100644 index 0000000..35a452f --- /dev/null +++ b/docs/en/screenshots/index.md @@ -0,0 +1,29 @@ +# Screenshots + +These are showcases for our browser plugin. + +## Showcases + +- [BBC](bbc.md) +- [Tagesschau](tagesschau.md) + +## AI Configuration + +The following setup was used to generate these examples: + +- **Hardware**: Mac Mini M1 (16GB RAM), running macOS Tahoe 26.2 +- **Software**: [LM Studio](https://lmstudio.ai/) 0.3.39 +- **Model**: [meta-llama-3.1-8b-instruct](https://huggingface.co/lmstudio-community/Meta-Llama-3.1-8B-Instruct-GGUF) + +The system utilizes these [Prompts](https://github.com/deframer/news-deframer/tree/main/pkg/think/prompts/). + +**Quote:** *"You are a strictly objective, neutral media analyst and news editor. Your task is to analyze texts (title and description) for journalistic quality, bias, and sensationalism, and to create a neutral version. You must provide specific, concise reasons for every assessment and correction, culminating in an overall summary. [...]"* + +This prompt directs the AI to maintain strict objectivity and political neutrality. + +*Note: While the LLM performance on the M1 chip is modest (approx. 26s per request), it provides a cost-effective and efficient local solution.* + +```txt +level=DEBUG msg="openai request duration" duration=26.833331235s +level=DEBUG msg="openai token usage" prompt_tokens=1470 completion_tokens=303 thoughts_tokens=0 total_tokens=1773 +``` diff --git a/docs/en/screenshots/tagesschau.md b/docs/en/screenshots/tagesschau.md new file mode 100644 index 0000000..01c7ddd --- /dev/null +++ b/docs/en/screenshots/tagesschau.md @@ -0,0 +1,23 @@ +# Tagesschau + +- RSS feed `https://www.tagesschau.de/index~rss2.xml` + +## Portal + +**Recommendation**: A score of 50% or higher serves as a warning. It indicates the use of speculation, framing, or sensationalism. We recommend avoiding the original title and description entirely and seeking more objective sources. This suggests that professional techniques are being intentionally employed to manipulate your perception. + +Tagesschau Portal + +## Article + +Article 1 + +| Basic | Expanded | +| :---: | :---: | +| Tagesschau Article 1 - Basic | Tagesschau Article 1 - Expanded | + +Article 2 + +| Basic | Expanded | +| :---: | :---: | +| Tagesschau Article 2 - Basic | Tagesschau Article 2 - Expanded | diff --git a/docs/en/todo.md b/docs/en/todo.md new file mode 100644 index 0000000..42aa9bc --- /dev/null +++ b/docs/en/todo.md @@ -0,0 +1,43 @@ +# Status & Todo + +## Core + +- [x] Basic RSS Proxy +- [x] Polling and auto updating of feeds +- [x] Dummy LLM support (zero wait time, zero cost, developer friendly) +- [x] ChatGPT / Generic OpenAI LLM support / [Local](../assets/screenshots/lmstudio-rtx3060.png) e.g. LM-Studio +- [x] Grok LLM support (simply use OpenAI) +- [x] Gemini LLM support +- [x] Support filtering the RSS Proxy result with a min rating +- [x] Enhance the parsing of items e.g. media / thumbnails etc. +- [x] Enhance the handling of exotic feeds e.g. the bbc uses a different feed url then the item URLs. +- [x] Move to +- [ ] Handle empty items / special items e.g. special video news feeds / ads +- [ ] Fix support for multiple concurrent workers +- [ ] Valkey Cache (read through) +- [ ] Make a public instance + +## Webbrowser Plugin + +- [x] Webbrowser Plugin (make deframer act as an Ad-Blocker but for bad news) +- [x] Updated the Browser Plugin Manifest to V3. +- [x] Webbrowser Plugin enable/disable +- [x] Webbrowser Plugin icon +- [x] Webbrowser Plugin theme support +- [x] Publish the Browser Plugin to Chrome Store (Waiting for Test) +- [x] Webbrowser Plugin i18n +- [ ] Webbrowser Plugin show more data (missing: author, category) + - [x] pubDate +- [ ] Webbrowser Plugin i18n support more languages +- [ ] Webbrowser Plugin add tabs or sections +- [ ] Webbrowser Plugin Admin UI enhancement e.g. show the supported domains / disable the plugin etc. +- [ ] Try to get a Favicon / Logo from somewhere + +## Website + +- [x] Website +- [ ] Video + +## Future ideas + +- Implement Trend Mining to broaden user perspectives. Many users are confined to a small set of feeds, creating "blind spots" regarding important local or global events. By visualizing what others are reading, we can help users discover relevant content outside their usual bubble. This approach may be based on the findings in this [PhD Thesis](https://refubium.fu-berlin.de/bitstream/handle/fub188/7212/streibel-diss-online-1.pdf?sequence=1&isAllowed=y). diff --git a/mkdocs.yml b/mkdocs.yml index eae3336..855be16 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,6 +4,9 @@ site_url: https://deframer.github.io theme: name: material + custom_dir: overrides + favicon: assets/icon.svg + logo: assets/icon.svg palette: # Palette toggle for light mode - scheme: default @@ -19,13 +22,6 @@ theme: icon: material/brightness-4 name: Switch to light mode features: - # - navigation.instant - # - navigation.instant.progress - # - navigation.instant.preview - - navigation.tracking - - navigation.tabs - - navigation.tabs - - navigation.tabs.sticky - navigation.sections - navigation.expand - toc.integrate @@ -44,19 +40,30 @@ plugins: name: English default: true build: true + nav: + - News Deframer: index.md + - Screenshots: screenshots/index.md + - Status: todo.md + - License: license.md + copyright: Copyright © 2026 - locale: de - name: Deutsch + name: Deutsch | German build: true + nav: + - News Deframer: index.md + - Screenshots: screenshots/index.md + - Status: todo.md + - Lizenz: license.md + copyright: Copyright © 2026 - search - # - tags - - drawio_file - glightbox -# - with-pdf # https://github.com/orzih/mkdocs-with-pdf/tree/master -# - macros extra_javascript: - js/language-detect.js +extra_css: + - css/custom.css + markdown_extensions: - pymdownx.superfences: custom_fences: @@ -72,9 +79,3 @@ markdown_extensions: - pymdownx.superfences - attr_list - pymdownx.blocks.caption - -nav: - - Home: - - Start: index.md -# - Tags: tags.md - diff --git a/overrides/css/custom.css b/overrides/css/custom.css new file mode 100644 index 0000000..3d2063a --- /dev/null +++ b/overrides/css/custom.css @@ -0,0 +1,13 @@ +/* Hide the site title text in the sidebar */ +.md-nav__title { + font-size: 0; +} + +.md-nav__title .md-logo { + /* No special styling needed, the logo is an SVG */ +} + +/* Center the footer content */ +.md-footer-meta__inner { + justify-content: center; +} diff --git a/docs/en/js/language-detect.js b/overrides/js/language-detect.js similarity index 100% rename from docs/en/js/language-detect.js rename to overrides/js/language-detect.js diff --git a/overrides/partials/copyright.html b/overrides/partials/copyright.html new file mode 100644 index 0000000..6e3f062 --- /dev/null +++ b/overrides/partials/copyright.html @@ -0,0 +1,7 @@ + diff --git a/pyproject.toml b/pyproject.toml index b513524..34f7f57 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,5 @@ dependencies = [ "mkdocs", "mkdocs-material", "mkdocs-glightbox", - "mkdocs-drawio-file", "mkdocs-static-i18n", ] diff --git a/uv.lock b/uv.lock index 8044ce8..8f2185e 100644 --- a/uv.lock +++ b/uv.lock @@ -25,19 +25,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/02/e3/a4fa1946722c4c7b063cc25043a12d9ce9b4323777f89643be74cef2993c/backrefs-6.1-py39-none-any.whl", hash = "sha256:a9e99b8a4867852cad177a6430e31b0f6e495d65f8c6c134b68c14c3c95bf4b0", size = 381058, upload-time = "2025-11-15T14:52:06.698Z" }, ] -[[package]] -name = "beautifulsoup4" -version = "4.14.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c3/b0/1c6a16426d389813b48d95e26898aff79abbde42ad353958ad95cc8c9b21/beautifulsoup4-4.14.3.tar.gz", hash = "sha256:6292b1c5186d356bba669ef9f7f051757099565ad9ada5dd630bd9de5fa7fb86", size = 627737, upload-time = "2025-11-30T15:08:26.084Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/39/47f9197bdd44df24d67ac8893641e16f386c984a0619ef2ee4c51fbbc019/beautifulsoup4-4.14.3-py3-none-any.whl", hash = "sha256:0918bfe44902e6ad8d57732ba310582e98da931428d231a5ecb9e7c703a735bb", size = 107721, upload-time = "2025-11-30T15:08:24.087Z" }, -] - [[package]] name = "certifi" version = "2026.1.4" @@ -131,7 +118,6 @@ version = "0.1.0" source = { virtual = "." } dependencies = [ { name = "mkdocs" }, - { name = "mkdocs-drawio-file" }, { name = "mkdocs-glightbox" }, { name = "mkdocs-material" }, { name = "mkdocs-static-i18n" }, @@ -140,7 +126,6 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "mkdocs" }, - { name = "mkdocs-drawio-file" }, { name = "mkdocs-glightbox" }, { name = "mkdocs-material" }, { name = "mkdocs-static-i18n" }, @@ -179,21 +164,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] -[[package]] -name = "lxml" -version = "4.9.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/84/14/c2070b5e37c650198de8328467dd3d1681e80986f81ba0fea04fc4ec9883/lxml-4.9.4.tar.gz", hash = "sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e", size = 3576664, upload-time = "2023-12-19T19:37:24.296Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/ac/0abe4b25cae50247c5130539d0f45a201dbfe0ba69d3dd844411f90c9930/lxml-4.9.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8", size = 8624172, upload-time = "2023-12-19T19:01:37.711Z" }, - { url = "https://files.pythonhosted.org/packages/33/e6/47c4675f0c58398c924915379eee8458bf7954644a7907ad8fbc1c42a380/lxml-4.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229", size = 7674086, upload-time = "2023-12-19T19:02:17.492Z" }, - { url = "https://files.pythonhosted.org/packages/be/9e/5d88b189e91fae65140dc29904946297b3d9cfdf5449d4bc6e657a3ffc2d/lxml-4.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d", size = 8026189, upload-time = "2023-12-19T19:02:58.387Z" }, - { url = "https://files.pythonhosted.org/packages/ea/08/ab6c2a803a5d5dce1fbbb32f5c133bbd0ebfe69476ab1eb5ffa3490b0b51/lxml-4.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20", size = 7516933, upload-time = "2023-12-19T19:03:41.465Z" }, - { url = "https://files.pythonhosted.org/packages/43/52/b0d387577620af767c73b8b20f28986e5aad70b44053ee296f8a472a12b1/lxml-4.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10", size = 7815609, upload-time = "2023-12-19T19:04:12.53Z" }, - { url = "https://files.pythonhosted.org/packages/be/13/18230c0d567ed282a3d7b61395323e2ef8fc9ad64096fdd3d1b384fa3e3c/lxml-4.9.4-cp312-cp312-win32.whl", hash = "sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b", size = 3460500, upload-time = "2023-12-21T10:40:00.312Z" }, - { url = "https://files.pythonhosted.org/packages/5f/df/6d15cc415e04724ba4c141051cf43709e09bbcdd9868a6c2e7a7073ef498/lxml-4.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56", size = 3773977, upload-time = "2023-12-19T19:04:34.053Z" }, -] - [[package]] name = "markdown" version = "3.10.1" @@ -299,22 +269,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, ] -[[package]] -name = "mkdocs-drawio-file" -version = "1.5.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "jinja2" }, - { name = "lxml" }, - { name = "mkdocs" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/11/a4/ca9d125d2c19e939a491b74c1bc6242a5500752daa36fe39c29f52b3aaf7/mkdocs_drawio_file-1.5.2.tar.gz", hash = "sha256:e4e3da1bdf26ef2731b445320185ae9e8987c2afabd745419f3cdade462d1e11", size = 2950, upload-time = "2023-02-27T23:52:30.848Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ed/3cd599933acfb38b0f7625327e8b0fa3fa369a190f96a49ffa9028ba9807/mkdocs_drawio_file-1.5.2-py3-none-any.whl", hash = "sha256:0e87c0c6bcb3ad1e40513b4386d250d7166eb613f3a09e44588f7c572ccb6cad", size = 3566, upload-time = "2023-02-27T23:52:29.389Z" }, -] - [[package]] name = "mkdocs-get-deps" version = "0.2.0" @@ -580,24 +534,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] -[[package]] -name = "soupsieve" -version = "2.8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/ae/2d9c981590ed9999a0d91755b47fc74f74de286b0f5cee14c9269041e6c4/soupsieve-2.8.3.tar.gz", hash = "sha256:3267f1eeea4251fb42728b6dfb746edc9acaffc4a45b27e19450b676586e8349", size = 118627, upload-time = "2026-01-20T04:27:02.457Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/2c/1462b1d0a634697ae9e55b3cecdcb64788e8b7d63f54d923fcd0bb140aed/soupsieve-2.8.3-py3-none-any.whl", hash = "sha256:ed64f2ba4eebeab06cc4962affce381647455978ffc1e36bb79a545b91f45a95", size = 37016, upload-time = "2026-01-20T04:27:01.012Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, -] - [[package]] name = "urllib3" version = "2.6.3"