diff --git a/pyproject.toml b/pyproject.toml index 55e4860..f8fab56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "streams.py" -version = "0.3.2" +version = "0.3.3" authors = ["Stefan Garlonta "] description = "A stream library for Python inspired by Java Stream API" keywords = ["streams", "parallel", "data"] diff --git a/pystreamapi/__init__.py b/pystreamapi/__init__.py index 96045f7..3f434d9 100644 --- a/pystreamapi/__init__.py +++ b/pystreamapi/__init__.py @@ -1,5 +1,5 @@ from pystreamapi.__stream import Stream from pystreamapi._streams.error.__levels import ErrorLevel -__version__ = "0.3.2" +__version__ = "0.3.3" __all__ = ["Stream", "ErrorLevel"] diff --git a/pystreamapi/_streams/__base_stream.py b/pystreamapi/_streams/__base_stream.py index 5286f9c..16469dd 100644 --- a/pystreamapi/_streams/__base_stream.py +++ b/pystreamapi/_streams/__base_stream.py @@ -226,6 +226,18 @@ def __map_to_int(self): """Converts the stream to integers.""" self._map(int) + def map_to_float(self) -> NumericBaseStream: + """ + Returns a stream consisting of the results of converting the elements of this stream to + floats. + """ + self._queue.append(Process(self.__map_to_float)) + return self._to_numeric_stream() + + def __map_to_float(self): + """Converts the stream to floats.""" + self._map(float) + @_operation def map_to_str(self) -> 'BaseStream[K]': """ diff --git a/tests/test_stream_implementation.py b/tests/test_stream_implementation.py index b39a948..a4453a3 100644 --- a/tests/test_stream_implementation.py +++ b/tests/test_stream_implementation.py @@ -5,6 +5,7 @@ from pystreamapi._streams.__base_stream import BaseStream from pystreamapi._streams.__parallel_stream import ParallelStream from pystreamapi._streams.__sequential_stream import SequentialStream +from pystreamapi._streams.numeric.__numeric_base_stream import NumericBaseStream from pystreamapi._streams.numeric.__parallel_numeric_stream import ParallelNumericStream from pystreamapi._streams.numeric.__sequential_numeric_stream import SequentialNumericStream from pystreamapi.__optional import Optional @@ -38,6 +39,22 @@ def test_map_to_int_empty(self): result = self.stream([]).map_to_int().to_list() self.assertListEqual(result, []) + def test_map_to_int_returns_numeric_stream(self): + result = self.stream(["1", "2", "3", "9"]).map_to_int() + self.assertTrue(isinstance(result, NumericBaseStream)) + + def test_map_to_float(self): + result = self.stream(["1", "2", "3", "9"]).map_to_float().to_list() + self.assertListEqual(result, [1.0, 2.0, 3.0, 9.0]) + + def test_map_to_float_empty(self): + result = self.stream([]).map_to_float().to_list() + self.assertListEqual(result, []) + + def test_map_to_float_returns_numeric_stream(self): + result = self.stream(["1", "2", "3", "9"]).map_to_float() + self.assertTrue(isinstance(result, NumericBaseStream)) + def test_map_to_str(self): result = self.stream([1, 2, 3, 9]).map_to_str().to_list() self.assertListEqual(result, ["1", "2", "3", "9"])