PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱MedKit.

MedKit — это Python SDK, который объединяет три разрозненных медицинских API (OpenFDA, PubMed, ClinicalTrials.gov) в единую платформу с «клиническим интеллектом».

❓Что умеет:

🔘Один клиент: med.search("pembrolizumab") сразу ищет препарат, клинические испытания и публикации в PubMed — автоматическая корреляция данных.

🔘Клинический синтез: med.ask("статус препарата X для NSCLC?") даёт сводку с evidence score (0.0–1.0) и топ‑интервенций, агрегируя данные из всех источников.

🔘Knowledge graph: визуализация связей между препаратами, испытаниями и исследованиями, обнаружение drug‑drug interactions.

🔘Устойчивость (v3.0): circuit breakers, exponential backoff с jitter, rate limiting, автоматический curl‑фоллбэк для обхода блокировок ClinicalTrials.gov.

Установка:

pip install medkit-sdk


#python #medical #healthcare #opendata #api #medkit #bioinformatics

📱Ссылка на репозиторий:
https://github.com/interestng/medkit
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2⚡1
📱Usdatasets.

usdatasets — это Python‑пакет с коллекцией готовых датасетов по США: преступность, экономика, образование, здравоохранение, спорт, выборы, зарплаты, смертность и др.

❓Что внутри:

🔘Экономика: wages_by_education (зарплаты по образованию, 1973–2022), google_stock_price, per capita income по округам.

🔘Преступность: crime_and_incarceration_by_state, us_crime_rates.

🔘Другое: выборы, смертность, пожары, терроризм, NFL‑статистика, иммиграция.

🔻Использование:

import usdatasets as usd

print(usd.list_datasets()) # список всех датасетов
df = usd.load_dataset('crime_and_incarceration_by_state')
print(df.head())


pip install usdatasets


#python #datasets #datascience #usdata #usdatasets

📱Ссылка на репозиторий:
https://github.com/lightbluetitan/usdatasets-py
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2⚡1
📱Python_uv_template.

python_uv_template — это Copier‑шаблон для быстрого старта Python data‑проектов с современным стеком: uv, ruff, ty, Marimo, Polars, DuckDB и автогенерацией документации.

❓Что в коробке:

🔘Инструменты качества: ruff (lint+format), ty (typing), pytest + coverage, pre‑commit hooks.

🔘Data stack: Marimo‑notebooks (реактивные .py), Polars DataFrames, DuckDB для SQL, Seaborn viz.

🔘Документация: MkDocs + Material, mkdocstrings API‑docs, mike для версионирования.

🔘CI/CD: Commitizen для conventional commits, Docker‑контейнеризация, AGENTS.md для AI‑агентов.

🚀Старт:

uvx copier copy https://github.com/mameli/python_template.git .


🔺Обновление проекта под новую версию шаблона: uvx copier update --defaults

#python #uv #copier #datascience #marimo #polars #duckdb #projecttemplate

📱Ссылка на репозиторий:
https://github.com/mameli/python_template
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
📱Nitro-pandas.

nitro-pandas — это pandas‑обёртка поверх Polars: пишете привычный pandas‑код, а под капотом крутится Rust‑движок Polars с 5–10x ускорением.

❓Зачем:

🔘Не переписывать тысячи строк кода: меняете import pandas as pd на import nitro_pandas as npd — всё остальное работает.

🔘Lazy evaluation: read_csv_lazy() + .query() + .collect() оптимизируют запросы до выполнения.

🔘Fallback: если метод ещё не реализован в Polars, автоматически вызывается pandas.

🔻Что не так же:

🔘Polars не разрешает смешанные типы в одном столбце — всё приводится к общему типу.

🔘Нет inplace=True: операции всегда возвращают новый DataFrame.

pip install nitro-pandas


#python #pandas #polars #nitropandas #datascience #performance

📱Ссылка на репозиторий:
https://github.com/Wassim17Labdi/nitro-pandas
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍2
📱OpenRAG.

OpenRAG — это готовая RAG‑платформа (Retrieval‑Augmented Generation) в одном пакете: Langflow для workflow, Docling для парсинга документов, OpenSearch для семантического поиска.

❓Что внутри:

