Skip to content

enforce \from future import annotations via ruff FA102 rule #760

@SACHokstack

Description

@SACHokstack

Priority Level

Low

Task Summary

Add FA102 to the ruff lint ruleset and add from future import annotations to the 16 source files currently missing it.

AGENTS.md declares from future import annotations a structural invariant ("required in every Python source file"), but the ruff select list in pyproject.toml does not include
the FA ruleset, so violations go undetected. Currently 16 src/ files are missing the import.

Technical Details & Implementation Plan

Two changes:

  1. pyproject.toml — add "FA102" to [tool.ruff.lint] select. FA102 flags files that use PEP 604/585 type syntax or have no annotations at all but are missing the future import. This
    matches the project's stated invariant without being overly strict.
  2. 16 source files — add from future import annotations after the SPDX header. All are either empty init.py files (just the license header) or re-export modules. make
    check-all-fix will auto-apply these once the rule is enabled.

Affected files:

  • packages/data-designer/src/data_designer/integrations/huggingface/init.py
  • packages/data-designer/src/data_designer/cli/commands/init.py
  • packages/data-designer-engine/src/data_designer/engine/init.py
  • packages/data-designer-engine/src/data_designer/engine/column_generators/init.py
  • packages/data-designer-engine/src/data_designer/engine/column_generators/generators/init.py
  • packages/data-designer-engine/src/data_designer/engine/dataset_builders/utils/init.py
  • packages/data-designer-engine/src/data_designer/engine/models/init.py
  • packages/data-designer-engine/src/data_designer/engine/models/parsers/init.py
  • packages/data-designer-engine/src/data_designer/engine/processing/init.py
  • packages/data-designer-engine/src/data_designer/engine/processing/ginja/init.py
  • packages/data-designer-engine/src/data_designer/engine/processing/gsonschema/init.py
  • packages/data-designer-engine/src/data_designer/engine/processing/processors/init.py
  • packages/data-designer-engine/src/data_designer/engine/resources/init.py
  • packages/data-designer-engine/src/data_designer/engine/sampling_gen/entities/init.py
  • packages/data-designer-engine/src/data_designer/engine/storage/init.py
  • packages/data-designer-config/src/data_designer/config/analysis/init.py

Verification: make check-all-fix && make test

Investigation / Context

AGENTS.md states under Structural Invariants:

▎ from future import annotations — required in every Python source file.

The current ruff select in pyproject.toml covers W, F, I, ICN, PIE, TID, UP006, UP007, UP045 — but not FA. Without FA102, the invariant is undeclared to the linter and violations
accumulate silently.

Agent Plan / Findings

Investigated with Claude Code. Grep across all three packages confirmed:

  • 16 src/ files missing from future import annotations (confirmed with grep -rL "from future import annotations" packages/ --include="*.py" | grep src/)
  • No FA rule in pyproject.toml ruff config
  • No import-direction violations, no skipped tests, no other structural invariant violations found
  • Fix is fully automatable: add rule → run make check-all-fix → all 16 files are patched by ruff

Dependencies

None.

Metadata

Metadata

Assignees

No one assigned

    Labels

    taskInternal development task

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions