No output when using the REPL

Hi @oxinabox, I'm following an example from the docs, but I'm unable to generate any visual output with visualize_chart:
julia> using ProjectManagement

julia> proj = Project(
           (start=0,
            a=PertBeta(1, 2, 3),
            b=PertBeta(10, 20, 30),
            c=PertBeta(100, 200, 600),
            finish=0,
           ),
           [:start => :a,
            :a => :b,
            :b => :c,
            :c => :finish,
           ]
       )
Project{NamedTuple{(:start, :a, :b, :c, :finish),Tuple{Int64,PertBeta{Int64},PertBeta{Int64},PertBeta{Int64},Int64}}}((start = 0, a = PertBeta{Int64}(a=1, b=2, c=3), b = PertBeta{Int64}(a=10, b=20, c=30), c = PertBeta{Int64}(a=100, b=200, c=600), finish = 0), [:start => :a, :a => :b, :b => :c, :c => :finish])

julia> visualize_chart(proj; fontsize=2.5)
Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, Compose.UnitBox{Float64,Float64,Float64,Float64}(0.0, -6.0, 54.0, 54.0, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 2.5cx,0cy, 2.5cx + 1.0w,0cy + 1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.LinePrimitive}(Compose.LinePrimitive[Compose.LinePrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(9.0cx, 0.0cy), (18.0cx, 0.0cy)]), Compose.LinePrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(18.0cx, 0.0cy), (27.0cx, 0.0cy)]), Compose.LinePrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(27.0cx, 0.0cy), (36.0cx, 0.0cy)]), Compose.LinePrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(36.0cx, 0.0cy), (45.0cx, 0.0cy)])], Symbol(""))]), List([Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.5019607843137255,0.0,1.0))])]), 1, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 45.0cx,0.0cy, 45.0cx + 1.0w,0.0cy + 1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 1cx,-1cy, 4cx,1cy, 3cx,2cy}, Compose.UnitBox{Int64,Int64,Int64,Int64}(0, 0, 10, 10, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([]), List([Compose.Form{Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}}(Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}[Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((5cx, 2cy), "finish\n0", Compose.HCenter(), Compose.VTop(), Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm))], Symbol(""))]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(2.5mm)])]), 2, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}}(Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}[Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(0cx, 0cy), (1cx, 1.5cy), (4cx, 1.5cy), (5cx, 0cy), (4cx, -1.5cy), (1cx, -1.5cy)])], Symbol(""))]), List([Compose.Property{Compose.FillOpacityPrimitive}(Compose.FillOpacityPrimitive[Compose.FillOpacityPrimitive(1.0)]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(1.0,1.0,1.0,1.0))]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,1.0,1.0))])]), 1, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 36.0cx,0.0cy, 36.0cx + 1.0w,0.0cy + 1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 1cx,-1cy, 4cx,1cy, 3cx,2cy}, Compose.UnitBox{Int64,Int64,Int64,Int64}(0, 0, 10, 10, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([]), List([Compose.Form{Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}}(Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}[Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((5cx, 2cy), "c\n(100|200|600)\n250.0", Compose.HCenter(), Compose.VTop(), Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm))], Symbol(""))]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(2.5mm)])]), 2, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}}(Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}[Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(0cx, 0cy), (1cx, 1.5cy), (4cx, 1.5cy), (5cx, 0cy), (4cx, -1.5cy), (1cx, -1.5cy)])], Symbol(""))]), List([Compose.Property{Compose.FillOpacityPrimitive}(Compose.FillOpacityPrimitive[Compose.FillOpacityPrimitive(1.0)]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(1.0,1.0,1.0,1.0))]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,1.0,1.0))])]), 1, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 27.0cx,0.0cy, 27.0cx + 1.0w,0.0cy + 1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 1cx,-1cy, 4cx,1cy, 3cx,2cy}, Compose.UnitBox{Int64,Int64,Int64,Int64}(0, 0, 10, 10, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([]), List([Compose.Form{Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}}(Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}[Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((5cx, 2cy), "b\n(10|20|30)\n20.0", Compose.HCenter(), Compose.VTop(), Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm))], Symbol(""))]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(2.5mm)])]), 2, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}}(Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}[Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(0cx, 0cy), (1cx, 1.5cy), (4cx, 1.5cy), (5cx, 0cy), (4cx, -1.5cy), (1cx, -1.5cy)])], Symbol(""))]), List([Compose.Property{Compose.FillOpacityPrimitive}(Compose.FillOpacityPrimitive[Compose.FillOpacityPrimitive(1.0)]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(1.0,1.0,1.0,1.0))]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,1.0,1.0))])]), 1, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 18.0cx,0.0cy, 18.0cx + 1.0w,0.0cy + 1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 1cx,-1cy, 4cx,1cy, 3cx,2cy}, Compose.UnitBox{Int64,Int64,Int64,Int64}(0, 0, 10, 10, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([]), List([Compose.Form{Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}}(Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}[Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((5cx, 2cy), "a\n(1|2|3)\n2.0", Compose.HCenter(), Compose.VTop(), Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm))], Symbol(""))]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(2.5mm)])]), 2, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}}(Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}[Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(0cx, 0cy), (1cx, 1.5cy), (4cx, 1.5cy), (5cx, 0cy), (4cx, -1.5cy), (1cx, -1.5cy)])], Symbol(""))]), List([Compose.Property{Compose.FillOpacityPrimitive}(Compose.FillOpacityPrimitive[Compose.FillOpacityPrimitive(1.0)]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(1.0,1.0,1.0,1.0))]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,1.0,1.0))])]), 1, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 9.0cx,0.0cy, 9.0cx + 1.0w,0.0cy + 1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([Compose.Context(BBox{l,t,r,b,w,h = 1cx,-1cy, 4cx,1cy, 3cx,2cy}, Compose.UnitBox{Int64,Int64,Int64,Int64}(0, 0, 10, 10, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([]), List([Compose.Form{Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}}(Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}[Compose.TextPrimitive{Tuple{Measures.Length{:cx,Int64},Measures.Length{:cy,Int64}},Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((5cx, 2cy), "start\n0", Compose.HCenter(), Compose.VTop(), Compose.Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm))], Symbol(""))]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(2.5mm)])]), 2, false, false, false, false, nothing, nothing, 0.0, Symbol("")), Compose.Context(BBox{l,t,r,b,w,h = 0.0w,0.0h, 1.0w,1.0h, 1.0w,1.0h}, nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}}(Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}[Compose.SimplePolygonPrimitive{Tuple{Measures.Measure,Measures.Measure}}(Tuple{Measures.Measure,Measures.Measure}[(0cx, 0cy), (1cx, 1.5cy), (4cx, 1.5cy), (5cx, 0cy), (4cx, -1.5cy), (1cx, -1.5cy)])], Symbol(""))]), List([Compose.Property{Compose.FillOpacityPrimitive}(Compose.FillOpacityPrimitive[Compose.FillOpacityPrimitive(1.0)]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(1.0,1.0,1.0,1.0))]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,1.0,1.0))])]), 1, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 2, false, false, false, false, nothing, nothing, 0.0, Symbol(""))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(""))

julia> versioninfo()
Julia Version 1.4.1
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: AMD Ryzen 5 1600 Six-Core Processor
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-8.0.1 (ORCJIT, znver1)
Environment:
  JULIA_NUM_THREADS = 12

(@v1.4) pkg> st ProjectManagement
Status `~/.julia/environments/v1.4/Project.toml`
  [8d6fe0f5] ProjectManagement v1.0.0

(Nothing is displayed.)
Maybe I'm doing something wrong?

No, you are not doing anything wrong.
The docs kind of cheat to make Compose objects render on their own.
They should not do that really.
That should be fixed.
You need to do something to  output the Compose object.
E.g.
https://giovineitalia.github.io/Compose.jl/latest/library/#Compose.SVG

I am not sure it is possible to make the REPL display an image, without e.g. doing some more complicated stuff to add some extra displays to the display stack, like Plot.jl does.
I think it might be possible to make it display in VS-Code's (or Juno's) REPL as they already have the display stuff loaded.
I am looking into this presently

Turns out this already works fine in VS-Code as is.
I am not sure if there is anything to be done.
Maybe I should be loading some kind of display and pushing that to the stack when this package is loaded.
Like Plots.jl does.
Or maybe i can trick the display that Plots.jl adds into displaying this as a SVG.
(Extreme solution would be to rewrite the chart visualization as a plots revipe ratehr than writing it in Compose.jl)

Not sure if it's a decent solution for ProjectManagement.jl, but maybe implementing a render function could work (as in here, for instance)?

It's note that bit we need, it is a display capable of displaying anything that is actually graphical.
Which is why it works in VS-Code because it adds such a display to the display-stack.
Gadfly does too.
So if you load Gadfly after loading ProjectManagement.jl it will cause it to display the chart (on my current setup it did this via openning my web-browser, which I guess works.)
We might be able to replicate that behavour.
https://github.com/GiovineItalia/Gadfly.jl/blob/36a7521efda1c025b5b2d3db396618d078f1bda3/src/Gadfly.jl#L1043-L1067
though we would want to make sure our display was near the bottom of the stack I think


Add a License

This is a fantastic web-app! :+1:
I was thinking it might be cool to reference from, or integrate with, the Grunt documentation.
However, your software hasn't been licensed.
Would you be able to add a license, in case we'd like to use it?

Ping! @bodyflex

Thanks so much!

done!
if you wish, I can add you (or someone else) as a collaborator since I don't have time to maintain this project myself right now.

Thanks, that would be great! I'll get back to you if somebody else wants to help collaborate too.

gotcha, added you now!

You legend :+1:


salmon/steelhead IP models - spawning edge types

Some PSE known spawning occurs in streams with edge_type=1050 (Single line blueline, main flow through wetland), but these are excluded from the existing models.  Evaluate impact of broadening models and get feedback on biological validity.

