X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/5c2dd96a69a935cf45acbdf2ffabbd39b27d38fa..6d8b90167b00707c5524f993933e33ddbd5a90f6:/setup.py?ds=sidebyside

diff --git a/setup.py b/setup.py
index 096be9e..f0b727c 100644
--- a/setup.py
+++ b/setup.py
@@ -1,13 +1,13 @@
 # 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:
@@ -16,33 +16,66 @@ def get_long_description() -> str:
         return ld_file.read()
 
 
-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/ambv/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",
     zip_safe=False,
-    install_requires=["click>=6.5", "attrs>=18.1.0", "appdirs", "toml>=0.9.4"],
-    extras_require={"d": ["aiohttp>=3.3.2"]},
+    install_requires=[
+        "click>=6.5",
+        "attrs>=18.1.0",
+        "appdirs",
+        "toml>=0.9.4",
+        "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",
     classifiers=[
         "Development Status :: 4 - Beta",
@@ -53,6 +86,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",