Source code for pm4py.objects.log.importer.xes.importer

'''
    This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

    PM4Py is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    PM4Py is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PM4Py.  If not, see <https://www.gnu.org/licenses/>.
'''
import pkgutil
from enum import Enum

from pm4py.objects.log.importer.xes.variants import iterparse, line_by_line, iterparse_mem_compressed, iterparse_20, chunk_regex


[docs]class Variants(Enum): ITERPARSE = iterparse LINE_BY_LINE = line_by_line ITERPARSE_MEM_COMPRESSED = iterparse_mem_compressed ITERPARSE_20 = iterparse_20 CHUNK_REGEX = chunk_regex
if pkgutil.find_loader("lxml"): DEFAULT_VARIANT = Variants.ITERPARSE else: DEFAULT_VARIANT = Variants.CHUNK_REGEX
[docs]def apply(path, parameters=None, variant=DEFAULT_VARIANT): """ Import a XES log into a EventLog object Parameters ----------- path Log path parameters Parameters of the algorithm, including Parameters.TIMESTAMP_SORT -> Specify if we should sort log by timestamp Parameters.TIMESTAMP_KEY -> If sort is enabled, then sort the log by using this key Parameters.REVERSE_SORT -> Specify in which direction the log should be sorted Parameters.INSERT_TRACE_INDICES -> Specify if trace indexes should be added as event attribute for each event Parameters.MAX_TRACES -> Specify the maximum number of traces to import from the log (read in order in the XML file) variant Variant of the algorithm to use, including: - Variants.ITERPARSE - Variants.LINE_BY_LINE Returns ----------- log Trace log object """ if variant == 'nonstandard': variant = Variants.LINE_BY_LINE elif variant == 'iterparse': variant = Variants.ITERPARSE elif variant == 'chunk_regex': variant = Variants.CHUNK_REGEX return variant.value.apply(path, parameters=parameters)
[docs]def deserialize(log_string, parameters=None, variant=DEFAULT_VARIANT): """ Deserialize a text/binary string representing a XES log Parameters ----------- log_string String that contains the XES parameters Parameters of the algorithm, including Parameters.TIMESTAMP_SORT -> Specify if we should sort log by timestamp Parameters.TIMESTAMP_KEY -> If sort is enabled, then sort the log by using this key Parameters.REVERSE_SORT -> Specify in which direction the log should be sorted Parameters.INSERT_TRACE_INDICES -> Specify if trace indexes should be added as event attribute for each event Parameters.MAX_TRACES -> Specify the maximum number of traces to import from the log (read in order in the XML file) variant Variant of the algorithm to use, including: - Variants.ITERPARSE - Variants.LINE_BY_LINE Returns ----------- log Trace log object """ if parameters is None: parameters = {} return variant.value.import_from_string(log_string, parameters=parameters)