Docs-Python.ru
959 subscribers
2.7K links
Обновления сайта Docs-Python.ru
Download Telegram
Чтение и запись сжатых JSON-файлов.

Методы сжатия определяются автоматически по имени файла, — это gzip, bz2 и lzma (или xz).

https://github.com/LucaCappelletti94/compress_json?tab=readme-ov-file
👍1
🆕🔥Новый материал.

👉 Модуль Tenacity в Python.

📝 Модуль Tenacity - это Python-библиотека, которая помогает повторять выполнение кода, если он завершился ошибкой. Можно настраивать задержки, лимиты попыток, условия повтора. Автоматически обрабатывает временные ошибки. Используется как декоратор

🌐 https://docs-python.ru/packages/modul-tenacity-python/
🔥3👍1
Niquests — это элегантная и простая HTTP-библиотека для Python, созданная для людей. Она предназначена для замены Requests, которая больше не поддерживается.

Поддерживает HTTP/1.1, HTTP/2 и HTTP/3 "из коробки", без лишних усилий!

https://niquests.readthedocs.io/en/latest/index.html

Niquests стремится быть максимально совместимыми с requests, и следовательно можно мигрировать в Niquests с минимальными изменениями.

Код с модулем requests

import requests
requests.get(...)


превратится в:

import niquests
niquests.get(...)


Или просто

import niquests as requests
requests.get(...)


Если код зависит от urllib3.Timeout или urllib3.Retry, то можно сделать так:

import niquests
from niquests.packages.urllib3 import Timeout
...


urllib3 псевдонимом является niquests.packages.urllib3. Безопаснее использовать псевдоним, предоставленный Niquests.
👍8🤔1
Модуль gevent позволяет писать асинхронные сетевые приложение использую синхронный API.

Установка pip install gevent

Особенности:

- Быстрый цикл обработки событий на основе libev или libuv.
- Облегченные исполнительные модули на основе greenlets.
- API, который повторно использует концепции из стандартной библиотеки Python (в качестве примеров можно привести events и queues).
- Совместные сокеты с поддержкой SSL
- Совместные DNS-запросы, выполняемые через threadpool, dnspython или c-ares.
- Утилита Monkey, исправляющая ошибки модулей сторонних производителей для совместной работы
- Серверы TCP / UDP / HTTP
- Поддержка подпроцессов (через gevent.subprocess)
- Пулы потоков

https://pypi.org/project/gevent/
👍1
Модуль JMESPath (произносится как "джеймс пат") позволяет декларативно указать, как извлекать элементы из документа JSON.

Установка: pip install jmespath

Примеры использования:

Имеем следующий json:

{"foo": {"bar": "baz"}}


Выражение jmespath foo.bar вернет "baz".

JMESPath также поддерживает ссылки на элементы в списке.

Имеются данные:

{"foo": {"bar": ["one", "two"]}}


Выражение: foo.bar[0] вернет "one". Также можно ссылаться на все элементы в списке, используя символ звездочки *, синтаксис:

{"foo": {"bar": [{"name": "one"}, {"name": "two"}]}}


Выражение: foo.bar[*].name вернет ["one", "two"]. также поддерживается отрицательная индексация (-1 относится к последнему элементу в списке). Учитывая данные выше, выражение foo.bar[-1].name вернет "two".

Звездочку * также можно использовать для типов хэшей:

{"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}


Выражение: foo.*.name вернет ["one", "two"].

В модуле есть функция jmespath.search, которая работает со структурами данных python.

import jmespath

path = jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})
# 'baz'


Функция search в качестве аргумента принимает экземпляр jmespath.Options для управления тем, как оценивается выражение JMESPath. Наиболее распространенный сценарий использования Options для вывода ключей словаря в нужном порядке:

import jmespath

# искомую структуру можно
# скомпилировать, подобно модулю `re`
parsed = jmespath.compile('{a: a, b: b}')
parsed.search(mydata,
jmespath.Options(dict_cls=collections.OrderedDict))


https://github.com/jmespath/jmespath.py
👍42
🔁Изменение информации.

👉 Класс time() модуля datetime в Python.

📝 Класс time() модуля datetime представляет собой (локальное) время дня, независимое от какого-либо конкретного дня и подлежащее настройке с помощью объекта datetime.tzinfo().

🌐 https://docs-python.ru/standart-library/modul-datetime-python/klass-time-modulja-datetime/
👍2
🔁Изменение информации.

👉 Функция starmap() модуля itertools в Python.

📝 Функция starmap() модуля itertools создает итератор, который вычисляет функцию function, используя аргументы, полученные из кортежей в итерируемой последовательности iterable.

🌐 https://docs-python.ru/standart-library/modul-itertools-python/funktsija-starmap-modulja-itertools/
👍2
Robyn - это высокопроизводительный, ориентированный на сообщество и удобный для новаторов веб-фреймворк с поддержкой Rust.

