mirror of https://github.com/mahmoud/boltons.git
42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
![]() |
# -*- coding: utf-8 -*-
|
||
|
|
||
|
from boltons.funcutils import (copy_function,
|
||
|
InstancePartial,
|
||
|
CachedInstancePartial)
|
||
|
|
||
|
|
||
|
class Greeter(object):
|
||
|
def __init__(self, greeting):
|
||
|
self.greeting = greeting
|
||
|
|
||
|
def greet(self, excitement='.'):
|
||
|
return self.greeting.capitalize() + excitement
|
||
|
|
||
|
partial_greet = InstancePartial(greet, excitement='!')
|
||
|
cached_partial_greet = CachedInstancePartial(greet, excitement='...')
|
||
|
|
||
|
def native_greet(self):
|
||
|
return self.greet(';')
|
||
|
|
||
|
|
||
|
class SubGreeter(Greeter):
|
||
|
pass
|
||
|
|
||
|
|
||
|
def test_partials():
|
||
|
g = SubGreeter('hello')
|
||
|
|
||
|
assert g.greet() == 'Hello.'
|
||
|
assert g.native_greet() == 'Hello;'
|
||
|
assert g.partial_greet() == 'Hello!'
|
||
|
assert g.cached_partial_greet() == 'Hello...'
|
||
|
assert CachedInstancePartial(g.greet, excitement='s')() == 'Hellos'
|
||
|
|
||
|
|
||
|
def test_copy_function():
|
||
|
def callee():
|
||
|
return 1
|
||
|
callee_copy = copy_function(callee)
|
||
|
assert callee is not callee_copy
|
||
|
assert callee() == callee_copy()
|