Add an RFC for fixed point types.

Rendered

I feel like implicit conversions from floats are potentially a source of bugs severe enough that maybe we shouldn't have them at all.

I think for making constants of a specific shape it's reasonable to have implicit float conversion. As the other argument to binary operators it's probably reasonable to require an explicit conversion to a constant first.

How does one perform computation on fixed point values during compilation? I think "you just use floats" is an unsatisfying answer.

An adjacent question is «what will FixedPointValue.get() in the simulator return?» We should probably add a separate FixedPointConstant type.

We should probably add a separate FixedPointConstant type.

Are there good fixed point libraries for Python we could use here?

I have nothing concrete here, just minddumping stuff I wrote down in text files locally.
I assume that __div__ is deliberately not implemented. Thanks to the curse of rational numbers you'd need infinite bits to represent many divisions without loss, such as 1/5. Amaranth extends width so values can be completely represented, but this is impossible for fixed point division.
You can get as much precision as you'd like from dividing fixed point numbers by left-shifting a numerator (increasing its f_width) before dividing. Consider dividing e.g. 110^-6 by 99999910^-6:

1*10^-6/999999*10^-6 = int(1/999999) * (10^-6/10^-6) = 0*10^0.

Q(0,6)/Q(0,6) yields Q(6,0), yields 0 due to not enough precision.

On the other hand, we can left-shift the integer part to get a non-zero result from this divide. :

1*10^-6/999999*10^-6 = 1*10^-6*(10^7*10^-7)/999999*10^-6  = int(10000000/999999)*(10^-13/10^-6) = 10*10^-7

Q(0,13)/Q(0,6) yields Q(6,7), yields a non-zero result (close enough).

I arbitrarily chose to shift by 7 decimal places (replace with binary for this RFC), but it's not obvious to me that any given left shift will be universally good for all use cases to prevent divides from returning 0 for non-zero numerators.
Additionally, you may only want the extra precision during the divide; e.g. I could truncate the Q(6,7) in the second example back down to Q(0,7), saving 6 bits, and still have a perfectly valid result to pipe to the rest of a design. Whether/how much to truncate depends on the dynamic range of fixed point values you expect your design to see.
Will fixed point divide be rare enough that divide should be completely ignored? Maybe there should be a divide function that allows the user to tweak:

Extra precision used during the integer divide portion.
The Q of the output.

I do not have a concrete use case in mind right now (I could probably shoehorn division into my Celsius to Fahrenheit conversion experiments). Just something I mulled over today.

You could always multiply by reciprocal for an application like unit conversion.

Multiply-by-reciprocal only works if you can calculate it ahead of time- i.e. one of the multiply inputs is constant. Otherwise you'd have to to find the reciprocal while your design runs before doing the multiply, which... requires a divide. The thing you're trying to avoid.

Indeed, I will need to find a different way to shoehorn a division into my Celsius to Fahrenheit experiments :).
Divide by non-constant factor for fixed point is probably uncommon. But I hesitate to say it's "so uncommon it's not worth supporting in some way at all, even if a __div__ impl is impossible".

The question of whether __div__ makes sense to have is whether it's feasible for synthesis to infer a divider.
Independent of that, there's already nothing that prevents you from making a divider component with two fixedpoint inputs and a fixedpoint output.

The question of whether div makes sense to have is whether it's feasible for synthesis to infer a divider.

Do FPGAs have divider IPs? I thought they only had multiplier IP. I assumed amaranth provides floor division/mod for simulation purposes, and not something you'd want to synthesize.

is whether it's feasible for synthesis to infer a divider.

Yosys will actually synthesize a divider for you if you do a // b in Amaranth. Here's the size for a 8/8=8 combinational divider for iCE40:
   Number of cells:                114
     SB_CARRY                       64
     SB_LUT4                        50

The question of whether div makes sense to have

Even if dividers synthesize, I don't think __div__ makes sense to have for fixed point; in integer division, "d doesn't divide n evenly" is handled by remainder. Therefore all values can be represented in the output without loss, which is great since Amaranth never overflows.
In fixed point, there's no remainder, so if  "d doesn't evenly divide n"  we keep adding bits to n until d evenly divides our modified n. This can require infinite number of extra added bits, and if we keep with "Amaranth arithmetic never overflows" semantics, this is impossible to satisfy.
Even if __div__ doesn't make sense, I think there should be something for divides (a function instead of an overloaded operator?) Last night was me minddumping my thoughts on what fixed point divide should handle.

If a perfect __div__ is desirable to have, instead of a fixed.Value, we could simply have it return a ratio object containing the two operands. Once such a ratio is passed to e.g. fixed.Value.eq(), the actual division could be performed with the precision of the assignment target.
To avoid scope creep, I'm inclined to leave inferred division out of this RFC. We could instead do a separate RFC later for that.

To avoid scope creep, I'm inclined to leave inferred division out of this RFC. We could instead do a separate RFC later for that.

That's fine, mind putting your comment re: ratio objects under Future Possibilities/making a mention that division is out of scope?

Is this still being worked on?
I'm familiar with the Python FxpMath module and so like the idea of denoting Qs.m or SQs.m for significand and mantissa signed, UQs.m for unsigned. The syntax @ld-cd proposed looks good to me.  I'm not so into the fixed.Shape(f_width, ...) and fixed.Shape(i_width, f_width, ...) notably because the first parameter means something different depending on if the first two are integers (wat?); but I think it's more clear to have something like SQ() and UQ() requiring both s and m.  I also like the syntax SQ(5, -6) for shifting left (xxxxx000000) and SQ(-4,5) for shifting right (+.+++xxxxx), note that SQ(-1,m) puts the MSB at the 1/2 (0.1) position.
It looks like there's still question about what to do if the other value is a float.  I assume this means if a Python float or numpy floating-point type is passed.  I like the explicit conversion approach.  I'm not keen on spending a whole bunch of time trying to debug something that isn't behaving the way I expected, or wondering if it's going to behave the way I expect instead of blindly hoping.
The same can be said for passing any constant as a fixed-point value:  I'd rather require the constant to be presented as SQ() or UQ() rather than "here's a Python type, have a guess at what's the right thing to do."
In the worst case, you can always add implicit conversion later without it being a breaking change.
Use case:  I frequently use lookup tables generated by numpy.  These tables may be floats.  If I have a table of np.float64 or such I want to be able to somehow indicate that the table is a certain fixed-point type.  To my mind, this is pretty simple:  I tell it I want a SQ() or UQ() somehow (e.g. SQ(-4, 16, log2_table)) and Amaranth somehow does the right thing (which ultimately means converting the entire addressable portion of the table and embedding it in the design).  That's a relatively simple problem.
I'm using an Abed-Siferd predictor to produce an accurate log2() and exp2() down to more than 4 bits with simple circuitry; I need 19 bits of mantissa.  My solution is a 512-entry SQ(-4,16) look-up table added to the SQ(4.5) output of the predictor.  Linear interpolation between the resulting values supplies further granularity.
To do this, I need to add dissimilar fixed-point values with proper sign extension:  adding a negative SQ(-4,16) to a Q(12,4) needs to extend all the sign bits to cover the Q(12,4) (whether SQ or UQ).  The same goes for aligning outputs.
I'm looking forward to built-in fixed-point math, the lack of which is a deficiency in VHDL and Verilog that I would very much like to escape.

Is this still being worked on?

We're definitely still very interested in it!
The RFC will need several people driving it forward; usually two is enough (I am usually one of them and the author is another) but this one will likely need three. At the moment I'm seriously ill and will probably continue to be mostly bedridden until January (chronic pain that became worse recently).
I think it's definitely worth it to work out a bunch of kinks before then.

Is this still being worked on?

On my side this is currently shelved for a lack of time; I have higher priority projects than the one I need fixedpoint for, but I intend to eventually come back to it.
If you (or anybody else) would like to have a go at revising/improving the RFC instead of waiting for me to find time for it, I welcome you.

Fair enough, life happens; just wanted to weigh in though, this is seriously useful to me in basically anything involving signal processing.

Yep, I think it's incredibly important to have. I have my own interest in the RFC too.

I don't want to spam this thread with +1s, but as a heavy user of a modified version of this RFC already, I'm also happy to help out in any way I can.

@schnommus Could you list your modifications?

@whitequark I have tried to keep things in line with this draft and @zyp's original PR to reduce the risk of churn, so there is not so much that deviates. In general I like the RFC in its current form. Some small things I changed:

min(), max() representable constants from a shape: this is a +1 to @ld-cd 's comment on having min(), max() methods for retrieving the span of representable values for a particular shape. It has proven quite useful.
behavior of fixed.Const initialization should be specified for cases where a shape is specified, but the provided int or float is out of range of that shape. An exception may be a reasonable default, however clamping a float initializer to the max- or min- possible representable value within that shape also seems often desirable. Perhaps as an optional switch that demotes such exceptions to a warning. The alternative is to clamp the float before using it as an initializer, but this gets clunky if you want it to clamp to the true max/min representable values.
dedicated truncate() method alongside the existing round() method: this could be collapsed into the same round() function with different arguments, but I found it less noisy to read DSP code when there are dedicated and separate truncate() and round() methods. It's pretty clear what truncate means, but round can have different semantics.
.eq(value) and other ops should preserve signed nature of the LHS fixed even if the underlying Value is unsigned. This is a problem as as_value() does not necessarily retain the signedness of the underlying fixed.Shape. This was a practical matter I ran into that is not really specified here. But in general the RFC should be careful to specify how signedness affects each operation, whether the operands are simple Values or fixed.Values.

That's all I touched. On some other bikeshedding points from above:

+1 on int_bits / frac_bits rather than i_width, f_width.
+1 that fixed.Shape(7, 0, signed=True) counterintuitively has the same width as signed(8). Would be nice to find another solution
A few of the operators need more detailed specification e.g.:

What should fixed.Value() >> fixed.Value() mean? Shift by the rounded integral component or throw an exception?
What are the rounding implications of performing __eq__ or __lt__ on fixed.Values of different widths? @ld-cd also mentioned this above

In case this is useful, I have developed a fixed-point library for systemverilog which we have open-sourced here: https://github.com/SkyworksSolutionsInc/fplib
The conventions used in this library are wide-spread at least in the audio ASIC industry.

@schnommus These all look reasonable to me although I am not a DSP expert so I may well be missing something. From what @zyp says it might be meaningful for you to pick up the RFC yourself, what do you think?

@schnommus These all look reasonable to me although I am not a DSP expert so I may well be missing something. From what @zyp says it might be meaningful for you to pick up the RFC yourself, what do you think?

@whitequark sure, I'm happy to take this. As a first action I would try to condense all comments above into the existing markdown from @zyp . Ideally we keep the changes in this PR to retain the comment history.
I can't commit to a hard deadline due to work commitments, but my personal goal would be to get a new RFC revision out in the coming week.

+1 on int_bits / frac_bits rather than i_width, f_width.
+1 that fixed.Shape(7, 0, signed=True) counterintuitively has the same width as signed(8). Would be nice to find another solution

I propose that instead of specifying the integer and fractional parts individually, we specify the total width and the shift amount. E.g. a fixed.Shape(16, 12) would have 4 integer bits and 12 fractional bits. Going this route, we could also consider dropping the signed argument and specifying e.g. fixed.Shape(signed(16), 12), unambiguously specifying the shape of the underlying storage. fixed.Shape(16, 20) would also be more readable than fixed.Shape(-4, 20).