Lakes are also a bit of a grey area - we exclude them completely but lakes exist that are are small and linear/river-like (and included in PSE spawning). Probably not worth considering.


Fix mime-type detection by properly replacing whitespace in filenames

The regular expression used to replace whitespace in filenames is incorrect; \w ends up replacing "." with "_". This change fixes mime-type detection.

That seems sensible.

Thanks, version 1.1.7 is pushed now

Thank you!


Add keys, values, and items methods to FermionOperator

FermionOperator acts as a dictionary mapping keys to values. It should have keys, values, and items methods.

I would like this test to pass:
def test_mapping_methods():
    op = FermionOperator(
        {
            (ffsim.cre_a(1), ffsim.des_a(2)): 1,
            (ffsim.cre_a(2), ffsim.des_a(1)): 0.5,
            (ffsim.cre_b(1), ffsim.des_b(2)): -0.5j,
            (ffsim.cre_b(2), ffsim.des_b(1)): 1 - 0.5j,
        }
    )
    assert op.keys() == {
        (ffsim.cre_a(1), ffsim.des_a(2)),
        (ffsim.cre_a(2), ffsim.des_a(1)),
        (ffsim.cre_b(1), ffsim.des_b(2)),
        (ffsim.cre_b(2), ffsim.des_b(1)),
    }

It turns out to be more complicated than I expected, since the keys method would need to return a Rust object that, for example, knows how to compare correctly to Python objects.
If https://github.com/PyO3/pyo3/issues/991 is implemented, then we could simply inherit from the Python Mapping abstract base class.


Add support for FreeBSD on x86

This is replacing #159 and fixes #158

To submit when we have continuous integration for FreeBSD via Vagrant.

