Skip to content

AnyNumber

relationalai.semantics.frontend.core
AnyNumber(super_type: Concept)

Represent the family of decimal Number(precision, scale) types.

This class is used to create and reuse concrete number concepts via AnyNumber.size. Most users interact with the module-level instance semantics.frontend.core.Number (and aliases like semantics.frontend.core.Integer) rather than instantiating AnyNumber directly.

  • super_type

    (Concept) - The numeric super type this number family extends.
AnyNumber.size(precision: int, scale: int) -> NumberConcept

Return the concrete Number(precision, scale) concept.

This method caches number concepts, so repeated calls with the same precision and scale return the same object.

Parameters:

  • precision

    (int) - Total number of digits.
  • scale

    (int) - Number of digits after the decimal point.

Returns:

  • NumberConcept - The corresponding number concept (for example Number.size(38, 0)).

Examples:

Get a concrete numeric type using semantics.frontend.core.Number:

>>> from relationalai.semantics.frontend.core import Number
>>> Number.size(38, 14)
Number(38,14)

Calls are cached and common aliases refer to the same concept:

>>> from relationalai.semantics.frontend.core import Integer
>>> Number.size(38, 0) is Integer
True
>>> Number.size(12, 2) is Number.size(12, 2)
True
AnyNumber.parse(type_str: str) -> NumberConcept

Parse numeric type strings into a NumberConcept.

This accepts type strings of the form "Number(precision, scale)" (or "Decimal(precision, scale)") and returns the cached concept created by AnyNumber.size.

Parameters:

  • type_str

    (str) - A type name like Number(38, 14).

Returns:

Raises:

  • ValueError - If type_str is not a valid Number(precision, scale) or Decimal(precision, scale).

Examples:

Parse a concrete numeric type name using semantics.frontend.core.Number:

>>> from relationalai.semantics.frontend.core import Number
>>> Number.parse("Number(38, 14)")
Number(38,14)

Decimal is accepted as an alias for Number:

>>> from relationalai.semantics.frontend.core import Integer
>>> Number.parse("Decimal(38, 0)") is Integer
True
AnyNumberConceptVariableDSLBase