[WIP] Cleanup

Hi @rmcaixeta, I've started to clean up the package for heavy use with students next quarter. Would you have some time tomorrow or over the weekend to clarify what some of the functions are doing? The plan is to improve readability before fixing bugs.

[x] desurvey
[ ] composite
[ ] tests
[x] docs

Fixes #7

Codecov Report

Merging #15 (4defe9d) into master (d57fa99) will increase coverage by 5.37%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #15      +/-   ##
==========================================
+ Coverage   93.28%   98.66%   +5.37%
==========================================
  Files           5        4       -1
  Lines         298      225      -73
==========================================
- Hits          278      222      -56
+ Misses         20        3      -17

Impacted Files
Coverage Δ

src/compositing.jl
100.00% <100.00%> (ø)

src/definitions.jl
100.00% <100.00%> (+69.56%)
:arrow_up:

src/desurvey.jl
97.08% <100.00%> (-0.06%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d57fa99...4defe9d. Read the comment docs.

That's great, thanks Julio
Point me the confusing parts, please, I'll send you an audio or a text explaining them.
Just taking a quick look here. Please, don't delete the validations part. I don't mind if you prefer it outside drillholes call as an extra function, but it's really important to have that. Database errors are really really common and sometimes it' not easy to find/correct them.

Awesome, thanks! I am deleting the validations in order to reintroduce them
later with code that is more readable.
The API will improve considerably so the validation code will need to be
adapted accordingly. Hopefully we will
have an option to load the data with cylinder geometries from Meshes.jl as
an option.
I will share more updates here by the end of the day. Thanks for helping
with the process. :)
Em sex., 18 de jun. de 2021 às 08:15, Rafael Caixeta <
@.***> escreveu:

That's great, thanks Julio
Point me the confusing parts, please, I'll send you an audio or a text
explaining them.
Just taking a quick look here. Please, don't delete the validations part.
I don't mind if you prefer it outside drillholes call as an extra
function, but it's really important to have that. Database errors are
really really common and sometimes it' not easy to find/correct them.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/JuliaEarth/DrillHoles.jl/pull/15#issuecomment-863962817,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZQW3OLZ5FEHOTH3GTQGOLTTMTGVANCNFSM464ULD4Q
.

Hi @rmcaixeta , I'm almost done with the desurveying step 🎉 In order to finish it, I need to understand what the mergetables function is doing exactly. I know it is merging the interval tables but I thought that we could just use a simple join from DataFrames.jl? Could you please elaborate on the expected result? If you can describe it with a simple sentence, I can work on my own tomorrow to reproduce the results.

Great! The point to consider is that one table interval can overlap the other, that's why I made an additional step before the join. Maybe it's possible to adapt to a simple join, but I'm not sure. Example: merging one litho interval FROM 0 TO 10 with an assay interval FROM 5 TO 6. The output drillhole table will have 3 intervals: 0-5, 5-6 and 6-10. All with same litho value, but only 5-6 will have assay value, the others will have missing assay.

Awesome the example helped a lot understand the challenge. Tomorrow I'll
try to work on this.
On Fri, Jun 18, 2021, 18:31 Rafael Caixeta @.***> wrote:

Great! The point to consider is that one table interval can overlap the
other, that's why I made an additional step before the join. Maybe it's
possible to adapt to a simple join, but I'm not sure. Example: merging one
litho interval FROM 0 TO 10 with an assay interval FROM 5 TO 6. The output
drillhole table will have 3 intervals: 0-5, 5-6 and 6-10. All with same
litho value, but only 5-6 will have assay value, the others will have
missing assay.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/JuliaEarth/DrillHoles.jl/pull/15#issuecomment-864284894,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZQW3KSWTLRJJE2NO7Z573TTO3M7ANCNFSM464ULD4Q
.

Hi @rmcaixeta I have a few more questions before I can finish the desurveying step:

Is it correct to say that the Z coordinate in the collar file is always non-negative with the topography at Z = 0? I understand that we start at Z = 0 and increase towards the maximum depth, which is sometimes reported in the file.
When the input survey table has positive dip pointing downwards we don't need to flip its sign because it is already aligned with the collar convention, correct?
The two functions you wrote for the arc and tangent methods assume that the dip angles are positive pointing downwards, correct? So if the user specifies that the input survey has positive dip pointing upwards we need to flip the sign.

Assume that I have processed the trajectories (i.e. trace) and have found the sub-intervals with values as we discussed recently:
(4×7 DataFrame
 Row │ HOLEID  AT       AZM      DIP      X        Y        Z
     │ Int64   Float64  Float64  Float64  Float64  Float64  Float64
─────┼──────────────────────────────────────────────────────────────
   1 │      1      0.0      0.0     89.0  1.0      1.0      1.0
   2 │      1      5.0      1.0     88.0  1.00152  1.13087  5.99822
   3 │      2      0.0     20.0     77.0  2.0      2.0      2.0
   4 │      2      5.0     21.0     76.0  2.4091   3.09313  6.86179, 6×5 DataFrame
 Row │ HOLEID  FROM     TO       A        L
     │ Int64   Float64  Float64  Int64?   String
─────┼───────────────────────────────────────────
   1 │      1      0.0      1.0  missing  A
   2 │      1      1.0      3.5        1  A
   3 │      1      3.5      8.0        2  A
   4 │      2      0.0      4.4        3  B
   5 │      2      4.4      7.0        3  C
   6 │      2      7.0      8.0  missing  C)

In order to assign the X, Y, Z coordinates to the attribute table, I am planning to:

Create a new column AT with the middle of the FROM -- TO interval
Do an outerjoin(trace, table, on [:HOLEID,:AT]) to get X, Y, Z when possible
Interpolate DIP and AZM for the AT values without X, Y, Z
Apply the arc or tangent method again to fill in the coordinates

Is that the standard approach? Please let me know if there is something out of place, I am planning to keep working on it today and next week.

I think my assumption (1) above is incorrect. Do I understand correctly that the collar file could even be omitted and only be considered at the very end of the pipeline? It just shifts all xyz coordinates for each dill hole. If we assume that the top of the hole is at coordinates (0,0,0) we can do the calculations and at the very end add back the collar, correct? That would simplify the code even more.

Hey Julio. I think that for 2 and 3, it's the inverse of what you wrote. The functions were written for negative downwards. I'm not sure if I understood 1, but I'd say no, Z can be negative in some cases (e.g. underground mine). Your strategy 1-4 seems ok. About considering the collars coordinates only in the end, seems to be a possible approach, need to try it

Thanks @rmcaixeta I will try to get it done today.
The pseudocode I have in mind looks like this:

join interval tables and fill sub-intervals when possible
assign new column AT as (FROM + TO) / 2
join with survey table on HOLEID and AT
intepolate AZM and DIP as a function of AT
join with collar table on AT and compute X, Y, Z

This should simplify the code greatly. Let me know if you spot any conceptual problem with the pseudocode. I will report the results by the end of the day.

Great! The pseudocode looks good.
Just one thing to have in mind about the survey interpolation, in case
you're thinking of not storing original survey data (currently
DrillHole.trace)
Some softwares store it, others not. I prefer storing it, here an example
of why not storing the originals can create bad results in some cases:
consider you have 10m-spaced litho intervals and 3m-spaced downhole
surveys. You can get the center coordinate of the intervals correctly in
the 1st desurvey. But if you composite those drillholes later into 1-m
samples, the coordinates of each 1-m interval will be biased if you use
only the interpolated survey at the 10m samples, instead the original 3m
survey data.
Em seg., 21 de jun. de 2021 às 07:52, Júlio Hoffimann <
@.***> escreveu:

Thanks @rmcaixeta https://github.com/rmcaixeta I will try to get it
done today.
The pseudocode I have in mind looks like this:

join interval tables and fill sub-intervals when possible
assign new column AT as (FROM + TO) / 2
join with survey table on HOLEID and AT
intepolate AZM and DIP as a function of AT
join with collar table on AT and compute X, Y, Z

This should simplify the code greatly. Let me know if you spot any
conceptual problem with the pseudocode. I will report the results by the
end of the day.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JuliaEarth/DrillHoles.jl/pull/15#issuecomment-864936066,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB77N4GSYCMEIBZJZASN3LLTT4KXTANCNFSM464ULD4Q
.

I think I finished the desurvey step 👍🏽 Appreciate if you can take a look at this example to see if the results make sense:
julia> collar = Collar(DataFrame(HOLEID=1:2, X=1:2, Y=1:2, Z=1:2))
Collar{DataFrame}(2×4 DataFrame
 Row │ HOLEID  X      Y      Z
     │ Int64   Int64  Int64  Int64
─────┼─────────────────────────────
   1 │      1      1      1      1
   2 │      2      2      2      2, :HOLEID, :X, :Y, :Z)

julia> survey = Survey(DataFrame(HOLEID=[1,1,2,2], AT=[0,5,0,5], AZM=[0,1,20,21], DIP=[89,88,77,76]))
Survey{DataFrame}(4×4 DataFrame
 Row │ HOLEID  AT     AZM    DIP
     │ Int64   Int64  Int64  Int64
─────┼─────────────────────────────
   1 │      1      0      0     89
   2 │      1      5      1     88
   3 │      2      0     20     77
   4 │      2      5     21     76, :HOLEID, :AT, :AZM, :DIP)

julia> assays = Interval(DataFrame(HOLEID=[1,1,2], FROM=[1,3.5,0], TO=[3.5,8,7], A=[1,2,3]))
Interval{DataFrame}(3×4 DataFrame
 Row │ HOLEID  FROM     TO       A
     │ Int64   Float64  Float64  Int64
─────┼─────────────────────────────────
   1 │      1      1.0      3.5      1
   2 │      1      3.5      8.0      2
   3 │      2      0.0      7.0      3, :HOLEID, :FROM, :TO)

