#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from PyCon Russia
Ждали-ждали и дождались! 💥Открыли записи докладов с PyCon Russia 2023 для всех. Смотрите, набирайтесь пользы, делитесь с друзьями и коллегами.

А всех, кто хочет получить самую актуальную информацию и услышать про самые свежие кейсы Python-разработки, ждем 2 февраля на EkbPy в Екатеринбурге. Участвовать можно как офлайн, так и онлайн. Билеты и программа здесь.

▫️Павел Плюснин. Генерация данных для квантования нейронных сетей: Data-Free Quantization
▫️Артур Сапрыкин. Декомпозиция данных в анализе временных рядов
▫️Александр Никулин. Первая open-source библиотека для Offline RL исследователей
▫️Павел Горшенин. Поиск по научным текстам: эластик и вектора. Как ходить по граблям и не оступиться?
▫️Николай Безносов. ML платформа на Open Source: от Data Governance до MLOps
▫️Максим Афанасьев. Впихиваем невпихуемое: хостим несколько ML-сервисов на одной GPU
▫️Денис Аникин. Лимитируй это
▫️Б.Алиев. Python Шредингера:когда ваш код и жив,и мертв,а весь мир с замиранием ожидает его выполнения
▫️Н. Матвеев. Прогнозирование нагрузки на базовые станции, или Как работать с временными рядами в 2023
▫️Андрей Литвинов. Serverless для деплоя ml/dl моделей (с gpu зависимостью)
▫️Карина Кванчиани. Автоматизация процесса создания набора данных на примере РЖЯ
▫️Михаил Дьяченко. Software vs Hardware. Противостояние
▫️Евгений Афонасьев. А побыстрее можно?
▫️Артём Стрельцов. Утечки памяти и дедлоки: как выстрелить себе в ногу
▫️Андрей Шубин. Отладка на низком уровне
▫️Данил Крыцын. Легковесный ЧПУ с EtherCAT на python и С
▫️Петер Ибрагимов. Как использовать serverless и не наломать дров
▫️Михаил Гурбанов. Да кто такие эти ваши тайп-чекеры?
▫️Данил Губанов. Через боль с dependency-injector
▫️Андрей Власовских. Функциональщина в Python — это плохая идея?
▫️Андрей Гейн. Mojo — революция или хайп?
▫️Николай Хитров. Архитектура кнута и пряника
▫️Даниил Сербинович. Эволюция нового сервиса и типичные ошибки при его развитии
▫️Сергей Вариасов. Почему мы написали еще один фреймворк для Python
▫️Круглый стол
▫️Workshop PyCon 2023
Forwarded from Python книги
The Quick Python Book

Автор:
Naomi Ceder
Год издания: 2018

#python #en

Скачать книгу
Forwarded from Букич IT
​​🖥 Практический Курс по Продвинутому Python (2023)

🎓 Чему вы научитесь:

Использование модуля Math.
Функции all() и any()
Докстринги и приятная печать данных.
Работа с zip архивами, csv файлами, json файлами, конфигурационными и текстовыми файлами, используя контекстный менеджер
Работа со случайными числами и генерация паролей.
Работа с датой и временем (включая интервалы и продвинутое форматирование).
Профилирование программы при помощи модуля cProfile.
Как создавать таймеры для замера времени выполнения частей программы.
Генераторы Списков, Множеств, Словарей.
Работа со строками, включая продвинутые методы интерполяции, форматирования и сырые строки.
Итераторы и Генераторы (включая продвинутые решения).
Манипулирование данными при помощи модулей Operator и Array
Принцип глубокого и неглубокого (поверхностного) копирования.
Логирование (включая продвинутое Логирование).
Регулярные выражения (Метасимволы, Якоря, Квантификаторы, а также продвинутые конструкции).
Рекурсия.
Декораторы.

📚 Русский
💰 50$
📂 1.9GB
🕔 5:40минут

📌 Скачать курс

Букич IT
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Start Career in DS
🐍 Вы не знаете Python

После прочтения вот этой статьи со 100 вопросами по Python вам в голову с большой вероятностью придёт мысль, что стоило бы его подучить)

Конечно, вряд-ли большинство вопросов из статьи спросят на собеседовании на стажера-джуна Data Scientistа, но все-таки не мешало бы знать, например, что такое GIL, чтобы не ударить в грязь лицом перед друзьями-бэкендерами 😁

Вот ещё несколько интересных вопросов оттуда:
Как реализуется управление памятью в python?
Как использовать глобальные переменные? Это хорошая идея?
Чем фреймворк отличается от библиотеки?

Читайте статью, и обязательно ставьте огонёчки 🔥 под этим постом, если узнали из неё что-то новое!
The Well-Grounded Python Developer