fixed.Shape(16, 20) would also be more readable than fixed.Shape(-4, 20).

Check my math on the fixedShape ones.  I went over them a few times and got a few wrong and, honestly, I spend several seconds thinking about it but I'm not rigorously confirming they're right, it's effort.
              SQ        UQ        fixed.Shape (signed)  fixed.Shape (unsigned)
101.0011      SQ(4,4)   UQ(3,4)   fixed.Shape(8,4)      fixed.shape(7,4)
0.0001010011  SQ(-3,8)  UQ(-3,7)  fixedShape(8,8)       fixed.shape(7,8)
1010011000    SQ(8,-3)  UQ(7,-3)  fixed.Shape(8,-3)     fixed.Shape(7,-3)

Making this table, three things are obvious:

Coming up with SQ and UQ takes approximately no thought.  By the time I'm done typing the flat number, I've got all the information I need for SQ and UQ.
the fixed.Shape() notation takes significant mental effort and I got it wrong twice for the second example.
The third example has the same numbers in both formats.

It seems like the SQ/UQ format is far more readable and also far more writable.  Going both directions with the (bits, shift) notation requires mental math.  It actually reminds me of scientific notation; I stopped using scientific notation because I'd get exam questions wrong and burn 8 or 9 attempts on a homework question due to not properly shifting the decimal point around when doing arithmetic on dissimilar terms.

+1 that fixed.Shape(7, 0, signed=True) counterintuitively has the same width as signed(8). Would be nice to find another solution

I'm a fan of knowing what size you're working with.  In programming languages, we don't get an extra bit for a signed 64-bit int versus an unsigned—we actually have things like int32 vs uint32 or whatever, depending on languages—I don't see why we need to hide the details here.  It seems even worse to hide those details here since we're specifying hardware.

What should fixed.Value() >> fixed.Value() mean? Shift by the rounded integral component or throw an exception?

Throw an exception.  Shifting by a non-integer is absurd and attempting to handle this would just enable programmers being clever by using non-obvious design details of the language.  You can always set up a signal consisting of some set of bits in the fixed-width signal.

Going this route, we could also consider dropping the signed argument and specifying e.g. fixed.Shape(signed(16), 12), unambiguously specifying the shape of the underlying storage. fixed.Shape(16, 20) would also be more readable than fixed.Shape(-4, 20).

The fixed.Shape(signed(16), 12) syntax LGTM, I like that the equivalent Amaranth shape of the underlying storage is the first argument of the signature.

It seems like the SQ/UQ format is far more readable and also far more writable.

As in the existing draft RFC, I think there is room for both forms:

UQ and SQ remain as aliases to construct a fixed.Shape.
The arguments of SQ, UQ are transformed into the equivalent (correct) fixed.Shape arguments on construction.

As long as we don't have to jump through hoops, I think we should try to expose the industry standard Q notation.

I'm a fan of knowing what size you're working with. In programming languages, we don't get an extra bit for a signed 64-bit int versus an unsigned—we actually have things like int32 vs uint32 or whatever, depending on languages—I don't see why we need to hide the details here. It seems even worse to hide those details here since we're specifying hardware.

Agree, I think @zyp's suggestion above is a neat solution to this.

Throw an exception. Shifting by a non-integer is absurd and attempting to handle this would just enable programmers being clever by using non-obvious design details of the language. You can always set up a signal consisting of some set of bits in the fixed-width signal.

Agree, to me it is obvious this operation should not be permitted.

Based on all the helpful feedback above, I have an updated draft RFC -

Draft: Rendered
Individual changes: Changelist

@whitequark - would you prefer we try to stick to this PR (to preserve comment history), or would you prefer I open a new PR and we continue discussion there? I'm fine with either, although for the former I'd need the permissions.
FYI @zyp

This is looking good!
One note on the rounding topic:
Simple rounding is also known as a mid-tread quantizer. If the desired output format is I.Q (total length: I+Q) we add 0.5 / 2^(Q) and truncate. The cost is a real adder and a clipper if you wanna be safe. Not trivial if you didn’t care about the DC offset error that simple truncation introduces.
But you could also do a mid rise quantizer. You truncate to I.Q, but to get rid of the negative DC offset you add that 0.5 / 2^(Q) after truncation. This is technically an adder too but in HW you can just append an LSB of 1 which is free!
But now you end up with I+Q+1 bits. If these bits were going across a bus you would transport just the I.Q but the receiver has to remember to pad the LSB.
(Note that in integer land, mid-tread is like rounding to nearest integer and mid-rise is like rounding to the nearest midpoint between integers, so you cannot represent a hard zero)
With all that said, if you want to resize a number to I+Q bits without adding a DC offset AND you don’t want the cost of an adder, you can simply truncate to I.(Q-1) bits and then pad an LSB of 1!
So I would advocate for 3 options with truncate being default:

truncate (floors to -inf, free, adds dc offset)
mid-tread (rounds, costs an adder, can represent zero)
mid-rise (rounds, free, cannot represent zero)

On Nov 23, 2024, at 9:57 AM, Seb Holzapfel @.***> wrote:

CAUTION: The email below is from an external source. Use caution before opening attachments or clicking links.
Based on all the helpful feedback above, I have an updated draft RFC -

Draft: Renderedhttps://urldefense.com/v3/__https://github.com/vk2seb/rfcs/blob/seb/fixed-point/text/0041-fixed-point.md__;!!MyQQGECaxY11k7S_!Zq4LoAYGXEt4HM1qPKfyQFLUr4EauoBPfcxvNS4aF5pj35yS3HS0dTRwo1OMRszu0B4aAl_mtwUL0cWq9SXnKMi1eHut8zw$
Individual changes: Changelisthttps://urldefense.com/v3/__https://github.com/vk2seb/rfcs/commits/seb/fixed-point/text/0041-fixed-point.md__;!!MyQQGECaxY11k7S_!Zq4LoAYGXEt4HM1qPKfyQFLUr4EauoBPfcxvNS4aF5pj35yS3HS0dTRwo1OMRszu0B4aAl_mtwUL0cWq9SXnKMi10qhl9yU$

@whitequarkhttps://urldefense.com/v3/__https://github.com/whitequark__;!!MyQQGECaxY11k7S_!Zq4LoAYGXEt4HM1qPKfyQFLUr4EauoBPfcxvNS4aF5pj35yS3HS0dTRwo1OMRszu0B4aAl_mtwUL0cWq9SXnKMi19f9ATEs$ - would you prefer we try to stick to this PR (to preserve comment history), or would you prefer I open a new PR and we continue discussion there? I'm fine with either, although for the former I'd need the permissions.
FYI @zyphttps://urldefense.com/v3/__https://github.com/zyp__;!!MyQQGECaxY11k7S_!Zq4LoAYGXEt4HM1qPKfyQFLUr4EauoBPfcxvNS4aF5pj35yS3HS0dTRwo1OMRszu0B4aAl_mtwUL0cWq9SXnKMi1ZTczUjI$
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/amaranth-lang/rfcs/pull/41*issuecomment-2495560210__;Iw!!MyQQGECaxY11k7S_!Zq4LoAYGXEt4HM1qPKfyQFLUr4EauoBPfcxvNS4aF5pj35yS3HS0dTRwo1OMRszu0B4aAl_mtwUL0cWq9SXnKMi10ERNBvQ$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/A66EOSJYJQYA33AXPGNZGNL2CC6X3AVCNFSM6AAAAABRSN22B2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOJVGU3DAMRRGA__;!!MyQQGECaxY11k7S_!Zq4LoAYGXEt4HM1qPKfyQFLUr4EauoBPfcxvNS4aF5pj35yS3HS0dTRwo1OMRszu0B4aAl_mtwUL0cWq9SXnKMi1Judunls$.
You are receiving this because you were mentioned.Message ID: @.***>

Thank you samimia-swks@ for your input on the rounding details. This is all useful context, although at this point I am inclined to postpone rounding strategies for a future RFC.
In the latest version of the RFC, I have de-scoped rounding completely.
Excerpt from the RFC text touching on this:
 - samimia-swks@: In most DSP applications, simple truncating is done (bit picking, which is equivalent to a floor()) because it's free. I would vote for that being the default behavior at least.
  - ld-cd@: (...) Truncate is still a reasonable default for most applications.
  - ld-cd@: (...) I think a better approach would be to leave rounding and several other common operations that require platform dependent lowering to a subsequent RFC (...).
  - vk2seb@: Both truncation and simple rounding (round to nearest) are commonly used in DSP algorithms. For now, we provide only `reshape()` (truncation, now reflected above). Additional rounding strategies may be added in a future RFC, however we will always need a default rounding strategy, and truncation seems like a sane default.

Even without an opinionated round() operation, I expect this RFC to be useful. Based on the above comments and experience from my own projects, truncation seems the most common 'form' of rounding (small sample size, so input here is appreciated!). Additionally, there is nothing preventing use of your own rounding strategies on top of the existing RFC, before they become part of the language in a future RFC.

In the latest version of the RFC, I have de-scoped rounding completely.

