Skip to content

feat: axis masking via cross-axis constraints (#31)#40

Draft
MacdonaldJoshuaCaleb wants to merge 1 commit intomainfrom
feature/31-axis-masking
Draft

feat: axis masking via cross-axis constraints (#31)#40
MacdonaldJoshuaCaleb wants to merge 1 commit intomainfrom
feature/31-axis-masking

Conversation

@MacdonaldJoshuaCaleb
Copy link
Collaborator

Adds a constraints block to filter Cartesian product expansion, avoiding empty compartments.

Issues

Refs #31

Add cross-axis constraint normalization infrastructure:

- _validate_constraint_axes(): validates axes list per constraint rule
- _resolve_constraint_mode(): determines allow/exclude mode
- _validate_constraint_rule(): validates individual rule mappings
- _normalize_constraints(): main entry point, parses and validates the
  constraints block from a spec dict

Each constraint rule must reference at least two axes, specify either
'allow' or 'exclude' (not both), and only reference known axes/coords.

Also adds PLC2701 to test per-file-ignores in pyproject.toml to allow
importing private helpers for direct unit testing.

Tests: 14 new tests covering happy paths and error cases.

Refs: #31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant