Source code for pm4py.hof

__doc__ = """
"""

import warnings
from pm4py.util import constants
from typing import Callable, Any, Union

from pm4py.objects.log import obj as log_inst
from pm4py.utils import __event_log_deprecation_warning
import deprecation


@deprecation.deprecated(
    deprecated_in="2.3.0",
    removed_in="3.0.0",
    details="the EventLog class will be removed in a future release.",
)
def filter_log(
    f: Callable[[Any], bool], log: log_inst.EventLog
) -> Union[log_inst.EventLog, log_inst.EventStream]:
    """
    Filters the log according to a given (lambda) function.

    :param f: function that specifies the filter criterion, may be a lambda
    :param log: event log; either EventLog or EventStream Object
    :rtype: ``Union[log_inst.EventLog, log_inst.EventStream]``
    """
    __event_log_deprecation_warning(log)

    if isinstance(log, log_inst.EventLog):
        return log_inst.EventLog(
            list(filter(f, log)),
            attributes=log.attributes,
            classifiers=log.classifiers,
            omni_present=log.omni_present,
            extensions=log.extensions,
            properties=log.properties,
        )
    elif isinstance(log, log_inst.EventStream):
        return log_inst.EventStream(
            list(filter(f, log)),
            attributes=log.attributes,
            classifiers=log.classifiers,
            omni_present=log.omni_present,
            extensions=log.extensions,
            properties=log.properties,
        )
    else:
        if constants.SHOW_INTERNAL_WARNINGS:
            warnings.warn(
                "input log object not of appropriate type, filter() not applied"
            )
        return log


[docs] def filter_trace( f: Callable[[Any], bool], trace: log_inst.Trace ) -> log_inst.Trace: """ Filters the trace according to a given (lambda) function. :param f: function that specifies the filter criterion, may be a lambda :param trace: trace; PM4Py trace object :rtype: ``log_inst.Trace`` """ __event_log_deprecation_warning(trace) if isinstance(trace, log_inst.Trace): return log_inst.Trace( list(filter(f, trace)), attributes=trace.attributes ) else: if constants.SHOW_INTERNAL_WARNINGS: warnings.warn( "input trace object is not of the appropriate type, filter() not applied" ) return trace
@deprecation.deprecated( deprecated_in="2.3.0", removed_in="3.0.0", details="the EventLog class will be removed in a future release.", ) def sort_log( log: log_inst.EventLog, key, reverse: bool = False ) -> Union[log_inst.EventLog, log_inst.EventStream]: """ Sorts the event log according to a given key. :param log: event log object; either EventLog or EventStream :param key: sorting key :param reverse: indicates whether sorting should be reversed or not :rtype: ``Union[log_inst.EventLog, log_inst.EventStream]`` """ __event_log_deprecation_warning(log) if isinstance(log, log_inst.EventLog): return log_inst.EventLog( sorted(log, key=key, reverse=reverse), attributes=log.attributes, classifiers=log.classifiers, omni_present=log.omni_present, extensions=log.extensions, properties=log.properties, ) elif isinstance(log, log_inst.EventStream): return log_inst.EventStream( sorted(log, key=key, reverse=reverse), attributes=log.attributes, classifiers=log.classifiers, omni_present=log.omni_present, extensions=log.extensions, properties=log.properties, ) else: if constants.SHOW_INTERNAL_WARNINGS: warnings.warn( "input log object not of appropriate type, sorted() not applied" ) return log @deprecation.deprecated( deprecated_in="2.3.0", removed_in="3.0.0", details="the EventLog class will be removed in a future release.", ) def sort_trace( trace: log_inst.Trace, key, reverse: bool = False ) -> log_inst.Trace: """ Sorts the events in a trace according to a given key. :param trace: input trace :param key: sorting key :param reverse: indicates whether sorting should be reversed (default False) :rtype: ``log_inst.Trace`` """ __event_log_deprecation_warning(trace) if isinstance(trace, log_inst.Trace): return log_inst.Trace(sorted(trace, key=key, reverse=reverse)) else: if constants.SHOW_INTERNAL_WARNINGS: warnings.warn( "input trace object not of appropriate type, sorted() not applied" ) return trace