(I haven't been able to track the changes in depth but the overall approach sounds good. We have previously de-scoped controversial or poorly understood aspects of RFC and it worked quite fine.)

Really happy to see progress on this RFC. I appreciate all the work that has gone into it.
I'm particularly interested in supporting user-selectable rounding modes beyond simple truncation. As noted by @vk2seb, truncation can introduce DC biases in the signal that are problematic for some DSP applications. However, I'm okay with that being left out of this particular RFC.
Besides that, I like the current proposal as it stands.


Update Posts “useful-links-01”

Automatically generated by Netlify CMS

👷 Deploy Preview for benevolent-muffin-215770 processing.

Name
Link

🔨 Latest commit
5d4e682671e88b0975933dff3a38476c3142e252

🔍 Latest deploy log
https://app.netlify.com/sites/benevolent-muffin-215770/deploys/6284454513cc1100085ee06f


All changes to remove session passing from powstreams and mda.streams

@aappling-usgs this is failing because mda.streams requires streaMetabolizer and it isn't in the build files. Not sure what the plan is. As per our conversation, I'd be ok with merging this into mda.streams for now for simplicity.

@lawinslow good enough for me - i'll take it from here, thanks. agreed that a lot of this should be moving to mda.streams anyway.


Can't Migrate iSeries DB2 Tables to SQL

Can't Migrate iSeries DB2 Tables to SQL
Issue Type: Bug
It's failing to read the table schema or data so it doens' thave the info needed to build the table in SQL

Tool version: SSMA for Db2 9.4.23215.1002
OS version: Microsoft Windows NT 10.0.19045.0
Correlation: cbead705-3f98-488d-9223-a9243c4fa041

FYI... back in May 2023 the migrations worked fine.


Orientation hint fix

There's currently a bug while setting orientation hint in Camera1: current formula doesn't respect the fact that sensor might be installed reversed on the device (like on Nexuses) which causes photo and video rotated in the result file (while preview is actually okay).
Open issues probably related to this bug:
https://github.com/gogopop/CameraKit-Android/issues/14
https://github.com/gogopop/CameraKit-Android/issues/67
Peeped this solution here:
https://github.com/googlesamples/android-Camera2Video/blob/master/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java
Additional minor change is the ability to record video muted. Added style parameter ckAudioEnabled which is true by default.
Disable sound recording feature request:
https://github.com/gogopop/CameraKit-Android/issues/121
P.S. First commit called "Speech recognition audio_type support" because I initially tried to allow SpeechRecognizer work simultaneously with video recording which turned out to be impossible, and I decided just to mute audio.

This is just for video recording?
After compiling this change, Picture result from camera still rotated 90 degree on my Sony Xperia Z5.

@awidiyadew does standard android gallery displays result images rotated as well? This might be exif issue - the bitmap is actually rotated inside result but file contains exif info how to rotate it back.
Usually it's not enough just to read bitmap from file and set it into ImageView. You either need to apply rotation matrix to an ImageView accordingly to exif or to rotate the bitmap you get in result from camera

For me this solution works in all orientations but landscape with facing camera. It needs an additional flip from top to bottom

Hey @yatsinar we really appreciate the work here and look forward to more potential PRs, but due to the merge conflict we won't be merging this in currently. 100% open to reexamining if resolved though.
We have been picking up the pace dramatically lately on CameraKit, look for many more enhancements in the coming months. 0.12.0 is slated to be released this week!
@droidpl @awidiyadew


Migrate to Jena 3.1.0

Resolves: https://jira.duraspace.org/browse/FCREPO-1672
This PR is divided into three commits as follows (mostly to make review easier):

Change the package names to org.apache.jena and increment version in pom.xml
Update implementation and test code to support the new version
Rework the ldp testsuite (which depends on Jena 2.x) so that we can avoid dependency convergences.

Okay, obviously the vast majority of line changes are going to be com.hp.hpl => org.apache. Do you have any suggestions for substantive review? Are there places you remember making particular choices that should be reviewed? I don't think Jena's API actually changed all that much across the period in question, so nothing comes to my mind.

@ajs6f this is why I have three commits here. I'd look particularly at the second one https://github.com/fcrepo4/fcrepo4/pull/1075/commits/f99a317bc9263785c9eeb72c9318435f11bf44c3 -- that's where all of the impl code changes are.

@ajs6f also, in the first commit, there is this change: https://github.com/fcrepo4/fcrepo4/pull/1075/commits/890c31f86450e0b9965d0b58ac4f51f739661899#diff-f8c7031221097a6120fd8c87ded12841L20
GraphStoreWrapper -> GraphStoreBasic (GraphStoreWrapper doesn't seem to exist any longer)
Otherwise, the first commit is just about renaming the packages.

GraphStore is now deprecated. I'm inclined to take this opportunity to replace it with either Dataset or DatasetGraph (preferably the former).

So after the third commit, the LDP suite runs against the actual fcrepo-webapp?

@ajs6f yes, the LDP suite runs against fcrepo-webapp

@ajs6f: I added another commit (e9292b0) replacing GraphStore with Dataset/DatasetGraph. I also replaced the (deprecated) use of createAnon with createBlankNode. I reordered the commits so that the LDP integration suite changes are still the final commit.

Looks good to me.

@awoods ok, this PR is in your court now. I suspect that it will require additional PRs for the various downstream applications

Resolved with:
https://github.com/fcrepo4/fcrepo4/commit/46497f50f214d2ed8ebfa414f02f75138ea5a105
https://github.com/fcrepo4/fcrepo4/commit/a9dd8478bda6ccf54832d347d5e25e6568a23004
https://github.com/fcrepo4/fcrepo4/commit/336424ab6a010df725301a77501e288d8e3c1f5d
https://github.com/fcrepo4/fcrepo4/commit/4bfdd2594f6f31e12413c151323f9a89b2af6e63


check for bagit file exists before download

This is a minor update for the bagit file downloads.  I found out that the metadata-dirty flag isn't always reliable and a check for the file on irods is needed.

Pull Request Checklist:

[x] Positive Test Case Written by Dev

[x] Automated Testing

[x] Sufficient User and Developer Documentation

[x] Passing Jenkins Build

[ ] Peer Code review and approval

Positive Test Case

Download one of the bagit files in a newly created resource, ensure the bagit file downloads.

METRIC
VALUE

NEW DUPLICATED LINES DENSITY
0.0

NEW SECURITY HOTSPOTS
0

NEW VULNERABILITIES
0

NEW CODE SMELLS
3

NEW BUGS
0

https://sonarqube.cuahsi-workstation.com:9000/dashboard?id=hydroshare-4114

METRIC
VALUE

NEW DUPLICATED LINES DENSITY
0.0

NEW SECURITY HOTSPOTS
0

NEW VULNERABILITIES
0

NEW CODE SMELLS
3

NEW BUGS
0

https://sonarqube.cuahsi-workstation.com:9000/dashboard?id=hydroshare-4114


Move Windows CI from Travis to GitHub Actions

NetLRTS-Windows tests ran extremely slow. Switched to Multicore.

Tests ran with acceptable speed up until the checkpoint test hung.

2020-12-16T01:28:17.6722742Z make[2]: Entering directory '/d/a/charm/charm/multicore-win-x86_64/tests/charm++/chkpt'
2020-12-16T01:28:17.6723262Z rm -rf log/
2020-12-16T01:28:17.6840705Z rm -fr log
2020-12-16T01:28:17.6983269Z ../../../bin/testrun  ./hello +p4  +setcpuaffinity
2020-12-16T01:28:17.7776031Z Running command:  ./hello  +p4 +setcpuaffinity
2020-12-16T01:28:17.7776664Z
2020-12-16T01:28:20.9835333Z Charm++: standalone mode (not using charmrun)
2020-12-16T01:28:20.9836306Z Charm++> Running in Multicore mode: 4 threads (PEs)
2020-12-16T01:28:20.9837067Z Converse/Charm++ Commit ID: 3cb86ec
2020-12-16T01:28:20.9837833Z CharmLB> Load balancer assumes all CPUs are same.
2020-12-16T01:28:20.9838569Z Charm++> cpu affinity enabled.
2020-12-16T01:28:20.9839915Z Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP)
2020-12-16T01:28:20.9841079Z Charm++> cpu topology info is gathered in 0.000 seconds.
2020-12-16T01:28:20.9842324Z Running Hello on 4 processors for 8 elements
2020-12-16T01:28:20.9842971Z step 0 done
2020-12-16T01:28:20.9844729Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9845591Z step 1 done
2020-12-16T01:28:20.9846053Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9846524Z step 2 done
2020-12-16T01:28:20.9846977Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9847504Z [0] Checkpoint starting in log
2020-12-16T01:28:20.9848023Z step 3 done
2020-12-16T01:28:20.9848508Z Main's PUPer. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9849024Z CHello's PUPer. step=3.
2020-12-16T01:28:20.9849594Z Checkpoint to disk finished in 2.603000s, sending out the cb...
2020-12-16T01:28:20.9850516Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9850997Z step 4 done
2020-12-16T01:28:20.9851491Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9851979Z step 5 done
2020-12-16T01:28:20.9852443Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9852921Z step 6 done
2020-12-16T01:28:20.9853390Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9854019Z step 7 done
2020-12-16T01:28:20.9854472Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9854937Z step 8 done
2020-12-16T01:28:20.9855403Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9855857Z step 9 done
2020-12-16T01:28:20.9868057Z
2020-12-16T01:28:20.9872359Z real	0m3.234s
2020-12-16T01:28:20.9883366Z sync
2020-12-16T01:28:20.9888611Z user	0m0.000s
2020-12-16T01:28:20.9889356Z sys	0m0.030s
2020-12-16T01:28:21.1171509Z ../../../bin/testrun  ./hello +p4 +restart log  +setcpuaffinity
2020-12-16T01:28:21.2006009Z Running command:  ./hello  +p4 +restart log +setcpuaffinity
2020-12-16T01:28:21.2007123Z
2020-12-16T02:34:29.3868382Z Terminate batch job (Y/N)?
2020-12-16T02:34:29.3878356Z ^C
2020-12-16T02:34:30.0118060Z ##[error]The operation was canceled.```

Does running with ++local (for netlrts mostly) make the tests run faster?

Does running with ++local (for netlrts mostly) make the tests run faster?

On Windows, Charmrun won't work at all without that (or the Charm Daemon which I have never used).

The checkpoint restart test timed out again, this time with NetLRTS TCP. The test runs with +p4 and the machine only provides us 1 sockets x 2 cores x 1 PUs = 2-way SMP, so maybe that is contributing to it.

The checkpoint restart test timed out again, this time with NetLRTS TCP. The test runs with +p4 and the machine only provides us 1 sockets x 2 cores x 1 PUs = 2-way SMP, so maybe that is contributing to it.

It's strange that this doesn't happen on the Travis CI, which should have the same number of cores.

Maybe try compiling Charm++/the tests without -g

--without-romio does not need to be specified. The build scripts apply it on Windows automatically.
-j2 is preferable to -j3 because -j3 stalls the system enough that output is not regularly output to the CI output view page, while not actually helping the build go any faster.

Tests ran with acceptable speed on multicore up until the checkpoint test timed out.

2020-12-16T01:28:17.6722742Z make[2]: Entering directory '/d/a/charm/charm/multicore-win-x86_64/tests/charm++/chkpt'
2020-12-16T01:28:17.6723262Z rm -rf log/
2020-12-16T01:28:17.6840705Z rm -fr log
2020-12-16T01:28:17.6983269Z ../../../bin/testrun  ./hello +p4  +setcpuaffinity
2020-12-16T01:28:17.7776031Z Running command:  ./hello  +p4 +setcpuaffinity
2020-12-16T01:28:17.7776664Z
2020-12-16T01:28:20.9835333Z Charm++: standalone mode (not using charmrun)
2020-12-16T01:28:20.9836306Z Charm++> Running in Multicore mode: 4 threads (PEs)
2020-12-16T01:28:20.9837067Z Converse/Charm++ Commit ID: 3cb86ec
2020-12-16T01:28:20.9837833Z CharmLB> Load balancer assumes all CPUs are same.
2020-12-16T01:28:20.9838569Z Charm++> cpu affinity enabled.
2020-12-16T01:28:20.9839915Z Charm++> Running on 1 hosts (1 sockets x 2 cores x 1 PUs = 2-way SMP)
2020-12-16T01:28:20.9841079Z Charm++> cpu topology info is gathered in 0.000 seconds.
2020-12-16T01:28:20.9842324Z Running Hello on 4 processors for 8 elements
2020-12-16T01:28:20.9842971Z step 0 done
2020-12-16T01:28:20.9844729Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9845591Z step 1 done
2020-12-16T01:28:20.9846053Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9846524Z step 2 done
2020-12-16T01:28:20.9846977Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9847504Z [0] Checkpoint starting in log
2020-12-16T01:28:20.9848023Z step 3 done
2020-12-16T01:28:20.9848508Z Main's PUPer. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9849024Z CHello's PUPer. step=3.
2020-12-16T01:28:20.9849594Z Checkpoint to disk finished in 2.603000s, sending out the cb...
2020-12-16T01:28:20.9850516Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9850997Z step 4 done
2020-12-16T01:28:20.9851491Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9851979Z step 5 done
2020-12-16T01:28:20.9852443Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9852921Z step 6 done
2020-12-16T01:28:20.9853390Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9854019Z step 7 done
2020-12-16T01:28:20.9854472Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9854937Z step 8 done
2020-12-16T01:28:20.9855403Z myClient. a=123(0000000000C4C294), b[0]=456(0000000000C4C298), b[1]=789
2020-12-16T01:28:20.9855857Z step 9 done
2020-12-16T01:28:20.9868057Z
2020-12-16T01:28:20.9872359Z real	0m3.234s
2020-12-16T01:28:20.9883366Z sync
2020-12-16T01:28:20.9888611Z user	0m0.000s
2020-12-16T01:28:20.9889356Z sys	0m0.030s
2020-12-16T01:28:21.1171509Z ../../../bin/testrun  ./hello +p4 +restart log  +setcpuaffinity
2020-12-16T01:28:21.2006009Z Running command:  ./hello  +p4 +restart log +setcpuaffinity
2020-12-16T01:28:21.2007123Z
2020-12-16T02:34:29.3868382Z Terminate batch job (Y/N)?
2020-12-16T02:34:29.3878356Z ^C
2020-12-16T02:34:30.0118060Z ##[error]The operation was canceled.```

I misunderstood this - it is not the chkpt test timing out, it is just hitting the 90 minutes CI time limit that we configured.

I misunderstood this - it is not the chkpt test timing out, it is just hitting the 90 minutes CI time limit that we configured.

No, it is the chkpt test timing out. Look at the gap in timestamps between these lines:
2020-12-16T01:28:21.1171509Z ../../../bin/testrun  ./hello +p4 +restart log  +setcpuaffinity
2020-12-16T01:28:21.2006009Z Running command:  ./hello  +p4 +restart log +setcpuaffinity
2020-12-16T01:28:21.2007123Z
2020-12-16T02:34:29.3868382Z Terminate batch job (Y/N)?

By removing -g you managed to avoid this hang. However the NetLRTS build was still timing out due to the slowness I mentioned. I believe this is due to our ethernet code being inefficient, making multiple write syscalls in sequence instead of batching them into one.

I don't think we should use a CI configuration that takes up to three hours to complete. We can let this build run to see if it eventually succeeds but after that I'm thinking we should change it back to multicore.

Great! I guess +setcpuaffinity hurt performance instead of helping.


Gala feedback

@patrick-j-govalpha

I think maybe I wasn't clear about the end of line stuff.  You need to add 2 spaces to the end of line 4, 5, and 6 so that the formatting works properly. Look at the rich diff and you can see what I mean

I think maybe I wasn't clear about the end of line stuff. You need to add 2 spaces to the end of line 4, 5, and 6 so that the formatting works properly. Look at the rich diff and you can see what I mean
Gotcha, thanks!

It still looks weird- did you add extra blank lines? Just needs two spaces "  " at the end of each line

Right, sorry I realized now how that works in markdown. Let me know if it's okay now - the only thing missing is the Technical Docs link for it (I don't think there are any other than the GitHub repo itself)

