Fixed width formatting

There seems to be generic demand for functions that format numbers but work very hard to preserve the overall width of the string. sciform could support a function like this. See e.g. lmfit gformat and an example usage. This was brought up here.
It's not totally clear to me exactly how this could be done, and I'm worried there are some edge cases that can't perfectly satisfy the length requirements. For example, suppose we want to display -112345678 (10 characters) in 7 characters
-112345678  # 10 characters

-1e+08  # 6 characters
-1.1e+08  # 8 characters
-11e+07  # 7 characters

We definitely can't do it in fixed point notation because there are 9 digits already before the decimal symbol, so we must use scientific notation. We see that with one sig fig we require 6 characters, but with 2 sig figs we require 8 characters because adding the second sig fig introduced a decimal symbol. The resolution is we have to carefully choose the exponent and number of sig figs so that there is no decimal symbol to get around this "characters jumping by 2" problem. However, it might be that this problem is unique to length=7 when the exponent requires 2 digits to express (i.e. -99 <= exp <= +99).
What then should be the exact procedure for getting a fixed length representation? I suggest the following procedure which would be relatively simple with sciform.

The user specifies a target length (the string will be no shorter than this, but it may be necessary for it to be longer)
The user passes in a Formatter (with any settings whatsoever)
The user passes in an ordered sequences (list or tuple) of exp_mode to try, e.g. ["fixed_point", "engineering", "scientific"]
The code then just brute forces formatting using the Formatter but overriding (1) the exp_mode with the entries in the list above (2) the round_mode to be sig_fig and (3) ndigits to vary from 1 up to length.
If it is possible to exactly hit the target length then the above procedure should do it.
The code then looks for any mode combinations which hit the target length. It then picks the mode combinations that hit the target length with the most number of sig figs. If there is a tie between exp_mode then the ordered list is used to select a winner. If no mode combination can hit the target length the mode combination which hits the shortest length with the most sig figs and with precedence given to the exp_mode list is selected.

This algorithm will probably miss the -1.1e+08 -> -11e+07 optimization described above, but I think this is an ok price to pay (one sig fig) for staying strictly in standard exponent modes like "scientific" (with exp_val=AutoExpVal unless otherwise specified) or "engineering".
The performance of the above algorithm is very poor, it's jut brute force. But I think it would be good for a brute force approach and to get some tests/examples written. I think some simple optimizations could be done like guessing close to the right number of sig figs using the magnitude of the number and a static analysis of the character "overhead" for each mode then guessing +/- 2 sig figs or so to cover strange edge cases like described above. Note also that non-trivial upper/lower separators will introduce even more edge cases, make the need for a guess-and-check algorithm even more pressing.

@jagerber48 Yes, going below 7 characters is very hard, and probably not worth supporting.  Just sign, one digit, decimal, 'e', exponent sign, 2 value exponent) use 7 characters.  So, there won't be very many general-use cases for fewer than 7 characters, so it's probably fine to just assert that is not supported.  I think it would even be OK to say 8 or more characters.

@newville See PR #139.

Source code for format_to_target_length() https://github.com/jagerber48/sciform/blob/a0ac867a183f82159ffb2f74ef7bfce50654373f/src/sciform/target_length.py
Tests: https://github.com/jagerber48/sciform/blob/a0ac867a183f82159ffb2f74ef7bfce50654373f/tests/test_target_length.py. This includes tests taken for gformat from lmfit: https://github.com/lmfit/lmfit-py/blob/6096c3a360ce12cca7301673c8ed8fc738eb792b/tests/test_printfuncs.py#L116

I haven't explicitly tested this, but looking at the link you provided, it looks like
gformat(0.000202754321) returns  2.0275e-04 whereas
gformat(0.000202754321)
format_to_target_length(
                    val,
                    target_length=11,
                    allowed_exp_modes=["fixed_point", "scientific"],
                    base_formatter=Formatter(sign_mode=" "),
                )

Right, I think it is ambiguous at the 1e-4 level, giving the same precision with both formats.  Anyway, thanks!

When thousandths separators are used it may not be possible to hit any sufficiently large width just by adding sig figs.
-123.456_789    # 12 characters
-123.456_789_0  # 14 characters

This could be compensated by left padding with zeros or spaces
-0123.456_789  # 13 characters

For value/uncertainty pairs the problem is worse
92 ± 1

Two issues I've been pondering while trying to think about a function that formats a collection/sequence of numbers or number/uncertainty pairs to have the same lengths.

Issue 1: Value formatting with thousandths separators
When thousandths separators are used it may not be possible to hit any sufficiently large width just by adding sig figs.
-123.456_789    # 12 characters
-123.456_789_0  # 14 characters

This could be compensated by left padding with zeros or spaces
-0123.456_789  # 13 characters

Issue 2: Value/Uncertainty formatting even/odd issue
For value/uncertainty pairs the problem is worse
-92 ± 1         # 7 characters
-92 ± 11        # 8 characters
-92.0 ± 11.1    # 12 characters

-92.0 ± 1.0     # 11 characters
-92.0 ± 11.0    # 12 characters
-92.00 ± 11.10  # 13 characters

Adding a sig fig always adds characters equally to both the value and the uncertainty, so it is impossible for certain value/uncertainty pairs to be made to have the same length. This problem could be addressed by left padding one of the value or the uncertainty, but that may not be possible given the behavior of left_pad_dec_place.

Another possibly even worse case is when doing value/uncertainty formatting with thousandths separators.
I'm not sure what algorithm can be used to address both of these issues. I think worst case scenario two value/uncertainty pairs might be off by 3 or 4 with respect to their target or neighboring numbers. Possibly you can always do better than 3 with a clever algorithm but it's not obvious to me.

My knee-jerk reaction to this feature request was to not be to excited about it. Scientific number formatting should be driven by uncertainty orders of magnitude and significant figures. It should not be driven by string length. The python built in format specification mini-language has functionality for padding strings to a fixed width, but sciform takes the point of view that that kind of thing is the job of a string formatter, not a number formatter so this sort of feature was specifically kept out of sciform. See https://sciform.readthedocs.io/en/stable/fsml.html#incompatibilities-with-built-in-format-specification-mini-language.
I'm tempted to say that a number formatting package shouldn't provide functionality for controlling string widths and that modifying number formatting based on string width is an anti-pattern based on the philosophy above.
Of course, the left_pad feature is preserved in sciform, and really the only use case for that is matching string widths. The reason that was preserved is it is padding to a decimal place that appears between the sign symbol and the decimal symbol, so it would not be possible for an end user to do that padding on their own after the fact like they could if they just wanted to left/right/center pad the entire output as a string.
Curious for your thoughts @newville. For the specific use case of output result formatting for lmfit, I'm curious if you considered the tabulate which can pretty easily turn arrays/dicts/etc. of data into properly spaced ASCII or unicode (I think?) tables and might make the whole "getting strings to match lengths for reporting" problem go away.

@jagerber48

Scientific number formatting should be driven by uncertainty orders of magnitude and significant figures. It should not be driven by string length

Hm, do you have a citation for that.

I'm tempted to say that a number formatting package shouldn't provide functionality for controlling string widths and that modifying number formatting based on string width is an anti-pattern based on the philosophy above.

Hm, that's confusing.  Is the point of sciform something other than "convert numbers to strings so that they can be more easily read by humans?" If that is the goal, there could be many ways to make numbers more readable.  One of those ways would be to specify the width, so that, for example, the downstream programmer had a very easy time creating tables of numbers.
If that is not the goal, then is it fair to say that sciform should not be used in __str__ or __repr__ methods?   Those are specifically for "string representations" of objects.
I think I may have misunderstood the goal of the project.  Good luck and all the best!

@newville thanks for the feedback.  My opinions in my last post possibly came off too strong. I'd say I'm on the fence about these issues. Thinking as a scientist, the character width of a number should never matter in the least. But, as you say, if sciform is supposed to make numbers more readable, maybe character width does matter.
In any case, so far sciform has focused a little more on the "science-oriented" approach. In large part because it's a little more well-defined and avoids thorny issues like above.
If I could ask your opinion once more: In simple cases it is possible to format individual numbers to a specified character width (like gformat does). But I have raised a few examples where adding significant figures may cause the character width to increase by more than one with each sig fig (e.g. value/uncertainty or thousandths separators). These examples throw wrenches in the "general-purpose-target-length" formatters I'm trying to engineer. But maybe I should forget about a general-purpose target-length formatter because it is under-specified and focus on a more specialized formatter, like gformat, that could already be broadly useful?

I think I may have misunderstood the goal of the project. Good luck and all the best!

I don't think you've misunderstood. sciform is still a young project, and I'm not the most experience developer and I'm still trying to figure out what directions sciform should go. I certainly want it to be helpful for people!. So far it has been helpful for me to push back against including various helper functions in sciform because they took effort way from core functionality. But now I think most of the core functionality is in place and it is a good time to put in these sorts of helper functions that will make sciform very useful for people.

Said another way: If there was an obvious algorithm to format value and value/uncertainty pairs to specified lengths for all sciform formatter options I would implement it with no questions asked. But given my perceived impossibility of achieving that task, (even admitting the target width must be above some minimum value for a given set of formatting options) I'm not sure how to proceed.

@jagerber48

Thinking as a scientist, the character width of a number should never matter in the least.

Thinking as a scientist, communication of non-trivial numerical results is the most important function we perform.
When discussing communication of scientific results, I cannot think of any attribute X where I would ever agree with a statement like "X should never matter in the least".
If the width of a string should "never matter in the least", then should the height of the string also not ever matter?  How about a "numerical base"?   How would you feel about "x = 14401.5 +/- 0x632"?
When I look at the aim of this project, the formatting of numerical values to communicate scientific results seems to be the point.  I must have misunderstood.  Good luck and all the best.

@newville my apologies. I don't want to waste your time. Leaving the philosophical discussion about string/number formatting aside, If you are able to spare any more time to this discussion I would really appreciate your feedback specifically on how sciform should provide character-length-controlled formatting in light of the edge cases I presented above (e.g. where a certain value or value/uncertainty pair might skip one or more lengths as # of sig figs are increased). If I had a clear direction on what exactly should be promised to the user by character-length-controlled formatting then I would have less qualms about implementing it. Perhaps your answer is simply and pragmatically that you would appreciate seeing a function with the same scope and behavior as gformat in sciform (i.e. the place where this conversation started before I brought my more generic/larger scoped ideas)?

