Skip to content

Commit 1966e4c

Browse files
committed
fix: Fixed list index out of range error in lookup_area function.
1 parent 7c745d9 commit 1966e4c

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

entsoe/mappings.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@
55
def lookup_area(s: Union['Area', str]) -> 'Area':
66
if isinstance(s, Area):
77
# If it already is an Area object, we're happy
8-
area = s
9-
else: # It is a string
10-
try:
11-
# If it is a "country code" string, we do a lookup
12-
area = Area[s]
13-
except KeyError:
14-
# It is not, it may be a direct code
15-
area = [area for area in Area if area.value == s][0]
16-
return area
8+
return s
9+
if isinstance(s, str):
10+
# If it is a "country code" string, we do a lookup
11+
if Area.has_code(s.upper()):
12+
return Area[s.upper()]
1713

14+
# If it is a "direct code", we do a lookup
15+
for area in Area:
16+
if area.value == s:
17+
return area
18+
19+
raise ValueError('Invalid country code.')
1820

1921
class Area(enum.Enum):
2022
"""
@@ -45,6 +47,10 @@ def tz(self):
4547
def code(self):
4648
return self.value
4749

50+
@classmethod
51+
def has_code(cls, code:str)->bool:
52+
return code in cls.__members__
53+
4854
# List taken directly from the API Docs
4955
DE_50HZ = '10YDE-VE-------2', '50Hertz CA, DE(50HzT) BZA', 'Europe/Berlin',
5056
AL = '10YAL-KESH-----5', 'Albania, OST BZ / CA / MBA', 'Europe/Tirane',

test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@
4141
lst.append(s)
4242

4343
result = pd.concat(lst)
44-
result.to_csv('result.csv')
44+
result.to_csv('result.csv')

0 commit comments

Comments
 (0)