Skip to content

Commit 7e6e954

Browse files
committed
Stricter syntax_identifier
1 parent 3309def commit 7e6e954

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

pydifact/segmentcollection.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ def __init__(
364364
sender: Element,
365365
recipient: Element,
366366
control_reference: Element,
367-
syntax_identifier: Element,
367+
syntax_identifier: tuple[str, int],
368368
timestamp: Optional[datetime.datetime] = None,
369369
*args,
370370
**kwargs,
@@ -379,7 +379,7 @@ def __init__(
379379
def get_header_segment(self) -> Segment:
380380
return Segment(
381381
self.HEADER_TAG,
382-
[str(i) for i in self.syntax_identifier],
382+
[self.syntax_identifier[0], str(self.syntax_identifier[1])],
383383
self.sender,
384384
self.recipient,
385385
["{:%y%m%d}".format(self.timestamp), "{:%H%M}".format(self.timestamp)],
@@ -499,10 +499,19 @@ def from_segments(
499499
else:
500500
raise EDISyntaxError("Timestamp of file-creation malformed.")
501501

502+
if (
503+
isinstance(unb.elements[0], list)
504+
and len(unb.elements[0]) == 2
505+
and unb.elements[0][1].isdecimal()
506+
):
507+
syntax_identifier = (unb.elements[0][0], int(unb.elements[0][1]))
508+
else:
509+
raise EDISyntaxError("Syntax identifier malformed.")
510+
502511
datetime_str = "-".join(unb.elements[3])
503512
timestamp = datetime.datetime.strptime(datetime_str, datetime_fmt)
504513
interchange = Interchange(
505-
syntax_identifier=unb.elements[0],
514+
syntax_identifier=syntax_identifier,
506515
sender=unb.elements[1],
507516
recipient=unb.elements[2],
508517
timestamp=timestamp,

0 commit comments

Comments
 (0)