Автор:
Doug Farrell
Год издания: 2023

#python #en

Скачать книгу
Forwarded from DE
Ребята, которые сделали ruff, выпустили свой тул для работы с зависимостями для python - uv. Они позиционируют его как замену pip, pip-tools и virtualenv. Написан на расте, поэтому работает быстро.

Также они взяли на себя дальнейшую поддержку rye (который изначально сделал Армин Ронахер, автор flask) и судя по всем планируют постепенно эти проекты объединить в один.

Выглядит круто.

Анонс: https://astral.sh/blog/uv
Репозиторий проекта: https://github.com/astral-sh/uv
Forwarded from Хитрый Питон
Ребята, которые сделали ruff, выпустили свой тул для работы с зависимостями для python - uv. Они позиционируют его как замену pip, pip-tools и virtualenv. Написан на расте, поэтому работает быстро.

Также они взяли на себя дальнейшую поддержку rye (который изначально сделал Армин Ронахер, автор flask) и судя по всем планируют постепенно эти проекты объединить в один.

Выглядит вкусно, попробую поиграться с uv на пет-проектах.

Анонс: https://astral.sh/blog/uv
Репозиторий проекта: https://github.com/astral-sh/uv
Forwarded from РУССКИЙ КОД
🏛16 февраля с 18:00 до 19:45 состоятся три публичные лекции, посвященные языку программирования Python

Вы узнаете:
🟠Проблемы и решения в системах управления пакетами Python
🟠Новые идеи и подходы в web фреймворках
🟠Новый web фреймворк, о котором вы еще не слышали
🟠Как из исходного кода получается абстрактное синтаксическое дерево
🟠Какие оптимизации можно сделать статически
🟠Как из AST получается байткод
🟠Какие оптимизации есть на шаге выполнения байткода (Tier1, Tier2, JIT)
🟠Что такое C-API, и почему он настолько важен для CPython


📍Место: Лекторий Wink, павильон «Мир цифры» (ПАВИЛЬОН Е)
📌Вход свободный, регистрация не требуется.

До встречи❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Антон Ширяев
Недавно вышел интересный проект pixi - https://prefix.dev/

Это проект от создателей Anaconda, направленный на устранение главного недостатка проекта - отсутствия воспроизводимости рабочего окружения.
Создатели пытались взять лучшее что есть в conda и poetry )

Был бы рад услышать комментарий "poetry vs pixi" =)
Forwarded from Хитрый Питон
Мы у себя в компании начали аккуратно переходить на новый менеджер пакетов uv (https://github.com/astral-sh/uv) и решил рассказать, как все идет.

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

Все сложности были при использовании нескольких индексов:
- политика разрешения зависимостей uv отличается от pip - это важно, когда используется свой индекс в добавок к pypi
- авторы решили не переиспользовать переменную окружения PIP_EXTRA_INDEX_URL - для uv надо задавать UV_EXTRA_INDEX_URL
- в UV_EXTRA_INDEX_URL лушче прописывать `/simple`-индекс, у меня сначала было не так, pip работал, а uv уже нет

Но какая же uv офигенно быстрая. Вот примеры двух наших разных проектов:

1. Внутренняя библиотека (меньше 20 зависимостей)
- pip-tools 4 минуты 7 секунд
- с uv 10 секунд

2. Большой старый монолит на Django (больше 100 зависимостей):
- с pip-tools 18 минут 19 секунд
- с uv 32 секунды (!!!)

В общем я очень доволен результатом и рекомендую как минимум посмотреть на эту тулзу.
Forwarded from Записки kiriharu
В нашу жизнь проникает всё больше AI инструментов, поэтому делитесь в комментариях какими пользуетесь сами или о которых знаете.

Вот список из моих, юзаю практически каждый день:
- Очевидный ChatGPT
- Апскейлиг картиночек (старые мемы выглядят как новые!)
- Переводчик DeepL
- Поисковик Perplexity AI
- Нейросеть от Яндекса, которая кратко пересказывает содержимое статей и видео
- А вот тут мелкомягкие позволяют генерировать картиночки
- Вот тут я удаляю фон у фоточек
Forwarded from DE
👩‍💻 match/case

Для версий Python 3.10 и выше.

Деструктуризация с помощью образцов настолько выразительна, что иногда даже наличие единственной ветви case может сделать код проще. Гвидо ван Россум собрал коллекцию примеров match/case, один из которых назвал «Очень глубокий итерируемый объект и сравнение типа с выделением».

Это здорово, но меня больше поразил тот факт, что можно проверять типы и насколько выразительно это выглядит, ниже смотри пример.

❤️‍🩹 Классическая версия:
 def write_value(self, value):
if isinstance(value, str):
self.simple_element("string", value)

elif value is True:
self.simple_element("true")

elif value is False:
self.simple_element("false")

elif isinstance(value, int):
if -1 << 63 <= value < 1 << 64:
self.simple_element("integer", "%d" % value)
else:
raise OverflowError(value)

elif isinstance(value, float):
self.simple_element("real", repr(value))

elif isinstance(value, dict):
self.write_dict(value)

elif isinstance(value, (bytes, bytearray)):
self.write_bytes(value)

elif isinstance(value, datetime.datetime):
self.simple_element("date", _date_to_string(value))

elif isinstance(value, (tuple, list)):
self.write_array(value)

else:
raise TypeError("unsupported type: %s" % type(value))
🔥 Версия с использованием match/case:
 def write_value(self, value):
match value:
case str():
self.simple_element("string", value)

case True:
self.simple_element("true")

case False:
self.simple_element("false")

case int():
if -1 << 63 <= value < 1 << 64:
self.simple_element("integer", "%d" % value)
else:
raise OverflowError(value)

case float():
self.simple_element("real", repr(value))

case dict():
self.write_dict(value)

case bytes() | bytearray():
self.write_bytes(value)

case datetime.datetime():
self.simple_element("date", _date_to_string(value))

case tuple() | list():
self.write_array(value)

case _:
raise TypeError("unsupported type: %s" % type(value))
#python #casematch
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем нужно делать кастомную базовую Pydantic модель?

Сейчас некоторые со мной не согласятся, но я часто рекомендую делать базовую pydantic модель и наследовать все модели от неё.

Наличие такой глобальной модели позволяет настраивать поведение всех моделей в приложении. Рассмотрю несколько кейсов, когда это может понадобится.

1) Контроль над входными данными.
Например, мы хотим округлять все поля которые называются price до трех знаков после запятой. Сделать это можно так:

