
This is a follow-up of #2203 that uses a pytest marker instead of a bunch of
`skipUnless`. Similarly to the Python 2 tests, they are running by default and
will crash on an unsuspecting contributor with missing dependencies. This is
by design, we WANT contributors to test everything. Unless we actually don't
and then we can run:
pytest --run-optional=no_blackd
Relatedly, bump required aiohttp to 3.6.0 at least to get rid of expected
failures on Python 3.8 (see 6b5eb7d465
).
114 lines
3.5 KiB
Python
114 lines
3.5 KiB
Python
# Copyright (C) 2020 Łukasz Langa
|
|
from setuptools import setup
|
|
import sys
|
|
import os
|
|
|
|
assert sys.version_info >= (3, 6, 2), "black requires Python 3.6.2+"
|
|
from pathlib import Path # noqa E402
|
|
|
|
CURRENT_DIR = Path(__file__).parent
|
|
sys.path.insert(0, str(CURRENT_DIR)) # for setuptools.build_meta
|
|
|
|
|
|
def get_long_description() -> str:
|
|
return (
|
|
(CURRENT_DIR / "README.md").read_text(encoding="utf8")
|
|
+ "\n\n"
|
|
+ (CURRENT_DIR / "CHANGES.md").read_text(encoding="utf8")
|
|
)
|
|
|
|
|
|
USE_MYPYC = False
|
|
# To compile with mypyc, a mypyc checkout must be present on the PYTHONPATH
|
|
if len(sys.argv) > 1 and sys.argv[1] == "--use-mypyc":
|
|
sys.argv.pop(1)
|
|
USE_MYPYC = True
|
|
if os.getenv("BLACK_USE_MYPYC", None) == "1":
|
|
USE_MYPYC = True
|
|
|
|
if USE_MYPYC:
|
|
mypyc_targets = [
|
|
"src/black/__init__.py",
|
|
"src/blib2to3/pytree.py",
|
|
"src/blib2to3/pygram.py",
|
|
"src/blib2to3/pgen2/parse.py",
|
|
"src/blib2to3/pgen2/grammar.py",
|
|
"src/blib2to3/pgen2/token.py",
|
|
"src/blib2to3/pgen2/driver.py",
|
|
"src/blib2to3/pgen2/pgen.py",
|
|
]
|
|
|
|
from mypyc.build import mypycify
|
|
|
|
opt_level = os.getenv("MYPYC_OPT_LEVEL", "3")
|
|
ext_modules = mypycify(mypyc_targets, opt_level=opt_level)
|
|
else:
|
|
ext_modules = []
|
|
|
|
setup(
|
|
name="black",
|
|
use_scm_version={
|
|
"write_to": "src/_black_version.py",
|
|
"write_to_template": 'version = "{version}"\n',
|
|
},
|
|
description="The uncompromising code formatter.",
|
|
long_description=get_long_description(),
|
|
long_description_content_type="text/markdown",
|
|
keywords="automation formatter yapf autopep8 pyfmt gofmt rustfmt",
|
|
author="Łukasz Langa",
|
|
author_email="lukasz@langa.pl",
|
|
url="https://github.com/psf/black",
|
|
project_urls={"Changelog": "https://github.com/psf/black/blob/master/CHANGES.md"},
|
|
license="MIT",
|
|
py_modules=["_black_version"],
|
|
ext_modules=ext_modules,
|
|
packages=["blackd", "black", "blib2to3", "blib2to3.pgen2", "black_primer"],
|
|
package_dir={"": "src"},
|
|
package_data={
|
|
"blib2to3": ["*.txt"],
|
|
"black": ["py.typed"],
|
|
"black_primer": ["primer.json"],
|
|
},
|
|
python_requires=">=3.6.2",
|
|
zip_safe=False,
|
|
install_requires=[
|
|
"click>=7.1.2",
|
|
"appdirs",
|
|
"toml>=0.10.1",
|
|
"typed-ast>=1.4.2; python_version < '3.8'",
|
|
"regex>=2020.1.8",
|
|
"pathspec>=0.8.1, <1",
|
|
"dataclasses>=0.6; python_version < '3.7'",
|
|
"typing_extensions>=3.7.4; python_version < '3.8'",
|
|
"mypy_extensions>=0.4.3",
|
|
],
|
|
extras_require={
|
|
"d": ["aiohttp>=3.6.0", "aiohttp-cors"],
|
|
"colorama": ["colorama>=0.4.3"],
|
|
"python2": ["typed-ast>=1.4.2"],
|
|
},
|
|
test_suite="tests.test_black",
|
|
classifiers=[
|
|
"Development Status :: 4 - Beta",
|
|
"Environment :: Console",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3.6",
|
|
"Programming Language :: Python :: 3.7",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Software Development :: Quality Assurance",
|
|
],
|
|
entry_points={
|
|
"console_scripts": [
|
|
"black=black:patched_main",
|
|
"blackd=blackd:patched_main [d]",
|
|
"black-primer=black_primer.cli:main",
|
|
]
|
|
},
|
|
)
|