#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Zen of Python
В Python слишком много менеджеров пакетов?

В отличие от JavaScript, C#, Dart или Rust, где есть стандартизированные менеджеры пакетов типа npm, NuGet, pub или Cargo, Python стандарты обошли стороной. У него есть целый ворох менеджеров, например, pip, venv, conda и др.

Хорошо это или плохо? Автор этой статьи попробовал разобраться в этом вопрос, попутно разобрав популярные менеджеры для Python:

https://dublog.net/blog/so-many-python-package-managers/

А вы за обилие вариантов или мечтаете о стандартизации?
Forwarded from Zen of Python
Как писать чистый код на Python. Советы разработчикам

Написав несколько проектов, вы заметите, что использование паттернов и правил написания кода действительно упрощает разработку и дальнейшую поддержку. А если работаете с кем-то, то без этого вообще никуда.

В этой статье вы узнаете, что такое PEP8, poetry, как создавать архитектуру python-приложения, какие существуют методологии Driven Development и как писать чистый код на Python.

#советы #чистыйкод
Forwarded from Zen of Python
Асинхронность, многопоточность и многопроцессность в python

Хоть Python пока и не стал по-настоющему многопоточным, как нам обещают в Python 3.13, кое-что он всё же может.

С помощью этого видео вы сможете разобраться в том:

— что такое асинхронное программирование;
— какие есть виды многозадачности при проектировании приложения;
— узнать про процессы, потоки и асинхронный код.

https://youtu.be/_4QY1nGFRY8

#видео #многопоточность
Forwarded from Data Whisperer
Линтеры в Python

В python много линтеров на любой вкус и цвет, выбирай какой нравится и настраивай под себя.
Но наверное самым жестким является wemake-python-styleguide
У них даже на главной странице заявлено

Welcome to the strictest and most opinionated Python linter ever.

Основным кнтрибьютором проекта является Никита Соболев, у которого есть крутой курс Типизация в Python.

Дата Инженеры не так сильно упарываются в линтеры и CI как бэкендеры, но все чаще это присутсвует в новых проектах.

Посмотрим на примере Airflow и TaskFlow API.

Берем код с сайта Astranomer и запускаем линтер с настройками из коробки.
Если не брать во внимание простые ворнинги типа:

- Q000 Double quotes found but single quotes preferred
- W292 no newline at end of file

То стоит посмотреть на следующий ворниг:
- WPS430 Found nested function: extract_bitcoin_price


@dag(schedule="@daily", start_date=datetime(2021, 12, 1), catchup=False)
def taskflow():
@task(task_id="extract", retries=2)
def extract_bitcoin_price() -> Dict[str, float]:
return requests.get(API).json()["bitcoin"]


Получается, нужно переписывать большую часть дага, чтобы линтеры прошли.

Теперь попробуем традиционный синтаксис написания дага (переключаем вкладку на сайте astronomer на Traditional syntax).
И получаем другой интересный ворнинг:

- WPS428 Found statement that has no effect


extract_bitcoin_price >> process_data >> store_data


Всем знакомый синтаксис обьявления зависимомтей в airflow тоже не проходит линтер.
Получается, чтобы линтеры прошли нужно комбинировать оба варианта синтаксиса в Airflow.

Линтеры безусловно нужны, но нужно понимать, что линтер настраиваится под проект, а не наоборот.
Перед внедрением линтеров в свой проект обязательно обсудити с командой, какие проверки вам необходимы, а от каких можно отказаться.
Хороший пример был приведен выше с Airflow, все примеры кода тестировал с оффициального сайта Airflow и Astronomer
Forwarded from Data Whisperer
И в догонку пятничное про линтеры для Python Dev
История упаковки Python
• В 2000-х годах Python был популярен, но имел проблемы с упаковкой.
• В 2010-х годах появились инструменты, такие как setuptools и virtualenv, но они не решили всех проблем.
• В 2020-х годах колеса и pyproject.toml стали стандартом для упаковки Python.
Проблемы с упаковкой в 2000-х
• Python был популярен, но имел проблемы с установкой и распространением пакетов.
• Проблемы с упаковкой были связаны с отсутствием единого стандарта и сложностью установки.
Развитие инструментов упаковки
• В 2010-х годах были разработаны инструменты, такие как setuptools и virtualenv, для упрощения установки пакетов.
• Однако эти инструменты не решили всех проблем, и многие разработчики продолжали использовать setup.py.
Переход к pyproject.toml
• В 2016 году был представлен PEP 518, который предлагал единый формат для сборки проектов.
• pyproject.toml стал стандартом для управления проектами и настройки инструментов сборки.
Современное состояние упаковки
• pyproject.toml стал основным инструментом для управления проектами и настройки инструментов сборки.
• Несмотря на то, что pyproject.toml является стандартом, многие разработчики все еще используют setup.py.
Разнообразие и стандартизация
• В Python существует огромное разнообразие инструментов и подходов к упаковке.
• Стандартизация упрощает сотрудничество и устраняет трения, но может привести к более высоким затратам.
Рекомендации по упаковке
• Рекомендуется сосредоточиться на основах и использовать pyproject.toml для настройки линтеров и других инструментов.
• Для создания и распространения собственных пакетов можно использовать setuptools, но это не обязательно.
• Важно практиковать избирательное невежество и не увлекаться новыми экспериментами в области упаковки.

