You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Improved factor selection to allow multiple uses of -f for "OR" and to allow hyphenated factors (#2786)
* Enable multiple uses of '-f' meaning 'OR'
Previously, when `-f` was passed, it overwrote the last value. The
result was that `-f foo -f bar` was equivalent to only passing
`-f bar`. Under the new behavior, `-f foo -f bar` combines `foo` and
`bar` as selection criteria, using OR-semantics. Envs matching
`foo OR bar` will be selected.
The existing multi-value argument behavior for `-f` is retained, in
which `-f foo bar` means `foo AND bar`. The behaviors can be combined
to express a variety of environment selections which were not
previously possible in a single invocation. e.g. `-f foo bar -f baz`
meaning `(foo AND bar) OR baz`.
No existing tests fail, and the new behavior is checked by a new test.
The help message for `-f` is updated.
* Allow factors to be passed hyphenated
The existing parsing of factors allows multiple factors to be selected
by passing them as multiple arguments to the `-f` flag. For example,
`-f foo bar` to pass both `foo` and `bar` as factors. This can now be
passed equivalently using `-f foo-bar`. The meaning of this
usage is identical to `-f foo bar`.
A new test checks the behavior, and very closely mirrors the existing
`-f` selection test so that their outputs are exactly equivalent.
* Make factor tests parametrized & apply pre-commit
These three tests are nearly identical in structure, and rely upon the
same project configuration. Convert from three distinct test cases to
a single parametrized test.
Also apply pre-commit, which does some mild reformatting.
* Add changelog entry for #2766
* Fix missing annotation in tests
* Fix changelog entry for #2766
* Improve env selection with factors: perf and types
- use tuple instead of list for immutable data
- use `continue` and `break` to skip unnecessary loop iterations
* Cleanup factor selection tests
- convert args from list[str] to tuple[str, ...]
- reformat str concat into a `.format()` usage
* Remove unreachable factor selection check
This check cannot be reached because it relies on an impossible
combination of factors and labels.
0 commit comments