(
feature_states: Iterable["FeatureState"],
)
| 508 | |
| 509 | |
| 510 | def _get_prioritised_feature_states( |
| 511 | feature_states: Iterable["FeatureState"], |
| 512 | ) -> List["FeatureState"]: |
| 513 | prioritised_feature_state_by_feature_id = {} # type: ignore[var-annotated] |
| 514 | for feature_state in feature_states: |
| 515 | # TODO: this call to is_live was causing an N+1 issue. |
| 516 | # For now, we have solved it with an extra select_related, but |
| 517 | # there is probably a neater solution here. |
| 518 | if not feature_state.is_live: |
| 519 | continue |
| 520 | if existing_feature_state := prioritised_feature_state_by_feature_id.get( |
| 521 | feature_state.feature_id |
| 522 | ): |
| 523 | if existing_feature_state > feature_state: |
| 524 | continue |
| 525 | prioritised_feature_state_by_feature_id[feature_state.feature_id] = ( |
| 526 | feature_state |
| 527 | ) |
| 528 | return list(prioritised_feature_state_by_feature_id.values()) |
| 529 | |
| 530 | |
| 531 | def _get_segment_feature_states( |
no test coverage detected
searching dependent graphs…