X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/866be066463fc8fd01c16559596641f6ead1e797..1d3fb871bec82d1263940ba1d32095d660fea2ab:/setup.py?ds=inline

diff --git a/setup.py b/setup.py
index c4ea969..fb3b91f 100644
--- a/setup.py
+++ b/setup.py
@@ -1,42 +1,66 @@
 # Copyright (C) 2018 Łukasz Langa
-import ast
-import re
 from setuptools import setup
 import sys
+import os
 
 assert sys.version_info >= (3, 6, 0), "black requires Python 3.6+"
 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:
-    readme_md = CURRENT_DIR / "README.md"
-    with open(readme_md, encoding="utf8") as ld_file:
-        return ld_file.read()
+    return (
+        (CURRENT_DIR / "README.md").read_text(encoding="utf8")
+        + "\n\n"
+        + (CURRENT_DIR / "CHANGES.md").read_text(encoding="utf8")
+    )
 
 
-def get_version() -> str:
-    black_py = CURRENT_DIR / "black.py"
-    _version_re = re.compile(r"__version__\s+=\s+(?P<version>.*)")
-    with open(black_py, "r", encoding="utf8") as f:
-        match = _version_re.search(f.read())
-        version = match.group("version") if match is not None else '"unknown"'
-    return str(ast.literal_eval(version))
+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 = [
+        "black.py",
+        "blib2to3/pytree.py",
+        "blib2to3/pygram.py",
+        "blib2to3/pgen2/parse.py",
+        "blib2to3/pgen2/grammar.py",
+        "blib2to3/pgen2/token.py",
+        "blib2to3/pgen2/driver.py",
+        "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",
-    version=get_version(),
+    use_scm_version={
+        "write_to": "_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/python/black",
+    url="https://github.com/psf/black",
     license="MIT",
-    py_modules=["black", "blackd"],
+    py_modules=["black", "blackd", "_black_version"],
+    ext_modules=ext_modules,
     packages=["blib2to3", "blib2to3.pgen2"],
     package_data={"blib2to3": ["*.txt"]},
     python_requires=">=3.6",
@@ -46,7 +70,12 @@ setup(
         "attrs>=18.1.0",
         "appdirs",
         "toml>=0.9.4",
-        "typed-ast>=1.3.1",
+        "typed-ast>=1.4.0",
+        "regex>=2020.1.8",
+        "pathspec>=0.6, <1",
+        "dataclasses>=0.6; python_version < '3.7'",
+        "typing_extensions>=3.7.4",
+        "mypy_extensions>=0.4.3",
     ],
     extras_require={"d": ["aiohttp>=3.3.2", "aiohttp-cors"]},
     test_suite="tests.test_black",
@@ -59,6 +88,7 @@ setup(
         "Programming Language :: Python",
         "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3 :: Only",
         "Topic :: Software Development :: Libraries :: Python Modules",
         "Topic :: Software Development :: Quality Assurance",