Factories for plain old Python objects.
Usage:
from calve_machine import inseminate, pregnant
@inseminate
def programmer(p):
p.name = 'Sheldon Cooper, Ph.D.'
p.age = 29
p.languages = ['eiffel', 'io', 'erlang']
prog = pregnant.calve('programmer')
prog.name |should| equal_to('Sheldon Cooper, Ph.D.')
prog.age |should| be(29)
prog.languages |should| equal_to(['eiffel', 'io', 'erlang'])
Factories can inherit from other(s):
@inseminate
def programmer(p):
p.name = 'Sheldon Cooper, Ph.D.'
p.age = 29
p.languages = ['eiffel', 'io', 'erlang']
@inseminate(sperm_from='programmer')
def python_programmer(p):
p.languages = ['python']
p.foo = 'spam'
prog = pregnant.calve('python_programmer')
prog.name |should| equal_to('Sheldon Cooper, Ph.D.')
prog.age |should| be(29)
prog.languages |should| equal_to(['python'])
prog.foo |should| equal_to('spam')
@inseminate(sperm_from='python_programmer')
def zope_programmer(p):
p.languages = ['zcml']
p.age = 30
prog = pregnant.calve('zope_programmer')
prog.name |should| equal_to('Sheldon Cooper, Ph.D.')
prog.age |should| be(30)
prog.languages |should| equal_to(['zcml'])
prog.foo |should| equal_to('spam')
The project is at a very early stage, there's no PyPi release.
Just run:
make test
for install all test dependencies (Should-DSL and Specloud, at the moment) and run the tests. calve_machine itself has no dependencies.