Pytest-leak-finder - это плагин для
pytest, который помогает быстро найти конкретный тест, загрязняющий общее состояние и ломающий последующие тесты в сьюте.Знакома ситуация, когда тест стабильно падает при общем прогоне набора, но проходит без единой ошибки при изолированном запуске (
pytest -v --lf)? Причина почти всегда в том, что один из предыдущих тестов оставил за собой «мусор» (неочищенный стейт, глобальную переменную или незакрытый ресурс). Но как найти виновника, если тестов сотни?Плагин автоматизирует поиск с помощью бинарного поиска (бисекции) — по аналогии с алгоритмом
git bisect:--leak-finder упавший тест автоматически помечается как target.Запуск поиска:
pytest -v --leak-finder demo/test_demo.py
После нескольких быстрых шагов бисекции плагин выдаст точный вердикт:
======================= Leak finder =======================
We found a leak!
Leak found in: tests/test_demo.py::test3
#Python #Pytest #Testing #QA #Automation #Debugging #DevTools #OpenSource
https://github.com/mgaitan/pytest-leak-finder
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - mgaitan/pytest-leak-finder: Find the test that's leaking before the one that fails
Find the test that's leaking before the one that fails - mgaitan/pytest-leak-finder
1⚡2🔥2 1
Num2words library - это библиотека для Python и удобная консольная утилита, которая переводит числа в слова (прописью) на десятках языков мира.
Она превращает числа вроде
42 в текст вида «сорок два» или «forty-two», умеет формировать порядковые числительные и корректно форматировать денежные суммы для финансовых отчетов или документов.ru), английский (en), испанский (es), французский (fr), немецкий (de), казахский (kz), украинский (uk) и многие другие, в том числе региональные диалекты.to):cardinal (по умолчанию) — обычные количественные числительные («сорок два»).ordinal — порядковые числительные («сорок второй»).currency — денежные суммы с указанием валюты и разменных монет («два евро четырнадцать центов»).year — проговаривание годов («девятнадцать восемьдесят четыре»).В коде Python:
from num2words import num2words
# Обычное число на русском языке
print(num2words(42, lang='ru'))
# -> "сорок два"
# Порядковое числительное
print(num2words(42, to='ordinal', lang='ru'))
# -> "сорок второй"
# На французском
print(num2words(42, lang='fr'))
# -> "quarante-deux"
В командной строке (CLI):
# Базовый вызов
num2words 10001
# -> ten thousand and one
# Денежный формат на испанском
num2words 2.14 -l es --to currency
# -> dos euros con catorce céntimos
pip install num2words
#Python #Num2words #Localization #NLP #DevTools #OpenSource #CLI #Backend #Программирование
https://github.com/savoirfairelinux/num2words
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - savoirfairelinux/num2words: Modules to convert numbers to words. 42 --> forty-two
Modules to convert numbers to words. 42 --> forty-two - savoirfairelinux/num2words
1🔥3 1
Pyrig - это пакет и CLI-инструмент, который стандартизирует и автоматизирует создание, настройку, разработку и поддержку Python-проектов под ключ.
В отличие от простых генераторов шаблонов (cookiecutter, copier, pyscaffold),
pyrig не просто создает структуру папок, но и берет на себя управление конфигурацией, генерацию CLI, тестовую инфраструктуру и настройку CI/CD.pyrig init разворачивает проект со стандартизированной структурой, полностью настроенными линтерами, форматтерами, тайп-чекерами, фреймворками для тестирования и Git-хуками.pyrig можно переопределить через наследование (pyrig mk subcls). Команда pyrig sync синхронизирует и обновляет все конфиги разом.pyrig mk cmd <name>.pyrig sync автоматически создает заготовки тестов для всех исходных модулей и актуализирует их по мере развития кодовой базы.Для работы требуются Python 3.12+, Git и пакетный менеджер uv:
# 1. Создаем проект
uv init my-project --python 3.12
cd my-project
# 2. Добавляем pyrig в dev-зависимости
uv add pyrig --dev
# 3. Инициализируем окружение
uv run pyrig init
После инициализации готовый CLI вашего проекта можно проверить командой
my-project --help.#Python #Pyrig #uv #DevTools #Automation #CICD #Testing #GitHubActions #OpenSource #Scaffolding
https://github.com/Winipedia/pyrig
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Winipedia/pyrig: A tool that standardizes and automates Python project setup, configuration, development, and maintenance.
A tool that standardizes and automates Python project setup, configuration, development, and maintenance. - Winipedia/pyrig
3⚡2🔥2 1
CogDB - это встраиваемая (embedded) персистентная графовая база данных для Python, работающая прямо внутри процесса вашего приложения без необходимости поднимать отдельный сервер.
Вся база хранится локально на диске, не требует сложной инфраструктуры и легко запускается как в обычных бэкенд-скриптах, так и в интерактивных блокнотах Jupyter или Google Colab.
alice → follows → bob), что дает выразительность графа при простоте key-value хранилища.g.v("alice").out("follows").all().g.v().out().show() на лету генерирует интерактивный 2D-граф прямо в браузере или ячейке блокнота.putj), загружать CSV-таблицы и читать RDF-дампы в формате N-Triples.g.serve(port=8080) и опрашивать удаленно из другого микросервиса.from cog.torque import Graph
# Создаем персистентный граф
g = Graph("social")
# Добавляем связи и свойства
g.put("alice", "follows", "bob")
g.put("bob", "follows", "charlie")
g.put("bob", "status", "active")
# Графовые запросы:
# Кто подписан на тех, на кого подписана Алиса?
result = g.v("alice").out("follows").out("follows").all()
print(result)
# -> {'result': [{'id': 'charlie'}]}
# Поиск с фильтрацией по свойствам
active_users = g.v().has("status", "active").all()
pip install cogdb
#Python #CogDB #GraphDatabase #NoSQL #Embeddings #DataScience #Jupyter #OpenSource #DevTools #Database
https://github.com/arun1729/cog
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - arun1729/cog: Embedded Graph Database for Python. Lives inside your Python process. Quick setup. No server. Runs in notebooks…
Embedded Graph Database for Python. Lives inside your Python process. Quick setup. No server. Runs in notebooks, apps, even your browser. - arun1729/cog
3⚡2🔥2 1
OpenFlight - это открытый проект для создания собственного гольф-монитора (launch monitor) на базе доплеровского радара OPS243-A и микрокомпьютера Raspberry Pi.
В то время как профессиональные коммерческие трекеры ударов (вроде TrackMan или FlightScope) стоят тысячи долларов, OpenFlight предлагает собрать точный измерительный комплекс своими руками с бюджетом от ~$400 (базовая конфигурация) до ~$550 (с дополнительным радаром угла вылета).
[http://openflight.local:8080/display](http://openflight.local:8080/display)).--swing-speed для холостых махов и тренировочных утяжелителей (speed sticks) без необходимости бить по реальному мячу.from openflight.rolling_buffer import RollingBufferMonitor
monitor = RollingBufferMonitor()
monitor.connect()
monitor.start()
print("Готов к удару...")
shot = monitor.wait_for_shot(timeout=60)
if shot:
print(f"Скорость мяча: {shot.ball_speed_mph:.1f} mph")
print(f"Расчетная дистанция: {shot.estimated_carry_yards:.0f} yards")
monitor.stop()
monitor.disconnect()
#OpenFlight #Golf #RaspberryPi #DopplerRadar #Hardware #DIY #Python #OpenSource #DevTools #SportsTech
https://github.com/jewbetcha/openflight
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - open-flight/openflight
Contribute to open-flight/openflight development by creating an account on GitHub.
3🔥4👍1 1
PySuricata - это быстрый и легковесный инструмент для исследовательского анализа данных (EDA) на Python, построенный на потоковых алгоритмах.
Главная проблема большинства инструментов профилирования данных — они требуют загрузки всего датасета в оперативную память и выполняют множество тяжелых прогонов. PySuricata считывает данные всего за один проход (single pass), сохраняя фиксированный расход RAM независимо от количества строк в таблице.
pandas, polars (включая LazyFrame), файлами Parquet, Arrow IPC (.arrow, .feather) и запросами DuckDB без промежуточной материализации всего фрейма.summarize() — отдает чистый версионированный JSON со метриками;compare() — рассчитывает смещение признаков между двумя выборками;pysuricata check / официальный GitHub Action — блокирует пайплайн (exit code $\ne 0$), если превышен процент пропусков или обнаружен дрейф данных.import pandas as pd
from pysuricata import profile
df = pd.read_csv("large_dataset.csv")
# Анализируем данные и сохраняем автономный отчет
profile(df).save_html("report.html")
Анализ файлов напрямую (без загрузки в DataFrame):
from pysuricata import profile
# Потоковое чтение Parquet-файла без перегрузки RAM
report = profile("data/events.parquet")
report.save_html("events_report.html")
pip install pysuricata
# или через uv:
uv add pysuricata
#Python #PySuricata #DataScience #EDA #Pandas #Polars #DuckDB #DataEngineering #MachineLearning #OpenSource #DevTools
https://github.com/alvarodiez20/pysuricata
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - alvarodiez20/pysuricata: Single-pass exploratory data analysis on streaming algorithms. Bounded memory at any dataset…
Single-pass exploratory data analysis on streaming algorithms. Bounded memory at any dataset size, pandas and Polars, self-contained HTML reports. - alvarodiez20/pysuricata
3🔥3👍2 1
Apkfile - это мощная Python-библиотека и удобный CLI-инструмент для чтения метаданных, глубокого аудита безопасности и установки Android-приложений любых форматов (.apk, .apkm, .xapk, .apks, .apkv).
Библиотека парсит
AndroidManifest.xml и resources.arsc напрямую через чистый Python (на базе androguard). Чтение метаданных происходит «лениво» прямо из байтов архива без распаковки на диск, а для работы больше не требуется утилита aapt..apk, сплиты и бандлы (.apkm, .xapk, .apks), а также формат .apkv (включая зашифрованные архивы).adaptive/anydpi/nodpi).debug_signed)./sdcard/Android/obb/), проверяет совместимость ABI и умеет сразу запускать указанную Activity.В коде Python:
from apkfile import ApkFile
apk = ApkFile("app.apk")
# Базовая информация
print(apk.package_name, apk.version_name, apk.version_code)
# Безопасность и компоненты
print("Опасные разрешения:", apk.security.dangerous_permissions)
print("Незащищенный экспорт:", apk.security.unprotected_exported_components)
# Сравнение двух версий приложения
old_apk, new_apk = ApkFile("v1.apk"), ApkFile("v2.apk")
diff = old_apk.diff(new_apk)
print("Добавленные права:", diff.permissions_added)
# Установка через ADB с последующим запуском
apk.install(upgrade=True, launch=True)
Через командную строку (CLI):
# Получить полную JSON-сводку о приложении
apkfile info app.apk --full
# Сравнить две версии APK
apkfile diff old.apk new.apk
# Установить и сразу запустить на устройстве
apkfile install app.xapk --launch
pip install -U apkfile
# или через uv:
uv add apkfile
#Python #Android #APK #MobileSecurity #AppSec #QA #Automation #DevTools #OpenSource #ADB
https://github.com/david-lev/apkfile
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - david-lev/apkfile: ⛏️ Python library for reading Android .apk/.apkm/.xapk/.apks/.apkv metadata and installing/uninstalling…
⛏️ Python library for reading Android .apk/.apkm/.xapk/.apks/.apkv metadata and installing/uninstalling over adb - david-lev/apkfile
3🔥3 3
Pentestkit - это мультиагентный фреймворк для автоматизированного проведения тестов на проникновение (пентестов) и решения CTF-задач, построенный на базе Claude Agent SDK.
Фреймворк объединяет команду специализированных ИИ-агентов, которые под управлением оркестратора исследуют цель, находят потенциальные уязвимости, подтверждают их реальным воспроизведением (PoC), оценивают критичность по стандарту CVSS v3.1 и формируют готовый клиентский отчет.
report.md с описанием шагов воспроизведения.evidence/), а также полный аудит каждого шага в context.json.kimi-k3 через API Moonshot, а также поддерживает всю линейку Claude (Anthropic).# Проверка правил области видимости (Scope Guard)
python pentest.py check --engagement engagements/example.yaml --url http://127.0.0.1:3000/api
# Запуск полного аудита с интерактивным подтверждением авторизации
python pentest.py run --engagement engagements/example.yaml
# Запуск консоли мониторинга (Fleet, Benchmarks, Traces)
python pentest.py console --port 8500
⚠️ Важно: Инструмент предназначен исключительно для аудита систем и инфраструктуры, на тестирование которых получено официальное разрешение владельца.
#Pentestkit #CyberSecurity #AppSec #Pentest #InfoSec #AIAgents #Claude #Python #OpenSource #DevSecOps #CTF
https://github.com/lordx64/pentestkit
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - lordx64/pentestkit: Autonomous multi-agent pentest framework — plans, exploits, verifies (proof-required), CVSS-scores…
Autonomous multi-agent pentest framework — plans, exploits, verifies (proof-required), CVSS-scores and writes client-ready reports. 104/104 (100%) on the XBOW validation benchmarks, powered by Kimi...
⚡3 2🔥1
Matchify - это CLI-утилита, которая автоматически преобразует длинные цепочки
if/elif/else в современные конструкции match/case (сопоставление с образцом, появившееся в Python 3.10+), сохраняя логику работы и исходное форматирование кода.Инструмент построен на базе LibCST, благодаря чему не ломает существующие отступы, комментарии и стиль оформления кодовой базы.
x == 1, x == 2) и идентичности (x is None).isinstance(p, Point) and p.x == 5 в элегантный case Point(x=5):.len(x) == 2 and x[0] == 0) на распаковку case 0, _:.--safe) утилита переписывает код только тогда, когда семантика гарантированно сохраняется. Для спорных случаев есть флаги явных допущений (--assume pure-subjects, --assume identity-equality и др.).--check) и готовые хуки для pre-commit.До:
if isinstance(node, Point) and node.x == 5:
print("x is 5")
elif isinstance(node, Point):
print("other point")
После обработки Matchify:
match node:
case Point(x=5):
print("x is 5")
case Point():
print("other point")
Запуск на проекте без предварительной установки:
uvx matchify path/to/project/
Или установка в качестве постоянной CLI-утилиты:
uv tool install matchify
# Проверить проект без записи изменений
matchify path/to/project/ --check
#Python #Matchify #PatternMatching #Refactoring #DevTools #LibCST #CleanCode #OpenSource #Programming
https://github.com/15r10nk/matchify
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - 15r10nk/matchify: converts if-else code to match statements
converts if-else code to match statements. Contribute to 15r10nk/matchify development by creating an account on GitHub.
Tortoise ORM - это простая и производительная асинхронная ORM (Object-Relational Mapper) для Python 3.10+, созданная под сильным вдохновением от Django ORM.
Библиотека разработана специально для
asyncio и сочетает привычный, выразительный синтаксис моделей Django с нативной асинхронностью, избавляя от бойлерплейта и необходимости писать «сырые» SQL-запросы в асинхронных микросервисах.async/await) без блокировки event loop.Model, строгая типизация полей (fields), поддержка связей ForeignKeyField / ManyToManyField и удобный QuerySet (filter, annotate, prefetch_related).asyncpg, psycopg)asyncmy, aiomysql)aiosqlite)asyncodbc)tortoise makemigrations, tortoise migrate, tortoise sqlmigrate) для автоматического отслеживания изменений схем и генерации миграций.1. Определение моделей:
from tortoise import fields
from tortoise.models import Model
class Tournament(Model):
id = fields.IntField(primary_key=True)
name = fields.CharField(max_length=50)
class Event(Model):
id = fields.BigIntField(primary_key=True)
name = fields.TextField()
tournament = fields.ForeignKeyField('models.Tournament', related_name='events')
2. Инициализация и работа с данными:
import asyncio
from tortoise import Tortoise
async def main():
# Подключение к БД
await Tortoise.init(
db_url='sqlite://db.sqlite3',
modules={'models': ['__main__']}
)
# Генерация таблиц (для dev-режима)
await Tortoise.generate_schemas()
# Создание записей
tournament = await Tournament.create(name='Cyber Cup 2026')
await Event.create(name='Final Match', tournament=tournament)
# Выборка с подгрузкой связанных связей
events = await Event.filter(tournament=tournament).prefetch_related('tournament')
for event in events:
print(f"Событие: {event.name}, Турнир: {event.tournament.name}")
await Tortoise.close_connections()
asyncio.run(main())
# Базовая версия (SQLite):
pip install tortoise-orm
# С драйвером для PostgreSQL:
pip install "tortoise-orm[asyncpg]"
# С драйвером для MySQL:
pip install "tortoise-orm[asyncmy]"
#Python #TortoiseORM #ORM #AsyncIO #FastAPI #PostgreSQL #MySQL #Database #Backend #DevTools #OpenSource
https://github.com/tortoise/tortoise-orm
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - tortoise/tortoise-orm: Familiar asyncio ORM for python, built with relations in mind
Familiar asyncio ORM for python, built with relations in mind - tortoise/tortoise-orm
Arid - это сверхбыстрый инструмент для поиска дублирующегося кода в Python-проектах, написанный на Rust.
Проект создан как узкоспециализированная замена анализатору дубликатов из Pylint (правило
R0801 / утилита symilar). Arid не пытается быть еще одним универсальным линтером, а идеально дополняет Ruff: пока Ruff форматирует и линтит код, Arid берет на себя строгий контроль принципа DRY (Don't Repeat Yourself).jscpd, Arid парсит синтаксис языка и поддерживает умную нормализацию. При поиске дубликатов можно исключать комментарии, докстринги, блоки импортов и сигнатуры функций.--write-baseline arid-baseline.json). В CI проверяются только новые дубликаты, не ломая сборки на старом коде.# arid: disable / # arid: enable. Опция --suppression-status --fail-on-stale отслеживает и требует удалять комментарии подавления, если код вокруг изменился и дубликата больше нет.pre-commit (анализирует весь проект целиком, а не только staged-файлы) и конфигурация через секцию [tool.arid] в pyproject.toml.Установка:
# Через uv (изолированно):
uv tool install arid
# Или через pip:
pip install arid
Использование в связке с Ruff:
ruff check .
arid .
Пример конфигурации в
pyproject.toml:Ini, TOML
[tool.arid]
min-lines = 5
ignore-comments = true
ignore-docstrings = true
ignore-imports = true
ignore-signatures = true
exclude = ["generated/**", "vendor/**"]
#Python #Rust #Arid #Ruff #Pylint #DRY #CodeQuality #CleanCode #DevTools #OpenSource #CICD
https://github.com/sponge-b0b/arid
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - sponge-b0b/arid: Fast Python duplicate-code checker written in Rust. A focused replacement for Pylint R0801 that complements…
Fast Python duplicate-code checker written in Rust. A focused replacement for Pylint R0801 that complements Ruff. - sponge-b0b/arid
Pydantic Pint - это библиотека для Python, объединяющая возможности валидации данных из Pydantic с библиотекой для работы с физическими величинами и единицами измерения.
Если ваш проект связан с инженерией, научными вычислениями, геоданными или физикой, вам наверняка знакома проблема: Pydantic отлично проверяет типы и структуры, а Pint берет на себя математику над размерными величинами (метры, килограммы, секунды, градусы). По умолчанию они несовместимы, и разработчикам приходится писать кастомные сериализаторы.
pydantic-pint устраняет этот разрыв с помощью чистого синтаксиса typing.Annotated.PydanticPintQuantity("unit").km), а на вход передали строку "12 meters", библиотека проверит размерность и сама пересчитает значение в 0.012 kilometer. Ошибочные размерности (например, попытка передать секунды вместо метров) приведут к ошибке валидации.model_dump() и model_dump_json()).pydantic.BaseModel.from typing import Annotated
from pydantic import BaseModel
from pydantic_pint import PydanticPintQuantity
from pint import Quantity
class Coordinates(BaseModel):
latitude: Annotated[Quantity, PydanticPintQuantity("deg")]
longitude: Annotated[Quantity, PydanticPintQuantity("deg")]
# Поле ожидает километры:
altitude: Annotated[Quantity, PydanticPintQuantity("km")]
# Передаем высоту в метрах — библиотека сконвертирует её сама:
coord = Coordinates(
latitude="39.905705 deg",
longitude="-75.166519 deg",
altitude="12 meters",
)
print(coord.altitude)
# -> <Quantity(0.012, 'kilometer')>
# Сериализация в JSON
print(coord.model_dump_json())
# -> {"latitude":"39.905705 degree","longitude":"-75.166519 degree","altitude":"0.012 kilometer"}
pip install pydantic-pint
#Python #Pydantic #Pint #DataValidation #DataScience #Physics #Engineering #Backend #OpenSource #DevTools
https://github.com/tylerh111/pydantic-pint
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - tylerh111/pydantic-pint: Pydantic Pint Quantities
Pydantic Pint Quantities. Contribute to tylerh111/pydantic-pint development by creating an account on GitHub.
👍4 2🔥1
Vcrpy - это библиотека для Python (порт популярного инструмента VCR из экосистемы Ruby), которая упрощает и многократно ускоряет тестирование кода, завязанного на сетевые HTTP-запросы.
Вместо того чтобы вручную мокать каждый эндпоинт сторонних API, VCR.py использует концепцию «кассет» (cassettes): при первом запуске теста библиотека перехватывает реальные HTTP-запросы и сериализует их вместе с ответами в локальный YAML-файл. При последующих прогонах реальные сетевые вызовы больше не происходят — VCR.py мгновенно воспроизводит сохраненные ответы из файла.
С использованием контекстного менеджера:
import urllib.request
import vcr
# Запросы внутри блока запишутся в файл cassettes/example.yaml
with vcr.use_cassette('cassettes/example.yaml'):
response = urllib.request.urlopen('http://httpbin.org/get').read()
assert b'origin' in response
В виде декоратора:
import vcr
import requests
@vcr.use_cassette('cassettes/users.yaml')
def test_users_api():
response = requests.get('https://api.example.com/users')
assert response.status_code == 200
assert len(response.json()) > 0
Совет для Pytest: Для максимально удобной работы в связке с pytest существует официальный плагин pytest-recording, позволяющий использовать маркер
@pytest.mark.vcr и флаги --record-mode .
pip install vcrpy
#Python #Testing #QA #Pytest #VCR #VCRpy #Mocking #API #DevTools #OpenSource #Backend
https://github.com/kevin1024/vcrpy
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - kevin1024/vcrpy: Automatically mock your HTTP interactions to simplify and speed up testing
Automatically mock your HTTP interactions to simplify and speed up testing - kevin1024/vcrpy
Tech-OA-Interview-Questions - это открытая база актуальных задач с технических онлайн-ассессментов (Online Assessment, OA) и собеседований в ведущие IT-компании (FAANG, финтех-фонды, стартапы и бигтех).
Проект собирается и поддерживается комьюнити, чтобы избавить кандидатов от бесконечного поиска сливов и свежих репортов по всему интернету.
#интервью #собеседование #алгоритмы #leetcode #systemdesign #itкарьера #faang #разработка
https://github.com/perixtar/Tech-OA-Interview-Questions
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - perixtar/Tech-OA-Interview-Questions: Daily updated list of Tech Company OAs and Interview Problems. Save your time from…
Daily updated list of Tech Company OAs and Interview Problems. Save your time from finding them all over the internet. - perixtar/Tech-OA-Interview-Questions
Linecast - это набор интерактивных CLI-приложений для терминала, превращающий открытые гео- и астрономические данные в стильные консольные дашборды с поддержкой мыши: от прогноза погоды и фаз Луны до анимированного радара и полноценных карт с навигацией.
Утилита написана на чистом Python, не требует внешних зависимостей (на macOS и Linux), не запрашивает API-ключи и автоматически подстраивает цвета под текущую палитру вашего терминала.
🌦
linecast weather — детальная погода: текущие условия, почасовой прогноз с градиентом светового дня, прогноз на 7 дней, индекс качества воздуха (AQI) и официальные штормовые предупреждения.☀️
linecast sunshine — движение Солнца по небосводу (по аналогии с циферблатом Solar в Apple Watch), расчет долготы дня, годовой календарь инсоляции (--year) и корректная обработка полярных дней и ночей.🌑
linecast moon — отображение видимой части Луны с физически точными тенями, пепельным светом и реальными созвездиями вокруг из каталога Yale Bright Star. Поддерживает прокрутку времени, переключение на обратную сторону Луны и традиционные лунно-солнечные календари (иврит, исламский, восточноазиатские).🌊
linecast tides — графики морских приливов и отливов с отметками пиковых значений и текущего уровня воды по базам NOAA и Open-Meteo.📡
linecast radar — анимированная карта осадков и спутниковые инфракрасные снимки, отрисованные прямо в терминале с помощью символов Брайля.🗺
linecast maps — векторные и рельефные карты, интерактивный 3D-глобус с линией терминатора (день/ночь) и облачностью из космоса, а также поиск адресов и пошаговая прокладка автомобильных, пеших и веломаршрутов.Попробовать в один клик без установки:
uvx linecast weather
Или через скрипт (задействует системный
python3):curl -sL https://raw.githubusercontent.com/ashuttl/linecast/main/get.sh | sh
Установка как постоянной утилиты:
# Через Homebrew
brew install linecast
# Через uv
uv tool install linecast
# Или через pipx
pipx install linecast
Инструмент поддерживает шрифты Nerd Font (
linecast icons nerd), умеет отдавать данные в формате JSON (--json), а также выводить компактную строку для статус-баров tmux, Waybar или Polybar (--oneline).#Python #Linecast #CLI #Terminal #Weather #Maps #OpenSource #Astronomy #Linux #macOS #DevTools
https://github.com/ashuttl/linecast
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - ashuttl/linecast: Weather, tides, the sun, the moon, maps, and a planetarium, in your terminal. The Old Farmer's Almanac…
Weather, tides, the sun, the moon, maps, and a planetarium, in your terminal. The Old Farmer's Almanac meets Minitel. - ashuttl/linecast
👍3🔥2 2
Shed Skin - это экспериментальный транспайлер, который переводит программы на чистом Python 3 с неявной статической типизацией в оптимизированный код на C++.
На выходе инструмент может собирать как автономные исполняемые файлы, так и скомпилированные C++ модули расширения, которые можно импортировать в обычный Python-код в качестве ускоренных библиотек. В отличие от Cython, Shed Skin не требует ручного описания типов в C-стиле — он выводит их автоматически из логики программы.
shedskin build my_script) или в нативный модуль расширения для вызова из стандартного CPython.Shed Skin поддерживает только строго ограниченное подмножество возможностей языка Python:
random, re, math, time), произвольные тяжелые внешние зависимости подключить нельзя.*args / **kwargs).В Linux / macOS:
shedskin build test
./build/test
В Windows:
shedskin build test
build\test.exe
#Python #Cpp #ShedSkin #Transpiler #Compiler #Performance #Optimization #OpenSource #DevTools #Algorithms
https://github.com/shedskin/shedskin
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - shedskin/shedskin: Shed Skin is a restricted-Python-to-C++ transpiler. Read the introduction below to learn about the…
Shed Skin is a restricted-Python-to-C++ transpiler. Read the introduction below to learn about the restrictions. - shedskin/shedskin
🔥3 2⚡1
Mitti - это экспериментальный Python ASGI-фреймворк, объединяющий конкурентное и параллельное выполнение кода под капотом привычной синхронной модели программирования.
Вместо того чтобы заставлять разработчика разбираться с «цветными функциями»,
async/await и нюансами asyncio, Mitti оставляет код приложения обычным синхронным Python. Фреймворк сам берет на себя управление рантаймом: он распределяет вызовы конкурентно на стандартных сборках с GIL и запускает их в настоящем многопоточном параллелизме на free-threaded сборках Python (no-GIL / PEP 703).def), а среда Mitti берет на себя планирование и эффективное исполнение потоков.from mitti import App
app = App()
# Обычная синхронная функция, готовая к параллельному исполнению
@app.get("/users/{user_id}")
def get_user(user_id: int):
return users.get(user_id)
#Python #ASGI #Mitti #NoGIL #FreeThreaded #Concurrency #Multithreading #Backend #WebDevelopment #OpenSource
https://github.com/grandimam/mitti
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - grandimam/mitti: Next-gen ASGI Framework
Next-gen ASGI Framework. Contribute to grandimam/mitti development by creating an account on GitHub.
👍2 2🔥1
Praxist - это автономная исследовательская система («персональная R&D-команда»), автоматизирующая процесс научного поиска и экспериментов.
В отличие от стандартного AutoML, который просто перебирает гиперпараметры в фиксированных рамках, или обычных LLM-промптов, Praxist берет на себя весь исследовательский цикл целиком. Система разворачивает команду параллельных агентов, которые выдвигают конкурирующие гипотезы, модифицируют код, валидируют результаты в изолированных тестах и передают доказанный опыт из поколения в поколение.
$praxist-takeover в Codex берет существующий репозиторий, валидирует метрики и автоматически настраивает тестовый контур).Установка пакета и запуск мастера первоначальной настройки:
pip install "praxist[agents,codex]"
praxist setup --interactive --install-skills codex
Запуск задачи через Codex в корне готового проекта:
$praxist-takeover
Optimize <целевая метрика и направление> while preserving <ограничения>.
Use 4 peers for up to 5 generations within $50 budget.
Мониторинг и управление активными исследованиями:
# Просмотр статуса в реальном времени
praxist --monitor --latest
# Остановка или возобновление задачи
praxist stop <run_id>
praxist resume <run_dir>
#Praxist #AIAgents #MachineLearning #Research #Codex #AutoML #Python #DataScience #OpenSource #DevTools #Algorithms
https://github.com/sapientinc/PRAXIST
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - sapientinc/PRAXIST: Autonomous research system for measurable, computer-executable research.
Autonomous research system for measurable, computer-executable research. - sapientinc/PRAXIST
👍3 3⚡2
SGLang - это высокопроизводительный движок и фреймворк для инференса и развертывания больших языковых (LLM) и мультимодальных моделей (VLM), разработанный сообществом LMSYS.
Проект оптимизирован как для запуска моделей на одиночных потребительских видеокартах, так и для масштабирования на гигантские серверные кластеры. SGLang стал де-факто индустриальным стандартом для инференса MoE-архитектур (включая модели линейки DeepSeek) и генерации роллаутов (rollout engine) на этапе обучения с подкреплением (RL).
verl, Miles, AReaL, slime).Установка:
pip install "sglang[all]"
Запуск OpenAI-совместимого сервера инференса:
python -m sglang.launch_server \
--model-path deepseek-ai/DeepSeek-V3 \
--port 30000 \
--tp 8
Отправка запроса через Python:
import openai
client = openai.Client(base_url="http://127.0.0.1:30000/v1", api_key="None")
response = client.chat.completions.create(
model="default",
messages=[{"role": "user", "content": "Объясни квантовые вычисления простыми словами."}],
temperature=0.7,
)
print(response.choices[0].message.content)
#SGLang #LLM #AI #Inference #MachineLearning #DeepSeek #NVIDIA #AMD #OpenSource #DevTools #Python #DataScience
https://github.com/sgl-project/sglang
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - sgl-project/sglang: SGLang is a high-performance serving framework for large language models and multimodal models.
SGLang is a high-performance serving framework for large language models and multimodal models. - sgl-project/sglang
Citry - это строго типизированный фронтенд-фреймворк для Python, объединяющий серверные события и Alpine.js для создания реактивных веб-интерфейсов без необходимости вести отдельный frontend-проект на JavaScript.
Архитектура проекта вдохновлена идеями Vue и Laravel Livewire: один Python-компонент инкапсулирует HTML-разметку, стили CSS, логику браузера, серверные обработчики событий и переводы интерфейса.
Kwargs). Опечатки в свойствах или пропущенные поля отлавливаются на этапе статического анализа, а метод template_data() изолирует контекст, доступный шаблону.<c-ComponentName>, а атрибуты с префиксом c- вычисляют Python-выражения (например, c-messages="user.inbox").citry check --static).citry-ui) — диалоги, формы, навигация и таблицы.from citry import Component
class Welcome(Component):
class Kwargs:
name: str
messages: list[str]
def template_data(self, kwargs, slots):
return {
"name": kwargs.name,
"messages": kwargs.messages,
}
template = """
<section class="welcome">
<h1>С возвращением, {{ name }}!</h1>
<ul>
<li c-for="message in messages">{{ message }}</li>
<li c-empty>Новых сообщений нет.</li>
</ul>
</section>
"""
css = """
.welcome { border-top: 3px solid #2563eb; }
"""
# Рендеринг компонента в HTML-строку
html = str(Welcome(name="Алексей", messages=["Сборка завершена", "Отчет готов"]))
pip install citry
# или через uv:
uv add citry
#Citry #Python #Frontend #Fullstack #FastAPI #Django #Flask #AlpineJS #Livewire #WebDev #OpenSource #DevTools
https://github.com/citry-dev/citry
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - citry-dev/citry: Fully typed frontend framework for Python with server events and Alpine.js, inspired by Vue and Livewire.
Fully typed frontend framework for Python with server events and Alpine.js, inspired by Vue and Livewire. - citry-dev/citry