Skip to main content

A very simple Python module to declare protocols for checking if objects provide the desired interface.

Project description

fast-protocol

A very simple Python module to declare protocols for checking if objects provide the desired interface.

Installation

pip install fast-protocol

Usage

To create a Fast Protocol just call the fast_protocol.protocol function passing it the names of the methods/attributes that the protocol should support.

from fast_protocol import protocol

def example():
    ...

Callable = protocol("__call__")  # Create a protocol that matches objects with a dunder call method
match example:
    case Callable():
        print("example is callable")

This can be used outside a match statement using isinstance.

if isinstance(example, Callable):
    print("example is callable")

Protocols are generated with the name "FastProtocol". This name can be changed by creating a new instance of FastProtocolBuilder. The name can be set traditionally by passing the name of the protocol to the FastProtocolBuilder class. Alternatively you can pass the protocol name as a subscript to an existing FastProtocolBuilder which will return a new instance that uses that name.

Traditional approach:

from fast_protocol import FastProtocolBuilder

Callable = FastProtocolBuilder("Callable")("__call__")

Alternative approach:

from fast_protocol import protocol

Callable = protocol["Callable"]("__call__")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fast-protocol-1.0.1.tar.gz (3.0 kB view hashes)

Uploaded Source

Built Distribution

fast_protocol-1.0.1-py3-none-any.whl (3.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page