https://300.ya.ru/XOKLQaQ9

#ya300 #300yaru
Forwarded from Хитрый Питон
Хорошая статья про то, как устроена в питоне сборка/установка пакетов и почему именно так. Для тех, кому любопытно чуть больше погрузиться в историю - самое то. Выводы у статьи простые - используйте pyproject.toml везде, где это возможно. Я с автором в этом согласен, например у меня на работе как минимум во всех новых проектах pyproject.toml используется по умолчанию.

Ссылка - https://www.bitecode.dev/p/whats-the-deal-with-setuptools-setuppy
Pycon, к сожалению, закончился. Итоги подведены.

По результатам зрительского голосования мое выступление было признано лучшим на Python треке 🫡 . Огромное спасибо всем, кто оставил обратную связь, проголосовал и поддерживал добрым словом или мудрым советом. 🤝

Для меня персонально площадка pycon russia очень важна ❤️. Именно тут в 2022 году я впервые выступил на большой сцене с полновесным докладом за пределами своей компании (и там же впервые получил приз за лучший доклад 💪). Тем приятнее в этом сезоне было не только выступить как спикер, но и помочь с проведением конференции в качестве члена ПК и ведущего python трека.
Годы идут, но pycon остается для меня очень важным событием, где можно посоперничать с лучшими спикерами python сообщества в России.

Огромное спасибо организаторам, ПК, спикерам и, конечно же, зрителям за такую отличную конференцию! 🔥

До встречи в следующем году 🚀

P.S. Записи появятся примерно через месяц. Обязательно выложу на канале с моим личным топом докладов. 👀

#pycon
Выложили в паблик полный плейлист докладов с ekbpy 🔥

От себя рекомендую ознакомиться с докладами

🤜 Николай Марков - Управление пакетами - хорошее, плохое, злое? - основательный исторический обзор инструментов управления пакетами в python, какими они были, какие они сейчас?
🤜 Александр Гончаров. Чистый код: антипаттерны в питоне, и как с ними бороться - бодро, весело, задорно про типичные антипаттерны, хорошая подача, юмор
🤜 Аль Амин Ужахов. Как внутри работает Litestar? - про интересные особенности внутреннего устройства фреймворка

#ekbpy
https://peps.python.org/pep-0751/

Вы не ждали и не просили, но он пришел. Очередной pep про стандартный формат lock файлов для фиксации версий транзитивных зависимостей в python. Автор уже давно бьется за право принять подобный pep, и может быть в этот раз ему сопутствует удача. Все же лютый зоопарк решений (poentry, pipenv, pdm, rye) пора уже привести к какому-то общему знаменателю.

Пример нового формата
PEP 665 – A file format to list Python dependencies for reproducibility of an application - последний откланенный pep от этого же автора
Forwarded from ДевФест
7 сентября приглашаем всех тех, кто пишет на Python и работаем с ним, обсудить настоящее и будущее языка c экспертами!

Рассмотрим:

- Использование Python в энтерпрайзе
- Все о GIL
- Работа с RabbitMQ
- Внедрение подходов и паттернов из DDD
- Использование библиотек на Rust в Python

Купить билет: www.devfestomsk.ru
В рамках подготовки доклада нашел интересный материал по адаптации существующих библиотек с низкоуровневыми расширениями под freethreaded cpython (nogil) - https://py-free-threading.github.io . Как я понял, он ведется энтузиастами из сообщества.

