astral-sh/ruff · error · anyhow::Error

Required import `from collections.abc import Set` specified

Error message

Required import `from collections.abc import Set` specified in `lint.isort.required-imports` (I002) conflicts with `unaliased-collections-abc-set-import` (PYI025), which requires this import to be aliased as `AbstractSet`.

Help: Either alias the required import (`from collections.abc import Set as AbstractSet`), or disable PYI025.

What it means

Error "Required import `from collections.abc import Set` specified in `lint.isort.required-imports` (I002) conflicts with `unaliased-collections-abc-set-import` (PYI025), which requires this import to be aliased as `AbstractSet`. Help: Either alias the required import (`from collections.abc import Set as AbstractSet`), or disable PYI025." thrown in astral-sh/ruff.

Source

Thrown at crates/ruff_workspace/src/configuration.rs:1801

/// (unaliased-collections-abc-set-import).
///
/// If `required-imports` includes `from collections.abc import Set` (without
/// aliasing it as `AbstractSet`) and PYI025 is enabled, the configuration is
/// contradictory: I002 requires the unaliased import, while PYI025 forbids it.
fn conflicting_required_import_pyi025(
    isort: &isort::settings::Settings,
    rules: &RuleTable,
) -> Result<()> {
    if !rules.enabled(Rule::UnaliasedCollectionsAbcSetImport) {
        return Ok(());
    }

    for required_import in &isort.required_imports {
        let qualified_name = required_import.qualified_name();
        if qualified_name.segments() == ["collections", "abc", "Set"]
            && required_import.bound_name() != "AbstractSet"
        {
            return Err(anyhow!(
                "Required import `from collections.abc import Set` specified in \
                `lint.isort.required-imports` (I002) conflicts with \
                `unaliased-collections-abc-set-import` (PYI025), which requires \
                this import to be aliased as `AbstractSet`.\n\n\
                Help: Either alias the required import \
                (`from collections.abc import Set as AbstractSet`), \
                or disable PYI025."
            ));
        }
    }

    Ok(())
}

#[cfg(test)]
mod tests {
    use anyhow::Result;

View on GitHub (pinned to 672bb4edf0)

When it happens

Trigger: Thrown at crates/ruff_workspace/src/configuration.rs:1801 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of astral-sh/ruff@672bb4edf0 (2026-08-16). Data as JSON: /api/errors/8be718d427ce90e2. Report an issue: GitHub.