Data Attributes
The attribute operator (.) can be used to recursively resolve values from a compound native Python data type such as
an object or dictionary. This can be used when the thing which the rule is evaluating has members with their own
submembers. If the resolver function fails, the attribute will be checked to determine if it is a builtin attribute.
Builtin Attributes
The following attributes are builtin to the default Context object.
Attribute Name |
Attribute Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FLOAT Attributes 1
Due to the syntax of floating point literals, the attributes must be accessed using parenthesis. For example
3.14.to_str is invalid while (3.14).to_str is valid.
Encoding and Decoding
BYTES values can be converted to STRING values by calling their .decode
method. STRING values can be converted to BYTES values by calling their
.encode method. This resembles Python’s native functionality and the encoding argument to each is the same, i.e.
it can be any encoding name that Python can handle such as UTF-8. In addition to the encoding names that Python can
handle, the special names hex, base16 and base64 can be used for transcoding ascii-hex, and base-64
formatted data.
OBJECT Attribute Access
Added in version 5.0.0.
Attributes on OBJECT values are resolved differently from the builtin attributes listed above.
Instead of using the builtin attribute resolver, the engine checks the attribute name against the OBJECT’s declared
schema at parse time. If the attribute is not in the schema, an ObjectAttributeError is raised
immediately with a suggestion for the closest valid attribute name.
At evaluation time, the value is fetched using the OBJECT type’s accessor callable, which defaults to
getattr(). This means the builtin attribute resolvers (length, as_upper, etc.) do not apply to
OBJECT values - only the attributes declared in the schema are accessible. The symbol resolver fallback used by
MAPPING values is also bypassed entirely for OBJECT types.
Object Methods
Much like in Python, a method is a function that is associated with an object. They are defined as
FUNCTION values and are accessed as attributes.
BYTES decode(STRING encoding) -> STRING
Returns the decoded value.
Added in version 4.5.0.
STRING encode(STRING encoding) -> BYTES
Returns the encoded value.
Added in version 4.5.0.
ARRAY | BYTES | STRING ends_with(ARRAY | BYTES | STRING suffix) -> BOOLEAN
- returns:
- suffix:
The suffix to check for. The data type must match the object type.
Check whether the value ends with the specified value.
Added in version 4.5.0.
ARRAY | BYTES | STRING starts_with(ARRAY | BYTES | STRING prefix) -> BOOLEAN
- returns:
- prefix:
The prefix to check for. The data type must match the object type.
Check whether the value starts with the specified value.
Added in version 4.5.0.