🔘Agentic RAG: agent‑оркестрация, re‑ranking, multi‑agent координация + drag‑and‑drop редактор пайплайнов.

🔘Полный цикл: загрузка документов → парсинг (PDF/Word/аудио/изображения) → чат‑интерфейс с LLM.

🔘Деплой: Docker/Podman, enterprise add‑ons для масштаба.

#python #rag #opensearch #langflow #docling #openrag #aiagents

📱Ссылка на репозиторий:
https://github.com/langflow-ai/openrag
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3🔥2
📱Sprint-dash.

sprint-dash — это лёгкий спринт‑дашборд для Gitea на FastAPI + HTMX + SQLite: Kanban‑доска, backlog, burndown, зависимости, Woodpecker CI‑статус — без JS‑фреймворков и билда.

🔹Функции:

🔘Gitea read‑only: метаданные issues из API (кэш 60с), спринты в локальном SQLite.

🔘Drag‑and‑drop Kanban, live‑поиск, эпики, carry‑over незавершённых задач.

🔘CLI sd-cli: sd-cli sprint create 48 --start 2026-03-09 --end 2026-03-23.

🔻Старт:

git clone https://github.com/simoninglis/sprint-dash.git
uv sync
cp .env.example .env # GITEA_URL + token
uv run uvicorn app.main:app --reload


Docker: docker run -p 8080:8080 --env-file .env sprint-dash

#python #gitea #fastapi #htmx #sprint #dashboard #sprintrack

📱Ссылка на репозиторий:
https://github.com/simoninglis/sprint-dash
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍2
📱Cycast.

Cycast — это высокопроизводительный интернет‑радио сервер на Python + Cython (3–5x быстрее обычного Python), совместимый с Icecast: принимает live‑потоки от Mixxx/VLC + fallback на плейлист.

🔹Особенности:

🔘Cython‑оптимизации: zero‑copy circular buffer и multi‑listener broadcaster.

🔘Flask + Tornado: веб‑UI с real‑time обновлениями, REST API для статуса/статистики.

🔘HCL‑конфиг: config.hcl для host/port/password/playlist + metadata (station name/genre).

🚀Старт:

pip install -r requirements.txt
python setup.py build_ext --inplace
# edit config.hcl
python cycast_server.py


#python #cython #streaming #icecast #radio #cycast

📱Ссылка на репозиторий:
https://github.com/LukeB42/Cycast
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍2
📱Django-tasks-db.

django-tasks-db — это backend для Django Tasks (новая фича Django 6.0+), который хранит задачи в БД через ORM вместо Redis/RQ: простой worker ./manage.py db_worker.

🔹Настройка:

INSTALLED_APPS = ["django_tasks_db"]

TASKS = {
"default": {
"BACKEND": "django_tasks_db.DatabaseBackend",
"QUEUES": ["default"]
}
}


🔻Команды:

🔘Worker: manage.py db_worker --reload (DEBUG‑релоад).

🔘Cleanup: manage.py prune_db_task_results (удаляет старые задачи).

✅Идеально для простых проектов без внешних очередей, с приоритетами и `run_after`.

#django #tasks #background #orm #djangotasksdb

📱Ссылка на репозиторий:
https://github.com/RealOrangeOne/django-tasks-db
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡4👍1
📱Slamd.

slamd — это минималистичная GPU‑ускоренная 3D‑визуализация для Python: pip install slamd, 3 строки кода — и у вас интерактивный viewer с point clouds, meshes, camera frustums, transform tree (как ROS TF).

🔹Почему круто:

🔘Нет event loop/callbacks: vis = slamd.Visualizer(); scene.set_object("/robot/cloud", slamd.geom.PointCloud(pts)) — окно само открывается.

🔘Миллионы точек на 30+ FPS (OpenGL), stateful (не лог как Rerun).

🔘Primitives: Triad, Arrows, Spheres, Planes, Frustum с изображением.

🔻Пример:

import slamd
vis = slamd.Visualizer("My Scene")
scene = vis.scene("main")
scene.set_object("/triad", slamd.geom.Triad())


#python #3d #visualization #slam #robotics #opengl #slamd

📱Ссылка на репозиторий:
https://github.com/Robertleoj/slamd
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3⚡2👍1
📱Voicetag.

