MiscUtils.NamedValueAccess
index
/var/www/docs/Webware-1.1.1/MiscUtils/NamedValueAccess.py

NamedValueAccess.py
 
NamedValueAccess provides functions for accessing Python objects by keys and
named attributes. A 'key' is a single identifier such as 'foo'. A 'name' could
be a key, or a qualified key, such as 'foo.bar.boo'. Names are generally more
convenient and powerful, while the key-oriented function is more efficient and
provide the atomic functionality that the name-oriented function is built upon.
 
 
CREDIT
 
Chuck Esterbrook <echuck@mindspring.com>
Tavis Rudd <tavis@calrudd.com>

 
Classes
       
exceptions.LookupError(exceptions.StandardError)
NamedValueAccessError
ValueForKeyError

 
class NamedValueAccessError(exceptions.LookupError)
    General named value access error.
 
 
Method resolution order:
NamedValueAccessError
exceptions.LookupError
exceptions.StandardError
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.LookupError:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.LookupError:
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)
__unicode__(...)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message

 
class ValueForKeyError(NamedValueAccessError)
    No value for key found error.
 
 
Method resolution order:
ValueForKeyError
NamedValueAccessError
exceptions.LookupError
exceptions.StandardError
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors inherited from NamedValueAccessError:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.LookupError:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.LookupError:
__new__ = <built-in method __new__ of type object>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)
__unicode__(...)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message

 
Functions
       
valueForKey(obj, key, default=<class 'MiscUtils.NoDefault'>)
Get the value of the object named by the given key.
 
This method returns the value with the following precedence:
  1. Methods before non-methods
  2. Attributes before keys (__getitem__)
  3. Public things before private things
     (private being denoted by a preceding underscore)
 
Suppose key is 'foo', then this method returns one of these:
  * obj.foo()
  * obj._foo()
  * obj.foo
  * obj._foo
  * obj['foo']
  * default # only if specified
 
If all of these fail, a ValueForKeyError is raised.
 
NOTES
 
  * valueForKey() works on dictionaries and dictionary-like objects.
  * See valueForName() which is a more advanced version of this
    function that allows multiple, qualified keys.
valueForName(obj, name, default=<class 'MiscUtils.NoDefault'>)
Get the value of the object that is named.
 
The name can use dotted notation to traverse through a network/graph
of objects. Since this function relies on valueForKey() for each
individual component of the name, you should be familiar with the
semantics of that notation.
 
Example: valueForName(obj, 'department.manager.salary')