Исходный код lena.core.fill_request_seq

from . import adapters
from . import check_sequence_type
from . import exceptions
from . import fill_compute_seq
from . import lena_sequence
from . import sequence


[документация]class FillRequestSeq(lena_sequence.LenaSequence): """ .. deprecated:: 0.6 inside a :class:`.Split` element this sequence is a subtype of a simple :class:`Sequence`. Sequence with one *FillRequest* element. Input flow is preprocessed with the sequence before the *FillRequest* element, then it fills the *FillRequest* element. When the results are yielded from the *FillRequest*, they are postprocessed with the elements that follow it. """ def __init__(self, *args, **kwargs): """*args* form a sequence with a *FillRequest* element. If *args* contains several *FillRequest* elements, only the first one is chosen (the subsequent ones are used as simple *Run* elements). To change that, explicitly cast the first element to :class:`.FillInto`. *kwargs* can contain *bufsize* or *reset*. See :class:`FillRequest` for more information on them. By default *bufsize* is *1*. If *FillRequest* element was not found, the sequences could not be correctly initialized, or unknown keyword arguments were received, :exc:`.LenaTypeError` is raised. """ # if "bufsize" in kwargs: # self._bufsize = kwargs.pop("bufsize") # else: # self._bufsize = 1 # reset = kwargs.pop("reset", True) # if "buffer_input" or "buffer_output" not in kwargs: # raise exceptions.LenaTypeError( # "kwargs must contain buffer_input or buffer_output" # ) # buffer_input = kwargs.pop("buffer_input", False) # buffer_output = kwargs.pop("buffer_output", False) # if kwargs: # raise exceptions.LenaTypeError( # "unknown kwargs {}".format(kwargs) # ) ##| not sure now. Why is it not documented? # `-> *args* can consist of one tuple, # which in that case is expanded. fill_compute_seq._init_sequence_with_el( self, args, "_fill_request", check_sequence_type.is_fill_request_el, el_name="FillRequest", seq_name="FillRequestSeq" ) fr = adapters.FillRequest(self, **kwargs) # just for tests self._fr = fr self._reset = fr._reset # fr = adapters.FillRequest(self, reset=reset, bufsize=self._bufsize) self.run = fr.run # todo: we will abandon FillRequestSeq in the next release super(FillRequestSeq, self).__init__(*self._data_seq)
[документация] def fill(self, value): """Fill *self* with *value*. If the sequence before *FillRequest* is not empty, it preprocesses the *value* before filling *FillRequest*. """ raise exceptions.LenaNotImplementedError
[документация] def request(self): """Request the results and yield. If the sequence after *FillRequest* is not empty, it postprocesses the results yielded from the *FillRequest* element. """ vals = self._fill_request.request() if self._after: results = self._after.run(vals) else: results = vals # todo: add reset here. # FillRequest must produce a generator, so no conversion is needed. return results
[документация] def reset(self): """Reset the *FillRequest* element.""" self._fill_request.reset()