Already failing on 14-CURRENT:
[  2% 5/110] /ccache/libexec/ccache/cc -DSTACK_LINE_READER_BUFFER_SIZE=1024 -D_GLIBCXX_USE_CXX11_ABI=1 -I/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/include -I/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/include/internal -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wall -Werror=incompatible-pointer-types -Werror=pointer-sign -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fPIC -std=gnu99 -MD -MT cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o -MF cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o.d -o cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o -c /wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c
FAILED: cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o
/ccache/libexec/ccache/cc -DSTACK_LINE_READER_BUFFER_SIZE=1024 -D_GLIBCXX_USE_CXX11_ABI=1 -I/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/include -I/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/include/internal -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wall -Werror=incompatible-pointer-types -Werror=pointer-sign -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fPIC -std=gnu99 -MD -MT cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o -MF cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o.d -o cpu_features/CMakeFiles/cpu_features.dir/src/cpuinfo_x86.c.o -c /wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:111:2: error: "Unsupported OS"
#error "Unsupported OS"
 ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1335:20: warning: implicit declaration of function 'CpuFeatures_OpenFile' is invalid in C99 [-Wimplicit-function-declaration]
    const int fd = CpuFeatures_OpenFile("/var/run/dmesg.boot");
                   ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1337:7: error: use of undeclared identifier 'StackLineReader'
      StackLineReader reader;
      ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1338:7: warning: implicit declaration of function 'StackLineReader_Initialize' is invalid in C99 [-Wimplicit-function-declaration]
      StackLineReader_Initialize(&reader, fd);
      ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1338:35: error: use of undeclared identifier 'reader'
      StackLineReader_Initialize(&reader, fd);
                                  ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1340:15: error: unknown type name 'LineResult'
        const LineResult result = StackLineReader_NextLine(&reader);
              ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1340:35: warning: implicit declaration of function 'StackLineReader_NextLine' is invalid in C99 [-Wimplicit-function-declaration]
        const LineResult result = StackLineReader_NextLine(&reader);
                                  ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1340:61: error: use of undeclared identifier 'reader'
        const LineResult result = StackLineReader_NextLine(&reader);
                                                            ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1341:13: warning: implicit declaration of function 'CpuFeatures_StringView_StartsWith' is invalid in C99 [-Wimplicit-function-declaration]
        if (CpuFeatures_StringView_StartsWith(result.line,
            ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1342:47: warning: implicit declaration of function 'str' is invalid in C99 [-Wimplicit-function-declaration]
                                              str("  Features=")) ||
                                              ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1354:15: warning: implicit declaration of function 'CpuFeatures_StringView_HasWord' is invalid in C99 [-Wimplicit-function-declaration]
          if (CpuFeatures_StringView_HasWord(value, "SSE"))
              ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1354:46: error: use of undeclared identifier 'value'
          if (CpuFeatures_StringView_HasWord(value, "SSE"))
                                             ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1356:46: error: use of undeclared identifier 'value'
          if (CpuFeatures_StringView_HasWord(value, "SSE2"))
                                             ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1358:46: error: use of undeclared identifier 'value'
          if (CpuFeatures_StringView_HasWord(value, "SSE3"))
                                             ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1360:46: error: use of undeclared identifier 'value'
          if (CpuFeatures_StringView_HasWord(value, "SSSE3"))
                                             ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1362:46: error: use of undeclared identifier 'value'
          if (CpuFeatures_StringView_HasWord(value, "SSE4.1"))
                                             ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1364:46: error: use of undeclared identifier 'value'
          if (CpuFeatures_StringView_HasWord(value, "SSE4.2"))
                                             ^
/wrkdirs/overlays/devel/devel/volk/work/volk-2.5.0/cpu_features/src/cpuinfo_x86.c:1370:5: warning: implicit declaration of function 'CpuFeatures_CloseFile' is invalid in C99 [-Wimplicit-function-declaration]
    CpuFeatures_CloseFile(fd);
    ^
7 warnings and 11 errors generated.

cpu_features/src/cpuinfo_x86.c:111:2: error: "Unsupported OS"
#error "Unsupported OS"
^
cpu_features/src/cpuinfo_x86.c:1335:20: warning: implicit declaration of function 'CpuFeatures_OpenFile' is invalid in C99 [-Wimplicit-function-declarati
on]
const int fd = CpuFeatures_OpenFile("/var/run/dmesg.boot");
^
cpu_features/src/cpuinfo_x86.c:1337:7: error: use of undeclared identifier 'StackLineReader'
StackLineReader reader;
^
cpu_features/src/cpuinfo_x86.c:1338:7: warning: implicit declaration of function 'StackLineReader_Initialize' is invalid in C99 [-Wimplicit-function-decl
aration]
StackLineReader_Initialize(&reader, fd);
^
cpu_features/src/cpuinfo_x86.c:1338:35: error: use of undeclared identifier 'reader'
StackLineReader_Initialize(&reader, fd);
^
These continue

Thx @mldulaney and @vishwin ! We're waiting to have at least one FreeBSD CI before moving on with this patch.
Stay tuned!

    default: /usr/home/vagrant/project/test/cpuinfo_x86_test.cc
    default: :
    default: 762:3: error: use of undeclared identifier 'fs'
    default:   fs.CreateFile("/var/run/dmesg.boot", R"(
    default:   ^
    default: /usr/home/vagrant/project/test/cpuinfo_x86_test.cc:837:3: error: use of undeclared identifier 'fs'
    default:   fs.CreateFile("/var/run/dmesg.boot", R"(
    default:   ^
    default: 2 errors generated.
    default: *** Error code 1
    default:
    default: Stop.
    default: make[2]: stopped in /usr/home/vagrant/project/build
    default: *** Error code 1
    default:
    default: Stop.
    default: make[1]: stopped in /usr/home/vagrant/project/build
    default: *** Error code 1
    default:
    default: Stop.
    default: make: stopped in /usr/home/vagrant/project/build

ref: https://github.com/google/cpu_features/runs/2954585917?check_suite_focus=true#step:5:902

-- Looking for getauxval - not found
CMake Error at cpu_features/CMakeLists.txt:196 (message):
CMake step for googletest failed: No such file or directory
-- Configuring incomplete, errors occurred!

Not familiar with this lib but you should never parse dmesg.boot or use some sysctl to obtain this info.
You should use elf_aux_info with AT_HWCAP/AT_HWCAP2.

Not familiar with this lib but you should never parse dmesg.boot or use some sysctl to obtain this info.
You should use elf_aux_info with AT_HWCAP/AT_HWCAP2.

Thx a lot @evadot. This is exactly what I was looking for. From the documentation: The elf_aux_info() function appeared in FreeBSD 12.0.. How would I get this information prior to FreeBSD 12?

Not familiar with this lib but you should never parse dmesg.boot or use some sysctl to obtain this info.
You should use elf_aux_info with AT_HWCAP/AT_HWCAP2.

Thx a lot @evadot. This is exactly what I was looking for. From the documentation: The elf_aux_info() function appeared in FreeBSD 12.0.. How would I get this information prior to FreeBSD 12?

FreeBSD 11 will be EOL in september so I wouldn't bother.

Not familiar with this lib but you should never parse dmesg.boot or use some sysctl to obtain this info.
You should use elf_aux_info with AT_HWCAP/AT_HWCAP2.

Thx a lot @evadot. This is exactly what I was looking for. From the documentation: The elf_aux_info() function appeared in FreeBSD 12.0.. How would I get this information prior to FreeBSD 12?

FreeBSD 11 will be EOL in september so I wouldn't bother.

@evadot let me know if I understand this correctly.
From these lines here and here, only AT_HWCAP is set (AT_HWCAP2 is set to zero).
Now AT_HWCAP for x86 seems to return cpu_features which AFAIU can be interpreted with one of the CPUID_* masks here. This gives me access to XMM, MMX, SSE and SSE2. To retrieve cpu features for SSE3, SSSE3, SSE4.1 and SSE4.2 I'd need to get cpu_feature2 which - it seems -  is not available through AT_HWCAP2. Am I missing something?

@evadot let me know if I understand this correctly.
From these lines here and here, only AT_HWCAP is set (AT_HWCAP2 is set to zero).
Now AT_HWCAP for x86 seems to return cpu_features which AFAIU can be interpreted with one of the CPUID_* masks here. This gives me access to XMM, MMX, SSE and SSE2. To retrieve cpu features for SSE3, SSSE3, SSE4.1 and SSE4.2 I'd need to get cpu_feature2 which - it seems - is not available through AT_HWCAP2. Am I missing something?

That's for the linuxulator.
Apparently we do not expose AT_HWCAP on x86 but only for powerpc*, arm* and riscv.
You should use the cpuid directly on amd64, you can look at https://cgit.freebsd.org/src/tree/lib/csu/amd64/reloc.c for an example on how to do this.

@evadot let me know if I understand this correctly.
From these lines here and here, only AT_HWCAP is set (AT_HWCAP2 is set to zero).
Now AT_HWCAP for x86 seems to return cpu_features which AFAIU can be interpreted with one of the CPUID_* masks here. This gives me access to XMM, MMX, SSE and SSE2. To retrieve cpu features for SSE3, SSSE3, SSE4.1 and SSE4.2 I'd need to get cpu_feature2 which - it seems - is not available through AT_HWCAP2. Am I missing something?

That's for the linuxulator.
Apparently we do not expose AT_HWCAP on x86 but only for powerpc*, arm* and riscv.
You should use the cpuid directly on amd64, you can look at https://cgit.freebsd.org/src/tree/lib/csu/amd64/reloc.c for an example on how to do this.

Thx for your answer @evadot. This project already uses the cpuid instruction to query the presence/absence of some features at the cpu level, but we also need to know if the OS preserves these vector registers across context switches. For AVX enabled CPUs the OS has the possibility to use the XCR0 register. Then using cpuid is all you need.
Now the code here deals with pre-AVX cpus (Atom, Westmere, ...) where there is no way to ask the CPU whether the OS will save and restore vector registers across context switches. We have to query the OS to get this information. As far as I understand, the only way to get this information on FreeBSD is to parse /var/run/dmesg.boot. Let me know if you see another way.
An interesting sidenote, for Darwin - which is FreeBSD based - the OS disables AVX512 registers save/restore by default and enables them right after the first fault. Thus querying the CPU for AVX512 OS support fails even though it works (source).

As discussed, let's submit this as-is to repair the build. I'll address the TODO in a subsequent PR.

Thanks!


[SPARK-47424][SQL]Add feature flag to enable spark local session time zone calendar in JDBC API calls

What changes were proposed in this pull request?

New config for enabling usage of calendar with spark local session time zone in getTimestamp and setTimestamp JDBC API calls.
Why are the changes needed?

It turns out that the users will see same 'string values' of timestamps as they are in remote data source only if JVM time zone and spark local session time zone are equal. If users change JVM time zone (which is possible) or spark local session time zone, then they are not going to see same results. Therefore, when calling getTimestamp and setTimestamp, calendar with spark local sesssion time zone is passed.
Does this PR introduce any user-facing change?

Yes, users can enable feature by setting spark.sql.useLocalSessionCalendar to true
How was this patch tested?

Unit tests on H2 dialect
Was this patch authored or co-authored using generative AI tooling?

No

cc @yaooqinn

Can we elaborate a bit more about the issue here？ I'm not sure whether we see a wrong string representation of a timestamp or we get/set a wrong timestamp

Can we elaborate a bit more about the issue here？ I'm not sure whether we see a wrong string representation of a timestamp or we get/set a wrong timestamp

When I mention timestamp I mean timestamp without time zone information. Let's say JVM time zone and spark local session time zone is PST. If timezone literal in remote data source is for example "2020-02-02 02:00:00" and you read it via getTimestamp JDBC API call, it will use default calendar and load some value. This read timestamp will be "2020-02-02 02:00:00-08" and when shown to user (via df.show() for example) it will be shown as "2020-02-02 02:00:00", the same as it is data source.
Now, let's say JVM time zone is PST, but spark local session time zone is UTC. Again, same timestamp will be in data source, and when read it will be "2020-02-02 02:00:00-08", but it is equal to "2020-02-02 10:00:00+00" as therefore, "2020-02-02 10:00:00" will be shown to user, which is not the same as in data source.
Keep in mind that we map NTZ timestamp from data source to TimestampType in spark (which has time zone information) and because of this, we are also reading/writing wrong values (different epochs_), but it is not the scope of this PR. In this PR, it is only fixed what user sees.

@PetarVasiljevic-DB You say about JVM time zone in PR's description, but all tests run in the same default JVM time zone. Could you, please, try to change it via withDefaultTimeZone()

Done, please note my comment on change.


Diagnostic logs

Are the diagnostic logs the same as the Diagnostics Logs in APIs Azure Monitor (APIs > All APIs > Settings > Azure Monitor)?
I couldn't find information about the APIs Azure Monitor (Diagnostic Logs) so asking in here.  Thanks.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: ecc5e84d-603c-6f88-a941-df33aad0e1d8
Version Independent ID: ae6976bb-aadd-4d40-bb62-57589265f4ff
Content: Monitor published APIs in Azure API Management
Content Source: articles/api-management/api-management-howto-use-azure-monitor.md
Service: api-management
GitHub Login: @vladvino
Microsoft Alias: apimpm

Hi @kazshi Thank for reaching out. We will review and provide an update as appropriate.

Please assign to @miaojiang.

@miaojiang Any inputs in this ?

@miaojiang Just following up again in case missed the previous communication.

I have a few requests from customers that are wanting to include payload information in the log files. Is this a possibility for the diagnostic logs?

I was directed here by KristiRyder as I had a similar question about getting payload (request/response) logs accessible through this feature.

@DixitArora-MSFT any progress here? We have another support case asking about the Azure Monitor settings under the API menu (the original post was from an earlier case from my team).

We have a specific document on how to log to Azure Application Insights here: https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-app-insights
#please-close


stable/goldpinter: Only use pullSecrets if defined in values.yaml

Is this a new chart

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

No
What this PR does / why we need it:
This was causing the DaemonSet to have an invalid key/value for imagePullSecrets
imagePullSecrets:
  - name:

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @okgolove

/ok-to-test

/ok-to-test

@okgolove do you need to do this?

/lgtm


Multiple subscripts

In previous versions of MathJax it was possible to write:
\sum_{i=1}_{i \le n}i

to get two lines below the summation sign. This does not work in the newest version. I'm not sure if this is actually a bug, or if it's just a question of undefined behaviour.
I realize that I can write:
\sum_{\substack{ i=1 \\ i \le n }}i

to get the same result, but for the sake of backwards compatability it would be nice if the first method worked.

TeX does not allow this construct, and MathJax as supposed to produce an error for this as well, but the check wasn't being performed properly, and so it was allowed through unintentionally.   This has been corrected in v2.5.  It was never intended to be allowed as valid notation, so unfortunately you have been taking advantage of a bug in MathJax that has now bee fixed.
If you have a lot of legacy code that includes this, it would be possible for you to add a TeX input jax pre-filter that would convert it to the \substack notation.

Thank you for your quick reply!
Luckily, I don't have that much legacy code using this "feature", so I will just fix it manually.


Can't click on some icons on the right

Hello!
For some reason after a recent update I can't open up Extensions and Settings menus by clicking on their icons in the toolbar. Looks like maybe some overlay (?) is blocking them from being clickable.

I can click on the recent browsing windows icon as well as on the new tab icon though.

Solved by installing the new theme release

Solved by installing new theme release.


CMake fixes and tweaks

cmake-format butchers the comments. @dominiklohmann can we avoid that this happens?

You can disable comment markup reflow completely, see cmake-format --help:
Comment Formatting:
  Override config options affecting comment formatting

  --bullet-char BULLET_CHAR
                        What character to use for bulleted lists
  --enum-char ENUM_CHAR
                        What character to use as punctuation after numerals in
                        an enumerated list
  --enable-markup [ENABLE_MARKUP]
                        enable comment markup parsing and reflow
  --first-comment-is-literal [FIRST_COMMENT_IS_LITERAL]
                        If comment markup is enabled, don't reflow the first
                        comment block in each listfile. Use this to preserve
                        formatting of your copyright/license statements.
  --literal-comment-pattern LITERAL_COMMENT_PATTERN
                        If comment markup is enabled, don't reflow any comment
                        block which matches this (regex) pattern. Default is
                        `None` (disabled).
  --fence-pattern FENCE_PATTERN
                        Regular expression to match preformat fences in
                        comments default=r'^\s*([`~]{3}[`~]*)(.*)$'
  --ruler-pattern RULER_PATTERN
                        Regular expression to match rulers in comments
                        default=r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'
  --canonicalize-hashrulers [CANONICALIZE_HASHRULERS]
                        If true, then insert a space between the first hash
                        char and remaining hash chars in a hash ruler, and
                        normalize it's length to fill the column

Not. sure why this happens here. Feel free to add a .cmake-format file to the repo, we just haven't had the need for it yet. You can run cmake-format --dump-config to get the default config and then tweak from there.

We have a .clang-format already. I've tweaked it to avoid comment reformatting.
I could not find a way to make cmake-format stop reformatting the function invocation. I've purposefully used the layout as in the documentation for find_package_handle_standard_args:
find_package_handle_standard_args(<PackageName>
  [FOUND_VAR <result-var>]
  [REQUIRED_VARS <required-var>...]
  [VERSION_VAR <version-var>]
  [HANDLE_COMPONENTS]
  [CONFIG_MODE]
  [FAIL_MESSAGE <custom-failure-message>]
  )

But our config wants one argument per line.

Just surround it with # cmake-format: off and # cmake-format: on then I'd say.

Uh, does manual disabling scale? We have so many function calls where we use the argument formatting as in the docs.
Even setting  --max-pargs-hwrap to a high value (e.g., 10) does the wrong thing, i.e., creating a line that is as long as possible:
find_package_handle_standard_args(
  CAF FOUND_VAR CAF_FOUND REQUIRED_VARS CAF_LIBRARIES CAF_INCLUDE_DIRS
  HANDLE_COMPONENTS)

For the formatting tool, all these arguments are just strings. There's no special casing for argument groups, because there is no special syntax for it in the CMake language. I'm afraid we can't "fix" this reliably. You can still do the one-off if it annoys you too much, or just keep it as expected by cmake-format.
I don't think it's worth the effort to make sure the CMake looks presentable, because CMake really isn't ever presentable at all.

I don't think it's worth the effort to make sure the CMake looks presentable, because CMake really isn't ever presentable at all.

Fair enough, I've undid my manual changes.
Now Black complains about the .cmake-format file. Is there a quick fix for this?

Now Black complains about the .cmake-format file. Is there a quick fix for this?

Run black on it, since it's just a python file. Black rightfully complains since your PR touches it, so it should be checked by CI.

@dominiklohmann Commit reworded and force-pushed.


Unable to save fork which just updates language version

Sometimes a translation/fork will be ready for approval, however be on an older language version. It is simple to fork this, and update the language version, however the editor will not allow you to save the fork unless there has been some change in the code/description. This is slightly annoying, and ideally a change in version should be enough to allow saving.

Should be fixed


The results that are submitted in the paper? is it class _accuracy or ss_accuracy?

You have submitted the 80.7 for wrn-40-2 (Teacher Model), is it class_accuracy or ss_accuracy? I got this accuracy but as a class_accuracy, but you referreing best accuracy to the ss_accuracy that is  confusing me.

Thanks for your attention! Your understanding is correct. 80.7 is top-1 class_accuracy over 100 classes, which we report in our paper.  ss_accuracy is just a reference to the performance of the self-supervised augmented task. Our final target is to improve the class_accuracy.
By the way, we refer to the best accuracy as the ss_accuracy, because we think the best ss_accuracy may encode more meaningful auxiliary self-supervised augmented knowledge in the teacher.

Thank you for such a helpful reply. Again, you have done great work. I have read it thoroughly, and it is helping out me with the concepts that I need to build for distillation.


fix merge resolution error

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (73f3b11) 79.06% compared to head (0d9fe65) 79.26%.
Report is 6 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #68      +/-   ##
==========================================
+ Coverage   79.06%   79.26%   +0.19%
==========================================
  Files          18       18
  Lines         965      974       +9
==========================================
+ Hits          763      772       +9
  Misses        202      202

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Separate notebooks appear to share state

Bug Description
Notebooks appear to share/clobber each other's state.  If I create two notebook servers they'll share the same layout, try to write to the same notebooks, etc.  It means its really easy for a user to overwrite their work or break one notebook server by using another.
To Reproduce
If I create a notebook server:
dss initialize --kubeconfig ~/.kube/config
dss create notebook1 --image=kubeflownotebookswg/jupyter-pytorch-cuda-full:latest --kubeconfig ~/.kube/config

and connect to the url, I see a fresh notebook server (starting on the splash screen).
I can create a few terminals and notebooks, and if I reconnect to the server I still see these terminals and notebooks remaining open.
If I then create a new notebook server:
dss create notebook2 --image=kubeflownotebookswg/jupyter-pytorch-cuda-full:latest --kubeconfig ~/.kube/config

and connect to the new url, I do not see the notebook splash screen but instead I start with the same configuration of open terminals and notebooks as the previous notebook server.  This is really confusing as it seems like you connected to Notebook Server 1, when you actually connected to server 2.  The new notebook server will try to continue using the notebooks of the previous server, but the kernel will be unavailable (since it is on a different machine).  The terminals will be fresh terminals running on the new notebook server (we can see what notebook server the terminals are running on by looking at the machine name in their prompt).
I think what's happening here is that notebook servers store some local data about their state (in the .jupyter folder, I think?).  When we run multiple dss notebook servers, these servers all save to the same state and clobber each others.
We might need to isolate these servers somehow, maybe keeping each of their state directories separate?
Environment
dss
Relevant Log Output
see above

Additional Context
No response

After syncing with Maciej we conclude that the best best resolution will be to

for each notebook create a separate PVC which will be mounted to home directory
have one shared pvc which will be mounted on each notebook on $HOME/shared folder

In the first version we will just have the shared pvc mounted to $HOME/shared .

We just partialy resolved it for version 1 with shared folder.


linux-20 is dead.

Type of Request
bug
Infrastructure Environment
LUCI, Github, Cocoon scheduler, Autosubmit, etc...
What is happening?
linux-20 is dead.

Steps to reproduce
Step 1:
Step 2:
..
Step n:
Expected results
I expect to see X when Y is finished.

Hello @yusuf-goog,
linux-20 has internal SSD disk drive failure, machine went offline and dead everyday.   Can I have another NUC so I can rebuild linux-20 system?  Thanks.

Please collect from my desk lcoation

Swapping out bad SSD disk drive with new SSD disk. Reinstall Ubuntu OS and rebuilding machine, linux-20 is up and running fine now.


perf: wordsmithing and improved references

repair of #109
cc @hsyl20 @unhammer

LGTM

I'll give unhammer a day, and then merge tomorrow.

lgtmt


Stopping debugger with Shift S doesn't exit cleanly

I notice that leaving a debug session with shift S key leaves nvim in a broken state.. all the debug windows close and the debugger attaches but the keybindings think I'm still debugging (eg pressing w pops up a window saying No Expression, pressing b toggles breakpoint).  If i do a GoDebug -s this fixes is.  LMK if you need a more detailed repo.

Yes, it is a bit confusing. Pushed a fix for it.

Fixed.
One more (can open a new issue if you like).. GoTest when there is a failing case, hit enter on the failure in the fix list to go to line number, get a window with red text in it expected ; found EOF rather than the source file.

Could you send the structure of test file/project? Also a screenshot of failed quickfix item as well. thanks!
I think it may be related to the folder structure.

The project is the gitignoresupport branch of: https://github.com/clarkezone/rk/tree/gitignoresupport
The test file is in the same dir as the source file.
Immediately after running tests via GoTests:

After pressing enter to goto failing line:

Thanks for reporting. It was a bug. Should have been fixed in the latest version.

Fixed! Thx!


Provider body use watch not rebuild

Describe the bug
testCountProvider body watch countViewModelProvider , the countViewModelProvider value repeat change after 10s, but
testCountProvider not rebuild;
source code :
final countViewModelProvider =
    StateNotifierProvider<_CountStateNotifier, CountData>(
        (ref) => _CountStateNotifier());

class CountData {
  final int count;
  final String msg;
  CountData({required this.count, required this.msg});

  CountData copy({int? count, String? msg}) {
    return CountData(count: count ?? this.count, msg: msg ?? this.msg);
  }

  @override
  String toString() {
    return 'count $count';
  }
}

class _CountStateNotifier extends StateNotifier<CountData> {
  final _tag = '_CountStateNotifier';

  _CountStateNotifier() : super(CountData(count: -1, msg: '-1')) {
    repeatCount();
  }

  void repeatCount() {
    Future.delayed(const Duration(milliseconds: 10000), () {
      state = state.copy(count: state.count + 1);
      repeatCount();
    });
  }

  @override
  void dispose() {
    super.dispose();
    print('$_tag dispose');
  }
}

/// **testCountProvider watch countViewModelProvider**
final testCountProvider = Provider((ref) {
  final value = ref.watch(countViewModelProvider);
  print('testCountProvider change $value');
});

///  **IMWidget**
class IMWidget extends ConsumerStatefulWidget {
  const IMWidget({Key? key}) : super(key: key);

  @override
  ConsumerState<ConsumerStatefulWidget> createState() {
    return _IMState();
  }
}

class _IMState extends ConsumerState<IMWidget> {
  @override
  void initState() {
    super.initState();
    ref.read(testCountProvider);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter architecture',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('IM'),
        ),
        body: const Text('IM'),
      ),
    );
  }
}

