Files
nuitka-mirror/tests/programs/pkgutil_iter_modules/PkgUtilIterModulesMain.py
2026-01-31 11:30:11 +01:00

63 lines
1.9 KiB
Python

# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
"""Test to check if pkgutil.iter_modules works with compiled packages properly."""
from __future__ import print_function
import importlib
import pkgutil
# isort:start
# Tests are dirty on purpose.
#
# pylint: disable=unused-import
import some_package.sub_package1.SomeModuleC
import some_package.sub_package1.SomeModuleD
import some_package.sub_package2.SomeModuleA
import some_package.sub_package2.SomeModuleB
# nuitka-skip-unless-imports: importlib
# Use the original "__file__" value normally, at least one case warns
# about things with filename included, but for pkgutil iteration, make
# sure we do not see original Python dirs.
# nuitka-project: --file-reference-choice=runtime
# nuitka-project: --follow-imports
print("Checking with 'pkg_util.iter_modules' what was included:")
pkg = __import__("some_package")
print("Package is", pkg)
it = pkgutil.iter_modules(pkg.__path__)
for r in it:
print(r[1], r[2])
if r[2]:
sub_pkg = importlib.import_module("some_package." + r[1])
for r2 in pkgutil.iter_modules(sub_pkg.__path__):
print(" ", r2[1], r2[2])
print("Done")
# Python tests originally created or extracted from other peoples work. The
# parts were too small to be protected.
#
# 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.