1
1
import functools
2
2
import itertools
3
3
import math
4
- from typing import Callable , Optional , Union
4
+ from collections . abc import Callable
5
5
6
6
import numpy as np
7
7
import pyparsing as pp
@@ -62,10 +62,10 @@ def __call__(self, *args, **kwargs):
62
62
class QueryFormatGenerator :
63
63
def __init__ (
64
64
self ,
65
- query_format : Union [ str , pp .ParseResults ] ,
65
+ query_format : str | pp .ParseResults ,
66
66
* ,
67
- include : Optional [ str ] = None ,
68
- exclude : Optional [ str ] = None ,
67
+ include : str | None = None ,
68
+ exclude : str | None = None ,
69
69
):
70
70
if isinstance (query_format , str ):
71
71
parser = QueryFormatParser ()
@@ -99,7 +99,7 @@ def generate(root):
99
99
end = start + v_chunk_size
100
100
101
101
for gt_row , phase in zip (
102
- gt_zarray [start :end ], phase_zarray [start :end ]
102
+ gt_zarray [start :end ], phase_zarray [start :end ], strict = False
103
103
):
104
104
105
105
def stringify (gt_and_phase : tuple ):
@@ -113,7 +113,7 @@ def stringify(gt_and_phase: tuple):
113
113
return separator .join (gt )
114
114
115
115
gt_row = gt_row .tolist ()
116
- yield map (stringify , zip (gt_row , phase ))
116
+ yield map (stringify , zip (gt_row , phase , strict = False ))
117
117
else :
118
118
# TODO: Support datasets without the phasing data
119
119
raise NotImplementedError
@@ -219,8 +219,8 @@ def _compose_sample_loop_generator(
219
219
220
220
def generate (root ):
221
221
iterables = (generator (root ) for generator in generators )
222
- zipped = zip (* iterables )
223
- zipped_zipped = (zip (* element ) for element in zipped )
222
+ zipped = zip (* iterables , strict = False )
223
+ zipped_zipped = (zip (* element , strict = False ) for element in zipped )
224
224
flattened_zipped_zipped = (
225
225
(
226
226
subsubelement
@@ -234,7 +234,7 @@ def generate(root):
234
234
return generate
235
235
236
236
def _compose_element_generator (
237
- self , element : Union [ str , pp .ParseResults ] , * , sample_loop = False
237
+ self , element : str | pp .ParseResults , * , sample_loop = False
238
238
) -> Callable :
239
239
if isinstance (element , pp .ParseResults ):
240
240
if element .get_name () == "subfield" :
@@ -261,7 +261,7 @@ def generate(root):
261
261
return generate
262
262
263
263
def _compose_filter_generator (
264
- self , * , include : Optional [ str ] = None , exclude : Optional [ str ] = None
264
+ self , * , include : str | None = None , exclude : str | None = None
265
265
) -> Callable :
266
266
assert not (include and exclude )
267
267
@@ -294,8 +294,8 @@ def _compose_generator(
294
294
self ,
295
295
parse_results : pp .ParseResults ,
296
296
* ,
297
- include : Optional [ str ] = None ,
298
- exclude : Optional [ str ] = None ,
297
+ include : str | None = None ,
298
+ exclude : str | None = None ,
299
299
) -> Callable :
300
300
generators = (
301
301
self ._compose_element_generator (element ) for element in parse_results
@@ -308,7 +308,9 @@ def generate(root) -> str:
308
308
iterables = (generator (root ) for generator in generators )
309
309
filter_iterable = filter_generator (root )
310
310
311
- for results , filter_indicator in zip (zip (* iterables ), filter_iterable ):
311
+ for results , filter_indicator in zip (
312
+ zip (* iterables , strict = False ), filter_iterable , strict = False
313
+ ):
312
314
if filter_indicator :
313
315
results = map (str , results )
314
316
yield "" .join (results )
@@ -321,8 +323,8 @@ def write_query(
321
323
output = None ,
322
324
* ,
323
325
query_format : str ,
324
- include : Optional [ str ] = None ,
325
- exclude : Optional [ str ] = None ,
326
+ include : str | None = None ,
327
+ exclude : str | None = None ,
326
328
):
327
329
if include and exclude :
328
330
raise ValueError (
0 commit comments