Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Utility framework for easier & more robust duck typing in Python
Python Shell
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
pyduck
tests
.gitignore
MANIFEST.in
README.markdown
convert_github_md.py
pypi_upload
run_tests
setup.py
test_coverage

README.markdown

Easier & more robust duck typing

pyduck is a Python utility framework for more effective usage of language's defining traits: duck typing. It enhances the language with several useful features that increase the readability and reliability of Python code.

from pyduck import Interface, expects, Any, overload

class Iterable(Interface):
    def __iter__(self): pass

@expects(Iterable)
def __iterable_as_json(value):
    json_list = map(as_json, value)
    return "[%s]" % str.join(",", json_list)

@expects(basestring)
def __string_as_json(value):
    return '"%s"' % str(value)

@expects(Any)
def __other_as_json(value):
    return str(value)

as_json = overload(__iterable_as_json, __string_as_json, __other_as_json)

Features

  • interfaces which do not need to be explicitly declared (similar to Go language)
  • automatic interface/type checking for function arguments
  • function overloading based on interfaces/types of arguments
  • automatic interface/type checking for function return values

For more info & the docs, see the project's webpage.

Something went wrong with that request. Please try again.