Sugar around Python generators and context managers
Project description
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.
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
infrae.comethods-1.0.tar.gz
(2.7 kB
view details)
File details
Details for the file infrae.comethods-1.0.tar.gz
.
File metadata
- Download URL: infrae.comethods-1.0.tar.gz
- Upload date:
- Size: 2.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5af45fb239f9944357e302485f20045d06f0ace194587e57d2e06e68f1076f56 |
|
MD5 | 1ce202c65398f075bf34af7f0dc49c52 |
|
BLAKE2b-256 | d1eafdbcb466d95264c507c13258c992e7850fd4b7ea8473b877cdd5b3b5dcce |