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)