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

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

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

Python 3.15.0 альфа 5 (да, еще одна альфа!)

📅 Дата: Wed, 14 Jan 2026 17:38:00 +0000

Читать далее...
1⚡2🔥2
📱Jetbase.

Jetbase — это лёгкий миграционный инструмент для БД в Python‑проектах: SQL‑файлы с версиями, апгрейды/роллбеки, валидация и блокировка миграций, плюс поддержка Postgres, SQLite, Snowflake и MySQL.

❓Что умеет:

🔘Простая инициализация: pip install jetbase → jetbase init создаёт каталог jetbase/ c migrations/ и env.py.

🔘Версионированные миграции в виде SQL‑файлов V<version>__<description>.sql, c блоками -- upgrade и -- rollback, и командами jetbase upgrade, jetbase history, jetbase status.

🔘Безопасность: file checksum’ы, миграционный lock (один процесс за раз), линейная история (всегда один head, конфликт версий падает сразу), repeatable‑миграции.

🔹Поддерживаемые БД и драйверы:

🔘Поддерживаются PostgreSQL, SQLite, Snowflake и MySQL через SQLAlchemy URL в jetbase/env.py.

🔘Для небустроенного SQLite требуются драйверы: например, psycopg2 для Postgres или соответствующий Snowflake/MySQL драйвер.

🔻Пример:

Настройка подключения, затем:
  jetbase new "create users table" -v 1

# редактируем V1__create_users_table.sql
jetbase upgrade

SQL: в -- upgrade создаём таблицы, в -- rollback — удаляем, что упрощает откаты.

#Jetbase #Python #DatabaseMigrations #PostgreSQL #SQLite #Snowflake #MySQL #SQLAlchemy #DevTools #DataEngineering

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

Transtractor — это библиотека на Rust с Python‑API для извлечения транзакций из PDF‑выписок банка в CSV или DataFrame, без какого‑либо AI.

❓Что умеет:

🔘Парсит PDF‑выписки, вытягивая структурированные данные о транзакциях (дата, описание, суммы, баланс) в стандартный CSV‑формат или словарь для Pandas.

🔘Работает по конфигам: готовые профили для поддерживаемых банков + возможность подключать свои my_config.json, не трогая ядро парсинга.

🚀Установка и запуск:

🔘Установка из PyPI:
  pip install transtractor


🔘Базовое использование:
  from transtractor import Parser
parser = Parser()
parser.parse("statement.pdf").to_csv("statement.csv")

data = parser.parse("statement.pdf").to_pandas_dict()


Далее данные можно анализировать в Pandas/Excel.

🔻Конфиги и расширение:

🔘Список поддерживаемых банков и примеры конфигов — в документации на Read the Docs и на сайте Transtractor.

🔘Свои конфиги подключаются так:
  parser.load("my_config.json")
parser.parse("statement.pdf").to_csv("statement.csv")


#Transtractor #Rust #Python #PDF #BankStatements #FinTech #DataExtraction #Pandas #PersonalFinance #OpenSource

📱Ссылка на репозиторий:
https://github.com/transtractor/transtractor-lib
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍1
📱uSQLite.

usqlite — это порт SQLite для MicroPython: модуль С/μPython с API в стиле sqlite3, но заточенный под микроконтроллеры, ограниченную память и кастомную сборку прошивки.

❓Зачем это нужно:

🔘Даёт полноценный SQL‑движок SQLite прямо на ESP32, Pico, Unix‑портах, Windows и Pybricks‑хабах, причём базы совместимы с обычным SQLite (DB Browser, десктопные приложения).

🔘Интерфейс совместим с DB‑API 2.0 (PEP 249) и стандартным sqlite3, так что большинство привычных паттернов работы с БД переносится почти без изменений.

🔻Пример:
  import usqlite

if not usqlite.mem_status():
usqlite.mem_status(True) # включить мониторинг памяти

con = usqlite.connect("data.db")
con.executemany(
"BEGIN TRANSACTION;"
"CREATE TABLE IF NOT EXISTS data (name TEXT, year INT);"
"INSERT INTO data VALUES ('Larry', 1902);"
"INSERT INTO data VALUES ('Curly', 1903);"
"INSERT INTO data VALUES ('Moe', 1897);"
"INSERT INTO data VALUES ('Shemp', 1895);"
"COMMIT;"
)