Nothing is listening to testCountProvider, so it technically does not have to rebuild. Try ref.watch or ref.listen in the widget instead of ref.read.

if change testCountProvider to StateProvider , it will rebuild. why ?
///change to StateProvider
final testCountProvider = StateProvider((ref) {
final value = ref.watch(countViewModelProvider);
print('testCountProvider change $value');
});

if change testCountProvider to StateProvider , it will rebuild. why ? ///change to StateProvider
final testCountProvider = StateProvider((ref) { final value = ref.watch(countViewModelProvider); print('testCountProvider change $value'); });

if change testCountProvider to StateProvider , it will rebuild. why ?
///change to StateProvider
final testCountProvider = StateProvider((ref) {
final value = ref.watch(countViewModelProvider);
print('testCountProvider change $value');
});

Nothing is listening to testCountProvider, so it technically does not have to rebuild, I agree this behavior could be confusing. Try ref.watch or ref.listen in the widget instead of ref.read.

if change testCountProvider to StateProvider , it will rebuild. why ?
///change to StateProvider
final testCountProvider = StateProvider((ref) {
final value = ref.watch(countViewModelProvider);
print('testCountProvider change $value');
});

I don't know. I know @rrousselGit was interested in changing ref.read in the widget tree to listen to providers while the widget is in widget tree which would for sure fix this. However, I agree that your example should work regardless of any future changes. My suggestion was more of a workaround than an explanation of behavior. I think this is actually a bug.

I don't know. I know @rrousselGit was interested in changing ref.read in the widget tree to listen to providers while the widget is in widget tree which would for sure fix this. However, I agree that your example should work regardless of any future changes. My suggestion was more of a workaround than an explanation of behavior. I think this is actually a bug.

as you said, difference behaviors make me confuse.

Providers that aren't listened do not rebuild.
As such this is expected.
What exactly are you trying to do here? Why would you want this provider to rebuild?

Providers that aren't listened do not rebuild. As such this is expected.
What exactly are you trying to do here? Why would you want this provider to rebuild?

