Telegram Web Link
🖥 Textcase — это библиотека на языке Python, созданная для преобразования строк в разные стили написания.

Библиотека поддерживает такие форматы, как snake_case, kebab-case, camelCase, PascalCase, CONSTANT_CASE, а также преобразование в нижний, верхний и титульный регистры.

Основные характеристики Textcase:
- Обработка акронимов: библиотека корректно распознает и форматирует акронимы в строках, например, HTTPRequest.
GitHub

- Поддержка символов вне ASCII: она правильно работает с символами, которые выходят за пределы ASCII. Однако библиотека не делает предположений о языке ввода; например, диграф 'ij' в голландском языке не будет капитализирован как единый символ.

- Высокая производительность: библиотека реализована эффективно, без использования регулярных выражений.

- Отсутствие внешних зависимостей: библиотека не требует внешних зависимостей, что делает ее легкой и простой для интеграции.

Установка:
pip install textcase

Пример использования:

from textcase import case, convert

print(convert("example string", case.SNAKE)) # example_string
print(convert("ExampleString", case.KEBAB)) # example-string
print(convert("example-string", case.CAMEL)) # exampleString
print(convert("Example String", case.PASCAL)) # ExampleString

🖥 Github (https://github.com/zobweyt/textcase)
📌 Документация (https://zobweyt.github.io/textcase/#features)
@Python_Community_ru
📚 "Космический Python: Создание Чистых Архитектур для Приветствия Неудач"

Это бесплатная книга, которая поможет читателю освоить процесс разработки сложного приложения на Python с применением современных архитектурных подходов.

Целевая аудитория: Python-разработчики, которые уже знают основы языка, но хотят научиться проектировать и создавать крупные приложения, избегая плохой структуры проектов и "спагетти-кода".

Ключевые темы и концепции, упомянутые в предисловии:
Архитектурные паттерны: Особое внимание уделяется чистым архитектурам (Clean Architecture), таким как Порты и Адаптеры (Гексагональная Архитектура). Основная идея заключается в изоляции ядра бизнес-логики от внешних зависимостей, таких как базы данных, веб-фреймворки и внешние API.
Предметно-ориентированное проектирование (Domain-Driven Design - DDD): Как моделировать сложную бизнес-логику, сосредоточившись на предметной области.
Событийно-ориентированная архитектура (Event-Driven Architecture - EDA): Использование событий для взаимодействия компонентов системы, что способствует слабой связанности.
Разделение ответственности запросов и команд (Command Query Responsibility Segregation - CQRS): Паттерн для разделения операций чтения и записи данных, что может повысить производительность и масштабируемость.
Тестирование: Подчеркивается важность тестирования на разных уровнях (модульное, интеграционное, сквозное) как неотъемлемой части процесса разработки и поддержки архитектуры.
Управление зависимостями (Dependency Injection): Техники для создания слабосвязанных компонентов.

🔗 Книга (https://www.cosmicpython.com/book/introduction.html)
@Python_Community_ru
🖥 Вот 17 лучших репозиториев на GitHub для изучения Python с ссылками:

1. 30-Days-Of-Python (https://github.com/Asabeneh/30-Days-Of-Python) — 30-дневный челлендж по основам Python.
2. Python Basics (https://github.com/mikeckennedy/python-basics-exercises) — основы Python для новичков, просто и с примерами.
3. Learn Python (https://github.com/trekhleb/learn-python) — справочник с кодом, пояснениями и практическими примерами.
4. Python Guide (https://github.com/realpython/python-guide) — гайд по практикам, инструментам и сложным темам.
5. Learn Python 3 (https://github.com/jerry-git/learn-python3) — руководство по Python 3 с практическими заданиями для начинающих.
6. Python Programming Exercises (https://github.com/zhiwehu/Python-programming-exercises) — более 100 задач по Python.
7. Coding Problems (https://github.com/MTrajK/coding-problems) — алгоритмы и структуры данных для собеседований.
8. Project-Based-Learning (https://github.com/practical-tutorials/project-based-learning) — изучение Python через реальные проекты.
9. Projects (https://github.com/karan/Projects) — идеи проектов для улучшения навыков.
10. 100-Days-Of-ML-Code (https://github.com/Avik-Jain/100-Days-Of-ML-Code) — машинное обучение на Python шаг за шагом.
11. TheAlgorithms/Python (https://github.com/TheAlgorithms/Python) — алгоритмы и структуры данных на Python.
12. Amazing-Python-Scripts (https://github.com/aviaryan/amazing-python-scripts) — полезные скрипты: от утилит до автоматизации.
13. Geekcomputers/Python (https://github.com/geekcomputers/Python) — скрипты для работы с сетью, файлами и задачами.
14. Materials (https://github.com/realpython/materials) — код и проекты от Real Python.
15. Awesome Python (https://github.com/vinta/awesome-python) — лучшие фреймворки, библиотеки и ресурсы.
16. 30-Seconds-of-Python (https://github.com/30-seconds/30-seconds-of-python) — короткие сниппеты для быстрого решения задач.
17. Python Reference (https://github.com/rasbt/python_reference) — скрипты, туториалы и полезные советы.

#python #github #learning
@Python_Community_ru
🗂️ Ballista — это распределённый движок для выполнения запросов, основанный на Apache DataFusion. Этот инструмент позволяет одновременно обрабатывать запросы на нескольких узлах, при этом сохраняя совместимость с существующими SQL-запросами, включая сложные операции объединения, подзапросы и общие табличные выражения.

Процесс развертывания упрощён благодаря использованию Docker-образов и поддержке Kubernetes, а встроенные бенчмарки показывают, что Ballista уже может соперничать со Spark по скорости обработки запросов, подобных TPC-H.

🤖 GitHub (https://github.com/apache/datafusion-ballista)
@Python_Community_ru
🖥 Watchdog — это библиотека, которая предназначена для мониторинга изменений в файловой системе и имеет стильный дизайн.

Этот инструмент позволяет фиксировать различные операции с файлами и папками, такие как создание, удаление, модификация и перемещение, и работает в средах Linux, macOS и Windows.

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

🔗 Watchdog (https://github.com/gorakhargosh/watchdog)
🔗 Документация (https://python-watchdog.readthedocs.io/en/stable/quickstart.html)
@Python_Community_ru
🖥 DeepGit: Repo Discovery — это бесплатный инструмент на основе искусственного интеллекта, который помогает находить полезные репозитории на GitHub с помощью семантического поиска.

Он построен на системе LangGraph и использует анализ кода, документации и отзывы сообщества, чтобы выделять малоизвестные, но многообещающие проекты.

Ключевые возможности:
Семантическая проверка: ищет не просто по ключевым словам, а «понимает» содержание.
Многогранный анализ: учитывает не только код, но и документацию, активность и отзывы сообщества.
Интеграция с GitHub: сосредоточен на этом экосистемном источнике, упрощая выбор качественных проектов.

🖥 GitHub (https://github.com/zamalali/DeepGit)
@Python_Community_ru
Ibis — это библиотека, которая сочетает в себе SQL и Python.

Устали постоянно переключаться между SQL и pandas?

С помощью Ibis вы можете использовать SQL-запросы и Python-пайплайны в одном коде.

Установка (с поддержкой DuckDB и примерами):

```
pip install 'ibis-framework[duckdb,examples]'
```

Пример:

```python
import ibis
penguins = ibis.examples.penguins.fetch()

# SQL внутри Python
res = penguins.sql("""
SELECT species, island, count(*) AS count
FROM penguins GROUP BY 1, 2
""")

# Фильтрация и сортировка в стиле Python
res.order_by("count")
```

Результат:

```
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓
┃ species ┃ island ┃ count ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩
│ string │ string │ int64 │
├───────────┼───────────┼───────┤
│ Adelie │ Biscoe │ 44 │
│ Adelie │ Torgersen │ 52 │
│ Adelie │ Dream │ 56 │
│ Chinstrap │ Dream │ 68 │
│ Gentoo │ Biscoe │ 124 │
└───────────┴───────────┴───────┘
```

Что может Ibis:
— SQL-прослойка для работы с датафреймами
— Один и тот же код работает с DuckDB, PostgreSQL, BigQuery, SQLite и другими
— Унифицированный синтаксис, не зависящий от движка
— Отлично подходит для пайплайнов в области data science

Где может пригодиться:
— Аналитика
— Дашборды
— EDA и быстрые прототипы
— Интеграция SQL в ноутбуках без особых усилий

Совместим с Jupyter, Airflow и всей экосистемой Python.

Подробнее [здесь](http://bis-project.org/)
На Github [здесь](https://github.com/ibis-project/ibis)
@Python_Community_ru
🗣 OuteTTS 1.0 — это современный инструмент с открытым исходным кодом для синтеза речи (Text-to-Speech), который фокусируется на высоком качестве озвучивания, клонировании голосов и поддержке множества языков. Основные функции:

🔊 Ключевые возможности:
Высокая производительность:
Способен создавать аудио длительностью до 42 секунд (~8192 токена) за один раз.

Тем не менее, для достижения наилучших результатов рекомендуется ограничивать объем до ~7000 токенов.

- Поддержка клонирования голоса:
Использует образец голоса длиной, например, 10 секунд. В этом случае контекст для синтеза уменьшается: доступно около 32 секунд активного контента (из 42).

- 20 языков:
Поддерживает озвучивание на 20 различных языках, что делает его универсальным решением для мультиязычных проектов.

🛠️ Под капотом:
Хотя в описании не так много деталей о модели, из репозитория на GitHub можно понять, что:

Используются современные архитектуры трансформеров для TTS.

Поддерживается реалистичное клонирование голоса по короткому фрагменту.

Скорость генерации и качество аудио соответствуют лучшим TTS-системам с открытым кодом.

Установка:
git clone https://github.com/edwko/OuteTTS.git
cd OuteTTS
pip install -r requirements.txt

python
from outetts import OuteTTS

tts = OuteTTS(
reference_speaker_path="reference_audio/igor_voice.wav",
language="ru" # поддерживаются и другие языки, например: "en", "ja"
)

text = "Привет, Python разработчик! Я твой кастомный голосовой ассистент."
audio = tts.generate(text)

with open("output.wav", "wb") as f:
f.write(audio)

📥 Ссылка на репозиторий (https://github.com/edwko/OuteTTS)
@Python_Community_ru
🔌 python-kasa — это библиотека для управления умными устройствами TP-Link с помощью Python.

Если у вас есть умные розетки, лампы или другие устройства TP-Link и вы хотите их автоматизировать через Python, стоит обратить внимание на эту библиотеку. С её помощью можно легко включать и выключать устройства, проверять их статус и даже управлять ими через командную строку. Поддерживаются как модели Kasa, так и Tapo, включая розетки, выключатели, лампы и даже камеры.

🤖 GitHub (https://github.com/python-kasa/python-kasa)
@Python_Community_ru
🚀 Как Duolingo удалось увеличить производительность микросервисов на 40% с помощью асинхронного Python 🐍

Duolingo поделилась тем, как им удалось существенно улучшить эффективность своих Python-сервисов, перейдя на использование async/await, и сделали это не ради моды, а для снижения затрат.

💸 Мотивация: повышение производительности и уменьшение расходов
Duolingo управляет множеством микросервисов, которые обрабатывают большие объемы трафика. Несмотря на высокую нагрузку, многие их Python-сервисы простаивали в ожидании ввода-вывода — например, при сетевых запросах или взаимодействии с базой данных. Это приводило к неэффективному использованию процессора, и, соответственно, деньги на облачный хостинг расходовались впустую.

Асинхронный код — это способ “переключаться” между задачами во время ожидания, что позволяет более эффективно использовать процессор. Именно это и стало главной мотивацией: не просто стать асинхронными, а сократить расходы.

⚙️ Как проходила миграция
Процесс был постепенным и тщательно продуманным. Вот ключевые шаги:

Переход не “всё или ничего”
Команда не начала с переписывания всего сервиса с нуля. Они начали с изменения отдельных маршрутов на async def, добавляя асинхронность по частям.

Постепенная адаптация инструментов
Пришлось обновить библиотеки и инструменты внутри компании:
HTTP-клиент переписали с использованием aiohttp,
систему аутентификации адаптировали к async-контекстам,
обновили логирование, трассировку и метрики для работы с async-архитектурой.

Тестирование и инфраструктура
Асинхронные изменения потребовали пересмотра тестов. Они внедрили поддержку pytest-asyncio и переосмыслили подход к мокам и фикстурам.

Постепенный запуск в продакшене
Сначала маршруты работали в синхронном режиме. Затем их перевели в асинхронный режим и замерили разницу. Это помогло выявить “узкие места” до массового внедрения.

📈 Результаты: +40% производительности на экземпляр
Эффективнее стал использоваться процессор у каждого экземпляра микросервиса.
Уменьшилось среднее время ответа (latency).
Снизилось количество необходимых экземпляров — экономия в деньгах.
Код стал легче масштабировать и поддерживать в среде с высокой интенсивностью ввода-вывода.

Пока один запрос “ждет”, процессор может выполнять другие задачи.

🔍 Выводы
Duolingo подчеркивает:
асинхронность не нужна “просто потому что это модно”.
Но если у вас сервис с большим числом операций ввода-вывода и важна производительность — асинхронный Python может обеспечить реальный прирост и экономию.

Оригинальный пост (https://blog.duolingo.com/async-python-migration/)

@Python_Community_ru
🧠 Задача на внимание и знание подводных камней в Python

Что выведет данный код?

def make_funcs():
funcs = []
for i in range(3):
def wrapper(x=i):
return lambda: x
funcs.append(wrapper())
return funcs

a, b, c = make_funcs()
print(a(), b(), c())

Варианты ответа:

A) 0 1 2
B) 2 2 2
C) 0 0 0
D) Ошибка на этапе выполнения

Ответ: 0 1 2

📘 Объяснение:
🔹 Цикл for i in range(3) проходит по значениям 0, 1, 2.

🔹 В каждой итерации вызывается wrapper(x=i) — это копирует текущее значение i в локальную переменную x.

🔹 Затем возвращается lambda: x, которая запоминает это конкретное значение x.

🔹 В итоге:

a() → 0

b() → 1

c() → 2

Если бы мы не использовали x=i по умолчанию, а написали просто lambda: i, все функции замкнули бы одну и ту же переменную i, и на момент вызова она бы уже была равна 3.

@Python_Community_ru
🐍 Задача по Python: Замыкания и области видимости

Что покажет следующий код?


def outer():
x = 5
def inner():
nonlocal x
x += 1
return x
return inner

f = outer()
print(f())
print(f())
print(f())


Варианты ответа:
A)

7
8


B)

5
5


C)

6
6


D) Ошибка выполнения

---

Правильный ответ: A

Почему:
Функция outer создаёт замыкание. Переменная x сохраняется между вызовами f, так как inner замыкает x и изменяет её с помощью nonlocal. Это классический пример использования замыканий в Python.

@Python_Community_ru
Строковый метод translate позволяет заменять или удалять несколько символов в строке за один раз. Это похоже на множественные вызовы метода replace.

```python
import string

s = "Hello, world!"
print(s.translate(str.maketrans("", "", string.punctuation)))
# Hello world
```

Метод translate ожидает «таблицу перевода», которую мы создаем с помощью вспомогательного метода класса maketrans.

Третий аргумент (string.punctuation в примере) — это строка символов, которые мы хотим удалить.

Значение string.punctuation включает в себя следующие символы:
!#$%&'()*+,-./:;?@[\]^_{|}~`

Суть шпаргалки заключается в том, что она демонстрирует, как эффективно удалить все стандартные знаки препинания из строки в Python, используя комбинацию методов str.maketrans для создания инструкции по удалению и str.translate для применения этой инструкции к строке.

@Python_Community_ru
2025/07/02 02:08:46
Back to Top
HTML Embed Code: