472 subscribers
6 photos
1 video
2 files
550 links
python, go, code quality, security, magic

Website and RSS:
https://itgram.orsinium.dev

Source:
https://github.com/orsinium/itgram

Author:
@orsinium
https://orsinium.dev/
Download Telegram
httpx -- http-клиент с интерфейсом как у requests, но поддержкой aiohttp, удобными моделями для url, headers и прочего, возможностью использовать с wsgi/asgi приложениями напрямую (например, для тестов во Flask). Ну и главное, в контрибьютерах нет Кеннета, зато есть авторы Django REST Framework, Sanic и urllib3 (и всё это разные люди). Так что будет очень круто и модно. Например, они хотят скоро зарелизить контекстный менеджер parallel, который работает примерно как trio: внутри контекста создаются и регистрируются запросы, а при выходе из контекста выполняются.

Ну и тут надо про trio тоже рассказать. Это такой фреймворк для async в Python, альтернатива asyncio. Гораздо более дружелюбный и простой. У автора есть статья Timeouts and cancellation for humans, в которой он рассказывает, почему trio выглядит именно так. Именно он автор той статьи Why I'm not collaborating with Kenneth Reitz. А ещё он автор библиотеки для асинхронных http запросов h11, которая как раз и используется в httpx.

#python
pydantic — валидатор данных с приведением типов. Этакий marshmallow на dataclass'ах (через аннотации типов). Можно задавать кастомные валидаторы для полей. В принципе, это всё, что про него можно сказать, но штука крутая.

starlette — асинхронный web-фреймворк с поддержкой WebSocket, GraphQL, фоновыми задачами и ещё кучей всяких вещей из коробки.

А теперь причина, по которой эти две библиотеки собрались вместе. fastapi — ещё один web-фреймворк, обёртка вокруг pydantic и starlette. Сам генерирует Swagger-документацию, валидацию через pydantic (входные параметры аннотируются как параметры view функции), все фичи starlette, OAuth, JWT, Dependency Injection. В общем, выглядит круто, работает быстро.

#python