11import random
2- from typing import Callable , Iterable , List , Optional , Tuple
2+ from typing import Any , Callable , Generator , Iterable , List , Never , Optional , Tuple
33
44from warg import Number
55
6- __all__ = ["n_uint_mix" , "n_uint_mix_generator_builder" , "n_uint_mix_generator" ]
6+ __all__ = ["n_uint_mix" , "n_uint_mix_generator_builder" , "n_uint_mix_generator" , "frange" ]
77
88
99import logging
@@ -25,7 +25,9 @@ def n_uint_mix(mix_max: Iterable[Number], mix_min: Optional[Iterable[Number]] =
2525 return [random .randrange (min_ , max_ ) for min_ , max_ in zip (mix_min , mix_max )]
2626
2727
28- def n_uint_mix_generator (* mix , mix_min : Optional [Iterable [Number ]] = None ) -> Tuple [Number , ...]:
28+ def n_uint_mix_generator (
29+ * mix , mix_min : Optional [Iterable [Number ]] = None
30+ ) -> Generator [list [int | float ], Any , Never ]:
2931 if len (mix ) == 1 :
3032 if isinstance (mix , Iterable ):
3133 mix = mix [0 ]
@@ -41,13 +43,29 @@ def n_uint_mix_generator_builder(*mix: Number, mix_min: Optional[Iterable[Number
4143 if isinstance (mix , Iterable ):
4244 mix = mix [0 ]
4345
44- def no_arg_generator () -> Tuple [ Number , ... ]:
46+ def no_arg_generator () -> Generator [ list [ int | float ], Any , Never ]:
4547 while 1 :
4648 yield n_uint_mix (mix , mix_min = mix_min )
4749
4850 return no_arg_generator
4951
5052
53+ def frange (start : Number , stop : Number , step : Number ) -> Generator [Number , None , None ]:
54+ """
55+
56+ :param start:
57+ :type start:
58+ :param stop:
59+ :type stop:
60+ :param step:
61+ :type step:
62+ """
63+ while start < stop :
64+ yield start
65+ start += step
66+ yield stop
67+
68+
5169if __name__ == "__main__" :
5270 _logger .info ([v for _ , v in zip (range (9 ), iter (n_uint_mix_generator (255 , 255 )))])
5371 print ([v for _ , v in zip (range (9 ), iter (n_uint_mix_generator (255 , 255 , mix_min = (200 , 200 ))))])
0 commit comments