[docs] Docstrings for yaqlized YAQL functions

Change-Id: I40857f5f4548866eb4c94cf056f7605e6f508e67
This commit is contained in:
Omar Shykhkerimov 2016-06-02 17:53:48 +03:00
parent f71a030508
commit 9a344902df
1 changed files with 65 additions and 0 deletions

View File

@ -11,6 +11,35 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""
Any Python class or object can be yaqlized. It is possible to call methods,
access attributes/properties and index of yaqlized objects.
The first way to yaqlize object is using function call:
class A(object):
foo = 256
def bar(self):
print('yaqlization works with methods too')
sample_object = A()
yaqlization.yaqlize(sample_object)
The second way is using decorator:
@yaqlization.yaqlize
class A(object):
foo = 256
def bar(self):
print('yaqlization works with methods too')
Any mentioned operation on yaqlized objects can be disabled with additional
parameters for yaqlization. Also it is possible to specify whitelist/blacklist
of methods/attributes/keys that are exposed to the yaql.
This module provides implemented operators on Yaqlized objects.
"""
import re
@ -94,6 +123,18 @@ def _auto_yaqlize(value, settings):
@specs.parameter('expr', yaqltypes.YaqlExpression(expressions.Function))
@specs.name('#operator_.')
def op_dot(receiver, expr, context, engine):
""":yaql:operator .
Evaluates expression on receiver and returns its result.
:signature: receiver.expr
:arg receiver: yaqlized receiver
:argType receiver: yaqlized object, initialized with
yaqlize_methods equal to True
:arg expr: expression to be evaluated
:argType expr: expression
:returnType: any (expression return type)
"""
settings = yaqlization.get_yaqlization_settings(receiver)
mappings = _remap_name(expr.name, settings)
@ -123,6 +164,18 @@ def op_dot(receiver, expr, context, engine):
@specs.parameter('attr', yaqltypes.Keyword())
@specs.name('#operator_.')
def attribution(obj, attr):
""":yaql:operator .
Returns attribute of the object.
:signature: obj.attr
:arg obj: yaqlized object
:argType obj: yaqlized object, initialized with
yaqlize_attributes equal to True
:arg attr: attribute name
:argType attr: keyword
:returnType: any
"""
settings = yaqlization.get_yaqlization_settings(obj)
_validate_name(attr, settings)
attr = _remap_name(attr, settings)
@ -134,6 +187,18 @@ def attribution(obj, attr):
@specs.parameter('obj', Yaqlized(can_index=True))
@specs.name('#indexer')
def indexation(obj, key):
""":yaql:operator indexer
Returns value of attribute/property key of the object.
:signature: obj[key]
:arg obj: yaqlized object
:argType obj: yaqlized object, initialized with
yaqlize_indexer equal to True
:arg key: index name
:argType key: keyword
:returnType: any
"""
settings = yaqlization.get_yaqlization_settings(obj)
_validate_name(key, settings, KeyError)
res = obj[key]