Glossary

Common terms and principles used by implementations in this library.

Connection & Disconnection

When a callable object is being set, added or removed as a target for an emittion.

The connection is created and stored inside the object, it’s a direct reference to the callable target and optionally the flags being used.

Disconnection will happen automatically when the oneshot tag is enabled or a connection’s weakreference dies.

Weak reference to a callable

Reffering to Python’s weak reference and weakref module.

Class instance methods are used exclusively with weak references so when an instance is no longer being used in the code his method(s) are automatically removed from any connection.

This allows the garbage collection to properly remove those objects, a whole reference can still be used when the no weak reference tag is active.

Emittion

Is the process of calling the connected callables and is made of these steps.

  1. Disconnect if the oneshot tag is enabled.

  2. Calls each connected callable passing the emittion argouments.

  3. Raise all connected exceptions from the callables.

Emittion exception

Always done with Python’s ExceptionGroup on sequences, otherwhise it may use the callable’s raised exception.

Flags

Options applied to a connection, here shortly described:

  • oneshot

    Disconnect the callable before being called, prevents any next emittion to call that connection again.

  • interrupt on exception

    Will interrupt a sequence of calls from an emittion if the callable raises any exception.

  • no weak

    Always uses a whole reference to a callable, related for weak methods on classes.

  • multi connect

    Allows connecting multiple times the same unique callable.