metawards.Wards

class metawards.Wards(wards: Optional[List[metawards._ward.Ward]] = None)[source]

This class holds an entire network of Ward objects

__init__(wards: Optional[List[metawards._ward.Ward]] = None)[source]

Construct, optionally from a list of Ward objects

Methods

__init__(wards) Construct, optionally from a list of Ward objects
add(ward) Synonym for insert
assert_sane() Make sure that we don’t refer to any non-existent wards
contains(id, str, metawards._wardinfo.WardInfo]) Return whether or not the passed id - which can be an integer ID or WardInfo - is in this Wards object
from_data(data, profiler) Return the Wards constructed from a data represnetation, which may have come from deserialised JSON
from_json(s) Return the Wards constructed from the passed json.
get(id, metawards._wardinfo.WardInfo], …) Return the ward with the specified id - this can eb the integer ID of the ward or the WardInfo of the ward.
getinfo(id, str, metawards._wardinfo.WardInfo]) Return the WardInfo matching the ward with the passed ID
harmonise(wardss) Harmonise the passed list of wards, returning a tuple that contains the overall sum of all of these wards, plus a new list where all Wards use IDs that are correct and valid across the entire group
index(id, str, metawards._wardinfo.WardInfo, …) Return the index of the ward that matches the passed id - which can be the integer ID or WardInfo - in this Wards object.
insert(wards, overwrite, _need_deep_copy) Insert the passed wards onto this list.
is_resolved() Return whether or not this is a fully resolved set of Wards (i.e.
num_play_links() Return the total number of play links
num_players() Return the total number of players in this network
num_work_links() Return the total number of work links
num_workers() Return the total number of workers in this network
population() Return the total population in this network
scale(work_ratio, play_ratio, _inplace) Return a copy of these wards where the number of workers and players have been scaled by ‘work_ratios’ and ‘play_ratios’ respectively.
to_data(profiler) Return a data representation of these wards that can be serialised to JSON
to_json(filename, indent, auto_bzip) Serialise the wards to JSON.
unresolved_wards() Return the list of IDs of unresolved wards
__contains__(id: Union[int, str, metawards._wardinfo.WardInfo, metawards._ward.Ward]) → bool[source]

Return whether or not the passed id - which can be an integer ID or WardInfo - is in this Wards object

__eq__(other)[source]

Return self==value.

__getitem__(id: Union[int, str, metawards._wardinfo.WardInfo]) → metawards._ward.Ward[source]

Return the ward with specified id - this can be the integer ID of the ward, or the WardInfo of the ward. Note that this returns a copy of the Ward

__imul__(scale: float) → metawards._wards.Wards[source]

In-place multiply the number of workers and players by ‘scale’

__init__(wards: Optional[List[metawards._ward.Ward]] = None)[source]

Construct, optionally from a list of Ward objects

__mul__(scale: float) → metawards._wards.Wards[source]

Scale the number of workers and players by ‘scale’

__repr__()[source]

Return repr(self).

__rmul__(scale: float) → metawards._wards.Wards[source]

Scale the number of workers and players by ‘scale’

__str__()[source]

Return str(self).

add(ward: metawards._ward.Ward) → None[source]

Synonym for insert

assert_sane()[source]

Make sure that we don’t refer to any non-existent wards

contains(id: Union[int, str, metawards._wardinfo.WardInfo]) → bool[source]

Return whether or not the passed id - which can be an integer ID or WardInfo - is in this Wards object

static from_data(data, profiler: Optional[metawards.utils._profiler.Profiler] = None)[source]

Return the Wards constructed from a data represnetation, which may have come from deserialised JSON

static from_json(s: str)[source]

Return the Wards constructed from the passed json. This will either load from a passed json string, or from json loaded from the passed file

get(id: Union[int, metawards._wardinfo.WardInfo], dereference: bool = True) → metawards._ward.Ward[source]

Return the ward with the specified id - this can eb the integer ID of the ward or the WardInfo of the ward. If ‘dereference’ is True then this will dereference all of the IDs into WardInfo objects. This is useful if you want to use the resulting Ward with other Wards collections

getinfo(id: Union[int, str, metawards._wardinfo.WardInfo]) → metawards._wardinfo.WardInfo[source]

Return the WardInfo matching the ward with the passed ID

static harmonise(wardss: List[Wards]) → Tuple[Wards, List[Wards]][source]

Harmonise the passed list of wards, returning a tuple that contains the overall sum of all of these wards, plus a new list where all Wards use IDs that are correct and valid across the entire group

index(id: Union[int, str, metawards._wardinfo.WardInfo, metawards._ward.Ward]) → int[source]

Return the index of the ward that matches the passed id - which can be the integer ID or WardInfo - in this Wards object. This raises a ValueError if the ward doens’t exist

insert(wards: List[metawards._ward.Ward], overwrite: bool = True, _need_deep_copy: bool = True) → None[source]

Insert the passed wards onto this list. This will overwrite the existing ward if ‘overwrite’ is true, otherwise it will add the ward’s data to the existing ward

is_resolved() → bool[source]

Return whether or not this is a fully resolved set of Wards (i.e. each ward only links to other wards in this set)

Return the total number of play links

num_players()[source]

Return the total number of players in this network

Return the total number of work links

num_workers()[source]

Return the total number of workers in this network

population()[source]

Return the total population in this network

scale(work_ratio: float = 1.0, play_ratio: float = 1.0, _inplace: bool = False) → metawards._wards.Wards[source]

Return a copy of these wards where the number of workers and players have been scaled by ‘work_ratios’ and ‘play_ratios’ respectively. These can be greater than 1.0, e.g. if you want to scale up the number of workers and players

Parameters:
  • work_ratio (float) – The scaling ratio for workers
  • play_ratio (float) – The scaling ratio for players
Returns:

Wards

Return type:

A copy of this Wards scaled by the requested amount

to_data(profiler: Optional[metawards.utils._profiler.Profiler] = None)[source]

Return a data representation of these wards that can be serialised to JSON

to_json(filename: Optional[str] = None, indent: Optional[int] = None, auto_bzip: bool = True) → str[source]

Serialise the wards to JSON. This will write to a file if filename is set, otherwise it will return a JSON string.

Parameters:
  • filename (str) – The name of the file to write the JSON to. The absolute path to the written file will be returned. If filename is None then this will serialise to a JSON string which will be returned.
  • indent (int) – The number of spaces of indent to use when writing the json
  • auto_bzip (bool) – Whether or not to automatically bzip2 the written json file
Returns:

Returns either the absolute path to the written file, or the json-serialised string

Return type:

str

unresolved_wards() → List[int][source]

Return the list of IDs of unresolved wards