среда, 2 июля 2025 г.
Poetry, Train, Project, Chad,
среда, 25 июня 2025 г.
Project, annotation_ci_proj, Poetry, pyproject.toml, giga
Annotations, 250610, Project, annotation_ci_proj, Poetry, pyproject.toml, giga
https://giga.chat/link/gcsWxJqDsl
D:\VC25\Otus\Py\250610\projects\annotation_ci_proj
pyproject.toml
[project]
name = "annotation-ci-proj"
version = "0.1.0"
description = ""
authors = [
{name = "Your Name",email = "you@example.com"}
]
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"black (>=25.1.0,<26.0.0)",
"flake8 (>=7.3.0,<8.0.0)",
"isort (>=6.0.1,<7.0.0)",
]
[tool.poetry]
packages = [{include = "annotation_ci_proj", from = "src"}]
[tool.poetry.group.dev.dependencies]
pytest = "^8.4.1"
mypy = "^1.16.1"
pyright = "^1.1.402"
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
----------------------------------
Альтернативный способ активации (через оболочку):Хотя shell официально устарел, ты можешь восстановить старую функциональность,установив специальный plugin:poetry self add poetry-plugin-shell
После установки этого плагина старая команда shell заработает снова:poetry shell
Заключение:
Рекомендуется перейти на использование команды env activate,
так как это официальный и современный способ активации виртуального окружения в Poetry 2.x.
Это сделает твой проект совместимым с актуальной документацией и общими практиками.
вторник, 24 июня 2025 г.
Poetry, Where
Poetry, Where
Suggestion [4,General]: The most similar commands are:
PS D:\VC25\Otus\Py\250610\projects\annotation_proj> Get-Command poetry
CommandType Name Version Source
----------- ---- ------- ------
Application poetry.exe 0.0.0.0 C:\Users\Administrator\AppData\Roaming\Python\Scripts\poetry.exe
PS D:\VC25\Otus\Py\250610\projects\annotation_proj> poetry show
black 25.1.0 The uncompromising code formatter.
click 8.2.1 Composable command line interface toolkit
colorama 0.4.6 Cross-platform colored terminal text.
flake8 7.3.0 the modular source code checker: pep8 pyflakes and co
iniconfig 2.1.0 brain-dead simple config-ini parsing
isort 6.0.1 A Python utility / library to sort Python imports.
mccabe 0.7.0 McCabe checker, plugin for flake8
mypy 1.16.1 Optional static typing for Python
mypy-extensions 1.1.0 Type system extensions for programs checked with the mypy type checker.
packaging 25.0 Core utilities for Python packages
pathspec 0.12.1 Utility library for gitignore style pattern matching of file paths.
pathspec 0.12.1 Utility library for gitignore style pattern matching of file paths.
platformdirs 4.3.8 A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`.
pluggy 1.6.0 plugin and hook calling mechanisms for python
pycodestyle 2.14.0 Python style guide checker
pyflakes 3.4.0 passive checker of Python programs
pyflakes 3.4.0 passive checker of Python programs
pygments 2.19.2 Pygments is a syntax highlighting package written in Python.
pytest 8.4.1 pytest: simple powerful testing with Python
typing-extensions 4.14.0 Backported and Experimental Type Hints for Python 3.9+
понедельник, 2 июня 2025 г.
poetry new , Giga, Python. Code Format, Tools
poetry new <project-name>, Giga, Python. Code Format, Tools
https://giga.chat/link/gcsObBTGeV
Команда poetry new <project-name> инициирует создание нового Python-проекта с базовой структурой и
подготовленным файлом конфигурации pyproject.toml.
Давайте разберём детально, что конкретно делает команда poetry new toy-project:
Шаги, выполняемые командой:
- Создание каталога проекта:Команда создаёт новый каталог с именем указанного вами проекта (
toy-project).- Генерация базовой структуры:Внутри каталога создаются стандартные директории и файлы,
- соответствующие стандартной структуре Python-проекта:
.gitignore: файл с правилами игнорирования временных файлов и артефактов.tests/: директория для размещения модульных тестов.src/toy_project/__init__.py: директория с основным источником кода и пустой инициализационный файл.pyproject.toml: главный файл конфигурации, содержащий базовые сведения о проекте- (метаданные, информация о сборке и зависимостях).
- Заполнение pyproject.toml:Этот файл получает начальную информацию о вашем новом проекте:
- Название проекта:
<project-name>.- Версия: обычно начинается с нуля (
0.1.0).- Описание: короткое пояснение назначения проекта.
- Лицензия: тип лицензии по умолчанию — MIT.
- Информация о зависимостях: пока никаких зависимостей не добавляется.
Пример содержимого pyproject.toml после запуска команды:
[tool.poetry] name = "toy-project" version = "0.1.0" description = "" authors = [] license = "MIT" [tool.poetry.dependencies] python = "^3.10" [tool.poetry.dev-dependencies] pytest = "^7.0.0" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
- Настройка рабочего окружения:После создания проекта и заполнения базовых файлов,
- Poetry может предложить дополнительно инициализировать Git-репозиторий и
- создать первое коммит-сообщение («Initial commit»).
Резюме
Команда poetry new toy-project фактически запускает процесс быстрого старта нового Python-проекта,
создавая минимальный набор нужных файлов и директорий, определяя первичные метаданные и
готовя основу для дальнейшего развития и сборки проекта.
Теперь, когда проект создан, вы можете приступить к дальнейшему развитию:
добавлять зависимости, разрабатывать функциональности,
проводить тестирование и готовить релиз с помощью мощного функционала Poetry.
Poetry, Giga, Python. Code Format, Tools
Poetry, Giga, Python. Code Format, Tools
https://giga.chat/link/gcsObBTGeV
Poetry — это современный менеджер зависимостей и инструмент для упаковки Python-проектов,
предложенный компанией Distribute Aid. Появившись относительно недавно,
Poetry стремительно завоевал популярность среди разработчиков благодаря своим преимуществам
в области управления зависимостями, автоматической генерации зависимостей и возможностей развёртывания проектов.
Ключевые особенности Poetry
- Управление зависимостями:
- Poetry автоматически создаёт и хранит информацию о зависимостях в файле
pyproject.toml,- соответствующем стандартам PEP 518 и PEP 621.
- Управляет как прямыми, так и косвенными зависимостями, гарантируя,
- что каждая установленная библиотека точно зафиксирована в единственном месте.
- Предоставляет возможность зафиксировать точные версии зависимостей с помощью специального файла блокировки
- (
poetry.lock), обеспечивающего воспроизводимую установку.- Автоматическая установка и упаковка:
- Автоматически собирает проект в колесо (
wheel) или архивируемое яйцо (sdist), делая развёртывание проще и быстрее.- Позволяет публиковать пакеты в PyPI или локальные хранилища.
- Удобная работа с виртуальной средой:
- Самостоятельно создаёт и активирует виртуальную среду при первом запуске проекта,
- избавляя разработчика от ручного управления виртуализацией.
- Интегрируется с большинством IDE и рабочими средами, улучшая опыт разработки.
- Поддержка семантического версионирования:
- Содержит механизмы, позволяющие удобно повышать версию проекта, используя принцип SemVer (Major.Minor.Patch).
- Интерактивный интерфейс командной строки:
- Предлагает интуитивно понятные и мощные CLI-команды для работы с зависимостями, создания виртуальных сред,
- упаковки и деплоймента.
Практика использования Poetry
Установка Poetry
Poetry устанавливается довольно просто:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
или с помощью pipsi:
pipsi install poetry
Инициализация проекта
Создать новый проект с Poetry можно следующей командой:
poetry new my-project
Затем перейдите в каталог проекта и создайте необходимое содержимое.
Добавление зависимостей
Используйте простую команду для добавления новой зависимости:
poetry add requests
Poetry автоматически обновит ваш pyproject.toml и заблокирует версию в poetry.lock.
Удаление зависимостей
Удалять ненужные зависимости тоже легко:
poetry remove requests
Работа с виртуальной средой
По умолчанию Poetry создаёт виртуальное окружение для каждого проекта.
Активировать его можно так:
poetry shell
Выход из оболочки осуществляется обычной командой выхода (exit).
Сборка и публикация пакета
Собрать проект в виде колеса можно одной командой:
poetry build
Опубликовать собранный пакет в PyPI:
poetry publish
Преимущества Poetry
- Чистота и простота в работе с зависимостями.
- Минималистичность в процессе подготовки проекта к выпуску.
- Совместимость с новыми стандартами PEP 518 и PEP 621.
- Мощные средства управления виртуальными средами.
Недостатки
- Относительно молодой инструмент,
- иногда возникают проблемы совместимости с некоторыми нестандартными библиотеками.
- Может вызывать сложности при переходе с других менеджеров зависимостей (например,
pip).
Заключение
Poetry становится всё популярнее среди разработчиков Python благодаря своему удобству,
надёжности и строгой фиксации зависимостей.
Он позволяет избежать многих распространенных проблем, присущих другим менеджерам зависимостей,
и существенно улучшает процессы подготовки и публикации Python-проектов.
Vendoring, Giga, Python. Code Format
Vendoring, Giga, Python. Code Format
VendoringВендоринг — это практика копирования внешних зависимостей внутрь самого проекта.
Основная идея состоит в том,
чтобы исключить зависимость от внешнего репозитория и гарантировать стабильность и воспроизводимость сборки.
Причины использования вендоринга
- Воспроизводимость: Гарантирует, что проект собирается одинаково независимо от изменений внешних ресурсов.
- Совместимость: Избегает проблем, связанных с обновленными версиями зависимых библиотек.
- Безопасность: Исключает риск компрометации внешней библиотеки путем атаки злоумышленников на инфраструктуру поставки.
Реализация вендоринга в Python
Существует несколько инструментов и практик для реализации вендоринга в Python:
- Setuptools' vendored dependencies:Некоторые крупные проекты используют встроенную возможность
- setuptools включать внешние библиотеки прямо в дистрибутив проекта.
- Virtualenv + requirements.txt:Хотя это не настоящий вендоринг, фиксируя точные версии зависимостей в
requirements.txt,- можно добиться похожего эффекта.
- Wheel Bundles:Создавайте специальные wheel-пакеты, содержащие внутренние копии зависимостей.
- Poetry's lock files:Poerty генерирует файл
poetry.lock, фиксирующий точное состояние зависимостей.- Vendor directories:Копируйте внешние библиотеки прямо в директорию проекта, такую как
/vendorили/third_party.Заключение
Версионирование и вендоринг играют важную роль в обеспечении стабильности и надежности проектов.
Правильное использование этих техник гарантирует минимизацию рисков, возникающих вследствие внешних факторов,
таких как обновления библиотек или проблемы с сетью. Современный стек Python предлагает удобные решения для обеих задач,
начиная от Semantic Versioning и заканчивая продвинутым вендорингом с помощью инструментов типа Poetry и Setuptools.
pyproject.toml, Giga, Python. Code Format, Tools
pyproject.toml, Giga, Python. Code Format, Tools
https://giga.chat/link/gcsObBTGeV
Файл pyproject.toml стал де-факто стандартом в мире Python благодаря поддержке его в спецификациях PEP 518 и PEP 517.
Изначально созданный для упрощения и автоматизации процесса сборки Python-приложений,
теперь он активно применяется для задания большинства аспектов управления проектом, включая сборку, тестирование,
документацию и даже публикации пакетов.
Основные секции и возможности pyproject.toml
1. [build-system]
Задает общие инструкции по сборке проекта. Включает список обязательных зависимостей для инструментов сборки и backend,
используемый для сборки (обычно это setuptools.build_meta).
Например:
[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta"
2. [tool.<name>]
Эта секция предназначена для конфигурирования сторонних инструментов, поддерживающих TOML-конфигурацию.
Она чрезвычайно полезна для различных задач:
- Poetry: Конфигурирует проект для менеджера зависимостей и упаковки poetry.
[tool.poetry] name = "awesome-proj" version = "0.1.0" description = "An awesome project" authors = ["John Doe <john@doe.org>"] license = "MIT"
Hatch: Использовать Hatch для управления жизненным циклом проекта.[tool.hatch.build] versions = ["standard"] targets = { wheel = {} }
Flake8, Black, isort: Хранят конфигурационные параметры для инструментов проверки качества кода и форматирования.[tool.black] line-length = 88 target-version = ['py37', 'py38']
3. [project]
Эта секция появилась позже и была введена в рамках PEP 621,
предназначенного для замены устаревших методов задания метаданных проекта
(таких как setup.py или старые версии setup.cfg).
Здесь хранится информация о самом проекте, такая как название, версия, авторство, лицензия
и многое другое:
[project] name = "cool-package" version = "0.1.0" description = "This is a cool package!" authors = [ { name="Alice", email="alice@example.com" }, { name="Bob", email="bob@example.com" } ] license = { file = "LICENSE" } classifiers = [ "Programming Language :: Python", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent" ] dependencies = [ "requests >= 2.25.0", "beautifulsoup4 >= 4.9.0" ] optional-dependencies = { dev = ["pytest", "mypy"], doc = ["Sphinx", "sphinx-autodoc-typehints"] }
4. Другие полезные поля
Помимо вышеперечисленных секций, pyproject.toml поддерживает также дополнительную функциональность:
- Определение динамических значений (например, извлечение версии из модуля);
- Управление окружением и системой сборки (например, настройки тестирования, покрытия, документации);
- Дополнительная поддержка любых инструментов, соответствующих спецификации TOML (через секцию
[tool.*]).
Почему pyproject.toml популярен?
- Декларативность:
- Информации больше не требуется писать вручную в
setup.py(Python-код), - а просто записывать её в обычный TOML-файл.
- Стандартизация:
- Спецификация рекомендована самим сообществом Python и
- внедряется всеми ведущими инструментами сборки и управления зависимостями.
- Унификация:
- Поддержка широкого спектра инструментов (Poetry, Flit, Hatch, Setuptools и других) делает его универсальным решением.
Таким образом,
файл pyproject.toml сейчас считается одним из ключевых компонентов любой современной системы сборки Python-программ
и используется практически повсеместно для предоставления информации о проекте,
управлении зависимостями и конфигурировании сборки.
pyproject.toml, Giga, Python. Code Format, Tools
pyproject.toml, Giga, Python. Code Format, Tools
https://giga.chat/link/gcsObBTGeV
Файл pyproject.toml является частью спецификации PEP 518,
введенной сообществом Python-разработчиков для улучшения процесса упаковки и распространения программного обеспечения.
Этот файл служит аналогом старых способов конфигурирования метаданных проектов (например, setup.py) и
предназначен для унифицированного описания различных аспектов Python-проекта.
Основные цели pyproject.toml:
- Стандартизация формата конфигурационных файлов.
- Возможность декларативного задания требований к сборочным инструментам.
- Упрощение взаимодействия с инструментами вроде
setuptools,poetry,hatchи др.
Что содержится в pyproject.toml?
Типичный пример файла pyproject.toml включает следующие секции:
[build-system]
Здесь задаются требования к сборке проекта. Например,
указывается версия стандарта построения (PEP 517) и требуемые build-backends (инструменты сборки):
[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta"
[tool.<name>]
Эта секция зарезервирована для конкретных инструментов, использующихся проектом.
Например, если вы используете Poetry, Hatch или другие утилиты, то ваши специфические настройки попадут сюда:
[tool.poetry] name = "example-package" version = "0.1.0" description = "A simple example package." authors = ["Your Name <you@example.com>"] license = "MIT" readme = "README.md" packages = [{include = "src"}] [tool.poetry.dependencies] python = "^3.10" requests = "^2.28.1" [tool.poetry.dev-dependencies] pytest = "^7.1.2" black = "^22.3.0"
Или для инструмента Hatch:
[tool.hatch.metadata] name = "my-python-app" version = "0.1.0" [tool.hatch.build.targets.wheel] versions = ["standard"]
Почему появился pyproject.toml?
До появления этого файла разработчики часто использовали комбинацию разных файлов
(например, setup.py, requirements.txt, MANIFEST.in) для описания своей инфраструктуры.
Однако такие подходы были громоздкими и могли приводить к проблемам совместимости.
Файл pyproject.toml решает многие проблемы,
предлагая единый стандартный способ определения метаданных и конфигураций для любого Python-пакета.
Таким образом,
файл pyproject.toml играет ключевую роль в современных проектах Python,
обеспечивая четкую организацию зависимостей, настроек сборки и другой важной информации.
воскресенье, 1 июня 2025 г.
pyproject.toml, Giga
pyproject.toml, Giga
https://giga.chat/link/gcsJhXtnzn Python, Project Structure
https://giga.chat/link/gcsJhXtnzn
Файл pyproject.toml стал стандартом де-факто для описания метаданных и конфигурации
Python-проектов начиная с версии Python 3.8 и PEP 518,
который предложил стандартный способ определения зависимостей и требований к сборке пакетов.
Этот файл играет ключевую роль в современной разработке на Python,
поскольку позволяет унифицированно задать требования к инструментам сборки,
спецификации зависимостей и другим аспектам проекта.
Вот пример простого файла pyproject.toml:
[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [tool.black] line-length = 88 target-version = ['py37'] [tool.isort] profile = "black" [tool.ruff] select = ["F", "E", "W", "C", "B"] [tool.poetry] name = "example-pkg-yourusername" version = "0.1.0" description = "Example package created using Poetry." authors = ["Your Name <you@example.com>"] license = "MIT" readme = "README.md" packages = [{include = "src"}] [tool.poetry.dependencies] python = "^3.7" requests = "^2.25.1" [tool.poetry.dev-dependencies] pytest = "^6.2.5"
Давайте разберём ключевые секции этого файла подробнее:
[build-system]
Эта секция определяет набор инструментов и зависимость для сборки пакета:
requires: список обязательных зависимостей для сборки (обычно это setuptools и wheel).build-backend: имя встроенной системы сборки (чаще всего этоsetuptools.build_meta).
Инструменты проверки стиля и анализа кода ([tool.*])
Эти секции используются различными инструментами для задания специфической конфигурации:
- Black: настраивается длина строки и целевые версии Python.
- Isort: задаётся профиль сортировки импортов.
- Ruff: указывается набор правил проверки кода.
[tool.poetry]
Это одна из наиболее распространённых секций для управления зависимостями и настройками
проекта с помощью менеджера пакетов Poetry:
name: название пакета.version: версия пакета.description: краткое описание пакета.authors: авторы проекта.license: лицензия на распространение.readme: путь к файлу ReadMe.packages: пути к основным пакетам проекта.
[tool.poetry.dependencies]
Здесь перечисляются зависимости основного проекта (production-dependencies):
- Версии Python.
- Внешние библиотеки, такие как
requests.
[tool.poetry.dev-dependencies]
Здесь находятся зависимости, необходимые исключительно для разработки (dev-dependencies),
такие как тестировочные библиотеки (pytest).
Зачем нужен pyproject.toml?
Использование pyproject.toml даёт следующие преимущества:
- Стандартизованный способ предоставления информации о проекте.
- Минимизирует различия между рабочими процессами разработки.
- Унифицирует установку и сборку проектов независимо от используемого менеджером пакетов.
- Улучшает контроль над зависимостями и процессом сборки.
Благодаря таким преимуществам файл pyproject.toml
стал обязательным элементом практически каждого современного Python-проекта.
Poetry, Giga
Poetry, Giga
https://giga.chat/link/gcsJhXtnzn Python, Project Structure
https://giga.chat/link/gcsJhXtnzn
Poetry — это инструмент управления зависимостями и публикацией пакетов на языке программирования Python.
Его основное предназначение заключается в автоматизации процесса создания, развертывания и
поддержания стабильных зависимостей в проектах Python.
Ключевые возможности Poetry:
- Управление зависимостями
- Автоматическое создание и управление файлом зависимостей (
pyproject.toml),- заменяя традиционные
requirements.txt.- Возможность точной фиксации версий библиотек и минимизация конфликтов между ними
- благодаря использованию алгоритма разрешения зависимостей.
- Создание виртуальной среды
- Поддерживает автоматическое создание виртуальных сред (аналогично virtualenv),
- обеспечивая изоляцию зависимостей разных проектов друг от друга.
- Сборка и публикация пакетов
- Позволяет создавать дистрибутивы Python-проекта в виде колес (
wheels)- и публиковать их на PyPI или другие репозитории пакетов.
- Автоматическая поддержка нескольких платформ
- Создает переносимые проекты, подходящие для различных операционных систем
- (Windows, macOS, Linux).
- Простота использования команд
- Простые команды для добавления, удаления и обновления зависимостей,
- а также запуска и тестирования приложений.
Примеры базовых команд Poetry:
- Установка библиотеки:
poetry add requests
- Удаление библиотеки:
poetry remove requests
- Создание нового проекта:
poetry new my-project
- Сборка пакета:
poetry build
- Публикация пакета на PyPI:
poetry publish
Почему выбирают Poetry?
- Удобное и простое управление зависимостями.
- Легкость в создании воспроизводимых рабочих сред.
- Надежность и точность контроля над версиями библиотек.
- Упрощённая разработка и выпуск пакетов.
Poetry активно развивается сообществом разработчиков
и всё чаще применяется в реальных проектах для повышения эффективности разработки
и улучшения качества сопровождения Python-приложений.