freshcrate
Skin:/
Home > Frameworks > sniffio

sniffio

Sniff out which async library your code is running under

Why this rank:Strong adoptionHealthy release cadenceRelease freshness

Description

.. image:: https://img.shields.io/badge/chat-join%20now-blue.svg :target: https://gitter.im/python-trio/general :alt: Join chatroom .. image:: https://img.shields.io/badge/docs-read%20now-blue.svg :target: https://sniffio.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. image:: https://img.shields.io/pypi/v/sniffio.svg :target: https://pypi.org/project/sniffio :alt: Latest PyPi version .. image:: https://img.shields.io/conda/vn/conda-forge/sniffio.svg :target: https://anaconda.org/conda-forge/sniffio :alt: Latest conda-forge version .. image:: https://travis-ci.org/python-trio/sniffio.svg?branch=master :target: https://travis-ci.org/python-trio/sniffio :alt: Automated test status .. image:: https://codecov.io/gh/python-trio/sniffio/branch/master/graph/badge.svg :target: https://codecov.io/gh/python-trio/sniffio :alt: Test coverage ================================================================= sniffio: Sniff out which async library your code is running under ================================================================= You're writing a library. You've decided to be ambitious, and support multiple async I/O packages, like `Trio <https://trio.readthedocs.io>`__, and `asyncio <https://docs.python.org/3/library/asyncio.html>`__, and ... You've written a bunch of clever code to handle all the differences. But... how do you know *which* piece of clever code to run? This is a tiny package whose only purpose is to let you detect which async library your code is running under. * Documentation: https://sniffio.readthedocs.io * Bug tracker and source code: https://github.com/python-trio/sniffio * License: MIT or Apache License 2.0, your choice * Contributor guide: https://trio.readthedocs.io/en/latest/contributing.html * Code of conduct: Contributors are requested to follow our `code of conduct <https://trio.readthedocs.io/en/latest/code-of-conduct.html>`_ in all project spaces. This library is maintained by the Trio project, as a service to the async Python community as a whole. Quickstart ---------- .. code-block:: python3 from sniffio import current_async_library import trio import asyncio async def print_library(): library = current_async_library() print("This is:", library) # Prints "This is trio" trio.run(print_library) # Prints "This is asyncio" asyncio.run(print_library()) For more details, including how to add support to new async libraries, `please peruse our fine manual <https://sniffio.readthedocs.io>`__.

Release History

VersionChangesUrgencyDate
1.3.1Imported from PyPI (1.3.1)Low4/21/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
master@2026-03-06Latest activity on master branchLow3/6/2026
v1.3.1Tag v1.3.1Low2/25/2024
v1.3.0Tag v1.3.0Low9/1/2022
v1.2.0Tag v1.2.0Low10/11/2020
v1.1.0Tag v1.1.0Low4/20/2019
v1.0.0Tag v1.0.0Low8/1/2018

Dependencies & License Audit

Loading dependencies...

Similar Packages

greenbackReenter an async event loop from synchronous code1.3.0
python-socksProxy (SOCKS4, SOCKS5, HTTP CONNECT) client for Pythonv3.1.1
trioA friendly Python library for async concurrency and I/Ov0.34.0
autobahnWebSocket client & server library, WAMP real-time frameworkv26_10_2
async-lruSimple LRU cache for asynciov2.4.0

More from pypi

markitdownUtility tool for converting various files to Markdown
fastapiFastAPI framework, high performance, easy to learn, fast to code, ready for production
djangoA high-level Python web framework that encourages rapid development and clean, pragmatic design.
flaskA simple framework for building complex web applications.

More in Frameworks

bamlThe AI framework that adds the engineering to prompt engineering (Python/TS/Ruby/Java/C#/Rust/Go compatible)
agentaThe open-source LLMOps platform: prompt playground, prompt management, LLM evaluation, and LLM observability all in one place.
cachetoolsExtensible memoizing collections and decorators
igniterA code generation and project patching framework.