IdentityPython / pysaml2

Python implementation of SAML2
Apache License 2.0
548 stars 422 forks source link

Using attribute_map_dir files throw error 'No module named __init__' #954

Open bumblebeexx opened 4 months ago

bumblebeexx commented 4 months ago

In my SAML config I have put "attribute_map_dir": SAML_DIR / "attribute-maps",

This attribute-maps directory contains two files __init__.py and test.py

However, it causes this exception below.

Exception Type: ModuleNotFoundError at /saml2/login/
Exception Value: No module named '__init__'
...
...
File "djangosaml2/.venv/lib/python3.10/site-packages/saml2/config.py", line 338, in load
    self.load_complex(cnf)
  File "djangosaml2/.venv/lib/python3.10/site-packages/saml2/config.py", line 266, in load_complex
    acs = ac_factory(cnf.get("attribute_map_dir"))
  File "djangosaml2/.venv/lib/python3.10/site-packages/saml2/attribute_converter.py", line 67, in ac_factory
    mod = import_module(fil[:-3])

I removed __init__.py but then it threw error for test.py. It's happening because the function ac_factory() in saml2/attribute_converter.py has this code which is trying to import Python files - https://github.com/IdentityPython/pysaml2/blob/3daa066703f5ec433aeb9714a847330c540fc5d4/src/saml2/attribute_converter.py#L66

I also tried to print sys.path and it contains the full path to the map dir as set in the attribute_map_dir in config. https://github.com/IdentityPython/pysaml2/blob/3daa066703f5ec433aeb9714a847330c540fc5d4/src/saml2/attribute_converter.py#L63

I can't figure out how to get it working. Please advise the correct way to setup attribute maps.