@astronautthis  - do you think you can  try resolving the conflicts? I cannot merge it like this.
Thank you!

@Gala-G should be mergeable now. Thanks!


How instal rebot Amazon Eko

What the freak man

Same issue, cannot find a way to get it running, how to fix this milxnor


RSD restyling: https://github.com/metanorma/metanorma-rsd/issues/39

@opoudjis is it possible to keep the publisher configurable?

Clause header is at font 11, but text at font 12. The smallest clause header should never be smaller than normal content.

[SOURCE: ...] should be font 11 (same as NOTE/EXAMPLE size).

Your comments are being moved to a separate ticket. I will not action random comments not lodged in a proper channel.

@opoudjis btw the changes here could be merged anytime, thanks.


[BUG] Failing to download

This is similar to the issues in #194. Downloads are inconsistent. Downgrading to 1.1.32 was the only way I could complete a reinstall.
The files download via invoke-webrequest from the same machine without issue.
WARNING: Install-Moc failed. Exception [GetRelease error returned by API call: run: Corrupted download: ExpectedSize=60633811 SavedSize=40422540] Stacktrace [at Test-DownloadSDKResponse, C:\Program Files\WindowsPowerShell\Modules\DownloadSdk\1.0.13\DownloadSdk.psm1: line 390 at Get-DownloadSdkRelease, C:\Program Files\WindowsPowerShell\Modules\DownloadSdk\1.0.13\DownloadSdk.psm1: line 173 at Get-MocReleaseContent, C:\Program Files\WindowsPowerShell\Modules\Moc\1.0.28\Moc.psm1: line 2381 at Get-MocRelease, C:\Program Files\WindowsPowerShell\Modules\Moc\1.0.28\Moc.psm1: line 2328 at Install-MocInternal, C:\Program Files\WindowsPowerShell\Modules\Moc\1.0.28\Moc.psm1: line 1202 at Install-Moc, C:\Program Files\WindowsPowerShell\Modules\Moc\1.0.28\Moc.psm1: line 221 at Install-AksHciInternal, C:\Program Files\WindowsPowerShell\Modules\AksHci\1.1.36\AksHci.psm1: line 4554 at Install-AksHci, C:\Program Files\WindowsPowerShell\Modules\AksHci\1.1.36\AksHci.psm1: line 804 at <ScriptBlock>, <No file>: line 1]
It does randomly complete the download of the Moc, only then to fail on the next download.
In the downloadsdk.log:
2022-07-28T19:19:25-07:00	DEBUG	Creating a new SFS provider 2022-07-28T19:19:25-07:00	DEBUG	Will download release mocstack-stable version <IP_ADDRESS>27 to c:\clusterstorage\containerstorage\AKS-WorkingDir\<IP_ADDRESS>07 2022-07-28T19:19:25-07:00	DEBUG	Get verified files for mocstack-stable to c:\clusterstorage\containerstorage\AKS-WorkingDir\<IP_ADDRESS>07\dsdk-42733605 2022-07-28T19:19:25-07:00	DEBUG	Getting download information from https://msk8s.api.cdp.microsoft.com/api/v1.1/contents/default/namespaces/default/names/mocstack-stable/versions/<IP_ADDRESS>27/files?action=generateDownloadInfo&ForegroundPriority=True 2022-07-28T19:19:25-07:00	DEBUG	[DEBUG] POST https://msk8s.api.cdp.microsoft.com/api/v1.1/contents/default/namespaces/default/names/mocstack-stable/versions/<IP_ADDRESS>27/files?action=generateDownloadInfo&ForegroundPriority=True 2022-07-28T19:19:25-07:00	DEBUG	Discovered 2 download(s) 2022-07-28T19:19:25-07:00	DEBUG	Skipping download of file manifest.cab 2022-07-28T19:19:25-07:00	DEBUG	Preparing to download: mocstack.cab (60633811 bytes) 2022-07-28T19:19:25-07:00	DEBUG	Downloading http://msk8s.b.tlu.dl.delivery.mp.microsoft.com/filestreamingservice/files/494bba95-fdf8-449e-9e6a-e06512db5140?P1=1659665966&P2=404&P3=2&P4=cQvKX1wi0Ry%2b6mhupb6unyzyMARMMHu%2bZbpx7iW4pWDWZm9UujQuN725NC1Y%2b6VuLli9N9bbYGtwa3uxLJNTVQ%3d%3d to c:\clusterstorage\containerstorage\AKS-WorkingDir\<IP_ADDRESS>07\dsdk-42733605\mocstack.cab 2022-07-28T19:19:27-07:00	DEBUG	Download attempt 1 of 5 failed with error: run: Corrupted download: ExpectedSize=60633811 SavedSize=40422540 2022-07-28T19:19:27-07:00	DEBUG	Download will be retried in 10s 2022-07-28T19:19:38-07:00	DEBUG	Download attempt 2 of 5 failed with error: run: Corrupted download: ExpectedSize=60633811 SavedSize=38692421 2022-07-28T19:19:38-07:00	DEBUG	Download will be retried in 20s 2022-07-28T19:19:59-07:00	DEBUG	Download attempt 3 of 5 failed with error: run: Corrupted download: ExpectedSize=60633811 SavedSize=40422540 2022-07-28T19:19:59-07:00	DEBUG	Download will be retried in 40s 2022-07-28T19:20:40-07:00	DEBUG	Download attempt 4 of 5 failed with error: run: Corrupted download: ExpectedSize=60633811 SavedSize=40422540 2022-07-28T19:20:40-07:00	DEBUG	Download will be retried in 1m0s 2022-07-28T19:21:42-07:00	DEBUG	Download attempt 5 of 5 failed with error: run: Corrupted download: ExpectedSize=60633811 SavedSize=40422540 2022-07-28T19:21:42-07:00	DEBUG	Download will be retried in 1m0s
To Reproduce
Steps to reproduce the behavior:

Run Install-Akshci
See error

Expected behavior
Successful downloads.
Environment (please complete the following information):

OS: 2019 Datacenter
AKS-HCI 1.1.36/1.1.32

Additional context
Add any other context about the problem here.
downloadsdk.log

Can we try with the latest build and PS
@nwoodmsft - fyi

@madhanrm can we close this?

You can close this if you want.
Personally, I think it's a horrible idea to download the files after you've started making changes to the service via the installation process. Download everything first, then proceed with the installation, breaking the install, then failing to download the files, just seems ripe for these sorts of issues.
I've basically given up on this product, every single month, it's some issue with upgrading.
Eventually we might spin up a k8s cluster and tie it to Arc manually.
I could go on for probably an hour on various odd decisions here, like no way to import or detect existing storage containers on a reinstallation, requiring you to re-create it and then manually copy the contents.

Hi @OEI-Cgray
I'm using AKS-Hybrid for 3 years now, and yes there are a few things what can hurt and are not obvious at the beginning. Most of them are connected to Firewalls, Proxy (avoid it wherever you can), own certificates, restrictions in company networks, e.g. all the custom things every company has on its own infrastructure.
Regarding your download issue - #194 was about getting corrupted images to download. Can remember it, this happened once so far.
The download issue you describe sounds like what I see on our clusters. Downloads are done over one public provider IP and there is a download rate limit at the file streaming service. If I update multiple clusters at the same time, the first image downloads are fast, after a while it gets slower and at a second / third cluster update the downloads begin to run into timeouts. If I wait over night, everything is super fast again. You only see it at Powershell with debug and verbose flags on. I've reported this already, but didn't create a Github issue so far.
As a workaround until fixed / solved / improved we use the offline download feature to fetch the binaries once for all clusters before starting any update operation.
https://learn.microsoft.com/en-us/azure/aks/hybrid/offline-download


Modifying annotation with multiple charts on same page make all charts same

Hi,
In my project I should have multiple charts on the same page. I want to draw a vertical line on the selected scale X value and when the selected X scale value change, change the vertical line on the charts (all charts have same X scale and labels).
So for that I use annotations and it work fin if I have only one chart on page. But if I have multiple charts, when I modify the selected X value, all charts on page become identical. It's like the canvas become same instance ?!
Project properties:

Angular
ng2-charts 3.0.8
chart.js 3.7.1
chartjs-plugin-annotation 1.4.0

When I change the selected X value, I do this code:
      Object.values(Chart.instances).forEach(i => {
            i.config.options.plugins.annotation = {
                annotations: {
                    currentXvalue: {
                        type: 'line',
                        borderWidth: 1,
                        scaleID: 'x',
                        label: {
                            enabled: this.currentLogLineShowLabel,
                            content: newLabel,
                            position: 'start'
                        },
                        value: selectedXvalue
                    }
                }
            };
            i.update('none');
        });

Also I put different id on each canvas to check that each instance is different, and that was.
Any idea ?

@crabouif I'm not sure if I caught your use case.
Anyway here is a codepen https://codepen.io/stockinail/pen/MWrWJWq
There are 2 charts in the same page. When you click on the chart area, in one of the two, the other will be updated setting the same annotation label, with the same value.
I used your function, even if I changed i.config.options in i.options and change the variables that I don't know where are set (and how) in your code, like selectedXvalue and this.currentLogLineShowLabel).
Anyway, the 2 charts are drawn and shown correctly, maintaining their differences.
Could you prepare a codepen of jsfiddle in order to reproduce what you have?
I have also the feeling that if you want to change annotations on all charts by a value, maybe you couldn't set the annotation every time the value is changed but you could configure the annotation on the chart with scriptable options and updating the charts you could get and provide the new value.

