diff --git a/isort/core.py b/isort/core.py index 9dfaf70f..4c77a1d9 100644 --- a/isort/core.py +++ b/isort/core.py @@ -326,7 +326,10 @@ def process( or " cimport " in import_statement or " cimport*" in import_statement or " cimport(" in import_statement - or ".cimport" in import_statement + or ( + ".cimport" in import_statement + and "cython.cimports" not in import_statement + ) # Allow pure python imports. See #2062 ): cimport_statement = True diff --git a/tests/unit/test_ticketed_features.py b/tests/unit/test_ticketed_features.py index 0460ae05..b5b6192a 100644 --- a/tests/unit/test_ticketed_features.py +++ b/tests/unit/test_ticketed_features.py @@ -1056,3 +1056,20 @@ def test_sort_configurable_sort_issue_1732() -> None: ) with pytest.raises(exceptions.SortingFunctionDoesNotExist): isort.code(test_input, sort_order="round") + + +def test_cython_pure_python_imports_2062(): + """Test to ensure an import form a cython.cimports remains import, not cimport. + See: https://github.com/pycqa/isort/issues/2062. + """ + assert isort.check_code( + """ +import cython +from cython.cimports.libc import math + + +def use_libc_math(): + return math.ceil(5.5) +""", + show_diff=True, + )