Forwarded from Newprolab: обучение DE и DS
Simplifying the Python Code for Data Engineering Projects
Оригинальная статья (10 min read)
Статья исследует различные техники и лучшие практики для повышения эффективности и читаемости кода на Python в проектах по обработке данных. Она охватывает важные аспекты, такие как ввод данных, их проверка, обработка и тестирование конвейера, используя встроенные функции и библиотеки Python.
Ввод данных
📌 Использование
📌 Обработка данных частями: Вместо того чтобы загружать все данные сразу, можно обрабатывать их порциями (batch processing). Это помогает избежать проблем с памятью и позволяет начать обработку данных до завершения их полной загрузки.
Проверка данных
📌 Использование библиотеки Pydantic для проверки полей данных: Pydantic позволяет определить схему данных с использованием моделей Python. Эти модели используются для проверки данных на соответствие заданным правилам и форматам, что помогает обеспечить их целостность и точность.
📌 Реализация пользовательских правил проверки: Pydantic поддерживает создание пользовательских валидаторов, которые могут проверять значения полей на соответствие определенным критериям (например, допустимым значениям платежных методов). Это позволяет дополнительно контролировать качество данных.
Обработка данных
📌 Применение декораторов Python для измерения времени выполнения: Декораторы позволяют оборачивать функции дополнительным функционалом без изменения их исходного кода. Например, можно создать декоратор для измерения времени выполнения функций, что помогает выявлять узкие места и оптимизировать производительность.
📌 Использование функциональных методов программирования (
-
-
-
Тестирование конвейера данных
📌 Использование фреймворка Pytest для модульного тестирования: Pytest предоставляет мощные возможности для написания и выполнения тестов, что позволяет убедиться в правильности работы отдельных компонентов системы. Например, можно тестировать функции обработки данных, чтобы удостовериться, что они корректно выполняют свои задачи.
📌 Проверка качества выходных данных и обнаружение ошибок: Тестирование помогает выявлять логические ошибки и несоответствия на ранних стадиях разработки. Это особенно важно для сложных конвейеров данных, где ошибки могут быть трудно обнаружимыми.
Лучшие практики
📌 Поддержка ясного и модульного кода:
Структурированный и модульный код облегчает его понимание, поддержку и масштабирование. Разделение кода на логические модули и функции помогает управлять сложностью проекта.
📌 Интеграция тестирования и проверки данных: Тестирование и проверка данных должны быть неотъемлемой частью рабочего процесса. Это помогает обеспечить высокое качество данных и надежность работы системы в целом.
#почитать
Оригинальная статья (10 min read)
Стоит прочитать или нет? Сделали краткое содержание 🙌
Статья исследует различные техники и лучшие практики для повышения эффективности и читаемости кода на Python в проектах по обработке данных. Она охватывает важные аспекты, такие как ввод данных, их проверка, обработка и тестирование конвейера, используя встроенные функции и библиотеки Python.
Ввод данных
📌 Использование
yield
для обработки больших наборов данных: yield
позволяет создавать генераторы, которые возвращают по одному элементу за раз вместо загрузки всех данных в память. Это особенно полезно при работе с большими наборами данных, так как позволяет экономить память и ускорять процесс обработки данных.📌 Обработка данных частями: Вместо того чтобы загружать все данные сразу, можно обрабатывать их порциями (batch processing). Это помогает избежать проблем с памятью и позволяет начать обработку данных до завершения их полной загрузки.
Проверка данных
📌 Использование библиотеки Pydantic для проверки полей данных: Pydantic позволяет определить схему данных с использованием моделей Python. Эти модели используются для проверки данных на соответствие заданным правилам и форматам, что помогает обеспечить их целостность и точность.
📌 Реализация пользовательских правил проверки: Pydantic поддерживает создание пользовательских валидаторов, которые могут проверять значения полей на соответствие определенным критериям (например, допустимым значениям платежных методов). Это позволяет дополнительно контролировать качество данных.
Обработка данных
📌 Применение декораторов Python для измерения времени выполнения: Декораторы позволяют оборачивать функции дополнительным функционалом без изменения их исходного кода. Например, можно создать декоратор для измерения времени выполнения функций, что помогает выявлять узкие места и оптимизировать производительность.
📌 Использование функциональных методов программирования (
map, filter, reduce
):-
map
применяется для выполнения одной и той же операции над всеми элементами списка (например, добавление суффикса к значениям платежных методов).-
filter
позволяет отфильтровать элементы списка, которые соответствуют определенным условиям (например, оставить только записи с платежным методом "Cryptocurrency").-
reduce
используется для получения единственного значения из списка (например, суммирование всех значений).Тестирование конвейера данных
📌 Использование фреймворка Pytest для модульного тестирования: Pytest предоставляет мощные возможности для написания и выполнения тестов, что позволяет убедиться в правильности работы отдельных компонентов системы. Например, можно тестировать функции обработки данных, чтобы удостовериться, что они корректно выполняют свои задачи.
📌 Проверка качества выходных данных и обнаружение ошибок: Тестирование помогает выявлять логические ошибки и несоответствия на ранних стадиях разработки. Это особенно важно для сложных конвейеров данных, где ошибки могут быть трудно обнаружимыми.
Лучшие практики
📌 Поддержка ясного и модульного кода:
Структурированный и модульный код облегчает его понимание, поддержку и масштабирование. Разделение кода на логические модули и функции помогает управлять сложностью проекта.
📌 Интеграция тестирования и проверки данных: Тестирование и проверка данных должны быть неотъемлемой частью рабочего процесса. Это помогает обеспечить высокое качество данных и надежность работы системы в целом.
#почитать
Medium
Simplifying the Python Code for Data Engineering Projects
Python tricks and techniques for data ingestion, validation, processing, and testing: a practical walkthrough
Forwarded from Афонасьев Евгений - IT, Python и вот это все
На днях мне подкинули интересный канал https://t.me/press_any_button , рекомендую присмотреться, особенно начинающим разработчикам 🐍
Авторы публикуют различные гайды по python, разработке на django, использованию docker, написанию ботов с aiogram и по другим темам. Так же разбирают различные задачи на python. Описание контента в одном посте можно посмотреть тут https://t.me/press_any_button/738 👈
Для тех кто только начинает своей погружение в мир разработки, рекомендую начать читать канал с самых первых постов, можно последовательно пройти через уроки разработки сайтов с самого нуля 🎓, если вам подходит django.
Авторы публикуют различные гайды по python, разработке на django, использованию docker, написанию ботов с aiogram и по другим темам. Так же разбирают различные задачи на python. Описание контента в одном посте можно посмотреть тут https://t.me/press_any_button/738 👈
Для тех кто только начинает своей погружение в мир разработки, рекомендую начать читать канал с самых первых постов, можно последовательно пройти через уроки разработки сайтов с самого нуля 🎓, если вам подходит django.
Telegram
Код на салфетке
Канал для тех, кому интересно программирование на Python и не только.
Сайт канала: https://pressanybutton.ru/
Чат канала: https://t.me/+Li2vbxfWo0Q4ZDk6
Заметки автора: https://t.me/writeanynotes
Реклама и взаимопиар: @Murzyev1995
Сайт канала: https://pressanybutton.ru/
Чат канала: https://t.me/+Li2vbxfWo0Q4ZDk6
Заметки автора: https://t.me/writeanynotes
Реклама и взаимопиар: @Murzyev1995
Forwarded from Афонасьев Евгений - IT, Python и вот это все
# Материалы к докладу на PYCON RUSSIA: "Долгая дорога к JIT"
Уже завтра стартует pycon, а я как обычно в последний день переделываю весь доклад 😂. Выкладываю материалы по докладу для зрителей. Завтра после выступления выложу в канал презентацию, но полноценные видео записи придется какое-то время подождать.
## Про cpython и байткод
- Афонасьев Евгений - А побыстрее можно? - доклад про оптимизации в работе с байтокодом, в рамках него я подробно рассказываю, что такое байткод и как с ним работает cpython (ru)
- Афонасьев Евгений - адаптируйся или умри - в рамках доклада подробно разбирается, как работает Specializing Adaptive Interpreter (ru)
## Про JIT в целом
- разбор базовых приемов для JIT на примере простой С программы (ru)
- пример написания JIT для brainfuck и не только (eng)
- пример написания jit для lua (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)
## PEP 744 – JIT Compilation
- Brandt Bucher – A JIT Compiler for CPython презентация для кор девелоперов (eng)
- JIT в Python | Никита Соболев доклад от core developer (ru)
- PR с добавлением JIT (eng)
- PEP про JIT, написанный и принятый уже после мержа изменений (eng)
- обсуждение PEP (eng)
- научная публикация про copy-and-patch jit (eng)
- хорошая статья с простым разъяснением нового JIT в python (eng)
#pycon
Уже завтра стартует pycon, а я как обычно в последний день переделываю весь доклад 😂. Выкладываю материалы по докладу для зрителей. Завтра после выступления выложу в канал презентацию, но полноценные видео записи придется какое-то время подождать.
## Про cpython и байткод
- Афонасьев Евгений - А побыстрее можно? - доклад про оптимизации в работе с байтокодом, в рамках него я подробно рассказываю, что такое байткод и как с ним работает cpython (ru)
- Афонасьев Евгений - адаптируйся или умри - в рамках доклада подробно разбирается, как работает Specializing Adaptive Interpreter (ru)
## Про JIT в целом
- разбор базовых приемов для JIT на примере простой С программы (ru)
- пример написания JIT для brainfuck и не только (eng)
- пример написания jit для lua (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)
## PEP 744 – JIT Compilation
- Brandt Bucher – A JIT Compiler for CPython презентация для кор девелоперов (eng)
- JIT в Python | Никита Соболев доклад от core developer (ru)
- PR с добавлением JIT (eng)
- PEP про JIT, написанный и принятый уже после мержа изменений (eng)
- обсуждение PEP (eng)
- научная публикация про copy-and-patch jit (eng)
- хорошая статья с простым разъяснением нового JIT в python (eng)
#pycon
Forwarded from Афонасьев Евгений - IT, Python и вот это все
Выложили в паблик полный плейлист докладов с ekbpy 🔥
От себя рекомендую ознакомиться с докладами
🤜 Николай Марков - Управление пакетами - хорошее, плохое, злое? - основательный исторический обзор инструментов управления пакетами в python, какими они были, какие они сейчас?
🤜 Александр Гончаров. Чистый код: антипаттерны в питоне, и как с ними бороться - бодро, весело, задорно про типичные антипаттерны, хорошая подача, юмор
🤜 Аль Амин Ужахов. Как внутри работает Litestar? - про интересные особенности внутреннего устройства фреймворка
#ekbpy
От себя рекомендую ознакомиться с докладами
🤜 Николай Марков - Управление пакетами - хорошее, плохое, злое? - основательный исторический обзор инструментов управления пакетами в python, какими они были, какие они сейчас?
🤜 Александр Гончаров. Чистый код: антипаттерны в питоне, и как с ними бороться - бодро, весело, задорно про типичные антипаттерны, хорошая подача, юмор
🤜 Аль Амин Ужахов. Как внутри работает Litestar? - про интересные особенности внутреннего устройства фреймворка
#ekbpy
YouTube
EkbPy 2024
Уютная конференция по Python 2 февраля 2024 года
Forwarded from Афонасьев Евгений - IT, Python и вот это все
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 от этого же автора
Вы не ждали и не просили, но он пришел. Очередной pep про стандартный формат lock файлов для фиксации версий транзитивных зависимостей в python. Автор уже давно бьется за право принять подобный pep, и может быть в этот раз ему сопутствует удача. Все же лютый зоопарк решений (poentry, pipenv, pdm, rye) пора уже привести к какому-то общему знаменателю.
Пример нового формата
PEP 665 – A file format to list Python dependencies for reproducibility of an application - последний откланенный pep от этого же автора
Python Enhancement Proposals (PEPs)
PEP 751 – A file format to record Python dependencies for installation reproducibility | peps.python.org
This PEP proposes a new file format for specifying dependencies to enable reproducible installation in a Python environment. The format is designed to be human-readable and machine-generated. Installers consuming the file should be able to calculate wha...
Forwarded from HABR FEED + OPENNET
Работа памяти в Python #habr
https://habr.com/ru/post/721804/
Tags: Python, python, память, memory management
Author: broffer
https://habr.com/ru/post/721804/
Tags: Python, python, память, memory management
Author: broffer
Хабр
Работа памяти в Python
Введение Python - интерпретируемый язык программирования, поэтому перед выполнением код транслируется в машиночитаемые инструкции - байт-код. Байт-код интерпретируется виртуальной машиной,...
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/
А вы за обилие вариантов или мечтаете о стандартизации?
В отличие от 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.
#советы #чистыйкод
Написав несколько проектов, вы заметите, что использование паттернов и правил написания кода действительно упрощает разработку и дальнейшую поддержку. А если работаете с кем-то, то без этого вообще никуда.
В этой статье вы узнаете, что такое PEP8, poetry, как создавать архитектуру python-приложения, какие существуют методологии Driven Development и как писать чистый код на Python.
#советы #чистыйкод
Forwarded from Zen of Python
Асинхронность, многопоточность и многопроцессность в python
Хоть Python пока и не стал по-настоющему многопоточным, как нам обещают в Python 3.13, кое-что он всё же может.
С помощью этого видео вы сможете разобраться в том:
— что такое асинхронное программирование;
— какие есть виды многозадачности при проектировании приложения;
— узнать про процессы, потоки и асинхронный код.
https://youtu.be/_4QY1nGFRY8
#видео #многопоточность
Хоть Python пока и не стал по-настоющему многопоточным, как нам обещают в Python 3.13, кое-что он всё же может.
С помощью этого видео вы сможете разобраться в том:
— что такое асинхронное программирование;
— какие есть виды многозадачности при проектировании приложения;
— узнать про процессы, потоки и асинхронный код.
https://youtu.be/_4QY1nGFRY8
#видео #многопоточность
YouTube
Асинхронность, многопоточность, многопроцессность в python | Библиотека asyncio и асинхронный код
В видео рассмотрим асинхронное программирование, и виды многозадачности при проектировании приложения - процессы, потоки и асинхронный код. Рассмотрим библиотеку asyncio и как на python писать асинхронный код.
Мои курсы на Udemy:
💛 Большой курс по Python…
Мои курсы на Udemy:
💛 Большой курс по Python…
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/
А вы за обилие вариантов или мечтаете о стандартизации?
В отличие от 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.
#советы #чистыйкод
Написав несколько проектов, вы заметите, что использование паттернов и правил написания кода действительно упрощает разработку и дальнейшую поддержку. А если работаете с кем-то, то без этого вообще никуда.
В этой статье вы узнаете, что такое PEP8, poetry, как создавать архитектуру python-приложения, какие существуют методологии Driven Development и как писать чистый код на Python.
#советы #чистыйкод
Forwarded from Zen of Python
Асинхронность, многопоточность и многопроцессность в python
Хоть Python пока и не стал по-настоющему многопоточным, как нам обещают в Python 3.13, кое-что он всё же может.
С помощью этого видео вы сможете разобраться в том:
— что такое асинхронное программирование;
— какие есть виды многозадачности при проектировании приложения;
— узнать про процессы, потоки и асинхронный код.
https://youtu.be/_4QY1nGFRY8
#видео #многопоточность
Хоть Python пока и не стал по-настоющему многопоточным, как нам обещают в Python 3.13, кое-что он всё же может.
С помощью этого видео вы сможете разобраться в том:
— что такое асинхронное программирование;
— какие есть виды многозадачности при проектировании приложения;
— узнать про процессы, потоки и асинхронный код.
https://youtu.be/_4QY1nGFRY8
#видео #многопоточность
YouTube
Асинхронность, многопоточность, многопроцессность в python | Библиотека asyncio и асинхронный код
В видео рассмотрим асинхронное программирование, и виды многозадачности при проектировании приложения - процессы, потоки и асинхронный код. Рассмотрим библиотеку asyncio и как на python писать асинхронный код.
Мои курсы на Udemy:
💛 Большой курс по Python…
Мои курсы на Udemy:
💛 Большой курс по Python…
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
Получается, нужно переписывать большую часть дага, чтобы линтеры прошли.
Теперь попробуем традиционный синтаксис написания дага (переключаем вкладку на сайте astronomer на Traditional syntax).
И получаем другой интересный ворнинг:
- WPS428 Found statement that has no effect
Всем знакомый синтаксис обьявления зависимомтей в airflow тоже не проходит линтер.
Получается, чтобы линтеры прошли нужно комбинировать оба варианта синтаксиса в Airflow.
Линтеры безусловно нужны, но нужно понимать, что линтер настраиваится под проект, а не наоборот.
Перед внедрением линтеров в свой проект обязательно обсудити с командой, какие проверки вам необходимы, а от каких можно отказаться.
Хороший пример был приведен выше с Airflow, все примеры кода тестировал с оффициального сайта Airflow и Astronomer
В 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
tough-dev.school
Типизация в Python
История упаковки 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
• В 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
300.ya.ru
Что происходит с setuptools, setup.py, pyproject.toml и wheels? - Пересказ YandexGPT
• Создание пакета: setup.py использовался для создания и установки пакета.
• Установка пакета: pip install запускает setup.py для установки пакета.
• Настройка инструментов для проекта: pyproject.toml используется для хранения метаданных проекта и настройки…
• Установка пакета: pip install запускает setup.py для установки пакета.
• Настройка инструментов для проекта: pyproject.toml используется для хранения метаданных проекта и настройки…
Forwarded from Хитрый Питон
Хорошая статья про то, как устроена в питоне сборка/установка пакетов и почему именно так. Для тех, кому любопытно чуть больше погрузиться в историю - самое то. Выводы у статьи простые - используйте
Ссылка - https://www.bitecode.dev/p/whats-the-deal-with-setuptools-setuppy
pyproject.toml
везде, где это возможно. Я с автором в этом согласен, например у меня на работе как минимум во всех новых проектах pyproject.toml
используется по умолчанию.Ссылка - https://www.bitecode.dev/p/whats-the-deal-with-setuptools-setuppy
www.bitecode.dev
What's the deal with setuptools, setup.py, pyproject.toml and wheels?
Why? Why? Why? Oh, that's why.