[Python-checkins] r59026 - in sandbox/trunk/pep362: pep362.py tests/test_pep362.py
brett.cannon
python-checkins at python.org
Sat Nov 17 04:26:42 CET 2007
Author: brett.cannon
Date: Sat Nov 17 04:26:42 2007
New Revision: 59026
Modified:
sandbox/trunk/pep362/pep362.py
sandbox/trunk/pep362/tests/test_pep362.py
Log:
Remove has_* methods. Also rename Signature.annotation to return_annotation.
Modified: sandbox/trunk/pep362/pep362.py
==============================================================================
--- sandbox/trunk/pep362/pep362.py (original)
+++ sandbox/trunk/pep362/pep362.py Sat Nov 17 04:26:42 2007
@@ -19,12 +19,12 @@
variable position argument.
* keyword_only
True if the parameter is keyword-only.
- * has_annotation
- True if the parameter has an annotation. If it does, the 'annotation'
- attribute will store the annotation.
- * has_default
- True if the parameter has a default value. If it does, the
- 'default_value' attribute will store the default value.
+
+ And the following optoinal attributes:
+ * default_value
+ The default value for the parameter, if one exists.
+ * annotation
+ The annoation for the parameter, if one exists.
"""
@@ -38,16 +38,10 @@
"""
self.name = name
self.position = position
- if not has_default:
- self.has_default = False
- else:
- self.has_default = True
+ if has_default:
self.default_value = default_value
self.keyword_only = keyword_only
- if not has_annotation:
- self.has_annotation = False
- else:
- self.has_annotation = True
+ if has_annotation:
self.annotation = annotation
@@ -69,6 +63,12 @@
annotation for the parameter. If an annotation does not exist for a
parameter, the key does not exist.
+ Optional attributes:
+ * return_annotation
+ The annotation for the return value.
+
+
+
"""
def __init__(self, func):
@@ -171,11 +171,9 @@
self.parameters = tuple(parameters)
# Return annotation.
- self.has_annotation = False
if hasattr(func, '__annotations__'):
if 'return' in func.__annotations__:
- self.has_annotation = True
- self.annotation = func.__annotations__['return']
+ self.return_annotation = func.__annotations__['return']
def _find_annotation(self, func, name):
"""Return True if an annotation exists for the named parameter along
@@ -242,7 +240,7 @@
except KeyError:
raise BindError("%r unbound" % param_name)
else:
- if positional_param.has_default:
+ if hasattr(positional_param, 'default_value'):
self._tuple_bind(bindings, param_name,
positional_param.default_value)
else:
@@ -271,7 +269,7 @@
# Keyword-only default values.
else:
for name, param in keyword_only.items():
- if param.has_default:
+ if hasattr(param, 'default_value'):
bindings[name] = param.default_value
else:
raise BindError("%s parameter lacking a default value" %
Modified: sandbox/trunk/pep362/tests/test_pep362.py
==============================================================================
--- sandbox/trunk/pep362/tests/test_pep362.py (original)
+++ sandbox/trunk/pep362/tests/test_pep362.py Sat Nov 17 04:26:42 2007
@@ -40,15 +40,12 @@
self.failUnlessEqual(param.position, pos)
def test_default_values(self):
- # Test the 'has_default' attribute.
# Testing that 'default_value' is not set is handled in the testing of
# that attribute.
default_value = 42
param = pep362.Parameter('_', 0, True, default_value)
- self.failUnlessEqual(param.has_default, True)
self.failUnlessEqual(param.default_value, default_value)
param = pep362.Parameter('_', 0, False)
- self.failUnlessEqual(param.has_default, False)
self.failUnless(not hasattr(param, 'default_value'))
def test_keyword_only(self):
@@ -60,12 +57,10 @@
def test_annotations(self):
# If has_annotation is False then 'annotation' should not exist.
param = pep362.Parameter('_', 0, has_annotation=False)
- self.failUnlessEqual(param.has_annotation, False)
self.failUnless(not hasattr(param, 'annotation'))
annotation = 42
param = pep362.Parameter('_', 0, has_annotation=True,
annotation=annotation)
- self.failUnlessEqual(param.has_annotation, True)
self.failUnlessEqual(param.annotation, annotation)
@@ -103,7 +98,6 @@
param = sig.parameters[0]
self.failUnlessEqual('a', param.name)
self.failUnlessEqual(0, param.position)
- self.failUnless(not param.has_default)
self.failUnless(not hasattr(param, 'default_value'))
def test_parameter_default(self):
@@ -113,7 +107,6 @@
param = sig.parameters[0]
self.failUnlessEqual('a', param.name)
self.failUnlessEqual(0, param.position)
- self.failUnless(param.has_default)
self.failUnlessEqual(42, param.default_value)
@version_specific(2)
@@ -125,7 +118,6 @@
self.failUnless(isinstance(param.name, tuple))
self.failUnlessEqual(('a', ('b',)), param.name)
self.failUnlessEqual(0, param.position)
- self.failUnless(not param.has_default)
self.failUnless(not hasattr(param, 'default_value'))
@version_specific(2)
@@ -136,7 +128,6 @@
param = sig.parameters[0]
self.failUnlessEqual(('a', ('b',)), param.name)
self.failUnlessEqual(0, param.position)
- self.failUnless(param.has_default)
self.failUnlessEqual((1, (2,)), param.default_value)
@version_specific(3)
@@ -156,7 +147,6 @@
self.failUnlessEqual(param.name, 'a')
self.failUnless(param.keyword_only)
self.failUnlessEqual(param.position, 0)
- self.failUnless(param.has_default)
self.failUnlessEqual(param.default_value, 42)
@version_specific(3)
@@ -165,7 +155,6 @@
sig = pep362.Signature(pep362_py3k_fodder.arg_annotation)
param = sig.parameters[0]
self.failUnlessEqual(param.name, 'a')
- self.failUnless(param.has_annotation)
self.failUnlessEqual(param.annotation, int)
@version_specific(3)
@@ -174,9 +163,7 @@
sig = pep362.Signature(pep362_py3k_fodder.arg_annotation_default)
param = sig.parameters[0]
self.failUnlessEqual(param.name, 'a')
- self.failUnless(param.has_annotation)
self.failUnlessEqual(param.annotation, int)
- self.failUnless(param.has_default)
self.failUnlessEqual(param.default_value, 42)
@version_specific(3)
@@ -185,7 +172,6 @@
sig = pep362.Signature(pep362_py3k_fodder.arg_annotation_keyword_only)
param = sig.parameters[0]
self.failUnlessEqual(param.name, 'a')
- self.failUnless(param.has_annotation)
self.failUnlessEqual(param.annotation, int)
self.failUnless(param.keyword_only)
@@ -193,8 +179,7 @@
def test_return_annotation(self):
# The return value annotation.
sig = pep362.Signature(pep362_py3k_fodder.return_annotation)
- self.failUnless(sig.has_annotation)
- self.failUnlessEqual(sig.annotation, int)
+ self.failUnlessEqual(sig.return_annotation, int)
@version_specific(3)
def test_var_annotations(self):
@@ -300,13 +285,10 @@
self.failUnlessEqual(param.name, name)
self.failUnlessEqual(param.position, pos)
if has_default:
- self.failUnless(param.has_default)
self.failUnlessEqual(param.default_value, default_value)
else:
- self.failUnless(not param.has_default)
self.failUnless(not hasattr(param, 'default_value'))
self.failUnless(not param.keyword_only)
- self.failUnless(not param.has_annotation)
self.failUnless(not hasattr(param, 'annotation'))
self.failUnlessEqual(sig.var_args, 'g')
self.failUnlessEqual(sig.var_kw_args, 'h')
@@ -335,7 +317,7 @@
@version_specific(3)
def test_all_py3k_args(self):
- # a, (b, (c,)), d=0, (e, (f,))=(0, (0,)), *args, g, h=8, **kwargs
+ # a:int, d=0, *args:int, g:int, h:int=8, **kwargs:int) -> int
sig = pep362.Signature(pep362_py3k_fodder.all_args)
# name, position, kw only, has_default, default, has anno, anno
expected = (('a', 0, False, False, None, True, int),
@@ -355,16 +337,12 @@
else:
self.failUnless(not param.keyword_only)
if has_default:
- self.failUnless(param.has_default)
self.failUnlessEqual(param.default_value, default)
else:
- self.failUnless(not param.has_default)
self.failUnless(not hasattr(param, 'default_value'))
if has_anno:
- self.failUnless(param.has_annotation)
self.failUnlessEqual(param.annotation, anno)
else:
- self.failUnless(not param.has_annotation)
self.failUnless(not hasattr(param, 'annotation'))
self.failUnlessEqual(sig.var_args, 'args')
self.failUnless(sig.var_args in sig.var_annotations)
@@ -372,6 +350,7 @@
self.failUnlessEqual(sig.var_kw_args, 'kwargs')
self.failUnless(sig.var_kw_args in sig.var_annotations)
self.failUnlessEqual(sig.var_annotations[sig.var_kw_args], int)
+ self.failUnlessEqual(sig.return_annotation, int)
binding = sig.bind(0, 3, 6, g=7, i=9)
expected = {'a':0, 'd':3, 'g':7, 'h':8, 'args':(6,), 'kwargs':{'i':9}}
self.failUnlessEqual(binding, expected)
More information about the Python-checkins
mailing list