Hi Guixers I want to start again the discussion of converting propagated-inputs of Python packages to normal inputs. I remembered that there was a discussion once on the mailing list but I could not find it anymore.
The general idea to make propagated inputs, normal inputs is the following: Every Python package hard codes it's inputs dependency paths in a file in the site-packages directory (could also be in METADATA or any other similar file). We add an additional finder to the import machinery, either to sys.meta_path or sys.path_hooks or we modify the existing PathFinder. The new or modified finder has one addition: if an import happens from a package residing inside the guix store, it first checks if the file or location of the hard coded dependecies are present and loads the module from there before processing with the standard import process. I think the actual difficult part is to single out imports coming from files inside the store and than finding the package root to lookup the hardcoded dependency paths and to make this process somewhat fast (although once the module is loaded, we can rely on the caching of sys.modules). The hooking into the import needs to be patched for each Python version we support (probably somewhere here [0]) but it may not be that immersive. What do you think? This needs probably a GCD if we ever want to go this path, but I am not sure if this suggestion is completely wrong or maybe undesired or was already suggested and discarded. Best, Reza [0] https://github.com/python/cpython/blob/main/Lib/importlib/_bootstrap_external.py