voicetag — Python‑библиотека для speaker diarization + named identification: кто говорил и когда в аудио (подкасты, митинги, звонки) — pyannote + resemblyzer в 3 строки кода.

🔹Фичи:

🔘vt.enroll("Alice", ["a1.flac"]); result = vt.identify("meeting.flac") — timeline с confidence + overlap detection.

🔘Транскрипция: vt.transcribe("audio.flac", provider="whisper") — кто что сказал (OpenAI/Groq/Deepgram/Whisper).

🔘CLI: voicetag enroll Alice *.flac; voicetag identify meeting.flac + profiles JSON.

🔻Старт:

pip install voicetag[whisper]  # + HF token для pyannote


GPU: device="cuda" или MPS. Language agnostic (EN/HE/ZH).

#python #speech #diarization #voicetag #pyannote #transcription

📱Ссылка на репозиторий:
https://github.com/Gr122lyBr/voicetag
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍3⚡1
📱TurboAPI.

TurboAPI — быстрая замена FastAPI: Zig‑сервер ускоряет API в 10–14 раз (140k запросов/с без кэша), меняешь 1 строку импорта — код работает как раньше.

🔹Особенности:

🔘Полная совместимость: роуты, Depends, OAuth2, модели (dhi вместо pydantic).

🔘Zero‑copy ответы, Zig‑валидация JSON до Python (экономия GIL).

🔘HTTP+БД: 70–260k rps vs FastAPI 3–9k.

🔘Кэш ответов/БД, async handlers, Native FFI (C/Zig без Python).

🔻**Старт:*

from turboapi import TurboAPI as FastAPI
app = TurboAPI()
@app.get("/") def hi(): return {"ok": True}
app.run()


#python #FastAPI #API #Zig #TurboAPI

📱Ссылка на репозиторий:
https://github.com/justrach/turboAPI
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍3⚡1
📱Mypyc.

mypyc — компилятор Python в C‑расширения: пишешь обычный код с type hints (mypy), получаешь 2–4x ускорение без Cython‑синтаксиса.

🔹Особенности:

🔘Компиляция модулей/проектов: mypy сам себя ускорил в 4x.

🔘Полная типизация: generics, unions, Optional — inference без аннотаций.

🔘Runtime checks + AOT — быстрый старт, работает как Python.

🔘Стдлиб/third‑party libs — всё ок, IDE/myPy совместимо.

🚀Старт:
pip install mypy mypyc  # В mypy repo
mypycify compile module.py # → module.cpython‑*.so


#python #mypyc #performance #types #compile

📱Ссылка на репозиторий:
https://github.com/mypyc/mypyc
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥22
Pristan.

📱Pristan — это библиотека для построения плагинных систем в Python, где плагины “подцепляются” к хост‑коду автоматически, а сам хост вообще не знает о конкретных реализациях.

Декорируете функцию как слот через @slot, а плагины объявляете как @some_slot.plugin — при вызове слота фактически вызываются все подключённые плагины, а результат агрегируется в list или dict в зависимости от аннотации типов.

🔹Ключевые особенности:

🔘Максимальная простота: объявил функцию и вызываешь её как обычно, плагины прозрачно расширяют или заменяют поведение.

🔘Pythonic‑подход: декораторы + аннотации типов определяют и контракт, и способ агрегации результатов.

🔘Type safety: проверки совместимости сигнатур слота и плагинов на основе sigmatch, плюс проверка типов возвращаемых значений через simtypes.

🔘Авто‑обнаружение: плагины находятся через entry points в pyproject.toml, достаточно указать модуль в секции [project.entry-points.pristan] или в своём namespace.

🔘Slot как коллекция: можно смотреть установленные плагины, обращаться к ним по имени (slot['name']()), считать их количество, ограничивать max, требовать уникальные имена или однократный вызов плагина (run_once).

✅Если вы пишете расширяемую библиотеку и хотите простую, типобезопасную плагинную систему без собственного фреймворка — pristan как раз для этого.

#python #plugins #pristan #pyproject #entrypoints #typing #decorators #opensource

📱Ссылка на репозиторий:
https://github.com/mutating/pristan
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍2⚡1
📱Rsloop.

rsloop — это альтернативный event loop для asyncio, написанный на Rust через PyO3.

