yawning_titan.db.query.YawningTitanQuery#

class yawning_titan.db.query.YawningTitanQuery[source]#

Bases: Query

The YawningTitanQuery class extends tinydb.queries.Query.

Extended to provide common pre-defined test functions that call tinydb.queries.Query.test(), rather than forcing the user to build a function/lambda function each time and pass it to test.

Methods

all

Check if a condition is met by all documents in a list, where a condition can also be a sequence (e.g.

any

Check if a condition is met by any document in a list, where a condition can also be a sequence (e.g.

bt

Tests the value of a field.

exists

Test for a dict where a provided key exists.

fragment

is_cacheable

len_bt

Tests the length of a field.

len_eq

Tests the length of a field.

len_ge

Tests the length of a field.

len_gt

Tests the length of a field.

len_le

Tests the length of a field.

len_lt

Tests the length of a field.

map

Add a function to the query path.

matches

Run a regex test against a dict value (whole string has to match).

noop

Always evaluate to True.

one_of

Check if the value is contained in a list or generator.

search

Run a regex test against a dict value (only substring string has to match).

test

Run a user-defined test function against a dict value.

len_eq(i)[source]#

Tests the length of a field. This could be the length of a string or an array field.

Fields whose length matches i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_eq(18)))
Parameters:

i – The target length of a field as an int.

Returns:

True if the field length matches i, otherwise False.

Raises:

TypeError – When the field len_eq() is called on does not have a len() function.

len_lt(i)[source]#

Tests the length of a field. This could be the length of a string or an array field.

Fields whose length is less than i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_lt(18)))
Parameters:

i – The target length of a field as an int.

Returns:

True if the field length is less than i, otherwise False.

Raises:

TypeError – When the field len_lt() is called on does not have a len() function.

len_le(i)[source]#

Tests the length of a field. This could be the length of a string or an array field.

Fields whose length is less than or equal to i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_le(18)))
Parameters:

i – The target length of a field as an int.

Returns:

True if the field length is less than or equal to i, otherwise False.

Raises:

TypeError – When the field len_lt() is called on does not have a len() function.

len_gt(i)[source]#

Tests the length of a field. This could be the length of a string or an array field.

Fields whose length is greater than i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_gt(18)))
Parameters:

i – The target length of a field as an int.

Returns:

True if the field length is greater than i, otherwise False.

Raises:

TypeError – When the field len_lt() is called on does not have a len() function.

len_ge(i)[source]#

Tests the length of a field. This could be the length of a string or an array field.

Fields whose length is greater than or equal to i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_ge(18)))
Parameters:

i – The target length of a field as an int.

Returns:

True if it does exist, otherwise False. if the field length is greater than or equal to i, otherwise False.

Raises:

TypeError – When the field len_lt() is called on does not have a len() function.

len_bt(i, j)[source]#

Tests the length of a field. This could be the length of a string or an array field.

Fields whose length is greater than or equal to i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_bt(1,18)))
Parameters:
  • i – The minimum length of a field as an int.

  • j – The maximum length of a field as an int.

Returns:

True if it does exist, otherwise False. if the field length is greater than or equal to i and less than or equal to j, otherwise False.

Raises:

TypeError – When the field len_bt() is called on does not have a len() function.

bt(i, j)[source]#

Tests the value of a field. This could be the value of a string or an array field.

Fields whose value is greater than or equal to i are returned in the search.

Example:

>>> from yawning_titan.networks.network_db import NetworkDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = NetworkDB()
>>> db.search(YawningTitanQuery.matrix.len_bt(1,18)))
Parameters:
  • i – The minimum value of a field as an int.

  • j – The maximum value of a field as an int.

Returns:

True if it does exist, otherwise False. if the field value is greater than or equal to i and less than or equal to j, otherwise False.

Raises:

TypeError – When the field len_bt() is called on does not have a len() function.

__call__(value)#

Evaluate the query to check if it matches a specified value.

Parameters:

value – The value to check.

Returns:

Whether the value matches this query.

all(cond)#

Check if a condition is met by all documents in a list, where a condition can also be a sequence (e.g. list).

>>> Query().f1.all(Query().f2 == 1)

Matches:

{'f1': [{'f2': 1}, {'f2': 1}]}
>>> Query().f1.all([1, 2, 3])

Matches:

{'f1': [1, 2, 3, 4, 5]}
Parameters:

cond – Either a query that all documents have to match or a list which has to be contained in the tested document.

any(cond)#

Check if a condition is met by any document in a list, where a condition can also be a sequence (e.g. list).

>>> Query().f1.any(Query().f2 == 1)

Matches:

{'f1': [{'f2': 1}, {'f2': 0}]}
>>> Query().f1.any([1, 2, 3])

Matches:

{'f1': [1, 2]}
{'f1': [3, 4, 5]}
Parameters:

cond – Either a query that at least one document has to match or a list of which at least one document has to be contained in the tested document.

exists()#

Test for a dict where a provided key exists.

>>> Query().f1.exists()
fragment(document)#
is_cacheable()#
map(fn)#

Add a function to the query path. Similar to __getattr__ but for arbitrary functions.

matches(regex, flags=0)#

Run a regex test against a dict value (whole string has to match).

>>> Query().f1.matches(r'^\w+$')
Parameters:
  • regex – The regular expression to use for matching

  • flags – regex flags to pass to re.match

noop()#

Always evaluate to True.

Useful for having a base value when composing queries dynamically.

one_of(items)#

Check if the value is contained in a list or generator.

>>> Query().f1.one_of(['value 1', 'value 2'])
Parameters:

items – The list of items to check with

search(regex, flags=0)#

Run a regex test against a dict value (only substring string has to match).

>>> Query().f1.search(r'^\w+$')
Parameters:
  • regex – The regular expression to use for matching

  • flags – regex flags to pass to re.match

test(func, *args)#

Run a user-defined test function against a dict value.

>>> def test_func(val):
...     return val == 42
...
>>> Query().f1.test(test_func)

Warning

The test fuction provided needs to be deterministic (returning the same value when provided with the same arguments), otherwise this may mess up the query cache that Table implements.

Parameters:
  • func – The function to call, passing the dict as the first argument

  • args – Additional arguments to pass to the test function