PYSON

PYSON is the PYthon Statement and Object Notation.

There is also a more practical introduction into PYSON statements.

class trytond.pyson.PYSON

Base class of any PYSON statement. It is never used directly.

Instance methods:

PYSON.pyson()

Method that returns the internal dictionary representation of the statement.

PYSON.types()

Method that returns a set of all possible types which the statement can become when evaluated.

classmethod PYSON.eval(dct, context)

Method which returns the evaluation of the statement given in dct within the context. dct contains a dictionary which is the internal representation of a PYSON statement. context contains a dictionary with contextual values.

Encoder and Decoder

class trytond.pyson.PYSONEncoder

Encoder for PYSON statements into string representations.

Instance method:

PYSONEncoder.encode(object)

Returns a string representation of a given PYSON statement. object contains a PYSON statement.

class trytond.pyson.PYSONDecoder([context[, noeval]])

Decoder for string into the evaluated or not PYSON statement.

Instance method:

PYSONDecoder.decode(object)

Returns a PYSON statement evaluated or not of a given string. object contains a string.

Statements

The following statements can be used in PYSON.

class trytond.pyson.Eval(value[, default])

An Eval() object represents the PYSON Eval() statement for evaluations. When evaluated, it returns the value of the statement named by value, if defined in the evaluation context, otherwise the default value (empty string by default).

Note

The default value determines the type of the statement.

Note

If the value includes dots the value will be dereferenced. For example:

Eval('_parent_sale.number')

The number value of the _parent_sale key of the evaluation context will be returned.

class trytond.pyson.Not(value)

A Not object represents the PYSON Not() statement for logical negations. When evaluated, returns the boolean negation of the value of the statement named by value, if defined in the evaluation context. Returns an instance of itself.

class trytond.pyson.Bool(value)

A Bool object represents the PYSON Bool() statement for boolean evaluations. Returns the boolean representation of the value of the statement named by value.

class trytond.pyson.And(\*statements)

An And object represents the PYSON And() statement for logical and operations. Returns the result of the logical conjunction of two or more values named by the statements in the statements tuple.

class trytond.pyson.Or(\*statements)

An Or object represents the PYSON Or() statement for logical or operations. Returns the result of the logical disjunction of two or more values named by the statements in the statements tuple.

class trytond.pyson.Equal(statement1, statement2)

An Equal object represents the PYSON Equal() statement for equation comparisons. Returns true when a value of a statement named by statement1 and the value of a statement named by statement2 are equal, otherwise returns false.

class trytond.pyson.Greater(statement1, statement2[, equal])

A Greater object represents the PYSON Greater() statement for greater-than comparisons. Returns true when the value of the statement named by statement1 is strictly greater than the value of the statement named by statement2, otherwise returns false. Is the value of the variable named by equal is true, then returns also true when both values of statements named by statement1 and statement2 are equal. In this case Greater works as a greater-than or equal operator.

Note

None value is replaced by 0 for the comparison.

class trytond.pyson.Less(statement1, statement2[, equal])

A Less object represents the PYSON Less() statement for less-than comparisons. Returns true when the value of the statement named by statement1 is strictly less than the value of the statement named by statement2, otherwise returns false. Is the value of the variable named equal is true, then returns also true when both values of the statements named by statement1 and statement2 are equal. In this case Less works as a less-than or equal operator.

Note

None value is replaced by 0 for the comparison.

class trytond.pyson.If(condition, then_statement, else_statement)

An If object represents the PYSON If() statement for conditional flow control operations. Returns the value of the statement named by then_statement when the value of the statement named by condition evaluates true. Otherwise returns the value of the statement named by else_statement.

class trytond.pyson.Get(obj, key[, default])

A Get object represents the PYSON Get() statement for dictionary look-up operations and evaluation. Look up and returns the value of a key named by key in an object named by obj if defined. Otherwise returns the value of the variable named by default.

class trytond.pyson.In(key, obj)

An In object represents the PYSON In() statement for look-up dictionary or integer objects. Returns true when a list (or dictionary) object named by obj contains the value of the variable (or key) named by key. Otherwise returns false.

class trytond.pyson.Date([year[, month[, day[, delta_years[, delta_month[, delta_days[, start]]]]]]])

A Date object represents the PYSON Date() statement for date related conversions and basic calculations. Returns a date object which represents the values of arguments named by the variables explained below. Missing values of arguments named by year or month or day take their defaults from start or the actual date. When values of arguments named by delta_* are given, they are added to the values of the appropriate arguments in a date and time preserving manner.

Arguments:

year

Contains a PYSON statement of type int or long.

month

Contains a PYSON statement of type int or long.

day

Contains a PYSON statement of type int or long.

delta_years

Contains a PYSON statement of type int or long.

delta_month

Contains a PYSON statement of type int or long.

delta_days

Contains a PYSON statement of type int or long.

start

Contains a PYSON statement of type date.

class trytond.pyson.DateTime([year[, month[, day[, hour[, minute[, second[, microsecond[, delta_years[, delta_months[, delta_days[, delta_hours[, delta_minutes[, delta_seconds[, delta_microseconds[, start]]]]]]]]]]]]]]])

A DateTime object represents the PYSON Date() statement for date and time related conversions and calculations. Returns a date time object which represents the values of variables named by the arguments explained below. Missing values of arguments named by year, month, day, hour, minute, second, microseconds take their defaults from start or the actual date and time in UTC. When values of arguments named by delta_* are given, these are added to the appropriate attributes in a date and time preserving manner.

Arguments:

year

Contains a PYSON statement of type int or long.

month

Contains a PYSON statement of type int or long.

day

Contains a PYSON statement of type int or long.

hour

Contains a PYSON statement of type int or long.

minute

Contains a PYSON statement of type int or long.

second

Contains a PYSON statement of type int or long.

microsecond

Contains a PYSON statement of type int or long.

delta_years

Contains a PYSON statement of type int or long.

delta_month

Contains a PYSON statement of type int or long.

delta_days

Contains a PYSON statement of type int or long.

delta_hours

Contains a PYSON statement of type int or long.

delta_minutes

Contains a PYSON statement of type int or long.

delta_seconds

Contains a PYSON statement of type int or long.

delta_microseconds

Contains a PYSON statement of type int or long.

start

Contains a PYSON statement of type datetime.

class trytond.pyson.Len(value)

A Len object represents the PYSON Len() statement for length of a dictionary, list or string. Returns the number of items in value.

class trytond.pyson.Id(module, fs_id)

An Id object represents the PYSON Id() statement for filesystem id evaluations. When converted into the internal dictionary, it returns the database id stored in ir.model.data.