Add optional uvloop import (#2258)

* Add optional uvloop import

- If we find `uvloop` in the env for black, blackd or black-primer lets try and use it
- Add a uvloop extra install

Fixes #2257

Test:
- Add ci job to install black[uvloop] and run a primer run with uvloop
  - Only with latest python (3.9)
  - Will be handy to compare runtimes as a very unoffical benchmark

* Remove tox install

* Add to CHANGES/news
This commit is contained in:
Cooper Lees 2021-05-26 05:52:09 -07:00 committed by GitHub
parent 92f20d7f84
commit 754eecf69e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 70 additions and 0 deletions

45
.github/workflows/uvloop_test.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: test uvloop
on:
push:
paths-ignore:
- "docs/**"
- "*.md"
pull_request:
paths-ignore:
- "docs/**"
- "*.md"
jobs:
build:
# We want to run on external PRs, but not on our own internal PRs as they'll be run
# by the push to the branch. Without this if check, checks are duplicated since
# internal PRs match both the push and pull_request events.
if:
github.event_name == 'push' || github.event.pull_request.head.repo.full_name !=
github.repository
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
- name: Install latest pip
run: |
python -m pip install --upgrade pip
- name: Test uvloop Extra Install
run: |
python -m pip install -e ".[uvloop]"
- name: Primer uvloop run
run: |
black-primer

View File

@ -9,6 +9,7 @@
- Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply - Respect `.gitignore` files in all levels, not only `root/.gitignore` file (apply
`.gitignore` rules like `git` does) (#2225) `.gitignore` rules like `git` does) (#2225)
- Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227) - Restored compatibility with Click 8.0 on Python 3.6 when LANG=C used (#2227)
- Add extra uvloop install + import support if in python env (#2258)
### _Blackd_ ### _Blackd_

View File

@ -86,6 +86,7 @@ def get_long_description() -> str:
"d": ["aiohttp>=3.6.0", "aiohttp-cors>=0.4.0"], "d": ["aiohttp>=3.6.0", "aiohttp-cors>=0.4.0"],
"colorama": ["colorama>=0.4.3"], "colorama": ["colorama>=0.4.3"],
"python2": ["typed-ast>=1.4.2"], "python2": ["typed-ast>=1.4.2"],
"uvloop": ["uvloop>=0.15.2"],
}, },
test_suite="tests.test_black", test_suite="tests.test_black",
classifiers=[ classifiers=[

View File

@ -54,6 +54,13 @@
from _black_version import version as __version__ from _black_version import version as __version__
# If our environment has uvloop installed lets use it
try:
import uvloop
uvloop.install()
except ImportError:
pass
# types # types
FileContent = str FileContent = str

View File

@ -13,6 +13,14 @@
from black_primer import lib from black_primer import lib
# If our environment has uvloop installed lets use it
try:
import uvloop
uvloop.install()
except ImportError:
pass
DEFAULT_CONFIG = Path(__file__).parent / "primer.json" DEFAULT_CONFIG = Path(__file__).parent / "primer.json"
_timestamp = datetime.now().strftime("%Y%m%d%H%M%S") _timestamp = datetime.now().strftime("%Y%m%d%H%M%S")

View File

@ -22,6 +22,14 @@
import black import black
import click import click
# If our environment has uvloop installed lets use it
try:
import uvloop
uvloop.install()
except ImportError:
pass
from _black_version import version as __version__ from _black_version import version as __version__
# This is used internally by tests to shut down the server prematurely # This is used internally by tests to shut down the server prematurely