From 9c03622c102659a27c8538040678ae86ba3be0d2 Mon Sep 17 00:00:00 2001 From: benjamin-fleischmann <56046658+benjamin-fleischmann@users.noreply.github.com> Date: Tue, 21 Apr 2020 03:44:12 +0200 Subject: [PATCH] create missing directory when creating package init file (#34) --- extract_wheels/lib/namespace_pkgs.py | 2 ++ extract_wheels/lib/namespace_pkgs_test.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/extract_wheels/lib/namespace_pkgs.py b/extract_wheels/lib/namespace_pkgs.py index 266b953..3a1b33d 100644 --- a/extract_wheels/lib/namespace_pkgs.py +++ b/extract_wheels/lib/namespace_pkgs.py @@ -84,6 +84,8 @@ def add_pkgutil_style_namespace_pkg_init(dir_path: str) -> None: if os.path.isfile(ns_pkg_init_filepath): raise ValueError("%s already contains an __init__.py file." % dir_path) + if not os.path.exists(dir_path): + os.makedirs(dir_path) with open(ns_pkg_init_filepath, "w") as ns_pkg_init_f: # See https://packaging.python.org/guides/packaging-namespace-packages/#pkgutil-style-namespace-packages ns_pkg_init_f.write( diff --git a/extract_wheels/lib/namespace_pkgs_test.py b/extract_wheels/lib/namespace_pkgs_test.py index d4e2a4c..056bb4d 100644 --- a/extract_wheels/lib/namespace_pkgs_test.py +++ b/extract_wheels/lib/namespace_pkgs_test.py @@ -131,5 +131,13 @@ def test_empty_case(self): self.assertEqual(actual, set()) +class TestaddPkgutilStyleNamespacePkgInit(unittest.TestCase): + def test_missing_directory_is_created(self): + directory = TempDir() + missing_directory = pathlib.Path(directory.root()) / "missing_directory" + namespace_pkgs.add_pkgutil_style_namespace_pkg_init(str(missing_directory)) + self.assertTrue(missing_directory.is_dir()) + + if __name__ == "__main__": unittest.main()