Skip to content

Commit

Permalink
fix(enums): fix __repr__ (#1267)
Browse files Browse the repository at this point in the history
  • Loading branch information
bonjourmauko committed Oct 9, 2024
1 parent 380e3af commit cfd1749
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 14 deletions.
2 changes: 1 addition & 1 deletion openfisca_core/data_storage/on_disk_storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def _decode_file(self, file: str) -> t.Array[t.DTypeGeneric]:
... storage = data_storage.OnDiskStorage(directory)
... storage.put(value, period)
... storage._decode_file(storage._files[period])
EnumArray([<Housing.TENANT: 'Tenant'>])
EnumArray(Housing.TENANT)
"""
enum = self._enums.get(file)
Expand Down
4 changes: 2 additions & 2 deletions openfisca_core/indexed_enums/_enum_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class EnumType(t.EnumType):
... TENANT = "Tenant"
>>> Housing.items
rec.array([(0, 'OWNER', <Housing.OWNER: 'Owner'>), ...])
rec.array([(0, 'OWNER', Housing.OWNER), (1, 'TENANT', Housing.TENAN...)
>>> Housing.indices
array([0, 1], dtype=int16)
Expand All @@ -66,7 +66,7 @@ class EnumType(t.EnumType):
array(['OWNER', 'TENANT'], dtype='<U6')
>>> Housing.enums
array([<Housing.OWNER: 'Owner'>, <Housing.TENANT: 'Tenant'>], dtype...)
array([Housing.OWNER, Housing.TENANT], dtype=object)
"""

Expand Down
15 changes: 9 additions & 6 deletions openfisca_core/indexed_enums/enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,22 @@ class Enum(t.Enum, metaclass=EnumType):
"<enum 'Housing'>"
>>> repr(Housing.TENANT)
"<Housing.TENANT: 'Tenant'>"
'Housing.TENANT'
>>> str(Housing.TENANT)
'Housing.TENANT'
>>> dict([(Housing.TENANT, Housing.TENANT.value)])
{<Housing.TENANT: 'Tenant'>: 'Tenant'}
{Housing.TENANT: 'Tenant'}
>>> list(Housing)
[<Housing.OWNER: 'Owner'>, <Housing.TENANT: 'Tenant'>, ...]
[Housing.OWNER, Housing.TENANT, Housing.FREE_LODGER, Housing.HOMELESS]
>>> Housing["TENANT"]
<Housing.TENANT: 'Tenant'>
Housing.TENANT
>>> Housing("Tenant")
<Housing.TENANT: 'Tenant'>
Housing.TENANT
>>> Housing.TENANT in Housing
True
Expand Down Expand Up @@ -106,6 +106,9 @@ def __init__(self, *__args: object, **__kwargs: object) -> None:
"""
self.index = len(self._member_names_)

def __repr__(self) -> str:
return f"{self.__class__.__name__}.{self.name}"

def __eq__(self, other: object) -> bool:
if not isinstance(other, Enum):
return NotImplemented
Expand Down Expand Up @@ -158,7 +161,7 @@ def encode(
>>> array = numpy.array([1])
>>> enum_array = enum.EnumArray(array, Housing)
>>> Housing.encode(enum_array)
EnumArray([<Housing.TENANT: 'Tenant'>])
EnumArray(Housing.TENANT)
# Array of Enum
Expand Down
11 changes: 6 additions & 5 deletions openfisca_core/indexed_enums/enum_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class EnumArray(t.EnumArray):
"<class 'openfisca_core.indexed_enums.enum_array.EnumArray'>"
>>> repr(enum_array)
"EnumArray([<Housing.TENANT: 'Tenant'>])"
'EnumArray(Housing.TENANT)'
>>> str(enum_array)
"['TENANT']"
Expand All @@ -55,14 +55,14 @@ class EnumArray(t.EnumArray):
>>> enum_array = enum.EnumArray(list(Housing), Housing)
>>> enum_array[Housing.TENANT.index]
<Housing.TENANT: 'Tenant'>
Housing.TENANT
>>> class OccupancyStatus(variables.Variable):
... value_type = enum.Enum
... possible_values = Housing
>>> enum.EnumArray(array, OccupancyStatus.possible_values)
EnumArray([<Housing.TENANT: 'Tenant'>])
EnumArray(Housing.TENANT)
.. _Subclassing ndarray:
https://numpy.org/doc/stable/user/basics.subclassing.html
Expand Down Expand Up @@ -229,7 +229,7 @@ def decode(self) -> numpy.object_:
>>> array = numpy.array([1])
>>> enum_array = enum.EnumArray(array, Housing)
>>> enum_array.decode()
array([<Housing.TENANT: 'Tenant'>], dtype=object)
array([Housing.TENANT], dtype=object)
"""
return numpy.select(
Expand Down Expand Up @@ -264,7 +264,8 @@ def decode_to_str(self) -> numpy.str_:
)

def __repr__(self) -> str:
return f"{self.__class__.__name__}({self.decode()!s})"
items = ", ".join(str(item) for item in self.decode())
return f"{self.__class__.__name__}({items})"

def __str__(self) -> str:
return str(self.decode_to_str())
Expand Down

0 comments on commit cfd1749

Please sign in to comment.