Кроме инструкций по портированию и отладке кода https://py-free-threading.github.io/porting/ тут есть интересный документ со статусом портирования многих известных библиотек https://py-free-threading.github.io/tracking/
# Modern Python — уже серьезный ЯП или еще нет? (Нижний Новгород)

Материалы к докладу

## Про cpython и оптимизации в байткоде

- Афонасьев Евгений - А побыстрее можно? - доклад про оптимизации в работе с байтокодом, в рамках него я подробно рассказываю, что такое байткод и как с ним работает cpython
- Афонасьев Евгений - адаптируйся или умри - в рамках доклада подробно разбирается, как работает Specializing Adaptive Interpreter

## Про gil и nogil

- Афонасьев Евгений - Зачем нужен GIL и как от него избавиться? - подробный разбор от меня, как работает GIL, что конкретно он делает, какой план по его удалению из python
- UnderstandingGIL - доклад 2010 года от Дэвида Бизли про GIL во втором питоне, а как он изменился в третьем. Много очень интересных особенностей реализации
- PEP 703 – Making the Global Interpreter Lock Optional in CPython
- Keynote: Multithreaded Python without the GIL - presented by Sam Gross - Автор PEP-703 рассказывает про свой подход отказа от GIL
- перевод статьи 21го года о том, как работает GIL в python, с примерами кода, кишочками и всем, как мы любим. Автор копает глубоко и интересно
- инcтрукция по портирования extensions и таблица со статусом портирования популярных библиотек

## PEP 744 – JIT Compilation

- Афонасьев Евгений - Долгая дорога к JIT - подробный разбор от меня, что такое JIT, в каком виде он появится в 3.13 питоне, и как это повлияет на нас с вами
- Brandt Bucher – A JIT Compiler for CPython презентация для кор девелоперов (eng)
- JIT в Python | Никита Соболев доклад от core developer (ru)
- PEP про JIT, написанный и принятый уже после мержа изменений (eng)
- научная публикация про copy-and-patch jit (eng)
- хорошая статья с простым разъяснением нового JIT в python (eng)

## Другие изменения в python последних лет

- Сводная страницу со статусом по разработке сабинтерпретаторов, известные проблемы, планы, кто использует
- как выглядит DSL для байткода в исходном коде cpython (eng)
- спецификация DSL для байткода (eng)
- ранний дизайн tier2 оптимизатора (uops) (eng)
- PEP 669 – Low Impact Monitoring for CPython (eng)
- PEP 689 – Unstable C API tier (eng)
Forwarded from Блог о Data Science 💻 (𝘿𝙖𝙣𝙞𝙡 𝙆𝙖𝙧𝙩𝙪𝙨𝙝𝙤𝙫)
Виртуальное окружение

Все ещё встречаю людей, которые не понимают что такое виртуальное окружение, а подробного гайда я так и не выпустил.

Большинство студентов karpov.courses устанавливают anaconda, но мало кто знает какие проблемы она за собой несёт.


Как интуитивно это работает?
Представьте, что ваш python это планета. На единый материк и на этом материке живут некоторые животные (пакеты, библиотеки).
Конечно лев не сможет жить в Антарктиде, так же как белый медведь в Сахаре, так и ваши проекты их пакеты не могут находиться одинаково во всех проектов.

Что бы этого избежать вы изолируете вашу планету на отдельные куски — метрики, регионы, зоны. В каждом из ваших метриков (виртуальных окружений) есть отдельный набор животных, которые не выходят за рамки этого материка.


Проблема анаконды
После удаление анаконды, ее виртуальное окружение не удаляется и остаются некоторые участки, которые мешают для дальнейшей работы.

Это можно понять если в терминале у вас например остался
(base) : |

Более того у нее стоит свой python и в вашем терминале .bashrc указан путь именно к нему, а не к новым python, которые вы устанавливаете.


Инструкция
1. Откройте терминал
2. Зайдите в папку с проектом
3. Введите python -m venv venv
4. Появится папочка venv
5. Что бы активировать окружение
source venv/bin/activate
у вас появится в терминале слева от ввода строки и имя пользователя (venv) это название вашего окружения
6. Что бы деактивировать — deactivate

Давайте соберём 100 реактов 🐳
Please open Telegram to view this post
VIEW IN TELEGRAM