with con.execute("SELECT * from data") as cur:
for row in cur:
print("stooge:", row)

con.close()
print("usqlite mem - current:", usqlite.mem_current(), "peak:", usqlite.mem_peak())

Поддерживаются параметризованные запросы ?, ?NNN, :name, @name, $name c передачей tuple/list/dict, как в sqlite3.

🔻Сборка и интеграция:

🔘Модуль собирается как C‑расширение в составе прошивки MicroPython: структура проекта micropython/ + modules/usqlite, подключение через корневой micropython.cmake.

🔘В репозитории уже лежит SQLite 3.47.0 (amalgamation), при желании его можно заменить своей сборкой.

🔧Память и конфигурация:

🔘По умолчанию используется кастомный аллокатор поверх GC‑heap MicroPython, плюс функции mem_current(), mem_peak(), mem_status() для контроля потребления.

🔘Через usqlite_config.h можно включать/отключать компоненты SQLite и перейти на статический heap для жёстко лимитированной памяти.

#usqlite #MicroPython #SQLite #Embedded #ESP32 #RaspberryPiPico #IoT #DBAPI #CModule #Firmware

📱Ссылка на репозиторий:
https://github.com/spatialdude/usqlite
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥1
📱Violit.

Violit — это высокопроизводительный Python‑фреймворк для UI, вдохновлённый Streamlit, но с O(1)‑обновлением состояния без полного перезапуска скрипта и с режимом десктоп‑приложения.

🔹Основная идея:

🔘Архитектура Zero Rerun: при взаимодействии обновляются только зависящие от состояния компоненты, а не весь скрипт целиком, что даёт «реактивность как в React» без мерцаний и перерасхода ресурсов.

🔘API почти как у Streamlit: app.write, app.button, app.metric, app.columns и т.п., плюс сигнал‑based app.state(...), так что миграция со Streamlit занимает минуты.

🔻Ключевые возможности:

🔘Режимы работы:
✔️WebSocket (по умолчанию) для ultra‑low latency и real‑time broadcasting.
✔️Lite (HTTP/HTMX) для тысяч одновременных пользователей.