I have an question why Provider cannot rebuild, but StateProvider can rebuild ？Occur Different behaviors?
I exactly want to do:

It's likely a bug due to another issue


CMake: Add travis and update lib file

Added .travis.yml config to pick this example for Travis CI build
Update mbed-os.lib to pick always the latest master
@hugueskamba @0xc0170

@evedon Could you review this PR Thanks


tf.compat.v1 warnings fixed

Is it because you use tensorflow 2.X?

Is it because you use tensorflow 2.X?

Opps sorry.... i should have used TF 1.X :)


Add Docker support

Adds support to run drainwine inside a docker container either using docker alone or using docker compose.

Sorry, I changed some parts of the build logic. The output has been moved from /build/libs to /build/dist

Fixed, my fault for building on master branch instead of develop. Is there a need to pass the disablegui flag? or is that handled if no GUI is detected? As I've ran brainwine <IP_ADDRESS> with and without it on my server with no noticeable difference.

It will automatically skip GUI creation if the platform doesn't support the Java Desktop API unless the forcegui flag is present.
So in this case it's probably fine not to pass the disablegui flag, but it doesn't hurt if you do pass it, either.

@kuroppoi  any other concerns?

I don't think so, but I do have a question.
Is there any reason to use docker run instead of docker compose up? (I've never used Docker prior to this)

I don't think so, but I do have a question. Is there any reason to use docker run instead of docker compose up? (I've never used Docker prior to this)

If someone wants to run brainwine alongside other docker containers or multiple instances, they may find configuring a compose file neater instead of running several run commands. For running brainwine only, there is no reason to choice one over the other. I prefer to debug using docker run and proper deployment using compose.

Alright, just one more thing.
docker run is causing issues for me on Windows because of $PWD.
Changing the command to the following fixes it, but I'm not sure if it causes problems on other platforms:
docker run --name "brainwine" --volume /$PWD:/data brainwine:latest

I'd also like to put the setup instructions in its own section rather than under Building, if that's alright.

Alright, just one more thing. docker run is causing issues for me on Windows because of $PWD. Changing the command to the following fixes it, but I'm not sure if it causes problems on other platforms:
docker run --name "brainwine" --volume /$PWD:/data brainwine:latest

I'd also like to put the setup instructions in its own section rather than under Building, if that's alright.

/$PWD seems to work fine but ${PWD} and $(pwd) seem to be the proper cross platform options.
I moved the setup instructions to its own server setup section.

I've added jar.Dockerfile, this file can just build the brainwine.jar without setting up a server. Dockerfile file builds the project and sets up a server.

It seems a bit overkill to build it this way, and running the jar requires Java anyway.

I've changed/simplified the setup instructions a bit (sorry I'm very picky! 🤣)
Does it look okay like this or should anything be added?

No worries, looks good to me!

Awesome, thanks!


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-dependencies-1.x" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 1017

Questions ?
Please refer to the Backport tool documentation


Add some progress report to analyser info messages

Big projects can take hours to finish, and it would be nice to know at least approximately how much stuff there is left to analyse.
As a first step I was thinking about a simple (ninja style) indicator on how many steps are left from the analysis process.
Something like:
[...]
[INFO] - [34/705] clangsa analyzed A.cpp successfully.
[INFO] - [35/705] clangsa analyzed B.cpp successfully.
[INFO] - [36/705] clangsa analyzed C.cpp successfully.
[INFO] - [37/705] clangsa analyzed D.cpp successfully.
[INFO] - [38/705] clangsa analyzed E.cpp successfully.
[INFO] - [39/705] clangsa analyzed F.cpp successfully.
[...]

wdyt?

+1 :) Good idea!


Flaky tests using whenReady

We're using whenReady to test code that returns Future. We use CircleCI to run the tests. We're seeing some tests fail intermittently (several times a day), with the following message:
A timeout occurred waiting for a future to complete. Queried 22 times, sleeping 15 milliseconds
between each query

The PatienceConfig is set to
PatienceConfig(Span(1, Seconds), Span(15, Millis))

The exact numbers change each time, but consistently # of queries x interval < timeout. In the example above, 22 x 15 = 330ms which is much less than the configured timeout of 1s.
We're trying to figure out what's going on, any help would be much appreciated.

I've experienced a similar issue, but on a local Jenkins instance. Even on my laptop, while it doesn't timeout, the difference in time taken is orders of magnitude different running the same test twice back to back.
Sometimes when running the first test that is using Futures and using whenReady with Scala's global context, the test takes longer than the default 10*15ms = 150ms wait that whenReady has by default and fails. While I can override the waiting time on every test using whenReady to avoid this, this seems less than ideal.
If I understand correctly, time-taking begins here and the Future's internal value is first accessed here.
I suspected the global context lazy val's initialization of being the culprit, but discussion in the Scala Gitter chat seems to show that even on first run of a trivial operation proof of concept in a Future, execution takes roughly 6ms. Another potential culprit is GC, which was pointed out to take on the order of 100ms. Yet another might be resource contention (CPU etc.)
Concretely:
~210ms - worst case (test fails)
~110ms - average case (test passes since under 150ms)
~20ms - best case
I'll see if I can dig into this further, but I'm also unsure what exactly the culprit here is.

For reference via @retronym in Scala Gitter chat, the test code used to get the ~6ms time for a trivial Future run.
object Test {
  def now = System.nanoTime
  def timedMs[T](t: => T): (T, Double) = { val start = now; val result = t; (result, (now - start).toDouble / 1000 / 1000) }

  def main(args: Array[String]): Unit = {
    import scala.concurrent.ExecutionContext.Implicits.global
    import scala.concurrent._, duration._

    val (_, timeTotal) = timedMs {
      val (future, time) = timedMs(Future("foo".reverse))
      println(time)
      Await.result(future, 1.minute)
    }
    println(timeTotal)
  }
}

Running a simple test with ScalaTest's whenReady yielded:
76~100ms - worst case (when running alone)
3~5ms       - best case (when running as second test)
class MySpec extends FunSpec with Matchers with ScalaFutures {
  import scala.concurrent.ExecutionContext.Implicits.global

  describe("test") {
    it("should work") {
      whenReady(Future("foo".reverse)) {
        _ should be("oof")
      }
    }

    it("should work2") {
      whenReady(Future("foo".reverse)) {
        _ should be("oof")
      }
    }
  }
}

I'm seeing this too. sbt test on entire codebase, all is fine. Run a testOnly using whenReady in isolation I get
[info] - should return not found if not found *** FAILED *** [info]   A timeout occurred waiting for a future to complete. Queried 12 times, sleeping 15 milliseconds between each query.

I have similar problems where the implicitly defined PatienceConfig is not being picked up.  While debugging, I found that whenReady() requires an implicit ScalaFutures.PatienceConfig, but I was trying to provide it an implicit MyUnitTest.PatienceConfig.  Because the types didn't match, it wasn't using the patience config I provided.
I think the problem is that class PatienceConfig is defined within a trait, so when mixing that trait into different classes you get different path-dependent types.

This is still an issue in version 3.0.1 of ScalaTest.

How are we resolving this? Using AsyncFlatSpec?

I rolled my own implementation until it is fixed:
https://github.com/splink/pagelets/commit/13c962a6fee9c5af053245381e63cebcabaa6f62

Just had this problem when doing some Play framework testing. Solved them problem by doing this:

implicit val defaultPatience =
PatienceConfig(timeout = Span(5, Seconds), interval = Span(500, Millis))

Which I found at: http://blog.abhinav.ca/blog/2014/09/08/unit-testing-futures-with-scalatest/

@kostaskougios Your explanation makes a lot of sense. A cold JVM can easily run into a hundreds-of-millis long hiccup. When this happens, the message Queried 1 times, sleeping 15 milliseconds between each query becomes misleading—It's neglecting to mention queries missed due to stop-the-world pauses.
A more useful message would be: Queried 1 times over 5 seconds, sleeping at least 15 milliseconds between each query.
Letting us know what was the longest pause will help us realize when stop-the-world is likely, e.g.: Queried 1 times over 500 milliseconds, sleeping at least 15 milliseconds between each query  (longest sleep: 555 milliseconds). Seeing something like this can hint at (e.g.) a classloading issue. For example: play-json and kamon both cause significant pauses when first encountered on a cold JVM, but can be easily preloaded (e.g. Kamon.config() on a base trait).

I fixed this issue in my tests by mixing the IntegrationPatience trait into my test classes. These values are appropriate for integration testing.

This seems to happen if future is not able to complete within a time limit.
Solved it by increasing timeout in
implicit val defaultPatience: PatienceConfig = PatienceConfig(timeout = Span(10, Seconds), interval = Span(1000, Millis))

Is there any solution apart from increasing timeout?


Trigger downstream CI based on file change

I tried to set-up the CI jobs so that downstream workflows are executed based on file change.
E.g.: The filter communities workflow should be triggered when the all_tools.tsv file is changed, probably by the fetch_all_tools.yaml workflow, that is executed weekly.
But so far the workflow is not executed automatically. The workflow itself works fine, e.g. when triggered via the workflow_dispatch option, but it is not automatically triggered by file change.

@nsoranzo do you have an idea about this

Seems like one needs to specify a branch for this
  push:
    paths:
    - 'results/all_tools.tsv'
    branches: ["main"]

works

In fact, it does not work, it seems that CIs that interact with github and use the

Y


[otbn, dv] Negative Out of Bound Address

This commit adds a coverage point for negative out of bound address
that could be calculated in lw/sw instructions
Signed-off-by: Canberk Topal<EMAIL_ADDRESS>

Looks good, but could you also add this to hw/ip/otbn/doc/dv/index.md? The idea is that that document should have a (human-readable-ish) list of all the functional coverage points. We may as well get credit for everything we add :-)


Request token endpoint has incorrect example

