Enums#

policyengine_core.enums (renamed from .indexed_enums) contains definitions for enumerable types, which can be used to specify categorical data types.

Enum#

class policyengine_core.enums.enum.Enum(value)[source]#

Bases: enum.Enum

Enum based on enum34, whose items have an index.

classmethod encode(array: Union[policyengine_core.enums.enum_array.EnumArray, numpy.int64, numpy.float64, numpy.object_]) policyengine_core.enums.enum_array.EnumArray[source]#

Encode a string numpy array, an enum item numpy array, or an int numpy array into an EnumArray. See EnumArray.decode for decoding.

Parameters

array (numpy.ndarray) – Array of string identifiers, or of enum items, to encode.

Returns

An EnumArray encoding the input array values.

Return type

EnumArray

For instance:

>>> string_identifier_array = asarray(['free_lodger', 'owner'])
>>> encoded_array = HousingOccupancyStatus.encode(string_identifier_array)
>>> encoded_array[0]
2  # Encoded value
>>> free_lodger = HousingOccupancyStatus.free_lodger
>>> owner = HousingOccupancyStatus.owner
>>> enum_item_array = asarray([free_lodger, owner])
>>> encoded_array = HousingOccupancyStatus.encode(enum_item_array)
>>> encoded_array[0]
2  # Encoded value

EnumArray#

class policyengine_core.enums.enum_array.EnumArray(input_array: numpy.int_, possible_values: Optional[Type[Enum]] = None)[source]#

Bases: numpy.ndarray

Numpy array subclass representing an array of enum items.

EnumArrays are encoded as int arrays to improve performance

decode() numpy.object_[source]#

Return the array of enum items corresponding to self.

For instance:

>>> enum_array = household('housing_occupancy_status', period)
>>> enum_array[0]
>>> 2  # Encoded value
>>> enum_array.decode()[0]
<HousingOccupancyStatus.free_lodger: 'Free lodger'>

Decoded value: enum item

decode_to_str() numpy.str_[source]#

Return the array of string identifiers corresponding to self.

For instance:

>>> enum_array = household('housing_occupancy_status', period)
>>> enum_array[0]
>>> 2  # Encoded value
>>> enum_array.decode_to_str()[0]
'free_lodger'  # String identifier