XY - новая open-source библиотека визуализации от команды Reflex. Она пытается объединить удобство Matplotlib с интерактивностью браузерных графиков и производительностью Rust.
Для больших датасетов Rust-ядро XY вычисляет только то, что реально можно показать при текущем разрешении экрана. При приближении данные уточняются и появляются исходные точки.
import xy
chart = xy.line_chart(
xy.line(
[1, 2, 3, 4, 5],
[120, 180, 165, 240, 310]
)
)
chart
Есть даже совместимость с привычным стилем Matplotlib:
import xy.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
По собственному бенчмарку разработчиков на Apple M5 Pro:
- 100 млн точек в density-режиме - ~0,081 с;
- 100 млн реальных маркеров без агрегации - ~1,34 с;
- библиотека уже использовалась для визуализации датасета OpenStreetMap примерно на 10 млрд точек.
Под капотом:
Python API
↓
ColumnStore
↓
Rust compute
↓
binary buffers
↓
WebGL2 / Canvas
Графики интерактивные: pan, zoom, hover, selection и linked charts. Их можно использовать в Jupyter и веб-приложениях, а затем экспортировать в HTML, PNG, SVG или PDF.
Установка:
pip install xy
Если подход оправдает себя, XY может стать интересной альтернативой связке Matplotlib + Plotly для действительно больших датасетов.
Источник:
https://github.com/reflex-dev/xy
#Python #DataScience #Visualization #Rust
@Python_Community_ru
Для больших датасетов Rust-ядро XY вычисляет только то, что реально можно показать при текущем разрешении экрана. При приближении данные уточняются и появляются исходные точки.
import xy
chart = xy.line_chart(
xy.line(
[1, 2, 3, 4, 5],
[120, 180, 165, 240, 310]
)
)
chart
Есть даже совместимость с привычным стилем Matplotlib:
import xy.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
По собственному бенчмарку разработчиков на Apple M5 Pro:
- 100 млн точек в density-режиме - ~0,081 с;
- 100 млн реальных маркеров без агрегации - ~1,34 с;
- библиотека уже использовалась для визуализации датасета OpenStreetMap примерно на 10 млрд точек.
Под капотом:
Python API
↓
ColumnStore
↓
Rust compute
↓
binary buffers
↓
WebGL2 / Canvas
Графики интерактивные: pan, zoom, hover, selection и linked charts. Их можно использовать в Jupyter и веб-приложениях, а затем экспортировать в HTML, PNG, SVG или PDF.
Установка:
pip install xy
Если подход оправдает себя, XY может стать интересной альтернативой связке Matplotlib + Plotly для действительно больших датасетов.
Источник:
https://github.com/reflex-dev/xy
#Python #DataScience #Visualization #Rust
@Python_Community_ru
🚀 LLMs-from-scratch пробил 100 000 звёзд на GitHub - и это уже одна из лучших практических баз по устройству современных LLM.
Проект Себастьяна Рашки показывает весь путь с нуля - без магии высокоуровневых библиотек:
- токенизация и attention;
- pretraining;
- классификация;
- instruction fine-tuning;
- LoRA, DPO и evaluation;
- KV cache и оптимизация памяти;
- эффективная загрузка весов.
Причём репозиторий давно вышел за рамки «соберём маленький GPT».
Там уже есть реализации Llama, Qwen, Gemma и OLMo с нуля, а также современные архитектурные техники:
- GQA;
- MLA;
- Sliding Window Attention;
- Gated DeltaNet;
- DeepSeek Sparse Attention;
- cross-layer KV sharing;
- Mixture-of-Experts.
Самое полезное - уменьшенные версии моделей можно запускать локально и подключать к тем же training scripts, чтобы реально экспериментировать с архитектурой, а не только читать статьи.
Рашка продолжит добавлять новые варианты attention и архитектуры, а RL и Reasoning From Scratch развивает в отдельных репозиториях.
Если хочется не просто использовать LLM через API, а действительно понять, что происходит внутри трансформера - это один из тех репозиториев, которые стоит пройти руками.
🔗 github.com/rasbt/LLMs-from-scratch
#AI #LLM #MachineLearning #DeepLearning #OpenSource
@Python_Community_ru
Проект Себастьяна Рашки показывает весь путь с нуля - без магии высокоуровневых библиотек:
- токенизация и attention;
- pretraining;
- классификация;
- instruction fine-tuning;
- LoRA, DPO и evaluation;
- KV cache и оптимизация памяти;
- эффективная загрузка весов.
Причём репозиторий давно вышел за рамки «соберём маленький GPT».
Там уже есть реализации Llama, Qwen, Gemma и OLMo с нуля, а также современные архитектурные техники:
- GQA;
- MLA;
- Sliding Window Attention;
- Gated DeltaNet;
- DeepSeek Sparse Attention;
- cross-layer KV sharing;
- Mixture-of-Experts.
Самое полезное - уменьшенные версии моделей можно запускать локально и подключать к тем же training scripts, чтобы реально экспериментировать с архитектурой, а не только читать статьи.
Рашка продолжит добавлять новые варианты attention и архитектуры, а RL и Reasoning From Scratch развивает в отдельных репозиториях.
Если хочется не просто использовать LLM через API, а действительно понять, что происходит внутри трансформера - это один из тех репозиториев, которые стоит пройти руками.
🔗 github.com/rasbt/LLMs-from-scratch
#AI #LLM #MachineLearning #DeepLearning #OpenSource
@Python_Community_ru
🚀 Django 6.1 вышел: меньше магии, больше контроля
Новая версия Django приносит улучшения для production-приложений и работы с базой данных.
Главное новшество — новый подход к загрузке данных моделей.
Теперь можно контролировать, когда Django делает дополнительные запросы:
from django.db import models
books = Book.objects.fetch_mode(
models.FETCH_PEERS
)
Это помогает бороться с проблемой N+1 запросов и лучше контролировать нагрузку на БД.
Новые режимы:
- FETCH_ONE — загружать данные только для текущего объекта;
- FETCH_PEERS — догружать данные сразу для группы объектов;
- RAISE — запрещать неожиданные запросы и ловить проблемы заранее.
Также в Django 6.1:
- поддержка Python 3.12, 3.13 и 3.14;
- PostgreSQL 15+;
- MySQL 8.4+;
- MariaDB 10.11+;
- улучшения cache и внутренних механизмов.
Главная идея релиза:
Django всё меньше скрывает стоимость операций и даёт разработчикам больше контроля над тем, что происходит под капотом.
Подробнее:
@Python_Community_ru
https://www.djangoproject.com/weblog/2026/aug/05/django-61-released/
Новая версия Django приносит улучшения для production-приложений и работы с базой данных.
Главное новшество — новый подход к загрузке данных моделей.
Теперь можно контролировать, когда Django делает дополнительные запросы:
from django.db import models
books = Book.objects.fetch_mode(
models.FETCH_PEERS
)
Это помогает бороться с проблемой N+1 запросов и лучше контролировать нагрузку на БД.
Новые режимы:
- FETCH_ONE — загружать данные только для текущего объекта;
- FETCH_PEERS — догружать данные сразу для группы объектов;
- RAISE — запрещать неожиданные запросы и ловить проблемы заранее.
Также в Django 6.1:
- поддержка Python 3.12, 3.13 и 3.14;
- PostgreSQL 15+;
- MySQL 8.4+;
- MariaDB 10.11+;
- улучшения cache и внутренних механизмов.
Главная идея релиза:
Django всё меньше скрывает стоимость операций и даёт разработчикам больше контроля над тем, что происходит под капотом.
Подробнее:
@Python_Community_ru
https://www.djangoproject.com/weblog/2026/aug/05/django-61-released/
Django Project
Django 6.1 released
Posted by Jacob Walls on Aug. 5, 2026
⚡️ QueryTuner - open-source инструмент, который разбирает SQL-запрос и показывает, почему он может тормозить.
Подключаться к базе вообще не обязательно. Можно просто вставить SQL и получить диагностику.
Поддерживаются сразу 5 диалектов:
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- SQLite
Внутри два уровня анализа.
1. Детерминированный heuristic engine
Он мгновенно ищет типичные anti-patterns:
- SELECT *
- функции внутри WHERE
- leading wildcard в LIKE
- потенциально отсутствующие индексы
- ORDER BY без ограничения результата
- другие проблемы производительности
Сейчас заявлено 12 правил, и для них не нужны ни LLM, ни внешний API.
2. Опциональный AI-слой
Можно подключить Qwen через Hugging Face или OpenAI. Тогда QueryTuner умеет:
- объяснять проблему человеческим языком;
- переписывать запрос;
- предлагать CREATE INDEX;
- объяснять, зачем конкретный индекс нужен.
Особенно интересно, что можно передать ещё и CREATE TABLE DDL. Тогда рекомендации становятся schema-aware: инструмент видит реальные таблицы, колонки и существующие индексы.
Например, для такого запроса:
SELECT *
FROM orders
WHERE YEAR(created_at) = 2026;
Хороший проект для тех случаев, когда SQL уже работает, но хочется понять, почему через полгода он начнёт работать плохо.
#SQL #PostgreSQL #Database #OpenSource #DataEngineering
https://github.com/AutoShiftOps/querytuner
@Python_Community_ru
Подключаться к базе вообще не обязательно. Можно просто вставить SQL и получить диагностику.
Поддерживаются сразу 5 диалектов:
- PostgreSQL
- MySQL
- Oracle
- SQL Server
- SQLite
Внутри два уровня анализа.
1. Детерминированный heuristic engine
Он мгновенно ищет типичные anti-patterns:
- SELECT *
- функции внутри WHERE
- leading wildcard в LIKE
- потенциально отсутствующие индексы
- ORDER BY без ограничения результата
- другие проблемы производительности
Сейчас заявлено 12 правил, и для них не нужны ни LLM, ни внешний API.
2. Опциональный AI-слой
Можно подключить Qwen через Hugging Face или OpenAI. Тогда QueryTuner умеет:
- объяснять проблему человеческим языком;
- переписывать запрос;
- предлагать CREATE INDEX;
- объяснять, зачем конкретный индекс нужен.
Особенно интересно, что можно передать ещё и CREATE TABLE DDL. Тогда рекомендации становятся schema-aware: инструмент видит реальные таблицы, колонки и существующие индексы.
Например, для такого запроса:
SELECT *
FROM orders
WHERE YEAR(created_at) = 2026;
Хороший проект для тех случаев, когда SQL уже работает, но хочется понять, почему через полгода он начнёт работать плохо.
#SQL #PostgreSQL #Database #OpenSource #DataEngineering
https://github.com/AutoShiftOps/querytuner
@Python_Community_ru
🐍 Django-разработчикам: `DEBUG=True` в проде опаснее, чем кажется.
Это не просто красивые страницы ошибок. При включённом DEBUG приложение может раскрывать stack trace, настройки, пути файлов, middleware, URL-паттерны и другие детали окружения.
Главная рекомендация - fail closed:
DEBUG = False
То есть по умолчанию DEBUG всегда выключен, а включается только локально.
Даже staging, QA и preview-среды, доступные из интернета, лучше запускать с DEBUG=False.
Отдельная ловушка - переменные окружения:
DEBUG = os.environ.get("DEBUG", "False") != "False"
Здесь DEBUG=false или DEBUG=0 могут неожиданно превратиться в True.
Лучше явно парсить boolean или использовать django-environ.
Мелкая настройка, которая однажды может спасти production от очень неприятной утечки.
https://lincolnloop.com/blog/setting-djangos-debug-safely/
#Python #Django #Backend #Security #DevOps
@Python_Community_ru
Это не просто красивые страницы ошибок. При включённом DEBUG приложение может раскрывать stack trace, настройки, пути файлов, middleware, URL-паттерны и другие детали окружения.
Главная рекомендация - fail closed:
DEBUG = False
То есть по умолчанию DEBUG всегда выключен, а включается только локально.
Даже staging, QA и preview-среды, доступные из интернета, лучше запускать с DEBUG=False.
Отдельная ловушка - переменные окружения:
DEBUG = os.environ.get("DEBUG", "False") != "False"
Здесь DEBUG=false или DEBUG=0 могут неожиданно превратиться в True.
Лучше явно парсить boolean или использовать django-environ.
Мелкая настройка, которая однажды может спасти production от очень неприятной утечки.
https://lincolnloop.com/blog/setting-djangos-debug-safely/
#Python #Django #Backend #Security #DevOps
@Python_Community_ru
🔥 Stepik Курс: «Python современный AI для разработчика и автоматизации задач» ровно про второе. (https://stepik.org/a/295921/pay?promo=fffd8f81e6cea704)
63 урока, 382 шага, ноль вдохновляющих рассуждений. В каждом уроке разбор темы с рабочим кодом, короткие вопросы и задача с автопроверкой, которая решается на чистом Python без ключей и без интернета.
Внутри то, о чём молчат туториалы: структурированный вывод по схеме, RAG, который не выдумывает, агенты с tool calling, evals и ловля регрессий, кэш, лимиты и очереди, инъекции промптов, локальный запуск через Ollama и vLLM, text-to-SQL с правами только на чтение, pgvector с HNSW, MCP и песочница для кода агента.
Плюс то, что окупается в первый же день: разбор входящей почты, отчёты без выдуманных чисел, вебхуки, боты, сценарии в браузере.
Для тех, кто уже пишет на Python и устал от демок.
72 часа скидка 55% процентов, начать учиться - https://stepik.org/a/295921 (https://stepik.org/a/295921/pay?promo=fffd8f81e6cea704)
@Python_Community_ru
63 урока, 382 шага, ноль вдохновляющих рассуждений. В каждом уроке разбор темы с рабочим кодом, короткие вопросы и задача с автопроверкой, которая решается на чистом Python без ключей и без интернета.
Внутри то, о чём молчат туториалы: структурированный вывод по схеме, RAG, который не выдумывает, агенты с tool calling, evals и ловля регрессий, кэш, лимиты и очереди, инъекции промптов, локальный запуск через Ollama и vLLM, text-to-SQL с правами только на чтение, pgvector с HNSW, MCP и песочница для кода агента.
Плюс то, что окупается в первый же день: разбор входящей почты, отчёты без выдуманных чисел, вебхуки, боты, сценарии в браузере.
Для тех, кто уже пишет на Python и устал от демок.
72 часа скидка 55% процентов, начать учиться - https://stepik.org/a/295921 (https://stepik.org/a/295921/pay?promo=fffd8f81e6cea704)
@Python_Community_ru
🤖 Agency Agents - готовая команда специализированных AI-агентов для разработки, маркетинга, дизайна и бизнеса
Вместо одного универсального «сделай всё» агента проект предлагает десятки узких специалистов: Backend Architect, AI Engineer, DevOps Automator, Code Reviewer, Database Optimizer, SRE, Prompt Engineer, RAG Engineer и многих других.
Каждый агент - это не просто короткий prompt. Внутри описаны:
* роль и стиль общения;
* рабочий процесс;
* ожидаемые deliverables;
* технические примеры;
* критерии успешного результата.
Установить агентов можно в Claude Code, Cursor, Codex, Gemini CLI, OpenCode, Aider, Windsurf и другие инструменты. Есть и отдельное приложение для macOS, Linux и Windows.
Например, можно поставить только engineering-команду:
./scripts/install.sh \
--tool claude-code \
--division engineering
Или конкретных агентов:
./scripts/install.sh \
--tool cursor \
--agent frontend-developer,ui-designer
По сути, Agency Agents превращает папку с промптами в готовый каталог AI-ролей, которые можно подключать к привычному coding agent без создания каждого system prompt с нуля.
Проект распространяется по лицензии MIT.
GitHub:
https://github.com/msitarzewski/agency-agents
@Python_Community_ru
Вместо одного универсального «сделай всё» агента проект предлагает десятки узких специалистов: Backend Architect, AI Engineer, DevOps Automator, Code Reviewer, Database Optimizer, SRE, Prompt Engineer, RAG Engineer и многих других.
Каждый агент - это не просто короткий prompt. Внутри описаны:
* роль и стиль общения;
* рабочий процесс;
* ожидаемые deliverables;
* технические примеры;
* критерии успешного результата.
Установить агентов можно в Claude Code, Cursor, Codex, Gemini CLI, OpenCode, Aider, Windsurf и другие инструменты. Есть и отдельное приложение для macOS, Linux и Windows.
Например, можно поставить только engineering-команду:
./scripts/install.sh \
--tool claude-code \
--division engineering
Или конкретных агентов:
./scripts/install.sh \
--tool cursor \
--agent frontend-developer,ui-designer
По сути, Agency Agents превращает папку с промптами в готовый каталог AI-ролей, которые можно подключать к привычному coding agent без создания каждого system prompt с нуля.
Проект распространяется по лицензии MIT.
GitHub:
https://github.com/msitarzewski/agency-agents
@Python_Community_ru
GitHub
GitHub - msitarzewski/agency-agents: A complete AI agency at your fingertips - From frontend wizards to Reddit community ninjas…
A complete AI agency at your fingertips - From frontend wizards to Reddit community ninjas, from whimsy injectors to reality checkers. Each agent is a specialized expert with personality, processes...
🔥 Kimi K3 на 2,78 ТРИЛЛИОНА параметров запустили на CPU с 8 ГБ RAM. Без GPU, BLAS и фреймворков
Проект kimi-k3-in-c реализует inference Kimi K3 практически с нуля на portable C99. Чекпоинт модели занимает 1,56 ТБ, но пик RAM при запуске составил всего 8,24 ГБ.
Фокус в MoE и стриминге весов. Из 896 экспертов на токен выбираются только 16, а остальные веса не обязаны постоянно лежать в оперативной памяти. Огромная часть модели читается прямо с диска, поверх этого работает LRU-кэш экспертов.
Цена такого трюка очевидна: скорость. При 8 ГБ RAM автор получил около 26,5 секунды на токен, при 64 ГБ уже 19,8 секунды, а на машине с 128+ ГБ, где нужные данные помещаются в память, около 5,6 секунды.
Получается любопытная смена ограничения: гигантскую MoE уже можно заставить работать без серверной фермы. Вопрос теперь скорее в том, сколько диска и времени на токен вы готовы отдать за такой inference.
github.com/FareedKhan-dev/kimi-k3-in-c
#AI #Kimi #LLM #C #LocalAI
@Python_Community_ru
Проект kimi-k3-in-c реализует inference Kimi K3 практически с нуля на portable C99. Чекпоинт модели занимает 1,56 ТБ, но пик RAM при запуске составил всего 8,24 ГБ.
Фокус в MoE и стриминге весов. Из 896 экспертов на токен выбираются только 16, а остальные веса не обязаны постоянно лежать в оперативной памяти. Огромная часть модели читается прямо с диска, поверх этого работает LRU-кэш экспертов.
Цена такого трюка очевидна: скорость. При 8 ГБ RAM автор получил около 26,5 секунды на токен, при 64 ГБ уже 19,8 секунды, а на машине с 128+ ГБ, где нужные данные помещаются в память, около 5,6 секунды.
Получается любопытная смена ограничения: гигантскую MoE уже можно заставить работать без серверной фермы. Вопрос теперь скорее в том, сколько диска и времени на токен вы готовы отдать за такой inference.
github.com/FareedKhan-dev/kimi-k3-in-c
#AI #Kimi #LLM #C #LocalAI
@Python_Community_ru
GitHub
GitHub - FareedKhan-dev/kimi-k3-in-c: A 2.78-trillion-parameter Kimi K3 running inference on a single CPU in 8.24 GB of RAM. Portable…
A 2.78-trillion-parameter Kimi K3 running inference on a single CPU in 8.24 GB of RAM. Portable C99: no BLAS, no framework, no GPU. - FareedKhan-dev/kimi-k3-in-c
Модель показывает отличную точность в ноутбуке, но так и не становится рабочим сервисом. Причина часто не в качестве самой модели, а в архитектуре системы вокруг неё.
07 сентября в 20:00 на открытом уроке курса «ML System Design» вы разберёте, как превратить модель на Python в полноценный ML-сервис. Увидите, как связаны хранение данных, обучение, реестр моделей, сервис инференса и мониторинг.
На занятии рассмотрите весь жизненный цикл модели — от обучения до эксплуатации в постоянно меняющихся условиях. Поймёте, почему высокая точность ещё не гарантирует успешного внедрения и какие инженерные задачи возникают при работе с реальными пользователями и большими объёмами данных.
Урок будет полезен специалистам по данным, ML- и MLOps-инженерам, разработчикам и архитекторам.
Урок проведёт Игорь Стурейко.
https://vk.cc/d0uvuc
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
07 сентября в 20:00 на открытом уроке курса «ML System Design» вы разберёте, как превратить модель на Python в полноценный ML-сервис. Увидите, как связаны хранение данных, обучение, реестр моделей, сервис инференса и мониторинг.
На занятии рассмотрите весь жизненный цикл модели — от обучения до эксплуатации в постоянно меняющихся условиях. Поймёте, почему высокая точность ещё не гарантирует успешного внедрения и какие инженерные задачи возникают при работе с реальными пользователями и большими объёмами данных.
Урок будет полезен специалистам по данным, ML- и MLOps-инженерам, разработчикам и архитекторам.
Урок проведёт Игорь Стурейко.
https://vk.cc/d0uvuc
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🐍 Опытный Python-разработчик рассказал, для каких проектов в 2026 году он уже не выбирает Python первым.
Автор десятилетиями использовал Python практически для всего, но со временем пришёл к простой мысли: хороший универсальный язык не обязан быть лучшим инструментом для каждой задачи.
В презентации разбирается, где ограничения Python начинают перевешивать его удобство и почему для некоторых проектов сегодня разумнее посмотреть на другие языки и экосистемы.
При этом это не очередное «Python умер».
Наоборот, автор по-прежнему активно использует Python и отдельно показывает области, где язык остаётся одним из лучших вариантов.
Получился полезный взгляд без фанатизма: выбирать язык не по привычке, а под конкретную задачу.
#/
#Python #Programming #SoftwareEngineering #Development
@Python_Community_ru
https://menno.io/presentations/not-python-2026/index.html
Автор десятилетиями использовал Python практически для всего, но со временем пришёл к простой мысли: хороший универсальный язык не обязан быть лучшим инструментом для каждой задачи.
В презентации разбирается, где ограничения Python начинают перевешивать его удобство и почему для некоторых проектов сегодня разумнее посмотреть на другие языки и экосистемы.
При этом это не очередное «Python умер».
Наоборот, автор по-прежнему активно использует Python и отдельно показывает области, где язык остаётся одним из лучших вариантов.
Получился полезный взгляд без фанатизма: выбирать язык не по привычке, а под конкретную задачу.
#/
#Python #Programming #SoftwareEngineering #Development
@Python_Community_ru
https://menno.io/presentations/not-python-2026/index.html
🐍 Python-разработчики часто тестируют код с зависимостью от времени. Но обычный mock для дат — это намного сложнее, чем кажется.
Библиотека time-machine решает эту проблему: она позволяет буквально «перемещать время» внутри тестов.
Например:
import datetime as dt
import time_machine
@time_machine.travel("2030-01-01")
def test_future():
assert dt.date.today() == dt.date(2030, 1, 1)
В отличие от популярных подходов вроде freezegun, библиотека не ищет и не заменяет все импорты в проекте.
Она работает на уровне C API CPython, перехватывая функции даты и времени напрямую. Поэтому скорость не зависит от количества загруженных модулей. В бенчмарках time-machine оказался более чем в 100 раз быстрее freezegun на простых сценариях.
Полезно для тестирования:
• подписок и платежей
• истечения токенов
• календарных функций
• планировщиков задач
• логики с дедлайнами
Проект:
https://github.com/adamchainz/time-machine
https://adamj.eu/tech/2026/08/03/python-time-machine-o1-freezegun-on/
@Python_Community_ru
Библиотека time-machine решает эту проблему: она позволяет буквально «перемещать время» внутри тестов.
Например:
import datetime as dt
import time_machine
@time_machine.travel("2030-01-01")
def test_future():
assert dt.date.today() == dt.date(2030, 1, 1)
В отличие от популярных подходов вроде freezegun, библиотека не ищет и не заменяет все импорты в проекте.
Она работает на уровне C API CPython, перехватывая функции даты и времени напрямую. Поэтому скорость не зависит от количества загруженных модулей. В бенчмарках time-machine оказался более чем в 100 раз быстрее freezegun на простых сценариях.
Полезно для тестирования:
• подписок и платежей
• истечения токенов
• календарных функций
• планировщиков задач
• логики с дедлайнами
Проект:
https://github.com/adamchainz/time-machine
https://adamj.eu/tech/2026/08/03/python-time-machine-o1-freezegun-on/
@Python_Community_ru