The spec says a request to https://matrix.org/_matrix/client/r0/account/password/email/requestToken should return:
{
  "sid": "123abc"
}

Synapse returns:
{
"success": true,
"sid": "xxxx"
}

Those are not the same.

they are not the same, but that's not necessarily the fault of the spec. Servers can add additional fields to their responses whilst remaining true to the spec...

Unless success is proven to be used by something, I'm thinking this can be closed as won't fix.

It is not used by Riot, and afaik no other client allows a password reset.
https://github.com/matrix-org/matrix-react-sdk/blob/19edc5c5a4dd3f807dae2d15e0476ef105ca9344/src/PasswordReset.js#L71

Closing as just a weird thing synapse does then.


ADT: eng : Bicep file needs to be fixed to adapt to guidelines of engineering system.

Just renaming the bicep file so it won't be picked up by the pipeline until the file is fixed.

/azp run net - digitaltwins - tests


Feature/audio analysis

Description
We have finished the development of the audio chart, but the image chart hasn't started yet.
besides，there are some problems to be solved in Image class.
Closes: #257
Closes: #121

now you can use “Audio” class, and the front end is basically completed. @xiaolin199912


No hands showing

When i start the game no controllers or hands show up but when i use the joystick i am able to navigate some of the menu, i managed to get into a save but no hands where showing and my controllers werent appearing in the game.

im using the legacy version of the game with an oculus quest 2 plugged into my pc

The legacy version unfortunately is not supported by the mod.

ok


Fix mqbcoding.esd script paths

Major flaw in current Toolbox version found!
Current mqbcoding.esd refers to scripts in the path:
/net/mmx/mnt/app/eso/bin/PhoneCustomer/default
Build in script copy_phone_customer.sh, which is used from toolbox to import additional scripts and CHMODs them, copies everything from:
/fs/sda0/Phone/Apps/0/default to /net/mmx/mnt/app/eso/bin/PhoneCustomer
So all scripts are in the wrong directory to be used with current mqbconding.esd!
The copy script is available on the unit from stock, we shouldn't / can't change it. mqbcoding.esd needs to be changed so that all scripts will be called from the right folder and will also work again.
==> This fixed my Execution failes: java.io.IOException: Unable to start programm error mentioned above.
I will fix current mqbcoding.esd because for new users it is broken.
Originally posted by @olli991 in https://github.com/jilleb/mib2-toolbox/issues/122#issuecomment-766107899

Wow that's a major flaw indeed 😅
The weird thing is.... It's working on my test units even when installing from scratch. Sometimes the phone customer script copies to the wrong folder and other times to right

Wow that's a major flaw indeed 😅
The weird thing is.... It's working on my test units even when installing from scratch. Sometimes the phone customer script copies to the wrong folder and other times to right

Hmm thats interesting. Maybe this is different in firmwares? I'm working on Seat 1447 atm. I connected via telnet and viewed the content of the copy_phone_customer.sh

Hmm thats interesting. Maybe this is different in firmwares? I'm working on Seat 1447 atm. I connected via telnet and viewed the content of the copy_phone_customer.sh

Using 1447 as well, but originally started development on VW firmware. I think it has something to do with variables being set or so. Most of the times whenever I got the error that a script couldn't be run, I ran the script 4 times in a row...and it worked 😅😂

Using 1447 as well, but originally started development on VW firmware. I think it has something to do with variables being set or so. Most of the times whenever I got the error that a script couldn't be run, I ran the script 4 times in a row...and it worked 😅😂

Maybe we need help here to dertime if the copy_phone_customer.sh scripts work different on other firmwares. I can only check Seat 1447 right now.

Maybe we need help here to dertime if the copy_phone_customer.sh scripts work different on other firmwares. I can only check Seat 1447 right now.

Checked my test unit, it has all scripts in both folders, without having changed anything in the mean time 😂

Checked my test unit, it has all scripts in both folders, without having changed anything in the mean time 😂

Maybe we need help here to dertime if the copy_phone_customer.sh scripts work different on other firmwares. I can only check Seat 1447 right now.

I had a look at most common vw, Skoda and seat distributions. All had the same script.

Maybe we need help here to dertime if the copy_phone_customer.sh scripts work different on other firmwares. I can only check Seat 1447 right now.

I had a look at most common vw, Skoda and seat distributions. All had the same script.

Checked my test unit, it has all scripts in both folders, without having changed anything in the mean time 😂

yeah mine too but I copied them with my news install method try to /default because I worked on the base of current mqbcoding.esd ...

Checked my test unit, it has all scripts in both folders, without having changed anything in the mean time 😂

yeah mine too but I copied them with my news install method try to /default because I worked on the base of current mqbcoding.esd ...

Scripts can be anywhere if they are at least CHMOD 777. I changed this for the /default folder and now current esd works because it looks there. But implemented Get new scripts button doesn`t do anything because it CHMODs in folder above and isn't recursive.

Scripts can be anywhere if they are at least CHMOD 777. I changed this for the /default folder and now current esd works because it looks there. But implemented Get new scripts button doesn`t do anything because it CHMODs in folder above and isn't recursive.

Hmmm I looked back into first commit here. Toolbox was always the way that it looked to /default and it works back than like this....
Seems to be that it somehow copies the files sometime to default and sometimes not?! I can't explain that to me.

Hmmm I looked back into first commit here. Toolbox was always the way that it looked to /default and it works back than like this....
Seems to be that it somehow copies the files sometime to default and sometimes not?! I can't explain that to me.

haha, yes exactly my point. This is the one thing that I've kept the same since the beginning and could never explain why it sometimes worked and sometimes didn't.  Probably some path variable being set somewhere.

haha, yes exactly my point. This is the one thing that I've kept the same since the beginning and could never explain why it sometimes worked and sometimes didn't.  Probably some path variable being set somewhere.

Okay so I tried to reproduce it but I can't.
I went into PhoneCustomer dir and delted all *.sh files. I also deleted all *.sh files in PhoneCustomer/default.
I didn't delete the default dir because it seems to have also special CHMOD.
After that was clean i rebooted the unit twice, went into GreenMenu and performed Get new scripts from SD. I checked via Telnet and all files where written to PhoneCustomer/default. Rebooted several times and also deleted the files several times. They always went into PhoneCustomer/default. I don't know where or when the files will be moved but one thing is clear: esd don't need to be changed. Everthing seems good now.
Will close this issue.
Sideeffect. To clear all files I made e script, we could maybe use it als general cleanup if my coding isn't completly wrong.
Next steps ins #50
#!/bin/sh

#Cleanup all MQB Toolbox scripts

mount -uw /mnt/app

