Skip to main content

A framework for module definitions

Project description

require is a framework for module definitions.


== Overview ==
It allows to publish dependencies. A function can be decorated to require
dependencies by its name.


== Usage ==
A requirement must be exported using the @export(...) decorator. The decorated
function will be called on the first time it is required and the result is
cached for later use. It's also possible to decorated a class or anything else
which is callable.

To require a dependency the @require(...) decorator can be used. This decorator
expects a mapping between parameter names and dependencies. If the decorated
function is called, the requirements are resolved and the returned values are
passed to the decorated function. The parameter name used to pass the resolved
requirements are the same names as used to specify the requirements.

It is possible to extend and manipulate an export using the @extend(...)
decorator. After calling the exported function, the return value is passed to
all defined extends for this dependency. The extend function can manipulate the
object or replace it with another one.


== Example ==
file: example/foo.py

from require import export

@export()
def my_export():
# This function will be called on first requirement
return 'exported object'


file: example/bar.py

from require import extend

@extend('example.foo:my_export')
def extend_my_export(my_export):
# The passed parameter is the result of the required function
# If the extend function returns a new value, the export is replaced by it
return 'extended and ' + my_export


file: example/baz.py

from require import require

@require(my_fancy_export = 'example.foo:my_export')
def my_user(my_fancy_export):
# Parameter 'my_fancy_export' must match the name in the decorator
# This will print 'extended and exported object'
print(my_fancy_export)

Project details


Download files

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

Source Distribution

require-0.1.1.tar.gz (4.3 kB view details)

Uploaded Source

File details

Details for the file require-0.1.1.tar.gz.

File metadata

  • Download URL: require-0.1.1.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for require-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a6ad4d5b20d7978e17d98580be546d13fc55c6e79972405d05915cc7edc68d40
MD5 32a0a940f472550c2477f18bd8819e14
BLAKE2b-256 ef77292381a3dd42abffee3e8270531578d7ab862ee1191787f7528cea272ca0

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