julia> lithos = Interval(DataFrame(HOLEID=[1,2,2], FROM=[0,0,4.4], TO=[8,4.4,8], L=["A","B","C"]))
Interval{DataFrame}(3×4 DataFrame
 Row │ HOLEID  FROM     TO       L
     │ Int64   Float64  Float64  String
─────┼──────────────────────────────────
   1 │      1      0.0      8.0  A
   2 │      2      0.0      4.4  B
   3 │      2      4.4      8.0  C, :HOLEID, :FROM, :TO)

julia> dh = desurvey(survey, collar, [assays, lithos])
10×11 DataFrame
 Row │ A        L        HOLEID  FROM     TO       AT       AZM      DIP      X        Y        Z
     │ Int64?   String?  Int64   Float64  Float64  Float64  Float64  Float64  Float64  Float64  Float64
─────┼────────────────────────────────────────────────────────────────────────────────────────────────────
   1 │ missing  missing       1      0.0      0.0     0.0      0.0    -89.0   1.0      1.0       1.0
   2 │ missing  A             1      0.0      1.0     0.5      0.1    -88.9   1.00001  1.00916   0.500084
  ⋮  │    ⋮        ⋮       ⋮        ⋮        ⋮        ⋮        ⋮        ⋮        ⋮        ⋮         ⋮
   9 │       3  C             2      4.4      7.0     5.7     21.14   -75.86  2.47011  3.25201  -3.54079
  10 │ missing  C             2      7.0      8.0     7.5     21.5    -75.5   2.632    3.66674  -5.28486
                                                                                6 rows omitted

julia> dh.X'
1×10 adjoint(::Vector{Float64}) with eltype Float64:
 1.0  1.00001  1.00021  1.00132  1.00183  2.0  2.17392  2.40893  2.47011  2.632

julia> dh.Y'
1×10 adjoint(::Vector{Float64}) with eltype Float64:
 1.0  1.00916  1.0481  1.13087  1.15802  2.0  2.4721  3.09321  3.25201  3.66674

julia> dh.Z'
1×10 adjoint(::Vector{Float64}) with eltype Float64:
 1.0  0.500084  -1.24948  -3.99822  -4.74773  2.0  -0.141693  -2.86179  -3.54079  -5.28486

julia> dh.AT'
1×10 adjoint(::Vector{Float64}) with eltype Float64:
 0.0  0.5  2.25  5.0  5.75  0.0  2.2  5.0  5.7  7.5

julia> dh.A'
1×10 adjoint(::Vector{Union{Missing, Int64}}) with eltype Union{Missing, Int64}:
 missing  missing  1  missing  2  missing  3  missing  3  missing

julia> dh.L
10-element Vector{Union{Missing, String}}:
 missing
 "A"
 "A"
 missing
 ⋮
 "B"
 missing
 "C"
 "C"

The final result will have the finest resolution of survey and intervals. I don't know if I followed the issue you raised in the last comment. Isn't this result table complete? We can composite it later and it will contain all possible depths from intervals and survey together.

Hi @rmcaixeta I was able to load a massive dataset with more than 190k intervals with this PR in 20s. If the pseudocode I shared above is conceptually correct, I can move on to the composite step next week after I am done with some research presentations.
Please let me know if the issue you shared in the last comment is still valid with this implementation. I think the way I am organizing the output table contains all the information needed from all input tables, but I may be wrong.

Great, thanks @juliohm . It's not common to have zero length intervals in drillhole table, but this trick will probably avoid the issue I mentioned earlier (except when compositing an already composited interval). I'll write a simple test later to make it clear to you and guarantee it works well.
I suggest you run the previous tests with this current approach. I'll try to check it in a little more detail until the weekend.

Sounds good @rmcaixeta , one thing we can also do is save a new column that stores the source of the row from either survey or interval files. That way we can easily filter all rows of the table that correspond to the survey without assumptions about the interval lengths (FROM = TO).
I will try to reintroduce the previous tests with the new implementation to see if they pass. I remember seeing some different results and it would be nice to double check it.

@rmcaixeta I've introduced the two previous tests and it would be nice if you could check the results. Given the amount of code change, I would just close this PR branch and test locally without trying to read the github diff.
After you give me the green light, I can start working on the composite functionality. If you have papers explaining the methods in detail, that would be great.

Thanks Julio. I'll take a look and run local tests later today. Abzalov book has one page quickly explaining these two methods (Chap 13)

Made a more detailed check here
The merged intervals are ok, I even found a small bug in the current version that is corrected in yours
But there is some problem in your interpolation algorithm to get X, Y, Z. And the benchmarking show some considerable differences in time and allocations. These will need some further investigation. I'll send you the reference data to check.
Another small thing I suggest to change: the order of arguments from desurvey(survey, collar, intervals) to desurvey(collar, survey, intervals), which is more intuitive for regular users of other softwares.
Here the coordinate errors using Leapfrog as reference to check:

Spherical arc
Current version X: mean absolute error = 0.00; max error = 0.02
Current version Y: mean absolute error = 0.00; max error = 0.05
Current version Z: mean absolute error = 0.00; max error = 0.01
After cleanup X: mean absolute error = 0.07; max error = 54.81
After cleanup Y: mean absolute error = 0.04; max error = 26.79
After cleanup Z: mean absolute error = 0.04; max error = 74.21

Tangent:
Current version X: mean absolute error = 0.00; max error = 0.00
Current version Y: mean absolute error = 0.00; max error = 0.00
Current version Z: mean absolute error = 0.00; max error = 0.00
After cleanup X: mean absolute error = 0.24; max error = 56.98
After cleanup Y: mean absolute error = 0.91; max error = 38.91
After cleanup Z: mean absolute error = 0.40; max error = 78.91

And here the comparisons using BenchmarkTools:

@btime, 4 threads
Current version: 3.087 s (28233648 allocations: 1.43 GiB)
After cleanup: 23.508 s (344471092 allocations: 44.02 GiB)

I'll send you the link of the files I used in Zulip in some minutes

Awesome @rmcaixeta , thanks for the detailed checks. I will try to take a look at it today or tomorrow.
It is interesting how the X, Y, Z coordinates are so different in the two implementations. I didn't touch the step methods, just moved the calculation to the very end of the pipeline. Maybe the difference is explained by the fact that you were calculating the trace coordinates without considering the intervals? When we consider the intervals we have more steps and consequently will have different trajectories at the end. I wonder what is the best approach here. Do you think it is reasonable to consider all intervals first, and then interpolate the AZM and DIP linearly as I am doing?

Another small thing I suggest to change: the order of arguments from desurvey(survey, collar, intervals) to desurvey(collar, survey, intervals), which is more intuitive for regular users of other softwares.

I will flip the order 👍🏽 I thought the collar file was "more secondary" than the survey file.
Regarding the performance, I think I know where exactly is the bottleneck. I will see if I can reduce the memory allocations and speedup the code in the process. I noticed that in the previous implementation you were computing various lengths for the intervals, maybe if you explain at a high-level what the algorithm was doing, I can try to reproduce it again. The current implementation does not compute lengths explicitly. I will check what is causing the slow down.

Great @juliohm
Some comments below

It is interesting how the X, Y, Z coordinates are so different in the two implementations. I didn't touch the step methods, just moved the calculation to the very end of the pipeline. Maybe the difference is explained by the fact that you were calculating the trace coordinates without considering the intervals? When we consider the intervals we have more steps and consequently will have different trajectories at the end. I wonder what is the best approach here. Do you think it is reasonable to consider all intervals first, and then interpolate the AZM and DIP linearly as I am doing?

Yeah, maybe interpolating the azm and dip caused that. I used the original azm and dip from survey file and you used the interpolated values to get the az1, dp1, az2, dp2 and d12 variables if I understood it well. If you adapt it to use only the original survey data of your table (length == 0) for the locate function, maybe it'll solve it. And interpolating azm and dip can be set to optional in case it takes much time.

Regarding the performance, I think I know where exactly is the bottleneck. I will see if I can reduce the memory allocations and speedup the code in the process. I noticed that in the previous implementation you were computing various lengths for the intervals, maybe if you explain at a high-level what the algorithm was doing, I can try to reproduce it again. The current implementation does not compute lengths explicitly. I will check what is causing the slow down.

If it's the interpolation step, maybe it'll be solved after correcting the X, Y and Z. If it's the merge-tables step, we can check it later, I need to remember what I did earlier. But I really don't mind if it takes some seconds more and return the right results, my concern is only if it gets prohibitive at bigger datasets. You said you tried in a bigger one, so probably it's not an issue, although it'd be nice to try later in some other more complex (~1M intervals) just to confirm.

After a long stretch preparing course material, I am finally back :)

Yeah, maybe interpolating the azm and dip caused that. I used the original azm and dip from survey file and you used the interpolated values to get the az1, dp1, az2, dp2 and d12 variables if I understood it well. If you adapt it to use only the original survey data of your table (length == 0) for the locate function, maybe it'll solve it. And interpolating azm and dip can be set to optional in case it takes much time.

You mean that we should step forward using azm/dip values from the survey file first to compute the X, Y, Z at survey depths, and only then fill the X, Y and Z of the intervals from the interpolated azm/dip values? I wonder if that is what commercial softwares do? It seems to me that this method would introduce discontinuities at the survey depths.
In the current version of the PR I simply interpolate the azm/dip at interval depths using the azm/dip at survey depths, and then compute the X, Y, Z everywhere in a single shot with the step method (e.g. arc step) from the top to the bottom of the drillholes. This method guarantees a smooth trajectory, but as you pointed out the results differ from an important commercial software. I wonder if all major software follow the same standard? Is it documented somewhere?

But I really don't mind if it takes some seconds more and return the right results, my concern is only if it gets prohibitive at bigger datasets. You said you tried in a bigger one, so probably it's not an issue, although it'd be nice to try later in some other more complex (~1M intervals) just to confirm.

Nice. I will try to test with the data set that you shared with me. I agree that we should first make sure that the result is correct. There is always room for performance optimizations after we get the expected results.

@rmcaixeta can you double check the new implementation that I just pushed? Instead of interpolating AZM and DIP and then interpolating X, Y, Z, this new implementation interpolates X, Y, Z with the step function on the survey table and then interpolates the remaining X, Y, Z directly. If you can run your test script with the Leapfrog results that would be great.