rm -r /mnt/app/eso/bin/PhoneCustomer/*.sh
rm -r /mnt/app/eso/bin/PhoneCustomer/default/*.sh

mount -ur /mnt/app

exit 0

Okay so I tried to reproduce it but I can't.
I went into PhoneCustomer dir and delted all *.sh files. I also deleted all *.sh files in PhoneCustomer/default.
I didn't delete the default dir because it seems to have also special CHMOD.
After that was clean i rebooted the unit twice, went into GreenMenu and performed Get new scripts from SD. I checked via Telnet and all files where written to PhoneCustomer/default. Rebooted several times and also deleted the files several times. They always went into PhoneCustomer/default. I don't know where or when the files will be moved but one thing is clear: esd don't need to be changed. Everthing seems good now.
Will close this issue.
Sideeffect. To clear all files I made e script, we could maybe use it als general cleanup if my coding isn't completly wrong.
Next steps ins #50
#!/bin/sh

#Cleanup all MQB Toolbox scripts

mount -uw /mnt/app

rm -r /mnt/app/eso/bin/PhoneCustomer/*.sh
rm -r /mnt/app/eso/bin/PhoneCustomer/default/*.sh

mount -ur /mnt/app

exit 0

Good research 👍🏼

Good research 👍🏼


DTLS1.3/TLS1.3: Fix max_fragment_length extension parsing when using PSK

The issue: https://github.com/openssl/openssl/issues/18121 appeared in the DTLS test cases when enabling DTLS 1.3.
I've cherry-picked relevant bits from https://github.com/openssl/openssl/pull/18130.
This PR is dependent on https://github.com/openssl/openssl/pull/24426 for a binder calculation fix.
Checklist

[x] tests are added or updated

@t8m @mattcaswell This is ready for review.

From a recent discussion on the IETF TLSWG list, it appears that we're much too strict in our processing of the (now deprecated) maximum fragment length extension. What we should do is:

If we're resuming a session, ignore all RFC6066 extensions other than perhaps SNI, using the values from the resumed session. Any conflicting or missing values in the client HELLO don't matter.
If we're doing a full handshake, we use the data from the client HELLO, and even if there were a candidate session we chose to not resume, the extensions in effect at that point don't matter.

So unless I'm misreading the context/content of this PR, it seems to me that instead of looking to make resumption detection more precise, and then reject differences in extensions in fewer cases, we should NEVER reject differences.

From a recent discussion on the IETF TLSWG list, it appears that we're much too strict in our processing of the (now deprecated) maximum fragment length extension. What we should do is:

Link to the TLSWG thread: https://mailarchive.ietf.org/arch/msg/tls/IDmCa7UcoKpMyxG59FKbGG5g5C0/

@vdukhovni

So unless I'm misreading the context/content of this PR, it seems to me that instead of looking to make resumption detection more precise, and then reject differences in extensions in fewer cases, we should NEVER reject differences.

Hmm. I'm not sure I understand you correctly so I want to add some context.
The issue that this PR is trying to fix is that the MaxFragmentLen extension does not work when using TLS1.3 PSK ciphersuites. The reason for this is that s->hit is set not only for session resumptions but also for psk sessions.
My understanding is that PSK is not the same as session resumption.
So instead of relying on checking s->hit instead we initialize the s->session->ext.max_fragment_len_mode to unspecified and set it to the previous sessions value if we are resuming.
I'm not sure if you propose that this logic needs updating?
@nhorman

Speaking very naively here, but, gien that max_fragment_len_mode gets set based on the parsing of extensions, doesn't control flow through this function get altered based on the order in which those extensions are processed? Is that the intent, or is it irrelevant?

That's a good point. It made me aware that the check
    if (org_mfl_mode != s->session->ext.max_fragment_len_mode
            && org_mfl_mode != TLSEXT_max_fragment_length_UNSPECIFIED) {
        if (s->session->ext.max_fragment_len_mode == TLSEXT_max_fragment_length_UNSPECIFIED) {
            s->session->ext.max_fragment_len_mode = org_mfl_mode;
        } else {
            SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER,
                     SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH);
            goto err;
        }
    }

Was performed before extension parsing. I've made a fixup for that part.

My point is that we also seem to be rejecting new client hello values for the extension, when a different value exists from a resumed session. Perhaps that's not logic you're intending to change, but it strongly overlaps with this PR. I'd like to see those checks gone. At which point your PR should be very different, because we accept the new value if not resuming (including a non-resumption PSK) and ignore it when resuming.

..., because we accept the new value if not resuming (including a non-resumption PSK) and ignore it when resuming.

I get it now! I'll make a fix for this.

@vdukhovni Please let me know if this is in line with your thoughts :)

[ WIth some notable help from @mattcaswell, I believe I've arrived at a better understanding of the extension processing control flow. So with that I'd like to propose some correction and simplification ]

There is no need to look at renegotiation, this either performs a resumption (abbreviated renegotiate) or a full handshake, and the fact that it happened as part of renegotiation is not material, all that matters is whether we end up with a new session or not.
More importantly, the code just below your proposed (but will not be needed):if (s->session != NULL)
    org_mfl_mode = s->session->ext.max_fragment_len_mode;

is where any session resumption takes place, and all further extension processing will take place in the context of the resumed session. That session will have MFL != UNSPECIFIED if resumed, and == UNSPECIFIED if new.  So all that needs to happen is that the MFL is used if and only if still == UNSPECIFIED. Then in final (as in your PR) it is set to DISABLED if still unspecified.

The PR then becomes simpler still!

@vdukhovni
Just to be sure:
So effectively what you are saying is:
If s->session->ext.max_fragment_len_mode == TLSEXT_max_fragment_length_UNSPECIFIED in tls_parse_ctos_maxfragmentlen() then we are NOT doing resumption. Else we are doing a resumption?
I've pushed a fix which assumes the above.

At this point, please squash the fixups and rebase. The changes to the SCTP assertion comment are perhaps unrelated to this PR, and could be dropped. With that, we should be ready to merge.

At this point, please squash the fixups and rebase.

It was my understanding that your merge process did --autosquash?

This fix should better be push to master branch, IMHO ?

This fix should better be push to master branch, IMHO ?

I'd like the feature/dtls-1.3 branch to be rebased after merging it to master in that case

Once this PR has the necessary approvals, we can merge it into master, then rebasing the feature branch makes sense, and is perhaps good to do periodically anyway, to limit divergence. Not sure who does that, @mattcaswell may know the process.

At this point, please squash the fixups and rebase.

It was my understanding that your merge process did --autosquash?

Any comment on the SCTP comment tweak? Is it intended to be part of this PR, or did it sneak in by accident?

Any comment on the SCTP comment tweak? Is it intended to be part of this PR, or did it sneak in by accident?

It is intentional. The CI fails (on feature/dtls-1.3 branch) if it is left out.
See https://github.com/openssl/openssl/pull/24513#discussion_r1645379193

Any comment on the SCTP comment tweak? Is it intended to be part of this PR, or did it sneak in by accident?

It is intentional. The CI fails (on feature/dtls-1.3 branch) if it is left out. See #24513 (comment)

Ok then, justing waiting for final approvals, merge to master and rebase...

Please drop the SCTP change (and move to a different PR) - and I will approve this.

Once this PR has the necessary approvals, we can merge it into master, then rebasing the feature branch makes sense, and is perhaps good to do periodically anyway, to limit divergence. Not sure who does that, @mattcaswell may know the process.

I can do that. Someone please ping me once this is merged to remind me!

@mattcaswell @vdukhovni Updated to target master

Is this something that should be considered as a bug fix and eligible for backport to stable branches?

Is this something that should be considered as a bug fix and eligible for backport to stable branches?

It fixes #18121 - so yes.

So this needs to be rebased onto master, rather than the dtls feature branch. Who will do that?

Reworded the commit message and merged to all the active branches. Thank you for your contribution.

I can do that. Someone please ping me once this is merged to remind me!

@mattcaswell merged now please remember to rebase feature/dtls-1.3


Include extra.groupName on all events

As group ironmen it would be useful to include extra.groupName on all events, firstly to be able to format embeds/messages to include the group name (our discord has 3 group irons in it) and secondly for the reason I address below (caching the value as early as possible). Hopefully that doesn't add much overhead to the events?
As an aside, the GROUP_STORAGE event does not always emit the extra.groupName, sometimes it comes through as undefined. I have been able to recreate it only rarely when first booting the game, and immediately using the storage, typically for withdraw events. I tried a number of methods, but I'm unable to re-create. I also only have internal API POST logs, which simply say undefined, I have no client logs.
I've catered my DB to cache and store users + groups in tables to use the cached value instead of the groupName variable; but thought you should know in case you can spot an easy fix.

For the missing group names, if it's not an immediate transaction upon login (before jagex has sent the client the group name), you might have users that disabled the Include Group Name config option.

Most likely the former, as suspected something to do with the initial load of the client. They both confirm it is ticked when I asked to review their config, and was only happening 2/10 times.

Thanks for checking on that - on our end it's nontrivial to delay storage notifications until the group name is available (especially if we decide to include this field across all notifiers) so I would continue to use your cache workaround. Users could also click on the Grouping interface to display the group name (which would ensure the server has sent the client the group name) before making shared storage transactions (but this can be tedious for users)
Nonetheless, I'll talk to the other maintainers about your feature request


Refactor gas calculator to move oparations and precompiled costs out

Gas Calculator currently has all gas calculations locked up in its interface. The majority of all calls are single use calls in operations and precompiled contracts. This makes it difficult to create a "mix&match" test fork including a base fork and select EIPs.
To fix this all operations and precompiled contracts will handle gas calculations themselves. Operations that refer to base tier costs or memory storage costing will still rely on GasCalculator for those parts. Intrinsic transaction cost will continue to be use the GasCalculator.
In the interim, all new operations and precompiled contracts, as well as updates to existing ones, should use the new pattern where gas is calculated in the Operation or PrecompiledContract class.

Seems like we were able to handle the devnets without needing to bring in specific EIPs so closing for now.


SSH permission denied despite having ssh access

Hey, having a weird bug trying to use Colmena to apply to a node in my AWS VPC.
sudo colmena apply --impure --on prefect
[INFO ] Using flake: path:/home/ryan/infra
[INFO ] Enumerating nodes...
[INFO ] Selected 1 out of 3 hosts.
        ❌ 8s Failed: Child process exited with error code: 1
prefect ✅ 7s Evaluated prefect
prefect ❌ 0s Build failed: Child process exited with error code: 1
[ERROR] Failed to complete requested operation - Last 1 lines of logs:
[ERROR]  failure) Child process exited with error code: 1
[ERROR] Failed to build prefect - Last 6 lines of logs:
[ERROR]  created)
[ERROR]    state) Running
[ERROR]   stderr) warning: The interpretation of store paths arguments ending in `.drv` recently changed. If this command is now failing try again with '/nix/store/z3d18zv3pr26b6j7zdpg1na8qwa9844q-nixos-system-prefect-24.11pre-git.drv^*'
<EMAIL_ADDRESS>Permission denied (publickey).
error: failed to start SSH connection to<EMAIL_ADDRESS>[ERROR]  failure) Child process exited with error code: 1
[ERROR] -----
[ERROR] Operation failed with error: Child process exited with error code: 1
Hint: Backtrace available - Use `RUST_BACKTRACE=1` environment variable to display a backtrace
error: Recipe `colmena-apply-remote` failed on line 33 with exit code 1

[ryan@houston:~/infra]$ ssh<EMAIL_ADDRESS>Last login: Fri Jul  5 14:17:13 2024 from xxx.xx.xx.xxx

[ryan@prefect:~]$ ^C

[ryan@prefect:~]$ doggo xxx.xx.xx.xxx
The program 'doggo' is not in your PATH. You can make it available in an
ephemeral shell by typing:
  nix-shell -p doggo

[ryan@prefect:~]$ nix-shell -p doggo

[nix-shell:~]$ doggo xxx.xx.xx.xxx
NAME            TYPE    CLASS   TTL     ADDRESS         NAMESERVER
xxx.xx.xx.xxx.  A       IN      0s      xxx.xx.xx.xxx   xxx.xx.xx.xxx

not seeing any bugs about this or anything in the docs, apologies if I missed anything obvious.
If it helps, I am currently ssh'd onto a jump box of sorts, using ssh -A to forward my identity agent.  So perhaps Colmena can't handle this case, though I'm not sure what the path forward is if that is the case.

I'm running into this... how did you solve it?

for me, i had to stop running my commands as root.  because it was trying to use my root SSH key, instead of the agent key.


Changes to the way Egardia server works.

Implemented some changes to the way Egardia server works - egardiaserver port number is now 52010.

Breaking changes:
The Egardia now uses port 52010 instead of 85.


[api-docs] Move bulk overwrite global cmds endpoint above get guild cmds endpoint

A new commit was made into the api-docs repo. This issue was created automatically. Need to review if we made any change to the library for this commit.
https://github.com/discord/discord-api-docs/commit/1550f9a00cceed38a9897ed7e2769629d85f920b

ncn


Mask input to EfficientSam models

Hello,
First of all congrats on a great job.
I am playing around with your models, trying to get the mask input prompts to work and I have not been able to get good results.
I am using resized masks. First I resize the long side to 256 and then pad the bottom right of the image, I am following the approach of the following issue on the original SAM https://github.com/facebookresearch/segment-anything/issues/169
What am I doing wrong?
Thanks a lot for your help!
CArlos

Have you solved this problem? I think their model do not support masks as prompt.

Nope, probably it was not trained with mask prompts. SAme for negative point prompts.
The best approach is to sample random points from the mask evaluate several times and take a mean or the one with best certainty.


Support iOS Cloud Photo Library

https://github.com/CaiJingLong/flutter_photo/issues/6#issue-370100540

see #14


Issue with /docs/tutorials/stateful-application/zookeeper/

This is a...

[x] Feature Request
[ ] Bug Report

Problem:
This is an excellent tutorial!
But it is complex to get Zookeeper running because the configuration assumes v1beta1 PodDisruptionBudget and StatefulSets and these caused me challenges getting it to work on the current GKE. I also had problems that I think may just be user-error trying this on DigitalOcean too (K8s 1.5.1).
Proposed Solution:
The solution for me appears trivially to offer the reader with older clusters an alternative configuration using v1alpha1 and PetSets.
I also broke the "all up" configuration yaml into one file with everything except the PetSet and another file with the PetSet. Creating these one after the other appeared to more consistently succeed than trying to use the combination config.
Page to Update:
http://kubernetes.io/...

Attn: @kow3ns


Describe how to query without reference bases

The spec requires specifying referenceBases and alternateBases. Some beacons don't store reference bases. Is this a case that should be supported by the spec? If so, should we consider making the parameter optional?

+1
Miro Cupak wrote:

The spec requires specifying |referenceBases| and |alternateBases|.
Some beacons don't store reference bases. Is this a case that should
be supported by the spec? If so, should we consider making the
parameter optional?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ga4gh/beacon-team/issues/59, or mute the thread
https://github.com/notifications/unsubscribe-auth/AI_EVFL0pGTJnWKnOuuYwRiAkesspWkRks5qZ6KpgaJpZM4JWe8v.

+1

+1
Hi Miro,
Thanks for sparing your time at GA4GH 4th plenary meeting.
Nobutaka

+1

+1 to include this in v0.4

This proposal was discussed during the workshop yesterday and rejected. Reference bases remain a mandatory parameter as it is easy to fetch the reference for beacons that don't store it in the database directly.

But not for structural, anything with a considerable size. So no reference bases if one of the "end" parameters is specified.
Michael.

On 24 May 2017, at 17:48, Miro Cupak<EMAIL_ADDRESS>wrote:
This proposal was discussed during the workshop yesterday and rejected. Reference bases remain a mandatory parameter as it is easy to fetch the reference for beacons that don't store it in the database directly.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/ga4gh/beacon-team/issues/59#issuecomment-303766269, or mute the thread https://github.com/notifications/unsubscribe-auth/AApM1rFmOXSwd9xKgCSLalcshaTYC7dsks5r9FFFgaJpZM4JWe8v.

And what about a 3 base deletion?
Where do we draw the line?
Could be easier just to make it always optional?
Tony
Michael Baudis wrote:

But not for structural, anything with a considerable size. So no
reference bases if one of the "end" parameters is specified.
Michael.

On 24 May 2017, at 17:48, Miro Cupak<EMAIL_ADDRESS>wrote:
This proposal was discussed during the workshop yesterday and
rejected. Reference bases remain a mandatory parameter as it is easy
to fetch the reference for beacons that don't store it in the database
directly.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ga4gh/beacon-team/issues/59#issuecomment-303766269,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AApM1rFmOXSwd9xKgCSLalcshaTYC7dsks5r9FFFgaJpZM4JWe8v.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ga4gh/beacon-team/issues/59#issuecomment-303767053,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AI_EVJoq9peCC3zzfayo9yEjswudA0xCks5r9FHdgaJpZM4JWe8v.

@antbro I think the "if one of the end" positions makes this explicit. I'm anyway for optional, but this seems a good solution - if you specify an end, you fulfil a specific requirement.

Hi Michael
We have to two things to consider...

the 'Reference Allele Sequence' and
the fuzziness of the region we're searching for it in

Whether or not we have to specify the ref allele sequence 'Reference
Allele Sequence' is challenged by the fact that it will be easy for
SNPs, harder for indels, and impossible for SVs. So my question was how
we know when we have to include a 'Reference Allele Sequence'
I do not understand why this is influenced by (or guided by) whether or
not we are searching within a precise start-end region or a fuzzy region
T
Michael Baudis wrote:

@antbro https://github.com/antbro I think the "if one of the end"
positions makes this explicit. I'm anyway for optional, but this seems
a good solution - if you specify an end, you fulfil a specific
requirement.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ga4gh/beacon-team/issues/59#issuecomment-303787956,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AI_EVKXoIC882mdS2K1AKRO1cg-00qGNks5r9GLHgaJpZM4JWe8v.

I do not understand why this is influenced by (or guided by) whether or
not we are searching within a precise start-end region or a fuzzy region

The "if end, then no ref needed..." proposal is independent of fuzziness (aka imprecision ...). It is just "you provide the sequence being altered, OR you give the coordinates".
And if end == start, you solve the reference requirement in a sneaky but explicit way even for single bases.
So, while I understand the specification of reference_bases for single replacements, and understand the current use for small dels (ref >> alt; e.g. ref ATCGTA, alt A == deletion of 5 bases), I'm not particularly fond of it; but there are sensible ways to query around this if implementing the "if not ref than end else fail" paradigm.
(I'm the mediator here, right?)

@mcupak Re-opening. There was general consensus before to make reference_bases optional, so this needs explanation.

This proposal was discussed during the workshop yesterday and rejected. Reference bases remain a mandatory parameter as it is easy to fetch the reference for beacons that don't store it in the database directly.

Reference bases have to be optional for imprecise and range queries, and per se only apply to SNV/small indels. So they only are specified when

an exact position is being queried
alternate_bases are being provided

In summary this needs a documentation about these conditional interpretations.

Closing this, since in documentation now "N" allele documented as permitted value for unknown, which solves this (if interpreted as "any").


Fixing "No exported functions in windows dll" issue

Patch is related to issue https://github.com/cwida/duckdb/issues/934
This patch only exposes the C API of duckdb via DLL

Looks great, thank you. Will merge once tests pass.

Nevermind the R OSX fix its a bit flaky. I restarted it.

DUCKDBCALL is for exporting function pointers if they get added to the C API in the future


ActionMacro: support format

Pull Request Test Coverage Report for Build<PHONE_NUMBER>7
Details

2 of 4 (50.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.004%) to 34.692%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

action.go
2
4
50.0%

Totals

Change from base Build<PHONE_NUMBER>2:
-0.004%

Covered Lines:
434

Relevant Lines:
1251

💛  - Coveralls


feature: add a completion list before activation

Did you check the docs?

[X] I have read all the tokyonight.nvim docs

Is your feature request related to a problem? Please describe.
By using lazy, I have installed tokyonight, but it is not used by default.
I can switch to tokyonight by using the 'colorscheme' command.
However, I am experiecing a small problem; When I do colorscheme t, tokyonight is not in the list.
Once I run 'colorscheme tokyonight', then (until quit nvim) tokyonight-day, -moon, -night, and -storm are in the colorscheme candidates.
Is it difficult to make tokyonight-* a candidate for completion without running colorscheme tokyonight?
FYI, dracula, and nightfox can do this.
Describe the solution you'd like
Before running 'colorscheme tokyonight', tokyonight-* are list in getcompletion('', 'color')
Describe alternatives you've considered
Sorry, I have no idea about alternatives.
Additional context
No response

that's because you lazy-load TN. Just dont do that

As i said, you need to load the plugin in order to have the completion. No need to load the colorscheme, just the plugin.

Did you even read what I said?? You don't need to load the colorscheme. Just make sure the plugin is not lazy-loaded.
The tokyonight plugins has to be loaded so that it's colors directory is added to the packpath.
That's the same for every colorscheme. Completion for colorscheme's in Neovim just lists all files under all the loaded color directories.
I also made lazy.nvim, so trust me, I know what I'm saying.

Just use what is mentioned in the installation instructions. https://github.com/folke/tokyonight.nvim#-installation
I don't know how I can make it more clear. It's literally there.


Powerline WLAN Repeater Support (1260E)

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
i add a FRTIZ!Powerline 1260E to the config but it does not work
"FRITZ!Powerline 1260E": {
"disable": false,
"ip": "<IP_ADDRESS>",
"port": 49000,
"username": "pi",
"password": "********",
"led": true,
"wifi": {
"2.4ghz": true,
"5ghz": true,
"guest": false
}
}
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
her is the error from the homebridge log
[2018-7-12 11:29:24] [FritzBox] [ERROR] FRITZ!Powerline 1260E: An error occured by getting device state!
Jul 12 11:29:24 MiniServer homebridge[7530]: [2018-7-12 11:29:24] [FritzBox] [ERROR] {
Jul 12 11:29:24 MiniServer homebridge[7530]:     "errorCode": "ESOCKETTIMEDOUT",
Jul 12 11:29:24 MiniServer homebridge[7530]:     "serviceType": "urn:dslforum-org:service:WLANConfiguration:1",
Jul 12 11:29:24 MiniServer homebridge[7530]:     "action": "GetInfo",
Jul 12 11:29:24 MiniServer homebridge[7530]:     "device": "FRITZ!Powerline 1260E",
Jul 12 11:29:24 MiniServer homebridge[7530]:     "host": "<IP_ADDRESS>"
Jul 12 11:29:24 MiniServer homebridge[7530]: }

should be fixed with latest version