Каждый rsloop.Loop держит выделенный Rust‑поток для координации цикла и I/O, при этом ваши Python‑корутины продолжают выполняться в том же потоке, откуда вы вызываете run_forever() / run_until_complete() (обычно main‑поток).

🔧Установка:
pip install rsloop
# или
uv add rsloop


🚀Быстрый старт:
import rsloop

async def main():
...

rsloop.run(main())


Или вручную:

import asyncio, rsloop

loop = rsloop.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(...)
finally:
asyncio.set_event_loop(None)
loop.close()


🔹Основные особенности:

🔘Отдельный Rust runtime‑поток: координация цикла и I/O (на Linux — через compio с io_uring), Python‑колбэки и таски остаются на Python‑потоке.

🔘Полноценная реализация core‑поверхности asyncio: жизненный цикл лупа, задачи, future, run_in_executor, TCP/Unix сокеты, пайпы, сабпроцессы, сигналы, Windows‑пайпы и subprocess‑workflow.

🔘Fast Streams: импорт rsloop патчит asyncio.open_connection() и asyncio.start_server() для использования нативных быстрых стримов, когда запущен rsloop.Loop и не используется TLS; поведение можно отключить через RSLOOP_USE_FAST_STREAMS=0.

🔘Профилирование через Tracy: with rsloop.profile(): rsloop.run(main()) или ручное start_profiler()/stop_profiler() при сборке с фичей profiler.

🔘Производительность: в бенчмарках callbacks/tcp‑streams rsloop сопоставим или быстрее stdlib asyncio и близок к uvloop, иногда чуть медленнее по задачам, но выигрывает по p99‑латентности в реальных API‑нагрузках.

#python #asyncio #rust #rsloop #eventloop #io_uring #fastapi #uvloop #PyO3 #profiling

📱Ссылка на репозиторий:
https://github.com/RustedBytes/rsloop
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍3
📱Pywho.

Pywho — удобный CLI‑инспектор для Python‑окружения: одной командой показывает, какой интерпретатор и venv запущены, куда смотрит sys.path, куда реально резолвятся импорты.

🔹Основные возможности:

🔘Инспекция окружения

pywho выводит интерпретатор (путь, версия, архитектура), активный venv (тип: venv/virtualenv/uv/conda/poetry/pipenv и т.п.), пути site-packages, менеджер пакетов (pip/uv/conda/poetry/pipenv/pyenv) и полный sys.path.

Есть режим pywho --json и pywho --packages (список установленных пакетов с версиями и путями) для CI/issue‑репортов.

🔘Трассировка импортов

pywho trace <module> показывает, из какого файла реально грузится модуль, его тип (stdlib/third-party/local), кэширован ли он и какой порядок поиска по sys.path был использован.

- Поиск шадоу‑модулей по проекту
pywho scan . проходит дерево проекта и находит файлы, которые шадовят модули stdlib или установленные пакеты, с градацией по важности: HIGH (stdlib), MEDIUM (third-party).

Стандартные мусорные директории вроде .venv, __pycache__, node_modules, dist, build, .git автоматически игнорируются.

🔘Python API

Можно использовать как библиотеку:

- inspect_environment() — объект с инфой про интерпретатор, venv, менеджер пакетов, пути, плюс to_dict() для JSON.

- trace_import("name") — программный аналог pywho trace с полями resolved_path, module_type, is_cached, shadows.

- scan_path(Path(".")) — результаты сканирования на шадоу с уровнем серьёзности.

🔘Интеграция в рабочие процессы

- “Works on my machine” debug: попросить пользователя выполнить pywho --json --packages и приложить результат к issue или в чат.

- Онбординг: pywho для быстрой проверки, что окружение настроено как надо.

- CI: pywho --json --packages > env.json как снимок окружения сборки.

✅Если резюмировать, pywho — это удобный “однокнопочный” отчёт по окружению + инструменты для объяснения, какой именно Python вы запускаете, почему `import X` подхватил тот самый файл и где у вас лежит опасный `json.py` рядом с проектом.

#python #pywho #debugging #virtualenv #asyncio #packagemanagement #devtools #cli #stdlib #import #shadowing

📱Ссылка на репозиторий:
https://github.com/AhsanSheraz/pywho
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥32👍1
📱Docking.

