189 lines
8.4 KiB
Plaintext
189 lines
8.4 KiB
Plaintext
|
Metadata-Version: 2.1
|
|||
|
Name: trio
|
|||
|
Version: 0.26.2
|
|||
|
Summary: A friendly Python library for async concurrency and I/O
|
|||
|
Author-email: "Nathaniel J. Smith" <njs@pobox.com>
|
|||
|
License: MIT OR Apache-2.0
|
|||
|
Project-URL: Homepage, https://github.com/python-trio/trio
|
|||
|
Project-URL: Documentation, https://trio.readthedocs.io/
|
|||
|
Project-URL: Changelog, https://trio.readthedocs.io/en/latest/history.html
|
|||
|
Keywords: async,io,networking,trio
|
|||
|
Classifier: Development Status :: 3 - Alpha
|
|||
|
Classifier: Framework :: Trio
|
|||
|
Classifier: Intended Audience :: Developers
|
|||
|
Classifier: License :: OSI Approved :: MIT License
|
|||
|
Classifier: License :: OSI Approved :: Apache Software License
|
|||
|
Classifier: Operating System :: POSIX :: Linux
|
|||
|
Classifier: Operating System :: MacOS :: MacOS X
|
|||
|
Classifier: Operating System :: POSIX :: BSD
|
|||
|
Classifier: Operating System :: Microsoft :: Windows
|
|||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|||
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|||
|
Classifier: Programming Language :: Python :: 3.8
|
|||
|
Classifier: Programming Language :: Python :: 3.9
|
|||
|
Classifier: Programming Language :: Python :: 3.10
|
|||
|
Classifier: Programming Language :: Python :: 3.11
|
|||
|
Classifier: Programming Language :: Python :: 3.12
|
|||
|
Classifier: Programming Language :: Python :: 3.13
|
|||
|
Classifier: Topic :: System :: Networking
|
|||
|
Classifier: Typing :: Typed
|
|||
|
Requires-Python: >=3.8
|
|||
|
Description-Content-Type: text/x-rst
|
|||
|
License-File: LICENSE
|
|||
|
License-File: LICENSE.APACHE2
|
|||
|
License-File: LICENSE.MIT
|
|||
|
Requires-Dist: attrs >=23.2.0
|
|||
|
Requires-Dist: sortedcontainers
|
|||
|
Requires-Dist: idna
|
|||
|
Requires-Dist: outcome
|
|||
|
Requires-Dist: sniffio >=1.3.0
|
|||
|
Requires-Dist: cffi >=1.14 ; os_name == "nt" and implementation_name != "pypy"
|
|||
|
Requires-Dist: exceptiongroup ; python_version < "3.11"
|
|||
|
|
|||
|
.. 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/forum-join%20now-blue.svg
|
|||
|
:target: https://trio.discourse.group
|
|||
|
:alt: Join forum
|
|||
|
|
|||
|
.. image:: https://img.shields.io/badge/docs-read%20now-blue.svg
|
|||
|
:target: https://trio.readthedocs.io
|
|||
|
:alt: Documentation
|
|||
|
|
|||
|
.. image:: https://img.shields.io/pypi/v/trio.svg
|
|||
|
:target: https://pypi.org/project/trio
|
|||
|
:alt: Latest PyPi version
|
|||
|
|
|||
|
.. image:: https://img.shields.io/conda/vn/conda-forge/trio.svg
|
|||
|
:target: https://anaconda.org/conda-forge/trio
|
|||
|
:alt: Latest conda-forge version
|
|||
|
|
|||
|
.. image:: https://codecov.io/gh/python-trio/trio/branch/main/graph/badge.svg
|
|||
|
:target: https://codecov.io/gh/python-trio/trio
|
|||
|
:alt: Test coverage
|
|||
|
|
|||
|
Trio – a friendly Python library for async concurrency and I/O
|
|||
|
==============================================================
|
|||
|
|
|||
|
.. image:: https://raw.githubusercontent.com/python-trio/trio/9b0bec646a31e0d0f67b8b6ecc6939726faf3e17/logo/logo-with-background.svg
|
|||
|
:width: 200px
|
|||
|
:align: right
|
|||
|
|
|||
|
The Trio project aims to produce a production-quality,
|
|||
|
`permissively licensed
|
|||
|
<https://github.com/python-trio/trio/blob/main/LICENSE>`__,
|
|||
|
async/await-native I/O library for Python. Like all async libraries,
|
|||
|
its main purpose is to help you write programs that do **multiple
|
|||
|
things at the same time** with **parallelized I/O**. A web spider that
|
|||
|
wants to fetch lots of pages in parallel, a web server that needs to
|
|||
|
juggle lots of downloads and websocket connections simultaneously, a
|
|||
|
process supervisor monitoring multiple subprocesses... that sort of
|
|||
|
thing. Compared to other libraries, Trio attempts to distinguish
|
|||
|
itself with an obsessive focus on **usability** and
|
|||
|
**correctness**. Concurrency is complicated; we try to make it *easy*
|
|||
|
to get things *right*.
|
|||
|
|
|||
|
Trio was built from the ground up to take advantage of the `latest
|
|||
|
Python features <https://www.python.org/dev/peps/pep-0492/>`__, and
|
|||
|
draws inspiration from `many sources
|
|||
|
<https://github.com/python-trio/trio/wiki/Reading-list>`__, in
|
|||
|
particular Dave Beazley's `Curio <https://curio.readthedocs.io/>`__.
|
|||
|
The resulting design is radically simpler than older competitors like
|
|||
|
`asyncio <https://docs.python.org/3/library/asyncio.html>`__ and
|
|||
|
`Twisted <https://twistedmatrix.com/>`__, yet just as capable. Trio is
|
|||
|
the Python I/O library I always wanted; I find it makes building
|
|||
|
I/O-oriented programs easier, less error-prone, and just plain more
|
|||
|
fun. `Perhaps you'll find the same
|
|||
|
<https://github.com/python-trio/trio/wiki/Testimonials>`__.
|
|||
|
|
|||
|
This project is young and still somewhat experimental: the overall
|
|||
|
design is solid, and the existing features are fully tested and
|
|||
|
documented, but you may encounter missing functionality or rough
|
|||
|
edges. We *do* encourage you to use it, but you should `read and
|
|||
|
subscribe to issue #1
|
|||
|
<https://github.com/python-trio/trio/issues/1>`__ to get a warning and a
|
|||
|
chance to give feedback about any compatibility-breaking changes.
|
|||
|
|
|||
|
|
|||
|
Where to next?
|
|||
|
--------------
|
|||
|
|
|||
|
**I want to try it out!** Awesome! We have a `friendly tutorial
|
|||
|
<https://trio.readthedocs.io/en/stable/tutorial.html>`__ to get you
|
|||
|
started; no prior experience with async coding is required.
|
|||
|
|
|||
|
**Ugh, I don't want to read all that – show me some code!** If you're
|
|||
|
impatient, then here's a `simple concurrency example
|
|||
|
<https://trio.readthedocs.io/en/stable/tutorial.html#tutorial-example-tasks-intro>`__,
|
|||
|
an `echo client
|
|||
|
<https://trio.readthedocs.io/en/stable/tutorial.html#tutorial-echo-client-example>`__,
|
|||
|
and an `echo server
|
|||
|
<https://trio.readthedocs.io/en/stable/tutorial.html#tutorial-echo-server-example>`__.
|
|||
|
|
|||
|
**How does Trio make programs easier to read and reason about than
|
|||
|
competing approaches?** Trio is based on a new way of thinking that we
|
|||
|
call "structured concurrency". The best theoretical introduction is
|
|||
|
the article `Notes on structured concurrency, or: Go statement
|
|||
|
considered harmful
|
|||
|
<https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/>`__.
|
|||
|
Or, `check out this talk at PyCon 2018
|
|||
|
<https://www.youtube.com/watch?v=oLkfnc_UMcE>`__ to see a
|
|||
|
demonstration of implementing the "Happy Eyeballs" algorithm in an
|
|||
|
older library versus Trio.
|
|||
|
|
|||
|
**Cool, but will it work on my system?** Probably! As long as you have
|
|||
|
some kind of Python 3.8-or-better (CPython or `currently maintained versions of
|
|||
|
PyPy3 <https://doc.pypy.org/en/latest/faq.html#which-python-versions-does-pypy-implement>`__
|
|||
|
are both fine), and are using Linux, macOS, Windows, or FreeBSD, then Trio
|
|||
|
will work. Other environments might work too, but those
|
|||
|
are the ones we test on. And all of our dependencies are pure Python,
|
|||
|
except for CFFI on Windows, which has wheels available, so
|
|||
|
installation should be easy (no C compiler needed).
|
|||
|
|
|||
|
**I tried it, but it's not working.** Sorry to hear that! You can try
|
|||
|
asking for help in our `chat room
|
|||
|
<https://gitter.im/python-trio/general>`__ or `forum
|
|||
|
<https://trio.discourse.group>`__, `filing a bug
|
|||
|
<https://github.com/python-trio/trio/issues/new>`__, or `posting a
|
|||
|
question on StackOverflow
|
|||
|
<https://stackoverflow.com/questions/ask?tags=python+python-trio>`__,
|
|||
|
and we'll do our best to help you out.
|
|||
|
|
|||
|
**Trio is awesome, and I want to help make it more awesome!** You're
|
|||
|
the best! There's tons of work to do – filling in missing
|
|||
|
functionality, building up an ecosystem of Trio-using libraries,
|
|||
|
usability testing (e.g., maybe try teaching yourself or a friend to
|
|||
|
use Trio and make a list of every error message you hit and place
|
|||
|
where you got confused?), improving the docs, ... check out our `guide
|
|||
|
for contributors
|
|||
|
<https://trio.readthedocs.io/en/stable/contributing.html>`__!
|
|||
|
|
|||
|
**I don't have any immediate plans to use it, but I love geeking out
|
|||
|
about I/O library design!** That's a little weird? But let's be
|
|||
|
honest, you'll fit in great around here. We have a `whole sub-forum
|
|||
|
for discussing structured concurrency
|
|||
|
<https://trio.discourse.group/c/structured-concurrency>`__ (developers
|
|||
|
of other systems welcome!). Or check out our `discussion of design
|
|||
|
choices
|
|||
|
<https://trio.readthedocs.io/en/stable/design.html#user-level-api-principles>`__,
|
|||
|
`reading list
|
|||
|
<https://github.com/python-trio/trio/wiki/Reading-list>`__, and
|
|||
|
`issues tagged design-discussion
|
|||
|
<https://github.com/python-trio/trio/labels/design%20discussion>`__.
|
|||
|
|
|||
|
**I want to make sure my company's lawyers won't get angry at me!** No
|
|||
|
worries, Trio is permissively licensed under your choice of MIT or
|
|||
|
Apache 2. See `LICENSE
|
|||
|
<https://github.com/python-trio/trio/blob/main/LICENSE>`__ for details.
|
|||
|
|
|||
|
|
|||
|
Code of conduct
|
|||
|
---------------
|
|||
|
|
|||
|
Contributors are requested to follow our `code of conduct
|
|||
|
<https://trio.readthedocs.io/en/stable/code-of-conduct.html>`__ in all
|
|||
|
project spaces.
|