Коробка с питоном
530 subscribers
49 photos
128 links
Заметки от Python-разработчика: сниппеты, обзоры пакетов, новости и другая полезная информация.
Download Telegram
Небольшой хинт про использование Poetry в Docker - зависимости можно экспортировать в обычный requirements.txt, таким образом избегая установки и обновления poetry.

Если вам необходимо просто установить зависимости - экспортируйте их в requirements.txt. А дальше ставьте их как обычно, через pip.

#poetry #docker
Коробка с питоном
Небольшой хинт про использование Poetry в Docker - зависимости можно экспортировать в обычный requirements.txt, таким образом избегая установки и обновления poetry. Если вам необходимо просто установить зависимости - экспортируйте их в requirements.txt. А…
Костылерование и велосипедостроение продолжается 🗿!

Делаю бота в телеге, решил при помощи Github Actions прогонять тесты в докере и дальше деплоить. Менеджмент зависимостей через poetry.
Из-за того что poetry ставит кучу ненужных мне вещей, хочется экспортить мои зависимости в requirements.txt. Первой идеей был git hook, но у нас тут Github Actions есть, давайте генерировать при помощи него 🗿

Результатом стал вот такой workflow. Оно ставит Ubuntu 20.04, Python 3.9 и Poetry 1.1.7. После чего экспортит зависимости и пушит их вам в репозиторий.

Зачем я это сделал? Не понятно, интерес иногда делает веселые вещи.
#github #poetry
Ручной проход по списку

Задачка: нужно пройти по списку не используя цикл for.

Решение у этой задачи достаточно простое - можно использовать функцию next() и ловить исключение StopIteration. На скриншоте можно увидеть пример с использованием цикла while.

Здесь мы получаем итератор - это такой объект, который облегчает навигацию по коллекциям. Дальше в цикле вызываем next(), который получает следующий элемент и так до тех пор пока элементы не закончатся - индикатором этого будет вызов исключения StopIteration.
#std
aiomisc - огромное количество различных утилит для asyncio.

Из самых полезных утилит для себя выделил возможность создавать энтрипоинты с логгированием, огромное количество классов-сервисов (PeriodicService, CronService и т.д.), работа с потоками и управление сигналами.

GitHub | Документация
#библиотека #asyncio
Предложение выпилить GIL продолжают активно обсуждать.

На ежегодный Python core development sprint пригласили Sam Gross (автор nogil), и задавали ему много разных вопросов. Все под впечатлением. Всерьёз обсуждается вливание этого экспериментального форка в основной код CPython, но спешить с этим точно не будут, потому что изменения такого масштаба в интерпретаторе потребуют адаптации многих библиотек и пользовательского кода.

Изменение крупное, но если его добавлять небольшими кусками и растянуть этот процесс на несколько лет, то получится избежать Python 4. А Python 4 никто не хочет.

Сэма пригласили присоединиться к числу core-разработчиков интерпретатора. Łukasz Langa будет его менторить.

Пока что всё выглядит очень оптимистично. Ждите Python 3.20 без GIL 😅

https://lukasz.langa.pl/5d044f91-49c1-4170-aed1-62b6763e6ad0/

#gil
Коробка с питоном pinned «Итоги октября! 🗒 Заметки: - Про Poetry в Docker - Генерация requirements.txt через Poetry в Github Actions - Ручной проход по списку 📚Библиотеки: - anytree - aiomisc»
What the f*ck Python - репозиторий на Github, в котором собраны некоторые интересные примеры с объяснениями, почему происходят те или иные вещи в Python.

#ссылочки
Ormar - очень интересная и небольшая асинхронная ORM, которая поддерживает Postgres, MySQL и SQLite. Построена на базе Pydantic и SQLAlchemy.

Суть проекта - создать легкую ORM, которая могла бы использоваться напрямую (в цикле запрос-ответ) с FastAPI или другими фреимворками.
На данный момент по моему мнению выглядит неплохо, идеологически это достойная замена для WIP SQLModel.

Github | Документация
#библиотека
Если вы пишите на Django или собираетесь писать на нём, я нашёл довольно адекватный и хороший стаилгайд от HackSoftware, который позволит вашему коду на Django не превратиться в макароны.

Стаилгайд описывает большинство кейсов, с которыми сталкивается разработчик - от взаимодействия с моделями и сервисами, до тестирования и работы с Celery.

#ссылочки #django
Давным давно я писал обертку для сервиса, которая генерирует текст-рыбу. Она нужна была чтобы заполнять поля с контентом.

Совсем недавно я начал писать свой проект и углубился в тестирование. Одним из результатов моего поиска ресурсов по этой теме стала библиотека Faker.

Faker генерирует фейковые данные. При чем, он умеет генерировать не только текст - он также умеет генерировать адреса, имена, а если чего-то нет - можно поискать провайдера для этого.

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

#тестирование #библиотека
Проект который я пишу в основном на Django, поэтому в следующее время будет довольно много ресурсов по ней 🌚
Есть задача реализовать импорт/экспорт сущностей (в различных форматах), библиотека django-import-export позволяет сделать это в кратчайшие сроки. Можно, конечно, реализовать свой импорт/экспорт, но зачем изобретать велосипед? К слову, библиотека поддерживается, активность на гитхабе есть, поэтому с ней проблем быть не должно.

Что она умеет?
- Экспорт в различные форматы: Excel, CSV, JSON и вообще любой другой формат, который поддерживает tablib
- Интеграция с админкой (импорт, экспорт)
- Превью импорта
- Экспорт с поддержкой фильтров

Github | Документация
#библиотека #django
Коробка с питоном
Проект который я пишу в основном на 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…»