| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|