We've established that formatting number alone with both fixed point and scientific notation available it is possible to deterministically hit any target length >= 8.
We've established that introducing thousandths separators means certain lengths are impossible to hit for certain values.
We've established that when formatting value/uncertainty pairs there will always be certain lengths that are impossible to hit for any given value/uncertainty pair (there is an even/odd parity).

Perhaps the conclusion is that sciform should provide a format-to-target-width function that covers the first case since it is tractable, but just totally ignore the latter two cases since they are not? What are your thoughts?

If you care to answer I have a question about your lmfit use case. In the lmfit table I see that you use gformat so that each number in a given table has a certain width. The left-most and right-most digits of all the numbers are aligned. However, you could have foregone gformat and just used regular string padding (e.g. f"{a_string:<12s}") to left align all the numbers but then guarantee that, as strings, they extend far enough the right to keep the table aligned. Did you consider this, and if so, why did you want to go through the extra effort of writing gformat? Was it specifically important to you that the left-most and right-most digits shown for all the numbers are aligned?
There is a sciform example using tabulate to accomplish a similar goal. Here I transcribe the table but with modifications to make the strings more "ragged".
+---------+-------------------+------------------+---------------------+
| color   | curvature         | x0               | y0                  |
+=========+===================+==================+=====================+
| red     | (2001.7(1.9))e+12 | (-42.7(4.8))e-06 | (1.0000060(46))e+09 |
+---------+-----------------+------------------+---------------------+
| blue    | (18.4(1.0))e+12   | (-6.9(1.6))e-06  | (1.0262(29))e+09    |
+---------+-----------------+------------------+---------------------+
| purple  | (2.7(1.7))e+12    | (15.1(2.5))e-06  | (1.000246(44))e+09  |
+---------+-------------------+------------------+---------------------+

Here tabulate automatically right pads strings (it can right/left or center justify by user request) so that the table is aligned. Maybe you find the lmfit approach where the left and right digits are aligned to be more pleasing, even in cases where the decimal points aren't aligned?

@jagerber48

Leaving the philosophical discussion about string/number formatting aside

It seems to me that you wrote pages of philosophical discussion.  I do not know what you would like to set aside.
I cannot wrap my head around the idea that someone would want to write and discuss software for formatting numbers to strings and then say
"a number formatting package shouldn't provide functionality for controlling string widths".
But you said rather a lot of "should not" statements.
The width of the output string is one of the fundamental characteristics that a formatting process must address.
See, for example, https://docs.python.org/3/library/string.html#format-specification-mini-language.  Width is one of the key parameters.   It is not the only consideration, but it is one of the things that many people do, in fact, regularly consider.
I'll have to leave it there.  Best of luck with the project.  You might do well to find people to work with.

@newville Sorry if I've been unclear and come on overly strong in some of my statements. My main interest in this issue has been trying to do some brainstorming about the specific edge cases that have been bothering me and blocking me from including general character width formatting in sciform. But I haven't been able to get any feedback from you on those edge cases which I'm disappointed by because I feel like, with your experience with lmfit which is very central within scientific python, your feedback would be very valuable. I said multiple times that if I could see a clear path through these edge cases (which could include not supporting them..) I would be happy to include character-width formatting, but it seems like you've fixated on disagreement with some of my individual sentences that I said more in the spirit of exploring ideas than establishing hard go/no-go statements on certain things in sciform. Again, I'm sorry that my statements came off overly strong or decisive. I don't feel decisive at all about these questions, I'm needing to bounce ideas off people.

I'll have to leave it there. Best of luck with the project. You might do well to find people to work with.