It was my fault I has shared static configuration that was shared between charts and within the data array has same reference...
Sorry to burn a bit your time.
I close the issue.

Sorry to burn a bit your time.

No problem! It's important you solved.


Command line tool's exit code is nonzero on success

Environment: GNU/Linux Fedora 26 and python 2.7
When i try to detect a language like tika-python language file /tmp/text.txt the return code is non-zero (1) on success.
The wrapper in env/bin/tika-python (installed by pip?) exits like sys.exit(main()) and main() returns the result of detectLanguage which returns an array like [(200, u'no')].
So the script is exited like sys.exit([(200, u'no')] resulting in an exit code of 1 on success.

thanks @maeb What would you recommend as a way of addressing this? Thoughts? Do you have a PR in mind?

ping @maeb

hi @maeb let me know if you have a fix for this, otherwise I will likely go ahead and close it.

Hi @chrismattmann Sorry for the late answer.
I encountered this bug while trying out something at work and have unfortunately no time to implement a fix for this issue.

Understood maybe when you get time send a PR and I'll look thanks!


Tataplay fiber ODI

I recently got an ODI DFP-34X-2C2 Realtek. I was able to telnet into and copy all my settings from a Nokia G-2425G-A by running ritool dump after its connected to the internet.
the Format:01
the MfrID:ALCL
the Factorycode:02
the HardwareVersion: XX
the ICS:01
the YPSerialNum:        XX
the CleiCode:0000000000
the Mnemonic:G-2425G-A
the ProgDate:220719
the MACAddress:XX:XX:
the DeviceIDPref:0000
the SWImage:005e
the OnuMode:0003
the G984Serial:xx
the HWConfiguration:0000000000000000
the PartNumber:XX
the OperatorID:ALCL
the SLID:00000000000000000000000000000000
the CountryID:i1
the GroupID:00000000
I am using M110_sfp_ODI_220923.tar . I set everything including HW Ver SW Ver 1 and 2 GPON SN Mac Mac_key and OMCI_FAKE_OK is set to 1. But I believe I get fake O5.
My ISP has put my device in 'bridge' mode and I can use Lan Port 1 on the ONU connected to my router for PPPoE without any VLAN on my router (so the ONU must be doing some kind of VLAN tagging). My ISP can also set it to router mode (but it's a hassle to contact the ISP and change things) where the router itself sets 4051 as the VLAN from PPPoE settings. But before I get to connecting the right VLAN I probably need to fix the fake O5. Do I need to use a different firmware?
I have a Nokia G-010-A which I can set the same settings above. In router mode I think it gets O5 and in Bridge mode I lose sfp because of lack of 4-port emulation. So the Nokia stick does get correct O5 probably because it's connected to a Nokia OLT and the OMCI works with it. But I uploaded the wrong firmware to it and now I am unable to ssh into it. So that SFP module won't work for now.
Is there anyone with Nokia OLTs having similar problem?

have you try to execute omcicli mib get 84 to print all VLAN ?

omcicli mib get 84
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VlanTagFilterData
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This is the output of it. I believe there is no real O5 based on what it's outputting. Status in GUI does show O5 though.

VLAN of Tataplay Fiber is 1502

It's not a VLAN issue. This command 'omcicli mib get 84' shows all the VLANs exposed if your ONU has O5 stable state. The fact that it's not showing any output means either VLAN isn't there (highly unlikely there is no VLAN) or the fact that it has fake O5 (Nokia OLT issue). So I need to first get proper O5 before I can get to VLANs.

You've changed your MAC address, did you regenerate and update the MAC_KEY?


Link to powershell script no longer working.

Link to PowerShell Script for enabling connection to rds for testing purposes is no longer avaiable. Clicking the link does not do anything.

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

ID: f7279474-d477-e029-e1b9-c8b8342077a6
Version Independent ID: e84b3157-2b40-54ee-183f-23dc7cc81ad2
Content: Seamlessly deploy RDS with ARM and Azure Marketplace
Content Source: WindowsServerDocs/remote/remote-desktop-services/rds-in-azure.md
Product: windows-server
Technology: remote-desktop-services
GitHub Login: @lizap
Microsoft Alias: elizapo

We hugely appreciate your contribution, feedback, and support to our technical documentation.
We’ve phased out GitHub Issues on this repository as the feedback mechanism for content and have replaced it with a new feedback system. For more information see, Content User Feedback. As part of this rollout, we are migrating your issue where our team will use your comments to improve the documentation experience. Unfortunately, this does mean you won't be able to access this issue after the migration is complete.
All issues will be migrated by Thursday 29th August 2024.
Once again, thank you for your valuable feedback, we hope you’ll continue to contribute using our new feedback system.


Improve LeafType generated code

The generated code using the UseLeafType was not 100% correct for arrays. This PR changes generated code from:
property: A[] | B[],

to:
property: (A | B)[],

Thanks for the PR.


bug?

WARNING: Writing cache to '/.cache/youtube-dl/youtube-sigfuncs/js_838cc154_114.json' failed: Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/youtube_dl/cache.py", line 49, in store
os.makedirs(os.path.dirname(fn))
File "/usr/local/lib/python3.9/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/local/lib/python3.9/os.py", line 215, in makedirs
makedirs(head, exist_ok=exist_ok)
File "/usr/local/lib/python3.9/os.py", line 225, in makedirs
mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/.cache'

Obstacles encountered during the test:
Traceback (most recent call last):
  File "/usr/local/bin/ydl_podcast", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/site-packages/ydl_podcast/__main__.py", line 35, in main
    download(sub)
  File "/usr/local/lib/python3.9/site-packages/ydl_podcast/__init__.py", line 146, in download
    with open(mdfile_name, 'w+') as f:
FileNotFoundError: [Errno 2] No such file or directory: '/app/data/手动编辑条目/.p9WSnqZ-nWE.*FIRST TIME* CRACKING EVERY PART of the Body! | ASMR OSTEOPATH / CHIROPRACTIC ADJUSTMENT.meta'

I'm not sure if the symbols in the title cause this problem. I hope to add a feature that removes all symbols in the file name.
My Podcast client does not support special symbols in files well, and often encounters problems that cannot be played.

The directory /app/data/ exists on your system ?

The directory /app/data/ exists on your system ?

yes
https://github.com/jxjxjhjh/docker-ydlpod

Thanks,
I see you have the volume mapped as such:
      - /var/www:/app

But just to be sure, on your host system, the directory /var/www/data (which would correspond to /app/data in your container) exists ?

Thanks,
I see you have the volume mapped as such:
      - /var/www:/app

But just to be sure, on your host system, the directory /var/www/data (which would correspond to /app/data in your container) exists ?

Yes, it exists.
I just thought that it might be a permission problem, because I specified the user as a normal user in the latest version of the dockerfile. This problem occurred after that. I will modify this setting in the near future to verify my guess.
In addition, it is hoped that the problem of stopping crawling due to the implementation of special symbols in the video title can be solved as soon as possible, which is a high priority issue that affects the use.

Hi @jxjxjhjh perhaps the user you are using to run the container doesn't have write access to /var/www on your docker host ?

Because the Google translation is not accurate enough, I can't understand what you mean, but this problem seems to be rarely seen after the random file name function has been added. I am not sure, but it is just the impression.
Because of the upcoming special day, it is temporarily inconvenient for me to continue to study these issues. I plan to stop using vpn to access US websites before June 15th.
Thank you for your help, we will contact you later.

Ok, thanks

ydl_options:
  cachedir:  False

Effective and can solve the problem.
The reason for the problem is that user 1000:1000 is added to my dockerfile. This is to manually manage files through a special method, because the automatic cleaning function of ydlpod does not seem to exist, and the old files cannot be automatically cleaned up.


remove/add years to expiration date drop down

from admin add contracts there are lots of years that have already passed and not that many that are in the future.  Would rather refine this to 2 years in the past and 10 in the future if possible.  we're trying to get longer and longer contracts.

I'll look into this, but you should be able to manually write in whatever you need. Just make sure it is in the proper format.

@rileystewart If you need to go into the future, you can scroll through them. For example, if you select 2020, it will automatically populate the next few years into the future. You should be able to do this basically forever.
Screenshot:


Fix deadlock between adding to queue and getting batch

Do not block when trying to write a batch to the queue. This can cause
appends to lock forever if the only thing reading from the queue needs
the mutex to write. Instead, if batchQueue is full pop the sample that
was just added from the partial batch and return false. The code doing
the appending already handles retries with backoff.
Fixes: #10264
cc: @beorn7 Do you think it is worth another patch in the v2.33 series?
I would like to write a failing test still but would appreciate some comments.

I'm happy to cut another 2.33 bugfix release with this.
@csmarchbanks: To facilitate that, could you change this PR to be on top of the release-2.33 branch?

I apologize for the noise - note to self, do not change the base branch until AFTER rebasing...

Updated the test again just now, it will now also fail in the case where capacity > max_samples_per_send, reproducing both cases seen in the issue where a deadlock occurred in v2.33.3+.
I also updated the base backoff when retrying an Append, we now wait ~5ms to begin with (about the smallest amount of time a request can take in normal cases) and work up from there. That is to resume work more quickly after filling a queue/resharding.

I did intentionally leave the pprof calls in the tests. I found them to be very helpful to identify where the deadlock is, and figured that would be helpful for any future maintainers as well. Happy to remove them if you don't think they are worthwhile though.
 Thank you. Will cut the bugfix release today.


Nearby export: Pins not all around me

Ideally pins should form a square or circle around my position, rather than using my position as a corner:

Rectangle is probably easier to implement for now.
How about 10 kilometers North/South/East/West?
A few years ago I originally said 100 km but there are many more points now so it would take too long.

Thanks for providing information. I will work on it!

Hey @nicolas-raoul, I have added to code to give coordinates for 10Km North-East and South-West. I have used 0.008 as it is approximately 1Km. Reference
    public static LatLng calculateNorthEast(double latitude, double longitude, double distance) {
        double lat1 = Math.toRadians(latitude);
        double deltaLat = distance * 0.008;
        double deltaLon = distance / Math.cos(lat1)*0.008;
        double lat2 = latitude + deltaLat;
        double lon2 = longitude + deltaLon;

        return new LatLng(lat2, lon2, 0);
    }

    public static LatLng calculateSouthWest(double latitude, double longitude, double distance) {
        double lat1 = Math.toRadians(latitude);
        double deltaLat = distance * 0.008;
        double deltaLon = distance / Math.cos(lat1)*0.008;
        double lat2 = latitude - deltaLat;
        double lon2 = longitude - deltaLon;

        return new LatLng(lat2, lon2, 0);
    }

Can you please have a look at PR https://github.com/commons-app/apps-android-commons/pull/5658, Since I am getting same problem.

Can you run in debug mode, note down the result of each function, and draw these two points on the map above?

I have tested and these are the points (25.523992142085177,85.04935220271054) and (25.683992142085174,85.22677465886173)
I have plotted them on the map and are marked with (heart).

The points seem correctly positioned.

I am looking into it and will share an update in 2 days (currently I am out of station)


Getting started guide needs the following updates

[x] Change step 3 to balkdrjgfasd;fj
[x] sdfsdf update photo
[x] New installation routine

Complete!


adds attr_reader for username

There is a user_name field provided in streams, but no way to access it.
PR to add the attr_reader

LGTM, I do see it was added in other endpoints as well.


update tool for timeseries.

@Quickbeasts51429 I updated all the other xarray tools with the latest version of python packages.


Change block creation time configurable

resolve #150

Codecov Report

Merging #161 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #161      +/-   ##
==========================================
+ Coverage   81.46%   81.47%   +<.01%
==========================================
  Files          52       52
  Lines        2919     2920       +1
==========================================
+ Hits         2378     2379       +1
  Misses        541      541

Impacted Files
Coverage Δ

nekoyume/block.py
83.33% <100%> (+0.08%)
:arrow_up:

Continue to review full report at Codecov.

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


Remove CoreOS baremetal offline setup guideline

The contents in this page is very old. The links in this page points to
some repos that no longer exist. This PR removes the guideline from
website.
However, considering that there may still be valuable information in the
page and there may be desire to resurrect the guide. The content is now
moved into an attic directory. We can decide whether and when to
completely drop it later.
Related: #7785

@errordeveloper @jeffbean @erictune @thockin

Thanks! I also happen to encounter this page today, and surprised I've not seen it's so old earlier when I was go through all of these guides.
I've actually opened #7821 just now to delete these outdated pages.
I don't think there is a need to move this to a directory, as we can always look at git history if needed. Anything unique about this content is going to be of very little use, because it's so old! Rewriting from scratch would be far less work then trying to adopt this for anything.
Also, we don't have an attic directory right now, I wouldn't introduce it just for this one thing. It's easier to look in git, if someone wants to resurrect any information.

/assign @heckj
@heckj do you mind to make a call on whether we should move ahead with this or #7821 instead?

I went ahead and approved #7821 so that should be merged and these pages removed.
closing this one as redundant
(worked through the queue in reverse order)


publish on bower

Please publish it on bower, riot and RiotControl packages are for front-end development, so bower is a more adapted repository. Also client-side module loader works better on bower than npm.
thank you

I will too appreciate bower package.

https://github.com/jimsparkman/RiotControl/pull/14

:+1:

Merged #14

Thanks man!

No problem, thank you.

I have question: Why is bower package linked to some fork of RiotControl? riotcontrol git://github.com/hongbinfu/RiotControl.git

Weird, I had that same issue.
I installed using bower install jimsparkman/RiotControl


How to compatible the different size of images?

Thanks for your sharing. I have a questions about this work. If this work can compatible different size of image(width and height)?
Thanks for your reply.

Perform resize or custom resize functions in dataloder API

If my two batchsize have different feature map size, this model seemed not compatible.


Enable connection status in secret annotation

We create integration secrets for some services with url and auth data(token or basic auth).
Example:
apiVersion: v1
kind: Secret
metadata:
  name: ci-sonarqube
  namespace: default
  labels:
    app.edp.epam.com/secret-type: sonar
data:
  token: token
  url: http://sonar.com
type: Opaque

We need to check if this service is reachable from the cluster. We can't do it from the UI because the url can be an internal Kubernetes Service.
Add to the operator controller to watch integration secrets and check the connection to the services with the provided url.
Set connection status to the secret annotation.

To get status -  add the label app.edp.epam.com/integration-secret: 'true' to the secret.
The operator adds annotation to the secret
app.edp.epam.com/integration-secret-connected: 'true'/'false'
app.edp.epam.com/integration-secret-error: "some error" in case error
Example:
apiVersion: v1
kind: Secret
metadata:
  name: ci-sonarqube
  namespace: default
  labels:
    app.edp.epam.com/secret-type: sonar
    app.edp.epam.com/integration-secret: 'true'
  annotations:
    app.edp.epam.com/integration-secret-connected: 'true'
data:
  token: token
  url: http://sonarqube:9000

apiVersion: v1
kind: Secret
metadata:
  name: ci-sonarqube
  namespace: default
  labels:
    app.edp.epam.com/secret-type: sonar
    app.edp.epam.com/integration-secret: 'true'
  annotations:
    app.edp.epam.com/integration-secret-connected: 'false'
    app.edp.epam.com/integration-secret-error: 'connection failed: no such host'
data:
  token: token
  url: http://sonarqube:9000


Fix temporary nuget config file issue in Restore command

NugetConfigHelper2 creates temporary nuget fie (if doesn't exist) in build directory and doesn't clean-up. So if 2 restore task is used then temporary nuget config file is not created for the second restore task and it uses the existing one, which is wrong.
Fix -> I haven't modified NugetConfigHelper2 as other tasks also depend on it. In the fix, I have modified RestoreCommand.ts file in which it assign temporary nuget config file name as $(Agent.TempDirectory)/Nuget/tempNuget_.config" and pass it to NugetConfigHelper2 and thus the file gets deleted after the task finishes.

#10791


LS: Suggest function names from common traits

Feature Request
Describe the Feature Request
We should implement a file completion suggestion that will also auto-import the trait in the nearest scope, upon selection (within a popup like shown below)

Describe Preferred Solution

Describe Alternatives

Related Code

Additional Context

If the feature request is approved, would you be willing to submit a PR?
(Help can be provided if you need assistance submitting a PR)

[ ] Yes
[ ] No

isn't this duplicating #6647?


Don't start embedded kubelet until after apiserver is up

Proposed Changes
The embedded executor doesn't need the kubelet to come up to host any components, and having it come up on servers before the apiserver is available (ie, when waiting for etcd quorum) causes a lot of log spew from the kubelet that makes it hard to tell what's going on.
This change is contained to just the embedded executor, so it will not affect RKE2 where we do need the kubelet to come up first.
Types of Changes
enhancement
Verification
See linked issue
Linked Issues

TBD

User-Facing Change
The embedded kubelet now waits for the apiserver to become available before starting.

Further Comments

sonobuouy flake; merging
[PARALLEL] [Fail] [sig-api-machinery] ResourceQuota [It] should create a ResourceQuota and capture the life of a secret. [Conformance]
[PARALLEL] /workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/apimachinery/resource_quota.go:181
[PARALLEL]
[PARALLEL] Ran 325 of 7044 Specs in 630.234 seconds
[PARALLEL] FAIL! -- 324 Passed | 1 Failed | 0 Pending | 6719 Skipped


Update working-with-the-npm-registry.md

Why:
Closes [issue link]

What's being changed (if available, include any code snippets, screenshots, or gifs):

Check off the following:

[x] I have reviewed my changes in staging (look for the "Automatically generated comment" and click the links in the "Preview" column to view your latest changes).
[x] For content changes, I have completed the self-review checklist.

@TheMaharshii Thanks for opening a PR! However, we are not going to accept these changes 💛
Please take a look at our help wanted section to find open issues you can work on.
Thank you for your interest in improving GitHub Docs! :sparkling_heart:


Add DDL-Warez.to (German site)

No more commits from me for today. :-)

Is this site working? It's not on my side since addition.

Yes, but I can't access it without a German proxy/VPN. They probably only allow German-speaking countries.

Netherlands IP worked too. Moved icon to Imgur. https://github.com/Purfview/IMDb-Scout-Mod/commit/19865ff7dd4709ff64dc751db8ee94687545ad4a


CircieCI and tester module

Checked for duplicates
Yes - I've already checked
Alternatives considered
Yes - and alternatives don't suffice
Related problems
We need to set up CircleCI, along with the test script to make sure it works whenever we make changes on the repo.
Describe the feature request
I need or want [...]

Closing this PR as #28, #36, and #37 are merged.


How to show % and number in js chart Tool Tip?

I am using jschart for showing some data. But in the tool tip I want to add a % sign after the number displayed.
I am doing this in Graph setting/configuration
const projxAxisLabel = 'Evaluation Type';
  const projyAxisLabel = 'Number of Evaluations / Sum of Findings';
  const projyAxisLabel2 = 'Current Compliance %';
  this.projData = data; // getting from service
  this.projLabels = xLabels; // getting from service
  this.projSeries = yLabels; // getting from service
  this.projDataSet = [
    {
      type: 'bar',
      data: projGraphData.data[0],
      yAxisID: 'y-axis-1'
    },
    {
      type: 'bar',
      data: projGraphData.data[1],
      yAxisID: 'y-axis-1'
    },
    {
      type: 'bar',
      data: projGraphData.data[2],
      yAxisID: 'y-axis-2'
     }
  ];
  this.projOptions = {
    scales: {
      yAxes: [
        {
          id: 'y-axis-1',
          type: 'linear',
          categorySpacing: 0,
          display: true,
          maxBarThickness: 0,
          position: 'left',
          ticks: {
            beginAtZero: true
          },
          scaleLabel: {
            display: true,
            labelString: projyAxisLabel
          }
        },
        {
          id: 'y-axis-2',
          type: 'linear',
          display: true,
          position: 'right',
          ticks: {
            min: 0,
            max: 100,
            beginAtZero: true,
            callback: function(value) {
              return `${Number(value)}%`;
            }
          },
          scaleLabel: {
            display: true,
            labelString: projyAxisLabel2
          }
        }
      ],
      xAxes: [
        {
          barThickness: 5,
          categoryPercentage: 0.2,
          ticks: {
            autoSkip: false
          },
          scaleLabel: {
            display: true,
            labelString: projxAxisLabel
          },
          gridLines: {
            display: false
          }
        }
      ]
    },
    elements: {
      line: {
        fill: false
      }
    },
    legend: {
      display: true,
      position: 'bottom',
      labels: {
        boxWidth: 15
      }
    }
  };
}

I want add % sign on tool tip for all Current Compliance % label in different tool tip in the graph. But for other labels value there should not be any % sign. As now all values have no % sign. So I want to add for  the last Label value with % sign.

Raw Data from response = {
"xLabels": ["Coding and Unit Testing","Developing the Design","Project Closure","Software Package Releases","Baseline Audits","Establishing Change Management","Peer Review","Production Support Documentation", "Project Management - Project Initiation","Project Monitoring and Control","Testing","Requirements Development"],
"data": [[2,2,0,2,1,2,1,3,2,3,2,3],[0,0,0,0,0,0,0,0,0,4,8,9],[0,0,0,0,100,100,100,100,100,100,71,79]],
"yLabels": ["# of Evaluation,","Sum of Findings","Current Compliance %"]
}

@joydeeproy you'll get a better answer to this question on stack overflow


Problem Missing After Saving/Reloading

Hi,
I leave a comment on gitter, since it's empty there so i write in here as well.
The phpmd succefully detect 11 problems on a file, yet when i try to fix only 1 problem, and then saving it, the phpmd failed to detect the rest of the problems. it stated 0 problem on the output tab.

When i try to run the command on the console, the output works.

Also when i try to close the file, and the reopen again, the result is still the same;

Please help.
Thanks

I'm seeing the same behaviour.

Sorry I didn't get back to you sooner. I'm on vacation in the Alpes and don't have good access to internet right now. Not really the best time to launch an extension I guess :(.
If you could send me the php file at<EMAIL_ADDRESS>I'll try and have a look at it asap.

I would but I can't actually find a file that's showing problems in the extension at all now even though phpmd reports warnings directly.
The issue was that any file that had any issue was losing the display of issues whenever it was saved.

@neerolyte: At the moment I can't reproduce this with any of my phone projects (phpmd reporting but problems on commandline but nothing showing in vscode). So displays that behaviour that would be fine to. Perhaps you can also post the output of your logs. Maybe something else is going wrong if you don't get problems for any php file.

"Phone projects" should be "own projects". :D Don't you love autocorrect on android. :D

Closing this issue since I received no more feedback on it and can't reproduce it in any way.

So the main problem I had supplying a reproduction case was not finding a file (every file does it) it was actually getting the plugin to function again at all.
If I create a brand new file and type/paste this in to it:
<?php
class Foo {
	public function foo() {
		$foo = 1;
	}
}

I get one warning about the constructor name and one about the unused variable.
If I put a comment somewhere (e.g just add a line after $foo = 1; with only // on it) then the warnings disappear.
If I create a new problem, e.g writing a line in the function with $bar = 2 I get a warning that I should avoid the unused variable $bar but the previous warnings are still missing. Any other change and save at this point hides all the warnings again.

It actually seems like even that doesn't work reliably, if I paste that contents in to another new file I don't get those warnings again. I only get warnings that are new.

Here's a more visual example:

Thanks for the feedback @neerolyte. This shows clearly that it has nothing to do with anything in the file's code. I would really like to have a look at the verbose logs the extension gives you while this happens (the logs posted by @rezashamdani didn't show anything odd, maybe yours do give a hint). I still have no way to reproduce this and as long as I can't reliably reproduce it on any of my systems I'll be unable to find the root cause and fix it. Hopefully your logs will help with that. Thanks in advance.

@rezashamdani Sorry I'm kind of new to VSCode still - do you mind pointing me at some doco that explains how to enable the logging you'll need (or giving me some steps)?
For what it's worth I've tried both Version 1.15.0-insider and Version 1.14.0 (current stable) show this behaviour.
I have php installed via brew on OS X:
$ php -v
PHP 7.1.5 (cli) (built: May 13 2017 13:30:32) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Xdebug v2.5.4, Copyright (c) 2002-2017, by Derick Rethans

Assuming you just mean the output window (under the view menu) I just get:
[Info  - 8:00:53 am] Language server connection initialized.
[Info  - 8:00:53 am] Configuration change triggerd, validating all open documents.
[Info  - 8:00:53 am] New document opened, starting validation.
[Info  - 8:01:05 am] Document saved, starting validation.

The last log entry was triggered by saving. Grepping the code I can't see any calls to the logger other than info/error so I'm assuming I can't turn on more verbose logging here?

I noticed I'm not getting log entries generate from controller/PhpmdController.js.
Sticking a console.log in the block that gets the problems back from phpmd:
this.getLogger().info("PHP Mess Detector validation completed for " + document.uri + ". " + diagnostics.length + " problems found", true);
console.log("PHP Mess Detector validation completed for " + document.uri + ". " + diagnostics.length + " problems found");

I get 0 problems back on the second round:
[Info  - 8:08:31 am] New document opened, starting validation.
PHP Mess Detector validation completed for file:///Users/.../foo.php. 2 problems found
[Info  - 8:08:40 am] Document saved, starting validation.
PHP Mess Detector validation completed for file:///Users/.../foo.php. 0 problems found

So whatever's going on is upstream from that point.

console.loging the payload and output variables (not on exactly the linked lines, but when they're actually filled out).
For the first load (where the warnings display in the editor) I get:
===================payload
PipelinePayloadModel {
  uri: 'file:///.../foo.php',
  raw: '',
  diagnostics: [] }
=================output
PipelinePayloadModel {
  uri: 'file:///.../foo.php',
  raw: '<?xml version="1.0" encoding="UTF-8" ?>\n<pmd version="@project.version@" timestamp="2017-07-13T22:14:03+00:00">\n  <file name="/.../foo.php">\n    <violation beginline="3" endline="6" rule="ConstructorWithNameAsEnclosingClass" ruleset="Naming Rules" package="+global" externalInfoUrl="http://phpmd.org/rules/naming.html#constructorwithnameasenclosingclass" class="Foo" method="foo" priority="3">\n      Classes should not have a constructor method with the same name as the class\n    </violation>\n    <violation beginline="4" endline="4" rule="UnusedLocalVariable" ruleset="Unused Code Rules" externalInfoUrl="http://phpmd.org/rules/unusedcode.html#unusedlocalvariable" priority="3">\n      Avoid unused local variables such as \'$bar\'.\n    </violation>\n  </file>\n</pmd>\n',
  diagnostics:
   [ { message: '\n      Classes should not have a constructor method with the same name as the class\n    ',
       range: [Object],
       severity: 3,
       source: 'PHP Mess Detector' },
     { message: '\n      Avoid unused local variables such as \'$bar\'.\n    ',
       range: [Object],
       severity: 3,
       source: 'PHP Mess Detector' } ],
  pmd:
   { '$':
      { version: '@project.version@',
        timestamp: '2017-07-13T22:14:03+00:00' },
     file: [ [Object] ] } }
[Info  - 8:14:11 am] Document saved, starting validation.

For the second save (where no warnings display in the editor) I get:
===================payload
PipelinePayloadModel {
  uri: 'file:///.../foo.php',
  raw: '',
  diagnostics: [] }
=================output
PipelinePayloadModel {
  uri: 'file:///.../foo.php',
  raw: '<?xml version="1.0" encoding="UTF-8" ?>\n<pmd version="@project.version@" timestamp="2017-07-13T22:14:12+00:00">\n  <file name="/.../foo.php">\n    <violation beginline="3" endline="6" rule="ConstructorWithNameAsEnclosingClass" ruleset="Naming Rules" package="+global" externalInfoUrl="http://phpmd.org/rules/naming.html#constructorwithnameasenclosingclass" class="Foo" method="foo" priority="3">\n      Classes should not have a constructor method with the same name as the class\n    </violation>\n    <violation beginline="4" endline="4" rule="UnusedLocalVariable" ruleset="Unused Code Rules" externalInfoUrl="http://phpmd.org/rules/unusedcode.html#unusedlocalvariable" priority="3">\n      Avoid unused local variables such as \'$bar\'.\n    </violation>\n  </file>\n</pmd>\n',
  diagnostics: [],
  pmd:
   { '$':
      { version: '@project.version@',
        timestamp: '2017-07-13T22:14:12+00:00' },
     file: [ [Object] ] } }

The issues are there in the raw XML payload both times, but the diagnostics key is empty when issues fail to display.

So I tracked it a bit further in to service/pipeline/BuildDiagnosticsStrategy.js.
If I no-op alreadyReported to be:
    alreadyReported(hash) {
        //return this.reported.indexOf(hash) >= 0;
        return false;
    }

the plugin works ok for my purposes.
I'm not clear why it makes sense to deduplicate the reports here, so for the moment I've reached the limit I can progress this to. Hopefully the debug spam ^ helps :)

Hi @neerolyte, Thanks for the "digging", this really helps a lot. The verbose logging is not a function of vscode but of my extension. You can enable it in the settings, see the readme file :).
Anyway you've already provided me with much more detail than the verbose logs would have so don't bother posting them here. I guess I need to "revisit the de-duplication" logic (reason for that logic is that PHPMD would give me duplicate errors at times). I'll get this fixed en submit an update for the extension. Thanks a lot for your help.

