yawning_titan.db.compatibility_query.HighValueNodeCompatibilityQuery#

class yawning_titan.db.compatibility_query.HighValueNodeCompatibilityQuery[source]#

Bases: Query

The YawningTitanQuery class extends tinydb.queries.Query.

Extended to provide common pre-defined test functions that call tinydb.queries.Query.test(), These functions are specific to the compatibility of :class: ~yawning_titan.game_modes.game_mode.GameMode and :class: ~yawning_titan.networks.network.Network objects.

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.

exists

Test for a dict where a provided key exists.

fragment

is_cacheable

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.

works_with

Tests the game mode can work with a network with the parameter with a value of n.

works_with(n, include_unbounded=False)[source]#

Tests the game mode can work with a network with the parameter with a value of n.

Fields whose value is either unrestricted or where n is in the specified range are returned in the search.

Example:

>>> from yawning_titan.game_modes.game_mode_db import GameModeDB
>>> from yawning_titan.db.query import YawningTitanQuery
>>> db = GameModeDB()
>>> db.search(HighValueNodeCompatibilityQuery.HIGH_VALUE_NODES.works_with(18)))
Parameters:
  • n – The target value of a field as an int or an instance of :class: ~yawning_titan.networks.network.Network.

  • include_unbounded – Whether to include fields where part of the range is unbounded.

Returns:

True if it does exist, otherwise False.

__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