@rmcaixeta I've read the chapter of the book that talks about compositing. I am impressed by how under-specified these methods are. There are lots of details that are omitted and it is unlikely that anyone without access to commercial software can reproduce their results. I will read the current implementation in the master branch to see if I can write something that at least reproduces the results there.

@rmcaixeta did you have a chance to compare the new desurvey with the leapfrog results?

Not yet, @juliohm . I'll probably have some time for it by mid August, I'll let you know

@rmcaixeta quick question: what is the expected result of compositing an interval where some of the sub-intervals have missing values? For example, suppose the interval is made of 3 sub-intervals of length 0.1, 0.8, 0.1 with values 1.0, missing, 1.0. Should the weighted average ignore the missing entry? 0.1*1.0 + 0.1*1.0 / (0.1 + 0.1) ?
I am generalizing the code to work with scientific types from ScientificTypes.jl so that users can be explicit about the categorical nature of columns with strings or integer values for example.

Or should these intervals be subdivided into smaller intervals guaranteed to not contain missing values? We really need a better reference to implement these methods...

Missing values are usually just ignored as a solution to not break the process as in your example. But sometimes softwares highlight that "there are missing values that may cause problems in the results" as it "cheats" during the sample regularization. Your second question of break intervals in missing values is not a standard because there might have missing values of a variable but not from others on that interval. But the intervals are usually broken when there is a gap in FROM-TO. In the actual version I made similar to Datamine where you can inform if every gap should be broken or if you consider gap intervals smaller than a given threshold as a "missing values"

Awesome. I will just ignore the missings as suggested. I think the latest
commit in this PR already handles the gaps in FROM-TO.
Em ter., 27 de jul. de 2021 às 13:52, Rafael Caixeta <
@.***> escreveu:

Missing values are usually just ignored as a solution to not break the
process as in your example. But sometimes softwares highlight that "there
are missing values that may cause problems in the results" as it "cheats"
during the sample regularization. Your second question of break intervals
in missing values is not a standard because there might have missing values
of a variable but not from others on that interval. But the intervals are
usually broken when there is a gap in FROM-TO. In the actual version I made
similar to Datamine where you can inform if every gap should be broken or
if you consider gap intervals smaller than a given threshold as a "missing
values"
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JuliaEarth/DrillHoles.jl/pull/15#issuecomment-887672074,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZQW3NYUFZ5Y3NXD7LE6ALTZ3P3PANCNFSM464ULD4Q
.

Hey @juliohm . I took a quick look to try fixing the desurvey deviations. One thing I noticed is that you're interpolating azm and dip and not the vectors (if I understood your code correctly). This might be causing the differences. Check out the ang2vec and vec2ang transformations in the master version

@rmcaixeta I can't find the functions you mentioned in the master branch. You mean we should interpolate azm and dip differently before running the step method? Also, notice that currently the code is using the step method in the survey rows, and the using simple interpolation for the remaining rows. Alternatively, one could apply the step method from top to bottom of the drillhole including rows from survey and interval tables (i.e. more steps of integration). Please let me know what is the preferred method.

I will try to come back to this PR over the week or next week to finish the composite implementation and to update the README. After that, it will be just fine tuning to see what is causing differences with commercial software.

No hurry. Just to reference what I mentioned. Here, I first convert the azm and dip to unit vectors and then interpolate them (weighting according to the distance to the 2 [or 1] bounding surveys). While in your version it seems you're interpolating angles directly. The differences can also be something related to weighting these 1-2 closest surveys in the interpolate! function.
https://github.com/JuliaEarth/DrillHoles.jl/blob/d57fa990bb4f37696e521573ffb0651fa6cd5b17/src/desurvey.jl#L105-L124

Thanks. We could also merge this PR after it is ready with the major updates to the API, and then you could submit a separate PR to fix the deviation calculation. It should be a very easy fix compared to the rest of the code that changed here.
I will try to finish the composite function and we see what is the best path to get things up-to-date and working as expected.

12m is still too much difference for me to merge. We'll merge once everything's running fine, no hurry

Sure, just remember that merging into the master branch doesn't mean releasing a new version to end users, it just means that we would have a clean start to address the trajectory issue. Now that you are busy with your work and can't look into this closely I think a separate PR could help with documenting the trajectory fix to future potential contributors, but it is up to you.

@rmcaixeta can you please clarify the functions findbounds and weightedangs in the master branch using a simple sketch?

I will go ahead and merge this into master. That way people can use the new API and propose fixes to the functions in the master branch directly. After the master branch is functional I will go ahead and release a new version.


Fixed a bug in the map fusion transformation.

Essentially the bug happens because the transformation considers any array with one elements as scalar, including arrays such as (1, 1). This commit allows the scalar branch of the transformation to handle this kind of situation. Another solution would be to "promote" it to an array.
In addition this commit adds some test cases for these kind of events.

The test seems to pass on master. I think we should have a test that triggers the bug on master...
I looked a bit deeper into the transformation. I also think that it's better for the scalar branch to handle this case, because inside the map it's better to use a scalar transient instead of a transient array where all dimensions have size 1.

We briefly discussed this:

The scalar branch ist the better place to fix this (instead of array branch)
AlexNik confirmed that "0" is the correct subset for memlets from scalars

We are now looking into the assert (seems to highlight another bug) and whether the test triggers the bug (it triggers new code paths in the transformation, and, thus, increases code coverage, so is strictly an improvement).

As far as I can tell there is still a bug in the array branch.

Has been superseded by PR#1629


React warning when switching facilities

Description
When switching facilities in my local build, I notice the following warning in the console log:
index.js:1 Warning: Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.
    in WithFacility (created by ConnectFunction)
    in ConnectFunction (at App.tsx:93)
    in PrimeErrorBoundary (at App.tsx:92)
    in App (created by ConnectFunction)
    in ConnectFunction (created by Context.Consumer)
    in Route (at src/index.tsx:92)
    in Switch (at src/index.tsx:89)
    in Router (created by BrowserRouter)
    in BrowserRouter (at src/index.tsx:88)
    in Provider (at src/index.tsx:87)
    in StrictMode (at src/index.tsx:86)
    in ApolloProvider (at src/index.tsx:85)

Steps to reproduce
If applicable, add screenshots to help explain your problem.

Open the app on your local machine using a user with multiple facilities
Open the console log
Switch facilities
See error

Expected behavior
Code should run without console logging (admittedly, this doesn't seem to get logged in production, because it's a warning, but...)

Will take on as part of Sign Up form revamp...


fix failing ProtoSchemaTranslator on proto3 optional fields

I found that ProtoSchemaTranslator fails to translate the schema when proto3 definitions have optional fields.
These optional fields creates synthetic oneOfs internally and ProtoSchemaTranslator runs into errors treating them are real oneOfs. This excludes that from happening.
I had to use getRealContainingOneof() since they have deprecated isSynthetic()
Fixes #32199

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

Run Java PreCommit

assign set of reviewers

testWithResume (org.apache.beam.runners.spark.translation.streaming.ResumeFromCheckpointStreamingTest) failed

failed 3 times, but not likely related to this change. Checked out the PR and the test passed locally:
Test	Duration	Result
testWithResume	19.628s	passed


Use only REST for Route and enable logs API

Changes

remove gRPC from Route and remove tests based on gRPC
add a tekton-results env config for configmap generation with updated options and replace the default config
enable logs API
add tekton-results test using REST API
remove NET_BIND_SERVICE capability from watcher deployment
part of PLNSRVCE-1115

Signed-off-by: Avinal Kumar<EMAIL_ADDRESS>

/retest

Just FYI, this is a breaking change: gRPC based setup won't work anymore.

Just FYI, this is a breaking change: gRPC based setup won't work anymore.

This is probably the last time we can do this. Now that we have a production environment, we cannot introduce breaking changes without a migration path.

Sure @adambkaplan


Incorrect markup in the description of the projects_v2 webhook

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
https://docs.github.com/en/webhooks-and-events/webhooks/webhook-events-and-payloads#projects_v2
What part(s) of the article would you like to see updated?

Additional information
No response

@nikpivkin Thanks so much for opening an issue! I'll triage this for the team to take a look :eyes:
We appreciate you pointing out this markdown issue.


Disable WADL generation for OPTIONS request

