Коробка с питоном
535 subscribers
49 photos
128 links
Заметки от Python-разработчика: сниппеты, обзоры пакетов, новости и другая полезная информация.
Download Telegram
Коробка с питоном
Проект который я пишу в основном на Django, поэтому в следующее время будет довольно много ресурсов по ней 🌚 Есть задача реализовать импорт/экспорт сущностей (в различных форматах), библиотека django-import-export позволяет сделать это в кратчайшие сроки.…
Кстати про используемый там tablib!

Это очень полезная библиотека, которая позволяет создавать "табличные датасеты" с которыми можно производить некоторые операции (поиск данных, например) или экспортировать их в необходимый формат.

Для тех, кто не понимает что такое "табличный датасет" (tabular data sets) - проще говоря это набор данных в виде таблички.

Сам tablib поддерживает сегрегацию, динамические колонки, тегирование и фильтрование данных. Ну и вишенка на торте - экспорт в почти что угодно. На скриншоте, кстати, пример :)

Github | Документация
#библиотека
Задача - проверять является ли строка содержащая отрицательное число, как бы это не звучало, числом. Choose your hero, а почему - расскажи в комментариях.
Скучали по Django? Вот вам ещё пакетик.

Если вам нужно реализовать историю изменения данных в моделях, то django-simple-history может это сделать для вас.

GitHub | Документация

#django #библиотека
Небольшой хинт, да, снова #django.

У меня есть небольшая задача, в которой мне нужно изменять файл в Celery задаче. Дефолтный update менеджера модели работать не будет, поэтому устанавливаем атрибуты и вызываем save на объекте.

Работать он не будет, потому что QuerySet.update() не вызывает save() на модели, поэтому механизмы сохранения файлов в сторадже отрабатывать не будут.

Первая картинка - моделька, вторая - как оно работает. Ваши варианты можете кидать в коменты, интересно послушать.
Немного занят, чуть позже начну заливать посты в канал. Только сейчас вспомнил, что хотел 2 недели назад хотел подвести итоги ноября, но подвожу их только сейчас 😕

В этом месяце было очень много Django. Возможно, дальше будет чуть больше.

🔗 Ссылочки:
- What the f*ck, Python?
- Django Styleguide
- Python и чистая архитектура в 2021 году

📚 Библиотеки:
- Ormar - ещё одна асинхронная ORM
- Faker - генерируем фейковые данные
- django-import-export
- tablib
- django-simple-history
Коробка с питоном pinned «Немного занят, чуть позже начну заливать посты в канал. Только сейчас вспомнил, что хотел 2 недели назад хотел подвести итоги ноября, но подвожу их только сейчас 😕 В этом месяце было очень много Django. Возможно, дальше будет чуть больше. 🔗 Ссылочки: - What…»
С новым 2022 годом! 🎅

В этом году я буду пытаться подтянуть алгоритмы, поэтому первый пост будет про них.

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

#ссылочки
1
Очень интересный пакет, вдохновленный Rust - impl_pattern. Может использоваться если вы хотите расширить класс (в основном какой-то библиотечный) какими-то методами.

Вы можете зарегистрировать метод для класса с использованием этой библиотеки следующим образом:

from impl_pattern import impl

class Sample:
def __init__(self):
self.value = 10

@impl(Sample)
def plus_one(self: Sample):
self.value += 1

s = Sample()
s.plus_one()

print(s.value)
# 11


Не знаю кто будет это использовать, но как POC выглядит красиво и элегантно.

#библиотека
🐍 CPython скомпилировали в WASM!

WASM - это такой бинарный формат, результат компиляции какого-то языка который позволяет запустить его в браузере при помощи специальной виртуальной машины.

Так вот, наш Python REPL запустили в браузере, можно потыкать. Возможно, скоро мы сможем писать фронтенд на Python, который будет запускаться через WASM...

#новости
Коробка с питоном pinned «Запоздалый итог января! 🔗 Ссылочки: - Про путь attrs - Алгоритмы на нашем любимом - Готовим Celery правильно 📰 Новости: - CPython скомпилировали в WASM 📚 Библиотеки: - Impler - класспатчер для имплементации методов как в Rust 🗒 Заметки: - Про дженерики»
В Python 3.11 для асинхронщины появятся TaskGroup 🎉!

Зачем они нужны?

1. Это более крутая замена asyncio.gather(), так как TaskGroup имеют более понятный, удобный и безопасный API.
2. Как и asyncio.gather(), он необходим чтобы выполнить набор каких-то задач. Если одна из них упадет с ошибкой - остальные задачи могут быть отменены.

С нетерпением ждем :)

#новости #asyncio
1
CPython собирается мигрировать свой баг-трекер (bugs.python.org, BPO) на GitHub Issues.

Ожидается, что этот перенос данных сделает взаимодействие с проектом более удобным и простым, сделает порог входа в проект ниже для новичков. Все-таки к гитхабу уже все успели привыкнуть, и не нужно будет отдельно регистрироваться в странной старомодной системе и учиться с ней работать. Ещё одна причина здесь, конечно же, в том, что BPO застряло на форке от старой версии RoundUp ещё на Python 2, и поддерживать и развивать это сейчас уже довольно проблематично.

В старом баг-трекере уже накопилось около 50k тредов, а некоторые из них ещё и достаточно длинные. По предварительным оценкам, миграция всех этих данных займёт 4-7 дней. Сам процесс сложный и состоит из нескольких шагов, для некоторых придётся привлекать сотрудников GitHub. В итоге, новые ишью будут существовать только на гитхабе, а старый трекер останется существовать в режиме read-only.

Эту миграцию обсуждают и подготавливают уже минимум два года. Звучит как что-то настолько же эпичное, как и переименование главной ветки из master в main. Да, на больших проектах любые манёвры всегда проходят непросто. Надеюсь, в этот раз гитхаб не сломается!

https://discuss.python.org/t/github-issues-migration-is-coming-soon/13791
Совершенно недавно Bloomberg открыл интересный проект - профилировщик memray.

Что может:
- Трассирует каждый вызов функции, поэтому умеет показать стек вызовов.
- Обрабатывает вызовы в C/C++ библиотеках!
- Очень быстрый. Профилирование не вызывает ощутимого замедления программы.
- Генерирует графики и отчеты по использованию памяти.
- Работает с питоновскими и нативными тредами.

Выглядит очень сочно. Может помочь в таких ситуациях:
- Анализировать что именно кушает память в вашей программе, особенно найти участки где происходит много аллокаций.
- Естественно, найти утечки памяти.

#профилировщик
Тут часть ядра pydantic переписали на Rust и он стал в 17 раз быстрее (код бенчмарка тут) чем обычный Pydantic.

Пока что WIP, выглядит многообещающее, но нет самой интеграции с pydantic, поэтому схемы могут делаться только через словари. Целью стоит увеличение скорости работы в ДЕСЯТЬ раз.
1