Skip to main content

Copyright (c) 2016 David Betz

Installation

pip install middleware

Build Status PyPI version

Compatibility

Python 2 and 3

Purpose

Most everyone needs a concept of middleware.

Following are examples of using this, see test_middleware.py for full examples.

class AdditionMiddleware1(Middleware):
    def create(self):
        def func(mwa, context):
            try:
                counter = context['counter']
            except:
                counter = 0
            context['counter'] = counter + 1

            return next(mwa)

        return func

When using a class, add a create function which returns a function. This inner fuction accepts the middleware array and the data context and returns next(mwa) to create a middleware chain.

For this example, I’ll add two more:

class AdditionMiddleware2(AdditionMiddleware1):
    pass


class AdditionMiddleware3(AdditionMiddleware2):
    pass

Now to run it. Use set to set an array of middleware and add to add one to the array. set overwrites everything. That’s just what set means.

handler = Handler()
handler.set([AdditionMiddleware1, AdditionMiddleware2])
handler.add(AdditionMiddleware3)
handler.execute()

# handler['counter'] == 3

In this case, there is no initial context and each of the three middleware increment a counter ending with handler['counter'] == 3.

You can skip the entire class stuff too:

handler = Handler()
def inline(wma, context):
    context['myvalue'] = 12
handler.add(inline)
handler.execute()
# handler['myvalue'] == 12

Use the following to send initial context:

handler = Handler(counter=1)

It’s actually kwargs, so you can load it up:

handler = Handler(**{'a': 1, 'b': 2})
def inline(wma, context):
    context['a'] = context['a'] + context['b']
handler.add(inline)
handler.execute()

Release files for middleware 1.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for middleware 1.2.3
File Size Uploaded
middleware-1.2.3.tar.gz 4.2 kB Details

Release files / middleware-1.2.3.tar.gz

Download URL middleware-1.2.3.tar.gz
Size 4.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e5370d5781c440637cb87be4964fc5cb9cec7d4c9a5bb6a7bf0bbae326639c5c
BLAKE2b-256 checksum
How to use checksums
f7a43cdc5609be79de5a837873d4f8e5bcefd0ae17233f57aac70f10d885daef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.2.3 This release

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page