🔥 UV: Менеджер пакетов для Python для настоящих пацанов 🔥
Йо, братва! Если вы до сих пор юзаете старые инструменты типа pip и pipenv, пора перейти на новый движ — UV. Это не просто менеджер пакетов, а целый универальный инструмент, который всё решает: ставит зависимости, создает виртуалки, даже нужную версию Python подкачивает. Всё это на Rust, так что скорость — как ракета 🚀.
---
💥 Чё такое UV?
Представьте, что у вас один инструмент, который заменяет сразу кучу утилит:
• _pip_
• _pip-tools_
• _virtualenv_
• _pyenv_
• _pipx_
и даже Git-фишки!
С UV вам не надо мутиться с кучей команд — одна команда, и все работает, как часы ⏱️.
---
⚡️ Основные фишки UV:
- Скорость — молния ⚡️
Благодаря Rust, установка пакетов и разрешение зависимостей происходит в 10–100 раз быстрее, чем у старых добрых инструментов. Кэш включен — и скорость супер!
- Все в одном 🎯
UV ставит зависимости, создает виртуалки и даже управляет версиями Python. Забудьте про разрозненные утилиты!
- Простота использования 🤙
Команды похожи на привычные:
Для виртуалок и Python:
- Git-интеграция 🔥
Хочешь брать зависимости прямо из Git-реп? UV тащит их, кэширует и обновляет без заморочек. Если нужны самые свежие фичи, — это твой выбор!
---
🛠 Как юзать UV на практике:
*Инициализация проекта*
Структура проекта готова, появляется
*Добавление зависимостей*
Зависимости пишутся в конфиг, lockfile генерится — у вас всегда один и тот же билд на всех машинах.
*Создание виртуального окружения*
Нужную версию Python ставит UV и создает виртуалку без лишних заморочек.
*Запуск утилит и скриптов*
Для утилит, типа Ruff:
А если есть скрипт с инлайн-зависимостями, добавляешь так:
Запускается скрипт в изолированном окружении — все как надо.
---
🚀 Git-движуха в UV
Слушай, UV не только пакеты ставит — он умеет тащить зависимости прямо из Git! Если тебе нужна свежая версия библиотеки из репы, указывай её, а UV все схватит, закэширует и подтянет обновления. Это реально спасает, когда работаешь с экспериментальными фичами или хочешь всегда быть на гребне волны 🌊.
---
🤘 Итог
UV — это настоящий хайп в мире Python. Он объединяет все, что нужно для быстрой и удобной разработки, и уже стал стандартом для настоящих пацанов, которые ценят свое время и не любят морочиться с настройками. Если хочешь работать быстро, четко и без лишних заморочек — переходи на UV, бро. Это будущее Python, и оно уже наступило!
Если есть вопросы или нужна помощь — пиши, всегда на связи! ✌️😎
Йо, братва! Если вы до сих пор юзаете старые инструменты типа pip и pipenv, пора перейти на новый движ — UV. Это не просто менеджер пакетов, а целый универальный инструмент, который всё решает: ставит зависимости, создает виртуалки, даже нужную версию Python подкачивает. Всё это на Rust, так что скорость — как ракета 🚀.
---
💥 Чё такое UV?
Представьте, что у вас один инструмент, который заменяет сразу кучу утилит:
• _pip_
• _pip-tools_
• _virtualenv_
• _pyenv_
• _pipx_
и даже Git-фишки!
С UV вам не надо мутиться с кучей команд — одна команда, и все работает, как часы ⏱️.
---
⚡️ Основные фишки UV:
- Скорость — молния ⚡️
Благодаря Rust, установка пакетов и разрешение зависимостей происходит в 10–100 раз быстрее, чем у старых добрых инструментов. Кэш включен — и скорость супер!
- Все в одном 🎯
UV ставит зависимости, создает виртуалки и даже управляет версиями Python. Забудьте про разрозненные утилиты!
- Простота использования 🤙
Команды похожи на привычные:
uv pip install flask
uv pip compile -o requirements.txt
uv pip sync requirements.txt
Для виртуалок и Python:
uv venv --python 3.11.9
uv python install 3.12
- Git-интеграция 🔥
Хочешь брать зависимости прямо из Git-реп? UV тащит их, кэширует и обновляет без заморочек. Если нужны самые свежие фичи, — это твой выбор!
---
🛠 Как юзать UV на практике:
*Инициализация проекта*
uv init my_project
cd my_project
Структура проекта готова, появляется
pyproject.toml и .python-version. Всё по понятиям!*Добавление зависимостей*
uv add "fastapi>=0.70"
Зависимости пишутся в конфиг, lockfile генерится — у вас всегда один и тот же билд на всех машинах.
*Создание виртуального окружения*
uv python install 3.11.9
uv venv --python 3.11.9
Нужную версию Python ставит UV и создает виртуалку без лишних заморочек.
*Запуск утилит и скриптов*
Для утилит, типа Ruff:
uvx ruff check .
А если есть скрипт с инлайн-зависимостями, добавляешь так:
uv add --script my_script.py "requests" "rich"
uv run my_script.py
Запускается скрипт в изолированном окружении — все как надо.
---
🚀 Git-движуха в UV
Слушай, UV не только пакеты ставит — он умеет тащить зависимости прямо из Git! Если тебе нужна свежая версия библиотеки из репы, указывай её, а UV все схватит, закэширует и подтянет обновления. Это реально спасает, когда работаешь с экспериментальными фичами или хочешь всегда быть на гребне волны 🌊.
---
🤘 Итог
UV — это настоящий хайп в мире Python. Он объединяет все, что нужно для быстрой и удобной разработки, и уже стал стандартом для настоящих пацанов, которые ценят свое время и не любят морочиться с настройками. Если хочешь работать быстро, четко и без лишних заморочек — переходи на UV, бро. Это будущее Python, и оно уже наступило!
Если есть вопросы или нужна помощь — пиши, всегда на связи! ✌️😎
1🔥5👍4⚡1💩1
Forwarded from Находки в опенсорсе
PEP 750: t-строки в 3.14
В питон добавили еще один способ форматировать строки. Теперь – со специальным АПИ для внешних интеграций.
- PEP: https://peps.python.org/pep-0750
- Реализация: https://github.com/python/cpython/pull/132662
Основная причина: использовать
string.templatelib.Template
Новый префикс
Обратите внимание, что при создании
Давайте посмотрим на примере. Допустим, мы хотим формировать URL из наших данных:
И сам код логики форматирования, где мы будем вставлять значения разным способом. Если у нас шаблон
И вот результат:
Только теперь наш
У нас есть полный контроль за процессом форматирования. Вот в чем суть данного ПЕПа.
Фичи одной строкой
- Работает
- Есть привычные определители формата:
-
- Поддерживается режим raw строк:
Как устроено внутри?
Интересные места имплементации:
- Изменения лексера
- Изменения грамматики языка
- Новое CAPI
- Новые классы
- Новый байткод
Обсуждение: как вам еще один способ форматирования строк?
| Поддержать | YouTube | GitHub | Чат |
В питон добавили еще один способ форматировать строки. Теперь – со специальным АПИ для внешних интеграций.
- PEP: https://peps.python.org/pep-0750
- Реализация: https://github.com/python/cpython/pull/132662
Основная причина: использовать
f строки удобно, но нет никакого АПИ для перехвата момента "вставки" или интерполяции значений. Например, при форматировании html или sql – требуется специальным образом делать escape для значений. И раньше код вида f"<div>{template}</div>" представлял собой дыру в безопасности и потенциальное место для XSS.string.templatelib.Template
Новый префикс
t не будет создавать объект str, он будет создавать объект класса string.templatelib.Template:
>>> user = 'sobolevn'
>>> template = t"Hi, {user}"
>>> template
Template(strings=('Hi, ', ''), interpolations=(Interpolation('sobolevn', 'user', None, ''),))
>>> from string.templatelib import Template
>>> isinstance(template, Template)
True
Обратите внимание, что при создании
template – у нас не произошло форматирование сразу. Мы создали объект, у которого есть свойства strings и interpolations, из которых можно собрать финальную отформатированную строку.Давайте посмотрим на примере. Допустим, мы хотим формировать URL из наших данных:
>>> domain = 'example.com'
>>> query = 'python string formatting is too complex'
>>> template = t'https://{domain}?q={query}'
И сам код логики форматирования, где мы будем вставлять значения разным способом. Если у нас шаблон
query, то мы будем использовать quote_plus для его форматирования. Остальные значения – будем вставлять как есть:
>>> from string.templatelib import Template, Interpolation
>>> from urllib.parse import quote_plus
>>> def format_url(template: Template) -> str:
... parts = []
... for part in template:
... match part:
... case str() as s: # regular string
... parts.append(s)
... case Interpolation(value, expression='query'):
... parts.append(quote_plus(value))
... case Interpolation(value):
... parts.append(value)
... return ''.join(parts)
И вот результат:
>>> format_url(template)
'https://example.com?q=python+string+formatting+is+too+complex'
Только теперь наш
Template был отформатирован. Нами. Ручками.У нас есть полный контроль за процессом форматирования. Вот в чем суть данного ПЕПа.
Фичи одной строкой
- Работает
= как обычно в f строках: t'{user=}'- Есть привычные определители формата:
!r, !s, .2f, тд-
t строки можно конкатенировать: t'Hello' + t' , world!' и t'Hello, ' + 'world'- Поддерживается режим raw строк:
rt"Hi \n!"Как устроено внутри?
Интересные места имплементации:
- Изменения лексера
- Изменения грамматики языка
- Новое CAPI
_PyTemplate- Новые классы
Template и Interpolation написанные на C- Новый байткод
BUILD_INTERPOLATION и BUILD_TEMPLATE
>>> import dis
>>> user = 'sobolevn'
>>> dis.dis('t"Hi, {user}"')
0 RESUME 0
1 LOAD_CONST 2 (('Hi, ', ''))
LOAD_NAME 0 (user)
LOAD_CONST 1 ('user')
BUILD_INTERPOLATION 2
BUILD_TUPLE 1
BUILD_TEMPLATE
RETURN_VALUE
Обсуждение: как вам еще один способ форматирования строк?
| Поддержать | YouTube | GitHub | Чат |
Python Enhancement Proposals (PEPs)
PEP 750 – Template Strings | peps.python.org
This PEP introduces template strings for custom string processing.
👍7❤1