def transform()

in bugbug/commit_features.py [0:0]


    def transform(self, commits):
        results = []

        for commit in commits():
            data = {}
            result = {"data": data}

            for feature_extractor in self.feature_extractors:
                if "bug_features" in feature_extractor.__module__:
                    if not commit["bug"]:
                        continue

                    res = feature_extractor(commit["bug"])
                elif "test_scheduling_features" in feature_extractor.__module__:
                    res = feature_extractor(commit["test_job"], commit=commit)
                else:
                    res = feature_extractor(commit)

                if res is None:
                    continue

                if hasattr(feature_extractor, "name"):
                    feature_extractor_name = feature_extractor.name
                else:
                    feature_extractor_name = feature_extractor.__class__.__name__

                # FIXME: This is a workaround to pass the value to the
                # union transformer independently. This will be dropped when we
                # resolve https://github.com/mozilla/bugbug/issues/3876
                if isinstance(feature_extractor, Files):
                    result[sys.intern(feature_extractor_name)] = res
                    continue

                if isinstance(res, dict):
                    for key, value in res.items():
                        data[sys.intern(key)] = value
                    continue

                if isinstance(res, list):
                    for item in res:
                        data[sys.intern(f"{item} in {feature_extractor_name}")] = True
                    continue

                data[sys.intern(feature_extractor_name)] = res

            if "desc" in commit:
                for cleanup_function in self.cleanup_functions:
                    result["desc"] = cleanup_function(commit["desc"])

            results.append(result)

        return pd.DataFrame(results)