fqr.objects.queries.obj module

Query module.

class AndQuery(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: Query

Filters on all conditions.

and_: Field[list[Query]]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('and_', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'and_')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class ContainsQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where field contains value.

contains: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('contains', 'field', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'contains')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class EqQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where == value.

eq: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('eq', 'field', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'eq')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class GeQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where >= value.

ge: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('field', 'ge', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'ge')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class GtQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where > value.

gt: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('field', 'gt', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'gt')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class InvertQuery(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: Query

Inverts the filter.

invert: Field[Query]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('invert', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'invert')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class LeQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where <= value.

le: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('field', 'le', 'limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'le')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class LtQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where < value.

lt: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('field', 'limit', 'lt', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'lt')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class NeQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where != value.

ne: Field[bool | float | int | None | str | Any]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('field', 'limit', 'ne', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'ne')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class OrQuery(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: Query

Filters on any condition.

or_: Field[list[Query]]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('limit', 'or_', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'or_')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class Query(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: Object

Database agnostic query object.

Usage

Queries for Objects can be generated from their fields using the following comparison operators:

  • field_1_eq_filter = Object.field_1 == 'test_value_123'

  • field_1_ne_filter = Object.field_1 != 'test_value_123'

  • field_1_ge_filter = Object.field_1 >= 'test_value_123'

  • field_1_gt_filter = Object.field_1 > 'test_value_123'

  • field_1_le_filter = Object.field_1 <= 'test_value_123'

  • field_1_lt_filter = Object.field_1 < 'test_value_123'

And the following special operators:

  • field_1_contains_filter = Object.field_1 << 'test_value_123'

  • field_1_similarity_filter = Object.field_1 % 'test_value_123'

  • field_1_similarity_filter_with_threshold = Object.field_1 % ('test_value_123', 0.8)

Queries may be chained together using the & and | bitwise operators, corresponding to and and or clauses respectively.

Additionally, the invert (~) operator may be prefixed to any Query to match the opposite of any conditions specified instead.

Queries also support optional result limiting and sorting:

  • Result limits can be specified by setting the limit field.

  • Results can be sorted any number of times using the += and -= operators.

Example

query: Query = (
    (
        (Object.integer_field >= 1)
        | (Object.string_field % ('test', 0.75))
        )
    & ~(Object.list_field << 'test')
    ) += 'string_field' -= 'integer_field'

In the example above, the query would match any Object for which the string 'test' is not a member of list_field and for which either the value for integer_field is greater than or equal to 1 or the value for string_field is at least 75% similar to 'test'. Results would then be sorted first in ascending order on string_field, then in descending order on integer_field.

sorting: Field[list[QuerySortBy]]
limit: Field[int | None]
_sort_by(field: str, direction: Literal['asc', 'desc'] = 'asc') None

Sort the selected Query by field and direction.

Direction may be either 'asc' or 'desc'.

The field should correspond to an existing field for the Object.

enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('limit', 'sorting')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class QuerySortBy(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: Object

Simple specification for sorting Query results by field.

field: Field[str]
direction: Field[str]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {'direction': ('asc', 'desc')}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('direction', 'field')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('direction', 'field')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).

class SimilarQueryCondition(class_as_dict: dict[string[snake_case], Any] | None = None, /, **kwargs: Any)

Bases: QueryCondition

Filters where field is similar to value.

like: Field[bool | float | int | None | str | Any]
threshold: Field[float | None]
enumerations: lib.t.ClassVar[dict[str, tuple[typ.Primitive, ...]]] = {}
fields: lib.t.ClassVar[typ.FieldsTuple] = ('field', 'like', 'limit', 'sorting', 'threshold')
hash_fields: lib.t.ClassVar[typ.FieldsTuple] = ('sorting', 'limit', 'field', 'like', 'threshold')
class_as_dict: lib.t.Final[lib.t.Optional[dict[typ.string[typ.snake_case], lib.t.Any]]] = {}

Instantiate class directly from passed dict (assumed to be version of class in dict form).