Docking — лёгкий, но очень функциональный док для Linux на Python (GTK 3 + Cairo), вдохновлённый Plank и Cairo‑Dock, но с современной архитектурой и системой апплетов.

🔹Из коробки:

🔘Быстрый лаунчер с индикаторами запущенных приложений, превью окон и drag‑and‑drop‑организацией.

🔘38 встроенных апплетов (часы, погода, сеть, батарея, системный монитор, помидоро, уведомления, Pet, музыка, ambient‑звуки, калькулятор, конвертер, заметки, буфер и много другого).

🔘12 тем (от minimal/transparent до nord, gruvbox и solarized) с авто‑масштабированием от icon_size.

🔘Мульти‑монитор, авто‑hide‑режимы, позиция по всем сторонам экрана, тонкая настройка поведения мыши.

🔘Десктоп‑интеграция для GNOME, KDE, Xfce, MATE, Cinnamon и других X11‑окружений.

🔘74 локали (есть русский) и GPL‑3.0‑or‑later.

Установка максимально простая: есть AppImage, .deb, .rpm, Flatpak, Snap, Arch‑пакеты и Nix‑бандлы; для ручной установки — git clone, venv с --system-site-packages и pip install -e ..

✅Если вам не хватает гибкости Plank или тяжеловат Cairo‑Dock — Docking закрывает эту нишу, оставаясь лёгким и при этом расширяемым за счёт своих апплетов и тем.

#linux #docking #dock #python #gtk #cairo #desktop #productivity #customization #applets #opensource

📱Ссылка на репозиторий:
https://github.com/edumucelli/docking
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥21
📱Django Signals.

Django Signals — это мощный механизм, который позволяет разным частям вашего приложения "общаться" друг с другом, автоматически реагируя на различные события (например, сохранение модели или удаление объекта).

Но давайте будем честны: когда проект разрастается, поиск всех отправителей и получателей сигналов превращается в настоящий детектив с дебагом вслепую!

Устали искать концы? Встречайте Django Signals Panel!

Это удобный инструмент, который собирает и выводит все зарегистрированные сигналы Django и их обработчики (receivers) прямо в стандартную панель администратора.

🔹Главные фичи:

🔘Авто-поиск: автоматически находит все сигналы в вашем проекте и установленных приложениях.

🔘Детальная инспекция: показывает имя функции, модуль, путь к файлу, отправителя (sender) и dispatch UID для каждого обработчика.

🔘Просмотр исходного кода: исходники receiver'ов с подсветкой синтаксиса можно читать прямо в админке (включается опционально).

🔘Удобная навигация: быстрый поиск по имени/модулю и фильтрация по приложениям.

🔘Zero migrations: пакет работает исключительно на чтение, ваша база данных не затрагивается вообще!

🔘Полная поддержка встроенной тёмной темы Django.

🚀Быстрый старт:
pip install dj-signals-panel
(Требуется Python 3.9+ и Django 4.2+)

#Django #Python #Backend #WebDev #DjangoAdmin #OpenSource #DevTools #Programming

📱Ссылка на репозиторий:
https://github.com/yassi/dj-signals-panel
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥22
📱OracleTrace.

OracleTrace — это легковесный Python-профайлер, созданный специально для поиска просадок производительности (регрессий), быстрого сравнения трейсов и наглядной визуализации графа вызовов.

Традиционные профилировщики часто бывают перегружены деталями и плохо подходят для простого ответа на вопрос: «А не стал ли мой скрипт работать медленнее после последних правок?». OracleTrace решает именно эту задачу.

🔹Главные фичи:

🔘Поиск регрессий: сравнивайте два JSON-файла с трейсами и моментально находите функции, которые стали работать медленнее, быстрее, или вовсе были удалены/добавлены.

🔘Идеально для CI/CD: инструмент умеет ронять пайплайн, если код замедлился больше заданного порога (флаг --fail-on-regression).

🔘Наглядный граф вызовов: строит визуальное дерево выполнения (кто, кого и сколько раз вызывал).

🔘Умная фильтрация: отсекает внутренние вызовы самого Python, оставляя фокус только на коде вашего проекта. Поддерживает игнор по регуляркам.