Double check that property(ServerProperties.WADL_FEATURE_DISABLE, true); is in place.
public class Application extends ResourceConfig {

Done with commit ad35a5fa8426bee2391040202acde6446264b83f.


migrate to ansible galaxy roles

As a Developer
I want to use Ansible Galaxy for downloading roles
So that I'm not living in the past

done in #8


fixes spacing for redcartpet

Implements the style mentioned in #1492

This change is

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/516a6050d18d6792fdceb169a8aac4e790d767f4/

@jseldess re:

A nested list needs to be directly under a list item, with each nested item indented only 2 spaces?

List items need either 2 or 4 space. However, consistently doing 4 is obviously cleaner. I'm seeing how easily I can make all of these consistent based on the style guide.

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/b1df093b0994f94e375e510bba4a914bb073d10b/


jaeger not working

@kaihoffman can you please have a look as the app is not working,
install logs
-------------------- Jaeger-Operator --------------------
namespace/observability created
serviceaccount/jaeger-operator created
role.rbac.authorization.k8s.io/jaeger-operator created
rolebinding.rbac.authorization.k8s.io/jaeger-operator created
deployment.apps/jaeger-operator created
error: unable to recognize "/home/civo-kubernetes/jaeger-operator/install.yaml": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"
------------------------------------------------------------

It seems to be the case that the apiextensions.k8s.io/v1beta1 API version of CustomResourceDefinition is no longer supported. I think it needs to be changed to apiextensions.k8s.io/v1 in the manifest files for jaeger.


change join syntax to use subquery

A join using from currently looks like this.
from (
    left => pass;
    right => pass;
) | join on left_field == right_field

This might be more readable if the upstream operation provides the left input and a subquery provides the right input, like this.
from left | join (from right) on left_field == right_field

The description text for #2836 includes a three-way join example I was hoping to show, but I could never come up with a workable syntax in the current implementation. When we implement this issue, I can validate it by expressing the example in the revised syntax and add it to the docs.

Steve and Noah agree that we will keep join on = to mean strict equi-join and in the future when we have generalized join expressions, join on == will mean coercible equi-join.

The main join operator docs page now leads with the new syntax and the join tutorial shows several working examples that use the new syntax. The prior syntax is still available and shown in the docs as well.
Thanks @nwt!


Add Vue docs

This PR adds documentation for using Ray with the Vue framework (v2 & v3) using the third-party package vue-ray, and updates the usage reference to include Vue-specific methods.
I feel it's appropriate to add these docs as documentation for using Ray with other frameworks (Laravel, Yii, etc.) already exists,  will add overall value to Ray, and widen its potential user base.

Thank you very much! 👍


Red circles on resource node in Horizontal mode

Not sure if this was intended but in v13.2 it seems like all nodes (tested both resource and empty nodes) are indicated by red color regardless if it's a battle node or not.
Update: Apparently happens only in horizontal mode.

Actually, it was only red nodes in Horizontal layout from the start. When I worked on Vertical Layout, I added more color to it but still kept Horizontal layout unchanged. So now only Vertical has colorful nodes while Horizontal does not. It was intended.

Oh, okay. When would the colored nodes be implemented in horizontal layout as well?

probably, so let's keep this entry open xD

Yeah, I would like to keep it like that for a little longer to see how it goes xD

Legacy theme not supported, natsuiro theme has colored nodes on both orientations


Serverless Lambda layer nodjs12x Module not found issue

This is the trace I am getting in cloud watch
{
"errorType": "Error",
"errorMessage": "Unable to import module 'index'",
"stack": [
"Error: Unable to import module 'index'",
"    at getHandler (/opt/nodejs/node_modules/newrelic-lambda-wrapper/index.js:42:13)",
"    at Object. (/opt/nodejs/node_modules/newrelic-lambda-wrapper/index.js:64:50)",
"    at Module._compile (internal/modules/cjs/loader.js:1072:14)",
"    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)",
"    at Module.load (internal/modules/cjs/loader.js:937:32)",
"    at Function.Module._load (internal/modules/cjs/loader.js:778:12)",
"    at Module.require (internal/modules/cjs/loader.js:961:19)",
"    at require (internal/modules/cjs/helpers.js:92:18)",
"    at _tryRequire (/var/runtime/UserFunction.js:83:12)",
"    at _loadUserApp (/var/runtime/UserFunction.js:95:12)"
]
}

hey @ranjithgowdan123  were you able to solve it?.
I'm having similar issue with nodejs14.x
{
    "errorType": "Error",
    "errorMessage": "Unable to import module 'dist/src/apollo-server'",
    "stack": [
        "Error: Unable to import module 'dist/src/myFunctionName'",
        "    at getHandler (/opt/nodejs/node_modules/newrelic-lambda-wrapper/index.js:42:13)",
        "    at Object.<anonymous> (/opt/nodejs/node_modules/newrelic-lambda-wrapper/index.js:64:50)",
        "    at Module._compile (internal/modules/cjs/loader.js:1072:14)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)",
        "    at Module.load (internal/modules/cjs/loader.js:937:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:778:12)",
        "    at Module.require (internal/modules/cjs/loader.js:961:19)",
        "    at require (internal/modules/cjs/helpers.js:92:18)",
        "    at _tryRequire (/var/runtime/UserFunction.js:83:12)",
        "    at _loadUserApp (/var/runtime/UserFunction.js:95:12)"
    ]
}

i'm using serverless-webpack plugin too, could be related that?

@cristian-pelegrin This is very likely a conflict with serverless-webpack. We recommend that you check the order of plugins--serverless-newrelic-lambda-layers plugin must come after serverless-webpack in the plugins block of your serverless.yml file.

had the same issue with serverless-bundle... changing the plugin order fixed this too.


Mount provider should support sensitive property

Description
I am using Chef-vault to try and keep my passwords secure. I am currently using one of the vault Items to try and mount a share.
My problem is that the error output from chef printed the RAW password, not the encrypted or hashed out version, meaning anyone can circumvent the chef-vault by creating a bad mount recipe!
Would it not be better to hash out ALL 'password' attributes/fields in when printing them so that they are not shown to users (who might not be intended to see them!) or stored in log files?
Chef Version
Chef: 12.6.0
Platform Version
Windows 10
Replication Case
mount 'O:' do
device '\myShare\myFolder'
action :mount
domain 'myDomain'
username testUser['username']
password testUser['password']
end
Client Output
Error output:
mount("O:") do
action [:mount]
supports {:remount=>false}
retries 0
retry_delay 2
default_guard_interpreter :default
mount_point "O:"
device "'\myShare\myFolder'"
device_type :device
fsck_device "-"
fstype "auto"
options ["defaults"]
dump 0
pass 2
username "muUser"
password "myPassword"
domain "myDomain"
declared_type :mount
cookbook_name "sn_users"
recipe_name "test_user"
end

You should actually be able to pass it sensitive true and it may prevent that debug logging, I'm not sure if any changes to the provider are necessary.

It probably should do that by default when a password is passed to it, just to avoid this outcome.

so, ultimately though, this isn't much of a practical security issue.  the assumption here is that "anyone can create a bad mount resource".  under that threat model if you give me the ability to inject resources intoa chef-client run i can open up remote root access to the box and steal the client credentials.  i can also probably just use the mountpoint directly on the server since i have enough leverage to be able to break into it, so the password itself is probably moot anyway.  i can therefore always recover the password, or just inject logging commands to give myself the password.  chef-vault does nothing to protect credentials that the chef-client run can use against compromise from an attacker that can compromise the server at the root level or inject chef-client config or otherwise steal the chef client credentials.
OTOH, certainly wouldn't stand in the way of someone submitting a PR to set sensitive true if a password property was set on the resource (globally, for all resources most likely).

This was already fixed so I'm going to close it out.


format keybinding name on settings to Capital case.

With this PR, the keybindings which doesn't have a message/description will be Capital cased, instead of showing the kebab_cased name.
This is my first PR, let me know what you guys think
Before

After

This should be done via strum

This should be done via strum

This pr doesn't really affect the strum message functionality. If there is a message it would be displayed

This pr doesn't really affect the strum message functionality. If there is a message it would be displayed

That doesn't change the fact it should be done via strum

Codecov Report

Merging #1778 (5f17fe0) into master (5bc1e95) will increase coverage by 0.03%.
The diff coverage is 0.00%.

 Learn more

I think this is a good addition when command description isn't there.

Thanks


Operation not permitted

I get
docker logs -f network-exporter
/bin/sh: /app/network_exporter: Operation not permitted
/bin/sh: /app/network_exporter: Operation not permitted
/bin/sh: /app/network_exporter: Operation not permitted
/bin/sh: /app/network_exporter: Operation not permitted
/bin/sh: /app/network_exporter: Operation not permitted
/bin/sh: /app/network_exporter: Operation not permitted

for this configuration
version: '3'
services:
  prometheus:
    image: prom/prometheus:v2.30.3
    container_name: prometheus
    volumes:
      - $PWD/prometheus:/etc/prometheus
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - "9091:9090"

