Incorrect combining result (using C)

Hello!
Ive created this test vector:
"Vector, nodes 4, closed=1"
"    Node 0 : X=155.575   Y=113.665   B=0"
"    Node 1 : X=161.29   Y=113.665   B=1"
"    Node 2 : X=161.29   Y=114.935   B=0"
"    Node 3 : X=155.575   Y=114.935   B=1"
"Vector, nodes 4, closed=1"
"    Node 0 : X=161.29   Y=113.665   B=0"
"    Node 1 : X=167.64   Y=113.665   B=1"
"    Node 2 : X=167.64   Y=114.935   B=0"
"    Node 3 : X=161.29   Y=114.935   B=1"

Basically it is 2 horisontal lines: second one starts at same point, where first ends (X=161.290 Y=114.300)
I use this C function:
cavc_pline_boolean(scene[countur_in_scene_num], countur2, cavc_booleanOp_And, combine_options, &pos_list, &neg_list);

Could you please take a look on it?

Some additional info:
Im using AND operation to check if 2 counturs overlaping and can be merged.
If pos_list not empty - it means that counturs can be merged. it is not good way, but i did not find how could i do it on C better.
Problem exist if result - closed vector with 2 nodes.

Magenta line - i the result.
Central shape not combined, because AND operation gives zero vector and program assumes that there is no intersections here.
Final goal - i have a list of positive (painted) and negative (islands) counturs (without intersections) and need to add new "painted" countur.
Raw algorithm i see like this:

create list of all already existing positive counturs that connected to new countur.
combine all of them into one positive countur using OR operation, and collect all negative counturs.
use NOT operation with all existing negative counturs, collect results.

Alright this issue should be fixed with commit: https://github.com/jbuckmccready/cavalier_contours/commit/9fb706efadc757e8274b672660422f8955d89c31
The issue was caused by numerical instability due to the implementation of line_circle_intr. I changed the implementation to something more stable and added test cases to cover the case you reported.
Please test and confirm it fixes the issue.

Hello!
Exactly this case resolved:

But i extended my C test, and see some troubles, related to this topic. I need some time to extract values for you, but today it should be ready.

If i did everything correctly, "And" operation shall give same result as test before:
        overlapping_pill_shaped_ends_new {
            (
				pline_closed![(152.8756878376510,<PHONE_NUMBER>364100, 0.0000000000000),<PHONE_NUMBER>376510,<PHONE_NUMBER>364100, 1.0000000000000),<PHONE_NUMBER>623490,<PHONE_NUMBER>635900, 0.0000000000000),<PHONE_NUMBER>623490,<PHONE_NUMBER>635900, 1.0000000000000)],
				pline_closed![(160.7920178773358,<PHONE_NUMBER>859021, 0.0000000000000),<PHONE_NUMBER>773358,<PHONE_NUMBER>859021, 1.0000000000000),<PHONE_NUMBER>226642,<PHONE_NUMBER>140979, 0.0000000000000),<PHONE_NUMBER>226642,<PHONE_NUMBER>140979, 1.0000000000000)]
            )
            =>
            [
                (BooleanOp::And, &[PlineProperties::new(2, 1.2667686977437822, 3.989822670059025, 120.655, 113.665,<PHONE_NUMBER>9999998, 114.935)], &[]),
            ]
        }

May be i have problem with precision here (circle may be moved little bit, precision about 0.001), but my C test say:
const cavc_vertex pline_a[4] = {
    /*0*/ {152.8746878376510,<PHONE_NUMBER>364100, 0.0000000000000},
    /*1*/ {160.7910178376510,<PHONE_NUMBER>364100, 1.0000000000000},
    /*2*/ {161.7896421623490,<PHONE_NUMBER>635900, 0.0000000000000},
    /*3*/ {153.8733121623490,<PHONE_NUMBER>635900, 1.0000000000000},
};
const cavc_vertex pline_b[4] = {
    /*0*/ {160.7910178773358,<PHONE_NUMBER>859021, 0.0000000000000},
    /*1*/ {166.8446878773358,<PHONE_NUMBER>859021, 1.0000000000000},
    /*2*/ {167.8433121226642,<PHONE_NUMBER>140979, 0.0000000000000},
    /*3*/ {161.7896421226642,<PHONE_NUMBER>140979, 1.0000000000000},
}
Operation result:
    pos list size: 1
    neg list size: 0
const cavc_vertex positive[4] = {
    /*0*/ {160.7910178773358,<PHONE_NUMBER>859021, 1.0000000000000},
    /*1*/ {161.7896421623490,<PHONE_NUMBER>635900, 0.0000000000000},
    /*2*/ {153.8733121623490,<PHONE_NUMBER>635900, 1.0000000000000},
    /*3*/ {152.8746878376510,<PHONE_NUMBER>364100, 0.0000000000000},
}

Or graphically:

Resulting vector same as one of inputs (blue+red), just starting point changed.
OR operation also gives incorrect result, i guess by the same root cause.

I'll look into it more today. A few things come to mind:

I wonder if I need to explicitly check the line segment end points distance from arc center to determine if end points intersect. The segment end points are somewhat unique/important to the algorithm and it seems finding tangent intersects between lines and circles is hard to make reliable with fuzzy floating point epsilon handling. I will try to research it some more.
Probably can add tests with the overlapping arc ends at several different angles (e.g., like the new case that fails) to capture a broader range of the same problem.
Also probably need to add tests with the pill shapes move closer and further away by very small increments.

These are great bug cases, helping me correct the fuzzy float epsilon propagation and improve numeric stability!
This latest case hit code paths where epsilon values for fuzzy comparing were not being used correctly (inconsistent between functions), I have it fixed and will commit the changes today.

Alright new commit with more improvements/fixes around epsilon values used for fuzzy comparing: https://github.com/jbuckmccready/cavalier_contours/commit/3bf2b379158c4139b5a91144568b33a3cd91e7a3
It fixes the second case you found and I added the second case as a test as well. It should also improve/reduce numeric error/inconsistencies propagated by fuzzy comparing in general.
Please pull the latest to test and confirm it fixes the issue.

Hello! I plan to check it carefully, but unfortunately today i will be able to implement just several smoke tests. And i will be afk from tomorrow until tuesday.

Checked another test vector, got this:
const cavc_vertex source_a[4] = {
    /*0*/ {113.1450199999994, 99.0409009830200, 0.0000000000000},
    /*1*/ {113.1449999999994,<PHONE_NUMBER>830200, 1.0000000000000},
    /*2*/ {111.6450000000006,<PHONE_NUMBER>169800, 0.0000000000000},
    /*3*/ {111.6450200000006, 99.0408990169800, 1.0000000000000},
};
const cavc_vertex source_b[4] = {
    /*0*/ {113.1450000000000,<PHONE_NUMBER>000000, 0.0000000000000},
    /*1*/ {113.1450000000000,<PHONE_NUMBER>000000, 1.0000000000000},
    /*2*/ {111.6450000000000,<PHONE_NUMBER>000000, 0.0000000000000},
    /*3*/ {111.6450000000000,<PHONE_NUMBER>000000, 1.0000000000000},
};

Looks like OR operation returns one of them. About result of AND - not sure.

