Skip to content

Commit

Permalink
Merge pull request #3 from 2785/master
Browse files Browse the repository at this point in the history
chore!: upgrade gammazero/deque to latest (driven by generics)
  • Loading branch information
alexander-yu authored Jan 4, 2024
2 parents 47f16cd + 4a450c3 commit f6f746d
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 31 deletions.
12 changes: 10 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
module github.com/alexander-yu/stream

go 1.18

require (
github.com/gammazero/deque v0.0.0-20190130191400-2afb3858e9c7
github.com/gammazero/deque v0.2.1
github.com/hashicorp/go-multierror v1.0.0
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/pkg/errors v0.8.1
github.com/sirupsen/logrus v1.4.0
github.com/stretchr/testify v1.3.0
github.com/workiva/go-datastructures v1.0.50
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c // indirect
golang.org/x/sys v0.0.0-20190322080309-f49334f85ddc // indirect
)
9 changes: 2 additions & 7 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gammazero/deque v0.0.0-20190130191400-2afb3858e9c7 h1:D2LrfOPgGHQprIxmsTpxtzhpmF66HoM6rXSmcqaX7h8=
github.com/gammazero/deque v0.0.0-20190130191400-2afb3858e9c7/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI=
github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0=
github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU=
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
Expand All @@ -19,19 +18,15 @@ github.com/sirupsen/logrus v1.4.0 h1:yKenngtzGh+cUSSh6GWbxW2abRqhYUSR/t/6+2QqNvE
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/workiva/go-datastructures v1.0.50 h1:fIBEgeOEH7fzlx6Nqn+2NyK/JVD5EgDgponNmzoFhyk=
github.com/workiva/go-datastructures v1.0.50/go.mod h1:ZYLyltToJkj6X5blfbFnTTEbryqb3v6D00JfVYDgUI0=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI=
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190322080309-f49334f85ddc h1:4gbWbmmPFp4ySWICouJl6emP0MyS31yy9SrTlAGFT+g=
golang.org/x/sys v0.0.0-20190322080309-f49334f85ddc/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
16 changes: 8 additions & 8 deletions minmax/max.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ type Max struct {
mux sync.Mutex
// Used if window > 0
queue *queue.RingBuffer
deque *deque.Deque
deque *deque.Deque[float64]
// Used if window == 0
max float64
count int
Expand All @@ -30,7 +30,7 @@ func NewMax(window int) (*Max, error) {

return &Max{
queue: queue.NewRingBuffer(uint64(window)),
deque: &deque.Deque{},
deque: deque.New[float64](),
max: math.Inf(-1),
window: window,
}, nil
Expand All @@ -41,7 +41,7 @@ func NewMax(window int) (*Max, error) {
func NewGlobalMax() *Max {
return &Max{
queue: queue.NewRingBuffer(uint64(0)),
deque: &deque.Deque{},
deque: deque.New[float64](),
max: math.Inf(-1),
window: 0,
}
Expand All @@ -68,7 +68,7 @@ func (m *Max) Push(x float64) error {

m.count--

if m.deque.Front().(*float64) == val.(*float64) {
if m.deque.Front() == *val.(*float64) {
m.deque.PopFront()
}
}
Expand All @@ -80,10 +80,10 @@ func (m *Max) Push(x float64) error {

m.count++

for m.deque.Len() > 0 && *m.deque.Back().(*float64) < x {
for m.deque.Len() > 0 && m.deque.Back() < x {
m.deque.PopBack()
}
m.deque.PushBack(&x)
m.deque.PushBack(x)

} else {
m.count++
Expand All @@ -104,7 +104,7 @@ func (m *Max) Value() (float64, error) {
return m.max, nil
}

return *m.deque.Front().(*float64), nil
return m.deque.Front(), nil
}

// Clear resets the metric.
Expand All @@ -115,5 +115,5 @@ func (m *Max) Clear() {
m.max = math.Inf(-1)
m.queue.Dispose()
m.queue = queue.NewRingBuffer(uint64(m.window))
m.deque = &deque.Deque{}
m.deque = deque.New[float64]()
}
6 changes: 3 additions & 3 deletions minmax/max_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (s *MaxPushSuite) TestPushWindowSuccess() {
for i, val := range vals {
err := s.windowMax.Push(val)
s.Require().NoError(err)
s.Equal(maxes[i], *s.windowMax.deque.Front().(*float64))
s.Equal(maxes[i], s.windowMax.deque.Front())
}

// reset test
Expand All @@ -93,7 +93,7 @@ func (s *MaxPushSuite) TestPushWindowSuccess() {
for i, val := range vals {
err := s.windowMax.Push(val)
s.Require().NoError(err)
s.Equal(maxes[i], *s.windowMax.deque.Front().(*float64))
s.Equal(maxes[i], s.windowMax.deque.Front())
}

// reset test
Expand All @@ -104,7 +104,7 @@ func (s *MaxPushSuite) TestPushWindowSuccess() {
for i, val := range vals {
err := s.windowMax.Push(val)
s.Require().NoError(err)
s.Equal(maxes[i], *s.windowMax.deque.Front().(*float64))
s.Equal(maxes[i], s.windowMax.deque.Front())
}
}

Expand Down
16 changes: 8 additions & 8 deletions minmax/min.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type Min struct {
count int
// Used if window > 0
queue *queue.RingBuffer
deque *deque.Deque
deque *deque.Deque[float64]
// Used if window == 0
min float64
}
Expand All @@ -30,7 +30,7 @@ func NewMin(window int) (*Min, error) {

return &Min{
queue: queue.NewRingBuffer(uint64(window)),
deque: &deque.Deque{},
deque: deque.New[float64](),
min: math.Inf(1),
window: window,
}, nil
Expand All @@ -41,7 +41,7 @@ func NewMin(window int) (*Min, error) {
func NewGlobalMin() *Min {
return &Min{
queue: queue.NewRingBuffer(uint64(0)),
deque: &deque.Deque{},
deque: deque.New[float64](),
min: math.Inf(1),
window: 0,
}
Expand All @@ -68,7 +68,7 @@ func (m *Min) Push(x float64) error {

m.count--

if m.deque.Front().(*float64) == val.(*float64) {
if m.deque.Front() == *val.(*float64) {
m.deque.PopFront()
}
}
Expand All @@ -80,10 +80,10 @@ func (m *Min) Push(x float64) error {

m.count++

for m.deque.Len() > 0 && *m.deque.Back().(*float64) > x {
for m.deque.Len() > 0 && m.deque.Back() > x {
m.deque.PopBack()
}
m.deque.PushBack(&x)
m.deque.PushBack(x)

} else {
m.count++
Expand All @@ -104,7 +104,7 @@ func (m *Min) Value() (float64, error) {
return m.min, nil
}

return *m.deque.Front().(*float64), nil
return m.deque.Front(), nil
}

// Clear resets the metric.
Expand All @@ -115,5 +115,5 @@ func (m *Min) Clear() {
m.min = math.Inf(1)
m.queue.Dispose()
m.queue = queue.NewRingBuffer(uint64(m.window))
m.deque = &deque.Deque{}
m.deque = deque.New[float64]()
}
6 changes: 3 additions & 3 deletions minmax/min_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func (s *MinPushSuite) TestPushWindowSuccess() {
for i, val := range vals {
err := s.windowMin.Push(val)
s.Require().NoError(err)
s.Equal(maxes[i], *s.windowMin.deque.Front().(*float64))
s.Equal(maxes[i], s.windowMin.deque.Front())
}

// reset test
Expand All @@ -92,7 +92,7 @@ func (s *MinPushSuite) TestPushWindowSuccess() {
for i, val := range vals {
err := s.windowMin.Push(val)
s.Require().NoError(err)
s.Equal(maxes[i], *s.windowMin.deque.Front().(*float64))
s.Equal(maxes[i], s.windowMin.deque.Front())
}

// reset test
Expand All @@ -103,7 +103,7 @@ func (s *MinPushSuite) TestPushWindowSuccess() {
for i, val := range vals {
err := s.windowMin.Push(val)
s.Require().NoError(err)
s.Equal(maxes[i], *s.windowMin.deque.Front().(*float64))
s.Equal(maxes[i], s.windowMin.deque.Front())
}
}

Expand Down

0 comments on commit f6f746d

Please sign in to comment.