  network-exporter:
    image: syepes/network_exporter:latest
    container_name: network-exporter
    network_mode: host
    restart: unless-stopped
    volumes:
      - ./network-exporter/network_exporter.yml:/app/cfg/network_exporter.yml:ro

volumes:
  prometheus_data:

also here is my network_exporter configuration
network-exporter/network_exporter.yml
log_level: info
log_format: text
telemetry:
  address: "<IP_ADDRESS>:9427"
  path: "/metrics"
ping:
  enabled: true
  privileged: true
  interfaces:
    - name: "x"
      description: "Ping from x"
      interval: "15s"
      timeout: "1s"
      targets:
        - "<IP_ADDRESS>"
        - "<IP_ADDRESS>"
        - "<IP_ADDRESS>"
    - name: ""
      description: "Ping from x"
      interval: "15s"
      timeout: "1s"
      targets:
        - "<IP_ADDRESS>"
        - "<IP_ADDRESS>"
        - "<IP_ADDRESS>"
    - name: "x"
      description: "Ping from x"
      interval: "15s"
      timeout: "1s"
      targets:
        - "<IP_ADDRESS>"
        - "<IP_ADDRESS>"
        - "<IP_ADDRESS>"

so please help me why i get this?

i change my configuration to this
  network-exporter:
    image: syepes/network_exporter:latest
    container_name: network-exporter
    network_mode: host
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - ./network-exporter/network_exporter.yml:/app/cfg/network_exporter.yml:ro


Can not call SampleCallout class

First of all, thanks for publishing a good library.
I have a problem on class SampleCallout. I read your demo code, you called class SampleCallout, but when I try this I can't.
Did you have removed it or another problem?
Please reply me as soon as possible. Thank you!

The SampleCallout is just a class included in the demo project.  It's not a part of the library.


add require_variance to model_interface look_at signature

This PR resolves issue #651.
In addition, this PR adds traversal paths for require_variance for non-neural task models (Behavior, ProbabilitiesMapping, Temporal).

Hi @benlonnqvist, is this PR still in progress? If not, should it be closed? Thanks for the contributions!

Hi @deirdre-k, thanks for the message. This PR is technically still in progress and while PR #917 fixed the issue about being able to call microsaccades, the signature issue in model_interface / elsewhere still seems to be open.
We could either:

wait for me to get to this at some point in the future (I see this as quite a low priority item for me personally)
close this and leave the issue #651 open with a note pointing to this PR as a somewhat-approved way of resolving the issue

Thanks!


[$250] Chat - Page reloads and green line disappears when open unread chat

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.6-0
Reproducible in staging?: y
Reproducible in production?: n
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4710813&group_by=cases:section_id&group_order=asc&group_id=296775
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: applause internal team
Slack conversation:
Action Performed:
Preconditions:

User A and User B (android) have previous chat history

Steps:

User B is on LHN
User A sends a message to user B
User B opens the chat with User A

Expected Result:
There should be a green line above the new message
Actual Result:
Page reloads and green line disappears when open unread chat
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/38435837/6f8b57f5-6a4a-4a3c-9beb-5fd9aedd7e4c

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01e0c6e552db58a8e8
Upwork Job ID:<PHONE_NUMBER>294181829
Last Price Increase: 2024-07-11

Issue OwnerCurrent Issue Owner: @c3024

@marcaaron FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

This looks pretty unexpected to me. Asked QA if it's consistently reproducible. Gonna make it External to get some eyes.

I don't think this is related to backend, removing the DeployBlocker tag

QA confirmed that this is consistently reproducible, at least when using the accounts<EMAIL_ADDRESS>and<EMAIL_ADDRESS>

My mistake - I was looking at the wrong Slack thread. Here's the correct thread: https://expensify.slack.com/archives/C9YU7BX5M/p1720658194863959.
QA has not yet confirmed whether this is consistently reproducible.

Bumped for a QA update

This is still consistently reproducable (QA test)

Bug is fixed in 9.0.6-8
https://github.com/user-attachments/assets/f8dac974-f9bf-41d3-bc29-1bff0b69e69a
https://github.com/user-attachments/assets/38af0d28-4048-430f-af43-a031b92539cc


Steps by Knight

Aim

Details
I would like to solve Steps by Knight in C++ under LGMSOC'21
Programming language

[ ] C
[x] C++
[ ] Java
[ ] Python

@ravikr126 Kindly assign me this issue under LGMSOC'21


Convert allowed_sizes from a tuple to a SQL table

Probably with a primary key that is the size itself (CHAR(3) or something)

Complete and A-OK.


fix(agent): add agent header [EE-2433]

fix EE-2433
closes EE-2433
Changes:
auth header use to create a new object of headers, instead of just adding the auth header and it removed the target header from time to time.

/azp run

/azp run

/azp  run


Mentor pending reviews rule in firebase

Description
Apply pending review rule to firebase

@tcp Can you add some details on what the "pending review" rule covers?

Sure @curt-mitch, sorry for not updating this sooner. I'll add to the description.

Whoops, unassigning myself since I just saw curtis comments. Thanks!
(BTW - I guess we need to save the history of assignments user resigned from. So that it doesn't assign it again)


Remove endpoint for Project Attributes

Delete https://github.com/lyft/flyteidl/blob/master/protos/flyteidl/admin/project_attributes.proto as well?

@katrogan Done


Possibly misleading java.net.MalformedURLException for the URL protocol zip+https

I'm getting the following exception when trying to install sbtn:
$ cs install sbtn
Exception in thread "main" coursier.cache.ArtifactError$DownloadError: download error: Caught java.net.MalformedURLException: Accessing an URL protocol that was not enabled. The URL protocol zip+https is not tested and might not work as expected. It can be enabled by adding the -H:EnableURLProtocols=zip+https option to the native-image command. (Accessing an URL protocol that was not enabled. The URL protocol zip+https is not tested and might not work as expected. It can be enabled by adding the -H:EnableURLProtocols=zip+https option to the native-image command.) while downloading zip+https://github.com/sbt/sbt/releases/download/v1.4.1/sbt-1.4.1.zip!sbt/bin/sbtn-x86_64-apple-darwin
	at coursier.cache.FileCache$.helper$2(FileCache.scala:1018)
	at coursier.cache.FileCache$.coursier$cache$FileCache$$downloading(FileCache.scala:1032)
	at coursier.cache.FileCache.doDownload$1(FileCache.scala:320)
	at coursier.cache.FileCache.$anonfun$download$54(FileCache.scala:507)
	at coursier.cache.CacheLocks$.loop$1(CacheLocks.scala:58)
	at coursier.cache.CacheLocks$.withLockOr(CacheLocks.scala:84)
	at coursier.cache.FileCache.$anonfun$download$32(FileCache.scala:508)
	at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:659)
	at scala.util.Success.$anonfun$map$1(Try.scala:255)
	at scala.util.Success.map(Try.scala:213)
	at scala.concurrent.Future.$anonfun$map$1(Future.scala:292)
	at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:33)
	at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:33)
	at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
	at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:497)
	at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193)
Caused by: java.net.MalformedURLException: Accessing an URL protocol that was not enabled. The URL protocol zip+https is not tested and might not work as expected. It can be enabled by adding the -H:EnableURLProtocols=zip+https option to the native-image command.
	at com.oracle.svm.core.jdk.JavaNetSubstitutions.unsupported(JavaNetSubstitutions.java:208)
	at com.oracle.svm.core.jdk.JavaNetSubstitutions.getURLStreamHandler(JavaNetSubstitutions.java:169)
	at java.net.URL.getURLStreamHandler(URL.java:70)
	at java.net.URL.<init>(URL.java:616)
	at coursier.cache.CacheUrl$.url(CacheUrl.scala:90)
	at coursier.cache.CacheUrl$.urlConnectionMaybePartial(CacheUrl.scala:289)
	at coursier.cache.CacheUrl$.urlConnectionMaybePartial(CacheUrl.scala:277)
	at coursier.cache.FileCache.$anonfun$download$33(FileCache.scala:349)
	at coursier.cache.FileCache$.$anonfun$downloading$1(FileCache.scala:998)
	at coursier.cache.CacheLocks$.withUrlLock(CacheLocks.scala:102)
	at coursier.cache.FileCache$.helper$2(FileCache.scala:998)
	... 18 more