Для установки можно просто использовать Pip:

pip install robyn


Производительность

Пример использования:

from robyn import Robyn

app = Robyn(file)

@app.get("/")
async def h(request):
return "Hello, world!"

app.start(port=8080)


Ознакомьтесь с примерами маршрутов в этом файле.

Robyn совместим со следующими версиями Python:

Python >= 3.9

Рекомендуется использовать последнюю версию Python для достижения наилучшей производительности.

Ссылка: https://robyn.tech/
2👍2🔥2
🆕🔥Новый материал.

👉 Строки шаблонов, t-строки в Python

📝 Новое в Python 3.14 Шаблонные строковые литералы (t-строки) являются обобщением f-строк, и используют префикс t вместо префикса f. T-строки вычисляются с новым типом string.templatelib.Template, а не как f-строки в типе str

🌐 https://docs-python.ru/tutorial/operatsii-tekstovymi-strokami-str-python/stroki-shablonov/
🔥5👍4
🔁Изменение информации.

👉 Метод logger.patch() модуля loguru в Python.

📝 Метод logger.patch() применяет функцию patcher для изменения записи (словарь record), созданной каждым вызовом ведения журнала.

🌐 https://docs-python.ru/packages/modul-loguru-python/funktsiia-logger-patch/
👍3
🆕🔥Новый материал.

👉 Как использовать подсказку типа @overload в Pythobn

📝 Иногда аргументы и типы в функции зависят друг от друга таким образом, что это невозможно зафиксировать с помощью типов объединения. Базовые подсказки типов не могут описать такие отношения В описанной ситуации можно использовать декоратор @typing.overload

🌐 https://docs-python.ru/standart-library/modul-typing-python/ispolzovat-podskazku-tipa-overload/
👍3❤‍🔥2🔥1🤡1
🆕🔥Новый материал.

👉 Функция monitoring модуля sys в Python.

📝 Пространство имен sys.monitoring обеспечивает доступ к функциям и константам, необходимым для активации и управления мониторингом событий.

🌐 https://docs-python.ru/standart-library/modul-sys-python/funktsiia-monitoring-modulia-sys/
👍3🔥3🥰2
🔁Изменение информации.

👉 Обработка/перехват исключений try/except в Python.

📝 Приемы перехвата ошибок конструкцией try/except. Оператор try может содержать несколько предложений except, чтобы указать обработчики для различных исключений. В этом случае будет выполнен только один обработчик.

🌐 https://docs-python.ru/tutorial/oshibki-iskljuchenija-python/obrabotka-iskljuchenij/
👍2
🔁Изменение информации.

👉 Обработка группы исключений, оператор except* в Python.

📝 Новое в Python 3.11. Группы исключений используются try/except, как и со всеми другими исключениями. Кроме того, они распознаются оператором except*, которое соответствует их подгруппам на основе типов содержащихся исключений.

🌐 https://docs-python.ru/tutorial/oshibki-iskljuchenija-python/gruppy-iskliuchenii-except/
👍3
🔁Изменение информации.

👉 Аннотации типов в Python

📝 Аннотации типов в Python 3.x являются полностью необязательной информацией метаданных о типах, используемых пользовательскими функциями.Аннотации хранятся в атрибуте функции __annotations__ как словарь и не влияют ни на какую другую часть функции.

🌐 https://docs-python.ru/tutorial/annotatsii-tipov-python/
👍3🔥1
🆕🔥Новый материал.

👉 Улучшения сообщений об ошибках в Python 3.14.

📝 Новое в Python 3.14. Подсказки на ошибки при распаковке, полезные подсказки при обнаружении опечаток в ключевых словах, обнаружении неправильно заковыченных строк, elif операторы, следующие за блоком else. Улучшены сообщения об ошибках при использовании as с несовместимыми целями и т.д.

🌐 https://docs-python.ru/tutorial/oshibki-iskljuchenija-python/uluchsheniia-soobshchenii-oshibkakh-14/
👍5🔥2
🔁Изменение информации.

👉 Замена try/finally менеджером контекста.

📝 Класс contextlib.ExitStack() позволяет вместо этого зарегистрировать обратный вызов для выполнения в конце оператора with, а затем позднее принять решение, что с этим обратным вызовом делать.

🌐 https://docs-python.ru/standart-library/modul-contextlib-python/zamena-try-finally-flaga-prodolzhenija-menedzherom-konteksta/
1👍1
🔁Изменение информации.

👉 Инструкция finally, очистка внешних ресурсов в Python.

📝 В Python блок finally используется в конструкции try...except...finally для выполнения кода, который должен быть выполнен вне зависимости от того, произошло ли исключение или нет. Он часто применяется для освобождения ресурсов, таких как файлы, сетевые соединения и т.п.

🌐 https://docs-python.ru/tutorial/oshibki-iskljuchenija-python/ispolzovanie-finally-konstruktsii-try/
🔥3👍1