Skip to content

Commit

Permalink
Move to explicitly creating a new loop (psf#3164)
Browse files Browse the repository at this point in the history
* Move to explicitly creating a new loop

- >= 3.10 add a warning that `get_event_loop` will not automatically create a loop
- Move to explicit API

Test:
- `python3.11 -m venv --upgrade-deps /tmp/tb`
  - `/tmp/tb/bin/pip install -e .`
  - Install deps and no blackd as aiohttp + yarl can't build still with 3.11
  - aio-libs/aiohttp#6600
- `export PYTHONWARNINGS=error`
```
cooper@l33t:~/repos/black$ /tmp/tb/bin/black .
All done! ✨ 🍰 ✨
44 files left unchanged.
```

Fixes psf#3110

* Add to CHANGES.md

* Fix a cooper typo yet again

* Set default asyncio loop to our explicitly created one + unset on exit

* Update CHANGES.md

Fix my silly typo.

Co-authored-by: Thomas Grainger <tagrain@gmail.com>

Co-authored-by: Cooper Ry Lees <me@wcooperlees.com>
Co-authored-by: Thomas Grainger <tagrain@gmail.com>
  • Loading branch information
3 people authored and cibinmathew committed Aug 13, 2022
1 parent be10adc commit 70c5c7a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
3 changes: 3 additions & 0 deletions CHANGES.md
Expand Up @@ -45,6 +45,9 @@

<!-- Changes to Black's terminal output and error messages -->

- Change from deprecated `asyncio.get_event_loop()` to create our event loop which
removes DeprecationWarning (#3164)

### Packaging

<!-- Changes to how Black is packaged, such as dependency requirements -->
Expand Down
8 changes: 6 additions & 2 deletions src/black/__init__.py
Expand Up @@ -773,7 +773,6 @@ def reformat_many(
from concurrent.futures import Executor, ThreadPoolExecutor, ProcessPoolExecutor

executor: Executor
loop = asyncio.get_event_loop()
worker_count = workers if workers is not None else DEFAULT_WORKERS
if sys.platform == "win32":
# Work around https://bugs.python.org/issue26903
Expand All @@ -788,6 +787,8 @@ def reformat_many(
# any good due to the Global Interpreter Lock)
executor = ThreadPoolExecutor(max_workers=1)

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(
schedule_formatting(
Expand All @@ -801,7 +802,10 @@ def reformat_many(
)
)
finally:
shutdown(loop)
try:
shutdown(loop)
finally:
asyncio.set_event_loop(None)
if executor is not None:
executor.shutdown()

Expand Down

0 comments on commit 70c5c7a

Please sign in to comment.