Показаны сообщения с ярлыком Poetry. Показать все сообщения
Показаны сообщения с ярлыком Poetry. Показать все сообщения

среда, 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"

----------------------------------

poetry env activate

Альтернативный способ активации (через оболочку):
Хотя 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:

Шаги, выполняемые командой:

  1. Создание каталога проекта:Команда создаёт новый каталог с именем указанного вами проекта (toy-project).
  2. Генерация базовой структуры:Внутри каталога создаются стандартные директории и файлы,
  3. соответствующие стандартной структуре Python-проекта:
    • .gitignore: файл с правилами игнорирования временных файлов и артефактов.
    • tests/: директория для размещения модульных тестов.
    • src/toy_project/__init__.py: директория с основным источником кода и пустой инициализационный файл.
    • pyproject.toml: главный файл конфигурации, содержащий базовые сведения о проекте
    • (метаданные, информация о сборке и зависимостях).
  4. Заполнение 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"
  1. Настройка рабочего окружения:После создания проекта и заполнения базовых файлов,
  2. Poetry может предложить дополнительно инициализировать Git-репозиторий и
  3. создать первое коммит-сообщение («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

  1. Управление зависимостями:
    • Poetry автоматически создаёт и хранит информацию о зависимостях в файле pyproject.toml,
    • соответствующем стандартам PEP 518 и PEP 621.
    • Управляет как прямыми, так и косвенными зависимостями, гарантируя,
    • что каждая установленная библиотека точно зафиксирована в единственном месте.
    • Предоставляет возможность зафиксировать точные версии зависимостей с помощью специального файла блокировки
    • (poetry.lock), обеспечивающего воспроизводимую установку.
  2. Автоматическая установка и упаковка:
    • Автоматически собирает проект в колесо (wheel) или архивируемое яйцо (sdist), делая развёртывание проще и быстрее.
    • Позволяет публиковать пакеты в PyPI или локальные хранилища.
  3. Удобная работа с виртуальной средой:
    • Самостоятельно создаёт и активирует виртуальную среду при первом запуске проекта,
    • избавляя разработчика от ручного управления виртуализацией.
    • Интегрируется с большинством IDE и рабочими средами, улучшая опыт разработки.
  4. Поддержка семантического версионирования:
    • Содержит механизмы, позволяющие удобно повышать версию проекта, используя принцип SemVer (Major.Minor.Patch).
  5. Интерактивный интерфейс командной строки:
    • Предлагает интуитивно понятные и мощные 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:

  1. Setuptools' vendored dependencies:Некоторые крупные проекты используют встроенную возможность
  2. setuptools включать внешние библиотеки прямо в дистрибутив проекта.
  3. Virtualenv + requirements.txt:Хотя это не настоящий вендоринг, фиксируя точные версии зависимостей в requirements.txt,
  4. можно добиться похожего эффекта.
  5. Wheel Bundles:Создавайте специальные wheel-пакеты, содержащие внутренние копии зависимостей.
  6. Poetry's lock files:Poerty генерирует файл poetry.lock, фиксирующий точное состояние зависимостей.
  7. 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:

  1. Управление зависимостями
    • Автоматическое создание и управление файлом зависимостей (pyproject.toml),
    • заменяя традиционные requirements.txt.
    • Возможность точной фиксации версий библиотек и минимизация конфликтов между ними
    • благодаря использованию алгоритма разрешения зависимостей.
  2. Создание виртуальной среды
    • Поддерживает автоматическое создание виртуальных сред (аналогично virtualenv),
    • обеспечивая изоляцию зависимостей разных проектов друг от друга.
  3. Сборка и публикация пакетов
    • Позволяет создавать дистрибутивы Python-проекта в виде колес (wheels)
    • и публиковать их на PyPI или другие репозитории пакетов.
  4. Автоматическая поддержка нескольких платформ
    • Создает переносимые проекты, подходящие для различных операционных систем
    • (Windows, macOS, Linux).
  5. Простота использования команд
    • Простые команды для добавления, удаления и обновления зависимостей,
    • а также запуска и тестирования приложений.

Примеры базовых команд Poetry:

  • Установка библиотеки:
poetry add requests
  • Удаление библиотеки:
poetry remove requests
  • Создание нового проекта:
poetry new my-project
  • Сборка пакета:
poetry build
  • Публикация пакета на PyPI:
poetry publish

Почему выбирают Poetry?

  • Удобное и простое управление зависимостями.
  • Легкость в создании воспроизводимых рабочих сред.
  • Надежность и точность контроля над версиями библиотек.
  • Упрощённая разработка и выпуск пакетов.

Poetry активно развивается сообществом разработчиков

и всё чаще применяется в реальных проектах для повышения эффективности разработки

и улучшения качества сопровождения Python-приложений.