Nelly-Barret / BETTER-fairificator

The fairification tools for BETTER project.
https://www.better-health-project.eu/
0 stars 0 forks source link

CI/CD does not find the `utils` file #7

Closed Nelly-Barret closed 3 weeks ago

Nelly-Barret commented 1 month ago

It seems that the CI/CD job complains about the file utils.py that is not a module: https://github.com/Nelly-Barret/BETTER-fairificator/actions/runs/9303925990/job/25607344385#step:6:54

Short snippet of the log below:

ImportError while importing test module '/home/runner/work/BETTER-fairificator/BETTER-fairificator/tests/test_Patient.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/hostedtoolcache/Python/3.12.3/x64/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
tests/test_Patient.py:3: in <module>
    from src.profiles.Patient import Patient
src/profiles/Patient.py:1: in <module>
    from src.profiles.Resource import Resource
src/profiles/Resource.py:6: in <module>
    from src.utils.constants import NONE_VALUE
src/utils/constants.py:4: in <module>
    from src.utils.utils import get_ontology_resource_uri
E   ModuleNotFoundError: No module named 'src.utils.utils'

However, the file utils.py is in a package folder with an __init__.py so it should be good...

Nelly-Barret commented 1 month ago

I have installed pytest on my laptop (activate BETTER virtual env and ran pip3 install pytest), and it raises the same error as in the CI, meaning that there is a problem with my project architecture/configuration, not with the CI configuration.

Log below:

❯ pytest test
=============================================================== test session starts ================================================================
platform darwin -- Python 3.12.3, pytest-8.2.1, pluggy-1.5.0
rootdir: /Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator
collected 0 items / 3 errors

====================================================================== ERRORS ======================================================================
______________________________________________________ ERROR collecting test/test_Extract.py _______________________________________________________
ImportError while importing test module '/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/test/test_Extract.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_Extract.py:3: in <module>
    from src.database.Database import Database
E   ModuleNotFoundError: No module named 'src'
______________________________________________________ ERROR collecting test/test_Hospital.py ______________________________________________________
ImportError while importing test module '/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/test/test_Hospital.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_Hospital.py:3: in <module>
    from src.profiles.Hospital import Hospital
E   ModuleNotFoundError: No module named 'src'
______________________________________________________ ERROR collecting test/test_Patient.py _______________________________________________________
ImportError while importing test module '/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/test/test_Patient.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_Patient.py:3: in <module>
    from src.profiles.Patient import Patient
E   ModuleNotFoundError: No module named 'src'
============================================================= short test summary info ==============================================================
ERROR test/test_Extract.py
ERROR test/test_Hospital.py
ERROR test/test_Patient.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================================ 3 errors in 0.10s =================================================================
Nelly-Barret commented 1 month ago

When adding another __init__.py under my test folder, I have a different error saying that I need to make sure test modules/packages have valid Python names:

❯ pytest test
=============================================================== test session starts ================================================================
platform darwin -- Python 3.12.3, pytest-8.2.1, pluggy-1.5.0
rootdir: /Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator
collected 0 items / 3 errors

====================================================================== ERRORS ======================================================================
______________________________________________________ ERROR collecting test/test_Extract.py _______________________________________________________
ImportError while importing test module '/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/test/test_Extract.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_Extract.py:3: in <module>
    from src.database.Database import Database
src/database/Database.py:10: in <module>
    from src.utils.utils import mongodb_match, mongodb_project_one, mongodb_sort, mongodb_limit, mongodb_group_by
src/utils/utils.py:7: in <module>
    from src.fhirDatatypes.CodeableConcept import CodeableConcept
src/fhirDatatypes/CodeableConcept.py:3: in <module>
    from src.fhirDatatypes.Coding import Coding
src/fhirDatatypes/Coding.py:3: in <module>
    from src.utils.utils import assert_type
E   ImportError: cannot import name 'assert_type' from partially initialized module 'src.utils.utils' (most likely due to a circular import) (/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/src/utils/utils.py)
______________________________________________________ ERROR collecting test/test_Hospital.py ______________________________________________________
ImportError while importing test module '/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/test/test_Hospital.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_Hospital.py:3: in <module>
    from src.profiles.Hospital import Hospital
src/profiles/Hospital.py:1: in <module>
    from src.profiles.Resource import Resource
src/profiles/Resource.py:6: in <module>
    from src.utils.constants import NONE_VALUE
src/utils/constants.py:4: in <module>
    from src.utils.utils import get_ontology_resource_uri
src/utils/utils.py:7: in <module>
    from src.fhirDatatypes.CodeableConcept import CodeableConcept
src/fhirDatatypes/CodeableConcept.py:3: in <module>
    from src.fhirDatatypes.Coding import Coding
src/fhirDatatypes/Coding.py:3: in <module>
    from src.utils.utils import assert_type
E   ImportError: cannot import name 'assert_type' from partially initialized module 'src.utils.utils' (most likely due to a circular import) (/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/src/utils/utils.py)
______________________________________________________ ERROR collecting test/test_Patient.py _______________________________________________________
ImportError while importing test module '/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/test/test_Patient.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test/test_Patient.py:3: in <module>
    from src.profiles.Patient import Patient
src/profiles/Patient.py:1: in <module>
    from src.profiles.Resource import Resource
src/profiles/Resource.py:6: in <module>
    from src.utils.constants import NONE_VALUE
src/utils/constants.py:4: in <module>
    from src.utils.utils import get_ontology_resource_uri
src/utils/utils.py:7: in <module>
    from src.fhirDatatypes.CodeableConcept import CodeableConcept
src/fhirDatatypes/CodeableConcept.py:3: in <module>
    from src.fhirDatatypes.Coding import Coding
src/fhirDatatypes/Coding.py:3: in <module>
    from src.utils.utils import assert_type
E   ImportError: cannot import name 'assert_type' from partially initialized module 'src.utils.utils' (most likely due to a circular import) (/Users/nelly/Documents/boulot/postdoc-polimi/BETTER-fairificator/src/utils/utils.py)
============================================================= short test summary info ==============================================================
ERROR test/test_Extract.py
ERROR test/test_Hospital.py
ERROR test/test_Patient.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 3 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================================ 3 errors in 0.97s =================================================================
Nelly-Barret commented 3 weeks ago

I fixed the CI/CD by:

First pipeline to succeed: https://github.com/Nelly-Barret/BETTER-fairificator/actions/runs/9448402381/job/26022325387