yawning_titan.db.compatibility_query.NetworkCompatibilityQuery#
- class yawning_titan.db.compatibility_query.NetworkCompatibilityQuery[source]#
Bases:
Query
The
YawningTitanQuery
class extendstinydb.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
Check if a condition is met by all documents in a list, where a condition can also be a sequence (e.g.
Check if a condition is met by any document in a list, where a condition can also be a sequence (e.g.
Tests the game mode can work with a specified network
n
.Test for a dict where a provided key exists.
Add a function to the query path.
Run a regex test against a dict value (whole string has to match).
Always evaluate to
True
.Check if the value is contained in a list or generator.
Run a regex test against a dict value (only substring string has to match).
Run a user-defined test function against a dict value.
- compatible_with(n, include_unbounded=True)[source]#
Tests the game mode can work with a specified network
n
.Fields where all network parameter restrictions are satisfied or unrestricted 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(NetworkCompatibilityQuery.compatible_with(network)))
- Parameters:
n – The target value of a field as 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, otherwiseFalse
.
- __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