def extract_events_data()

in probe_scraper/parsers/events.py [0:0]


def extract_events_data(e):
    props = {
        # source_field: target_field
        # TODO: extract description.
        "description": "description",
        "expiry_version": "expiry_version",
        "expiry_day": "expiry_day",
        "cpp_guard": "cpp_guard",
        "bug_numbers": "bug_numbers",
        "methods": "details/methods",
        "objects": "details/objects",
        "record_in_processes": "details/record_in_processes",
        # TODO: extract key descriptions too.
        "extra_keys": "details/extra_keys",
    }

    defaults = {
        "expiry_version": "never",
        "expiry_day": "never",
        "name": e.methods[0],
        "description": e.description,
        "cpp_guard": None,
        "bug_numbers": [],
    }

    data = {"details": {}}

    for source_field, target_field in props.items():
        value = getattr(e, source_field, e._definition.get(source_field, None))
        if value is None and source_field in defaults:
            value = defaults[source_field]
        set_in_nested_dict(data, target_field, value)

    # We only care about opt-out or opt-in really.
    optout = getattr(e, "dataset", "").endswith("_OPTOUT")
    data["optout"] = optout

    # Normalize some field values.
    data["expiry_version"] = get_major_version(data["expiry_version"])
    if data["expiry_version"] == "default":
        data["expiry_version"] = "never"

    return data