Skip to main content

A simple, class based dispatcher

Project description

Callouts - a minimalist dispatch system

A python module implementing lose, class-based coupling.

Imagine we had an application that checks weather for one place, but using multiple service. The functionality to get weather for a specific service could be implemented in individual modules.

To implement this with callouts, we first need to implement the extensibility base by creating a class with the @callouts.base decorator.

@callouts.base
class Weather:
    def get_for(location: str) -> str: 
        pass 

Now, individual implementations can be added simply by extending the class and implementing the get_for method.

class FirstWeatherService(Weather):
    def get_for(location: str) -> str: 
        return 'sunny' 
class SecondWeatherService(Weather):
    def get_for(location: str) -> str: 
        return 'cloudy'

with those definition in place, as soon as the modes are loaded it is possible to get both weathers by calling the get_for method on the Weather class:

print(Weather.get_for('place'))

will print out

['sunny', 'cloudy']

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

callouts-0.2.2-py3.10.egg (4.5 kB view details)

Uploaded Source

File details

Details for the file callouts-0.2.2-py3.10.egg.

File metadata

  • Download URL: callouts-0.2.2-py3.10.egg
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for callouts-0.2.2-py3.10.egg
Algorithm Hash digest
SHA256 d85490e58586d3ce523361bdbd6d098c26b4608d7a17f7f6b0f97e2edd64320e
MD5 3a0531f3dbae301159bac1379c782492
BLAKE2b-256 592273e7a4baa263a912121e6fafa16b78c5f0e0a4f8c85675251bb7494ddef8

See more details on using hashes here.

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