Resolved in version 1.0.1

Initial testing - everything seems to work "as expected" now, cheers :)


Create CODE OF CONDUCT.md

fixes #4

Thanks for your contribution @the-amazing-atharva 👍

Your welcome!


Type conflict

Color and EdgeInsets in ColorExtensions.swift conflict with SwiftUI.
Now I use SwiftUI.Color to avoid errors.
It can be used, but the experience is not good.

This makes it cumbersome to use SwifterSwift with SwiftUI, since all instances of Color have to changed to SwiftUI.Color.


CodeGPT stopped working in Goland

What happened?
Here's a screenshot that shows the problem.

I use the same OpenAI key with WebStorm and PyCharm and they work just fine without any problems.
Relevant log output or stack trace
No response
Steps to reproduce
No response
CodeGPT version
2.1.5
Operating System
macOS

The message seems to be pretty clear. Please contact OpenAI for more information.


CI reqs caching

Coverage remained the same at 88.26% when pulling 39ed0331838231871f72a25689924a95fd852865 on ci-cache-hit into 443d8a16103ba39c814a2d702e141a28ce22f737 on master.

Closing in favor of https://github.com/quantopian/zipline/pull/2767


Prevent excluded shipping method being assigned to order

This task fixes an unwanted behaviour when orderUpdateShipping would allow an excluded shipping method to be assigned to the order.

Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations
[ ] Documentation needs to be updated

Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

