@@ -5,13 +5,108 @@ Release history
5
5
6
6
.. towncrier release notes start
7
7
8
+ trio-asyncio 0.11.0 (2020-03-09)
9
+ --------------------------------
10
+
11
+ Features
12
+ ~~~~~~~~
13
+
14
+ - Substantially reorganize monkeypatching for asyncio event loop and
15
+ event loop policy accessors, fixing support for Python 3.8. Also, stop
16
+ using features deprecated in Trio 0.12. (`#66 <https://github.com/python-trio/trio-asyncio/issues/66 >`__)
17
+
18
+ Bugfixes
19
+ ~~~~~~~~
20
+
21
+ - Calling ``loop.stop `` manually no longer causes a deadlock when
22
+ exiting the context of ``trio_asyncio.open_loop `` (`#58 <https://github.com/python-trio/trio-asyncio/issues/58 >`__)
23
+
24
+ - :func: `trio_asyncio.run ` now properly returns whatever was returned by
25
+ the async function it ran, like :func: `trio.run ` does. (`#57 <https://github.com/python-trio/trio-asyncio/issues/57 >`__)
26
+
27
+ - Replace uses of deprecated ``trio.open_cancel_scope() `` with `trio.CancelScope `.
28
+
29
+ Deprecations and Removals
30
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
31
+
32
+ - The non-underscore-prefixed names of trio-asyncio submodules (``trio_asyncio.loop ``,
33
+ ``trio_asyncio.adapter ``, etc) have been deprecated; public names should be
34
+ imported from ``trio_asyncio `` directly.
35
+
36
+ ``trio_asyncio.current_policy ``, ``trio_asyncio.TrioChildWatcher ``,
37
+ and ``trio_asyncio.TrioPolicy `` have been deprecated with no
38
+ replacement. ``current_policy `` is no longer used at all, and the
39
+ other two are singletons that can't be customized so there's no reason
40
+ to make them publicly visible.
41
+
42
+ A number of functions which were already documented as deprecated now
43
+ raise the new :exc: `~trio_asyncio.TrioAsyncioDeprecationWarning ` where
44
+ previously they provided either no runtime warning or a generic
45
+ :exc: `DeprecationWarning `. (`#64 <https://github.com/python-trio/trio-asyncio/issues/64 >`__)
46
+
47
+ trio-asyncio 0.10.0 (2018-12-09)
48
+ --------------------------------
49
+
50
+ Bugfixes
51
+ ~~~~~~~~
52
+
53
+ - Replace deprecated ``trio.Queue `` with new channels, requiring Trio 0.9 or later. (`#49 <https://github.com/python-trio/trio-asyncio/issues/49 >`__)
54
+
55
+ trio-asyncio 0.9.1 (2018-09-06)
56
+ -------------------------------
57
+
58
+ Bugfixes
59
+ ~~~~~~~~
60
+
61
+ - Defer creating an asyncio coroutine until asyncio mode is actually entered. (`#40 <https://github.com/python-trio/trio-asyncio/issues/40 >`__)
62
+
63
+ trio-asyncio 0.9.0 (2018-08-31)
64
+ -------------------------------
65
+
66
+ Features
67
+ ~~~~~~~~
68
+
69
+ - **Major reorganization: ** The main entry point for calling asyncio
70
+ from trio is now the :func: `trio_asyncio.aio_as_trio ` adapter.
71
+ Instead of calling :func: `asyncio.get_event_loop `, directly access the
72
+ contextvar ``trio_aio_loop `` (aka :data: `trio_asyncio.current_loop `). (`#36 <https://github.com/python-trio/trio-asyncio/issues/36 >`__)
73
+
74
+ Deprecations and Removals
75
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
76
+
77
+ - ``run_asyncio() `` is deprecated: replace with a :func: `aio_as_trio ` wrapper.
78
+
79
+ ``trio2aio() `` is deprecated: replace with :func: `aio_as_trio `.
80
+
81
+ ``run_future() `` and ``TrioEventLoop.run_future() `` are deprecated:
82
+ replace with :func: `run_aio_future `.
83
+
84
+ ``run_coroutine() `` and ``TrioEventLoop.run_coroutine() `` are
85
+ deprecated: replace with :func: `run_aio_coroutine `.
86
+
87
+ ``TrioEventLoop.wrap_generator() `` is deprecated: replace with a
88
+ :func: `aio_as_trio ` wrapper.
89
+
90
+ ``TrioEventLoop.run_iterator() `` is deprecated: replace with
91
+ :func: `aio_as_trio `. (`#36
92
+ <https://github.com/python-trio/trio-asyncio/issues/36> `__)
93
+
94
+ trio-asyncio 0.8.2 (2018-08-25)
95
+ -------------------------------
96
+
97
+ Features
98
+ ~~~~~~~~
99
+
100
+ - :func: `sniffio.current_async_library ` in a trio-asyncio program now returns
101
+ the correct value for the current mode (``"trio" `` or ``"asyncio" ``).
102
+
8
103
trio-asyncio 0.8.1 (2018-08-25)
9
104
-------------------------------
10
105
11
106
Features
12
107
~~~~~~~~
13
108
14
- - `trio_asyncio ` now contains an `allow_asyncio ` wrapper which allows you to
109
+ - `trio_asyncio ` now contains an :func: `allow_asyncio ` wrapper which allows you to
15
110
seamlessly mix asyncio and trio semantics::
16
111
17
112
import asyncio
@@ -29,10 +124,86 @@ Features
29
124
code. This may or may not be an issue for your code. (`#30
30
125
<https://github.com/python-trio/trio-asyncio/issues/30> `__)
31
126
127
+ - While the test suite still requires Python 3.6, :mod: `trio_asyncio ` itself
128
+ now works on Python 3.5.3 and later. (`#33
129
+ <https://github.com/python-trio/trio-asyncio/issues/33> `__)
32
130
33
- Bugfixes
34
- ~~~~~~~~
131
+ - ``TrioEventLoop.run_asyncio() `` now supports wrapping async iterators
132
+ and async context managers, in addition to its existing support for async
133
+ functions.
134
+
135
+ trio-asyncio 0.8.0 (2018-08-03)
136
+ -------------------------------
137
+
138
+ * Add ``TrioEventLoop.run_iterator() `` as an alias for ``run_generator() ``.
139
+
140
+ * Add support for Python 3.7 via a monkey-patch to
141
+ :func: `asyncio.set_event_loop_policy `. (`#23
142
+ <https://github.com/python-trio/trio-asyncio/issues/23> `__)
143
+
144
+ * Deprecate the use of "compatibility mode" / "sync event loops", except
145
+ as a tool for running the test suites of existing asyncio projects.
146
+
147
+ trio-asyncio 0.7.5 (2018-07-23)
148
+ -------------------------------
149
+
150
+ * Use a contextvar to represent the current trio-asyncio loop, rather
151
+ than the deprecated ``trio.TaskLocal ``.
152
+
153
+ * Use the ``outcome `` library rather than the deprecated ``trio.hazmat.Result ``.
154
+
155
+ * Better handle errors in wrapped async generators.
156
+
157
+ trio-asyncio 0.7.0 (2018-03-27)
158
+ -------------------------------
159
+
160
+ * The ``@trio2aio `` and ``@aio2trio `` decorators now can be used to decorate
161
+ both async generator functions and async functions that take keyword
162
+ arguments.
163
+
164
+ * :func: `open_loop ` now takes an optional ``queue_len= `` parameter to specify
165
+ the length of the internal callback queue (for performance tuning).
166
+
167
+ * Add :meth: `BaseTrioEventLoop.synchronize `.
168
+
169
+ * Monkey-patch :func: `asyncio.get_event_loop_policy ` and
170
+ :func: `asyncio.get_event_loop ` so trio-asyncio works correctly in
171
+ multithreaded programs that use a different asyncio event loop in
172
+ other threads.
173
+
174
+ * Add ``wrap_generator() `` and ``run_generator() `` which adapt an asyncio-flavored
175
+ async generator to be used from Trio code.
176
+
177
+ trio-asyncio 0.5.0 (2018-02-20)
178
+ -------------------------------
179
+
180
+ * Support contextvars on Python 3.7 and later.
181
+
182
+ * Support waiting for child processes even though Trio doesn't (yet).
183
+
184
+ trio-asyncio 0.4.2 (2018-02-12)
185
+ -------------------------------
186
+
187
+ * Add :func: `trio_asyncio.run `.
188
+
189
+ * Fix a deadlock in ``SyncTrioEventLoop ``. Encourage people to use the
190
+ async ``TrioEventLoop `` instead.
191
+
192
+ trio-asyncio 0.4.1 (2018-02-08)
193
+ -------------------------------
194
+
195
+ * Add ``TrioEventLoop.run_task() `` as an entry point for running Trio code
196
+ in a context that allows asyncio calls, for use when neither a Trio nor
197
+ an asyncio event loop is running.
198
+
199
+ trio-asyncio 0.4.0 (2018-02-07)
200
+ -------------------------------
201
+
202
+ * Add support for async loops (:func: `open_loop `) and encourage their use.
203
+ Numerous functions renamed.
204
+
205
+ trio-asyncio 0.3.0 (2017-10-17)
206
+ -------------------------------
207
+
208
+ * Initial release.
35
209
36
- - The test suite requires Python 3.6. :mod: `trio_asyncio ` itself requires
37
- Python 3.5.3. (`#33
38
- <https://github.com/python-trio/trio-asyncio/issues/33> `__)
0 commit comments