Skip to content

Commit ee0d603

Browse files
committed
Resolve circular import error
1 parent b41c116 commit ee0d603

1 file changed

Lines changed: 38 additions & 18 deletions

File tree

openleadr/objects.py

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,10 @@ class Target:
8585
party_id: str = None
8686

8787
def __repr__(self):
88-
targets = {key: value for key, value in asdict(self).items() if value is not None}
89-
targets_str = ", ".join(f"{key}={value}" for key, value in targets.items())
88+
targets = {key: value for key, value in asdict(
89+
self).items() if value is not None}
90+
targets_str = ", ".join(
91+
f"{key}={value}" for key, value in targets.items())
9092
return f"Target('{targets_str}')"
9193

9294

@@ -182,15 +184,18 @@ def __post_init__(self):
182184
if self.targets is None and self.targets_by_type is None:
183185
return
184186
elif self.targets_by_type is None:
185-
list_of_targets = [asdict(target) if is_dataclass(target) else target for target in self.targets]
187+
list_of_targets = [asdict(target) if is_dataclass(
188+
target) else target for target in self.targets]
186189
targets_by_type = utils.group_targets_by_type(list_of_targets)
187190
if len(targets_by_type) > 1:
188191
raise ValueError("In OpenADR, the EventSignal target may only be of type endDeviceAsset. "
189192
f"You provided types: '{', '.join(targets_by_type)}'")
190193
elif self.targets is None:
191-
self.targets = [Target(**target) for target in utils.ungroup_targets_by_type(self.targets_by_type)]
194+
self.targets = [Target(
195+
**target) for target in utils.ungroup_targets_by_type(self.targets_by_type)]
192196
elif self.targets is not None and self.targets_by_type is not None:
193-
list_of_targets = [asdict(target) if is_dataclass(target) else target for target in self.targets]
197+
list_of_targets = [asdict(target) if is_dataclass(
198+
target) else target for target in self.targets]
194199
if utils.group_targets_by_type(list_of_targets) != self.targets_by_type:
195200
raise ValueError("You assigned both 'targets' and 'targets_by_type' in your event, "
196201
"but the two were not consistent with each other. "
@@ -218,21 +223,26 @@ def __post_init__(self):
218223
self.active_period = ActivePeriod(dtstart=dtstart,
219224
duration=duration)
220225
if self.targets is None and self.targets_by_type is None:
221-
raise ValueError("You must supply either 'targets' or 'targets_by_type'.")
226+
raise ValueError(
227+
"You must supply either 'targets' or 'targets_by_type'.")
222228
elif self.targets_by_type is None:
223-
list_of_targets = [asdict(target) if is_dataclass(target) else target for target in self.targets]
229+
list_of_targets = [asdict(target) if is_dataclass(
230+
target) else target for target in self.targets]
224231
self.targets_by_type = utils.group_targets_by_type(list_of_targets)
225232
elif self.targets is None:
226-
self.targets = [Target(**target) for target in utils.ungroup_targets_by_type(self.targets_by_type)]
233+
self.targets = [Target(
234+
**target) for target in utils.ungroup_targets_by_type(self.targets_by_type)]
227235
elif self.targets is not None and self.targets_by_type is not None:
228-
list_of_targets = [asdict(target) if is_dataclass(target) else target for target in self.targets]
236+
list_of_targets = [asdict(target) if is_dataclass(
237+
target) else target for target in self.targets]
229238
if utils.group_targets_by_type(list_of_targets) != self.targets_by_type:
230239
raise ValueError("You assigned both 'targets' and 'targets_by_type' in your event, "
231240
"but the two were not consistent with each other. "
232241
f"You supplied 'targets' = {self.targets} and "
233242
f"'targets_by_type' = {self.targets_by_type}")
234243
# Set the event status
235-
self.event_descriptor.event_status = utils.determine_event_status(self.active_period)
244+
self.event_descriptor.event_status = utils.determine_event_status(
245+
self.active_period)
236246

237247

238248
@dataclass
@@ -272,7 +282,8 @@ class ReportInterval:
272282
@dataclass
273283
class Report:
274284
report_specifier_id: str # This is what the VEN calls this report
275-
report_name: str # Usually one of the default ones (enums.REPORT_NAME)
285+
# Usually one of the default ones (enums.REPORT_NAME)
286+
report_name: str
276287
report_request_id: str = None # Usually empty
277288
report_descriptions: List[ReportDescription] = None
278289
created_date_time: datetime = None
@@ -324,9 +335,9 @@ class Vavailability:
324335

325336
@dataclass
326337
class Opt:
327-
opt_id: str = None,
328-
opt_type: enums.OPT
329-
opt_reason: enums.OPT_REASON
338+
opt_type: str
339+
opt_reason: str
340+
opt_id: str = None
330341
created_date_time: datetime = None
331342

332343
event_id: str = None
@@ -336,10 +347,16 @@ class Opt:
336347
targets_by_type: Dict = None
337348

338349
def __post_init__(self):
350+
if self.opt_type not in enums.OPT.values:
351+
raise ValueError(f"""The opt_type must be one of '{"', '".join(enums.OPT.values)}', """
352+
f"""you specified: '{self.opt_type}'.""")
353+
if self.opt_reason not in enums.OPT_REASON.values:
354+
raise ValueError(f"""The opt_reason must be one of '{"', '".join(enums.OPT_REASON.values)}', """
355+
f"""you specified: '{self.opt_type}'.""")
339356
if self.event_id is None and self.vavailability is None:
340357
raise ValueError(
341358
"You must supply either 'event_id' or 'vavailability'.")
342-
elif self.event_id is not None and self.vavailability is not None:
359+
if self.event_id is not None and self.vavailability is not None:
343360
raise ValueError(
344361
"You supplied both 'event_id' and 'vavailability."
345362
"Please supply either, but not both.")
@@ -351,12 +368,15 @@ def __post_init__(self):
351368
raise ValueError(
352369
"You must supply either 'targets' or 'targets_by_type'.")
353370
elif self.targets_by_type is None:
354-
list_of_targets = [asdict(target) if is_dataclass(target) else target for target in self.targets]
371+
list_of_targets = [asdict(target) if is_dataclass(
372+
target) else target for target in self.targets]
355373
self.targets_by_type = utils.group_targets_by_type(list_of_targets)
356374
elif self.targets is None:
357-
self.targets = [Target(**target) for target in utils.ungroup_targets_by_type(self.targets_by_type)]
375+
self.targets = [Target(
376+
**target) for target in utils.ungroup_targets_by_type(self.targets_by_type)]
358377
elif self.targets is not None and self.targets_by_type is not None:
359-
list_of_targets = [asdict(target) if is_dataclass(target) else target for target in self.targets]
378+
list_of_targets = [asdict(target) if is_dataclass(
379+
target) else target for target in self.targets]
360380
if utils.group_targets_by_type(list_of_targets) != self.targets_by_type:
361381
raise ValueError("You assigned both 'targets' and 'targets_by_type' in your event, "
362382
"but the two were not consistent with each other. "

0 commit comments

Comments
 (0)