@@ -809,16 +809,34 @@ def collect(
809
809
810
810
# TODO, implement this case
811
811
812
- if current_value_positive is None :
813
- # This happens if collect is called before aggregate is
814
- # called or if collect is called twice with no calls to
815
- # aggregate in between.
812
+ if (
813
+ current_value_positive is None and
814
+ self ._previous_cumulative_value_positive is None
815
+ ):
816
+ # This happens if collect is called for the first time
817
+ # and aggregate has not yet been called.
816
818
current_value_positive = Buckets ()
817
- if current_value_negative is None :
819
+ self ._previous_cumulative_value_positive = (
820
+ current_value_positive .copy_empty ()
821
+ )
822
+ if (
823
+ current_value_negative is None and
824
+ self ._previous_cumulative_value_negative is None
825
+ ):
818
826
current_value_negative = Buckets ()
827
+ self ._previous_cumulative_value_negative = (
828
+ current_value_negative .copy_empty ()
829
+ )
830
+ if scale is None and self ._previous_scale is None :
831
+ scale = self ._mapping .scale
832
+ self ._previous_scale = scale
819
833
820
- if self ._previous_cumulative_value_positive is None :
821
- # This happens when collect is called the very first time.
834
+ if (
835
+ current_value_positive is not None and
836
+ self ._previous_cumulative_value_positive is None
837
+ ):
838
+ # This happens when collect is called the very first time
839
+ # and aggregate has been called before.
822
840
823
841
# We need previous buckets to add them to the current ones.
824
842
# When collect is called for the first time, there are no
@@ -839,13 +857,33 @@ def collect(
839
857
self ._previous_cumulative_value_positive = (
840
858
current_value_positive .copy_empty ()
841
859
)
842
- if self ._previous_cumulative_value_negative is None :
860
+ if (
861
+ current_value_negative is not None and
862
+ self ._previous_cumulative_value_negative is None
863
+ ):
843
864
self ._previous_cumulative_value_negative = (
844
865
current_value_negative .copy_empty ()
845
866
)
846
- if self ._previous_scale is None :
867
+ if scale is not None and self ._previous_scale is None :
847
868
self ._previous_scale = scale
848
869
870
+ if (
871
+ current_value_positive is None and
872
+ self ._previous_cumulative_value_positive is not None
873
+ ):
874
+ current_value_positive = (
875
+ self ._previous_cumulative_value_positive .copy_empty ()
876
+ )
877
+ if (
878
+ current_value_negative is None and
879
+ self ._previous_cumulative_value_negative is not None
880
+ ):
881
+ current_value_negative = (
882
+ self ._previous_cumulative_value_negative .copy_empty ()
883
+ )
884
+ if scale is None and self ._previous_scale is not None :
885
+ scale = self ._previous_scale
886
+
849
887
min_scale = min (self ._previous_scale , scale )
850
888
851
889
low_positive , high_positive = (
0 commit comments