Skip to content

Commit

Permalink
Refactor black into packages in src/ dir (psf#1376)
Browse files Browse the repository at this point in the history
- Move black.py to src/black/__init__.py
- Have setuptools_scm make src/_black_version.py and exclude from git
- Move blackd.py to src/blackd/__init__.py
- Move blib2to3/ to src/
- Update `setup.py`
- Update unittests to pass
  - Mostly path fixing + resolving
- Update CI
  - pre-commit config
  - appveyor + travis

Tested on my mac with python 3.7.5 via:
```
python3 -m venv /tmp/tb3
/tmp/tb3/bin/pip install --upgrade setuptools pip coverage pre-commit
/tmp/tb2/bin/pip install ~/repos/black/
cd ~/repos/black/
/tmp/tb2/bin/coverage run tests/test_black.py
/tmp/tb3/bin/pre-commit run -a
/tmp/tb3/bin/black --help
/tmp/tb3/bin/black ~/repos/ptr/ptr.py
```
  • Loading branch information
cooperlees authored May 8, 2020
1 parent 0721f11 commit 2082a32
Show file tree
Hide file tree
Showing 25 changed files with 34 additions and 32 deletions.
4 changes: 2 additions & 2 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ build: off

test_script:
- C:\Python36\python.exe tests/test_black.py
- C:\Python36\python.exe -m mypy black.py blackd.py tests/test_black.py blib2to3
- C:\Python36\python.exe -m mypy src/black src/blackd tests/test_black.py src/blib2to3

after_test:
- C:\Python36\python.exe -m pip install pyinstaller
- "%CMD_IN_ENV% C:\\Python36\\python.exe -m PyInstaller --clean -F --add-data
blib2to3/;blib2to3 black.py"
src/blib2to3/;blib2to3 src/black/__init__.py"

artifacts:
- path: dist/black.exe
Expand Down
2 changes: 1 addition & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[report]
omit =
blib2to3/*
src/blib2to3/*
tests/data/*
*/site-packages/*
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ black.egg-info
build/
dist/
pip-wheel-metadata/
_black_version.py
src/_black_version.py
.idea
.eggs
.dmypy.json
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Note: don't use this config for your own repositories. Instead, see
# "Version control integration" in README.md.
exclude: ^(blib2to3/|profiling/|tests/data/)
exclude: ^(src/blib2to3/|profiling/|tests/data/)
repos:
- repo: local
hooks:
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ matrix:
- python: 3.9-dev
before_deploy:
- pip install pyinstaller
- pyinstaller --clean -F --add-data blib2to3/:blib2to3 black.py
- pyinstaller --clean -F --add-data src/blib2to3/:blib2to3 src/black/__init__.py
deploy:
provider: releases
api_key:
Expand Down
25 changes: 13 additions & 12 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (C) 2018 Łukasz Langa
# Copyright (C) 2020 Łukasz Langa
from setuptools import setup
import sys
import os
Expand Down Expand Up @@ -28,14 +28,14 @@ def get_long_description() -> str:

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",
"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
Expand All @@ -48,7 +48,7 @@ def get_long_description() -> str:
setup(
name="black",
use_scm_version={
"write_to": "_black_version.py",
"write_to": "src/_black_version.py",
"write_to_template": 'version = "{version}"\n',
},
description="The uncompromising code formatter.",
Expand All @@ -60,9 +60,10 @@ def get_long_description() -> str:
url="https://github.com/psf/black",
project_urls={"Changelog": "https://github.com/psf/black/blob/master/CHANGES.md"},
license="MIT",
py_modules=["black", "blackd", "_black_version"],
py_modules=["_black_version"],
ext_modules=ext_modules,
packages=["blib2to3", "blib2to3.pgen2"],
packages=["blackd", "black", "blib2to3", "blib2to3.pgen2"],
package_dir={"": "src"},
package_data={"blib2to3": ["*.txt"]},
python_requires=">=3.6",
zip_safe=False,
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
29 changes: 15 additions & 14 deletions tests/test_black.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
fs = partial(black.format_str, mode=black.FileMode())
THIS_FILE = Path(__file__)
THIS_DIR = THIS_FILE.parent
PROJECT_ROOT = THIS_DIR.parent
DETERMINISTIC_HEADER = "[Deterministic header]"
EMPTY_LINE = "# EMPTY LINE WITH WHITESPACE" + " (this comment will be removed)"
PY36_ARGS = [
Expand All @@ -54,7 +55,7 @@ def read_data(name: str, data: bool = True) -> Tuple[str, str]:
name += ".py"
_input: List[str] = []
_output: List[str] = []
base_dir = THIS_DIR / "data" if data else THIS_DIR
base_dir = THIS_DIR / "data" if data else PROJECT_ROOT
with open(base_dir / name, "r", encoding="utf8") as test:
lines = test.readlines()
result = _input
Expand Down Expand Up @@ -202,43 +203,43 @@ def test_self(self) -> None:
self.checkSourceFile("tests/test_black.py")

def test_black(self) -> None:
self.checkSourceFile("black.py")
self.checkSourceFile("src/black/__init__.py")

def test_pygram(self) -> None:
self.checkSourceFile("blib2to3/pygram.py")
self.checkSourceFile("src/blib2to3/pygram.py")

def test_pytree(self) -> None:
self.checkSourceFile("blib2to3/pytree.py")
self.checkSourceFile("src/blib2to3/pytree.py")

def test_conv(self) -> None:
self.checkSourceFile("blib2to3/pgen2/conv.py")
self.checkSourceFile("src/blib2to3/pgen2/conv.py")

def test_driver(self) -> None:
self.checkSourceFile("blib2to3/pgen2/driver.py")
self.checkSourceFile("src/blib2to3/pgen2/driver.py")

def test_grammar(self) -> None:
self.checkSourceFile("blib2to3/pgen2/grammar.py")
self.checkSourceFile("src/blib2to3/pgen2/grammar.py")

def test_literals(self) -> None:
self.checkSourceFile("blib2to3/pgen2/literals.py")
self.checkSourceFile("src/blib2to3/pgen2/literals.py")

def test_parse(self) -> None:
self.checkSourceFile("blib2to3/pgen2/parse.py")
self.checkSourceFile("src/blib2to3/pgen2/parse.py")

def test_pgen(self) -> None:
self.checkSourceFile("blib2to3/pgen2/pgen.py")
self.checkSourceFile("src/blib2to3/pgen2/pgen.py")

def test_tokenize(self) -> None:
self.checkSourceFile("blib2to3/pgen2/tokenize.py")
self.checkSourceFile("src/blib2to3/pgen2/tokenize.py")

def test_token(self) -> None:
self.checkSourceFile("blib2to3/pgen2/token.py")
self.checkSourceFile("src/blib2to3/pgen2/token.py")

def test_setup(self) -> None:
self.checkSourceFile("setup.py")

def test_piping(self) -> None:
source, expected = read_data("../black", data=False)
source, expected = read_data("src/black/__init__", data=False)
result = BlackRunner().invoke(
black.main,
["-", "--fast", f"--line-length={black.DEFAULT_LINE_LENGTH}"],
Expand Down Expand Up @@ -1663,7 +1664,7 @@ def test_assert_equivalent_different_asts(self) -> None:

def test_symlink_out_of_root_directory(self) -> None:
path = MagicMock()
root = THIS_DIR
root = THIS_DIR.resolve()
child = MagicMock()
include = re.compile(black.DEFAULT_INCLUDES)
exclude = re.compile(black.DEFAULT_EXCLUDES)
Expand Down

0 comments on commit 2082a32

Please sign in to comment.