Exemple #1
0
 def flat_map(self, function: Callable, to: AutoStreamType = AUTO) -> Stream:
     if arg.is_defined(to):
         stream_class = StreamType.detect(to).get_class()
     else:
         stream_class = self.__class__
     new_props_keys = stream_class([]).get_meta().keys()
     props = {k: v for k, v in self.get_meta().items() if k in new_props_keys}
     props.pop('count')
     items = self._get_mapped_items(function=function, flat=True)
     return stream_class(items, **props)
Exemple #2
0
 def _get_stream_type(self,
                      stream_type: Union[StreamType,
                                         Auto] = AUTO) -> StreamType:
     if not Auto.is_defined(stream_type):
         if hasattr(self, 'get_stream_type'):
             stream_type = self.get_stream_type()
         elif hasattr(self, 'get_default_stream_type'):
             stream_type = self.get_default_stream_type()
         else:
             item_type = self.get_default_item_type()
             stream_type = StreamType.detect(item_type)
     return stream_type
Exemple #3
0
 def filter(self,
            *args,
            item_type: ItemType = ItemType.Auto,
            skip_errors: bool = False,
            **kwargs) -> Native:
     item_type = arg.delayed_acquire(item_type, self.get_item_type)
     stream_type = StreamType.detect(item_type)
     filtered_items = self._get_filtered_items(*args,
                                               item_type=item_type,
                                               skip_errors=skip_errors,
                                               **kwargs)
     stream = self.to_stream(data=filtered_items, stream_type=stream_type)
     return self._assume_native(stream)
Exemple #4
0
 def get_stream_type(cls) -> StreamType:
     stream_type = StreamType.detect(cls)
     assert isinstance(stream_type, StreamType)
     return stream_type