🔘Desktop Mode (--native --splash) через pywebview: превращает приложение в настольное без Electron и Node.js. [github](https://github.com/violit-dev/violit)

🔹Темы и UI:

🔘Встроено 30+ премиум‑тем (dark, light, tech, professional), переключаются одной строкой App(theme='cyberpunk', ...) или app.set_theme('ocean'), без верстки и CSS.

🔘Под капотом используются FastAPI, Shoelace‑компоненты, Plotly.js и AG‑Grid для таблиц и графиков.

🔻Установка и запуск:

🔘Установка:
  pip install violit


🔘Пример:
  import violit as vl

app = vl.App(title="Hello Violit", theme="ocean")
count = app.state(0)

app.button("Increase", on_click=lambda: count.set(count.value + 1))
app.write("Count:", count)

app.run()

Скрипт выполняется один раз, дальше всё держится на реактивном состоянии.

#Violit #Python #Streamlit #WebFramework #FastAPI #ReactiveUI #ZeroRerun #Dashboard #DataApps #DesktopApp

📱Ссылка на репозиторий:
https://github.com/violit-dev/violit
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡32
1🤣3😁1
📱Webctl.

webctl — это CLI-обёртка над Chromium/Playwright для автоматизации браузера людьми и AI‑агентами, с акцентом на фильтрацию вывода до попадания в контекст LLM и удобную интеграцию со skill‑системами (Claude, Goose и др.).

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

🔘Автоматизация браузера командами вроде:
webctl start, webctl navigate "https://example.com", webctl click 'role=button name~="Submit"', webctl snapshot --interactive-only.

🔘Архитектура CLI + daemon: утилита отправляет JSON‑RPC по Unix‑сокету в фоновой процесс, который держит Chromium и сессию (cookies, профиль) живыми между командами.

❓Почему CLI, а не MCP:

🔘MCP обычно льёт в контекст кучу «шума» (полный accessibility tree, логи и т.д.), быстро забивая окно контекста модели.

🔘В CLI‑подходе ты сам решаешь, что покажется LLM:
webctl snapshot --interactive-only --limit 30 | grep -i "submit" или ... --format jsonl | jq ....

🔻Интеграция с агентами:

🔘webctl init генерирует skill‑/prompt‑файлы для Claude Code, Goose, Gemini, Copilot, Codex, чтобы агент знал, как вызывать webctl.

🔘Skills подхватываются по файлам (.claude/skills/webctl/SKILL.md, .agents/skills/... и т.п.), загружаются по требованию, чтобы не засорять системный промпт.

🔻Основные команды:

🔘Навигация и наблюдение: navigate, back/forward/reload, snapshot, query, screenshot.

🔘Взаимодействие: click, type, select, check, press, scroll, wait ..., плюс status, console, save для сессии.

#webctl #Playwright #CLI #BrowserAutomation #AIAgents #LLM #UnixTools #Chromium #DevTools #Automation

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

MimicKit — это открытый, легковесный фреймворк для обучения контроллеров движения с помощью имитации движения и RL, в котором в одном месте собраны DeepMimic, AMP, ASE и ADD плюс PPO/AWR.

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

🔘Чистый код и минимальные зависимости: одна кодовая база, в которой реализованы популярные motion‑imitation методы и RL‑алгоритмы для графики и робототехники.

🔘Модульная архитектура: отдельно описаны Agent, Model, Environment и Engine, что позволяет быстро пробовать другие персонажи, задачи и симуляторы.

🔘Поддержка разных physics‑движков (Isaac Gym, Isaac Lab, Newton) через engine_config, плюс векторизованные среды для массового параллелизма на GPU.

🔻Базовый workflow выглядит так:

🔘Установить движок (например, Isaac Gym) и зависимости, скачать data/ с ассетами и motion capture.

🔘Запустить обучение чем‑нибудь из коробки, вроде DeepMimic‑гуманоида:
  python mimickit/run.py \
--mode train \
--num_envs 4096 \
--engine_config data/engines/isaac_gym_engine.yaml \
--env_config data/envs/deepmimic_humanoid_env.yaml \
--agent_config data/agents/deepmimic_humanoid_ppo_agent.yaml \
--visualize true \
--out_dir output/


🔘Для повторных запусков удобно крутить всё через arg_file с готовыми настройками.

Если нужно просто быстро проверить модели или потыкать анимации, есть режим test, просмотр motion‑клипов и готовые скрипты для логов и TensorBoard.

#MimicKit #DeepMimic #AMP #ASE #ADD #ReinforcementLearning #MotionControl #IsaacGym #Robotics #PhysicsSimulation

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

redress — это лёгкая библиотека для умных повторных попыток в Python‑сервисах: она классифицирует ошибки по классам и подбирает для каждого свой backoff, с единым хуком для метрик и логов.

🔹Основные идеи:

🔘Классификатор ошибок: default_classifier распределяет исключения по фиксированному набору ErrorClass (PERMANENT, CONCURRENCY, RATE_LIMIT, SERVER_ERROR, TRANSIENT, UNKNOWN), плюс может вернуть retry_after_s и детали.

🔘Стратегии для каждого класса ошибок: для каждого ErrorClass можно задать отдельный алгоритм задержки (decorrelated_jitter, equal_jitter, token_backoff, retry_after_or и др.), поверх стандартной стратегии.

🔘Детерминированная «оболочка» повторов: deadline_s, max_attempts и max_unknown_attempts позволяют жёстко ограничить поведение и избежать бесконечных или хаотичных попыток.

🔘Наблюдаемость: единый on_metric‑хук получает события success, retry, permanent_fail, deadline_exceeded, max_attempts_exceeded, max_unknown_attempts_exceeded плюс теги, что удобно для Prometheus/OpenTelemetry.

🔘Симметрия синхронного и асинхронного кода: есть RetryPolicy и AsyncRetryPolicy с одинаковой моделью, плюс удобный декоратор @retry и контекстный менеджер policy.context для групповых вызовов.

🔻Типичный процесс использования:

🔘Установить:
pip install redress

🔘Описать политику с классифицированными стратегиями:
  from redress.policy import RetryPolicy
from redress.classify import default_classifier, ErrorClass
from redress.strategies import decorrelated_jitter, equal_jitter

policy = RetryPolicy(
classifier=default_classifier,
strategy=decorrelated_jitter(max_s=10.0),
strategies={
ErrorClass.CONCURRENCY: decorrelated_jitter(max_s=1.0),
ErrorClass.RATE_LIMIT: decorrelated_jitter(max_s=60.0),
ErrorClass.SERVER_ERROR: equal_jitter(max_s=30.0),
},
)


🔘Подключить механизм повторов к функции: через policy.call(), декоратор @retry или контекстный менеджер с общими metric‑хуками.

Отдельный плюс для боевых систем — CLI redress doctor, который проверяет RetryConfig/RetryPolicy и выводит нормализованный снапшот конфигурации, чтобы поймать странные комбинации max_attempts/deadline и стратегий ещё до развёртывания.

#redress #Python #RetryPolicy #Resilience #Observability #FaultTolerance #Backoff #ErrorHandling #Logging

📱Ссылка на репозиторий:
https://github.com/aponysus/redress
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥2👍11
📱Jupyterlab-git.

jupyterlab-git — это расширение для JupyterLab, которое добавляет полноценный Git‑интерфейс прямо в левую панель, так что можно работать с репозиторием, не выходя из браузера.

🔹Из коробки:

🔘Панель Git в JupyterLab: статус репозитория, список изменённых файлов, диффы, история коммитов, кнопки commit/push/pull/branch — всё через GUI.

🔘Установка одной командой:

  pip install --upgrade jupyterlab jupyterlab-git
# или
conda install -c conda-forge jupyterlab jupyterlab-git

Требования — JupyterLab 4.x и Git >= 2.x. Для 2.x/3.x есть отдельные ветки jlab-2 / jlab-3.

🔻Аутентификация и работа с remote:

🔘HTTP(S): расширение умеет временно кешировать логин/пароль (по умолчанию на час; настраивается через JupyterLabGit.credential_helper), опция «Save my login temporarily» в диалоге доступа.

🔘SSH: стандартный путь — сгенерировать SSH‑ключ, добавить его в GitHub/GitLab, при необходимости настроить ~/.ssh/config и перевести origin на ssh‑URL; после этого push/pull доступны кнопками в панели.

🔻Гибкие настройки UI и сервера:

🔘UI‑флаги вроде blockWhileCommandExecutes, cancelPullMergeConflict, simpleStaging, doubleClickDiff, historyCount, refreshInterval и др. позволяют либо максимально «страховаться» от потери данных, либо упростить интерфейс для менее опытных пользователей Git.

🔘Серверные опции (JupyterLabGit.actions.post_init, credential_helper, excluded_paths, git_command_timeout_s) настраиваются в jupyter_notebook_config.py / .json и позволяют, например, автоматически выполнять команды после git init или тонко управлять кешем учётных данных.

🔻Полезные мелочи для эксплуатации:

🔘Если фронтенд виден, но не работает — проверить включение серверного расширения через jupyter server extension list, при необходимости выполнить jupyter server extension enable --py jupyterlab_git.

🔘Если Git‑панель не отображается — убедиться, что labextension установлен (jupyter labextension list) и при необходимости доустановить @jupyterlab/git, либо выполнить jupyter lab clean --all и переустановку.

#JupyterLab #Git #jupyterlabgit #Python #DataScience #Notebooks #VersionControl

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

NVIDIA Earth2Studio — это Python‑фреймворк для быстрого запуска и компоновки AI‑моделей погоды и климата (прогноз, диагностика, статистика) через единую API поверх разных моделей и источников данных.

❓Что это такое:

🔘Набор модульных компонентов: прогностические модели, диагностические модели, источники данных, IO‑бекенды, методы возмущений, метрики.

🔘Работает как «инференс‑конвейер»: вы собираете pipeline из модели, источника данных и бекенда записи и запускаете прогноз одной функцией run(...).

❤Установка и быстрый старт:

🔘Установка:
  pip install earth2studio[dlwp]

После этого можно сделать детерминированный прогноз в несколько строк (пример с DLWP, GFS и NetCDF4Backend).

🔘Для других моделей могут понадобиться дополнительные зависимости; детали — в install guide в документации.

🔻Модели и данные:

🔘Прогностические модели: GraphCast (Small/Operational), Pangu (3h/6h/24h), Aurora, FuXi, AIFS, AIFS Ensemble, StormCast, SFNO, DLESyM и др., с разными разрешениями и шагом интегрирования, глобальные и региональные.

🔘Диагностические модели: осадки, солнечная радиация, шквалы ветра, тропические циклоны, генеративные климат‑модели (CBottle, CorrDiff и вариации).

🔘Источники данных: операционные модели (GFS, HRRR, IFS), реанализа (ERA5 через ARCO/CDS, WeatherBench2, NCAR_ERA5), осадочные и наблюдательные наборы (IMERG, ISD, MRMS), плюс AI‑климат (cBottle).

❗️Лицензия и важные нюансы:

🔘Сам Earth2Studio распространяется под Apache 2.0.

🔘Но это интерфейс к сторонним моделям/датасетам: лицензии на конкретные чекпойнты и данные принадлежат их авторам, права на скачивание/использование/распространение нужно проверять по ссылкам в API‑доках.

#Earth2Studio #NVIDIA #Python #WeatherAI #ClimateAI #DeepLearning #GraphCast #Pangu #AIFS #GFS #ERA5 #Zarr #NetCDF #Xarray #Forecasting #TimeSeries #DataScience

📱Ссылка на репозиторий:
https://github.com/NVIDIA/earth2studio
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍33
1🤣3👍2🤔1
📱UltraRAG.

UltraRAG — это легковесный фреймворк для разработки RAG‑систем на базе Model Context Protocol (MCP), созданный совместно THUNLP (Tsinghua University), NEUIR (Northeastern University), OpenBMB и AI9stars.

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

🔘Низкий барьер входа — сложные пайплайны с ветвлениями, циклами и итерациями описываются в десятках строк YAML вместо сотен строк кода.

🔘Визуальный IDE, а не чат — конструктор пайплайнов с двунаправленной синхронизацией «Canvas ↔️ Code», интерактивной отладкой, настройкой промптов и встроенным управлением базами знаний.

🔘Модульная архитектура — Retriever, Generation и другие компоненты работают как независимые MCP-серверы, легко интегрируются и переиспользуются.

🔘Один клик до продакшена — пайплайн мгновенно превращается в интерактивный веб-интерфейс без лишнего кода.

🔘Для исследователей — готовые датасеты, стандартные воркфлоу, визуальная аналитика экспериментов и Case Study для отладки каждого шага.

🔘Deep Research Pipeline — интеграция с AgentCPM-Report позволяет автоматически собирать многошаговый поиск в длинные аналитические отчёты.

#UltraRAG #RAG #MCP #LLM #AI #DeepResearch #Python #NoCode #MLOps #RetrievalAugmentedGeneration #OpenSource

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

WebRockets — это высокопроизводительный WebSocket-сервер для Python с нативной поддержкой Django. Ядро написано на Rust (PyO3 + axum + fastwebsockets) для максимальной скорости — до 10x быстрее Daphne в бенчмарках.

🔹Ключевые фичи:

🔘Производительность — Rust-ядро, 10x выше throughput на 100 соединениях (Thinkpad i7, Linux).
🔘Django-интеграция — аутентификация (Session, Token из cookie/header/query), команды runwebsockets.
🔘Pattern Matching — роутинг по дискриминатору + Pydantic-валидация JSON.
🔘Broadcasting — Redis/RabbitMQ из коробки.
🔘Async/Sync — колбэки на Python, полная async-поддержка.

🔻Быстрый старт (standalone):

from webrockets import WebsocketServer
server = WebsocketServer(host="0.0.0.0", port=8080)
echo = server.create_route("ws/echo/", "echo")

@echo.connect("before")
def on_connect(conn): print(f"Connected: {conn.path}")

@echo.receive
def on_message(conn, data): conn.send(f"You said: {data}")

server.start()


Django (websockets.py в app):
from webrockets.django import server
from webrockets.django.auth import SessionAuthentication

chat = server.create_route("ws/chat/", "chat", authentication_classes=[SessionAuthentication()])

@chat.connect("before")
def on_connect(conn): print(f"User {conn.user} joined")

@chat.receive(match=Match("type", "message"), schema=ChatMessage)
def on_message(conn, data: ChatMessage): conn.broadcast([data.room], data.content)

# Запуск: python manage.py runwebsockets


🔻Установка:
pip install webrockets[django,schema].

#WebRockets #WebSocket #Django #Rust #Python #Async #HighPerformance #WebDev #OpenSource

📱Ссылка на репозиторий:
https://github.com/ploMP4/webrockets
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍6🔥22
📱Oban.

Oban — мощный фреймворк для оркестрации background jobs в Python на базе PostgreSQL. Надёжный, наблюдаемый, с enterprise‑фичами: async‑нативный, без лишних зависимостей, транзакционный контроль.

🔹Преимущества:

🔘Исторические метрики — jobs хранятся после выполнения для аудита/аналитики.
🔘Изолированные queues — concurrency per queue, без конкуренции (медленный reports не тормозит emails).
🔘Контроль — start/stop/pause/scale queues на лету.
🔘Cancel/Snooze — отмена/отложка jobs.
🔘Triggers — мгновенная диспетчеризация на всех нодах.
🔘Priority/CRON — 10 уровней приоритета, cron‑джобы без дубликатов.
🔘Graceful shutdown — slow jobs.
🔘Node metrics/Telemetry — мониторинг состояния.

🔻Быстрый старт:
from oban import worker, Snooze, Cancel

@worker(queue="exports", max_attempts=5)
class ExportWorker:
async def process(self, job):
if job.cancelled(): return Cancel("cancelled")
report = await generate_report(job.args["report_id"])
if report.status == "pending": return Snooze(seconds=30)
await send_to_user(job.args["email"], report)

# Enqueue
await ExportWorker.enqueue({"report_id": 123, "email": "user@example.com"})

# CLI
oban install --dsn postgresql://localhost/mydb
oban start --dsn postgresql://localhost/mydb --queues exports:10


#Oban #JobQueue #PostgreSQL #AsyncPython #BackgroundJobs #Workflows #Python #OpenSource

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

Calgebra — это алгебра множеств для календарей в Python: позволяет комбинировать временные интервалы (|, &, -, ~) и эффективно запрашивать свободные/занятые слоты во временных диапазонах .

❓Зачем это нужно:

🔘Поиск общих свободных окон команды для митингов.

🔘Анализ занятости (кто перегружен, какие слоты пустуют).

🔘Построение «правил времени» для ботов и автоматизации (рабочие часы, исключения, recurring‑паттерны).

🔹Как это выглядит в коде:

from calgebra import day_of_week, time_of_day, at_tz, pprint, hours, HOUR
from itertools import islice

tz = "US/Pacific"
at = at_tz(tz)

# Календари команды (Google / .ics / свои источники)
alice, bob, charlie = ...

# Будни и рабочие часы
weekend = day_of_week(["saturday", "sunday"], tz=tz)
weekdays = ~weekend
workhours = time_of_day(start=9*HOUR, duration=8*HOUR, tz=tz)
business_hours = weekdays & workhours

# Кто когда занят
team_busy = alice | bob | charlie

# Свободные слоты в рабочее время, минимум на 2 часа
free_slots = (business_hours - team_busy) & (hours >= 2)

pprint(islice(free_slots[at("2025-01-01"):at("2025-02-01")], 5), tz=tz)
# 2025-01-06 14:00:00 -> 17:00:00
# 2025-01-08 09:00:00 -> 12:00:00
# ...


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

🔘Операции множеств для времени: объединение (|), пересечение (&), разность (-), дополнение (~) над календарными интервалами.

🔘Конструкции «поверх дат»: day_of_week(), time_of_day(), recurring() в стиле RFC 5545 (как в iCalendar).

🔘Фильтрация интервалов: hours >= 2, summary == "standup", кастомные свойства событий.

🔘Отложенное выполнение запросов: вы описываете правила и комбинации, а фактический расчёт происходит при слайсинге по диапазону дат (timeline[start:end]).

🔘Интеграция с реальными календарями:

✔️Google Calendar: чтение и запись через calgebra.gcsa.

✔️iCalendar (.ics): загрузка/сохранение стандартных RFC 5545 файлов.

🔧Установка:

pip install calgebra
# с поддержкой Google Calendar
pip install calgebra[google-calendar]
# с поддержкой iCalendar (.ics)
pip install calgebra[ical]


#Calgebra #Python #Calendar #Scheduling #GoogleCalendar #ICS #SetAlgebra #Automation #OpenSource

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

nanobot — это ультра-лёгкий персональный AI-ассистент в духе Clawdbot, но с ядром всего ~3.4k строк кода (примерно на 99% меньше исходника Clawdbot). Его идея — дать все базовые возможности агента без громоздкой инфраструктуры: установил, прописал ключ — и можно общаться через CLI или мессенджеры.

🔹Что умеет nanobot:

🔘24/7 мониторинг рынка и поиск инсайтов.

🔘Помощник full‑stack‑разработчика (код, поиск, отладка, генерация).

🔘Менеджер рутины: расписания, напоминания, авто‑задачи (cron).

🔘Личный knowledge‑ассистент с памятью и навыками.

Каналы и провайдеры:

🔘Telegram, Discord, WhatsApp, Feishu — единый AI‑бот, доступный отовсюду.

🔘Множество LLM‑провайдеров: OpenRouter, Anthropic, OpenAI, DeepSeek, Groq, Gemini и др.

🔘Поддержка локальных моделей через vLLM или любой OpenAI‑совместимый сервер (Llama 3.1 и пр.).

🐱Быстрый старт (CLI):

1. Установка:
pip install nanobot-ai
# или через uv:
uv tool install nanobot-ai

2. Инициализация:
nanobot onboard

3. Настройка ~/.nanobot/config.json (API‑ключи, модель, инструменты веб‑поиска).
4. Чат из терминала:
nanobot agent -m "Что такое nanobot и чем он полезен?"


🔻Локальные модели (vLLM):

🔘Поднимаете сервер:
vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000

🔘В конфиге указываете:
"providers": {
"vllm": {
"apiKey": "dummy",
"apiBase": "http://localhost:8000/v1"
}
},
"agents": {
"defaults": {
"model": "meta-llama/Llama-3.1-8B-Instruct"
}
}

🔘И дальше общаетесь через nanobot agent.

🔻Интеграция с мессенджерами:

🔘Telegram: токен от BotFather + nanobot gateway.

🔘Discord: bot token + intents.

🔘WhatsApp: привязка через QR и nanobot channels login.

🔘Feishu: WebSocket‑режим без публичного IP, достаточно appId/appSecret.

🔻Планирование и автоматизация:

🔘Встроенный cron для задач:
nanobot cron add --name "daily" --message "Good morning!" --cron "0 9 * * *"
nanobot cron list
nanobot cron remove <job_id>

🔘Можно использовать как личного «оркестратора» рутинных проверок, отчётов, напоминаний.

🔻Безопасность и деплой:

🔘tools.restrictToWorkspace: true — жёстко ограничивает инструменты (shell, файлы) рабочей директорией.

🔘allowFrom для каналов — whitelist пользователей, которые могут общаться с ботом.

🔘Официальный Docker‑образ/ Dockerfile: монтируете ~/.nanobot в контейнер и получаете постоянный конфиг и workspace.

#nanobot #AIassistant #Python #LLM #vLLM #Agents #TelegramBot #DiscordBot #WhatsApp #Feishu #Automation #OpenSource

📱Ссылка на репозиторий:
https://github.com/HKUDS/nanobot
Please open Telegram to view this post
VIEW IN TELEGRAM
25🔥2
PyRSSNews.

Python 3.14.3 и 3.13.12 теперь доступны!

📅 Дата: Tue, 03 Feb 2026 22:08:00 +0000

Читать далее...
13⚡1
📱Trueform.

Trueform — это библиотека для геометрической обработки в реальном времени: пространственные запросы, булевы операции над сетками, изоконтуры, топология — интерактивно на ме́шах в миллионы полигонов.

🔹Архитектура:

🔘C++17 header‑only с зависимостью только на oneTBB: параллелизм из коробки.

🔘Zero‑copy views: работает прямо над вашими std::vector или NumPy‑массивами без конвертации.

🔘Устойчивость к реальным данным: сломанный winding, артефакты пайплайна обрабатываются корректно.

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

🔘Примитивные запросы — расстояния, пересечения лучей, проверки содержания точек:
auto [dist2, pt_on_poly, pt_on_seg] = tf::closest_metric_point_pair(polygon, segment);
bool contains = tf::contains_point(polygon, point);
auto hit = tf::ray_hit(ray, polygon);


🔘Анализ сеток — компоненты связности, k‑ring окрестности, граничные кривые, главные кривизны, поиск неманифолдных рёбер, автоматическая ориентация граней.

🔘Пространственные структуры — AABB‑деревья для быстрых коллизий, вычисления расстояний между сетками, сбора пересекающихся пар примитивов.

🔘Булевы операции — union/intersection/difference/merge с опциональным вычислением кривых пересечения.

🔘Скалярные поля и изоконтуры — distance‑поля, извлечение изолиний врезанных в сетку.

🔘Чистка геометрии — слияние совпадающих вершин, удаление дубликатов, триангуляция n‑угольников, нормализация ориентации.

🔻Интеграции:

🔘VTK — фильтры для визуальных пайплайнов.
🔘Python — NumPy in/NumPy out биндинги.
🔘Blender — аддон с кэшем и live preview.

🔧Установка:

pip install trueform
python -m trueform.conan create # TBB автоматически

#trueform #Geometry #Meshes #C++ #Python #VTK #Blender #CAD #ComputationalGeometry #3DProcessing

📱Ссылка на репозиторий:
https://github.com/polydera/trueform
Please open Telegram to view this post
VIEW IN TELEGRAM
14🤔2
📱Text2SQirreL.

Text2SQirreL — это открытый локальный Text2SQL‑асистент, который переводит ваши вопросы на обычном английском в исполняемые SQL‑запросы к реальным данным. Он построен на дообученных маленьких моделях Qwen3 (4B и 0.6B), которые благодаря дистилляции от большого DeepSeek‑V3 дают качество уровня «старшего» LLM, но запускаются прямо на ноутбуке без облаков и API‑ключей.

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

🔘Локально и приватно: модели работают через Ollama/llama.cpp, данные остаются на вашей машине, подключение к облаку не требуется.

🔘Маленький размер → высокая скорость: 4B‑модель в 4‑битном GGUF весит ~2.5GB и запускается на большинстве ноутбуков без GPU.

🔘Качество уровня больших LLM: дистиллирована с DeepSeek‑V3, поддерживает SELECT/WHERE, JOIN, GROUP BY, подзапросы и другие конструкции SQLite‑совместимого SQL.

🔘Простая интеграция: утилита, которая загружает ваши CSV в SQLite, принимает вопрос на английском, генерирует SQL, выполняет его и показывает результат (можно вывести запрос флагом --show-sql).

🔘Гибкость по размерам: 4B‑модель для максимальной точности и 0.6B‑вариант для edge/мобилок и совсем ограниченных сред.

🐱Установка и запуск:

1. Ставите Ollama по инструкции на сайте проекта.
2. Создаёте виртуальное окружение и ставите зависимости:
python -m venv .venv
. .venv/bin/activate
pip install huggingface_hub openai pandas.
3. Скачиваете 4‑битную 4B‑модель (~2.5GB) и собираете её для Ollama:
huggingface-cli download distil-labs/distil-qwen3-4b-text2sql-gguf-4bit --local-dir distil-model
cd distil-model
ollama create distil-qwen3-4b-text2sql -f Modelfile
cd ...
4. Запускаете Text2SQL, указав свой CSV и вопрос на английском:
python app.py --csv example_data/employees.csv --question "How many employees are in each department?".

#AI #LLM #Text2SQL #Ollama #Qwen3 #DeepSeek #DataAnalytics #SQL #datatools #privacy #opensource #Python

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