From afa3b44103a19e66064271b5baa7672e4867aeed Mon Sep 17 00:00:00 2001 From: ed cuss Date: Mon, 3 Aug 2026 21:30:15 +0100 Subject: [PATCH] fix: make properly immutable --- src/danom/_stream.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/danom/_stream.py b/src/danom/_stream.py index 419f69b..2a05722 100644 --- a/src/danom/_stream.py +++ b/src/danom/_stream.py @@ -236,8 +236,7 @@ def two_div_value(x: float) -> float: """ plan = (*self.ops, (_MAP, partial(fn, *args, **kwargs))) - object.__setattr__(self, "ops", plan) - return self + return Stream(seq=self.seq, ops=plan) def filter[**P]( self, fn: FilterFn | AsyncFilterFn, *args: P.args, **kwargs: P.kwargs @@ -261,8 +260,7 @@ def filter[**P]( """ plan = (*self.ops, (_FILTER, partial(fn, *args, **kwargs))) - object.__setattr__(self, "ops", plan) - return self + return Stream(seq=self.seq, ops=plan) def tap[**P](self, fn: TapFn | AsyncTapFn, *args: P.args, **kwargs: P.kwargs) -> Stream[T]: """Tap the values to another process that returns None. Will return a new ``Stream`` with the modified sequence. @@ -301,8 +299,7 @@ def tap[**P](self, fn: TapFn | AsyncTapFn, *args: P.args, **kwargs: P.kwargs) -> """ plan = (*self.ops, (_TAP, partial(fn, *args, **kwargs))) - object.__setattr__(self, "ops", plan) - return self + return Stream(seq=self.seq, ops=plan) def partition( self, fn: FilterFn, *, workers: int = 1, use_threads: bool = False @@ -440,7 +437,7 @@ def collect(self) -> tuple[U, ...]: stream.collect() == (1, 2, 3, 4) """ - return tuple(_apply_fns(self.seq, self.ops)) + return _apply_fns(self.seq, self.ops) def par_collect(self, workers: int = 4, *, use_threads: bool = False) -> tuple[U, ...]: """Materialise the sequence from the ``Stream`` in parallel.