#     Copyright 2026, 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.