I think what is actually happening is that the metadata for the sbtn artifact is either stored incorrectly or there is a problem with how coursier is parsing the response.  If you need any more information to reproduce or to find the cause please let me know (I can't look into it at the moment).

So it seems that the artifact file path is correct based on
https://github.com/coursier/apps/pull/69
but it seems that I need to have some features from a later version of coursier that has these changes:
https://github.com/coursier/coursier/pull/1904
I'm going to see if I can update my version of cs and re-run the command but in my opinion, I think that this type of problem should have a better error message, like maybe indicate that you need to update coursier to be able to use that new feature.  I understand there are a lot of complexities with making everything backwards compatible, but at least a better error message saying to try upgrading cs first (and letting the user know how to upgrade cs).
Just for reference, this is the version of cs that I have:
2.0.0-RC6-18```

Since I installed coursier using Homebrew, I upgrading it using Homebrew too with
brew upgrade coursier/formulas/coursier

Now with the current version of cs I was able to install sbtn:
> cs --version
2.0.5
> cs install sbtn
https://repo1.maven.org/maven2/org/scala-sbt/sbt/maven-metadata.xml
  No new update since 2020-10-19 16:21:40
Wrote sbtn
> sbtn about
[info] entering *experimental* thin client - BEEP WHIRR
[info] server was not detected. starting an instance
[info] welcome to sbt 1.4.1 (AdoptOpenJDK Java 11.0.7)
...

Indeed, the latest sbtn descriptor needs coursier 2.0.5. Maybe it's time for coursier to version the app descriptor format…


Improvement Readme - Setup output content

Hi Mateus, nice job with this package.
Bellow a sugestion to improve the documentation about how to setup output content:
Set Output Content
Easy to setup a output content on workflow job, bellow a example on handle method of job class:
public function handle()
{
    try {
        // Workflow Job
        $this->trackedJob->markAsFinished('Finished with success!');
    } catch (Throwable $e) {
        $this->trackedJob->markAsFailed('Oh No, an error occurred!');
    }
}

Hi @tiagoamemiya,
The output is saved automatically if the job fails. For example, if an exception occurs, the job middleware provided by this package tries to get the message from the exception, and, if there is a message, it will be persisted to the database.
https://github.com/mateusjunges/trackable-jobs-for-laravel/blob/7d7636e74298577e695d67bf756bc78ab0060eff/src/Jobs/Middleware/TrackedJobMiddleware.php#L11-L19
Basically, what this middleware does is wrap the job with a try catch statement, and if something goes wrong, the job is marked as failed and the exception message saved to the database. If the job finishes without any exceptions, then it will be marked as finished
https://github.com/mateusjunges/trackable-jobs-for-laravel/blob/7d7636e74298577e695d67bf756bc78ab0060eff/src/Jobs/Middleware/TrackedJobMiddleware.php#L16
If you manually mark the job as failed, for some reason, without throwing any exceptions, the job is still considered as a successfull job, since laravel queue system works as a daemon that picks up jobs, run them and moves on.
If you want to store the output of any successfull job, you just need to return something from that job. For example, if my job ends with
return "Job finished successfully";

my database record will have Job finished successfully as the job output.
I'll add it to the readme to leave no doubt.

Hi Mateus, thanks for the feedback! Nice job with this plugin, i will use it in some projects here. :rocket:


CockroachDB support

since cochroach 20.1, select for update is implemented
now all tests pass with both, postgres and cockroach.
no need to run postgres before tests can be executed, the databases are now part of the tests
moved testing infrastructure from prefix_test.go to testing.go

Codecov Report

Merging #24 into master will decrease coverage by 0.07%.
The diff coverage is 82.22%.

@@            Coverage Diff             @@
##           master      #24      +/-   ##
==========================================
- Coverage   81.53%   81.45%   -0.08%
==========================================
  Files           8        8
  Lines         509      550      +41
==========================================
+ Hits          415      448      +33
- Misses         50       54       +4
- Partials       44       48       +4

Impacted Files
Coverage Δ

testing.go
79.10% <79.48%> (-0.90%)
:arrow_down:

postgres.go
83.33% <100.00%> (+8.33%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e27e442...5a26c68. Read the comment docs.

@droid42 merge ?


Add more fields to desire lrp body for OPI

[#168003564]
Signed-off-by: Mario Nitchev<EMAIL_ADDRESS>Thanks for contributing to cloud_controller_ng. To speed up the process of reviewing your pull request please provide us with:

A short explanation of the proposed change:

This change adds more fields to desire LRP request for eirini.

An explanation of the use cases your change solves

These fields will in general be useful for writing extensions to eirini. This also allows eirini team to not send multiple pull requests for every time we implement new features.

Links to any other associated PRs

N/A

[x] I have reviewed the contributing guide

[x] I have viewed, signed, and submitted the Contributor License Agreement

[x] I have made this pull request to the master branch

[x] I have run all the unit tests using bundle exec rake

[x] I have run CF Acceptance Tests

If y'all merge this you can close https://github.com/cloudfoundry/cloud_controller_ng/pull/1463!

hey, I don't know what the deal is with the new CLA bot, but it says y'all haven't signed. Can you fix that? I've dragged this near the top of our backlog.

@akshaymankar, what happens when you click on the link?

I get this:

Please close and reopen the PR

Please attempt a close/reopen again.

bump because this is blocking us (sorry for all the CLA fun :))

bump because this is blocking us (sorry for all the CLA fun :))

@julz, @akshaymankar, it looks like EasyCLA check is passing.

Note that the "CLA Not Signed" comment will not update.


Move repository to visionappscz GitHub account

Shouldn't we?

sure, ill do it when i ave time

“… and watch it get ignored.” :-)


Origin Update 18.06.2023 (fix atmos)

This update rolled back a little so i had to redo some small changes.

Added more security lockers to security.
Changed some external airlocks to all access.
Fix plasma in the Nitrogen chamber (wtf).
Fix missing disposal pipe in Virology
Fixed double light in maints.

Changes not originally by me that have been re-added

Re-Added the hidden surgery room
Re-Added the psychologist
Re-Added Shutters to bridge.
Re-Added door through storage in engineering.
Re-added buckets in botany.
Removed all PKAs
Edited origin.yml to remove type - gridpathfinding

Forgor dorm room bolt buttons.
All commits concerning origin from #17119 to this one had them!


Change architecture to support different questionnaires

As discussed yesterday, it might me nice to switch between different themed questionnaires, e.g. nerd related questions.

Done


Add AwaitTweener

Closes https://github.com/godotengine/godot-proposals/issues/7337
Implemented more or less as described in the proposal, see the docs for details.

Using custom_step on the tween should finish the Tweener immediately.

This was not possible, because custom step works as if the time has passed. I could maybe add a method to AwaitTweener to force it to finish, but no other Tweener has such method (though maybe it could be in the base class?).

Example:
extends RigidBody2D

func _ready() -> void:
	var tween := create_tween().set_process_mode(Tween.TWEEN_PROCESS_PHYSICS)
	tween.tween_property(self, ^"modulate", Color.RED, 1.0)
	tween.tween_property(self, ^"freeze", false, 0)
	tween.tween_await($"../Area2D".body_entered).set_unbinds(1)
	tween.tween_callback(queue_free)

https://github.com/godotengine/godot/assets/2223172/4dbb4f21-b441-46cb-8315-d16d268d94d6

Thinking about it, the only time I use custom_step on tweens is when I want to instantly finalize an animation in a predictable manner. For example:
func animation():
    tween = create_tween().set_process_mode(Tween.TWEEN_PROCESS_PHYSICS).set_ease(Tween.EASE_IN_OUT).set_trans(Tween.TRANS_SINE)
    tween.tween_property(some_control, "modulate:a", 1.0, 0.25)
    tween.tween_property(some_control, "position:x", final_pos, 0.25)
    tween.tween_property(other_control, "modulate:a", 1.0, 0.25)
    tween.tween_property(other_control, "position:x", final_pos2, 0.25)
    ...

func skip_animation():
    if tween:
        while(tween.custom_step(10.0)):
            continue
        tween.kill()

When you use skip_animation(), you can know exactly what the final state of the objects will be.
But if you finish an await tween with custom_step,  the object that is being waited on to emit its signal, would still be doing it's thing regardless of the tweener, so the animation would end in an unpredictable state. Maybe custom_step shouldn't do anything for the await tweener and shouldn't be expected to. That also should be noted in the docs.

custom_step() will only progress the timeout, it does not affect waiting for the signal. AwaitTweener will wait no matter how much time passes.

Currently, if the timeout is set to 0, it will skip the check and step won't return false.
bool AwaitTweener::step(double &r_delta) {
	if (timeout > 0) {
		timeout -= r_delta;
		if (timeout <= 0) {
			return false;
		}
	}

Changed. 0 timeout makes the tweener finish immediately, so it's a weird use-case, but why not.

Maybe I'm worried for nothing, but wouldn't the name tween_await_signal (and AwaitSignalTweener) be more clear? In GDScript, you can use await with signals, coroutines, and arbitrary values (they will just be passed as is). And tween_await can only be used with signals. Yes, this is checked by the method signature, but not everyone uses typed GDScript, and in some rare cases the error will only occur at runtime. This is just a suggestion, not a request.

The autocompletion type hint appears even if your Tween is not typed (not to mention the argument is literally called signal), so I don't think it will cause confusion:

Apparently I came up with the same idea yesterday and tried to implement it myself, and came remarkably close to this PR without even knowing it existed 😅 .
There were two things I had in my implementation that I don't see here, that I thought might be worth bringing up as things to add before a merge. (I'm much less experienced with the engine than you are, though, so please let me know if there are reasons for these that I'm just not aware of!)
Unbinds
As I understand, this version of tween_await requires the user to know the number of arguments the signal will pass to all of its connected methods, so they can set it with set_unbinds. While in most cases this should be pretty trivial for the user to determine, it still feels to me like a bit of an unnecessary step – IMO, the engine itself should be able to read the signal it's passed, count the number of arguments, and then use that value.
I attempted to solve this problem on my version by getting the signal's parent's signal list, iterating through it to find the correct signal by name, and counting its arguments there. AThousandShips and I agreed that it feels like a rather hacky workaround, and could potentially fall apart at some point. The solution in this PR definitely feels safer in that regard, but as I said before I think it would be preferable to let the engine count the number of unbinds necessary. (Maybe this would be a reason to file a feature proposal or issue for adding a get_arguments or similar method for Signal?)
Various bits of code to match other Tweeners
For compatibility/parity with the other Tweeners, I think
emit_signal(SceneStringName(finished));

should be included in AwaitTweener::step for the first time it is run after the signal is received. There are also some modifications of r_delta and elapsed_time that I saw in other similar tweeners like CallbackTweener and IntervalTweener that I copied over for my version of AwaitTweener, although I'm not as sure how important those are.
Overall I'm really excited that this implementation exists, and I'm hoping it can make its way to 4.4! I really like tween sequences, and I think this will be a very valuable tool for using them more extensively! 😄

Unbinds

I managed to handle with vararg methods (it's the same what await does).

For compatibility/parity with the other Tweeners, I think

Yeah I totally forgot about finish signal.

elapsed_time

Also forgot about it 🤦♂
I realized the implementation was broken, thanks for the feedback.
I also made the signal connected immediately, because start() can be called multiple times.

Tweaked the behavior to match #96216


Stream.asBroadcastStream - Easy to cause leaks, what is the rationale?

As detailed a bit in the original commit (https://github.com/dart-lang/sdk/commit/131565602727cd5fcd6f1d69477a7dc97cb2d260), Stream#asBroadcastStream has behavior in which:

Listening to the (Broadcast) stream to the first time opens a subscription to the underlying stream
Closing the last subscription to the (Broadcast) stream does not close the subscription

The only way to close the underlying subscription is to receive a callback in asBroadcastStream:
fooStream.asBroadcastStream(onCancel: (subHandle) {
  subHandle.cancel();
});

Internal app ran into a big memory leak because of this, so I'm just wondering what the rationale is for making it so easy to leak.
@floitschG @lrhn @cbracken

tl;dr: Because that's how broadcast streams work, and you might be using them for something they are not intended for.
Broadcast streams are intended to be streams that exist independently of their listeners. That's where the name comes from - they broadcast events into the "ether" whether anybody is listening or not. Canceling the last listener on a broadcast stream doesn't actually mean anything. Broadcast streams are intended for cases like DOM event handlers, where each event can be handled individually, it doesn't matter if you miss some of them, so you can start (and stop) listening at any point.
Normally, the code that controls the stream will know how to handle the lack of listeners. Code using a broadcast StreamController can choose to stop the source of its events at any point, for example when there are no listeners. That's normal and recommended behavior, there is no reason to create events while nobody is listening. If the broadcast stream is, e.g., replaying timer ticks, it can stop the timer entirely while there are no listeners, and start it again when someone starts listening.
For a broadcast stream created by calling asBroadcastStream on a single subscription stream, the options are limited. The default behavior is to treat the source stream as a continuous stream of events and broadcast all of them, closing when the original stream stops. That is, it really broadcasts the original stream's events.
The onListen and onCancel callbacks that you can pass to asBroadcastStream give you a chance to change the default behavior by either pausing or cancelling the original stream when there are no listeners. Pausing/resuming and canceling are the only options, since that's all you can do on a stream subscription.
We have the problem that broadcast streams, and in particular ones created using asBroadcastStream are used just to make a stream accept more than one listener. That's dangerous, because that isn't the only difference between broadcast streams and non-broadcast ("single-subscription") streams, and sometimes the other differences makes the code not work as expected.
If you want two streams that has the same events as one original stream, then you can use https://www.dartdocs.org/documentation/async/1.11.0/async/StreamSplitter-class.html from package:async. That also has memory leak issues if the streams aren't consumed at the same pace - it has to keep the events in memory until every split stream has delivered them.
If you want to have different listeners handle the events over time, you can either keep using the same subscription and changing the callback, or use the https://www.dartdocs.org/documentation/async/1.11.0/async/StreamQueue-class.html class also from package:async to programmatically distribute the events to the code that needs them.

Closing with "works as intended".  Feel free to re-open if I'm mistaken.

That was an excellent explanation, thank you. Sounds very reasonable.


Cannot find a provider for service on redhat version 6.6

Im getting the following recipe compile error:
ERROR: Cannot find a provider for service on redhat version 6.6
caused by this line in attributes file

default['nfs']['service_provider']['lock'] = Chef::Platform.find_provider_for_node node, :service

Considering Il always be using RHEL6.6  could I hardcode the service providers in the attribute file as a temporary fix ?

@clydedacruz What cookbook version are you using? I have the following error with 2.2.1: https://github.com/atomic-penguin/cookbook-nfs/issues/61

worked when I commented the parts that are used to explicitly specify the providers to be used for each service .

This is a dupe of #58.  I released 2.2.2 to force the provider to Upstart, only on an Ubuntu platform.  On RedHat/CentOS, Chef just seems to do the right thing with my testing this fix internally.

Thanks ☺ Shall check it out
From: Eric G. Wolfe<EMAIL_ADDRESS>Sent: Wednesday, July 1, 2015 10:06 PM
To: atomic-penguin/cookbook-nfs
Cc: Clyde Dcruz
Subject: Re: [cookbook-nfs] Cannot find a provider for service on redhat version 6.6 (#60)
Closed #60https://github.com/atomic-penguin/cookbook-nfs/issues/60.
—
Reply to this email directly or view it on GitHubhttps://github.com/atomic-penguin/cookbook-nfs/issues/60#event-345604171.
DISCLAIMER
This e-mail may contain privileged and confidential information which is the property of Persistent Systems Ltd. It is intended only for the use of the individual or entity to which it is addressed. If you are not the intended recipient, you are not authorized to read, retain, copy, print, distribute or use this message. If you have received this communication in error, please notify the sender and delete all copies of this message. Persistent Systems Ltd. does not accept any liability for virus infected mails.


Improved testing of the ImageViewer class

I've broken up the testing of the ImageViewer class into
3 tests, Methods, GlobalDefaults, and Execute.
Also the testing coverage of the class should be greatly
improved.

looks good, merging to next...

nice, merging into next


Look into optimizing moment JS locale data

Feature Request
Description
Looking into our usage and evaluate how much of moment.js we pull in. It looks like there may be some savings we could gain with some webpack config updates.
https://github.com/jmblog/how-to-optimize-momentjs-with-webpack

Given the approaches outlined, I would prefer the ContextReplacementPlugin approach. This would be the simplest configuration to add and document for consumers. What would be nice as well as we could reuse the terraI18n.config.js to scope the pattern to the locales specified for an application.


circuit diagram

Hi Réza, Is interesting for me this project!, I would like to know something more about it. I am trying to do some similar using a Wemos Mini d1 as ESP module for my circuits and I need use an nrf24l01 to make and rf connection between an Arduino nano & My Arduino Wemos. I was seeing this project but I couldn't found the diagram to see how you connected Wemos pins with the nrf24l01..
Thank you Very much!
Cheers!

The nrf24l01 uses SPI to connect to the microcontroller.
I suggest you review the pin connections on the Wemos D1:
https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/ESP8266-WeMos-D1-Mini-pinout-gpio-pin.png?ssl=1
And the nrf24l01 pins
https://components101.com/wireless/nrf24l01-pinout-features-datasheet
Connect MOSI, MISO and SCK(L) pins together. You can use any pins for CE and CSN since they can be configured in the library. Keep in mind pin 0 and pin 2 have special function and are more complicated to use.
Hope this helps

Thank's !! It was very helpful!


Labels with periods do not render

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/autolinked-references-and-urls#labels
What part(s) of the article would you like to see updated?
Article states:

When referencing the URL of a label in Markdown, the label is automatically rendered.

My repo has labels with a period . in them, e.g.: Thing.Abc, Thing.Xyz, etc.
These labels do not render automatically via the described method.
I also tried an escape character \. and a unicode notation .
Expected outcome:
Update documentation to mention labels should not contain .
Additional information
See https://github.com/github/docs/issues/18704, it contains a good explanation and example, which I used to confirm it was not user-error. I was able to get non-period labels to render successfully.

@aspaninks Thanks so much for opening an issue! I'll triage this for the team to take a look :eyes:

Hi @aspaninks, thanks for opening this issue! 💛 This would be a helpful addition to the docs. You or anyone others are welcome to open a PR with this change 👍🏼

Hi can I work on this


Remove ChildValues  & Chunks as public API & Create a consistent, streaming walkValues & walkChunks API

Value::ChildValues() doesn't interact well with large collections because it returns a slice of fully decoded values.
Instead, it should probably be an iterator or return a channel or some such.

Assigning to zane but do we have a concrete proposal? @rafael-atticlabs can you make one?

types.WalkValues(vr ValueReader, target Value, valueCb func(v Value)) - calls 'valueCb' once for every reachable value from (but excluding) target.
types.WalkRefs(vr ValueReader, target Value, refCb (func(r Ref)) - calls refCb once for every distinct reachable Ref.

Updated proposal comment

the go part of this is done and js go bye bye.

(thanks, @zcstarr )


added more retain info for heap snapshot.

Contexts, JSGlobal, JSFunction
fixed heap global command
only essential objects in edges.
fixed kDouble decoding issue.

supports AccessorPair and AccessorInfo.


etcdmain: infer bind addr from addr in v1 flagset

refreshed.

lgtm

It seems that when I build using the build script, the generated etcd file is dynamically linked.
Can you verify that etcd is being statically linked.
There is an explicit comment in the build file that says that etcd is being statically linked. But that does not seem to be the case.


Unable to start an electron session

Hi @vania-pooh.  The error 'create gzip reader: gzip: invalid header' appears when trying to start the electron image. I use the latest version of image browsers/cypress-electron:latest.
Could you help me to resolve this issue, please?

@GolubNick Cypress images work in Moon only.

So, I won't be able to run electron tests on Selenoid, isn't it? Is there some opportunity to run an electron session on Selenoid?

@GolubNick we never tried.

Hi @vania-pooh . I've tried to create an electron image myself to run electron tests in Selenoid. I've took a Dockerfile from thia https://github.com/aerokube/images/tree/master/static/chrome/Dockerfile like the foundation and added some command to install an electron application. Docker image is built successfully but when  try to create session in Selenoid the error is caught
'value: {error: "session not created", message: "session not created: No matching capabilities found",…}
error: "session not created"
message: "session not created: No matching capabilities found"
stacktrace: "#0 0x5601c1773b33 \n#1 0x5601c123c6d8 \n#2 0x5601c1295115 \n#3 0x5601c1294536 \n#4 0x5601c1295b9d \n#5 0x5601c128ff53 \n#6 0x5601c1265a0a \n#7 0x5601c1266ad5 \n#8 0x5601c17a52fd \n#9 0x5601c17be4bb \n#10 0x5601c17a70d5 \n#11 0x5601c17bf145 \n#12 0x5601c179aaaf \n#13 0x5601c17dbba8 \n#14 0x5601c17dbd28 \n#15 0x5601c17f648d \n#16 0x7f0c389fb6db \n"'.
Also this error is appear when I try to build docker image from Dockerfile above without my changes.
Could you help me please? Maybe Docekrfile that I've choosen is incorrect? Thank you.


New version: Tableau.Desktop version 24.2.801 (2024.2.1)

Created by 🥟 Dumplings in workflow run #6863.

Log
Updated: 2024.2.0 → 2024.2.1
Submitting WinGet manifests
Creating manifests
Uploading manifests and making commits
Creating a pull request

Microsoft Reviewers: Open in CodeFlow

https://github.com/microsoft/winget-pkgs/issues/142854


Attempt at cleaning integration test infra

Removed code behind conditions that are true since
Gradle > 1.0-milestone-5
Removed code dealing with GRADLE_OPTS as this is not used by any
forking setup.

@bot-gradle test RFM

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

OK, I've already triggered ReadyForMerge build for you.


Get this library featured in http://www.kotlinweekly.net

Identical to https://github.com/vestrel00/contacts-android/issues/54 but obviously, this is a different (legendary) mailing list.

OMG!!!! THIS GOT FEATURED IN KotlinWeekly issue #275!!!!!!!!


Timed sync interrupt test

this adds a test that uses tokio::select to drop the sync arbitrarily. it sometimes panics with a witness tree error! sometimes it fails with a sapling balance error

superceded by #754


Update Travis CI config

disable running tests in linux build as fglrx does not work,
use OpenCL-ICD to in linux build (now we can at least build tests),
enable OSX build
currently it's allowed to fail as there are many Invalid Work Group Size errors, some are legit, some are very weird
only clang as building with gcc gives Undefined symbols for architecture x86_64: errors I don't know how to fix (see https://travis-ci.org/boostorg/compute/jobs/107840912#L3677)

I'll later try POCL drivers + linux. I don't know if we can use Intel OpenCL driver as it works only on Intel CPU (Core, Xeon etc.) and I'm not sure if builds always run on machine with Xeon CPU.

I added -Wno-deprecated-declarations to all builds, because OpenCL 1.2 cl.h file is used and Boost.Compute contains calls to deprecated OpenCL API functions in order to maintain backward compatibility. It was explained here a few times. I don't know why after suppressing deprecated declaration warnings are still printed. There is also another solution to this problem:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
//use deprecated stuff
#pragma GCC diagnostic pop

-Wno-c99-extensions was added to OSX build, because otherwise this error occurs https://github.com/roboptim/roboptim-core/issues/74 error: empty macro arguments are a C99 feature. Maybe someone has better solution?
In OSX build the newest available Boost is used, in Trusty build 1.55 version and in precise 1.48 version. I think we should add linux build with up-to-date Boost, unfortunately we would need to build it..

Awesome! Thanks for getting this to work again!

Yeah, building Boost from source may be to much work. Are there still time limits for Travis builds on the new infrastructure?
Instead we may just want to wait until Ubuntu 16.04 comes out in a couple months. As this is the new LTS, hopefully Travis will update and we'll get the newer Boost with that.

Well, we just need to build System, Filesystem, Test and Thread. I think it's possible to build it and cache it using ccache (https://docs.travis-ci.com/user/caching/#ccache-cache). But first I'll try to use POCL.
As for time limits:

Because it is very common for test suites or build scripts to hang, Travis CI has specific time limits for each job. If a script or test suite takes longer than 50 minutes (or 120 minutes on travis-ci.com), or if there is not log output for 10 minutes, it is terminated, and a message is written to the build log.

I'll also look into OSX-related bugs.


docs(Perf): Performance guide v1

This PR starts a simple performance page, gathering basic aspects for making a performant Fluent React app.

Warnings

:warning:
There are no updates provided to CHANGELOG. Ensure there are no publicly visible changes introduced by this PR.

  Generated by :no_entry_sign: dangerJS

It will be great to merge #1951 before, it will make this code more understandable...
BTW, you can use .mdx for markup 😛

It will be great to merge #1951 before, it will make this code more understandable...
#1951 merged


Shortcut or Macro to Open SoundBoard

Hi. First, you did an amazing job. This is the best sound module for foundry.
Is it possible to add a shortcut or a macro to open the SoundBoard without have to go to playlist?
Thank you.

Hey, thank you!
There are currently buttons in the Audio tools on the left as well.
Alternatively, if you want to set up a macro, it should work by just using SoundBoard.openSoundBoard() in the macro.
You can also use SoundBoard.openSoundBoardBundled() and SoundBoard.openSoundBoardFav() to open your bundled or favorited board instead.
Hope that helps!


maxLifeDuration prematurely closes the connection

If MaxLifeDuration is set, connection was only reused once and gets closed early as during cloning of ClienConn https://github.com/processout/grpc-go-pool/blob/08356189070e8e896f90ac772a295f18718d0de0/pool.go#L205, timeInitiated was never copied, hence the following condition
if maxDuration > 0 && c.timeInitiated.Add(maxDuration).Before(time.Now()) {
		c.Unhealthy()
	}

gets true next time the Close().
Fix is to copy the timeInitiated from the original object to the clone.Can someone please review https://github.com/processout/grpc-go-pool/pull/12 for the fix? Thanks

hello @manuel-huez, @AgrimPrasad, Can this issue and the mentioned PR be reviewed please? Thanks.

Hey @gillmk, thanks a lot for your contribution! I reviewed your PR and merged it. Closing this now


close icon in filter indicator does not work if filter is created using default()

Package
filament/tables
Package Version
v2.15.26
Laravel Version
v9.26.1
Livewire Version
No response
PHP Version
PHP 8.1.8
Problem description
When a filter is marked as default, you can deselect the filter from the filter popup but not using the close icon in the indicator.

Expected behavior
Two possibilities:

Make the close button operational
Remove the close button if the filter is default

Steps to reproduce
set a Table filter using the default method.
    Tables\Filters\Filter::make('is_featured')->label('Featured')->default(),

Reproduction repository
https://github.com/flyingeek/filament-bug-report
Relevant log output
No response

Hey, this was fixed by #3669, but it's not been released yet

You are too quick !
Anyway I made a nice repo template for my first report. You should link to something similar for reporting bugs in the future.


The system doesn't show anyone else but me

Thank you for this wonderful package. But I'm having a problem. The system works perfect between two computers on the same network. I get all the video uploaded to the other computer but doesn't work for people outside the network. P2P graph always only shows me. How to fix this issue?

Yes, it is possible that peers can't connect mostly when both are behind NAT, that is not properly configured for P2P. Browsers use ICE to solve the issue but it may not help.
The issue is not related to P2P Media Loader directly but is related to WebRTC and ICE implementation and limitations in the browser.
If you can not find other peers to connect you will download directly from the source (i.e. fallback to CDN).


Work around a change in Git's behavior

this is unrelated to

https://github.com/dandi/backups2datalad/issues/40
?

@yarikoptic Completely unrelated.  This is about timestamps emitted by Git; that issue is about timestamps emitted by Dandi Archive.

interesting... just odd that we are going the opposite directions here whenever in

https://github.com/dandi/dandisets/pull/384
modifying assets to have "Z" instead of +00:00

@yarikoptic I opted for +00:00 here because that's the format used by Python's datetime.isoformat() method, while Z seems to be produced by Pydantic 2.x.


Create 0000-01-02-McGinleyN.md

a commit message

You’re all set—the my-slide branch can be safely deleted.


am I being dumb?

public function getRoster($username)
{
$endpoint = '/users/'.$username.'/roster';
$return $this->doRequest('get', $endpoint);
}
added this function to OpenFireRestApi.php to return a users roster, if I feed it a username though it returns a success message but apart from that the arrays are empty, just wondering if I'm missing something obvious...

Sorry, ignore the above, I've spotted the deliberate mistake I made in the php that calls the function now...


Perm hierarchy problems

I'm on 2.5.6 and I just noticed that some perms don't take into role hierarchy.
My example is that I'm using .rc .prune disable Members to restrict prune usage, but it's affecting staff that share that role but also have higher roles, even one that has .arm enable Admins and shouldn't be restricted.
Unless it's intended to work this way? how can I get around to having a staff user that has two roles, a lower one with restrictions and an higher one that overrules those same restrictions?
Thanks in advance for your help.

.arm enable Admins should be above the .rc one, and it will work. Permissions only respect their own hierarchy, not role hierarchy.

When you say higher, you mean by display or number? Because .arm is 9 and the .rc ones are 19-21.

.arm is for Modules,  .rc is for commands at the role level.
.rc .prune enable Admins (who admin nothing) and making sure that's higher up should fix it...

Higher number, yes. 9 is overridden by the ones with the higher number

Great, thanks!


Parallelize taps by partition (configurable in meltano.yml)

Feature scope
Taps (catalog, state, stream maps, tests, etc.)
Description
I'm considering writing my own parallelized task for a meltano tap. I'm submitting this feature request since this can be generalized to run taps in parallel by partition (or even by state, but it's less obvious how to do that IMO). I think we can use the multiprocessing library to run multi-processes by partition. Default behavior of meltano taps would run unless both of these conditions are set:

There is a partition set in the tap
The setting parallelize or multiprocessing (or multithreading ??) is set in meltano.yml

Something like this:
from multiprocessing import Process

processes = []
for i in range(<meltano processes set in meltano.yml>):
    p = Process(target=<meltano run command for specific partition>, args=args)
    p.start()
    processes.append(p)

for process in processes:
    process.join()

or similarly:
with concurrent.futures.ProcessPoolExecutor() as executor:
    results = [<meltano run command> for cmd in range(<n processes in meltano.yml>)]

    for r in concurrent.futures.as_completed(results):
        r.result()

I think you can also do something like this:
executor.map(processes, args)

@melgazar9  - were you able to implement this.

Hey @iSidduHussain I haven't attempted to generalize this process and integrate it into meltano, but I did write something rough in one of my side projects. I haven't fully tested it or know if what I did is best practice following meltano guidelines, but one thing I noticed is it's referencing the same .meltano/meltano.db db even while running in parallel with different state_ids. I think this is ok since I'm auto-generating different state-ids, but I doubt this is a good idea if using the same state-id.
https://github.com/melgazar9/ds-mono-repo/blob/dev/projects/financial_elt/routes.py#L65-L131


Triple click (Google search for example)

Hi!
I have an input text, I wish to erase the text in it (manually), to do that, I need to triple-click on the field and then type Backspace for as many char as there is, is there a way to do that?
Thank you guys~!

This is the easiest option: https://ulixee.org/docs/hero/basic-client/awaited-dom-extensions#clear-value
If that works, please mark this one as closed. Thanks!


ARM64 build file for bevel-alpine image

bevel-alpine Buildfile(s) have amd64 type hardcoded. This alternative Buildfile, bevel-alpine-ARM64.Dockerfile, will create a working image for ARM64 architecture (tested in Raspberry Pi)

@icordoba PR is fine. please sign-off the commit so that it can be merged. https://hyperledger-bevel.readthedocs.io/en/latest/contributing/how-to-contribute/#signed-off-by

Sorry sownak, it's my first Pull Request :-) . I believe that's sorted out now. Please retry.


Support this module

I believe the current proposal is to import meta with:
import { name } from this module;

The nice thing about this syntax, is that it can also transpile into AMD and CommonJS actually using their variants of this pattern.
It would be great to start prototyping with it at some point.

There still is no spec for this to be implemented to. As soon as the spec exists, it can be considered.

Any news on this ? Passing contextual configuration to modules would be very interesting.


css file returned as html

Bug Report
Describe the bug
CSS file returns as HTML mimetype. (added through react-helmet; see repo )
I have also added bootstrap from CDN which works fine, the issue is only with local CSS file.
To Reproduce
https://github.com/abdullahtariq1171/my-docz-app/
Simply run yarn && yarn dev
Expected behavior
It should return the file as CSS
Environment

docz version: ^2.3.0-alpha.6
OS: macos Catalina 10.15.2 (19C57)
Node/npm version: node v10.16.3 /yarn 1.21.1

Additional context/Screenshots

Hello,
From what I understand, Docz doesn't take into account single css files when not imported as modules in some react components.
However, if you still want to add global style with css, what you can do is to create a gatsby-browser.js file at the root of your project and import your css file in it:
// gatsby-browser.js
import "../src/global.css"

Note: the path begins by ../ because the file will be loaded from the .docz/ folder during compilation.

I have tried several variations of trying to serve up my file that provides global styles. It also includes tailwindcss directives. Although, the main issue is that it's never injected into the head of the app. I am not using react-helmet in my app. It works locally when I use wrapper.js component, but when what I am doing never works for a build.

Hey @arecvlohe I've been trying to use tailwindcss with docz, but I am having several problems. It's been 4 months, have you managed to make it work?

I am not sure if this is still a problem with gatsby, but the issue of an imported CSS file not being resolved in production (docz:build and docz:serve) is still present.
I got around this by using component shadowing to override some of the core components and import my stylesheets there through a Styles component

Hey @arecvlohe I've been trying to use tailwindcss with docz, but I am having several problems. It's been 4 months, have you managed to make it work?

No, I've moved on.