class CustomBaseModel(BaseModel):
@root_validator()
def round_price(cls, data: dict) -> dict:
prices = {k: round(v, 3) for k, v in data.items() if k == "price"}
return {**data, **prices}

Валидаторы дают возможность изменять входящие данные, но это стоит использовать с осторожностью.

P.S.: В коментах подметили, что такой подход неявный, и я с этим согласен. Ничего не мешает для таких целей сделать ещё одну базовую модель (PriceRoundBaseModel), наследуясь от нашей базовой СustomBaseModel и использовать её там, где такое поведение необходимо.

2) Кастомый энкодер/декодер json.
Пакет json из стандартной библиотеки очень медленный. При необходимости ускорить сервис этот пакет в первую очередь пытаются заменить на что-то побыстрее.
Это происходит из-за того, что операций по (дe)сериализации json в приложении может быть много, и смена библиотеки, в этом случае, дает ощутимый прирост к общей скорости.

В pydantic есть 2 опции в конфиге, которые позволяют изменять поведение энкодера и декодера. Выглядит это так:

def orjson_dumps(v, *, default):
# orjson.dumps возвращает байты, поэтому нам надо их декодить, чтобы соответствовать сигнатуре json.dumps
return orjson.dumps(v, default=default).decode()

class CustomBaseModel(BaseModel):
class Config:
json_loads = orjson.loads
json_dumps = orjson_dumps

#pydantic
Как запускать синхронные функции в асинхронном роуте FastAPI?

Иногда так случается, что приходится использовать синхронный код в асинхронном роуте.
Если мы попытаемся вызвать синхронную функцию в асинхронном коде - наш event loop заблокируется и всё "зависнет" до тех пор, пока синхронный код не отработает.

Решений, как это сделать, на самом деле много. Самый простой вариант, который предоставляет FastAPI (а если быть точнее - Starlette, который использует anyio) - функция run_in_threadpool, которая запустит синхронный код в потоке:

@app.get("/")
async def my_router():
result = await service.execute()
client = SyncClient()
return await run_in_threadpool(client.execute, data=result)

Кстати, BackgroundTask использует тот же самый способ, только он не возвращает результат выполнения.

А как бы вы решали/решаете такую проблему? Пишите в комментариях 😎 !

#fastapi #anyio
Релиз FastAPI 0.100.0🔥

Себастьян закончил обновление pydantic-а. Теперь можно насладиться звуком ржавчины и приростом скорости при переходе на новую версию FastAPI.

Чейнжлог совсем небольшой получился
https://fastapi.tiangolo.com/release-notes/#01000

p.s. в ближайшее время доберусь до чейнжлога pydantic v2 и сделаю обзорный пост