sapp/pipeline/add_features.py (16 lines of code) (raw):
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
import logging
from typing import List, Optional, Set, Tuple
from . import DictEntries, PipelineStep, Summary
log: logging.Logger = logging.getLogger("sapp")
class AddFeatures(PipelineStep[DictEntries, DictEntries]):
"""Optional pipeline that attaches given features to all issues.
If the features list is empty, the input is simply passed without
change as the output"""
def __init__(self, features: Optional[List[str]]) -> None:
super().__init__()
self.features: Set[str] = set(features or [])
def run(self, input: DictEntries, summary: Summary) -> Tuple[DictEntries, Summary]:
if len(self.features) > 0:
log.info("Attaching provided features")
input["issues"] = [
issue._replace(features=list(set(issue.features) | self.features))
for issue in input["issues"]
]
return input, summary