mutwo.converters.abc

Defining the public api for any converter class.

Classes:

Converter()

Abstract base class for all Converter classes.

EventConverter()

Abstract base class for Converter which handle mutwo events.

SymmetricalEventConverter()

Abstract base class for Converter which handle mutwo events.

class Converter[source]

Bases: abc.ABC

Abstract base class for all Converter classes.

Converter classes are defined as classes that convert data between two different encodings. Their only public method (besides initialisation) should be a convert method that has exactly one argument (the data that should be converted).

Methods:

convert(event_or_parameter_or_file_to_convert)

abstract convert(event_or_parameter_or_file_to_convert)[source]
Parameters

event_or_parameter_or_file_to_convert (Any) –

Return type

Any

class EventConverter[source]

Bases: mutwo.converters.abc.Converter

Abstract base class for Converter which handle mutwo events.

This class helps building new classes which convert mutwo events with few general private methods (and without adding any new public method). Converting mutwo event often involves the same pattern: due to the nested structure of an Event, the converter has to iterate through the different layers until it reaches leaves (any class that inherits from mutwo.events.basic.SimpleEvent). This common iteration process and the different time treatment between mutwo.events.basic.SequentialEvent and mutwo.events.basic.SimultaneousEvent are implemented in EventConverter. For writing a new EventConverter class, one only has to override the abstract method _convert_simple_event() and the abstract method convert() (where one will perhaps call _convert_event().).

Example:

The following example defines a dummy class for demonstrating how to use EventConverter.

>>> from mutwo.converters import abc
>>> class DurationPrintConverter(abc.EventConverter):
>>>     def _convert_simple_event(self, event_to_convert, absolute_entry_delay):
>>>         return "{}: {}".format(absolute_entry_delay, event_to_convert.duration),
>>>     def convert(self, event_to_convert):
>>>         data_per_event = self._convert_event(event_to_convert, 0)
>>>         [print(data) for data in data_per_event]
>>> # now test with random event
>>> import random
>>> from mutwo.events import basic
>>> random.seed(100)
>>> random_event = basic.SimultaneousEvent(
>>>     [
>>>         basic.SequentialEvent(
>>>             [
>>>                 basic.SimpleEvent(random.uniform(0.5, 2))
>>>                 for _ in range(random.randint(2, 5))
>>>             ]
>>>         )
>>>         for _ in range(random.randint(1, 3))
>>>     ]
>>> )
>>> DurationPrintConverter().convert(random_event)
0: 1.182390506771032
1.182390506771032: 1.6561757084885333
2.8385662152595654: 1.558269840401042
4.396836055660607: 1.5979384595498836
5.994774515210491: 1.1502716523431056

Methods:

_convert_event(event_to_convert, ...)

Convert mutwo.events.abc.Event of unknown type.

_convert_sequential_event(sequential_event, ...)

Convert instance of mutwo.events.basic.SequentialEvent.

_convert_simple_event(event_to_convert, ...)

Convert instance of mutwo.events.basic.SimpleEvent.

_convert_simultaneous_event(...)

Convert instance of mutwo.events.basic.SimultaneousEvent.

convert(event_or_parameter_or_file_to_convert)

_convert_event(event_to_convert, absolute_entry_delay)[source]

Convert mutwo.events.abc.Event of unknown type.

The method calls different subroutines depending on whether the passed event either are instances from:

Parameters
Return type

Any

_convert_sequential_event(sequential_event, absolute_entry_delay)[source]

Convert instance of mutwo.events.basic.SequentialEvent.

Parameters
Return type

Sequence[Any]

abstract _convert_simple_event(event_to_convert, absolute_entry_delay)[source]

Convert instance of mutwo.events.basic.SimpleEvent.

Parameters
Return type

Sequence[Any]

_convert_simultaneous_event(simultaneous_event, absolute_entry_delay)[source]

Convert instance of mutwo.events.basic.SimultaneousEvent.

Parameters
Return type

Sequence[Any]

abstract convert(event_or_parameter_or_file_to_convert)
Parameters

event_or_parameter_or_file_to_convert (Any) –

Return type

Any

class SymmetricalEventConverter[source]

Bases: mutwo.converters.abc.EventConverter

Abstract base class for Converter which handle mutwo events.

This converter is a more specified version of the EventConverter. It helps for building converters which aim to return mutwo events.

Methods:

_convert_event(event_to_convert, ...)

Convert mutwo.events.abc.Event of unknown type.

_convert_sequential_event(sequential_event, ...)

Convert instance of mutwo.events.basic.SequentialEvent.

_convert_simple_event(event_to_convert, ...)

Convert instance of mutwo.events.basic.SimpleEvent.

_convert_simultaneous_event(...)

Convert instance of mutwo.events.basic.SimultaneousEvent.

convert(event_or_parameter_or_file_to_convert)

_convert_event(event_to_convert, absolute_entry_delay)[source]

Convert mutwo.events.abc.Event of unknown type.

The method calls different subroutines depending on whether the passed event either are instances from:

Parameters
Return type

mutwo.events.abc.ComplexEvent[mutwo.events.abc.Event]

_convert_sequential_event(sequential_event, absolute_entry_delay)[source]

Convert instance of mutwo.events.basic.SequentialEvent.

Parameters
Return type

mutwo.events.basic.SequentialEvent[mutwo.events.abc.Event]

_convert_simple_event(event_to_convert, absolute_entry_delay)[source]

Convert instance of mutwo.events.basic.SimpleEvent.

Parameters
Return type

mutwo.events.basic.SequentialEvent[mutwo.events.basic.SimpleEvent]

_convert_simultaneous_event(simultaneous_event, absolute_entry_delay)[source]

Convert instance of mutwo.events.basic.SimultaneousEvent.

Parameters
Return type

mutwo.events.basic.SimultaneousEvent[mutwo.events.abc.Event]

abstract convert(event_or_parameter_or_file_to_convert)
Parameters

event_or_parameter_or_file_to_convert (Any) –

Return type

Any