2022.12 #133
@ -1,7 +1,4 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from itertools import islice
|
|
||||||
|
|
||||||
from cpl_query.base.sequence_values import SequenceValues
|
|
||||||
|
|
||||||
|
|
||||||
class Sequence(list):
|
class Sequence(list):
|
||||||
|
@ -1,47 +0,0 @@
|
|||||||
import io
|
|
||||||
import itertools
|
|
||||||
|
|
||||||
from cpl_query.exceptions import IndexOutOfRangeException
|
|
||||||
|
|
||||||
|
|
||||||
class SequenceValues:
|
|
||||||
def __init__(self, data: list, _t: type):
|
|
||||||
if len(data) > 0:
|
|
||||||
def type_check(_t: type, _l: list):
|
|
||||||
return all([_t == any or isinstance(x, _t) for x in _l])
|
|
||||||
|
|
||||||
if not type_check(_t, data):
|
|
||||||
print([type(x) for x in data])
|
|
||||||
raise Exception(f'Unexpected type\nExpected type: {_t}')
|
|
||||||
|
|
||||||
if not hasattr(data, '__iter__'):
|
|
||||||
raise TypeError(f'{type(self).__name__} must be instantiated with an iterable object')
|
|
||||||
|
|
||||||
self._new_cycle = lambda: itertools.cycle(data)
|
|
||||||
self._len = lambda: len(data)
|
|
||||||
|
|
||||||
self._index = 0
|
|
||||||
self._cycle = self._new_cycle()
|
|
||||||
|
|
||||||
def __len__(self):
|
|
||||||
return self._len()
|
|
||||||
|
|
||||||
def __iter__(self):
|
|
||||||
i = 0
|
|
||||||
while i < self._len():
|
|
||||||
yield next(self._cycle)
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
def __next__(self):
|
|
||||||
if self._index >= len(self):
|
|
||||||
raise IndexOutOfRangeException()
|
|
||||||
self._index += 1
|
|
||||||
|
|
||||||
return self.next()
|
|
||||||
|
|
||||||
def next(self):
|
|
||||||
return next(self._cycle)
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
self._index = 0
|
|
||||||
self._cycle = self._new_cycle()
|
|
Loading…
Reference in New Issue
Block a user