Skip to content

Commit 26a08a4

Browse files
authored
Merge pull request #53 from PickwickSoft/feature/#52/add-map-to-float
✨ Add map to float intermediate operation
2 parents 60098c8 + fc7e9af commit 26a08a4

4 files changed

Lines changed: 31 additions & 2 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "streams.py"
3-
version = "0.3.2"
3+
version = "0.3.3"
44
authors = ["Stefan Garlonta <stefan@pickwicksoft.org>"]
55
description = "A stream library for Python inspired by Java Stream API"
66
keywords = ["streams", "parallel", "data"]

pystreamapi/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pystreamapi.__stream import Stream
22
from pystreamapi._streams.error.__levels import ErrorLevel
33

4-
__version__ = "0.3.2"
4+
__version__ = "0.3.3"
55
__all__ = ["Stream", "ErrorLevel"]

pystreamapi/_streams/__base_stream.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,18 @@ def __map_to_int(self):
226226
"""Converts the stream to integers."""
227227
self._map(int)
228228

229+
def map_to_float(self) -> NumericBaseStream:
230+
"""
231+
Returns a stream consisting of the results of converting the elements of this stream to
232+
floats.
233+
"""
234+
self._queue.append(Process(self.__map_to_float))
235+
return self._to_numeric_stream()
236+
237+
def __map_to_float(self):
238+
"""Converts the stream to floats."""
239+
self._map(float)
240+
229241
@_operation
230242
def map_to_str(self) -> 'BaseStream[K]':
231243
"""

tests/test_stream_implementation.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from pystreamapi._streams.__base_stream import BaseStream
66
from pystreamapi._streams.__parallel_stream import ParallelStream
77
from pystreamapi._streams.__sequential_stream import SequentialStream
8+
from pystreamapi._streams.numeric.__numeric_base_stream import NumericBaseStream
89
from pystreamapi._streams.numeric.__parallel_numeric_stream import ParallelNumericStream
910
from pystreamapi._streams.numeric.__sequential_numeric_stream import SequentialNumericStream
1011
from pystreamapi.__optional import Optional
@@ -38,6 +39,22 @@ def test_map_to_int_empty(self):
3839
result = self.stream([]).map_to_int().to_list()
3940
self.assertListEqual(result, [])
4041

42+
def test_map_to_int_returns_numeric_stream(self):
43+
result = self.stream(["1", "2", "3", "9"]).map_to_int()
44+
self.assertTrue(isinstance(result, NumericBaseStream))
45+
46+
def test_map_to_float(self):
47+
result = self.stream(["1", "2", "3", "9"]).map_to_float().to_list()
48+
self.assertListEqual(result, [1.0, 2.0, 3.0, 9.0])
49+
50+
def test_map_to_float_empty(self):
51+
result = self.stream([]).map_to_float().to_list()
52+
self.assertListEqual(result, [])
53+
54+
def test_map_to_float_returns_numeric_stream(self):
55+
result = self.stream(["1", "2", "3", "9"]).map_to_float()
56+
self.assertTrue(isinstance(result, NumericBaseStream))
57+
4158
def test_map_to_str(self):
4259
result = self.stream([1, 2, 3, 9]).map_to_str().to_list()
4360
self.assertListEqual(result, ["1", "2", "3", "9"])

0 commit comments

Comments
 (0)