@@ -34,10 +34,14 @@ class Counter(object):
3434 counter += 2
3535 counter -= 1
3636 counter.value == 1
37+ counter.pre_value == 2
38+ counter.post_value == 1
3739
3840 counter = zk.Counter("/float", default=1.0)
3941 counter += 2.0
4042 counter.value == 3.0
43+ counter.pre_value == 1.0
44+ counter.post_value == 3.0
4145
4246 """
4347 def __init__ (self , client , path , default = 0 ):
@@ -53,6 +57,8 @@ def __init__(self, client, path, default=0):
5357 self .default = default
5458 self .default_type = type (default )
5559 self ._ensured_path = False
60+ self .pre_value = None
61+ self .post_value = None
5662
5763 def _ensure_node (self ):
5864 if not self ._ensured_path :
@@ -79,12 +85,15 @@ def _change(self, value):
7985 return self
8086
8187 def _inner_change (self , value ):
82- data , version = self ._value ()
83- data = repr (data + value ).encode ('ascii' )
88+ self .pre_value , version = self ._value ()
89+ post_value = self .pre_value + value
90+ data = repr (post_value ).encode ('ascii' )
8491 try :
8592 self .client .set (self .path , data , version = version )
8693 except BadVersionError : # pragma: nocover
94+ self .post_value = None
8795 raise ForceRetryError ()
96+ self .post_value = post_value
8897
8998 def __add__ (self , value ):
9099 """Add value to counter."""
0 commit comments