From 8562e7d5d8173f1d500ac5421d78b5583dbcd273 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Tue, 14 Nov 2023 15:09:19 +0000 Subject: [PATCH] feat: Introduce compatibility with native namespace packages --- setup.py | 9 +++++++-- tests/unit/test_packaging.py | 37 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 tests/unit/test_packaging.py diff --git a/setup.py b/setup.py index abece197..0430d118 100644 --- a/setup.py +++ b/setup.py @@ -30,6 +30,12 @@ with io.open(readme_filename, encoding="utf-8") as readme_file: readme = readme_file.read() +packages = [ + package + for package in setuptools.find_namespace_packages() + if package.startswith("google") +] + setuptools.setup( name="google-cloud-documentai-toolbox", author="Google LLC", @@ -39,8 +45,7 @@ license="Apache 2.0", long_description=readme, long_description_content_type="text/x-rst", - packages=setuptools.PEP420PackageFinder.find(), - namespace_packages=("google", "google.cloud"), + packages=packages, platforms="Posix; MacOS X; Windows", include_package_data=True, package_data={ diff --git a/tests/unit/test_packaging.py b/tests/unit/test_packaging.py new file mode 100644 index 00000000..195008ad --- /dev/null +++ b/tests/unit/test_packaging.py @@ -0,0 +1,37 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import subprocess +import sys + + +def test_namespace_package_compat(tmp_path): + # The ``google`` namespace package should not be masked + # by the presence of ``google-cloud-documentai-toolbox``. + google = tmp_path / "google" + google.mkdir() + google.joinpath("othermod.py").write_text("") + env = dict(os.environ, PYTHONPATH=str(tmp_path)) + cmd = [sys.executable, "-m", "google.othermod"] + subprocess.check_call(cmd, env=env) + + # The ``google.cloud`` namespace package should not be masked + # by the presence of ``google-cloud-documentai-toolbox``. + google_cloud = tmp_path / "google" / "cloud" + google_cloud.mkdir() + google_cloud.joinpath("othermod.py").write_text("") + env = dict(os.environ, PYTHONPATH=str(tmp_path)) + cmd = [sys.executable, "-m", "google.cloud.othermod"] + subprocess.check_call(cmd, env=env)