23
23
import codecs
24
24
import datetime
25
25
from collections .abc import Callable , Iterable , Iterator , Sequence
26
- from typing import Optional , Type , TypeVar
26
+ from typing import Type , TypeVar
27
27
28
28
from pydifact .api import EDISyntaxError
29
29
from pydifact .control import Characters
@@ -61,13 +61,13 @@ class AbstractSegmentsContainer:
61
61
The control characters (a :class:`~pydifact.control.Characters` object).
62
62
"""
63
63
64
- HEADER_TAG : Optional [ str ] = None
65
- FOOTER_TAG : Optional [ str ] = None
64
+ HEADER_TAG : str | None = None
65
+ FOOTER_TAG : str | None = None
66
66
67
67
def __init__ (
68
68
self ,
69
- extra_header_elements : Optional [ Elements ] = None ,
70
- characters : Optional [ Characters ] = None ,
69
+ extra_header_elements : Elements | None = None ,
70
+ characters : Characters | None = None ,
71
71
) -> None :
72
72
self .segments : list [Segment ] = []
73
73
@@ -85,8 +85,8 @@ def __init__(
85
85
def from_str (
86
86
cls : Type [T ],
87
87
string : str ,
88
- parser : Optional [ Parser ] = None ,
89
- characters : Optional [ Characters ] = None ,
88
+ parser : Parser | None = None ,
89
+ characters : Characters | None = None ,
90
90
) -> T :
91
91
"""Create an instance from a string.
92
92
@@ -105,7 +105,7 @@ def from_str(
105
105
def from_segments (
106
106
cls : Type [T ],
107
107
segments : Iterable [Segment ],
108
- characters : Optional [ Characters ] = None ,
108
+ characters : Characters | None = None ,
109
109
) -> T :
110
110
"""Create an instance from a list of segments.
111
111
@@ -124,7 +124,7 @@ def from_segments(
124
124
def get_segments (
125
125
self ,
126
126
name : str ,
127
- predicate : Optional [ Callable [[Segment ], bool ]] = None ,
127
+ predicate : Callable [[Segment ], bool ] | None = None ,
128
128
) -> Iterator [Segment ]:
129
129
"""Get all segments that match the requested name.
130
130
@@ -141,8 +141,8 @@ def get_segments(
141
141
def get_segment (
142
142
self ,
143
143
name : str ,
144
- predicate : Optional [ Callable [[Segment ], bool ]] = None ,
145
- ) -> Optional [ Segment ] :
144
+ predicate : Callable [[Segment ], bool ] | None = None ,
145
+ ) -> Segment | None :
146
146
"""Get the first segment that matches the requested name.
147
147
148
148
:param name: The name of the segment to return.
@@ -214,7 +214,7 @@ def add_segment(self, segment: Segment) -> None:
214
214
if segment .tag not in (self .HEADER_TAG , self .FOOTER_TAG ):
215
215
self .segments .append (segment )
216
216
217
- def get_header_segment (self ) -> Optional [ Segment ] :
217
+ def get_header_segment (self ) -> Segment | None :
218
218
"""Craft and return a header segment.
219
219
220
220
:meth:`get_header_segment` creates and returns an appropriate
@@ -228,7 +228,7 @@ def get_header_segment(self) -> Optional[Segment]:
228
228
"""
229
229
return None
230
230
231
- def get_footer_segment (self ) -> Optional [ Segment ] :
231
+ def get_footer_segment (self ) -> Segment | None :
232
232
"""Craft and return a footer segment.
233
233
234
234
This is similar to :meth:`get_header_segment`, but for the footer segment.
@@ -365,7 +365,7 @@ def __init__(
365
365
recipient : Element ,
366
366
control_reference : Element ,
367
367
syntax_identifier : tuple [str , int ],
368
- timestamp : Optional [ datetime .datetime ] = None ,
368
+ timestamp : datetime .datetime | None = None ,
369
369
* args ,
370
370
** kwargs ,
371
371
):
@@ -453,7 +453,7 @@ def add_message(self, message: Message) -> "Interchange":
453
453
454
454
@classmethod
455
455
def from_file (
456
- cls , file : str , encoding : str = "iso8859-1" , parser : Optional [ Parser ] = None
456
+ cls , file : str , encoding : str = "iso8859-1" , parser : Parser | None = None
457
457
) -> "Interchange" :
458
458
"""Create a Interchange instance from a file.
459
459
@@ -471,7 +471,7 @@ def from_file(
471
471
472
472
@classmethod
473
473
def from_segments (
474
- cls , segments : Iterable [Segment ], characters : Optional [ Characters ] = None
474
+ cls , segments : Iterable [Segment ], characters : Characters | None = None
475
475
) -> "Interchange" :
476
476
segments = iter (segments )
477
477
0 commit comments