🔘Экспорт: результаты можно легко выгрузить в JSON (для автоматизации) или CSV (для отчетов).

❓Как это работает?

Под капотом используется встроенная функция sys.setprofile() для перехвата вызовов (call) и возвратов (return). Инструмент замеряет время выполнения каждой функции и фиксирует связи между ними, не требуя тяжелой инструментации кода.

🚀Быстрый старт:
pip install oracletrace
(Требуется Python 3.10+)

💡 Пример использования:
Сначала сохраняем базовый трейс:
oracletrace my_app.py --json baseline.json

Затем сравниваем с новой версией (например, в CI):
oracletrace my_app.py --json current.json --compare baseline.json --fail-on-regression --threshold 25

#Python #Profiling #Backend #DevTools #CI #OpenSource #Performance #Programming

🔹Ссылка на репозиторий:
https://github.com/KaykCaputo/oracletrace
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3⚡2🔥21
📱Docglow.

Docglow — это генератор документации нового поколения для проектов dbt™ Core, который берет ваши метаданные и превращает их в современное, быстрое и интерактивное SPA-приложение. И самое главное — для этого больше не нужен платный dbt Cloud!

🔹Ключевые фичи, которые меняют правила игры:

🔘Продвинутый Lineage: Интерактивный граф зависимостей, который работает не только для моделей, но и на уровне отдельных колонок (Column-level lineage).

🔘Health Score проекта: Автоматический трекинг "здоровья" данных — оценивает покрытие кода тестами и полноту описаний.

🔘Однофайловый режим: Всю документацию (со стилями, скриптами и данными) можно собрать в один-единственный .html файл. Идеально, чтобы просто скинуть коллегам в Slack!

🔘Встроенный AI-чат: Подключаете свой ключ Anthropic (BYOK) и задаете вопросы по архитектуре данных на человеческом языке прямо в админке доков.

🔘Интеграция с IDE (MCP): Docglow может передавать контекст вашего dbt-проекта в ИИ-ассистенты вроде Cursor, Claude Code или Copilot.

🔘CI/CD Quality Gate: Умеет ронять пайплайн, если качество документации упало ниже заданного порога (флаг --fail-under).

🚀Быстрый старт:

pip install docglow
docglow generate --project-dir /path/to/dbt/project --output-dir ./site
docglow serve --dir ./site


#dbt #DataEngineering #DataAnalytics #Python #DataOps #AnalyticsEngineering #OpenSource #Docglow

📱Ссылка на репозиторий:
https://github.com/docglow/docglow
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡22👍1
📱Linklint.

Linklint — это полезное расширение для Sphinx и консольный линтер, который очищает вашу Python-документацию от избыточных и отвлекающих ссылок.

Когда документация разрастается, в .rst файлах часто скапливается визуальный шум: ссылки, ведущие сами на себя, или десятки одинаковых ссылок в одном абзаце. Linklint решает эту проблему элегантно и без лишних усилий.

🔹Главные фичи (проверки):

🔘self: находит ссылки, которые ведут на свой же раздел. Например, если в описании класса вы используете :class: для ссылки на этот же класс, инструмент сделает её обычным текстом, так как она никуда вас не уведет.

🔘paradup: ищет дублирующиеся ссылки внутри одного абзаца. Первая ссылка остается активной, а все последующие отключаются, чтобы не отвлекать читателя.

⚙️Два режима работы:

🔘Расширение Sphinx: Идеальный вариант. Просто добавьте "linklint.ext" в ваш conf.py. Инструмент очистит лишние ссылки на этапе сборки документации, вообще не изменяя ваши исходные файлы.

🔘CLI-линтер: Можно запустить в терминале (например, linklint --fix files...), чтобы он нашел избыточные вызовы и жестко зафиксировал изменения прямо в коде, добавив восклицательный знак (превратив :func:foo в :func:!foo).

💡Интересный факт: Инструмент активно развивается (последняя версия 0.4.1 вышла в марте 2026 года и поддерживает Sphinx 8.x/9.x). При прогоне через документацию самого CPython, Linklint автоматически убрал более 3600 лишних ссылок!

#Python #Sphinx #Documentation #DevTools #OpenSource #Linklint

📱Ссылка на репозиторий:
https://github.com/nedbat/linklint
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3🔥31