Немного занят, чуть позже начну заливать посты в канал. Только сейчас вспомнил, что хотел 2 недели назад хотел подвести итоги ноября, но подвожу их только сейчас 😕
В этом месяце было очень много Django. Возможно, дальше будет чуть больше.
🔗 Ссылочки:
- What the f*ck, Python?
- Django Styleguide
- Python и чистая архитектура в 2021 году
📚 Библиотеки:
- Ormar - ещё одна асинхронная ORM
- Faker - генерируем фейковые данные
- django-import-export
- tablib
- django-simple-history
В этом месяце было очень много Django. Возможно, дальше будет чуть больше.
🔗 Ссылочки:
- What the f*ck, Python?
- Django Styleguide
- Python и чистая архитектура в 2021 году
📚 Библиотеки:
- Ormar - ещё одна асинхронная ORM
- Faker - генерируем фейковые данные
- django-import-export
- tablib
- django-simple-history
Коробка с питоном pinned «Немного занят, чуть позже начну заливать посты в канал. Только сейчас вспомнил, что хотел 2 недели назад хотел подвести итоги ноября, но подвожу их только сейчас 😕 В этом месяце было очень много Django. Возможно, дальше будет чуть больше. 🔗 Ссылочки: - What…»
Очень крутой пост про путь такой библиотеки как attrs - можно сказать прародителя датаклассов.
#статья
#статья
Hynek Schlawack
import attrs
An attempt at catharsis. This is a deeply personal blog post about the most influential project I’ve ever created: attrs, the progenitor of modern Python class utilities. I’m retelling its history from my perspective, how it begot dataclasses, and how I’m…
С новым 2022 годом! 🎅
В этом году я буду пытаться подтянуть алгоритмы, поэтому первый пост будет про них.
Вот вам репозиторий на github в котором реализовано огромное количество алгоритмов на Python - от сортировок, до отправки и приёма файлов.
Все примеры отлично откомментированы на английском, поэтому проблем с их пониманием возникнуть не должно.
#ссылочки
В этом году я буду пытаться подтянуть алгоритмы, поэтому первый пост будет про них.
Вот вам репозиторий на github в котором реализовано огромное количество алгоритмов на Python - от сортировок, до отправки и приёма файлов.
Все примеры отлично откомментированы на английском, поэтому проблем с их пониманием возникнуть не должно.
#ссылочки
GitHub
GitHub - TheAlgorithms/Python: All Algorithms implemented in Python
All Algorithms implemented in Python. Contribute to TheAlgorithms/Python development by creating an account on GitHub.
❤1
Очень интересный пакет, вдохновленный Rust - impl_pattern. Может использоваться если вы хотите расширить класс (в основном какой-то библиотечный) какими-то методами.
Вы можете зарегистрировать метод для класса с использованием этой библиотеки следующим образом:
Не знаю кто будет это использовать, но как POC выглядит красиво и элегантно.
#библиотека
Вы можете зарегистрировать метод для класса с использованием этой библиотеки следующим образом:
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 выглядит красиво и элегантно.
#библиотека
GitHub
GitHub - roman-right/impler: Implement methods and interfaces outside classes
Implement methods and interfaces outside classes. Contribute to roman-right/impler development by creating an account on GitHub.
Немного старая (2019 год), но все же актуальная статья о том, как правильно готовить Celery.
#статья #habr
#статья #habr
Хабр
50 оттенков Celery
Вам сюда, если хотите знать, как приручить широкоизвестный в кругах Python-разработчиков фреймворк под названием Сelery. И даже, если в вашем проекте Celery уверенно выполняет базовые...
🐍 CPython скомпилировали в WASM!
WASM - это такой бинарный формат, результат компиляции какого-то языка который позволяет запустить его в браузере при помощи специальной виртуальной машины.
Так вот, наш Python REPL запустили в браузере, можно потыкать. Возможно, скоро мы сможем писать фронтенд на Python, который будет запускаться через WASM...
#новости
WASM - это такой бинарный формат, результат компиляции какого-то языка который позволяет запустить его в браузере при помощи специальной виртуальной машины.
Так вот, наш Python REPL запустили в браузере, можно потыкать. Возможно, скоро мы сможем писать фронтенд на Python, который будет запускаться через WASM...
#новости
Twitter
Tushar Sadhwani
🐍Python news: CPython's main branch now compiles to webassembly! Thanks to @ethanhs and @ChristianHeimes Meaning: You can natively download and run Python in the browser. It's about a 5MB package right now. There's plans to make it smaller. Try it here: repl.ethanhs.me
Запоздалый итог января!
🔗 Ссылочки:
- Про путь attrs
- Алгоритмы на нашем любимом
- Готовим Celery правильно
📰 Новости:
- CPython скомпилировали в WASM
📚 Библиотеки:
- Impler - класспатчер для имплементации методов как в Rust
🗒 Заметки:
- Про дженерики
🔗 Ссылочки:
- Про путь attrs
- Алгоритмы на нашем любимом
- Готовим Celery правильно
📰 Новости:
- CPython скомпилировали в WASM
📚 Библиотеки:
- Impler - класспатчер для имплементации методов как в Rust
🗒 Заметки:
- Про дженерики
Коробка с питоном pinned «Запоздалый итог января! 🔗 Ссылочки: - Про путь attrs - Алгоритмы на нашем любимом - Готовим Celery правильно 📰 Новости: - CPython скомпилировали в WASM 📚 Библиотеки: - Impler - класспатчер для имплементации методов как в Rust 🗒 Заметки: - Про дженерики»
В Python 3.11 для асинхронщины появятся TaskGroup 🎉!
Зачем они нужны?
1. Это более крутая замена
2. Как и
С нетерпением ждем :)
#новости #asyncio
Зачем они нужны?
1. Это более крутая замена
asyncio.gather()
, так как TaskGroup имеют более понятный, удобный и безопасный API.2. Как и
asyncio.gather()
, он необходим чтобы выполнить набор каких-то задач. Если одна из них упадет с ошибкой - остальные задачи могут быть отменены.С нетерпением ждем :)
#новости #asyncio
X (formerly Twitter)
Yury Selivanov (@1st1) on X
Exciting news: @gvanrossum has just merged TaskGroups to #asyncio. They will be part of Python 3.11 and I can't hold my excitement! 🚀
❤1
Forwarded from Питонические атаки
CPython собирается мигрировать свой баг-трекер (bugs.python.org, BPO) на GitHub Issues.
Ожидается, что этот перенос данных сделает взаимодействие с проектом более удобным и простым, сделает порог входа в проект ниже для новичков. Все-таки к гитхабу уже все успели привыкнуть, и не нужно будет отдельно регистрироваться в странной старомодной системе и учиться с ней работать. Ещё одна причина здесь, конечно же, в том, что BPO застряло на форке от старой версии RoundUp ещё на Python 2, и поддерживать и развивать это сейчас уже довольно проблематично.
В старом баг-трекере уже накопилось около 50k тредов, а некоторые из них ещё и достаточно длинные. По предварительным оценкам, миграция всех этих данных займёт 4-7 дней. Сам процесс сложный и состоит из нескольких шагов, для некоторых придётся привлекать сотрудников GitHub. В итоге, новые ишью будут существовать только на гитхабе, а старый трекер останется существовать в режиме read-only.
Эту миграцию обсуждают и подготавливают уже минимум два года. Звучит как что-то настолько же эпичное, как и переименование главной ветки из
https://discuss.python.org/t/github-issues-migration-is-coming-soon/13791
Ожидается, что этот перенос данных сделает взаимодействие с проектом более удобным и простым, сделает порог входа в проект ниже для новичков. Все-таки к гитхабу уже все успели привыкнуть, и не нужно будет отдельно регистрироваться в странной старомодной системе и учиться с ней работать. Ещё одна причина здесь, конечно же, в том, что BPO застряло на форке от старой версии RoundUp ещё на Python 2, и поддерживать и развивать это сейчас уже довольно проблематично.
В старом баг-трекере уже накопилось около 50k тредов, а некоторые из них ещё и достаточно длинные. По предварительным оценкам, миграция всех этих данных займёт 4-7 дней. Сам процесс сложный и состоит из нескольких шагов, для некоторых придётся привлекать сотрудников GitHub. В итоге, новые ишью будут существовать только на гитхабе, а старый трекер останется существовать в режиме read-only.
Эту миграцию обсуждают и подготавливают уже минимум два года. Звучит как что-то настолько же эпичное, как и переименование главной ветки из
master
в main
. Да, на больших проектах любые манёвры всегда проходят непросто. Надеюсь, в этот раз гитхаб не сломается!https://discuss.python.org/t/github-issues-migration-is-coming-soon/13791
Discussions on Python.org
GitHub Issues Migration is coming soon
As you might know, the Steering Council is working on migrating the data that is currently residing in Roundup at https://bugs.python.org/ (BPO) into the GitHub issues of the CPython repository hosted there. The ultimate goal is to move user- and core developer…
Совершенно недавно Bloomberg открыл интересный проект - профилировщик memray.
Что может:
- Трассирует каждый вызов функции, поэтому умеет показать стек вызовов.
- Обрабатывает вызовы в C/C++ библиотеках!
- Очень быстрый. Профилирование не вызывает ощутимого замедления программы.
- Генерирует графики и отчеты по использованию памяти.
- Работает с питоновскими и нативными тредами.
Выглядит очень сочно. Может помочь в таких ситуациях:
- Анализировать что именно кушает память в вашей программе, особенно найти участки где происходит много аллокаций.
- Естественно, найти утечки памяти.
#профилировщик
Что может:
- Трассирует каждый вызов функции, поэтому умеет показать стек вызовов.
- Обрабатывает вызовы в C/C++ библиотеках!
- Очень быстрый. Профилирование не вызывает ощутимого замедления программы.
- Генерирует графики и отчеты по использованию памяти.
- Работает с питоновскими и нативными тредами.
Выглядит очень сочно. Может помочь в таких ситуациях:
- Анализировать что именно кушает память в вашей программе, особенно найти участки где происходит много аллокаций.
- Естественно, найти утечки памяти.
#профилировщик
Тут часть ядра pydantic переписали на Rust и он стал в 17 раз быстрее (код бенчмарка тут) чем обычный Pydantic.
Пока что WIP, выглядит многообещающее, но нет самой интеграции с pydantic, поэтому схемы могут делаться только через словари. Целью стоит увеличение скорости работы в ДЕСЯТЬ раз.
Пока что WIP, выглядит многообещающее, но нет самой интеграции с pydantic, поэтому схемы могут делаться только через словари. Целью стоит увеличение скорости работы в ДЕСЯТЬ раз.
GitHub
GitHub - pydantic/pydantic-core: Core validation logic for pydantic written in rust
Core validation logic for pydantic written in rust - pydantic/pydantic-core
❤1
Почти во всех крупных и средних компаниях встречаю Microsoft Exchange Web Services (EWS) в качестве сервера почты, календаря и так далее.
Совершенно недавно мне попалась задача, где нужно было получать из папки новые письма, парсить их содержимое и выносить исходя из этого содержимого решения - перенаправить их в чат, переслать на почтовый ящик, создать встречу и так далее. И тут мне повезло - в компании использовался EWS.
Поможет автоматизировать взаимодействие с ним exchangelib. Библиотека представляет из себя в основном ORM в джанговском стиле. У неё отличная документация, написаны тесты и что самое главное - для моей задачи там реализована система подписки на эвенты.
#библиотека
Совершенно недавно мне попалась задача, где нужно было получать из папки новые письма, парсить их содержимое и выносить исходя из этого содержимого решения - перенаправить их в чат, переслать на почтовый ящик, создать встречу и так далее. И тут мне повезло - в компании использовался EWS.
Поможет автоматизировать взаимодействие с ним exchangelib. Библиотека представляет из себя в основном ORM в джанговском стиле. У неё отличная документация, написаны тесты и что самое главное - для моей задачи там реализована система подписки на эвенты.
#библиотека
GitHub
GitHub - ecederstrand/exchangelib: Python client for Microsoft Exchange Web Services (EWS)
Python client for Microsoft Exchange Web Services (EWS) - ecederstrand/exchangelib
Очень хороший доклад про SQLAlchemy. Автор рассказывает о Query, состоянии запроса внутри сессии, техниках загрузок связанных таблиц, отношениях и о многих других полезных вещах.
Не смотря на то, что докладу уже 2 года, многие вещи (всё таки работа с асинком поменялась) до сих пор актуальны.
#посмотреть #sqlalchemy
Не смотря на то, что докладу уже 2 года, многие вещи (всё таки работа с асинком поменялась) до сих пор актуальны.
#посмотреть #sqlalchemy
YouTube
Денис Катаев, Tinkoff.ru «Пишем приложения на SQLAlchemy»
Конференция PYCON RUSSIA 2019
https://pycon.ru
https://pycon.ru
Сегодня пост будет об ORM'ке - piccolo, которая работает с Postgres и SQLite. А еще в асинхронщину умеет.
Отличается эта ORM от остальных тем, что внутри её огромная куча батареек - моделька юзера, аутентификация, миграции, админка и ещё многое другое.Прям как Джанга!
Прекрасно подходит, если вам нужно быстро набросать какой-то REST API. Умеет из под коробки работать с FastAPI, BlackSheep и Xpresso.
Я вот смотрю на все это многообразие и думаю - неужели Django скоро станет архаизмом?
Github | Пример с FastAPI
#библиотека
Отличается эта ORM от остальных тем, что внутри её огромная куча батареек - моделька юзера, аутентификация, миграции, админка и ещё многое другое.
Я вот смотрю на все это многообразие и думаю - неужели Django скоро станет архаизмом?
Github | Пример с FastAPI
#библиотека
GitHub
GitHub - piccolo-orm/piccolo_admin: A powerful web admin for your database.
A powerful web admin for your database. Contribute to piccolo-orm/piccolo_admin development by creating an account on GitHub.
Раз уж заговорили об ORMках, оказывается существуют ORMки (точнее ODMки, в комментариях поправили) даже для MongoDB! Одна из них, под наш любимый питон - это Beanie.
Сама библиотекапредставляет из себя очередное скрещивание ежа с ужом базирована на Motor и Pydantic, с миграциями схемы прямиком из под коробки. А ещё она асинхронная.
По опыту использования могу сказать что в некоторых случаях она не такая уж и удобная как mongoengine, в котором была нужная для меня фишка - document inheritance. Это когда вы можете наследовать классы документов без боли и со всякими удобными фишками. Например, если вам нужно посчитать все объекты Page в БД, даже которые имеются в
В базовых случаях, как по мне - всё сделано удобно, а если возникнут вопросы по использованию - можно обратиться к автору в дискорд-канал библиотеки, он действительно там сидит и отвечает на вопросы.
#библиотека
Сама библиотека
По опыту использования могу сказать что в некоторых случаях она не такая уж и удобная как mongoengine, в котором была нужная для меня фишка - document inheritance. Это когда вы можете наследовать классы документов без боли и со всякими удобными фишками. Например, если вам нужно посчитать все объекты Page в БД, даже которые имеются в
DatedPage(Page)
(да, тут DatedPage
наследует модель Page
) вы просто делаете Page.objects().count()
и они считаются. Вообще, рекомендую почитать вот это issue, там есть довольно интересное решение со стороны Pydantic.В базовых случаях, как по мне - всё сделано удобно, а если возникнут вопросы по использованию - можно обратиться к автору в дискорд-канал библиотеки, он действительно там сидит и отвечает на вопросы.
#библиотека
GitHub
GitHub - BeanieODM/beanie: Asynchronous Python ODM for MongoDB
Asynchronous Python ODM for MongoDB. Contribute to BeanieODM/beanie development by creating an account on GitHub.
Опять пост про ORM, надеюсь пока последний (хотя, кто его знает...)
Новая фича с рекомендациями репозиториев на гитхабе меня радует. Нашел вот такой cheatsheet для Django ORM, описывает пример запроса и генерируемый SQL-код. Очень полезно, если вы знаете SQL, но не знаете как выразить тот или иной запрос через Django ORM.
#ссылочки #django
Новая фича с рекомендациями репозиториев на гитхабе меня радует. Нашел вот такой cheatsheet для Django ORM, описывает пример запроса и генерируемый SQL-код. Очень полезно, если вы знаете SQL, но не знаете как выразить тот или иной запрос через Django ORM.
#ссылочки #django
🔥1
Если у вас был вопрос, как организовать очередь задач, которая умеет из под коробки в async - у меня для вас прекрасная новость.
Есть такой проект arq - это очередь задач, построенная на asyncio. Так как она асинхронная, с помощью неё можно добавлять задачи в очередь не блокируя основной поток, а сами задачи могут быть корутинами.
Либа очень маленькая, сам автор раньше контрибутил в rq. А еще, это тот же человек, который написал pydantic 👀.
#библиотека
Есть такой проект arq - это очередь задач, построенная на asyncio. Так как она асинхронная, с помощью неё можно добавлять задачи в очередь не блокируя основной поток, а сами задачи могут быть корутинами.
Либа очень маленькая, сам автор раньше контрибутил в rq. А еще, это тот же человек, который написал pydantic 👀.
#библиотека
У меня тут небольшая хотелка возникла, я захотел исходя из описаний полей в Pydantic модели генерировать запрос на выборку с фильтрацией из БД.
Оказывается, кто-то уже сделал похожее для Django. Выглядит неплохо, но всё же саму генерацию запроса я бы вынес в отдельный класс :)
#django #pydantic #eng #статья
Оказывается, кто-то уже сделал похожее для Django. Выглядит неплохо, но всё же саму генерацию запроса я бы вынес в отдельный класс :)
#django #pydantic #eng #статья
Medium
Extending Pydantic use cases with Django — Filtering
Some time ago I came across an article of a developer who was sharing his ideas about hype around usage of Pydantic library in Django…