I've added an additional test and switched plugin mocks to a mock on PluginsManager.

@korycins I've fixed issues mentioned in your comments and added validation in DraftOrderComplete.


tinc-haskell: Rename package name to avoid conflict

Things done

[ ] Tested using sandboxing (nix-build --option build-use-chroot true or nix.useChroot on NixOS)
Built on platform(s)

[ ] NixOS
[ ] OS X
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

You need to update the path in all-packages.nix as well

You're right, just fixed that :)

Thanks for the quick fix! :beers:

IMHO, the package belongs into configuration-common.nix rather than all-packages.nix.

Done in cf4a69e2ec73c5abf5812e20a558bf45b9646e56.


Header-only install [question]

Is it possible to do a header-only install of ArborX via spack?  I'd like to use ArborX in an existing project by adding something like:
depends_on('arborx~mpi~serial~cuda' when='+arborx')

to my project's spack package.py file, then add:
find_package(ArborX REQUIRED)

to my project's CMakeLists.txt file.  I was able to do so by modifying the CMakeLists.txt in ArborX and the package.py for ArborX in spack (diffs shown below), but I'd prefer to use ArborX as is.
Thanks!
Josh
Changes to ArborX's package.py in spack:
diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py
index 45e368884..d63504561 100644
--- a/var/spack/repos/builtin/packages/arborx/package.py
+++ b/var/spack/repos/builtin/packages/arborx/package.py
@@ -36,15 +36,21 @@ class Arborx(CMakePackage):
         spec = self.spec

         options = [
-            '-DCMAKE_PREFIX_PATH=%s' % spec['kokkos'].prefix,
             '-DARBORX_ENABLE_TESTS=OFF',
             '-DARBORX_ENABLE_EXAMPLES=OFF',
             '-DARBORX_ENABLE_BENCHMARKS=OFF',
             '-DARBORX_ENABLE_MPI=%s' % ('ON' if '+mpi' in spec else 'OFF')
         ]

-        if '+cuda' in spec:
+        if '+cuda' in spec or '+serial' in spec or '+openmp' in spec:
+            '-DCMAKE_PREFIX_PATH=%s' % spec['kokkos'].prefix,
             nvcc_wrapper_path = spec['kokkos'].prefix.bin.nvcc_wrapper
             options.append('-DCMAKE_CXX_COMPILER=%s' % nvcc_wrapper_path)
+        else:
+            options.append('-DARBORX_ENABLE_HEADERONLY=ON')

         return options
+
+    def setup_environment(self, spack_env, run_env):
+        run_env.prepend_path('CPATH', join_path(self.prefix, 'include', 'details'))

Changes to ArborX:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2ed5176..6530242 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,17 +1,22 @@
 cmake_minimum_required(VERSION 3.12)
 project(ArborX CXX)

