From fabab23ee4252358ed19441da7eedbee8f793acc Mon Sep 17 00:00:00 2001 From: Ryan Clary Date: Mon, 4 Apr 2022 13:18:05 -0700 Subject: [PATCH 1/3] Add recipe for black --- py2app/recipes/__init__.py | 1 + py2app/recipes/black.py | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 py2app/recipes/black.py diff --git a/py2app/recipes/__init__.py b/py2app/recipes/__init__.py index 65706f5..36e4df4 100644 --- a/py2app/recipes/__init__.py +++ b/py2app/recipes/__init__.py @@ -1,6 +1,7 @@ from . import PIL # noqa: F401 from . import automissing # noqa: F401 from . import autopackages # noqa: F401 +from . import black # noqa: F401 from . import ctypes # noqa: F401 from . import detect_dunder_file # noqa: F401 from . import ftplib # noqa: F401 diff --git a/py2app/recipes/black.py b/py2app/recipes/black.py new file mode 100644 index 0000000..1f02028 --- /dev/null +++ b/py2app/recipes/black.py @@ -0,0 +1,10 @@ + +def check(cmd, mf): + m = mf.findNode("black") + if m is None or m.filename is None: + return None + + includes = ["610faff656c4cfcbb4a3__mypyc", "blackd", "pathspec"] + packages = ["black", "blib2to3"] + + return {"includes": includes, "packages": packages} From a1c0a2c33f953467d5abeb6447d2097e48dc3e30 Mon Sep 17 00:00:00 2001 From: Ryan Clary Date: Mon, 4 Apr 2022 21:31:52 -0700 Subject: [PATCH 2/3] Get 'includes' for black from its egg-info/top_level.txt since it may have a platform specific C extension with unusual name. --- py2app/recipes/black.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/py2app/recipes/black.py b/py2app/recipes/black.py index 1f02028..77c1802 100644 --- a/py2app/recipes/black.py +++ b/py2app/recipes/black.py @@ -1,10 +1,25 @@ +from pkg_resources import get_distribution +from pathlib import Path + def check(cmd, mf): m = mf.findNode("black") if m is None or m.filename is None: return None - includes = ["610faff656c4cfcbb4a3__mypyc", "blackd", "pathspec"] + egg = Path(get_distribution('black').egg_info) + top = egg / 'top_level.txt' + + # These cannot be in zip packages = ["black", "blib2to3"] + # black may include optimized platform specific C extension which has + # unusual name, e.g. 610faff656c4cfcbb4a3__mypyc; best to determine it from + # the egg-info/top_level.txt + includes = set(top.read_text().strip().split('\n')) + includes = list(includes.difference(packages)) + + # Missed dependency + includes.append('pathspec') + return {"includes": includes, "packages": packages} From b980ccd598247813ffed7d27f2a4fbd09385c4b7 Mon Sep 17 00:00:00 2001 From: Ryan Clary Date: Wed, 6 Apr 2022 09:49:32 -0700 Subject: [PATCH 3/3] Do not use pathlib --- py2app/recipes/black.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/py2app/recipes/black.py b/py2app/recipes/black.py index 77c1802..1fb86df 100644 --- a/py2app/recipes/black.py +++ b/py2app/recipes/black.py @@ -1,5 +1,5 @@ +import os from pkg_resources import get_distribution -from pathlib import Path def check(cmd, mf): @@ -7,8 +7,8 @@ def check(cmd, mf): if m is None or m.filename is None: return None - egg = Path(get_distribution('black').egg_info) - top = egg / 'top_level.txt' + egg = get_distribution('black').egg_info + top = os.path.join(egg, 'top_level.txt') # These cannot be in zip packages = ["black", "blib2to3"] @@ -16,7 +16,8 @@ def check(cmd, mf): # black may include optimized platform specific C extension which has # unusual name, e.g. 610faff656c4cfcbb4a3__mypyc; best to determine it from # the egg-info/top_level.txt - includes = set(top.read_text().strip().split('\n')) + with open(top, 'r') as f: + includes = set(f.read().strip().split('\n')) includes = list(includes.difference(packages)) # Missed dependency