Thanks for the well wishes. @newville, I would love to find people to work with. I'm actively seeking feedback and collaboration for sciform. sciform is wrapping up review with PyOpenSci which has allowed me to get some more eyes on the code and have some very fruitful discussions about it. I'm trying to advertise to get more users on places like stackoverflow and reddit but don't have the most cohesive strategy. I'm not sure where/how to advertise to recruit partner maintainers. Any advice you have along these lines would be very much appreciated. (One idea which occurred to me is to advertise a call-for-contributors/partners in the readme. Right now I'm explicitly working to get more users, but haven't put serious effort into finding contributors/partners.

Going forward I'll continue an investigation into if/how it makes sense to include character-width formatting in sciform. I may collect my ideas in this issue. Feel free to unsubscribe or not as you like if you find the brainstorming annoying. If I do end up including character-width formatting that covers the gformat usage I'll tag you here.
Also, this arose out of the uncertainties migration conversation I want to say the following. I'm still interested in contributing to uncertainties whether any relationship develops with sciform or not. I'm interested in the development topics there beyond just formatting. Once that migration gets going I will probably re-raise the possibility of a relationship there with you and the others. I think format-by-width discussion we're having here is mostly (but not entirely) orthogonal to the question of if sciform would be useful as a backend for uncertainties formatting.

Collecting my thoughts on by-overall-width formatting for the moment. The first comment will have a lengthy history of how sciform came to by and why the choice was originally made to exclude by-overall-width formatting. The next comment will have a summary of the findings in this issue and the outstanding edge cases.
sciform was originally inspired by the uncertainties package which has great value/uncertainty formatting, encoded in a nice conservative extension* of the built-in format specification mini language (FSML) but had a few shortcomings including issues such as no support for engineering notation and issues with formatting non-finite values or uncertainties. The built-in FSML also has some issues including not being able to easily format numbers to a fixed number of sig figs in fixed point notation, and a lack of support for engineering notation. The shortcoming of the built-in FSML are discussed in this thread. Prior to that thread I had been kicking around some code for this type of formatting, but that thread inspired to build the code out to a nice PyPi package to fill the gaps I saw. I've learned a lot along the way and still have a LOT to learn about open source software.
Originally sciform was meant to be a conservative extension of the built-in FSML just like uncertainties formatting was a conservative extension. However two things happened. First, I took the decision pretty early on that I didn't want sciform to be making decisions "under-the-hood". I wanted all decisions to be presented up front as explicit options to the user. This "philosophical" point is at-odds with the built in FSML g formatting style which makes a choice under-the-hood whether to use fixed-point or scientific formatting. Second, this post in the above thread inspired me to move away from an FSML-based formatting approach and towards an approach based on a highly-configurated Formatter object. The main justification being that there are just too many options possible to be neatly captured in an FSML.
Free from the constraint of making an extension to the built-in FSML, I could reconsider from the ground up what exactly a value or value/uncertainty formatter should do. The main shortcoming of the built-in FSML is that you can't independently control the exponent mode (e.g. fixed point or scientific notation) and the number of significant figures displayed. If you use e formatting then the number of sig figs will always be prec + 1. If you use g formatting then you can always control the number of sig figs (it will always be prec I think), but you can't always control the exponent mode (it switches between fixed point and scientific notation based on some rules). sciform allows you independent control over these two things. exp_mode controls the exponent mode and round_mode controls whether ndigits sets the number of digits appearing after the decimal place or the total number of sig figs displayed. There is no exact equivalent of g formatting mode in sciform.
The next part of the built-in FSML I considered was the width control. After developing the round_mode I had gotten into numbers-based mindset of thinking about number formatting in terms of decimal places. That is, decimal place rounding specifies how many decimal places past the decimal symbol to display. Sig fig rounding specifies the number of digits between the most and least significant decimal places. And the code reflected this emphasis on decimal places. While in that mindset, I got it in my head that it made sense to have an option to pad a number up to a certain decimal place with either zeros or spaces between the most significant digit and the sign symbol (or the start of the string if no sign symbol is present). This was inspired by (but different from) the = align mode in the built-in FSML. In this way, the round_mode + ndigits controls how many decimal places to the right of either the decimal symbol or the most significant digit are included, and the left_pad options control how many decimal places to the left of the most-significant digit are included.
Looking at the built-in FSML was strange through this lens. The width specifier in the built-in FSML is not parametrized in terms of decimal places at all, but it is rather trying to control the overall character-width of the string, including incidental characters like the sign symbols, decimal symbols, thousands/thousandths separators, exponent symbols, etc. At this point I elected to include the left_pad by decimal place formatting in sciform, but to exclude padding to a certain overall character width. However, this was done with the specific knowledge that a user could ALWAYS take a sciform output string and format it to a fixed width using python string padding functionality.
from sciform import Formatter

formatter = Formatter(
    exp_mode="engineering",
    pdg_sig_figs=True
)

formatted = formatter(123000, 456)

print(formatted)
# '(123.0 ± 0.5)e+03'

print(f"{formatted:<30s}")
# '(123.0 ± 0.5)e+03             '

print(f"{formatted:^30s}")
# '      (123.0 ± 0.5)e+03       '

print(f"{formatted:>30s}")
# '             (123.0 ± 0.5)e+03'

So the idea was that sciform would handle the numeric side of formatting, allows users to control characters to the left and right of the most significant digit in way parametrized by number properties like decimal places. If the user had need for the overall string to be formatted to a certain overall width (e.g. the result string is appearing in an aligned table), then, partially in the interest of keeping sciform lean, that duty would be abdicated to python string formatting. This is what I meant above when I tried to say something along the lines that sciform should handle numerical formatting while python handles generic string formatting.
However, importantly, one thing is lost by having sciform only be able to specify left padding in terms of a specific decimal place. The user can no longer specify a target overall length and have the string automatically be padded between the sign symbol and the most significant digit. That is, the user must explicitly control which decimal places are populated. Decimal places can no longer be automatically populated to hit a certai string width. This means, if the user wants to both pad the string to a certain length and have the padding appear between the most significant digit and the sign symbol then sciform cannot help them unless they do some ad-hoc calculations up front using knowledge of the number of the "overhead" symbols like exponent characters etc. to carefully tune the left_pad_dec_place and ndigits to the right values to hit an overall string length. This is sort of like the reverse of how if you want to format a fixed point number to a certain number of sig figs using the built in FSML you have to do an up front calculation of the desired precision (number of digits after the decimal place) using the magnitude of the number and the desired number of sig figs.
I have so-far concluded that adding padding symbols between the sign symbol and the most significant digit to reach a certain overall length is out-of-scope for sciform. Hence, sciform is not a conservative extension of the built-in FSML. There is at least one thing the built-in FSML can do that sciform can't (there are other things too).
I am curious to learn more about use cases for controlling overall string width by controlling the number of decimal places occupied to the left and right of the most significant digit. Why do left/right/center string padding not suffice?
The lmfit use case seems to prefer left- and right-most symbols to match up within a given column. This looks nice at a glance, but I don't know if it helps readers glean information more easily. Especially since more sig figs are displayed than are probably necessary for the reader in the interest of matching string lengths. In the lmfit case the numbers in different rows may have wildly varying orders of magnitude and may not have need to be compared to each other. If one is comparing numbers between rows the ease of comparison may be spoiled by the facts that (1) the decimal points don't line up and (2) some numbers might be displayed in fixed point and some in scientific notation. If lmfit was interested in dropping the gformat function I think it could just use regular python number formatting for individual values along with python string left or right padding to get the tables aligned (possibly using tabulate which does all of the calculation automatically). For the value/uncertainty formatting lmfit could use uncertainties or sciform value/uncertainty formatting and then, again, use python string formatting to pad the resulting strings to make the tables aligned (or use tabulate). The left/right digit alignment will be lost, but I don't think it would be a net loss to readability (including fewer sig figs could be a win and using uncertainties or sciform for value/uncertainty formatting would definitely be a win). But, I fully admit that a lot of this is a matter of preference. Maybe many users have a preference for the clean look of aligned left-most and right-most digits, and that preference alone could justify the inclusion of a feature to control string length using # of decimals included. In any case, I have some code starting to demonstrate what these suggestions would look like for lmfit reports as an example for this issue.
If instead users had a collection of numbers of similar order of magnitude that should be compared that they wanted to display in columns I would still argue that formatting by decimal places like sciform does would be nice, and the numbers could then be formatted using python string formatting techniques to align either their right-most digits or their decimal points. Or better yet, the numbers could be left padded to the largest decimal place present and rounded to the least significant digit present.
!!!!!
To all readers: If python left/right/center padding to control string width does not suffice for you, and you would instead prefer controlling string width by controlling displayed decimal places, I am curious to know more details about why!
!!!!!
*By conservative extension I mean the uncertainties FSML will format accept any built-in format specification string and format numbers the same way as the built-in FSML. It only extends the FSML and has different behavior for format specification strings outside of the built-in FSML (e.g. the u format type).

After that long comment, more thoughts on the specific issue at hand.
The previous comment was a long history of why I haven't included by-total-length formatting SO FAR. That doesn't mean I'm 100% opposed to including it ever. As evidence see #139. If it was very easy to include total-length formatting as a helper/wrapper around sciform functionality I would do so without much complaint. However, there are a few edge cases that prevent me from implementing a general by-total-length formatter.

As discussed early in this thread, and in #139, it is possible to write a guess-and-check wrapper function that adds sig figs until a string exceeds a certain length. The function can try different exponent modes and select the most preferred exponent mode which comes closest to the target length (while at least matching it) and has the most significant figures. If fixed point and scientific exponent modes are allowed, only a single number is being formatted, the target length is >= 8, and no thousand or thousandths separators are included, then this function is guaranteed to be able to hit the target length.
When formatting value/uncertainty pairs using +/- (as opposed to parentheses) format, adding a significant figure always adds an even number of characters to the string since the new decimal place must be present in both the value and uncertainty. This means, depending on whether the base format has an even or odd number of characters, it will be impossible to hit the desired length in about half the cases. There will be at least an off-by-one error in some cases. If there is a need to jump across a decimal symbol or thousandths symbol then I think there may be an off-by-three error.
Similar to the above case, sometimes adding a new sig fig will introduce a thousandths separator. This means the number of characters will jump by two on a single value. This may result in an off-by-one error when trying to hit a target length.

How should these cases be addressed? Ideas:

sciform should only provide a formatter that narrowly covers the guaranteed case in the first bullet point above
sciform should provide a formatter the does a best-effort to hit a certain length, but might overshoot by up to 3 characters. This is already implemented in #139. However, would this even be useful? If this function is being used for putting numbers in a table it needs to hit the correct length! Otherwise the user will need to manually left or right pad the resulting string with places. And if the user already has to do that, why not just forget by-total-length formatting and just format the number and left/right pad it as described above?
The off-by-three error could be reduced to an off-by-one error by removing a single sig fig but now the overall length would be less than the target length. Maybe the by-length formatted could be advertised as returning the string that gets closest to the target length, whether that is lesser or greater than the target length.
Perhaps the formatter could return the string which is closest to the target length but smaller, and then any difference could be made up for by e.g. prepending or appending spaces.

On my local fork of lmfit I reworked some code in printfuncs.py to drop usage of gformat and pick up usage of tabulate (at least for the example_fit_with_bounds.py example script. This is to demonstrate (1) how the table would look if the left- and right-most digits of the numbers are not matched up (but tabulate controls white space so the table is still aligned and (2) how the code would look with lmfit not needing to worry about getting the whitespace right for the table to look good.
See https://github.com/jagerber48/lmfit-py/pull/1. See especially the diff on correl_table to see how much easier the code is to follow when the table formatting whitespace work is outsourced to tabulate.
Old fit results:
[[Fit Statistics]]
    # fitting method   = leastsq
    # function evals   = 79
    # data points      = 1500
    # variables        = 4
    chi-square         = 11301.3646
    reduced chi-square = 7.55438813
    Akaike info crit   = 3037.18756
    Bayesian info crit = 3058.44044
[[Variables]]
    amp:     13.8904759 +/- 0.24410753 (1.76%) (init = 13), model_value = 14
    period:  5.44026387 +/- 0.01416106 (0.26%) (init = 2), model_value = 5.4321
    shift:   0.12464389 +/- 0.02414210 (19.37%) (init = 0), model_value = 0.12345
    decay:   0.00996363 +/- 2.0275e-04 (2.03%) (init = 0.02), model_value = 0.01
[[Correlations]]
  +----------+----------+----------+----------+----------+
  | Variable | amp      | period   | shift    | decay    |
  +----------+----------+----------+----------+----------+
  | amp      | +1.0000  | -0.0700  | -0.0870  | +0.5757  |
  | period   | -0.0700  | +1.0000  | +0.7999  | -0.0404  |
  | shift    | -0.0870  | +0.7999  | +1.0000  | -0.0502  |
  | decay    | +0.5757  | -0.0404  | -0.0502  | +1.0000  |
  +----------+----------+----------+----------+----------+

New fit results:
[[Fit Statistics]]
    ------------------  ----------
    # fitting method    leastsq
    # function evals    79
    # data points       1500
    # variables         4
    chi-square          11301.3646
    reduced chi-square  7.5544
    Akaike info crit    3037.1876
    Bayesian info crit  3058.4404
    ------------------  ----------
[[Variables]]
     Name          Value          Percent Uncertainty    Constraint    Init Val    Model Val
    ------  -------------------  ---------------------  ------------  ----------  -----------
     amp    (1.389+/-0.024)e+01          1.76%              Vary          13          14
    period  (5.440+/-0.014)e+00          0.26%              Vary          2         5.4321
    shift    (1.25+/-0.24)e-01          19.37%              Vary          0         0.12345
    decay    (9.96+/-0.20)e-03           2.03%              Vary         0.02        0.01
[[Correlations]]
    ┌────────┬─────────┬──────────┬─────────┬─────────┐
    │        │ amp     │ period   │ shift   │ decay   │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ amp    │ +1.0000 │ -0.0700  │ -0.0870 │ +0.5757 │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ period │ -0.0700 │ +1.0000  │ +0.7999 │ -0.0404 │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ shift  │ -0.0870 │ +0.7999  │ +1.0000 │ -0.0502 │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ decay  │ +0.5757 │ -0.0404  │ -0.0502 │ +1.0000 │
    └────────┴─────────┴──────────┴─────────┴─────────┘

If lmfit does not want to adopt sciform then I would recommend moving to using tabulate but preserve usage of gformat in the formatting of the floats in the fit statistics table so that they all have the same number of sig figs like they do in the old fit results table above.
If lmfit does want to adopt sciform then the floats in the fit statistics table could be configured to use the same number of sig figs by using exp_mode="fixed_point" and round_mode="sig_fig" (default). I would recommend ndigits=4 to show only 4 significant figures (noting that the string widths will not always agree if the numbers in the table span many orders of magnitude). The sig fig formatting could be extended to Init Val and Model Val columns if desired. And of course sciform could be used to control the value/uncertainty formatting in the value column. This could even be done in an lmfit user configurable way if the user prefers, e.g. (1.389(24))e+01 over (1.389+/-0.024)e+01 or prefers engineering notation, etc.

Here is how the table might look using sciform + tabulate:
[[Fit Statistics]]
    ------------------  -------
    # fitting method    leastsq
    # function evals    79
    # data points       1500
    # variables         4
    chi-square          11300
    reduced chi-square  7.554
    Akaike info crit    3037
    Bayesian info crit  3058
    ------------------  -------
[[Variables]]
     Name          Value          Percent Uncertainty    Constraint    Init Val    Model Val
    ------  -------------------  ---------------------  ------------  ----------  -----------
     amp    (1.389 ± 0.024)×10¹          1.76%              Vary          13          14
    period  (5.440 ± 0.014)×10⁰          0.26%              Vary          2         5.4321
    shift   (1.25 ± 0.24)×10⁻¹          19.37%              Vary          0         0.12345
    decay   (9.96 ± 0.20)×10⁻³           2.03%              Vary         0.02        0.01
[[Correlations]]
    ┌────────┬─────────┬──────────┬─────────┬─────────┐
    │        │ amp     │ period   │ shift   │ decay   │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ amp    │ +1.0000 │ -0.0700  │ -0.0870 │ +0.5757 │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ period │ -0.0700 │ +1.0000  │ +0.7999 │ -0.0404 │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ shift  │ -0.0870 │ +0.7999  │ +1.0000 │ -0.0502 │
    ├────────┼─────────┼──────────┼─────────┼─────────┤
    │ decay  │ +0.5757 │ -0.0404  │ -0.0502 │ +1.0000 │
    └────────┴─────────┴──────────┴─────────┴─────────┘


Support Any/All operator

Hello!
any and all operators should have additional expression types instead of parsing it as BinaryOperator where the right side is a function.
Thanks

Implemented & released.


Chapter4, gambler problem

is this another optimal policy?

The textbook mentioned that there are various optimal policy...

Yeah I remember this is also optimal.


Solved contact.html 404 Not found

Solved contact.html 404 Not found

Resolved the path issue for the same

@RitiChandak @Anushkabh Please check the PR


create tables and models for user_details

Tables:

[x] user_details table @Snehashish1609
[ ] client_details table @CaptainIDB
[ ] booking_details table @Shinobi-Mo
[ ] calendar_details table

Models:

[x] user_details model @Snehashish1609
[ ] client_details model @CaptainIDB
[ ] booking_details model @Shinobi-Mo
[ ] calendar_details model

Closing as UserDetails model and table is created and working. Later we can break down models+API development into smaller chunks for Client, Search, Booking, and other iterations.


我的next安装了来必力之后就是没有显示，报错：Failed to load resource: net::ERR_INSECURE_RESPONSE

I agree and want to create new issue

[] Yes, I was on Hexo Docs page, especially on Templates, Variables, Helpers and Troubleshooting.
[] Yes, I was on NexT Documentation Site.
[] And yes, I already searched for current issues and this is not help to me.

Expected behavior
Actual behavior
Steps to reproduce the behavior

N/A
N/A
N/A

Link to demo site with this issue: N/A
Link(s) to source code or any usefull link(s): N/A

Hexo Information

NexT Information
NexT Version:

[] Latest Master branch.
[] Latest Release version.
[] Old version -

NexT Scheme:

[] All schemes
[] Muse
[] Mist
[] Pisces
[] Gemini

Other Information

NexT.Pisces v5.1.4

NexT is rebased into organization repo.
If you want new feature, fix, or support, create new in NexT v6.x repo (desirable in English).
There is instructions on English or Chinese how to update from v5.1.x to v 6.0.x
You also may read this for details.


add unique users graph

Count and graph unique users per minute.

Is the idea here that we want to count the number of unique users engaging w/ Box in the last minute via the events that we captured?

Yep, exactly right.

Ok, cool. I noticed you created a new chart for it. What would you think of adding this as a 4th series of the 'Engagement' chart?

I'm just trying to think about presentation balance. If they are conceptually different from one another, we could do something like:
[   File Events   ][   Engage Events   ]
[          Unique User Events          ]
[   File Totals   ][   Engage Totals   ]

That might be cool.

John, that works for me. The only issue with adding unique users to the existing engagement graph is that values are somewhat higher for unique users, which tends to push the collaboration count and login lines to the bottom of the graph. But maybe we don't care about that?

example ...

That's a really good point. We should probably keep them separate. Will merge as-is.


voice call voice issue

Hello ,I have implemented Agora Voice Call functionality in my app when I am calling one user to another Call is Placed Successfully but not able to get the audio/voice from both the users
[log] [onError] err: ErrorCodeType.errAdmStartPlayout, msg:
[log] [onError] err: ErrorCodeType.errAdmStartPlayout, msg:
[log] [onError] err: ErrorCodeType.errAdmInitRecording, msg:
[log] [onError] err: ErrorCodeType.errAdmInitRecording, msg:
[log] [onError] err: ErrorCodeType.errAdmStartRecording, msg:
[log] [onError] err: ErrorCodeType.errAdmStartRecording, msg:

Have you requested the audio permission?

Have you requested the audio permission?
yes

can you please share me any solution as voice is not coming

I'm so sorry that we are on holiday until 02/17, it's better to raise a new ticket to Agora Support if you face an urgent issue.

i think its not a agora issue, in my case flutter call kit dependency bug


cleanup(tests): remove wrong/unused assert.

https://github.com/falcosecurity/libs/pull/2165 exposed a bug in the TestFalco_Legacy_FalcoEventGenerator test.
Previous code was storing full user/group info in threadinfo; before parsers understood that container_id was changed (ie: we entered a container), set_{user,group} was called (eg here: https://github.com/falcosecurity/libs/blob/master/userspace/libsinsp/parsers.cpp#L1769), storing in the threadinfo user and group information related to uid and gid for the host. Then, when refreshing info for the container(https://github.com/falcosecurity/libs/blob/master/userspace/libsinsp/parsers.cpp#L1843), since the container data cannot be loaded while replaying a scap file, and since the scap file itself does not container useradded events (being too old), we did not overwrite existing user/group info stored in the threadinfo.
Therefore the threadinfo was returning user and group releted info mapped to the host while being on a container.
The new code fixed that behavior but then the test fails. Since we have no way to retrieve the correctly mapped-to-the-container user and group info while replaying a scap file that has no useradded events, we can only remove the assert.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: FedeDP
Once this PR has been reviewed and has the lgtm label, please assign andreagit97 for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/hold
will try to fix the ci too.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/unhold

/lgtm


improve & refactor filters

This is just first part  (code)  of whole changes, it's meant to accelerate CR.
TBD

sanity suite update
functional tests update (if needed)

@Skejven please take a look again. Current changes in filters only extends existing behavior instead of modifying it (there is no need to change existing suite definitions).

New pull request created with smaller set of changes.
See:

https://github.com/Cognifide/aet/pull/97


Update pyproj requirement

Description
See #308 for rationale.
Motivation and Context

Our current version of pyproj required is >=2.1.0, however this is inconsistent with the "always_xy" argument and with geopandas, which is now a requirement.

This is breaking with an out-of-memory code. I ran it on locally and it took a long time to resolve all the dependencies. Not sure what is the problem, but perhaps we need to re-visit all the dependencies and trim unneeded ones.

This has been taken care of by #323


More logical event sending order

When scrolling / swiping the events are sent in logical order (i.e. first comes the scroll events then the reach end events), but when setting the scroll position (through scrollTop for example) and calling update the event come in confusing order (first reach end event then scroll event).
This patch changes the order which the events are dispatched so that even in the latter case the events come in the order you would expect them to be.
If there was some logic for the events to be in the order they were then let me know, but at least this order makes more sense to me and removes extra checks for being at the end on scroll event from our application code. Since with current order when receiving scroll event we need to do some extra checks that are we still at end since we can't trust the reach end events.

Thanks. I will copy diff into next manually.

Thanks!


Actuator request delete for static routes

Question
I am trying to perform some requests on my routes.
When I try to delete a route /actuator/gateway/routes/{my_route_id}, it's always returning a 404 error. So I tried to perform a get on my route with the same ID, it's working and returning my route.
In the InMemoryRouteDefinitionRepository I found that
private final Map<String, RouteDefinition> routes = synchronizedMap(new LinkedHashMap<String, RouteDefinition>()); is filled by the save method.
You are intentionally using the RouteDefinitionWriter for the delete method in the GatewayControllerEndpoint and the RouteDefinitionLocator for the get which retrieves routes from the properties.
So here's my question, do you plan to implement a delete for routes generated statically or only for routes generated dynamically?
I think that your point was that you cannot delete them anyways, if you restart the server it will regenerate the routes.
In my case, I need to delete static routes, the route will not be present as long as I don't restart the server. In that case, I just have to re-perform the deletion, and it's ok for me.

How could we delete static routes?

It's more like a "remove".
I mean to give the possibility to remove static routes even if it makes less sense than the original delete method.
You could have the delete method, and another method which allows you to remove static routes (user could be warn that it will, of course, not be permanent in the documentation) but in some cases it helps.
In my case, I've custom predicates that I want to update dynamically.
So to perform that, I need to delete  my routes and re-create them with the new predicates and I wanted all my routes pre-configured in my application.yml.

Yeah, I was looking at something like #308

Yeah, this could actually do the trick !

Closing in favor of #308

Actually, I was thinking about it and there is a something that doesn't fit very well with my use case.
If we disable a route, it cannot be re-created with new predicates because the ID is already taken.
A workaround will be that we just have to re-create the route with a new ID but with the same properties. So all modified routes will be now dynamically loaded.
But what about just load all routes dynamically?
Instead of having a different behavior between how static and dynamic routes work, all routes can be loaded in memory so we can perform CRUD operations on all of them. You retrieve all routes from properties to load them in memory as if they were created dynamically. So all static routes could only be pre-configured routes.

Routes defined say in config server can be reloaded dynamically

They can already be reloaded dynamically if we define them in properties?


How Can we get the children of a Node?

Describe the Bug
Hello,
I'm using dagre for auto layouting of nodes in React flow.
There's a use case where if a node is deleted all the children of that node have to be deleted.
I tried using children method in dagre, but it's not giving expected result.
Is there a way to get the children of a node?
Your Example Website or App
No response
Steps to Reproduce the Bug or Issue
Below is my getLayoutElements method
const getLayoutedElements = (_elements) => {
const elements = _.cloneDeep(_elements);
const dagreGraph = new dagre.graphlib.Graph();
dagreGraph.setDefaultEdgeLabel(() => ({}));
dagreGraph.setGraph({ rankdir: "TB" });
elements.forEach((el) => {
if (isNode(el)) {
dagreGraph.setNode(el.id, { width: nodeWidth, height: nodeHeight });
console.error({ children: dagreGraph.children(el.id) });
} else {
dagreGraph.setEdge(el.source, el.target);
}
});
dagre.layout(dagreGraph);
return elements.map((el) => {
if (isNode(el)) {
const nodeWithPosition = dagreGraph.node(el.id);
el.targetPosition = "top";
el.sourcePosition = "bottom";
el.position = {
x: nodeWithPosition.x - nodeWidth / 2 + Math.random() / 1000,
y: nodeWithPosition.y - nodeHeight / 2,
};
}
return el;
});
};
Expected behavior
As a user, I'm expecting to get the child nodes of the given node.
Screenshots or Videos

Platform

OS: Windows
Browser: Chrome

Additional context
No response

Hey, I think you would need to call the method to get the children after the forEach loop because it has not generated the whole graph at that point. React Flow includes a getOutgoers method that you can call recursively to get all children of a node: https://reactflow.dev/docs/api/graph-util-functions/#getoutgoers


Failing Windows builds due to a limitation on file name length

The combination of our long file names, of cmake's deep directory habits, of the Jenkins instance's workspace naming pattern, of something (not sure if it's our scripts, cmake or MSVC) using absolute paths, and of a Windows limitation (potentially configurable) results in file paths that are too long.
Example:
       "C:\builds\workspace\pr-multibranch_PR-3712-head-W6HWMYYVLHZ6EECF4FEU5NJXNGV4S3YH7ZGYXPIEBVO2FWQJJ74Q\worktrees\tmpbcqmg4aq\cmake_solution\mbed TLS.sln" (Rebuild target) (1) ->
       "C:\builds\workspace\pr-multibranch_PR-3712-head-W6HWMYYVLHZ6EECF4FEU5NJXNGV4S3YH7ZGYXPIEBVO2FWQJJ74Q\worktrees\tmpbcqmg4aq\cmake_solution\ALL_BUILD.vcxproj.metaproj" (Rebuild target) (2) ->
       "C:\builds\workspace\pr-multibranch_PR-3712-head-W6HWMYYVLHZ6EECF4FEU5NJXNGV4S3YH7ZGYXPIEBVO2FWQJJ74Q\worktrees\tmpbcqmg4aq\cmake_solution\tests\test_suite_psa_crypto_slot_management.vcxproj.metaproj" (Rebuild target) (138) ->
       "C:\builds\workspace\pr-multibranch_PR-3712-head-W6HWMYYVLHZ6EECF4FEU5NJXNGV4S3YH7ZGYXPIEBVO2FWQJJ74Q\worktrees\tmpbcqmg4aq\cmake_solution\tests\test_suite_psa_crypto_slot_management.vcxproj" (Rebuild target) (198) ->
         C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(308,5): error MSB3491: Could not write lines to file "test_suite_psa_crypto_slot_management.dir\Debug\test_sui.FAEEC7BC.tlog\test_suite_psa_crypto_slot_management.lastbuildstate". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. [C:\builds\workspace\pr-multibranch_PR-3712-head-W6HWMYYVLHZ6EECF4FEU5NJXNGV4S3YH7ZGYXPIEBVO2FWQJJ74Q\worktrees\tmpbcqmg4aq\cmake_solution\tests\test_suite_psa_crypto_slot_management.vcxproj]

I don't know what changed to make it an issue suddenly.
Until this is fixed, expect systematic build failures on Windows.

Fixed by a Jenkins configuration change.


GHA-based in-docker testing

Because of https://github.com/testcontainers/testcontainers-java/issues/2124, I won't include the "normal" testing (core, modules, etc etc) for now and focus on in-docker scenario to unblock #2119


Use Widoco for documentation

Could be included in the build process
Would give scope for including chunks of HTML for abstract, introduction, etc
Gives scope for URI for each class/property
See https://github.com/dgarijo/Widoco

Good idea. Morgan Stanley has been using this for a while.  Could be added to our publish process.

Yes, I've used it before and have started my own gist documentation using
Widoco too.  I think that the one area of challenge will be documenting
which module the classes/props are described in, but I'm sure that is
something we can discuss with Daniel (Widoco's author) if it turns out to
be non-trivial
On Wed, 12 Feb 2020 at 17:52, Michael Uschold<EMAIL_ADDRESS>wrote:

Good idea. Morgan Stanley has been using this for a while. Could be added
to our publish process.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/semanticarts/gist/issues/170?email_source=notifications&email_token=AAIFYTHJC4SORRPWQSNZXVTRCQZMHA5CNFSM4KT45ZFKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELRXOFY#issuecomment-585332503,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIFYTFIA3N443MXEW72VH3RCQZMHANCNFSM4KT45ZFA
.


Method API

I'm still reading up on the code, so maybe i'm mistaken, but is there a reason for why methods like Mojo::RabbitMQ::Client::Channel::declare_exchange have to return event emitting objects (Mojo::RabbitMQ::Client::Method)?
  my $exchange = $channel->declare_exchange(
    exchange => 'mojo',
    type => 'fanout'
  );
  $exchange->on(success => sub {
    my ($exchange, $frame) = @_;
    ...
  });
  $exchange->on(error => sub {
    my ($exchange, $err) = @_;
    ...
  });
  $exchange->deliver;

As far as i can see they usually just emit two events (success/error), and those just once. Wouldn't it make sense to use one callback and/or a promise? Seems quite a bit more efficient.
# Callback
$channel->declare_exchange((exchange => 'mojo', type => 'fanout') => sub {
  my ($err, $frame) = @_;
  die $err if $err;
  ...
});

# Promise
$channel->declare_exchange_p(exchange => 'mojo', type => 'fanout')->then(sub {
  my $frame = shift;
  ...
})->catch(sub {
  my $err = shift;
  ...
});

The reason was simple - it was faster & simpler to me to implement it that way, I just had to make this module working ASAP so many things can have bad design decissions.
Most of AMQP methods just return <Method>-Ok, so simple callback/Promise should be sufficient to handle them, it will surely make resulting code more readable.

After a quick recap of AMQP-0-9-1 reference I believe there should be only three EventEmitters:

Mojo::RabbitMQ::Client
Mojo::RabbitMQ::Channel
Mojo::RabbitMQ::Consumer

All other setup, utility & publisher methods can be surely implemented as callback/Promise based.

I guess support for promises would be very easy to add without breaking the existing API.
package Mojo::RabbitMQ::Client::Channel;
...
use Mojo::Promise;
...
sub declare_exchange_p {
  my $self = shift;

  my $promise = Mojo::Promise->new;
  my $exchange = $self->declare_exchange(@_);
  $exchange->on(success => sub {shift; $promise->resolve(@_) });
  $exchange->on(error => sub { shift; $promise->reject(@_) });
  $exchange->deliver;

  return $promise;
}

And the same for all similar methods. Regarding documentation, i tend to document these alternative methods like this.

Just started to implement Promises in 6837904f2ab2d1b830b70a3a0231193494c02b4a


Nunchuck Support

Is there a way to play games that require a nunchuck.

You can enable the nunchunk in Dolphin if the problem is that the game will not start because a nunchunk is required. However, WiiMoteDSU does not have an interface for a nunchunk.
I'm guessing you're interested in using the thumbstick?


added API_CHANGELOG.md

With this we'd like to document changes to our api so developers
have a simple overview about what changed since they've last taken
a look at our api reference.

ready to merge


Include some quickstart or helloworld sample

Hi @danielgmyers, I'm working out a bit with SWF and this project looks like a nice alternative to the traditional approach using aspects. It looks like it is no longer promoted by Amazon as it previously seems to have been featured on awslabs, I don't know the reasons why.
Can you indicate if the project is functional and if it is possible to have any helloworld or spring project as example?
It seems that once there were examples but I do not see them available to exercise.

Hello! I wrote the vast majority of this code while I worked for Amazon; when I decided to leave the company, Amazon graciously moved the project here from awslabs so that I could continue to maintain it. Several AWS services are currently using Flux (or an older version of it) in production.
I think adding a couple of template projects is a great idea; I'll keep this issue open to track that.
In the meantime, here are a few things you can reference:

The main README has a section on library initialization: https://github.com/danielgmyers/flux-swf-client#library-initialization
The flux-spring README explains how to initialize Flux with Spring: https://github.com/danielgmyers/flux-swf-client/tree/main/flux-spring#library-initialization-with-spring
The flux-guice README explains how to initialize Flux with Guice: https://github.com/danielgmyers/flux-swf-client/tree/main/flux-guice#library-initialization-with-guice
The integration tests have setup code you can look at: https://github.com/danielgmyers/flux-swf-client/blob/main/flux-integration-tests/src/test/java/software/amazon/aws/clients/swf/flux/tests/WorkflowTestBase.java#L95

Hello @danielgmyers the code looks really interesting, meanwhile, I'll try to make a helloworld by my own following this links. Thanks


Update to use new keys endpoint

Why
We have a new keys endpoint that hits our cloudfront CDN to load a teams public key
How

Update API base url
Cut path to be just the https://keys.evervault.com/teamUuid

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Vsouza remove cleanup maf

Is this PR ready for review, or are you anticipating any additional commits?

Oh, nevermind just got the review request from you :)


bill-of-materials check failed

https://travis-ci.org/coreos/etcd/jobs/242254432

looks like the bom tool has a new json format to support multi licenses


Where is the code for evaling sketch generation task?

And MMD and JSD are too low when testing, how can I fix it . Thank you in advance.

@samxuxiang

@memory-tech Hi, you can find the script for training and evaluating FID score here. For CAD evaluation, please refer to the updated script for novel and unique scores, and eval_cad.py for MMD,COV, and JSD. The post-processed test data is available for download here. You can find more instructions on our new hnc-cad project page. Let me know if you have more issues.

Thanks for your reply! Is there any code error when testing MMD and JSD, they are too low when testing, shown in the pictuce above.  @samxuxiang

The coverage is much lower than expected. I wonder if you have visualize the generated results.This could happen when network is generating a lot of simple cubes and cylinders, which appear very often in deepcad dataset. We use de-duplication on the training set to avoid generating the same cad / code repeatedly, maybe you can try this and tested against the test data provided in hnc-cad.

ok, thanks!


Feature 4 - Add other metrics

Add other metrics based on statistics result of Backtesting.py:

entries count by hour/day of week/month
profits/losses by hour/day of week/month
profits/losses  mean by hour/day of week/month
profits/losses sum by hour/day of week/month
profits/losses by opened bar count

Added the code from the experimental repo


adding constructor that receives both name and weight

closes #825

:+1: looks good. Waiting for more reviews.

Looks good to me, too.

Thanks @nykolaslima , I merged this into master, 2.6, 2.7 branches.

Thank you!
On qui, 8 de jan de 2015 at 11:14 Jungtaek Lim<EMAIL_ADDRESS>wrote:

Thanks @nykolaslima https://github.com/nykolaslima , I merged this into
master, 2.6, 2.7 branches.
—
Reply to this email directly or view it on GitHub
https://github.com/xetorthio/jedis/pull/841#issuecomment-69177252.


[Feature Request]:  solution for leetcode 906

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
I would like to add solution in c++,java,python, javascript for leetcode problem 906. Super Palindromes
Use Case
solution for the leet code problem 906
Benefits
No response
Add ScreenShots
No response
Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

@Ajay-Dhangar  can you please assign me.


Tapping an obscured text field for the first time won't change the keyboard type on iOS

Steps to Reproduce

Tap an obscured text field.
Tap other text field that is not an obscured text.
The keyboard type doesn't change so users can only input password even a focused text field is not an obscured text field.

This behavior only happens if an obscured text field selected first. I have a screen for sign up that leads to this bug as a username is already filled after a verification step.
Attached is a result of this bug.

This appears to be a duplicate of https://github.com/flutter/flutter/issues/32265, which was fixed very recently.  Can you try this out on master, it should be working a bit better now.
Please feel free to re-open this if I'm missing something here, or if there's some aspect of this bug that still isn't resolved on master.

(and for reference, I opened #32285 to track enhancing this feature further)

The issue has been resolved with master. Thank you!


CUDA out of memory error.

I am trying to train yolox_s on a custom dataset. Each image is a .jpg file of size 1280x720, which gets resized to 640x640.
I converted the annotations from the original YOLOv5 format to COCO format using the YOLO2COCO repository linked in README.
This is my experiment file:
import os

import torch
import torch.distributed as dist

from yolox.data import get_yolox_datadir
from yolox.exp import Exp as MyExp

class Exp(MyExp):
    def __init__(self):
        super(Exp, self).__init__()
        self.depth = 0.33
        self.width = 0.50
        self.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]

        # Define yourself dataset path
        self.data_dir = "datasets/helmets"
        self.train_ann = "instances_train2017.json"
        self.val_ann = "instances_val2017.json"

        self.num_classes = 1

        self.max_epoch = 300
        self.data_num_workers = 4
        self.eval_interval = 1

When I run
python tools/train.py -f exps/example/custom/helmet_detection.py -d 1 -b 16 --fp16 -o -c yolox_s.pth
I get the following error:
RuntimeError: CUDA out of memory. Tried to allocate 4.51 GiB (GPU 0; 6.00 GiB total capacity; 110.28 MiB already allocated; 4.44 GiB free; 120.00 MiB reserved in total by PyTorch)
I have tried reducing the batch size, and even resizing the images in the dataset to 640x640, but I keep getting the same error with almost the same allocation size everytime. I don't understand where 4.51 GiB allocation is coming from. Any insight is appreciated.
Thanks in advance!

Does -b 8 help?
发自我的iPhone
------------------ Original ------------------
From: Atmika293 @.>
Date: Sat,Aug 28,2021 11:47 AM
To: Megvii-BaseDetection/YOLOX @.>
Cc: Subscribed @.***>
Subject: Re: [Megvii-BaseDetection/YOLOX] CUDA out of memory error. (#608)
I am trying to train yolox_s on a custom dataset. Each image is a .jpg file of size 1280x720, which gets resized to 640x640.
I converted the annotations from the original YOLOv5 format to COCO format using the YOLO2COCO repository linked in README.
This is my experiment file:
import os import torch import torch.distributed as dist from yolox.data import get_yolox_datadir from yolox.exp import Exp as MyExp class Exp(MyExp):     def init(self):         super(Exp, self).init()         self.depth = 0.33         self.width = 0.50         self.exp_name = os.path.split(os.path.realpath(file))[1].split(".")[0]         # Define yourself dataset path         self.data_dir = "datasets/helmets"         self.train_ann = "instances_train2017.json"         self.val_ann = "instances_val2017.json"         self.num_classes = 1         self.max_epoch = 300         self.data_num_workers = 4         self.eval_interval = 1
When I run
python tools/train.py -f exps/example/custom/helmet_detection.py -d 1 -b 16 --fp16 -o -c yolox_s.pth
I get the following error:
RuntimeError: CUDA out of memory. Tried to allocate 4.51 GiB (GPU 0; 6.00 GiB total capacity; 110.28 MiB already allocated; 4.44 GiB free; 120.00 MiB reserved in total by PyTorch)
I have tried reducing the batch size, and even resizing the images in the dataset to 640x640, but I keep getting the same error with almost the same allocation size everytime. I don't understand where 4.51 GiB allocation is coming from. Any insight is appreciated.
Thanks in advance!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

Does -b 8 help? 发自我的iPhone
…
------------------ Original ------------------ From: Atmika293 @.> Date: Sat,Aug 28,2021 11:47 AM To: Megvii-BaseDetection/YOLOX @.> Cc: Subscribed @.***> Subject: Re: [Megvii-BaseDetection/YOLOX] CUDA out of memory error. (#608) I am trying to train yolox_s on a custom dataset. Each image is a .jpg file of size 1280x720, which gets resized to 640x640. I converted the annotations from the original YOLOv5 format to COCO format using the YOLO2COCO repository linked in README. This is my experiment file: import os import torch import torch.distributed as dist from yolox.data import get_yolox_datadir from yolox.exp import Exp as MyExp class Exp(MyExp): def init(self): super(Exp, self).init() self.depth = 0.33 self.width = 0.50 self.exp_name = os.path.split(os.path.realpath(file))[1].split(".")[0] # Define yourself dataset path self.data_dir = "datasets/helmets" self.train_ann = "instances_train2017.json" self.val_ann = "instances_val2017.json" self.num_classes = 1 self.max_epoch = 300 self.data_num_workers = 4 self.eval_interval = 1 When I run python tools/train.py -f exps/example/custom/helmet_detection.py -d 1 -b 16 --fp16 -o -c yolox_s.pth I get the following error: RuntimeError: CUDA out of memory. Tried to allocate 4.51 GiB (GPU 0; 6.00 GiB total capacity; 110.28 MiB already allocated; 4.44 GiB free; 120.00 MiB reserved in total by PyTorch) I have tried reducing the batch size, and even resizing the images in the dataset to 640x640, but I keep getting the same error with almost the same allocation size everytime. I don't understand where 4.51 GiB allocation is coming from. Any insight is appreciated. Thanks in advance! — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

No, -b 8 gives me the same error.

Does  python tools/train.py -f exps/example/custom/helmet_detection.py -d 1 -b 2 -c yolox_s.pth  help?

I finally managed to solve the issue. I switched to a Linux machine with 8 GiB capacity. The same command works on that machine. I think the problem may have been with the GPU itself.


Editing Citizen via Admin menu regenerates/ignores input field for Social Security Number

What version of Node.js are you using?
16.17.0
What version of npm are you using?
8.19.1
What operating system are you using?
Windows
What version of SnailyCAD are you currently using?
1.24.1
Describe the Bug
Citizens edited and saved through Admin>Manage Citizens have their Social Security Number regenerated (and thus overwritten) whether the field is empty or not.

Doesn't occur when clicking 'cancel' or switching sections, only when the edit is confirmed through the 'save' button.
Does not occur when editing a citizens via the user's own citizen list.

Expected Behavior
When saving changes to a citizen through Admin>Manage Citizens their Social Security Number is set to the value in the input field, unless the field is empty, in which case one will be generated.
To Reproduce

Edit a citizen's details through Admin>Manage Citizens
Save the changes.
Review the Social Security number through the edit form or in the user's Citizen tab.

Will take a look soon.

cool! Tried to have a look myself to submit a more specific report, but not familiar with typescript/react yet.

cool! Tried to have a look myself to submit a more specific report, but not familiar with typescript/react yet.

ah, well. Just know you're always welcomed to make PR's with other fixes :)! This issue should be fixed now too.

cool! Tried to have a look myself to submit a more specific report, but not familiar with typescript/react yet.

ah, well. Just know you're always welcomed to make PR's with other fixes :)! This issue should be fixed now too.

Will definitely be tinkering around with it to fit our needs. I'll be sure to to make a PR if it amounts to something that could be of value to others :)

you can always create a feature request for me and others to look at and implement.


Upgrade Forbidden APIs plugin 3.3 -> 3.7

This PR contains the following updates:

Package
Type
Update
Change

Forbidden APIs plugin
build
minor
3.3 -> 3.7

Release Notes

policeman-tools/forbidden-apis (Forbidden APIs plugin)
v3.7
Compare Source
v3.6
Compare Source
v3.5.1
Compare Source
v3.5
Compare Source
v3.4
Compare Source

[ ] If you want to rebase/retry this PR, check this box

Warning
Renovate's suggested commit message is being replaced with improved initial commits to enable automerging. As a side effect, these suggested commit messages might have changed. Consider comparing the initial commit message and this message to determine the most suitable one. Please leave feedback in #sys-renovate.

Suggested commit message:
Upgrade Forbidden APIs plugin 3.3 -> 3.5.1

See:
- https://github.com/policeman-tools/forbidden-apis/wiki/Changes
- https://github.com/policeman-tools/forbidden-apis/compare/3.3...3.5.1

Edited/Blocked Notification
Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.
You can manually request rebase by checking the rebase/retry box above.
⚠ Warning: custom changes will be lost.


parse request version in extractor, refactor match_version

So, this is a somewhat mid-sized refactor in how we handle & match version requirements in requests.
The general idea is:

we are using a new axum extractor to parse the version requirement (web::ReqVersion). It can parse static names like /latest/, but also specific semver::Version and semver::VersionReq. This changes the status code for an invalid version identifier.. Previously we returned a 404, now it will be a 400. I added a custom Path extractor so we have a nice error page on 400 too, so for users it should be fine.
All places where we use the extracted version identifier we can now use a semver::Version
match_version and its response types are refactored to use the new ReqVersion.
in our handlers there was much repetition around how we handle different ReqVersion and redirect in some cases. This is replaced by introducing AxumNope::Redirect and into_canonical_req_version_or_else for the match_version result. This unifies the version identifier canonicalization in more places.
In there I also added a redirect from newest or semver * to /latest/, which IMO makes more sense.

I think there will also be more edge cases where the exact redirects for version identifiers are not slightly different than before, but IMO this is fine for a (mostly) web interface.

@Nemo157 @GuillaumeGomez any chance for some feedback? I'm aware it's a big PR, but I hope it will improve some readability in the web handlers.

Looks good to me but please wait for @Nemo157 review. :)

@Nemo157 and chance you can find time for at least some design feedback? I would highly appreciate it

@Nemo157 this is ready for another round.
After removing the package_name rename commit and pushing this branch I realized that this might be hard to review because some files with more changes appear as changed again, sorry about that.


Add clarifying instructions for scheduling tests

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


[Bug] - Triggers failing as a result of a cluster failure do not result in a latest failure on status page

Triggers failing as a result of a cluster failure do not result in a latest failure on status page

This uses workerID but the new exception uses triggerID for crash items
https://github.com/z1pti3/jimi/blob/9fb32a4aa4502628c1697a0a421f64f874b73323/jimi_web.py#L457


Updated "List of Resources" link in Readme.

I also maintain a [list of resources]
from: https://docs.google.com/document/d/1kuhUEiIkAUHO0LBBNM4A1Enc5QgVZn3CDkuSoPZJR1U/edit#
to: https://docs.google.com/document/d/1Uy7zybjFecFWmW2xTbYKN8t-JhG0_hlJzW6xJjkUA-I/edit#

Thank you! Good spot.

You're welcome, good sir.
Jared Null

On Mar 27, 2015, at 3:07 AM, Sam Dutton<EMAIL_ADDRESS>wrote:
Thank you! Good spot.
—
Reply to this email directly or view it on GitHub.


This fix brokes border between card-header and list-group, it's doubled in 4.5.

This fix brokes border between card-header and list-group, it's doubled in 4.5.
See diffierence...
https://getbootstrap.com/docs/4.4/components/card/#list-groups
https://getbootstrap.com/docs/4.5/components/card/#list-groups
Originally posted by @waclaw66 in https://github.com/twbs/bootstrap/pull/30497#issuecomment-627523760

/CC @twbs/css-review

We need to check if master is affected too.

Confirmed, PR opened.

I think this regression is also for a card-footer following a list-group. Adding to the patch above, this seems to work:
.card {
[...]

.list-group + .card-footer {
border-top: 0;
}
}

But I'm unsure if this is the correct fix.


Notice E0 - Shelf Readiness: Activity 1.2.3: Updating the test coverage for the OpenSRP FHIR server to reach 80%.

This is no longer relevant (or it's completed) b/c this is HAPI FHIR, not something we maintain


Feature #66

PULL REQUEST
Adding base functionality for #66
ADDITIONAL INFORMATION
Octicons are not properly displayed, the icon is aligned to the left, while the span and :before are centered

hi @Hammster,
Sorry for the mess, but this needs another review... a lot has changed and will still change


Cannot use back the Signed-in Session

Hello. My project has already signed in for the user, as i know it should be saved at file WTelegram.session and can re-use again the file for the next running.
But when I run again the project, it shows an error "You must provide a config value for bot_token" at "await _client.LoginBotIfNeeded();" row
Can you please help to correct me if i am wrong at any step:
thank you!
This is my code
`
public virtual async void NewClient()
{
try
{
_ApiId = Convert.ToInt32(ConfigurationManager.AppSettings["ApiId"]);
_ApiHash = ConfigurationManager.AppSettings["ApiHash"];
//_PhoneNo = ConfigurationManager.AppSettings["PhoneNumber"];
_client = new WTelegram.Client(Config);
await _client.LoginBotIfNeeded();
await _client.ConnectAsync();
}
catch (IOException e)
{
System.Windows.Forms.MessageBox.Show("Session was using by another process. Restarting..");
_client.Dispose();
_client = new WTelegram.Client(Config);
}
}
`

When using LoginUserIfNeeded, your Config must provide a value for "phone_number" each time.
When using LoginBotIfNeeded, your Config must provide a value for "bot_token" each time.
(Same as with Bot API)
That info isn't saved.

My bad, thanks a lot for the information

When using LoginUserIfNeeded, your Config must provide a value for "phone_number" each time.
When using LoginBotIfNeeded, your Config must provide a value for "bot_token" each time. (Same as with Bot API) That info isn't saved.

Hello, after the first run, it still ask for the verification_code for all the time. Which means I have to generate new session every time.
Can you please help on thi

s

It still sends new Verification code for the second time if i leave verification_code = "", means it isn't using the previous session. and trying to create new session


css for ion-tab does not work with i18n properly

Ionic version:  (check one with "x")
(For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[ ] 3.x
[x] 4.x
I'm submitting a ...  (check one with "x")
[x] bug report
[ ] feature request
Please do not submit support requests or "How to" questions here. Instead, please use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
i18n string is there in source:
Hello

But it is chew up by improper css definition.

Expected behavior:

Well, show it properly.
Steps to reproduce:

Get OOTB Tabs template
Do ionic i18n by following http://ionicframework.com/docs/developer-resources/ng2-translate/
Do def below:

  <ion-tab [root]="tab1Root" [tabTitle]="( 'HELLO' | translate )" tabIcon="home"></ion-tab>

3 run ionic-app-scripts serve
Related code:

insert short code snippets here

Other information:

Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
insert the output from ionic info here

Current WA is overwrite the CSS forcibly at tab.scss:
.tab-button-text {
  display: block;
}

Can confirm, seeing this as well in a demo. Looks like the issue is here, where we're setting some values on the tab-button
https://github.com/ionic-team/ionic/blob/master/src/components/tabs/tab-button.ts#L51-L60


Decide on format taken by complex inputs (arrays, objects)

Currently this action takes complex values as JSON arrays, which is syntactically sound, but complicated.
For example:
tags: { "key1": "val1", "key2": "val2" }

Or:
what-if-exclude-change-types: ["create", "delete"]

For enum lists, I suggest comma-separated:
what-if-exclude-change-types: create,delete

Not sure what's commonly done for complex objects - e.g. tags or parameters.

For first release, the two inputs we need to think of are "tags" and the "parameters".
We thought it would be helpful to start simple, and just accept a JSON key-value input (mostly because the most common use-case is going to be chaining outputs from other actions). We can support different formats in the future, but are unlikely to want to take away JSON.


Bug: Host Match Policies

Bug Description
I was testing some host name policies.
We are trying to match a number of environments based on what we currently have:

dev
dev2
test

We have a ingress-gateway that would then filter certain request from the host name

dev.example.int
dev2.example.int
test.example.int

The following works, SUCCESS
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: core-allow-policy
  namespace: istio-system
spec:
  selector:
    matchLabels:
      app: istio-ingressgateway
  action: ALLOW
  rules:
     - to:
        - operation:
            hosts: [
              "*.example.int",
            ]

But if we also want add hosts which use a port, for example in microk8s and minikube can't bind ports to 443, or 80, therefore we need to specify a port.

dev.example.int:39954
dev2.example.int:38567
test.example.int:35467

then if we create a policy to capture both scenarios like this
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: core-allow-policy
  namespace: istio-system
spec:
  selector:
    matchLabels:
      app: istio-ingressgateway
  action: ALLOW
  rules:
     - to:
        - operation:
            hosts: [
              "*.example.int",
              "*.example.int:*",
            ]

Lets say we are testing this URL: http://dev.example.int:39954
This policy fails to evaluate correctly...
if i change the policy to this:
     - to:
        - operation:
            hosts: [
              "*.example.int",
              "dev.example.int:*",
            ]

It works!!
So the issue seems when you have a wild-characted at the beginnign and one at the end.
Version
client version: 1.13.3
control plane version: 1.13.3
data plane version: 1.13.3 (5 proxies)

Additional Information
No response

https://istio.io/latest/docs/reference/config/security/authorization-policy/#Rule

Both prefix and suffix wildcard matching is not there yet.

can you add the reference to the other feature request so we can close this one?

https://github.com/istio/istio/issues/16585


NodeJS Tools and Web Essentials

I am struggling to get some of the basic functionality out of the Web Essentials Extension on a NodeJS project.  Bundling, minifying, etc are not working on javascript files at all.  Has anyone else tried using these features in tandem with the NodeJS Tools?  Thanks in advance!

@lilasquared Uh, have you even asked the developer of Web Essentials if it even supports this one? Because the only possible reason for that functionality to be broken would be that Web Essentials is incompatible with the extension. However, what version & edition of Visual Studio are you using?

I haven't asked a dev over there yet, I thought it might be something wrong with the NodeJS plugin because it works correctly for other projects within visual studio.


[DOC] getting started guide for dataproc is confusing

Report incorrectconfusing documentation
I did a review of https://github.com/NVIDIA/spark-rapids/blob/branch-23.04/docs/get-started/getting-started-gcp.md and it was really confusing.

getting the python script installed is a pain. At least it was for me. I had python 3.8 installed, but it was not the default python version. I kept getting errors trying to install the script. Ultimately I had to go to a conda environment that had python 3.8 as the default and that worked. Not sure this is the best user experience. Especially on something that does not have python 3.8 as the default. Why do we need python 3.8 exactly???
The first part of the docs assume that I have run something in google cloud already and have a cluster up and running.  This is fine. I am not sure if we want to distinguish between people who already have something up and running and want to migrate vs people who want to try out something on dataproc.  Later parts of the examples show trying something out on data proc and no clear link between them, so it feels a little odd.
It feels odd that we have to run the qualification tool on a live CPU cluster. I assume that most people would not have the cluster live at that moment. They just want to know what jobs would be good to migrate.
Is there a reason not all of my jobs showed up in the qualification tool. I had a few jobs that were very small or failed. The failed jobs I can see not showing up, but the really small ones feels odd that they wouldn't show up, unless there are so many other jobs that it is a bit much.
The sections of the tutorial do not flow very well. The bootstrap tool comes before setting up a cluster. I got really confused because bootstrap to me feels like it is starting from nothing, but no it starts form a GPU cluster and updates it to be better. I was left wondering if I should use the options the qualifiaction tool spit out to create my cluster or if I should try to use the bootstap tool to create my cluster.  Only after looking ahead did I figure it out.
By default dataproc does not use n1 nodes by default it uses n2 nodes (at least when trying to create the cluster from the UI).  The qualification tool said that I should just add T4s to my cluster request and everything would be fine. It was not. Some detection or warning about this would be good.
The qualification tool predicted that my speedup would be 4x from 369 seconds to about 86 seconds. The actual number I got was close to 2 mins (at least according the the dataproc UI). After bootstrap and profiling this got down to 110. That is fairly decent. Good work
It took forever to create the cluster.  The creation section mentioned this, but I ended up creating my cluster before I got there because the flow of the doc feels really odd.
After I created the cluster and ran the qualification and profiling tool, then we get to the section on running notebooks and submitting jobs to the cluster.  Really??? There is no flow here.
I really didn't like it that I had to compile the examples to try and run something on the cluster. I gave up after I had to also had to download/upload data to the cluster to try this out. I had already spent more than an hour on this. I really would like to see a flow that is different to the doc where we could be up and running in as little as a few mins.

getting the python script installed is a pain. At least it was for me. I had python 3.8 installed, but it was not the default python version. I kept getting errors trying to install the script. Ultimately I had to go to a conda environment that had python 3.8 as the default and that worked. Not sure this is the best user experience. Especially on something that does not have python 3.8 as the default. Why do we need python 3.8 exactly???

maybe the reason the tool required python 3.8 and 3.10 from the doc is the difference of supporting keywords across python versions. @mattahrens please correct me if anything wrong.

Is there a reason not all of my jobs showed up in the qualification tool. I had a few jobs that were very small or failed. The failed jobs I can see not showing up, but the really small ones feels odd that they wouldn't show up, unless there are so many other jobs that it is a bit much.

not sure if the job has generated the eventlog successfully, if we have the eventlog, the result should show in the result table(I tried with starting some spark sessions but could not reproduce). @mattahrens any insights?

re: python version, we should say python-3.8 or higher.  it doesn't have to be exactly python-3.8.  @amahussein can confirm as well.
for qualification tool output in user tools, we default to only show recommended apps in the CLI output.  the full set of apps that were processed are available in the CSV output.


Do not treat project.buildFile as an Isolated Projects violation

The project.projectDir access is not a violation, and the buildFile field on DefaultProject is final, same as projectDir.
Accessing the buildFile is also required for making Kotlin DSL model builders IP-compatible.

@bot-gradle test

I've triggered the following builds for you. Click here to see all build failures.

PullRequestFeedback build

@bot-gradle merge

I've triggered a build for you. Click here to see all failures if there's any.


helm: Allow configuration of the install-cni container resources

Please ensure your pull request adheres to the following guidelines:

[X] For first time contributors, read Submitting a pull request
[N/A] All code is covered by unit and/or runtime tests where feasible
[X] All commits contain a well written commit description including a title,
description and a Fixes: #XXX line if the commit addresses a particular
GitHub issue.
[N/A] If your commit description contains a Fixes: <commit-id> tag, then
please add the commit author[s] as reviewer[s] to this issue.
[X] All commits are signed off. See the section Developer’s Certificate of Origin
[X] Provide a title or release-note blurb suitable for the release notes.
[ ] Are you a user of Cilium? Please add yourself to the Users doc
[X] Thanks for contributing!

The helm chart does not provide a way to specify how much resources this container uses.
This change adds a way to configure this field.
Helm: Allow configuration of the install-cni container resources field

Hello @joamaki and @kaworu!
Gentle bump on this small PR, if you can take a look at it when you have some time and let me know if it looks good :)
Thanks a lot!

Added @squeed as a reviewer to hopefully speed things along.
@RenaudWasTaken Could you please include the reason for this change in your commit message and PR description? Does the absence of this cause problems? Also, is 10MiB enough? The cilium-cni binary alone weighs 47MiB.

It looks like the smoke tests failed, see the error below.
please run 'make -C install/kubernetes' and submit your changes
Error: Process completed with exit code 1.

Hello!
Sorry for the lag! I'll fix the PR early September (I'm out of office until then).
Our use case is that we run a pod at node initialization that runs checks on the node before releasing it for general scheduling.
To do that it's currently configured to take all the resources of the node.
Typically to support this use case we set out system daemonsets such that requests and limits are at 0.
When we deploy cilium with this init container, because of the kubelet accounting strategy, the node does not have it's full resources available.
Which then prevents our pod from scheduling 😅

Alright, I've update the PR with the specific changes, but I don't seem to have the ability to mark my PR out of draft
@joestringer could you take another stab and move the PR out of draft?
Thanks a lot!

@kaworu, @joestringer and @squeed gentle bump in your inbox :)

Do you see this button near the bottom of the page? This is the one I was talking about.

I can run the testsuite to gather that feedback.

/test

/test

@RenaudWasTaken this should go in, I'm just rebasing on main to pick up some test fixes.

/test

Thanks for pushing this PR over the line!


Possible accent error in Python run

Hello, I'm trying to run a simple code to run through some files in a specific folder with this code:
import os
import pathlib

print("---START---")

folderPath = "G:\\Meu Drive\\Obsidian Vaults\\Lauri's Vault\\600 Calendário\\Test"
print(folderPath)

for path, subdirs, files in os.walk(folderPath):
	for name in files:
		print(pathlib.PurePath(path, name))

print("---END---")

If I run this with this Obsidian plugin it seems me that no file is returned:

But if i run it in Visual Code it runs normally:

Another thing, if I run the same code with folderPath = "G:\\Meu Drive\\Obsidian Vaults\\Lauri's Vault" it woks OK in obsidian, maybe there is something with the accent in "600 Calendário"?
My plugins settings is:

And my OS is Windows 10 if it helps.

@LucasLauri
Try changing the Notebook mode. If not, then try running python in terminal:
`

import os
import sys
os.path.dirname(sys.executable)
'C:\Python25'
`
And update your Python path.

@hvitis Disabling the Notebook mode and then close and open Obsidian worked!
Thanks :)


createGoogleAdsServiceClient() not working

Hi,
I'm facing a bug when running this line of code, and I am not sure why:
GoogleAdsServiceClient googleAdsServiceClient = googleAdsClient.getLatestVersion().createGoogleAdsServiceClient();
I have taken the client library code and I am trying to reconfigure it in a Java servlet (still using Maven). The code compiles, but when it gives me an error with that line of code. The errors are as such:
(1) The first time I run, I get this error:
CAUSED BY:	java.lang.reflect.UndeclaredThrowableException
CAUSED BY:	java.lang.reflect.InvocationTargetException
CAUSED BY:	java.lang.NoSuchMethodError: 'com.google.protobuf.Parser com.google.protobuf.MessageLite.getParserForType()'
(2) When I reload the page, I get this error:
CAUSED BY:	java.lang.reflect.UndeclaredThrowableException
CAUSED BY:	java.lang.reflect.InvocationTargetException
CAUSED BY:	java.lang.NoClassDefFoundError: Could not initialize class com.google.ads.googleads.v3.services.stub.GrpcGoogleAdsServiceStub
When running this code (taken from GetCampaigns.java) in the client library, it works, so I suspect it has to do with some dependency or something with the pom.xml file. I've experimented with copying over different things in the google-ads-java and google-ads-examples pom.xml files, but none have worked.
Any help would be appreciated. Thanks!

It looks like you have a conflicting version of protobuf on the classpath, most likely pulled in from another dependency in your tree. You can verify this is the case by running mvn dependency:tree -Dverbose -Dincludes=protobuf-java, the one under google-ads will most likely be marked as overridden by a conflict. Try adding an explicit dependency on com.google.protobuf:protobuf-java:3.10.0. This should restore the version required by google-ads.


Fix norm gym wrapper

Fixes bugs in normalization wrapper -- these bugs affected rollouts of policies trained with "bound" normalization (Octo does not use this) or with "normal" normalization if conditioned on proprio (which Octo by default is not).

Added support for masks and value clipping to normalization wrapper to mirror dataset normalization routine


Update OceanStor driver with list pools API changes

What this PR does / why we need it:
This PR will address the change of driver API list_pools() to list_storage_pools() with respect to OceanStor driver. This is depending on PR #164
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
issue #152
Special notes for your reviewer:
Release note:

Codecov Report

Merging #190 into master will decrease coverage by 0.60%.
The diff coverage is 33.33%.

@@            Coverage Diff             @@
##           master     #190      +/-   ##
==========================================
- Coverage   40.02%   39.41%   -0.61%
==========================================
  Files          64       64
  Lines        4295     4239      -56
  Branches      485      485
==========================================
- Hits         1719     1671      -48
+ Misses       2505     2497       -8
  Partials       71       71

Impacted Files
Coverage Δ

dolphin/drivers/huawei/oceanstor/oceanstor.py
17.64% <33.33%> (ø)

dolphin/drivers/driver.py
56.52% <0.00%> (-11.23%)
:arrow_down:

dolphin/cryptor.py
72.72% <0.00%> (-4.20%)
:arrow_down:

dolphin/wsgi/common.py
64.28% <0.00%> (-3.46%)
:arrow_down:

dolphin/api/v1/storages.py
38.09% <0.00%> (-2.82%)
:arrow_down:

dolphin/task_manager/tasks/task.py
27.13% <0.00%> (-2.72%)
:arrow_down:

dolphin/api/validation/validators.py
44.35% <0.00%> (-1.74%)
:arrow_down:

dolphin/api/common/__init__.py
28.35% <0.00%> (-1.06%)
:arrow_down:

dolphin/api/common/wsgi.py
22.64% <0.00%> (-0.82%)
:arrow_down:

dolphin/context.py
73.46% <0.00%> (-0.54%)
:arrow_down:

... and 11 more


Bug in Total for current page and all references

2-minute video showing issue (and context) here: https://www.loom.com/share/b9ada861c03d437881fea94efbac3099?sid=46ab2aa8-29bf-41a3-bc11-390be0962fbf
When using the "Total for current page and all its references," if no time has been recorded, rather than displaying zero, it displays 7h1m.
(Also in video: feature suggestion/request to also have a "Total for current block and all block references.")

(The real dream would be a table on a project page. Left column has tasks, right column are sums of all times that task was block-mentioned. On top is a button to refresh totals for all tasks.)

I have no idea how this total can be 7h01. I can't reproduce.
Have you customized "Elapsed time format for an interval" ? It is important to ensure that the chosen syntax is strong and specific enough so that other numerical data is not confused with an elapsed time.
I've just pushed an update (for review), including a new "Total for current block and all its references" (corresponding original block as to be focused), thanks for the suggestion.
I have duly noted the other feature request for a detailed table of task durations for a page and its references. I will consider it for a future update if it is reasonably feasible !


How to get the coordinate value of the notes?

What is your question?
How to get the coordinate value of the notes in area 1 and area 2 with lua script?

https://github.com/ShadowMario/FNF-PsychEngine/wiki/Lua-Script-API:-Variables

@MayoALT Which functions? I don't find them.

look for the strum/receptor area

getProperyFromGroup('playerStrums', 0, 'x') --Get X position of arrow 0 from player (Left)
getProperyFromGroup('opponentStrums', 2, 'y') --Get Y position of arrow 2 from opponent (Up)

getProperyFromGroup('notes', 0, 'y') --Get Y position of spawned note 0
-- The spawned note ID is not relative from spawn or charted order!!! It's based on which note is more up (or more down if you're on Downscroll)


Fix skeleton reparenting to also work when the skeleton node is not a bone

Existing code only did the reparenting when the parent node was a bone. This
change fixes that, plus the reparenting code itself, which used the index of
the skin instead of the skin index itself to address the skeleton array.

seems good

Thanks!

Cherry-picked for 3.1.1.


Deploy pre-trained models for fast demo'ing of prediction services

this is rolled into pio-cli as of v1.3


crypto_generichash

Tracking implementation of crypto_generichash here. Don't have the time to complete this now, but anyone else can feel free to finish this off. Otherwise I will when I have more time.

sry didn't see you opened this :( master has this now as well