Skip to main content

The Python Telepact library

Project description

Telepact

Installation

pip install telepact

Usage

API:

[
    {
        "fn.greet": {
            "subject": "string"
        },
        "->": {
            "Ok_": {
                "message": "string"
            }
        }
    }
]

Server:

files = TelepactSchemaFiles('/directory/containing/api/files')
schema = TelepactSchema.from_file_json_map(files.filenames_to_json)

async def handler(request_message: 'Message') -> 'Message':
    function_name = request_message.body.keys[0]
    arguments = request_message.body[function_name]

    try:
        # Early in the handler, perform any pre-flight "middleware" operations, such as
        # authentication, tracing, or logging.
        log.info("Function started", {'function': function_name})

        # Dispatch request to appropriate function handling code.
        # (This example uses manual dispatching, but you can also use a more advanced pattern.)
        if function_name == 'fn.greet':
            subject = arguments['subject']
            return Message({}, {'Ok_': {'message': f'Hello {subject}!'}})

        raise Exception('Function not found')
    finally:
        # At the end the handler, perform any post-flight "middleware" operations
        log.info("Function finished", {'function': function_name})


options = Server.Options()
server = Server(schema, handler, options)


# Wire up request/response bytes from your transport of choice
async def transport_handler(request_bytes: bytes) -> bytes:
    response_bytes = await server.process(request_bytes)
    return response_bytes

transport.receive(transport_handler)

Client:

async def adapter(m: Message, s: Serializer) -> Message:
    request_bytes = s.serialize(m)

    # Wire up request/response bytes to your transport of choice
    response_bytes = await transport.send(request_bytes)

    return s.deserialize(response_bytes)

options = Client.Options()
client = Client(adapter, options)

For more concrete usage examples, see the tests.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

telepact-1.0.0a136.tar.gz (45.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

telepact-1.0.0a136-py3-none-any.whl (151.9 kB view details)

Uploaded Python 3

File details

Details for the file telepact-1.0.0a136.tar.gz.

File metadata

  • Download URL: telepact-1.0.0a136.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure

File hashes

Hashes for telepact-1.0.0a136.tar.gz
Algorithm Hash digest
SHA256 3f12b918e4391049b641c762fb29f0725aa22931563938789fd3d33ab0fcda9f
MD5 5f4411b8da5d80e8c8bc7c8f81acf5e7
BLAKE2b-256 14158554df321239e1c25ae152df51cd179471934ee933b915469038e1a6c1ff

See more details on using hashes here.

File details

Details for the file telepact-1.0.0a136-py3-none-any.whl.

File metadata

  • Download URL: telepact-1.0.0a136-py3-none-any.whl
  • Upload date:
  • Size: 151.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure

File hashes

Hashes for telepact-1.0.0a136-py3-none-any.whl
Algorithm Hash digest
SHA256 718c6c5607f4278a00a1624ffe2f0a03aa512a3fd1399d38a589a1f2f9b51075
MD5 d7d1ad393cb662c95dc237967113dec2
BLAKE2b-256 c18e93e2c5a5bc2f14b5d82457d308a348119f9cea893a5f348fd25d2583ba9d

See more details on using hashes here.

Supported by

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