Skip to main content

This package provides an helper to write cofunction with the help of Python generators. It provides a decorator that let you write the following paradigm:

from infrae.comethod import cofunction

@cofunction
def processor(**options):
    # Init code
    content = yield
    while content is not None:
         # Work on content, set result in result.
         content = yield result
    # Cleanup code

If you create more of those comethods you can nest them:

import logging

@cofunction
def logger(parent **options):
    logger = logging.getLogger(options.get('name', 'default'))
    logger.info('Start')
    content = yield
    while content is not None:
         result = parent(content)
         logger.info('Processed {0}, got {1}'.format(content, result))
         content = yield result
    # Cleanup code
    logger.info('Done')

And you can use it like this:

with processor() as process:
   with logger(process) as log:
      for item in generator():
          log(item)

Or alternatively:

with processor() as process:
   with logger(process) as log:
      log.map(generator)

Where generator is a generator that yield values to work on. Of course, you can do more interesting things after.

You can find the Mercurial code repository at: https://hg.infrae.com/infrae.comethods/

Changes

1.0 (2011/11/07)

  • Initial version.

Download files

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

Source Distribution

infrae.comethods-1.0.tar.gz (2.7 kB view details)

Uploaded Source

File details

Details for the file infrae.comethods-1.0.tar.gz.

File metadata

File hashes

Hashes for infrae.comethods-1.0.tar.gz
Algorithm Hash digest
SHA256 5af45fb239f9944357e302485f20045d06f0ace194587e57d2e06e68f1076f56
MD5 1ce202c65398f075bf34af7f0dc49c52
BLAKE2b-256 d1eafdbcb466d95264c507c13258c992e7850fd4b7ea8473b877cdd5b3b5dcce

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0

Supported by

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