I really have no more time today, sorry for few details (

Fixed that case now as well, commit: https://github.com/jbuckmccready/cavalier_contours/commit/fa30fdd15f93417a0d31a004045638939188bf86
Issue was again in the line_circle_intr function, this time caused by squared values being fuzzy compared which are not to scale with the epsilon value, e.g., length * length < eps when it should be length < eps.
Your testing and cases reported has been really helpful, thanks! Pull the latest to test and let me know how it goes.

Thank you to! Really, great library.
I will continue on tuesday, or little later.
Next steps will be:

add tests for arcs (all segments with bulge 1.0)
add tests for random shapes
and finally add tests for combining all theese shapes with respect to direction.

PS: checked update - i can confirm that case abowe was fixed.

Hello!
Sorry for long delay - i found issue of incorrect usage of epsilon, created big description, and after that i found this in my source code: cavc_pline_remove_redundant((cavc_pline *)combined, 0.2); LOL
But during all this stuff i fully ruined my implementation. So i had to complete update of my sw to continue.
Unfortunately after all my updates combining result looks not so good as previously, it is confusing - there is a chance that i introduced some errors.
So, i have several new cases. And they related to epsilon too.
First one
related to epsilon values, so i am not 100% sure about finding validity.
const cavc_vertex source_a[4] = {
    /*0*/ {/*X*/152.2788842579442, /*Y*/58.5145144677570, 0.0000000000000},
    /*1*/ {/*X*/151.6438842579442, /*Y*/53.4345144677570, 1.0000000000000},
    /*2*/ {/*X*/153.1561157420558, /*Y*/53.2454855322430, 0.0000000000000},
    /*3*/ {/*X*/153.7911157420558, /*Y*/58.3254855322430, 1.0000000000000},
};
const cavc_vertex source_b[4] = {
    /*0*/ {/*X*/153.1620000000000, /*Y*/52.7050000000000, 0.0000000000000},
    /*1*/ {/*X*/153.1620000000000, /*Y*/53.3400000000000, 1.0000000000000},
    /*2*/ {/*X*/151.6380000000000, /*Y*/53.3400000000000, 0.0000000000000},
    /*3*/ {/*X*/151.6380000000000, /*Y*/52.7050000000000, 1.0000000000000},
};

Operation OR with this options:
            cavc_pline_boolean_o combine_options;
            cavc_pline_boolean_o_init(&combine_options);
            combine_options.pos_equal_eps = 0.05;
            combine_options.slice_join_eps = 0.05;

Gives incorrect result (i think so);
Second one:
const cavc_vertex source_a[4] = {
    /*0*/ {/*X*/10.2548112191951, /*Y*/4.4473618027979, 0.0000000000000},
    /*1*/ {/*X*/5.8085712191951, /*Y*/8.0043518027979, 1.0000000000000},
    /*2*/ {/*X*/5.0152087808049, /*Y*/7.0126481972021, 0.0000000000000},
    /*3*/ {/*X*/9.4614487808049, /*Y*/3.4556581972021, 1.0000000000000},
};
const cavc_vertex source_b[4] = {
    /*0*/ {/*X*/5.8089199887361, /*Y*/8.0040725860499, -0.2276528214202},
    /*1*/ {/*X*/5.0950100000000, /*Y*/9.4907900625929, 1.0000000000000},
    /*2*/ {/*X*/3.8250100000000, /*Y*/9.4907899374071, 0.2276528214202},
    /*3*/ {/*X*/5.0148600112639, /*Y*/7.0129274139501, 1.0000000000000},
};

Operation OR in my code gives this:
const cavc_vertex result_0[5] = {
    /*0*/ {/*X*/5.0152087808049, /*Y*/7.0126481972021, 0.0000000000000},
    /*1*/ {/*X*/9.4614487808049, /*Y*/3.4556581972021, 1.0000000000000},
    /*2*/ {/*X*/10.2548112191951, /*Y*/4.4473618027979, 0.0000000000000},
    /*3*/ {/*X*/5.8085712191951, /*Y*/8.0043518027979, 0.9996482755531},
    /*4*/ {/*X*/5.0148600112639, /*Y*/7.0129274139501, 0.0001758931564},
};

Or graphically:

(red - source, green - result)
This happens with default epsilon. If i change combine_options.pos_equal_eps = 0.0005; this part is passed.
Increasing this value gives more mistakes. Too small value gives more mistakes too.
But with value 0.0005 failed this combination (value 0.005 gives good result):
const cavc_vertex source_a[4] = {
    /*0*/ {/*X*/34.5520701659868, /*Y*/13.5800000000000, -0.3443278085713},
    /*1*/ {/*X*/39.2580061973296, /*Y*/9.9033180119262, 1.0000000000000},
    /*2*/ {/*X*/42.1688938026704, /*Y*/10.6290819880738, 0.3443278085713},
    /*3*/ {/*X*/34.5520698340132, /*Y*/16.5800000000000, 1.0000000000000},
};
const cavc_vertex source_b[4] = {
    /*0*/ {/*X*/43.5052137502180, /*Y*/5.2838034375545, 0.0000000000000},
    /*1*/ {/*X*/42.1686637502180, /*Y*/10.6300034375545, 1.0000000000000},
    /*2*/ {/*X*/39.2582362497820, /*Y*/9.9023965624455, 0.0000000000000},
    /*3*/ {/*X*/40.5947862497820, /*Y*/4.5561965624455, 1.0000000000000},
};

Also i have this:
const cavc_vertex source_a[4] = {
    /*0*/ {/*X*/24.2719330436524, /*Y*/4.8163319805663, 0.0000000000000},
    /*1*/ {/*X*/16.1052530436524, /*Y*/14.7344219805663, 1.0000000000000},
    /*2*/ {/*X*/15.3209269563476, /*Y*/14.0885980194337, 0.0000000000000},
    /*3*/ {/*X*/23.4876069563476, /*Y*/4.1705080194337, 1.0000000000000},
};
const cavc_vertex source_b[4] = {
    /*0*/ {/*X*/11.7209392690379, /*Y*/15.8420000000005, -0.2299490931599},
    /*1*/ {/*X*/15.3138743717012, /*Y*/14.0973589501497, 1.0000000000000},
    /*2*/ {/*X*/16.1123056282988, /*Y*/14.7256610498503, 0.2299490931599},
    /*3*/ {/*X*/11.7209407309621, /*Y*/16.8579999999995, 1.0000000000000},
};

I have more results, but they look contradictory for me - depend on epsilon. Some vectors pass with high value, some - with low value, Some pass if vector moved.
Could you please teake a look on overall situation, and give me advice what kind if related information is mostly usable for you, and how should i deal with combine options to provide good data for you.
PS. if library has function to check if two vectors intersecting, could you add it to ffi? - it will improve my code.
PPS. I can provide vectors in more convinient way for you, if you'll show me how it should look.

I found using 1e-5 for position equal epsilon and 1e-4 for slice join epsilon to yield good results when using doubles (this is the default used in the library). Small enough to not clobber inputs but large enough to avoid inconsistencies across math operations. These are the epsilon values I am using to reproduce and fix the issues you are reporting.
I will look into the cases you posted today.
Adding polyline intersect functions to c ffi shouldn't be too hard, just takes some time/attention... Can you give it a shot and make a pull request? These are the functions that would be wrapped: self interects and intersects between two polylines. So basically just need to define the c structures to return the result and make a c ffi wrapper function, you can see examples of this in the current c ffi code: https://github.com/jbuckmccready/cavalier_contours/blob/master/cavalier_contours_ffi/src/lib.rs
Most convenient form to post example cases is in the json form that matches the interactive web demo here: https://jbuckmccready.github.io/cavalier_contours_web_demo_page/
So the input looks like the following json:
{
  "isClosed": true,
  "vertexes": [
    [100, 100, -0.5],
    [80, 90, 0.374794619217547],
    [210, 0, 0],
    [230, 0, 1],
    [320, 0, -0.5],
    [280, 0, 0.5],
    [390, 210, 0],
    [280, 120, 0.5]
  ]
}

Hello!
So, i propose stop playing with epsilon values and simply use default. We can return to epsilons later.
I removed all epsilon modifications from my code and extracted several cases.
May be it will be easier to start from them:

{
  "isClosed": true,
  "vertexes": [
    [9.205577051997063, 7.029369955609887, 0.000000000000000],
    [18.231617051997059, 2.014909955609888, 1.000000000000000],
    [18.848382948002939, 3.125090044390112, 0.000000000000000],
    [9.822342948002939, 8.139550044390113, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [9.822782733308527, 8.139305491458524, -0.207545228447529],
    [7.056947779266055, 11.750330431457192, 1.000000000000000],
    [5.824672220733945, 11.443089568542808, 0.207545228447529],
    [9.205137266691475, 7.029614508541476, 1.000000000000000]
  ]
}

{
  "isClosed": true,
  "vertexes": [
    [6.012782733308527, 6.869305491458524, -0.207545228447529],
    [3.246947779266055, 10.480330431457192, 1.000000000000000],
    [2.014672220733944, 10.173089568542808, 0.207545228447529],
    [5.395137266691473, 5.759614508541476, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [1.413958758496091, 12.575992893779793, 0.000000000000000],
    [2.014768758496091, 10.172702893779793, 1.000000000000000],
    [3.246851241503909, 10.480717106220208, 0.000000000000000],
    [2.646041241503909, 12.884007106220208, 1.000000000000000]
  ]
}

{
  "isClosed": true,
  "vertexes": [
    [13.015577051997061, 9.569369955609886, 0.000000000000000],
    [22.041617051997061, 4.554909955609888, 1.000000000000000],
    [22.658382948002942, 5.665090044390113, 0.000000000000000],
    [13.632342948002938, 10.679550044390112, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [13.632782733308526, 10.679305491458523, -0.207545228447530],
    [10.866947779266056, 14.290330431457191, 1.000000000000000],
    [9.634672220733943, 13.983089568542811, 0.207545228447530],
    [13.015137266691474, 9.569614508541475, 1.000000000000000]
  ]
}

{
  "isClosed": true,
  "vertexes": [
    [9.033958758496091, 16.385992893779790, 0.000000000000000],
    [9.634768758496090, 13.982702893779793, 1.000000000000000],
    [10.866851241503909, 14.290717106220209, 0.000000000000000],
    [10.266041241503910, 16.694007106220209, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [13.632782733308526, 10.679305491458523, -0.207545228447530],
    [10.866947779266056, 14.290330431457191, 1.000000000000000],
    [9.634672220733943, 13.983089568542811, 0.207545228447530],
    [13.015137266691474, 9.569614508541475, 1.000000000000000]
  ]
}

{
  "isClosed": true,
  "vertexes": [
    [25.604811219195092, 15.257361802797867, 0.000000000000000],
    [21.158571219195093, 18.814351802797869, 1.000000000000000],
    [20.365208780804910, 17.822648197202131, 0.000000000000000],
    [24.811448780804909, 14.265658197202132, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [21.158919988736113, 18.814072586049921, -0.227652821420176],
    [20.445009999999996, 20.300790062592878, 1.000000000000000],
    [19.175010000000000, 20.300789937407121, 0.227652821420176],
    [20.364860011263890, 17.822927413950080, 1.000000000000000]
  ]
}

{
  "isClosed": true,
  "vertexes": [
    [31.425213750217996, 14.363803437554500, 0.000000000000000],
    [30.088663750217997, 19.710003437554498, 1.000000000000000],
    [27.178236249782003, 18.982396562445501, 0.000000000000000],
    [28.514786249782002, 13.636196562445500, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [22.472070165986750, 22.660000000000011, -0.344327808571312],
    [27.178006197329630, 18.983318011926176, 1.000000000000000],
    [30.088893802670370, 19.709081988073823, 0.344327808571312],
    [22.472069834013247, 25.659999999999989, 1.000000000000000]
  ]
}

Case 3 and 4 use same vector b.
All this cases has common part - not ortogonal line + tangent arc, so i have a feeling all this cases has same root cause.
Regarding pull request - please give me some time - im not so good in all this stuff.

Thanks, I'm working on it now. I fixed the issue in the first cases you posted, I think it is the same issue as the rest (as you mentioned). I'm working through all the new cases you just posted and adding them as test cases.

Well I've been trying to trap things, but it's been difficult. I have things sort of "fixed" but the tests still failing because of differing number of vertexes in the result when one of the polylines directions is inverted (which the tests automatically check). Visually the results essentially look the same but there is +/- 1 vertex that is very close (but not touching according to epsilon values) another vertex, or an additional very small loop/area polyline.
The problem arises dues to differing results between arc-arc intersect finding and line-arc intersect finding (and the sub questions for the type of intersect, e.g. overlapping or tangent).
I'm still thinking about how to improve/change the algorithmic approach to avoid the issues.

I know several guys, who really good in math algorithms.
If you describe this part of algorithm and whats going wrong, we can think about it tohether.

Alright, fixed with commit: https://github.com/jbuckmccready/cavalier_contours/commit/7faddb185ab09c44723beb754bc7e37180404d3e
I added automated tests for all cases reported so far. Keep testing and let me know how it goes.

For all available cases it works good! No issues for now.
The only one thing i can add, that in OR operation tests some nodes duplicated:

But cavc_pline_remove_redundant((cavc_pline *)combined, 0.001); function fix it without problems:

I will continue testing with more cases.

Share the cases with vertexes very close together in the end result and I can look into it. It may be something simple to fix.

It happens in all vectors from 30 Aug post.
For example this:
{
  "isClosed": true,
  "vertexes": [
    [6.012782733308527, 6.869305491458524, -0.207545228447529],
    [3.246947779266055, 10.480330431457192, 1.000000000000000],
    [2.014672220733944, 10.173089568542808, 0.207545228447529],
    [5.395137266691473, 5.759614508541476, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "vertexes": [
    [1.413958758496091, 12.575992893779793, 0.000000000000000],
    [2.014768758496091, 10.172702893779793, 1.000000000000000],
    [3.246851241503909, 10.480717106220208, 0.000000000000000],
    [2.646041241503909, 12.884007106220208, 1.000000000000000]
  ]
}

OR combination gives this result:
{
  "isClosed": true,
  "vertexes": [
    [2.014768758496091, 10.172702893779793, 0.207530349794348],
    [5.395137266691473, 5.759614508541476, 1.000000000000000],
    [6.012782733308527, 6.869305491458524, -0.207545228447529],
    [3.246947779266055, 10.480330431457192, 0.000156906888925],
    [3.246851241503909, 10.480717106220208, 0.000000000000000],
    [2.646041241503909, 12.884007106220208, 1.000000000000000],
    [1.413958758496091, 12.575992893779793, 0.000000000000000]
  ]
}

Point 3.246947779266055, 10.480330431457192 looks dulicated.

But distance between
[3.246947779266055, 10.480330431457192, 0.000156906888925],
[3.246851241503909, 10.480717106220208, 0.000000000000000],
looks >epsilon, so i dont think that it is an issue, it is just look like an issue. So i propose to take a short look on it, and leave it as is.
I have additional cases for you, but collecting data in progress, it will be ready in several hours.

Hi
I have something like intermediate result. Investigation is ongoing.
Rust code report error in some combination of data. But same input vectors in web demo give good result.
I claimed on my code (it was really dirty) and re-implemented it from scratch and fully checked it using drMemory (and thats why i was silent for all this time)
So, on this input data we have panic:
{
  "isClosed": true,
  "Area": 14.2499,
  "vertexes": [
    [11.664990000000303, 18.442909378846142, 0.000000000000000],
    [11.665000000000305, 8.219999378846142, 1.000000000000000],
    [12.934999999999697, 8.220000621153860, 0.000000000000000],
    [12.934989999999695, 18.442910621153860, 1.000000000000000]
  ]
}
{
  "isClosed": true,
  "Area": 4.72737,
  "vertexes": [
    [13.062000000000001, 8.220000000000001, 0.000000000000000],
    [13.062000000000001, 10.125000000000000, 1.000000000000000],
    [11.538000000000000, 10.125000000000000, 0.000000000000000],
    [11.538000000000000, 8.220000000000001, 1.000000000000000]
  ]
}

Operation AND (used to check for intersections) give this output:
thread '<unnamed>' panicked at 'point does not lie on the line defined by p0 to p1', C:\cavalier_contours-master\cavalier_contours\src\core\math\base_math.rs:278:9
stack backtrace:
   0: std::panicking::begin_panic<str>
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3\library\std\src\panicking.rs:616
   1: cavalier_contours::core::math::base_math::parametric_from_point<f64>
             at C:\cavalier_contours-master\cavalier_contours\src\core\math\base_math.rs:278
   2: cavalier_contours::core::math::line_circle_intersect::line_circle_intr<f64>
             at C:\cavalier_contours-master\cavalier_contours\src\core\math\line_circle_intersect.rs:156
   3: cavalier_contours::polyline::pline_seg_intersect::pline_seg_intr::closure$0<f64>
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\pline_seg_intersect.rs:147
   4: cavalier_contours::polyline::pline_seg_intersect::pline_seg_intr<f64>
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\pline_seg_intersect.rs:236
   5: cavalier_contours::polyline::internal::pline_intersects::find_intersects::closure$0<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64>,f64>
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\internal\pline_intersects.rs:355
   6: static_aabb2d_index::core::impl$15::visit<f64,tuple$<>,cavalier_contours::polyline::internal::pline_intersects::find_intersects::closure_env$0<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64>,f64> >
             at C:\Users\KarakurT\.cargo\registry\src\github.com-1ecc6299db9ec823\static_aabb2d_index-0.6.0\src\core.rs:215
   7: static_aabb2d_index::static_aabb2d_index::StaticAABB2DIndex<f64>::visit_query_with_stack<f64,cavalier_contours::polyline::internal::pline_intersects::find_intersects::closure_env$0<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyl
             at C:\Users\KarakurT\.cargo\registry\src\github.com-1ecc6299db9ec823\static_aabb2d_index-0.6.0\src\static_aabb2d_index.rs:1016
   8: cavalier_contours::polyline::internal::pline_intersects::find_intersects<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64>,f64>
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\internal\pline_intersects.rs:399
   9: cavalier_contours::polyline::internal::pline_boolean::process_for_boolean<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64>,f64>
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\internal\pline_boolean.rs:55
  10: cavalier_contours::polyline::internal::pline_boolean::polyline_boolean<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64>,f64>
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\internal\pline_boolean.rs:744
  11: cavalier_contours::polyline::traits::PlineSource::boolean_opt<cavalier_contours::polyline::pline::Polyline<f64>,cavalier_contours::polyline::pline::Polyline<f64> >
             at C:\cavalier_contours-master\cavalier_contours\src\polyline\traits.rs:1459
  12: cavalier_contours_ffi::cavc_pline_boolean::closure$0
             at C:\cavalier_contours-master\cavalier_contours_ffi\src\lib.rs:965
  13: std::panicking::try::do_call<cavalier_contours_ffi::cavc_pline_boolean::closure_env$0,i32>
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3\library\std\src\panicking.rs:492
  14: std::panicking::begin_panic::impl$1::take_box<str>
  15: std::panicking::try<i32,cavalier_contours_ffi::cavc_pline_boolean::closure_env$0>
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3\library\std\src\panicking.rs:456
  16: std::panic::catch_unwind<cavalier_contours_ffi::cavc_pline_boolean::closure_env$0,i32>
             at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3\library\std\src\panic.rs:137
  17: cavalier_contours_ffi::cavc_pline_boolean
             at C:\cavalier_contours-master\cavalier_contours_ffi\src\lib.rs:949
  18: addCounturToLayerVector
             at D:\repository\andreyrodi_elwand\DESCTOP_APPS\LIBRARIES\Utils_test\Utils\utils.cpp:167
  19: main
             at D:\repository\andreyrodi_elwand\DESCTOP_APPS\LIBRARIES\Utils_test\main.cpp:61
  20: invoke_main
             at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  21: __scrt_common_main_seh
             at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  22: __scrt_common_main
             at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:330
  23: mainCRTStartup
             at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:16
  24: BaseThreadInitThunk
  25: RtlUserThreadStart
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

I also tried to update math.rs:278 - removed assert and compared value with zero to get more information. But this update fixed issue somehow.
I will continue investigation, moreover input vector is not real input - it was calculated using some functions from library and i could corrupt something on this step.
Im stiil thinking that problem in my code, but i would be gratefull for any ideas.
Best regards, Andrei

I will take a look at it in next few days. There are some debug asserts which are maybe triggering due to fuzzy comparison stuff.

Fixed with commit: https://github.com/jbuckmccready/cavalier_contours/commit/7cce6cd13ba48d825ad9184a6efdaa427c3bc3d3
I improved the way the debug assert is done and also improved the calculation to use the larger denominator to avoid error in case of very small component difference.

Hello!
Checked - issue was resolved.


Feat [Docs]: Add data contracts for each scraper

Problem Statement
Currently, the data contract that the validator accepts is only implicitly defined in the code. As we expand to support various scrapers (including user-created ones like Reddit scrapers one of Discodrd's members mentioned earlier), we need to explicitly document these data contracts to facilitate easier integration and understanding for developers.
Acceptance Criteria

[ ] Document the current data contract for the Twitter scraper
[ ] Create a section in the dev docs explaining the structure of data accepted by validators
[ ] Provide clear examples of the data format for each supported scraper type

Additional Context

The current data contract can be seen in the code, specifically in the recent endpoint
There's interest from the community in creating scrapers for other platforms (e.g., Reddit)
Documenting these contracts will support the ecosystem's growth by allowing third-party developers to create compatible scrapers

Proposed Solution

Create a new section in the dev docs titled "Validator Data Contracts"
For each supported scraper type (starting with Twitter):

Describe the expected data structure
Provide a JSON schema or example of the data object
Explain any specific requirements or limitations

Include guidance on how developers can propose and integrate new scraper types

Please note that while documenting these contracts, we're not immediately implementing new scraper types (like Reddit). This documentation will serve as a guide for future expansions and community contributions.
Link to Discord discussion about Reddit scraper that led to this ticket: https://discord.com/channels/799672011265015819/1275149537547391058/1279122832378433652

Canceled - people should be using protocol node


Hybrid query/liveQuery evaluator

Currently the liveQuery evaluator relies on a permanent log of all operations that the Cache has ever received. When a liveQuery is created the initial results are created by rerunning this log against the current state of the Cache. This is undesirable for two reasons:

It puts unnecessary burden on the brower's memory
It may produce unpredictable results because the operations are being rerun against the Cache when it's in a different state from when they were originally run.

As discussed with @dgeb the intention is to move to a hybrid evaluator that will create initial results using query operators, emit those and then stream further results using live query operators.
General thoughts:

It would be nice to have a single evaluator that could do any of:

cache.query(oql)
cache.liveQuery(oql, {initialResults: true})
cache.liveQuery(oql, {initialResults: false})

might be a refinement for the future though.

My intention is to reuse the Evaluator to build Reql queries I.e. reqlEvaluator.evaluate(oql). I haven't thought this through enough yet to see the best way to reuse Evaluator but perhaps worth having this use case in mind.

edit: clarified point 2

Was solved by #288


Update conf:support assign the linker from env

if use c++  in thirdparty module, can configure usage:  LINK=g++ ./configure ....
this is easy way support link the the cpp module into tenginx

我这边重新发一个新的pull request 吧

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: tanguofu:x: zhuzhaoyuanYou have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: zhuzhaoyuan:x: TanGuofuTanGuofu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Merging multiple STEP files into one resulting file

Hello everybody,
last week we luckily discovered this library. After some testing of the library, we think this project is a great possibility to push the idea of a simplified usage of OpenCascade more forward.
Since our ecosystem is mainly based on NodeJs & TypeScript backend services, we think this library would fit greatly into our environment. Currently we use a self build C++ wrapper for OCC, which is then translated with SWIG into a C#-usable library for a .NET backend service - we would like to replace this service with a Nodejs based service.
Our two main use cases (or what we want to achieve is) for OpenCascade inside backend services are:

[x] Converting STEP files into GLTF files via CLI / Code
[ ] Merging / loading multiple STEP files into one document with a model specific transformation matrix. The result then can be exported as a STEP file as well.

It would be great if the library could be extended since our knowledge about OCC is currently very limited - but we work on it.

Hello Maximilian,
thank you for the feature proposal! I will have a look at how this can be implemented and let you know, as soon as I found a solution...
BR, Georg


Features/home page

https://drive.google.com/file/d/18KVdtOP55k2_s-_04o1Eq4hr_v4Aim1L/view?usp=sharing
This is a demo.

https://drive.google.com/file/d/18KVdtOP55k2_s-_04o1Eq4hr_v4Aim1L/view?usp=sharing
This is a demo.

https://drive.google.com/file/d/1GeqUKm0LlOrtmNe9FoJ2GAKRtkemG7oz/view?usp=sharing
Don't worry about the format of the post from comment page, Kien will convert that draftjs format and link it with post later

https://drive.google.com/file/d/1EECJAz2nxENNesV7oqTRcXWzeB2CX4Gc/view?usp=sharing

https://drive.google.com/file/d/1EECJAz2nxENNesV7oqTRcXWzeB2CX4Gc/view?usp=sharing

https://drive.google.com/file/d/1tGZNkRxvQhyKEyIN6aOh2Pr1j85GPs3x/view?usp=sharing
This is the demo clip.


A proposal for better generated names

Sometimes I have to grep through the generated Verilog for a wire/reg/etc. named _GEN*.
This process would be a bit more user friendly if the Firrtl-generated names were distinguished by type.  So wires could be named _GEN_W*, registers _GEN_R*, and so forth.
I imagine (hope) this would not be a burdensome change, and it would definitely improve readability.
See also my related request: ucb-bar/chisel3#535

It's a lot more burdensome here than in Chisel (and thus will probably happen in stages rather than one fell swoop). Firrtl also almost exclusively generates wires and nodes which in their use here are almost always identical. Would it perhaps be better to start trying to have things named based on the name of whatever thing leads to their creation? If a vec named myROM creates a bunch of nodes they could be named something like _GEN_myROM_1?

That would be even better!

Thoughts @azidar?

I have implemented something like this before - the problem was if a GEN helps generate another GEN, then you get names like _GEN_94_GEN_41_myRom_1 etc. I think its certainly worth spending some time on, but the solution isn't simple.


Confirm DS218+ with 7.0

Cross-built on x86_64 with Fedora 34 using the following
$ git clone https://github.com/runfalk/synology-wireguard.git
$ cd synology-wireguard
$ mkdir toolkit_tarballs
$ mkdir artifacts
$ sudo docker build -t synobuild .
$ sudo docker run --rm --privileged --env PACKAGE_ARCH=apollolake --env DSM_VER=7.0 -v $(pwd)/artifacts:/result_spk synobuild

It has worked for me. I'm using it with WeeJeWel's wg-easy image with no problem. While compiling I had issues with certificates, fixed by adding --no-check-certificate to wget in Makefile calls.

It has worked for me. I'm using it with WeeJeWel's wg-easy image with no problem. While compiling I had issues with certificates, fixed by adding --no-check-certificate to wget in Makefile calls.

also built successfully for me on Mac OS, and installed successfully on my DSM 918+.
after manually started with 'sudo /var/packages/WireGuard/scripts/start' , the terminal print out such message
'WireGuard has been successfully started'


Remove Constants with Develop Conflicts resolved

Resolved the Issue [https://github.com/ChoiysApple/Filmboard/issues/27]

@ChoiysApple can you kindly merge this.


Use serde_yaml throughout yaml_test_runner instead of yaml-rust

Description
Replaces usages of yaml-rust with serde_yaml, avoids mixing of YAML parsers as well as being more actively maintained and has integration with serde ecosystem. Also now successfully parses at least one more YAML test case that yaml-rust was failing on, but currently needs to be ignored due to issue with numeric indexing of JSON objects.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #151 (c2c8a31) into main (bd62406) will decrease coverage by 0.13%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #151      +/-   ##
==========================================
- Coverage   65.25%   65.13%   -0.13%
==========================================
  Files         314      313       -1
  Lines       52033    51869     -164
==========================================
- Hits        33955    33785     -170
- Misses      18078    18084       +6

Flag
Coverage Δ

integration
65.13% <ø> (-0.13%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 11 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Azure Blob Storage input

Thank you for this awesome project! I have a use case where I need Benthos to have the Azure Blob Storage input, but, for now, it only seems to have the output, which was added in #466 and refined in #514.
As @mfamador mentioned here, this would also be beneficial for having integration tests (using Azurite).
I am thinking of writing the code to add this input and upstreaming the changes in a PR, if you're interested in having such a contribution.
Would that be of interest to you?

Hey @mihaitodor, yeah this totally makes sense. I'm not too familiar with blob storage but I'm assuming this would be a "walk the directory and pull each file seen, then close" type of job. I would imagine a lot could be copied from the new aws_s3 input, although there's logic there for streaming SQS notifications that wouldn't need copying over. Although if there's a possibility for downloading from blob storage based on upload notifications that'd be nice to add at some point as well.

Hi @Jeffail and @mihaitodor!
Great, this is something I was planning to do for a while, but since I don't have a real use case, for now, I've been postponing it. If you need any help on this just let me know, please.
You probably already know, but If you want to mimic the same behaviour of emitting upload notification events from the container to a queue as in AWS S3/SQS, you might want to have a look to Azure Event Grid where we can also subscribe the events from uploading to blob storage and send them to a Storage Queue, for example. Here's an example setting this up, in which I believe we'd just needed to change the event handlers from Web Hook to Storage Queues: https://docs.microsoft.com/en-us/azure/event-grid/blob-event-quickstart-portal
Cheers

@Jeffail @mfamador Thank you for the quick replies! For now, we're thinking to go with the "walk the directory and pull each file seen, then close" option and leave the Event Grid + Storage Queue part as a future enhancement. Will keep you posted.


rosbash: don't hack bash

We use the real bash and this just complicates things. Put it under a PACKAGECONFIG that we can disable. This would be difficult to undo from another bbappend so we just do it here.

Associated bar_truck changes: https://github.com/BadgerTechnologies/bar_truck/pull/3192

Closing because we went with a different approach.


How to save the model?

Hi,
When I set the BasicBlock's option as "A" and save the model with following code:
torch.save(model,  'test.pkl'),
here is the error:
"AttributeError: Can't pickle local object 'BasicBlock.init..'"
What's problem?
Thanks!

it is not recommended to save model, you should save model's state instead:
 torch.save(model.state_dict(), 'test.pkl")


frost-password regressions

The X clear button appears off-center vertically. It doesn't seem intentional because a regular text entry has its button vertically centered.
The reveal button is never shown.

Both of these can be seen on the demo page.

Fixed in #147


Tweak pint action author

@alecritson do we need to make a styling mistake to check it works?

chore: fix code style

Looks like it works https://github.com/lunarphp/lunar/pull/1959/commits/345e2442abdaa2f642fb9dae7e08466db5fe6f99


post_group_manifests: make the plugin work on no amd64 platforms

I have been hitting this error path on ppc64le while running osbs-box. I don't think that restricting this code path to intel only is necessary, although I'm not 100% sure what other side effects this change might have.
For the record I have been using this way patched atomic-reactor for some time on ppc64le in conjunction with osbs-box and seen no issues.

The amd64 platform is "special" for manifest lists, in that if the client does not support manifest lists then it gets an image for the amd64 platform (or 404 if there is none).
This is the logic that lead to the decision in the code for group_manifests=false to only pick the amd64 platform.
However, it doesn't really make sense to have multiple worker builds when group_manifests=false because only one is used as the result. Given that, perhaps that case (len(source) != 1) should be considered an error?

Ok, sounds right, but what should happen if there is no intel image only non intel ones?

I think the len(source) == 1 check should be instead of the self.goarch.get(platform, platform) == 'amd64' check.

Yes that makes sense. And if it's not exactly 1 raise an error?

Yes, raise an error if there were multiple workers.

@twaugh  @lcarva
well what about len(source) > 0 ?
why not just tag digests for all platforms?
also that comment needs change or we should be returning something in case group manifests are disabled, as of now it returns empty dict

Updated the PR with the suggested fix and changed the comment. I hope it is now correct.
Sorry for longer iteration time.

It's still failing the group_manifest unit test cases.

Tests should be fixed now, question is if it is correct expected way.

Fixed py3 incompatibility of tests.

Updated release notes draft:

post_group_manifests runs properly without grouping manifests on non-amd64 platform


BERT or Transformer?

Hi Kevin,
Thank you for the impressive work!
In section 3.3, it says "a vanilla bidirectional transformer architecture" is adopted with a citation to the origin transformer paper. Also in Appendix C2, "an auto-regressive transformer" is used as a baseline.
I am quite confused since it looks like the implementation uses a BERT architecture (for both the main model and the autoregressive baseline). I am wondering whether the implementation or the preprint has been updated.
Best,

I have the same question. It does seem confusing.


[HUDI-2008] Add an annotation to suppress the compiler warnings

Tips

Thank you very much for contributing to Apache Hudi.
Please review https://hudi.apache.org/contributing.html before opening a pull request.

What is the purpose of the pull request
(For example: This pull request adds quick-start document.)
Brief change log
(for example:)

Modify AnnotationLocation checkstyle rule in checkstyle.xml

Verify this pull request
(Please pick either of the following options)
This pull request is a trivial rework / code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end.
Added HoodieClientWriteTest to verify the change.
Manually verified the change by running a job locally.

Committer checklist

[ ] Has a corresponding JIRA in PR title & commit

[ ] Commit message is descriptive of the change

[ ] CI is green

[ ] Necessary doc changes done or have another open PR

[ ] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

Codecov Report

Merging #3076 (85f2857) into master (7d9f9d7) will decrease coverage by 46.60%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master   #3076       +/-   ##
============================================
- Coverage     55.04%   8.43%   -46.61%
+ Complexity     4029      62     -3967
============================================
  Files           526      70      -456
  Lines         25466    2880    -22586
  Branches       2886     359     -2527
============================================
- Hits          14018     243    -13775
+ Misses        10057    2616     -7441
+ Partials       1391      21     -1370

Flag
Coverage Δ

hudicli
?

hudiclient
?

hudicommon
?

hudiflink
?

hudihadoopmr
?

hudisparkdatasource
?

hudisync
6.79% <ø> (-44.66%)
:arrow_down:

huditimelineservice
?

hudiutilities
9.09% <ø> (-61.87%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...org/apache/hudi/utilities/HoodieClusteringJob.java
0.00% <ø> (-62.50%)
:arrow_down:

...va/org/apache/hudi/utilities/IdentitySplitter.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...va/org/apache/hudi/utilities/schema/SchemaSet.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...a/org/apache/hudi/utilities/sources/RowSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../org/apache/hudi/utilities/sources/AvroSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../org/apache/hudi/utilities/sources/JsonSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...rg/apache/hudi/utilities/sources/CsvDFSSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...g/apache/hudi/utilities/sources/JsonDFSSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...apache/hudi/utilities/sources/JsonKafkaSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...pache/hudi/utilities/sources/ParquetDFSSource.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 503 more

@leesf  Okay, when I have time, I will take a look. Do I need to recreate another branch or PR?

@leesf Okay, when I have time, I will take a look. Do I need to recreate another branch or PR?

yes, you would open a new PR as you did before.


Allow Emitting Async Await Directly

It would be helpful to turn off the transformation of async await code, to allow it to be emitted directly. The Typescript implementation has some bugs (like #4367) so I would prefer just letting Babel handle this for me.

Duplicate of #4692

Closed then as duplicate


Clean up shell view styles

The shell view styles have been cleaned up such that their titles
are now horizontally aligned in the soft and are the correct color.
Styles have been added for the dominant title and description
texts.

ok

ok


CMake: also find jconfig.h from libturbojpeg from arch-specific include directory

Description
This header file is architecture-dependent and can be stored as:

/usr/include/i386-linux-gnu/jconfig.h
/usr/include/x86_64-linux-gnu/jconfig.h

Instead of:

/usr/include/jconfig.h

That fixes build errors like this:
CMake Error at src/cmake/modules/FindJPEGTurbo.cmake:32 (file):
  file STRINGS file "/usr/include/jconfig.h" cannot be read.
Call Stack (most recent call first):
  src/cmake/checked_find_package.cmake:127 (find_package)
  src/cmake/externalpackages.cmake:139 (checked_find_package)
  CMakeLists.txt:155 (include)

Checklist:

[x] I have read the contribution guidelines.
[x] If this is more extensive than a small change to existing code, I
have previously submitted a Contributor License Agreement
(individual, and if there is any way my
employers might think my programming belongs to them, then also
corporate).
This change is too small and not original enough to be subject to copyright.
[x] I have updated the documentation, if applicable.
Not applicable.
[x] I have ensured that the change is tested somewhere in the testsuite
(adding new test cases if necessary).
Not applicable.
[x] My code follows the prevailing code style of this project.

Starting with version 2.1.0 libjpeg-turbo provides it's own cmake config files, but they are named different to what is used in oiio cmake files.
I think the line:
checked_find_package (JPEGTurbo

Should be changed to:
checked_find_package (libjpeg-turbo

so that distro provided library is detected if present.

That's interesting, @domin144. I'm tempted to advise abandoning this PR entirely and instead simply removing FindJPEGTurbo.cmake entirely, relying on jpeg-turbo's exported config, and calling it a day. That will mean that we are raising the floor of JPEG-turbo that we support to 2.1. But since that's still 2.5 years old and this is not a required dependency (we can automatically fall back to libjpeg), I think that would be acceptable.
Opinions?

I tried the other strategy here: https://github.com/OpenImageIO/oiio/pull/3987
What do people think of that proposal, which would obviate the need for this one here?


Bluetooth support for all chips

[x] ESP32
[x] ESP32-C2
[x] ESP32-C3
[x] ESP32-C6
[ ] ESP32-H2
[x] ESP32-S3

I think there is no bluetooth for ESP32-S2?

I just copy-pasted the list for all these issues haha my bad

I think we can check ESP32-C2, don't we @bjoernQ?

Do I understand correctly that "Bluetooth support" here is based on bleps? Are there plans to release bleps, or at least bring it out of "toy state" any time in the near future?

We can probably cut a release of bleps soon, it probably needs a bit of polish with some docs etc. Getting it out of "toy" state requires battle testing the thing, and contributions from the community to fill the gaps.

Then maybe replace the words "toy state" with "early alpha", so people are motivated to contribute. "toy state" sounds to me like it isn't intended to ever be a real thing

It's important that esp-wifi doesn't depend on the bleps crate. What esp-wifi offers for Bluetooth is an HCI connection.
For very simple use-cases like advertising only you could just pass it the HCI commands needed without using any stack.
Unfortunately, there are not many options besides bleps for a no-std BLE stack currently. One promising crate is https://crates.io/crates/burble - they are considering making it no_std at some point.
Another option would be to port/use Nimble (which is written in C).
Initially bleps was really just meant to be used for the examples - that's why it says it's a toy. I think the biggest thing missing currently is pairing/bonding

Update: I've started working on adding BLE for H2.


Update ru_ru.lang

MC 1.12.2. RefinedStorage 1.6. Removed unnecessary lines, added new ones. en_us(370 lines)=ru_ru(370lines).

Thx, but I think you messed up the fluid storage capacities.
They are in fact 256k/1024k/4096k.

Sry. Fixed capacities.

Thank you!


Window dimming

Hello! :)
Is it possible to customise window dimming? Default Android Bottom sheet dims window more:
https://www.android-examples.com/wp-content/uploads/2016/08/bottom_sheet_3.png

@iskugor Hi! Good idea. It's added in v1.1.3.

@michaelbel thanks!


The y axis value is not properly visible

SEVERITY:  Major
MODULE: Bubble Chart
PLATFORM: Windows 7 / Firefox 44.0
STEPS TO REPRODUCE:

Navigate to the URL: http://tools-stage.gapminderdev.org/tools/bubbles
Observe the y axis values

ACTUAL RESULTS:
The y-axis value is not properly visible
EXPECTED RESULTS:
The y-axis values should be properly visible
SCREENSHOT:

looks good on my Win7 / FF 44... strange
@k6Labz  what if your browser is not in 100% scale? try to hit [Ctrl] + [0] (zero)

@angie its also working fine on my browser with out hitting ctrl + 0


AZ cli returning error

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az aks get-credentials
Errors:
To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az aks get-credentials -g {} -n {} --file {}

Expected Behavior
Environment Summary
Linux-4.15.0-1064-azure-x86_64-with-debian-stretch-sid
Python 3.6.5
Shell: bash

azure-cli 2.0.77

Additional Context

There is no error on this... @ndixita can you please review these autogenerated tests?
Closing.


ManningResistance causes unexpected oscillations

In the basic model, the levels of the basins around the ManningResistance look like this with saveat = 0:

These oscillations are damped by setting k = 100.0 in formulate_flow! for the ManningResistance:

@Huite do you think that's a valid change? It relaxes the approximation of the absolute value function.

Oh nice find. To add some context, the basic model has only static parameters, so we expect just smoothly going to a dynamic equilibrium like in the lower figure. There is a constant inflow on the upstream side, so that level should be slightly higher the whole time.

It would be nice if we had a more structural solution than parameter fiddling, though. I think the problem (still) is that the flow is too sensitive to head difference changes around a head difference of 0.

@Huite do you think that's a valid change? It relaxes the approximation of the absolute value function

It's currently k=1000.0 right? I haven't looked at atan enough to know in at which $\Delta h$ it starts to make a difference.
Don't we use a quadratic sigmoid somewhere else?
That has the upside of being cheaper to compute and is more explicit in when it's "turned" on.

Not sure what a quadratic signmoid is or what this means:

... and is more explicit in when it's "turned" on.

What we want is to limit $\frac{\text{d}Q}{\text{d}\Delta h}$ which is essentially the inverse of the resistance used in LinearResistance. So we could make that an optional parameter which we enforce in the ManningResistance formulation (I would have to look into what's the best way to do that).

I don't think it's a proper term, I mean something like this, more in general for reduction factors:

In our case, the Sf isn't naturally bounded (0, 1), so you specify when the (linear reduction) starts. But to get smooth gradients you adjust the function a bit, $\Omega$ control when you start adjusting. For linear relationship you'd only use $\Omega$.
And what I mean with "turning on/off", basically this (for arctan):

I see, but our problem here is of a different nature (I think). We're not looking at smooth transitions to 0, we're looking at bounding a derivative. The manning resistance behaves like $\text{sign}(\Delta h)\sqrt{|\Delta h|}$:

which is bad around $0$.

Suggestion:
https://www.desmos.com/calculator/g6xogkegp5


fix: handle civic api update

close #244

@acoffman is there some kind of guard clause that we can wrap the calls to the client parser with to protect against/emit a warning for future API changes?

@acoffman is there some kind of guard clause that we can wrap the calls to the client parser with to protect against/emit a warning for future API changes?

This is a good question. Not currently no, but we should have something like that. I will look into adding a status/metadata query for civic that we can use for that here.


CYF-London | Amir Montazeri | Model User Focused Data | Week 1

Learners, PR Template
Self checklist

[x] I have committed my files one by one, on purpose, and for a reason
[x] I have titled my PR with COHORT_NAME | FIRST_NAME LAST_NAME | REPO_NAME | WEEK
[x] I have tested my changes
[x] My changes follow the style guide
[x] My changes meet the requirements of this task

Changelist
I changed a part of paragrapgh in header in Cakes-Co index.html from best cake to most delicious cake
Questions
Ask any questions you have for your reviewer.

May I suggest using a HTML validator such as https://validator.w3.org/ to check for potential error in HTML code?

Your page does not look quite like the wireframe yet. Typical things to pay attention to in a wireframe include:

Text alignments and justification
Relative size and position of every elements.

The footer is not fixed at the bottom of the viewport; it should stay at the bottom of the viewport even when the page content is scrolled.

I could not find any use of the :first-child pseudo class selector (as required by one of the acceptance criteria)

@cjyuan Thank you for your review, it was so helpful, I changed the layout and also footer is fixed now. I used the validator as well for my HTML codes and changed button method from a inside to onclick.


NC | NSFS | NSFS NC Systemd example script and docs for RPM installation

Explain the changes

Added systemd example script to the RPM build
Added NC NSFS docs for RPM installation and build

Issues: Fixed #xxx / Gap #xxx

Testing Instructions:

[x] Doc added/updated
[ ] Tests added

One thing that slightly concerns me (not completely related to this PR) is that I added upgrade manager as part of RPM upgrades, so basically if a user already has NooBaa installed and then the install RPM for version 5.14.1 then our upgrade scripts will kick in and will do its thing. Now that's good but the issue would occur when there would be no postgresql to connect to (NSFS case) and upgrade_script would block (infinite loop) RPM install.
I think we should add a config which disable the upgrade manager. WDYT @romayalon @guymguym?

Hi all, Posting the observation for tracking purpose:
Observations on Noobaa-service(nsfs):
Systemctl start nsfs (Looks ok)
Able to start the service, and basic CRUD on buckets done.
2.  Systemctl stop nsfs (looks like not smooth stop)
● nsfs.service - The NooBaa nsfs service.
Loaded: loaded (/etc/systemd/system/nsfs.service; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2023-09-10 21:12:33 PDT; 1s ago
Process: 1859288 ExecStop=/bin/kill QUIT $MAINPID (code=exited, status=64)
Process: 1859279 ExecStart=/usr/local/node/bin/node /usr/local/noobaa-core/src/cmd/nsfs.js /tmp/test/ (code=killed, signal=TERM)
Main PID: 1859279 (code=killed, signal=TERM)
3.  Systemctl enable nsfs [seems not working!!]
[root@pr-ss1-worker-1 ~]# systemctl enable nsfs
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:

A unit may be statically enabled by being symlinked from another unit’s
.wants/ or .requires/ directory.
A unit’s purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
In case of template units, the unit is meant to be enabled with some
instance name specified.

Systemctl disable nsfs [seems not working]
Sometimes nsfs is in auto-start mode (specially, run enable and start)
● nsfs.service - The NooBaa nsfs service.
Loaded: loaded (/etc/systemd/system/nsfs.service; static; vendor preset: disabled)
Active: activating (auto-restart) (Result: exit-code) since Sun 2023-09-10 21:17:35 PDT; 1s ago
Process: 1865942 ExecStart=/usr/local/node/bin/node /usr/local/noobaa-core/src/cmd/nsfs.js /tmp/test/ (code=exited, status=1/FAILURE)
Main PID: 1865942 (code=exited, status=1/FAILURE) (edited)

@PravinRanjan10
Hey, this is just an example script, the install section is empty, have you tried my answer on slack?

@PravinRanjan10 Hey, this is just an example script, the install section is empty, have you tried my answer on slack?

Okay. Edited the nsfs.service file and able to enable/disable the nsfs. But stop still looks failed!!.

we'll look at stop


Support Streaming Entity Upcert

From discussion in Refinement, relates to #836 and #955

This unblocks large data inserts from data explorers. This ticket should start with a feasibility assessment (hence Spike). We can reevaluate at that time.


Create test workflow (WIP)

Summary
Create a workflow that will automatically run our smoke tests (software and cloud). The workflow will also run our functional tests.
Description
Workflow is created; however, it does not work as github's runners do not have access to our dremio clusters. We also need to create github secrets to use in the workflow.
Related Issue
https://github.com/dremio/dbt-dremio/issues/39
Additional Reviewers
@jlarue26
@ArgusLi


substitutions don't work in transactional templates

Issue Summary
Substitutions don't work when using this library. It works when using curl.
Steps to Reproduce

Create a transactional email template in your SendGrid account
Have either <%body%> in the template, %firstName% or both (I tried both)
Execute this node code (fill in the config)

`'use strict';

var config = {

	apiKey: '',
	from: '',
	to: '',
	templateId: ''

}

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(config.apiKey);

async function sendTest() {

 var newMsg = {

   "from": {
    "name": "Test Script",
    "email": config.from
   },
   "personalizations": [{
    "to": config.to,
    "substitutions": {
     "-firstName-": "Maciejs",
     "%firstName%": "Maciej",
	 "-first_name": "Maciej",
	 "%first_name%": "Maciej"
    }
   }],
   "subject": "test subject",
   "content": [{
     "type": "text/plain",
     "value": "Hello, %firstName%!"
    },
    {
     "type": "text/html",
     "value": "
Hello, %firstName%! "
    }],
    "template_id": config.templateId
 }

   await sgMail.send(newMsg);

}

sendTest();`

Notice that nothing will be replaced in the delivered email. Again, it works perfectly with curl.

I'm also attaching a screenshot of the template in SendGrid editor and the email I get

Technical details:

sendgrid-nodejs Version: 6.1.4
Node.js Version: 8.9.2

@MaciejKrawczyk in the previous version the substitutions object was not contained by the personalizations array. substitutions was a root attribute:
https://www.npmjs.com/package/sendgrid-mailer
Might that be it?
(I'm struggling with substitutions in this version, too.)

@MaciejKrawczyk Have you tried using setSubstitutionWrapper and omitting the wrappers from the substitutions?
Ex:
sgMail.setSubstitutionWrappers('-', '-');
"substitutions": {      "firstName": "Maciejs" }
Not sure how you'd do multiple wrappers at once this way, but I was able to get subs working with this version by not specifying the wrappers in the substitution attribute. My subs look like
emailOptions.substitutions = {}
emailOptions.substitutions.CLIENT_NAME = myClientName

It works. Thank you!

Thanks for jumping in to help @kmcurry!
I'm glad you are up and running @MaciejKrawczyk!

Is this done?

Hi @sriharrsha,
Have you tried @kmcurry's suggestion?

Not yet. I will update if it works or not soon.
Sorry for the late reply.

To everyone as desperate as me yesterday: in v3 API you need to use dynamic_template_data  instead of substitutions, this isn't yet documented anywhere!
Then use {{var_name}} in email template and dynamic_template_data: { var_name: "var_value" } in API call.

Hello Everyone,
Please see this issue for progress. We are currently working on the update for C#, then Java, then this SDK is right after that. Thanks for your patience and my apologies for the delay.
With Best Regards,
Elmer

Hah, dynamic_template_data. I solved your little puzzle! :smile:

Thank you @xduseko !


🎁: Heat trace - add column "Formular group" in checklisttab

Expected outcome
Add column "Formular group" in table in checklisttab.
Business Value / Developer Experience
User get to see more relevant data
Acceptance Criteria
New column in table in checklisttab that shows the correct data

PR: https://github.com/equinor/cc-components/pull/845


Volume can not be set using Websocket API

OS: Linux
Issue Descriptions: Setting volume using the websocket API, any volume namespace methos won't work
Steps to Reproduce:
I'm using this to send to websocket and I can't seem to understand what I'm doing wrong.
`var cmd  = {
"namespace": "volume",
"method": "setVolume",
"arguments": 60
};
WebSocket.send(JSON.stringify(cmd));`
From what I understood from here:
https://github.com/gmusic-utils/gmusic.js/blob/master/src/namespaces/VolumeNamespace.js
setVolume just wants a number between 0 and 100. However there's nothing happening.

@raicabogdan The arguments property has to be an array of all the arguments.  So your command would look like this.
var cmd = {
"namespace": "volume",
"method": "setVolume",
"arguments": [60]
};


2.0.0

Fixes #81
Fixes #79
Fixes #75
Fixes #73
Fixes #72
Fixes #71
Fixes #58
Fixes #52
Fixes #50

Added

GroupUngrouped event (not the greatest name 😄)
Touch events TouchStart, TouchMove and TouchEnd
Mobile support

Dragging new links from ports
Selecting models
Panning
Dragging movables

RemoveGroup method to delete a group and all its children
Pressing DEL on a selected group will now remove it
Ability for links to be segmentable (by setting Segmentable to true)

Clicking a segmentable link will add a new vertex in that position
Vertices are movable models, which mean you can drag them to reposition them
Double clicking a vertex will delete it

Link routers

Routers are functions that take into account a link's vertices, and decide whether to add more points along the path
They are specified using Options.Links.DefaultRouter or by setting Router in links
There are currently two routers, Routers.Normal and Routers.Orthogonal
You can provide your own router by simply respecting the delegate Router

Link path generators

Path generators are functions that takes as input a link's route, and return a list of generated SVG paths (strings), as well as the position and angle of the source/target markers
They are specified using Options.Links.DefaultPathGenerator or by setting PathGenerator in links
There are currently two generators, PathGenerators.Straight and PathGenerators.Smooth
You can provide your own generator by simply respecting the delegate PathGenerator

On-the-fly link markers

A link can either have a SourceMarker or TargetMarker
Link markers are SVG Paths with a known width (to calculate angle and where to cut the links)
Static markers are available (e.g. LinkMarker.Arrow) as well as utility methods to create known shapes

MouseClick event, which only fires if the model (or canvas) in question didn't move, as opposed to MouseUp
data-X-id HTML attributes to nodes, ports and links
Abstract BaseLinkModel, LinkModel now inherits from it

All the parts of the library now refer to BaseLinkModel instead of LinkModel (e.g. PortModel.Links)

Color, SelectedColor and Width properties to LinkModel
Link labels

Can have custom models, using RegisterModelComponent
Due to the limitation of SVGs in Blazor, labels aren't interactive and must be created using MarkupString
They can have a specified distance

A number between 0 and 1: Position relative to the link's length
A positive number, greater than 1: Position away from the start
A negative number, less than 0: Position away from the end

They can have an offset (Point)

Link snapping

While the user is dragging a link, it will try to find the closest port it can attach the link to
Options (in DiagramOptions.Links): EnableSnapping and SnappingRadius

GetBounds extension method on IEnumerable<NodeModel>
Expose Padding property in GroupModel
Factory option to Options.Links

This is a delegate (BaseLinkModel LinkFactory(DiagramManager diagram, PortModel sourcePort)) to let you control how links are created

Groups (of type DiagramGroupOptions) option to DiagramOptions

Enabled option controls whether users are allow to group nodes together or not
KeyboardShortcut (Func<KeyboardEventArgs, bool>) controls what keys need to be pressed to trigger the behavior
Factory lets you control how groups are created

GetRelativePoint method to Diagram

This method gives the relative mouse point on the canvas

SelectionBoxWidget

If used, holding SHIFT and clicking then dragging will show a selection box that selects all models intersecting with it

Minified versions of all assets
Observe document body mutations to update canvas container
Ability to add/remove children after the group is created
Diagram now also inherits Model
Ability to suspend refreshes in Diagram by setting Diagram.SuspendRefresh to true

As the name suggests, this will stop the method Refresh from triggering the event Changed, which tries to re-render the UI

Batch(Action action) in Diagram.

This is just a helper method that suspends refreshes, runs the action and then refreshes
This is now used internally in node/link layers to only trigger 1 UI re-render

Add FillColor parameter to NavigatorWidget
Ability to create links between two nodes directly, without needing ports

This depends on the shape of the nodes, which can be defined by providing a ShapeDefiner in NodeModel's constructor
The default shape definer is Shapes.Rectangle
Currently, there is only the Rectangle and Ellipse (including Circle) shapes, others will be added later
This also works for groups, since groups are nodes

Unit tests

Changed

Renamed DiagramManager to Diagram
Remove need to specify Name in diagram's CascadingValue
Separate Nodes/Links from DiagramManager, they are now layers (Diagram.Nodes and Diagram.Links)

Adding/Removing nodes or links is now done inside these layers (e.g. Diagram.Nodes.Add)
Added/Removed events are now inside these layers, not in the diagram (e.g. Diagram.Links.Added)

LinkAttached event removed (TargetPortChanged is the alternative)
It is now mandatory to add nodes to diagram before creating groups
SelectionChanged event only contains the model now, use Selected property
Removed SelectedModels in favor of GetSelectedModels(), this is because we don't hold a list of selected models anymore (unnecessary)
Renamed DiagramSubManager to Behavior, it makes more sense
RegisterBehavior now takes as an argument the behavior instance to add. No need to use Activator.CreateInstance for something like this, as it just slows things down
Removed LinkType enum
Removed DefaultLinkType link option
Removed DefaultLinkModel link option
Removed GetNodesRect method from DiagramManager (use GetBounds)
Removed diagram dependency from GroupModel (was only using GetNodesRect)
Renamed GetRelativePoint to GetRelativeMousePoint

This method gives the relative mouse point inside the diagram, taking into account the current pan & zoom

Widgets are inside the DiagramCanvas now

This change is necessary so that widgets with absolute position have their relative parent be the canvas

Renamed Navigator widget to NavigatorWidget
Allow empty groups
Compare received JS sizes (width and height) with precision of 0.0001

In most cases, sizes retrieved from JS (especially with a zoom <> 1) can't be compared accurately (e.g. 80 and 79.9999975). We fix this by comparing with a tolerance.

Update ports dimensions only if Initialized is false

This avoids useless re-renders/JS calls when node is re-visible

NodeModel.Ports is now a IReadOnlyList<PortModel>
BaseLinkModelExtensions is now obsolete
Moved everything in Blazor.Diagrams.Core.Models.Core to Blazor.Diagrams.Core.Geometry

This includes Point, Size and Rectangle
This is to better structure things in the project, the new Geometry namespace will contain many other things related to it

Only render links when ports/nodes are initialized (position and/or size received)

This will avoid the weird flicker where links show at (0, 0) then move to the correct position

Fixed

Remove links when groups are removed
Issue where links are clickable outside the visible stroke

pointer-events is now set to visiblePainted instead of all

MouseUp event bubbles up from PortModel to NodeModel
Size not taking into account zoom when nodes become visible again
Only allow link creation using left mouse button
JS errors in razor pages without a diagram
CustomNodeWidget was movable from text input

All users who create custom nodes with HTML inputs should use x:stopPropagation on mousedown, mousemove and mouseup to prevent the node from being movable through inputs.

Deleted nodes from groups would still show them
NavigatorWidget not handling negative node positions
Panning with right click. It is now disallowed
PortRender not taking into account its parent's RenderLayer

Ports on SVG nodes will now render as <g> elements

Useless refreshes when diagram Container values didn't change


Update Timings to 2.4.4

Thank you for the contribution. It was merged directly as a38b0bbdcea867bddae4022fc7c40b8b1d999e40 to keep commit history cleaner. Your contribution is still credited to you.


merge multiple PR missing in Release branch

What this PR does / why we need it:
This PR contains changes from following PR's which were merged into Master branch but not pulled into Release branch

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/630
What this PR does / why we need it:
currently authenticator only returns 401 and it is hard to know if the request is really unauthorized or it is due to aws sts throttle.
This PR will create a new metric in authenticator to record the STS throttling count.
This PR will return 429 to api-server when authenticator got STS throttling from AWS STS service

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/741
What this PR does / why we need it:
This behavior and test is prep for an AWS SDK update, to ensure that the generated token (signature) matches when we update the SDK.
What this PR does / why we need it:
Preparation for https://github.com/kubernetes-sigs/aws-iam-authenticator/issues/736

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/750
What this PR does / why we need it:
This simplifies the API, and removes the unnecessary GetWithRoleForSession() method. This also simplifies migration to aws-sdk-go-v2 by allowing both Generator (mostly) and TokenOptions to be not bound to a specific SDK version.
Which issue(s) this PR fixes
Preparation for https://github.com/kubernetes-sigs/aws-iam-authenticator/issues/736 migration

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/753
What this PR does / why we need it:
While working on https://github.com/kubernetes-sigs/aws-iam-authenticator/issues/736, I noticed that the current authenticator is setting x-amz-expires header to 60 nanoseconds instead of 60 seconds.
Which issue(s) this PR fixes (optional, in fixes #(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
This value is ignored by STS, but this changes the signed header value to not be 0, but now be 60 seconds.

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/681
What this PR does / why we need it:
Replace deprecated ioutil package; this was deprecated back in go 1.16

https://github.com/golang/go/issues/42026

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/755
What this PR does / why we need it:
The token filecache used to use a private global function for creating a filelock, and overrode it in tests with a hand-crafted mocks for filesystem and environment variable operations.
This change adds adds injectability to the filecache's filesystem and file lock using afero. This change also will simplify future changes when updating the AWS SDK with new credential interfaces.

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/756
What this PR does / why we need it:
Update filecache to use AWS SDK Go V2 with wrappers
This changes updates filecache's internal types to use the AWS SDK Go v2's types, while preserving the external interface used by /pkg/token.This will simplify the future project-wide change for AWS SDK Go v2.
Depends on https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/755 to be merged first
Which issue(s) this PR fixes
First change toward https://github.com/kubernetes-sigs/aws-iam-authenticator/issues/736

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/759
What this PR does / why we need it:
I encountered this bug:
❯ go mod tidy
go: downloading k8s.io/code-generator v0.31.0
go: downloading gopkg.in/evanphx/json-patch.v4 v4.12.0
go: downloading github.com/emicklei/go-restful/v3 v3.11.1
verifying<EMAIL_ADDRESS>checksum mismatch
downloaded: h1:PZ8lyY5omynnq9Y2BHKmNqkC3AnPMES2e2bg7slcfzw=
go.sum:     h1:S+9bSbua1z3FgCnV0KKOSSZ3mDthb5NyEPL5gEpCvyk=
SECURITY ERROR
This download does NOT match an earlier download recorded in go.sum.
The bits may have been replaced on the origin server, or an attacker may
have intercepted the download attempt.
For more information, see 'go help module-auth'.
Reported in the go-restful repo here:
https://github.com/emicklei/go-restful/issues/542
The PR is the result of running:
go get<EMAIL_ADDRESS>and committing the changes.

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/769
What this PR does / why we need it:
This would set the http timeout for the requests made to sts inorder to fail fast during an issue. By default the request can be blocked forever if connection is established or timeout after 30 sec if its fails to establish a connection.

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/768
What this PR does / why we need it:
addresses vulnerabilities fixed in newer go versions

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/767
What this PR does / why we need it:
This PR adds few logs to find if the Verify token presigned URL is sent to Global/Regional end point.
This PR also adds new metrics dimention to STS metrics to get requests failed/throttled on regional/global endpoint.

https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/770
What this PR does / why we need it:
Adding kmala to the owners list
contributions made: https://github.com/kubernetes-sigs/aws-iam-authenticator/pulls?q=is%3Apr+author%3Akmala
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #

/ok-to-test

/lgtm
/approve


Problem minify html with angular2 attribute routerLink

Hi guys, I have a problem with the plugin, if in an html I have the attribute for angle2 routerLink, the file minified places it as routerlink with the 'l' lowercase and breaks the functionality, the attribute does not work.

Read at least the top of README before opening new issues.


Typing cursor doesn't work when I enable Obsidian minimal settings

Very recently my typing cursor stopped displaying in Obsidian. I mean the thin flashing line that indicates where in the file you are inserting text.
I've tested all plugins and confirmed that it's Obsidian Minimal Settings causing this as the issue is not there when I disable it and restart.
Debug info:
SYSTEM INFO:
	Obsidian version: v0.14.15
	Installer version: v0.13.19
	Operating system: Windows 10 Pro 10.0.19044
	Login status: logged in
	Catalyst license: none
	Insider build toggle: off
	Live preview: on
	Legacy editor: off
	Base theme: dark
	Community theme: Minimal
	Snippets enabled: 1
	Safe mode: off
	Plugins installed: 4
	Plugins enabled: 1
		1: Minimal Theme Settings

RECOMMENDATIONS:
	Custom theme: for cosmetic issues, please first try updating your theme to latest. If still not fixed, please try to make the issue happen in the help vault or disable community theme and snippets.
	Community plugins: for bugs, please first try updating all your plugins to latest. If still not fixed, please try to make the issue happen in the help vault or disable community plugins.

edit: after further testing I found that it's caused by the "fancy cursor" option. My accent colour is very different from background so I'm confused as to why it would make the cursor not be visible. However disabling it fixes the issue

You need to update Obsidian and the theme


Tune_gene

I rerun TPE many times and succeed finally, it is too slow. I then return to use GA with multi-GPUs by the following command:
mpiexec -n 8 python -u ./siamese_tracking/tune_gene.py
I notice that the speed of each thread(about 1 hour with OTB2013) is much slower than running GA with a single thread(20minutes).
Do you face the same problem when you test it? Any suggestions？

I rerun TPE many times and succeed finally, it is too slow. I then return to use GA with multi-GPUs by the following command:
mpiexec -n 8 python -u ./siamese_tracking/tune_gene.py
I notice that the speed of each thread(about 1 hour with OTB2013) is much slower than running GA with a single thread(20minutes).
Do you face the same problem when you test it? Any suggestions？

I didn't meet that problem. I realized that you have opened several questions about tuning process. Email me for details may be better.

I rerun TPE many times and succeed finally, it is too slow. I then return to use GA with multi-GPUs by the following command:
mpiexec -n 8 python -u ./siamese_tracking/tune_gene.py
I notice that the speed of each thread(about 1 hour with OTB2013) is much slower than running GA with a single thread(20minutes).
Do you face the same problem when you test it? Any suggestions？

I didn't meet that problem. I realized that you have opened several questions about tuning process. Email me for details may be better.

Thanks, I will send email to you if I have other questions about tuning.


Rebuild Image Index - Ends in Error

Hey, it is probably not a coding error, but more likely a database error (i think).
I ran a Rebuild the other day and it had no error, i ran it again today and it let to the error below.
I was hoping you could tell me how to safely restore the database, if it is a database error that is.
`*** API error: POST: http://<IP_ADDRESS>:7861/infinite_image_browsing/db/rebuild_index {'error': 'IntegrityError', 'detail': '', 'body': '', 'errors': 'UNIQUE constraint failed: image_tag.image_id, image_tag.tag_id'}
Traceback (most recent call last):
File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\anyio\streams\memory.py", line 98, in receive
return self.receive_nowait()
File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait
raise WouldBlock
anyio.WouldBlock
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\base.py", line 78, in call_next
    message = await recv_stream.receive()
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\anyio\streams\memory.py", line 118, in receive
    raise EndOfStream
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\modules\api\api.py", line 187, in exception_handling
    return await call_next(request)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
    raise app_exc
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\base.py", line 108, in __call__
    response = await self.dispatch_func(request, call_next)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\modules\api\api.py", line 151, in log_and_time
    res: Response = await call_next(req)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
    raise app_exc
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\cors.py", line 92, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\cors.py", line 147, in simple_response
    await self.app(scope, receive, send)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\gzip.py", line 24, in __call__
    await responder(scope, receive, send)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\gzip.py", line 44, in __call__
    await self.app(scope, receive, self.send_with_gzip)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
    raise exc
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
    raise e
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\starlette\routing.py", line 66, in app
    response = await func(request)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\fastapi\routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\venv\lib\site-packages\fastapi\routing.py", line 163, in run_endpoint_function
    return await dependant.call(**values)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\api.py", line 827, in rebuild_index
    rebuild_image_index(search_dirs = get_img_search_dirs() + mem["extra_paths"])
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\db\update_image_data.py", line 151, in rebuild_image_index
    update_image_data(search_dirs=search_dirs, is_rebuild=True)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\db\update_image_data.py", line 131, in update_image_data
    process_folder(dir)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\db\update_image_data.py", line 62, in process_folder
    process_folder(file_path)
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\db\update_image_data.py", line 102, in process_folder
    safe_save_img_tag(ImageTag(img.id, size_tag.id))
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\db\update_image_data.py", line 51, in safe_save_img_tag
    img_tag.save(conn)  # \u539f\u5148\u7528\u6765\u5904\u7406\u4e00\u4e9b\u610f\u5916\uff0c\u4f46\u662f\u5199\u7684\u6b63\u786e\u5b8c\u5168\u6ca1\u95ee\u9898,\u53bb\u6389\u4e86try catch
  File "F:\StabilityMatrix\Data\Packages\Stable Diffusion WebUI\extensions\sd-webui-infinite-image-browsing\scripts\iib\db\datamodel.py", line 339, in save
    cur.execute(
sqlite3.IntegrityError: UNIQUE constraint failed: image_tag.image_id, image_tag.tag_id`

Try rebuilding the index again.

Hey, i have done that several times, but always ends with the same error, but it does look like that the database still works, i can add new tags... so not sure what the error means, when every thing seems to work.

This type of error could potentially result in some tags missing. I haven't been able to reproduce this error yet, so I don't know what is causing it. However, I can try to temporarily resolve this issue.

you can update to the latest version and try again.

Hey again, and "Rebuild complete" 👍 there are no errors, coffee inc :)


Typo in 23(A)

"Domain shift occurs when the distribution of the input data changes, but the function that maps from input to output, remains the same."
Perhaps you meant to write something like?
"Domain shift occurs when there is covariate shift (i.e., when the distribution of the input data changes) and when there is concept drift (i.e., when the function that maps from input to output changes)."
BTW, I just finished the book. It is really nice - congratulations!!

Thanks again for the note @rama100 . You are right, I am also just seeing that it was inconsistent with an earlier sentence

Thus, we can think of domain shift as a combination of both covariate and concept shift.

I just updated it!


Extents.extent should overload GeoInterface.extent

I find it surprising, that for two packages that are so closely related, there are two functions with the same name, which have the same aim, but different dispatches.
I ran into this, because I used Extents to explicitely define a bounding box and I used GeoInterface to get the extent of a geometry from a shapefile.

 GeoInterface would have to depend on Extents.extent.
But we do need GeoInterface.extent as a separate thing because it will build the extent from a geometry if its not known, and extents cant do that because it doesn't know about geometries. But all the geometry packages should all define Extents.extent and GeoInterface.jl should call that.
@evetion what do you think

This has been resolved the other way - GeoInterface.extent now falls back to Extents.extent.
The main difference now is that GeoInterface.extent will by default calculate the extent if none exists. Extents will just return nothing.
Probabaly we need to migrate a bunch of geometry packages to use Extents.extent for this change to be widely useful.
https://github.com/JuliaGeo/GeoInterface.jl/pull/94


added helpers to check status codes and reason phrases

closes #1

Codecov Report

Merging #37 (88844c7) into develop (deb4558) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##           develop       #37   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           12        19    +7
  Lines          158       239   +81
  Branches         0        10   +10
=========================================
+ Hits           158       239   +81

Impacted Files
Coverage Δ

src/helpers/isClientErrorStatus.ts
100.00% <100.00%> (ø)

src/helpers/isInformationStatus.ts
100.00% <100.00%> (ø)

src/helpers/isRedirectionStatus.ts
100.00% <100.00%> (ø)

src/helpers/isServerErrorStatus.ts
100.00% <100.00%> (ø)

src/helpers/isSuccessStatus.ts
100.00% <100.00%> (ø)

src/HttpStatusCodes/index.ts
100.00% <0.00%> (ø)

... and 2 more

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 deb4558...88844c7. Read the comment docs.


map[string]string doesn't work for headers or resource attributes. Use string types, and separately split them as key value pairs

Fixed in #424


Add examples/cli.sh

Haven't found a wrapper for very frequently used utilities in
io.druid.cli.Main

Hi @Tagar, thanks for the contribution! Would you elaborate more on what this script is for?

Some of the use cases
./cli.sh tools pull-deps --hadoop-coordinate org.apache.hadoop:hadoop-client:2.6.5
or
./cli.sh index hadoop hadoopDependencies org.apache.hadoop:hadoop-client:2.6.5 mv-parquet-hadoop.json

Hi @Tagar, would you please check @gianm's last comment (https://github.com/apache/incubator-druid/pull/6672#discussion_r238850966)?

@jihoonson I might have a look at this one later, once I have time..
Thanks!


docs: Added beta header

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license.
Updates doc build script to overwrite layout in any python lib so it contains a header; supplies the header.
Screen shot:

The only change to layout.html is the addition of line 169, to enable a header.

Functionally okay, but ugly.
Might I suggest the following CSS:
https://jsfiddle.net/vqz63jp2/

Also we don’t use the term “beta” but rather developer preview

renders as:

The header uses "developer preview", not "beta". Here's the paragraph style:
"background-color:#e47911; border-top:1px solid #ccc; margin-top:6px; padding-top:10px; padding-bottom:10px; padding-left:5px; font-weight:bold; font-style:italic; font-size:16px; color:white; vertical-align:middle"

Not sure why there are 7 files in this PR. I'm closing and trying again.


update tmux commands

on the latest tmux (3.4 and 3.5-next) split-window without -l fails unless you have a % after the number.
https://github.com/tmux/tmux/issues/3836#issuecomment-1942216630

Have one problem, I get this tmux layout when I run the new make\setup_devenv,

but expecting this,

Is it the same for you?

yup, I thought you just liked a weird layout. fixed it