-find_package(Kokkos 3.0 QUIET)
-if(NOT Kokkos_FOUND)
-  set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
-  find_package(Kokkos 3.0 REQUIRED)
-endif()
-if(Kokkos_ENABLE_CUDA)
-  kokkos_check(OPTIONS CUDA_LAMBDA)
+if(NOT ARBORX_ENABLE_HEADERONLY)
+  set(ARBORX_ENABLE_KOKKOS ON)
+  find_package(Kokkos 3.0 QUIET)
+  if(NOT Kokkos_FOUND)
+    set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
+    find_package(Kokkos 3.0 REQUIRED)
+  endif()
+  if(Kokkos_ENABLE_CUDA)
+    kokkos_check(OPTIONS CUDA_LAMBDA)
+  endif()
 endif()

 add_library(ArborX INTERFACE)
-target_link_libraries(ArborX INTERFACE Kokkos::kokkos)
+if(ARBORX_ENABLE_KOKKOS)
+  target_link_libraries(ArborX INTERFACE Kokkos::kokkos)
+endif()
 set_target_properties(ArborX PROPERTIES INTERFACE_COMPILE_FEATURES cxx_std_14)

 option(ARBORX_ENABLE_MPI "Enable MPI support" OFF)
@@ -75,11 +80,19 @@ configure_package_config_file(cmake/ArborXConfig.cmake.in
   ${CMAKE_CURRENT_BINARY_DIR}/ArborXConfig.cmake
   INSTALL_DESTINATION lib/cmake/ArborX
 )
-install(FILES
-  ${CMAKE_CURRENT_BINARY_DIR}/ArborXConfig.cmake
-  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindKokkos.cmake
-  ${CMAKE_CURRENT_BINARY_DIR}/ArborXSettings.cmake
-  DESTINATION lib/cmake/ArborX )
+
+if(ARBORX_ENABLE_KOKKOS)
+  install(FILES
+    ${CMAKE_CURRENT_BINARY_DIR}/ArborXConfig.cmake
+    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindKokkos.cmake
+    ${CMAKE_CURRENT_BINARY_DIR}/ArborXSettings.cmake
+    DESTINATION lib/cmake/ArborX )
+else()
+  install(FILES
+    ${CMAKE_CURRENT_BINARY_DIR}/ArborXConfig.cmake
+    ${CMAKE_CURRENT_BINARY_DIR}/ArborXSettings.cmake
+    DESTINATION lib/cmake/ArborX )
+endif()

 if(ARBORX_ENABLE_MPI)
   install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/ DESTINATION include
diff --git a/cmake/ArborXConfig.cmake.in b/cmake/ArborXConfig.cmake.in
index 231573e..1442dc0 100644
--- a/cmake/ArborXConfig.cmake.in
+++ b/cmake/ArborXConfig.cmake.in
@@ -2,8 +2,10 @@

 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR} ${CMAKE_MODULE_PATH})

-include(CMakeFindDependencyMacro)
-find_dependency(Kokkos)
+if(ARBORX_ENABLE_KOKKOS)
+  include(CMakeFindDependencyMacro)
+  find_dependency(Kokkos)
+endif()

 include("${CMAKE_CURRENT_LIST_DIR}/ArborXSettings.cmake")
 if(ARBORX_ENABLE_MPI)

@jrobbin ArborX is already header-only, and the installation will only contain headers. What you seem to suggest to do is to disable all Kokkos backends. Can you please elaborate on what you are trying to achieve? Are you trying to make the installed version of ArborX with a version of Kokkos that you provide post-install?

@aprokop Thanks for your prompt response.  That's correct.  I'd like to provide Kokkos post-install.  With the modifications in my post above, spack doesn't try to install kokkos for me.   My project depends on trilinos, so that's where I'm getting kokkos, but spack doesn't recognize that the kokkos dependency is fulfilled by trilinos, so it wants to install kokkos for me.

OK, so it seems that what you really want is to be able to build ArborX against Trilinos installation containing Kokkos, and possibly use spack to do that. Right?
We have an application depending on ArborX that also requires this functionality. There are several challenges to that. First of all, even if we assume for a moment that we merge you changes, it won't work right now as ArborX already depends on Kokkos 3.0 and the required fixes in Kokkos to make ArborX work with Trilinos/Kokkos will only land in Kokkos 3.1, which has not been released yet.
Once Kokkos 3.1 lands in Trilinos devel, it should be possible for a standalone build of ArborX to be used against Trilinos/Kokkos. Updating ArborX' spack package would be the next step. I cannot give a timeline right now as it depends on others, but it is a high priority for us.
Are there particular versions of Trilinos or Kokkos that you depend on? If you can tolerate Trilinos prior to Kokkos 3.0 landing there, we can find an older hash in ArborX that allows it to be built against that Trilinos (though, not through Spack, and it needs an additional patch with -std=c++14 flags).
Sorry for the long reply, I wish we had a simple solution.

That's correct.  I'm building a project that uses trilinos 12.18.1 (which I think maps to Kokkos 2.9) and uses VOTD of ArborX via spack using the modifications above.  I'm going to redo my build process to make sure that I haven't somehow deceived myself, but I think I'm using the master branch of ArborX with Trilinos 12.18.1 and it's working for me (it builds and passes unit tests).  Perhaps I'm using a subset of capability in ArborX that doesn't need the latest Kokkos?  Here's a link to my code in a feature branch:
https://github.com/platoengine/platoanalyze/blob/meshmap/src/Plato_MeshMap.hpp

Perhaps I'm using a subset of capability in ArborX that doesn't need the latest Kokkos?

I thought for a moment and realized that we depend on the build system of 3.0, but not on the API so much. So your patch will likely still work with the latest Kokkos.

I'll use these patches until things settle out with the newer version of kokkos then.  Thanks!

@jrobbin Thank you for submitting this issue! This suggested an approach we haven't thought about. We will consider it further to see if it is feasible in the long term.

  I'll keep an eye on the ArborX repo to see if this approach is added.

@aprokop I've implemented the above as a temporary work around.  Just in case you want to try it out:
git clone https://github.com/platoengine/spack.git
source spack/share/spack/setup-env.sh
spack install arborx~mpi~cuda~serial @header_only

(As we established yesterday, 'header_only' may be a bit of a misnomer.)


[DOCFIX] Update docs/cn/Configuring-Alluxio-with-secure-HDFS.md

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/12308/
Test PASSed.


Disallow sensitive trait on members

Allowing @sensitive trait on members can lead to insecure usage
patterns, like forgetting to put @sensitive on ALL members that target
the same shape, which can lead to sensitive data not getting handled
properly, e.g., not getting redacted from logs, etc.
Instead marking the target shape as sensitive prevents modeling
mistakes by ensuring every reference to data types that are inherently
sensitive are always considered sensitive.
TODO: Doc updates. Currently idl-2.0 branch's docs still references version 1.0 mostly. Will update docs separately later.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

The spec probably needs to be updated to reflect this change. The selector shouldn't allow members for sensitive. Our implementation of Smithy will need to allow it since we support v1 and v2 simultaneously, but the extra validation we're doing will cover us to not actually allow it on members.


reticulate and R.utils missing in the yaml file

tabix queries are now handled by the echotabix subpackage, which in turn uses echoconda to automatically build the "echoR_mini" conda env. So users don't have to deal directly with this aspect anymore.


Unassigned filepaths shouldn't fail

Hey team!
I've noticed that the current rules parser assumes that the owner will always be assigned to a corresponding file path. However, there are some situations when a specific owner is not required and ownership is not defined.
An example of such a file path could be an auto-updated or autogenerated code that is indexed for some reason. A more concrete example is all strings.xml files in an Android project that are auto-translated and added to a project by a bot on a periodic basis. This kind of change does not require any individuals or teams to verify the change, hence the CODEOWNERS pattern is redundant.
Setting no owner for file path in the CODEOWNERS file seems to be an undocumented feature in GitHub. First discovered in this article and then verified to be a working solution by using the built-in Github validator.
I believe that the current implementation of the parser expects owners to always be specified. I'm keen to understand if you would be open to making this rule parametrisable?

Hey, I think this case should have been covered by https://github.com/hmarr/codeowners/pull/7. The "unexpected end of rule" case you linked to is checking that after parsing a line, if we're still looking for the pattern, we should have a non-empty string. That case should generally not be reached, unless an empty line is passed into the parseRule function.
I quickly tested out the behaviour you described and it does seem to be working:
$ ls
CODEOWNERS a.txt      b.txt      c.txt

$ cat CODEOWNERS
# All .txt files are owned by @mona
*.txt @mona
# But b.* files are unowned
b.*

$ codeowners -f ./CODEOWNERS
CODEOWNERS                                                              (unowned)
c.txt                                                                   @mona
b.txt                                                                   (unowned)
a.txt                                                                   @mona

Please let me know if I've misunderstood though!


remove data/v0.1 and software/v0.1 placeholder routes

and

[x] move data/v0.2 to data/v0.1
[x] move software/v0.2 to software/v0.1
[x] update example badge link

done, closing


nRF52840 Dongle cannot scan LE Coded PHY devices

I am working with Zephyr version 2.4 on nRF52840-Dongle for adding ability to scan CODED PHY devices. My host is Raspberry Pi3 with kernel  version 5.4.51 v7+,
HCI_USB sample is used with following configuration:
CONFIG_STDOUT_CONSOLE=y
CONFIG_GPIO=y
CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_BT=y
CONFIG_BT_H4=y
CONFIG_BT_CTLR=y
CONFIG_BT_HCI=y
CONFIG_USB=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_DEVICE_BLUETOOTH=y
CONFIG_USB_DEVICE_BLUETOOTH_VS_H4=y
CONFIG_MAIN_STACK_SIZE=1024
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=1024
CONFIG_BT_CTLR_RX_BUFFERS=18
CONFIG_BT_CTLR_TX_BUFFERS=19
CONFIG_BT_CTLR_TX_BUFFER_SIZE=251
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
CONFIG_BT_HCI_CMD_COUNT=20
CONFIG_BT_RX_BUF_COUNT=20
CONFIG_BT_RX_BUF_LEN=258
CONFIG_BT_DISCARDABLE_BUF_SIZE=257
CONFIG_BT_MAX_CONN=24
CONFIG_BT_CTLR_PHY_CODED=y
CONFIG_BT_PHY_UPDATE=y
CONFIG_BT_AUTO_PHY_UPDATE=y
CONFIG_BT_LLL_VENDOR_NORDIC=y
CONFIG_BT_LL_SW_SPLIT=y
I trying to scan and connect a Coded PHY device, which is nRF52-PCA10056 board running the Long Range Demo (Nordic's Solution). I can not reach the board when board is advertising via CODED PHY but I can reach it when it advertising via 1M PHY.
Since automatic PHY update is activated, I tried to change it via hcitool, following command: hcitool cmd 08 31 03 04 04 and I got the following answer at btmon:
< HCI Command: LE Set Default PHY (0x08|0x0031) plen 3    #28 [hci0] 540.203681
All PHYs preference: 0x03
No TX PHY preference
No RX PHY preference
TX PHYs preference: 0x04
LE Coded
RX PHYs preference: 0x04
LE Coded

HCI Event: Command Complete (0x0e) plen 4               #29 [hci0] 540.205957
LE Set Default PHY (0x08|0x0031) ncmd 1
Status: Success (0x00)

But still, no Coded PHY device cannot scannable via my Zephyr USB HCI Bluetooth controller.
Any help will appreciated. Thanks in advance.

@kasapreyizz this is not implemented yet. @andrzej-kaczmarek is currently working on it. Please join the #bluetooth channel on our Slack for more details.

Hello,
came across the same issue today and hence wondering if this has been fixed?
Thanks,
ER!K

Hello, came across the same issue today and hence wondering if this has been fixed? Thanks, ER!K

@eriklins this should now work.