Additional float types

Rendered

Rendered

This files should be exist

How to define literal for
bf16 and doubledouble
Suggest use f64x2 to replace doubledouble
and f64x2 can be used as literal suffix.

I'm okay with this for the most part, except that I disagree that f16 and f128 should only be limited to targets that support them natively. I think that having target features for float support is a good idea, especially considering how it would help the current situation with floating-point operations in libcore, but I don't think that actually using these types should be gated behind hardware support.
A good example of this is u128, which is not natively supported on many platforms, but still available regardless of target. We can still emulate it, and we can still use it, therefore we can define methods for it. IMHO, gating these types behind target features just adds unnecessary boilerplate for libraries wanting to implement methods for them, and people who are writing performance-sensitive code will already take into account whether these types are fast on the relevant targets before using them.

I'm okay with this for the most part, except that I disagree that f16 and f128 should only be limited to targets that support them natively. I think that having target features for float support is a good idea, especially considering how it would help the current situation with floating-point operations in libcore, but I don't think that actually using these types should be gated behind hardware support.
A good example of this is u128, which is not natively supported on many platforms, but still available regardless of target. We can still emulate it, and we can still use it, therefore we can define methods for it. IMHO, gating these types behind target features just adds unnecessary boilerplate for libraries wanting to implement methods for them, and people who are writing performance-sensitive code will already take into account whether these types are fast on the relevant targets before using them.
Additionally, while I don't feel too strongly about it, I don't like the idea of naming the x86 "long double" type f80, since it implies that it's also part of the IEEE 754 standard when it's not. I'm not too against it, though, since it is specific to std::arch.

f80 is a lot shorter, easy for literal

I agree with the comments about f80; I think I would rather see it named x86_fp80 (to match the LLVM intrinsic) to make it clear that it is not a standard type and to discourage use.

I agree with the comments about f80; I think I would rather see it named x86_fp80 (to match the LLVM intrinsic) to make it clear that it is not a standard type and to discourage use.
A good comment from the issue thread that summed this up: #2629 (comment)

A bit too long, how about f80x  x means extension
And f128x for double double

Note that supporting f80 (at all) might complicate the situation being discussed in https://github.com/rust-lang/rust/pull/113053, which suggests that we might be able to manipulate the control word (to set a 53 bit mantissa) in order to get more consistent behavior for f64.

Would it make sense to consider a subset? Especially the 16bit floats are a growing field compared to the legacy types.

I started trying to get together a better collection of what platforms & features support the different types to serve as a reference when implementing and help steer choices for this RFC (we can pull the contents in at some point). The doc is editable (if logged in), please add info & links if you know of any: https://hackmd.io/@8W5l8q6-Qyyn_vKh2-L0RQ/rJpZsmcdh/edit
Also, zulip thread for this RFC: https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/f<IP_ADDRESS>f128.20RFC

note that PowerISA's F128 extension has a specific instruction to aid emulation of f80: xsrqpxp

Note that supporting 80-bit floats (at all) might complicate the situation being discussed in rust-lang/rust#113053, which suggests that we might be able to manipulate the control word (to set a 53 bit mantissa) in order to get more consistent behavior for f64.

I would not say that it complicates anything. It's just another setting of the control word. In any case, such concerns are to be addressed in LLVM, not rustc. If my suggested changes are implemented and accepted, rustc doesn't need to change anything.

@the8472 If it helped with acceptance, I think splitting f16 and f128 to get those merged in faster would be very welcome. There is less to be debated with those, their behavior is highly standardized by IEEE, they are desired on all platforms, and their names are obvious, so the main challenge is implementation. The others have complexity that needs debate including interop with other languages and if they should be available on all platforms.

Also I wholeheartedly support the 80 bit support. It makes life a lot nicer working with the x87. Though I agree that the name should make clear that it's not an IEEE format.

Agreed, though I definitely think it should stay in arch as a target-specific type.
By contrast, I think f16b (or whatever we end up calling it) should be available on all targets, like f16 and f128.

I agree that we should basically consider f128 and f16 separately from the rest, especially as "long double" has a bunch of thorny "gotchas" around its repr, e.g. on systems with the x87 FPU it is not guaranteed that C's "long double" is indeed the fully extended 80-bit float.

Since a lot of people are sort of dancing around it, here's my take on a precise proposal for how to modify the RFC:

f16 and f128 should be unconditionally added to the language with the same semantics as existing f32 and f64.
There should be a minimal alias for c_longdouble in the core::ffi module, but its semantics should be explicitly dialed back for the time being.

For f16 and f128 semantics, it should support the generic {float} literals as well as explicit suffixes. They should support basic arithmetic operations via core, and advanced arithmetic operations via std. This can be tweaked as the semantics for f32 and f64 are further refined.
For c_longdouble, we should ensure that From conversions always exist from f16, f32, and f64, which will always happen for f128 but might additionally be required for things like the non-standard 80-bit floats. However, beyond that and ABI compatibility, I don't think anything else should be offered initially. We can eventually export all possible versions of this in core::arch, but for now, the only cases where it should work perfectly should be when it corresponds to f64 or f128; all other cases should be effectively an opaque type as far as most users are concerned.
It should be relatively easy to add in other non-standard float types as experimental in the meantime. My proposal is that these should work very similarly to how I present c_longdouble here: they should have some sense of ABI compatibility with C, and From conversions should be added whenever possible, but no arithmetic until we nail down the semantics. People can implement their own versions with inline assembly and other unsafe code in the meantime, but at least crates can all agree on what the types are.
My suspicion for something like bf16 is that it would be already quite useful if people just had methods to truncate f32 values into it, since this is very fast and it's what bf16 was designed for. This would require some sense of how we want to do "truncating conversion" in general (right now as is the only reasonable method, but we want to generalise that to a trait), but deciding on how those conversions work isn't necessary to simply add the type in an unstable way.

is there a real demand for f16 ? Because, yes there just 2 bytes long but f16 are not very precise

@Larsouille25 f16 is useful when you want to store a lot of float data with minimal size, and don't need much precision. For example, floating-point HDR images can be stored in f16, the 10-bit mantissa being more precision bits than the standard 8-bit 0-255 range, and the 5-bit exponent being more than enough. See EXR and formats RGBAh, RGh,  Rh.
Another example, quantized mesh data, for some use cases of meshes you really don't care if a vertex is a fraction of a millimeter off, and meshes have a lot of vertices, so using f16 can half the required memory size.

Also adding onto what @aaronfranke said, in general, values between 0 and 1 are quite precise for f16s, since they have a 10-bit significand. These values not only are useful for colour, but loads of different things only need to store a float in this range and using up half the memory is quite a benefit.

I opened #3453 which is mostly a subset of this RFC, a lot of text was copied from here. It only includes f16 and f128, and changes them to be available on all targets instead of conditionally available.

Prior art should also mention https://crates.io/crates/half, which is at ~2million downloads/month, showing there is a lot of demand for f16 (I'm not sure if there's a similar crate for f128).

@Nemo157 There is already a link to https://github.com/starkat99/half-rs but a crate link may be better.

Ah, under alternatives. I only checked the prior art section (and I think highlighting the wide usage in the RFC would be useful).

I opened #3453 which is mostly a subset of this RFC, a lot of text was copied from here. It only includes f16 and f128, and changes them to be available on all targets instead of conditionally available.

With this in mind, it would probably be good to shave f16 and f128 out of this RFC and make this only about the compatibility types in core::arch / core::ffi. And bf16, wherever that may end up (side note: the link to Josh's bf16 proposal in this RFC should go to the PR https://github.com/rust-lang/rfcs/pull/2690 and not to the file on the branch).

@tgross35 Your link is broken, I updated a new one https://hackmd.io/8Ptau058RmGqV0ZYJ49S9A

Thank you, formatting fixed: https://hackmd.io/@8W5l8q6-Qyyn_vKh2-L0RQ/rJpZsmcdh

I opened #3453 which is mostly a subset of this RFC, a lot of text was copied from here. It only includes f16 and f128, and changes them to be available on all targets instead of conditionally available.

I'm still doubting if it's feasible to support it on all platforms. From the view of backend (LLVM, more especially), half and fp128 are not always 'implemented' or even 'defined'.
(let F be either f16 and f128)

If target supports instructions for F, everything is okay.
If target ABI supports software emulation for F, everything is okay.
If target ABI does NOT support software emulation for F, but there's another type with same storage (size/alignment), could it be used as storage type of F (and sure, F is storage-only in such case)? This may cause ABI compatibility issue.
If target ABI does NOT support emulation for F, and no such type exists as storage-only equivalent. We can do nothing here.
If target ABI supports F, but backend (LLVM, etc.) does not implemented the feature, should compiler also have some guard about it?

I opened #3453 which is mostly a subset of this RFC, a lot of text was copied from here. It only includes f16 and f128, and changes them to be available on all targets instead of conditionally available.

I'm still doubting if it's feasible to support it on all platforms. From the view of backend (LLVM, more especially), half and fp128 are not always 'implemented' or even 'defined'.
(let F be either f16 and f128)

If target supports instructions for F, everything is okay.
If target ABI supports software emulation for F, everything is okay.
If target ABI does NOT support software emulation for F, but there's another type with same storage (size/alignment), could it be used as storage type of F (and sure, F is storage-only in such case)? This may cause ABI compatibility issue.
If target ABI does NOT support emulation for F, and no such type exists as storage-only equivalent. We can do nothing here.
If target ABI supports F, but backend (LLVM, etc.) does not implemented the feature, should compiler also have some guard about it?

don't worry, C++ already have both f16 and f128, that is std::float16_t, std::float32_t, std::float64_t, std::float128_t, std::bfloat16_t

@ecnelises This is a good question, but I disagree about this point:

If target ABI does NOT support emulation for F, and no such type exists as storage-only equivalent. We can do nothing here.

Yes, we can do something here. There is no reason we can't support our own emulation. Any calculation can be performed on a turing-complete computer. The specific details may be a challenge to implementers in some cases, but it is not impossible to support these types everywhere, therefore they should be supported everywhere.

@ecnelises This is a good question, but I disagree about this point:

If target ABI does NOT support emulation for F, and no such type exists as storage-only equivalent. We can do nothing here.

Yes, we can do something here. There is no reason we can't support our own emulation. Any calculation can be performed on a turing-complete computer. The specific details may be a challenge to implementers in some cases, but it is not impossible to support these types everywhere, therefore they should be supported everywhere.

If we do plan to implement the types everywhere, the 4 becomes 5. Even no has_f128 guards need to exist, compiler should still provide useful diagnostics if the types are used but not implemented by backend yet.

don't worry, C++ already have both f16 and f128, that is std::float16_t, std::float32_t, std::float64_t, std::float128_t, std::bfloat16_t

I think they're optional? https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1467r4.html

Overall, I like the idea of separating out the real IEEE types from the random stuff, and making f16 and f128 not arch-specific.

f80 is a lot shorter, easy for literal, we can clarify that only f16 f32 f64 f128 are IEEE 754 standard.

I don't think that's important for a niche type, though.  It doesn't need a name any nicer than __m512i and friends get.
For that matter, what's the goal of having a type for x87's weird things?  It's mentioned in neither the Motivation nor the Rationale sections.  How much new Rust code is going to be written targeting those types specifically instead of normal doubles?  What's the size and alignment of such a type in memory?  Are modern chips putting any effort into making it work efficiently, when x87 (and MMX) tend to be avoided by modern compilers?

bf16 [...] These types do not have literal representation.

Why not?  It seems odd to me that f16 would support literals but bf16 wouldn't.

For that matter, what's the goal of having a type for x87's weird things?

One possibility I could see, is that if Rust some day decides to accept the performance hit and make f64 fully IEEE-compliant on no-SSE x86-32, f80 would allow code that doesn't need full compliance to recover some performance on these platforms.

@ecnelises would you be able to update this RFC to be about bf16, ppc_fp128 and x86_fp80, and reference #3453 as a subset that should be developed first? Specifically, update the PR title to specifically mention those types, and add a link to the other RFC.
We can work on both RFCs in parallel but readers need to be clear about what the relationship between the two is - it's currently ambiguous.

@ecnelises would you be able to update this RFC to be about bf16, ppc_fp128 and x86_fp80, and reference #3453 as a subset that should be developed first? Specifically, update the PR title to specifically mention those types, and add a link to the other RFC.
We can work on both RFCs in parallel but readers need to be clear about what the relationship between the two is - it's currently ambiguous.

I’d like to update this RFC if separating IEEE compliant types and target related types is considered necessary, and my original changes with updates are correctly applied in the related proposal. 😶

@ecnelises would you be able to update this RFC to be about bf16, ppc_fp128 and x86_fp80, and reference #3453 as a subset that should be developed first? Specifically, update the PR title to specifically mention those types, and add a link to the other RFC.
We can work on both RFCs in parallel but readers need to be clear about what the relationship between the two is - it's currently ambiguous.

Thanks for your and other's comments. I generally agree that a proposal for IEEE-754 compliant f16/f128 and for target specific types are quite different. So I created another one #3456, focusing on bf16, f64f64, f80 and c_longdouble types.
I'm not familiar with Rust community's RFC policy. So I'm in doubt whether kicking off new post directly from another people without previous commit/author information shows enough respect to the original author.

Thanks for your and other's comments. I generally agree that a proposal for IEEE-754 compliant f16/f128 and for target specific types are quite different. So I created another one #3456, focusing on bf16, f64f64, f80 and c_longdouble types.
I'm not familiar with Rust community's RFC policy. So I'm in doubt whether kicking off new post directly from another people without previous commit/author information shows enough respect to the original author.

There is no policy on this, but consulting before splitting off your PR would have been, well, nice. It would probably be good for the two RFC authors to come to consensus on Zulip about what the relationship among these RFCs should be, and how to harmonize them a bit (or even figure out coauthoring) to help give the community a better picture of what exactly is being proposed. There is an existing floats rfc topic that can be used for discussion https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/f<IP_ADDRESS>f128.20RFC

I think we can close this since #3456 and #3453 were splitted.


sourceforge drama

I haven't been following this, but apparently it's a thing.
Here's a related numpy mailing list thread. The reactions to a tmux commit that drops sourceforge have been positive, and a little pitchfork-y. For reference, here are the scipy pages on sourceforge and on pypi.

Yep, we'll find an alternative. Marking this 0.16.0 to do this asap.

attn @mdboom @cgohlke mpl should be paying attention to this too.

I thought sourceforge backed down. See https://sourceforge.net/blog/third-party-offers-will-be-presented-with-opt-in-projects-only/

See https://sourceforge.net/blog/third-party-offers-will-be-presented-with-opt-in-projects-only/

For what it's worth, I see that scipy was at the top of their list of featured projects on Monday.
https://sourceforge.net/blog/project-of-the-week-june-1-2015-2/

I tried to find a good -- and completely free -- alternative for hosting binaries about 3 years ago and came up empty.  Reading through the e-mail thread, I don't see that clear alternative either.  I'm happy to make the move -- but to what?  (github was an option for a while, but they've dropped the downloads feature).

Would it be appropriate for pydata or numfocus to help with hosting?  On the other hand I don't understand the possible conflicts of interest.  For example I'd guess that if everything else is equal then Continuum and Enthought would rather have people use their installers.

I bet Rackspace would help us out.  We're already using the space that Rackspace gave to scikit-learn to host wheels of various sorts.

Rackspace is a good lead.  Is there a contact there or at scikit-learn that would be helpful?
I should clarify, too: at least for matplotlib, the hosting doesn't have to be completely free if there's some sort of moderate and predictable cost.  The thing that would be difficult for us to manage would be pay-for-bandwidth models and the surprises they can cause...

I'm not a fan of setting up our own hosting - too much overhead. There's already way too many servers/sites to admin and too few people to do it.
Why not go Github only? So far I've only seen comments about how Github disabled Downloads, but they've replaced that with Releases already 2 years ago: https://github.com/blog/1547-release-your-software. It's well-documented in various places (https://help.github.com/articles/distributing-large-binaries/), has a sane API (https://developer.github.com/v3/repos/releases/#create-a-release) and can provide download counts (https://help.github.com/articles/getting-the-download-count-for-your-releases/).

From a FailSafe point of view, shouldn't you plan to have always two distinct download organizations ?

There are two issues, one is authenticity and integrity, the other is reliability. Both is given for both github and bitbucket. @stonebig do you mean reliability with "FailSafe point of view"? If github fails, we have other problems than temporarily dysfunctional downloads (website for example :) ). As self-hosting costs, this is not really an option for Winpython, we have an estimated monthly traffic of about 7500GB (32700 downloads last month, estimated 230MB per download). I don't know numbers for scipy, but I expect they are significantly lower as the files are usually distributed pre-built by distributors.
OpenShift (by Redhat) has no data transfer / traffic limits, that sounds quite interesting, but it is limited to 1GB of storage.

For Scipy the SF downloads total about 1 TB/month (66 Mb for Windows installers x 3000 downloads/week x 4 weeks/month).
1 GB of storage is not going to cut it for Scipy either.

Two download places: not really important imho, if Github is offline we indeed have bigger issues than downloads.

FailSafe in engineering sense: avoid catastrophic failures.
For example, having the current site as main download and a smaller one as a backup (or check-up) would be nice.
Same for pypi

The failsafe engineering is outsourced to Github and python.org, and we save costs.
This has not been a problem so far with sourceforge, and I don't think it'll be a problem with github either.

before using github it should be inquired what their 'average bandwidth' is that they refer to in their terms of service as the limit for downloads. Given their LFS free bandwidth is a measly 1GB/month, I think it would be weird if we would be able to use 1TB/month via their releases page for free.

Ok, indeed, I did not realize our download volume is that high. I sent them a query on this.

Didn't get very useful answers, just that they are not actively limiting the release download bandwidth currently, unlike for LFS.

I can attach 450 Mo of binaries to a github tags https://github.com/winpython/winpython/releases/tag/1.1.20150512, so github is look like a simple FailSafe solution, without multiplicating Websites.

otherwise, pyzo uses bitbucket since 2 years, with no apparent complaints.
https://bitbucket.org/pyzo/pyzo/downloads

@stonebig thanks, that helps.

The true Sourceforge drama is that it can be, and it is again, down since about 20 hours.

Their recent record looks pretty bad as well : https://twitter.com/sfnet_ops

SF is up now but refuses to let me create a 0.16.0 folder. So I won't....
https://github.com/scipy/scipy/releases/tag/v0.16.0 looks good.

SF still doesn't let me create a https://sourceforge.net/projects/scipy/files/scipy/0.16.0/ folder, so I'll give up on that for now. Will change the advertised download site in setup.py to https://github.com/scipy/scipy/releases

same issue for my project. Let's hope they will fully recover next week.

since yesterday, sourceforge seems back 100% operationnal

Thanks @stonebig. I have now uploaded everything for 0.16.0 at https://sourceforge.net/projects/scipy/files/scipy/0.16.0. From now on Github Releases should be leading (will fix the download URL in setup.py), but plan to keep the SF page up to date as long as that's low overhead because (a) users might otherwise download an earlier release, and (b) otherwise SF might "re-package" for us.


New Bios 0060 for NUC8i7HVK - safe to update?

on dual boot macos mojave & windows 10 (separate blades)
Latest HaC-Mini, V2.6 with updated kernel extensions
RN: https://downloadmirror.intel.com/29470/eng/HN_0060_ReleaseNotes.pdf
Not really an issue, just a question to the community.
Thanks for the feedback

I tried this one last night, can not even boot my box, stuck in the intel logo screen, I dont know why.

I tried this one last night, can not even boot my box, stuck in the intel logo screen, I dont know why.

How do you solve the issue? The RN told us we cannot downgrade the BIOS to 0059.

Due to the Intel® ME firmware update in BIOS version 0060, you can’t downgrade to version 0059 or earlier.

So the problem happens before opencore? You can’t boot windows either? Try a bios reset.

Wondering why 0059 is tagged as Latest,
while 0060 is tagged as Previously Released?
Same for both HNK and HVK.
https://downloadcenter.intel.com/product/126141/Intel-NUC-Kit-NUC8i7HNK
https://downloadcenter.intel.com/product/126143/Intel-NUC-Kit-NUC8i7HVK

So the problem happens before opencore? You can’t boot windows either? Try a bios reset.

It is not an opencore issue, coz I can not even boot into the boot menu(I did the bios reset), just show the intel logo, maybe there are some compatibility problems in my set.

I tried this one last night, can not even boot my box, stuck in the intel logo screen, I dont know why.

How do you solve the issue? The RN told us we cannot downgrade the BIOS to 0059.

Due to the Intel® ME firmware update in BIOS version 0060, you can’t downgrade to version 0059 or earlier.

Intel provides power button method to flash previous bios.

Wondering why 0059 is tagged as Latest,
while 0060 is tagged as Previously Released?
Same for both HNK and HVK.
https://downloadcenter.intel.com/product/126141/Intel-NUC-Kit-NUC8i7HNK
https://downloadcenter.intel.com/product/126143/Intel-NUC-Kit-NUC8i7HVK

Maybe Intel has found some issue and reverted the update?
I do see the 0060 in this list several hours ago.
So, it's no hurry updating to 0060. Let's wait and see

Maybe related to these issues?
https://forums.intel.com/s/question/0D50P00004dMO1SSAW/nuc8i7hvk-boot-problem
https://forums.intel.com/s/question/0D50P00004dPbwnSAC/help-need-to-remove-ssds-everytime-i-start-up-my-nuc-so-it-can-boot-

Also yesterday I tried to upgrade from 0059 to 0060 and received an error loading the logo Intel.
After simple manipulations, booted the computer into recovery mode, press F4 and restored version 0059.
Then, physically, the button turned off the computer, and disconnected from the electrical network for 5 minutes.

Can't find 0060 on intel driver page now... Maybe does have some problems. LOL

I bought a NUC8i7HVK recently, and upgrade the bios to 0060 before a new installation of HaC-Mini.
The NUC works well both in Windows and MacOS on different internal SSD, but appears blue screen when using windows-to-go

I have BIOS 0060, and dualboot works perfectly. So you can update your NUC BIOS.

I have BIOS 0060, and dualboot works perfectly. So you can update your NUC BIOS.

Hmm, I really can't see 0060 on this page, and the 0059 is the latest... Can you please provide a link?

Why would you update the bios unless there was a known "goodness" for doing so?

After upgrade, the system become unstable with occasional ssd loss and power up failure. With 0059, the box run with 4.2GHz all-core and -80mv voltage offset, which made it really cool and quiet. Now it’s all gone.

2020年8月13日 上午2:23，dapostman<EMAIL_ADDRESS>写道：
Why would you update the bios unless there was a known "goodness" for doing so?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/osy86/HaC-Mini/issues/220#issuecomment-673035448, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJPRHYVMOJIGRWW4H5UEN4LSALMYVANCNFSM4LUBE3WQ.

 After upgrade, the system become unstable with occasional ssd loss and power up failure. With 0059, the box run with 4.2GHz all-core and -80mv voltage offset, which made it really cool and quiet. Now it’s all gone.
…
2020年8月13日 上午2:23，dapostman @.***> 写道： Why would you update the bios unless there was a known "goodness" for doing so? — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#220 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJPRHYVMOJIGRWW4H5UEN4LSALMYVANCNFSM4LUBE3WQ.

I don't have this issue on 0060 version, but i think downgrade is possible. Maybe I try your 0061 version, but I must check my SSDs, if I haven't problematic SSD model.

I have BIOS 0060, and dualboot works perfectly. So you can update your NUC BIOS.

Hmm, I really can't see 0060 on this page, and the 0059 is the latest... Can you please provide a link?

Link to 0060 here:
https://drivers.softpedia.com/get/BIOS/Intel/Intel-NUC8i7HVK-NUC-Kit-BIOS-0060.shtml
But some users reported issues with SSDs, unable to boot etc....
https://community.intel.com/t5/Intel-NUCs/What-happened-to-Bios-0060-for-NUC8i7HVK-Came-up-in-downloads/td-p/668451
Before you decide to update, you'll make better if you read this thread first. I haven't any problems with 0060 version, my SSDs are Adata XPG Gammix S11 NVMe & Adata SX8200PNP NVMe, so hard to say. I have different problem with bootloader, but I don't think so it is caused by BIOS version.

The New BIOS 0063 was released half a month ago.
I've updated and found no issue for nearly two weeks.
I suppose it's time to close this issue.
https://downloadcenter.intel.com/download/29832/BIOS-Update-HNKBLi70-86A-?product=126143

Updated to BIOS 0063 same here, no issue, everything works.

New version of bios 0064, is it safe to update ?


Add PHP version constraint in composer.json "require" section

Currently this package does not state which PHP versions it supports.
Based on CI/CD runs, the following seems to be rue:

@poef Which versions should remain supported?

Actions

[ ] Define which versions should be supported
[ ] Add "PHP" entry to "require" section of composer.json
[ ] Update PHP versions in .github/workflows/php-compat.yml

Since PHP 7.2 (and 7.3 for that matter) are no longer in the supported versions of PHP list, I think we're good here. Anything before 7.3 doesn't need to be supported.

FYI: I came across the lack of php in the "require" section using this totally userfriendly and intuitive tool: https://blog.pother.ca/php-8-yet/


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target/pull/565 is merged into live branch.
Auto archive content to https://github.com/VSC-Service-Account/docs-archive-test-target.git

Docs Build status updates of commit 4d54607:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-BackendEngineExceptionError] An exception occurred during the build process. Please check the raw log and retry building your content again. If the issue persists, please open a ticket in https://SiteHelp and include the URL of publishing report as well as below information: One or more errors occurred..

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Backend Engineer Coding Challenge - qgdomingo

Hello!
I am Quennel Gio or Gio for short, and I am one of the applicants from Akaru.io that will be working with Manabie. This PR contains my solution for the provided coding challenge written in Golang and using PostgreSQL for the database. Please see the README.md file for my answers to the requirements given.
For questions or concerns, feel free to reach out to me via my email. Thank you :)

Closing this PR, will submit new one - will add more code comments


Cannot execute KGC and math word problem ipynb

Hello,
please let me know where am i going wrong. I have not made any changes and have followed the given instructions for setup.
for math word problem

for KG completion

@Sanchita333 can you double check if you installed the correct library branch version as shown in README when running the IJCAI demo?

Closed this inactive issue. Please feel free to reopen it if the issue persists.


TLS Connection Memory Leak Fix

Could somebody take a look at the PR I made that contains a fix for a memory leak when TLS connection fails to connect: https://github.com/redis/hiredis/pull/896

Closing via #896


CASAviewer can't read multibeam data

For at least some FITS files with beam tables written with spectral_cube, CASA viewer can't read them, with this error:
2016-07-20 07:12:25	INFO	ImageFITSConverter::readBeamsTable	Loading multiple beams from BEAMS table
Cannot display e2cutout_full_W51_spw0_lines.fits-raster as raster image:
  (/Users/rpmbuild/gradle/workdir/casasources/release-4_5/casacore/images/Images/ImageBeamSet.cc : 200) Failed AlwaysAssert Int(chan) < _beams.shape()[0] && Int(stokes) < _beams.shape()[1]
Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!

I see no evidence that the beam table shape differs from the data shape.

This came from some corrupted binary tables that were populated with random numbers instead of zeros in the POL and CHAN tables


Add: support HEX 8, 16, 32 for Binary & CSV

Just some minor things. :)
Out of curiosity, what's your use case where hex numbers are preferable to decimal numbers in the CSV?

Just some minor things. :)
Out of curiosity, what's your use case where hex numbers are preferable to decimal numbers in the CSV?

Some cases in data structure it makes more since to view hex instead of decimal like Character ID, pointers ....

Thanks :)


[event request] Codeunit 90 "Purch.-Post" new parameters on event publisher "OnCopyAndCheckItemChargeOnBeforeLoop"

Dear ALAppExtensions Team:
Our solution extends the item charge funcionality, to do so we need a modification in the event publisher OnCopyAndCheckItemChargeOnBeforeLoop
OLD PUBLISHER:
[IntegrationEvent(false, false)]
local procedure OnCopyAndCheckItemChargeOnBeforeLoop(var TempPurchLine: Record "Purchase Line" temporary; PurchHeader: Record "Purchase Header")
begin
end;
NEW PUBLISHER:
[IntegrationEvent(false, false)]
local procedure OnCopyAndCheckItemChargeOnBeforeLoop(var TempPurchLine: Record "Purchase Line" temporary; PurchHeader: Record "Purchase Header";var TempItemChargeAssgntPurch: Record "Item Charge Assignment (Purch)" temporary; var IsHandled: Boolean) //new parameters added
end;
The parameters TempItemChargeAssgntPurch and IsHandled are referenced as VAR
The code in procedure "CopyAndCheckItemCharge" in Codeunit 90 "Purch.-Post" would be modified as follows:
OLD CODE:
....
SetFilter("Qty. to Invoice", '<>0');
if FindSet then
repeat
OnCopyAndCheckItemChargeOnBeforeLoop(TempPurchLine, PurchHeader);
TestField("Job No.", '');
if PurchHeader.Invoice and
("Qty. to Receive" + "Return Qty. to Ship" <> 0) and
((PurchHeader.Ship or PurchHeader.Receive) or
(Abs("Qty. to Invoice") >
Abs("Qty. Rcd. Not Invoiced" + "Qty. to Receive") +
Abs("Ret. Qty. Shpd Not Invd.(Base)" + "Return Qty. to Ship")))
then
TestField("Line Amount");
.
.
.
  if QtyNeeded <> 0 then
    Error(CannotInvoiceItemChargeErr, "No.");

until Next() = 0;
// Check purchlines
if AssignError then
.....
NEW CODE:
....
var
TempPurchLine: Record "Purchase Line" temporary;
PurchLine: Record "Purchase Line";
InvoiceEverything: Boolean;
AssignError: Boolean;
QtyNeeded: Decimal;
//New variable added
IsHandled: Boolean;
....
SetFilter("Qty. to Invoice", '<>0');
if FindSet then
repeat
//start new code
IsHandled := false;
OnCopyAndCheckItemChargeOnBeforeLoop(TempPurchLine, PurchHeader, TempItemChargeAssgntPurch, IsHandled); //new parameters
if not IsHandled then begin
//stop new code

TestField("Job No.", '');
if PurchHeader.Invoice and
  ("Qty. to Receive" + "Return Qty. to Ship" <> 0) and
                   ((PurchHeader.Ship or PurchHeader.Receive) or
                    (Abs("Qty. to Invoice") >
                     Abs("Qty. Rcd. Not Invoiced" + "Qty. to Receive") +
                     Abs("Ret. Qty. Shpd Not Invd.(Base)" + "Return Qty. to Ship")))
                then
                    TestField("Line Amount");

  .
  .
  .

  if QtyNeeded <> 0 then
    Error(CannotInvoiceItemChargeErr, "No.");

//start new code
end;
// end new code

until Next() = 0;
// Check purchlines
if AssignError then
.....
Thanks!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Error installation

I cannot install biokit, I get this error when trying to do 'pip install biokit' in the Anaconda prompt, but I don't know how to fix it. It seems and error in the path
ERROR: Could not install packages due to an OSError: [Errno 22] Invalid argument: 'C:\Users\AppData\Local\Temp\pip-install-wrxp4pmo\bioservices_7e0cb2dbc9644d7080c9d2960cd57924\.github/workflows/:'
Any idea? Thanks

I don't really have got any idea... however, since you're using Anaconda, maybe you can try conda install bioconda ?


Cancelled connect results in connected evm account on koda

it should not happen, you can see in the sidebar that the account is connected, even though I cancelled the connect from the wallet popup.
this one, on metamask:

then bunch of other bugs can happen

Hello @exezbcz
You're experiencing transcript error. It seems your query would be best dealt with by the support team.
I'll have to refer you to the official support Requests team with the ticket ID MET07638
Please see the link below to our dedicated support line:
Metamask Support Requests
Note; Click on the live chat icon at the bottom corner of the page to initiate chat

seems like metamask triggers automated scam messages

seems like metamask triggers automated scam messages

Yeah reported that

I haven't been able to reproduce it
I have seen web3modal acting a little weird sometimes, not sure if it's an issue with our implementation or what.
https://github.com/user-attachments/assets/c7cc40df-40af-4471-bcbd-12c3d2c32682

still happens for me

will try deleting cookies


Remove pkg/errors dependency

Everything we used it for is provided by stdlib

Codecov Report

Merging #33 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master      #33   +/-   ##
=======================================
  Coverage   32.97%   32.97%
=======================================
  Files          10       10
  Lines         555      555
=======================================
  Hits          183      183
  Misses        347      347
  Partials       25       25

Impacted Files
Coverage Δ

srtp.go
77.77% <100%> (ø)
:arrow_up:

context.go
73.83% <100%> (ø)
: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 0741c01...67ac24d. Read the comment docs.

You can get to it for earlier Go versions through https://godoc.org/golang.org/x/xerrors

@backkem Looks like the change has dropped the use of Wrap() and switched to the simple fmt.Errorf() and t.Errorf().

You're right, seems I was still sleeping earlier
...


[SPARK-47825][DSTREAMS][3.5] Make KinesisTestUtils & WriteInputFormatTestDataGenerator deprecated

What changes were proposed in this pull request?
The pr aims to make KinesisTestUtils & WriteInputFormatTestDataGenerator deprecated
Why are the changes needed?
Because these two classes will be moved from main to test in version 4.0, we need to first deprecate them in version 3.5 to make them exit more naturally.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Pass GA.
Was this patch authored or co-authored using generative AI tooling?
No.

@dongjoon-hyun
Is my approach correct? Because it's my first time doing this, if there's anything wrong, please point it out.
Thank you very much! ❤

cc @cloud-fan , @HyukjinKwon , @LuciferYang , @zhengruifeng, @yaooqinn , too

cc @HeartSaVioR too

BTW, to @panbingkun , we need to wait for this kind of change because we need to collect more opinions than a normal PR. It will take at least 72 hours in general.

BTW, to @panbingkun , we need to wait for this kind of change because we need to collect more opinions than a normal PR. It will take at least 72 hours in general.

Okay, don't worry, I accidentally found this while working on structured log migration.
Thank you very much! ❤

Thank you for the swift update.

Hi, @cloud-fan and @HyukjinKwon . How about the AS-IS status? Could you review this once more when you have a chance?

Merged to branch-3.5.


Additional devices

Hue motion sensor (SML003) from Philips (via Hue bridge and ZHA)
Door/window sensors from Fibaro (via Z-Wave)
Motion and Door/window sensors from Aeotec/AEON (via Z-Wave)
TRVs from Eurotronics (Spirit) and Danfoss (via Z-Wave)
Smart Anemometer and Rain Gauge from Netatmo
Additional manufacturer/model combination for the Hue dimmer switch RWL021

Thanks


Insert cookicutter entrypoints to appropriate context menus

Insert cookiecutter entry points to:

File -> New -> Create from Cookiecutter
Add Item -> Add from Cookiecutter
PTVS menu (optional - up to you if you want to do this. Coverage else where should capture core scenarios).
View -> Cookiecutter Explorer

Done


The need of validating Google reCaptcha on server

I wonder why I need to extra verify the reCaptcha response.
When injecting it into the form, the captcha should be checked to make the form valid, so, if I won't choose the correct images, the captcha won't be checked -> form won't be able to be submitted.
And if I though need to validate it on server, how can I use it in the form? I mean, if the validation on server fails, what should I do with my form?

If not check the response to the server side, the reCaptcha is losing its relevance. It is possible to simulate execution of the request to the server, and if not checked reCaptcha, then it is not necessary at all.
If the reCaptcha validation was held in error, you need to give this error and refresh the reCaptcha.

Ok, I am already validating the response on the google server. I close the issue.


Cant connect mesh info array to break mesh info node

Hi,
I would like to use your plugin in unreal 4.17.2 .
It compiles but when i run the example blueprint it says i cant connect the output mesh info node to the break meshinfo node.
But i need to do that in order to get the useful info.
Can you please please fix it?

(look at the break return data and break meshinfo nodes and the blue connection between them)
thanks

edit:
soled it by taking the first index of the array and connect that to break mesh info.

Follow the wiki


Add lint inherent_associated_pub_const_missing

Lint for removed associated pub constant inside ImplOwner's inherent impl
Issue mentioned in https://github.com/obi1kenobi/cargo-semver-checks/issues/366#issuecomment-1662820577
P.S : I named it missing inspired from lints like enum_missing, trait_missing, pub_module_level_const_missing etc but should it be removed like lints trait_removed_associated_type, trait_removed_supertrait?

Marked for merge! Thanks again for putting this together! 🚀


Feature/issue 477 beyond checkpoints

Optimizes deployment flags, which saves us 1-70ms on each block.
And partially skips block validation, which saves a lot as well.
On review, please check that nothing important is skipped.
Fix #477

There are consensus changes here I will have to download the code and check it better, I think you might be skipping too many checks.

Agree, this needs very careful testing. I've fully sinced stratis testnet and mainnet from scratch, now testing bitcoin.

On stratis testnet I was able to mine blocks after the sync.


[Question] How to troubleshooting when replica failed

Question
Like many other reported here, we constantly see many volumes rebuild its replica on our lab cluster.  It seems never end. :(
We have check  the CPU, and sure we have allocate more than enough for each instance manager.  Custer is L2 connected with 10G ethernet. We have no clue why there will be so many replica failures. It looks very worrying to put this into productions. Any docs to help us troubleshoot the issue?
Thanks a lot in advanced!
Environment:

Longhorn version: 1.0.2
Kubernetes version: 19.4
Node config

OS type and version k3os
CPU per node: 32
Memory per node: 128G
Disk type: 7200 mechanical disk
Network bandwidth and latency between the nodes: 10G

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal): Baremetal

Additional context
Add any other context about the problem here.

7200 mechanical disk is likely the problem. Longhorn isn't built with a spinning disk in mind, so it doesn't optimize the read/write to satisfy the requirement of a spinning disk. IOPS for 7200 spinning disk is likely less than 100 IOPS per second, which will cause problems for Longhorn.

@yasker Thanks a lot! So do we have any docs for recommending setup for longhorn? e.g. the minimal requirement for backing disks?
And accoring to performance report https://longhorn.io/blog/performance-scalability-report-aug-2020/, seem longhorn introduce a big penalty on IOPS.  Do we see any improvement very soon?

Longhorn requires SSD/NVMe devices.
For the best practice guide, see https://longhorn.io/docs/1.0.2/best-practices/ . We will update it with SSD/NVMe requirement too.
And we're planning to integrate with SPDK to improve the IOPS in v1.2.0 release cycle, which is targeting the first half of 2021.

@yasker Thanks again. I manage to improve the IOPS on host by using raid and cache, it is jump from 150 to 4K-5K IOPS already. But when test with a single longhorn volume on top of this setup,
On host:
On host:
# fio -directory=./test -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=4G -numjobs=10 -runtime=60 -group_reporting -name=lhtest --fdatasync=1
lhtest: (g=0): rw=randwrite, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=psync, iodepth=1
...
fio-3.20
Starting 10 threads
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
Jobs: 10 (f=10): [w(10)][100.0%][w=67.3MiB/s][w=4310 IOPS][eta 00m:00s]
lhtest: (groupid=0, jobs=10): err= 0: pid=27022: Thu Dec 10 11:13:58 2020
  write: IOPS=4360, BW=68.1MiB/s (71.4MB/s)(4088MiB/60003msec); 0 zone resets
    clat (usec): min=61, max=38828, avg=215.41, stdev=250.08
     lat (usec): min=62, max=38830, avg=216.47, stdev=250.14
    clat percentiles (usec):
     |  1.00th=[   98],  5.00th=[  116], 10.00th=[  127], 20.00th=[  139],
     | 30.00th=[  149], 40.00th=[  159], 50.00th=[  169], 60.00th=[  184],
     | 70.00th=[  200], 80.00th=[  223], 90.00th=[  269], 95.00th=[  457],
     | 99.00th=[ 1188], 99.50th=[ 1385], 99.90th=[ 2024], 99.95th=[ 2343],
     | 99.99th=[ 6456]
   bw (  KiB/s): min=56008, max=81728, per=100.00%, avg=69885.36, stdev=559.69, samples=1190
   iops        : min= 3498, max= 5108, avg=4367.71, stdev=34.99, samples=1190
  lat (usec)   : 100=1.27%, 250=86.33%, 500=7.70%, 750=1.82%, 1000=1.29%
  lat (msec)   : 2=1.49%, 4=0.09%, 10=0.01%, 20=0.01%, 50=0.01%
  fsync/fdatasync/sync_file_range:
    sync (usec): min=13, max=123604, avg=2072.81, stdev=1168.66
    sync percentiles (usec):
     |  1.00th=[ 1500],  5.00th=[ 1582], 10.00th=[ 1614], 20.00th=[ 1663],
     | 30.00th=[ 1713], 40.00th=[ 1745], 50.00th=[ 1795], 60.00th=[ 1860],
     | 70.00th=[ 1991], 80.00th=[ 2212], 90.00th=[ 2540], 95.00th=[ 4228],
     | 99.00th=[ 5604], 99.50th=[ 6063], 99.90th=[11076], 99.95th=[12911],
     | 99.99th=[21103]
  cpu          : usr=0.41%, sys=3.71%, ctx=910146, majf=0, minf=3124
  IO depths    : 1=200.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,261621,0,0 short=261621,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: bw=68.1MiB/s (71.4MB/s), 68.1MiB/s-68.1MiB/s (71.4MB/s-71.4MB/s), io=4088MiB (4286MB), run=60003-60003msec

Disk stats (read/write):
  zd0: ios=0/704051, merge=0/0, ticks=0/63396, in_queue=63396, util=99.45%
启

On longhorn volume:
# fio -directory=./test -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=4G -numjobs=10 -runtime=60 -group_reporting -name=lhtest --fdatasync=1
lhtest: (g=0): rw=randwrite, bs=(R) 16.0KiB-16.0KiB, (W) 16.0KiB-16.0KiB, (T) 16.0KiB-16.0KiB, ioengine=psync, iodepth=1
...
fio-3.7
Starting 10 threads
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
lhtest: Laying out IO file (1 file / 4096MiB)
Jobs: 10 (f=10): [w(10)][100.0%][r=0KiB/s,w=2816KiB/s][r=0,w=176 IOPS][eta 00m:00s]
lhtest: (groupid=0, jobs=10): err= 0: pid=2559: Thu Dec 10 19:32:26 2020
  write: IOPS=261, BW=4183KiB/s (4284kB/s)(246MiB/60093msec)
    clat (usec): min=600, max=247098, avg=8363.94, stdev=11454.24
     lat (usec): min=602, max=247100, avg=8366.50, stdev=11454.24
    clat percentiles (usec):
     |  1.00th=[   750],  5.00th=[   840], 10.00th=[   914], 20.00th=[  1037],
     | 30.00th=[  1188], 40.00th=[  1500], 50.00th=[  4015], 60.00th=[  7504],
     | 70.00th=[ 10421], 80.00th=[ 14091], 90.00th=[ 21103], 95.00th=[ 27919],
     | 99.00th=[ 44827], 99.50th=[ 53740], 99.90th=[123208], 99.95th=[147850],
     | 99.99th=[246416]
   bw (  KiB/s): min=  127, max= 2400, per=10.01%, avg=418.65, stdev=498.85, samples=1200
   iops        : min=    7, max=  150, avg=26.11, stdev=31.18, samples=1200
  lat (usec)   : 750=0.94%, 1000=16.71%
  lat (msec)   : 2=27.44%, 4=4.86%, 10=18.57%, 20=20.05%, 50=10.74%
  lat (msec)   : 100=0.57%, 250=0.11%
  fsync/fdatasync/sync_file_range:
    sync (usec): min=1427, max=482735, avg=29849.88, stdev=29372.22
    sync percentiles (msec):
     |  1.00th=[    3],  5.00th=[    4], 10.00th=[    4], 20.00th=[    5],
     | 30.00th=[    6], 40.00th=[   10], 50.00th=[   23], 60.00th=[   38],
     | 70.00th=[   46], 80.00th=[   54], 90.00th=[   65], 95.00th=[   74],
     | 99.00th=[  103], 99.50th=[  125], 99.90th=[  251], 99.95th=[  464],
     | 99.99th=[  477]
  cpu          : usr=0.06%, sys=0.26%, ctx=80903, majf=0, minf=8
  IO depths    : 1=200.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,15712,0,0 short=15706,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: bw=4183KiB/s (4284kB/s), 4183KiB/s-4183KiB/s (4284kB/s-4284kB/s), io=246MiB (257MB), run=60093-60093msec

Disk stats (read/write):
    dm-0: ios=2/32854, merge=0/0, ticks=20/288349, in_queue=289461, util=99.64%, aggrios=2/36583, aggrmerge=0/110, aggrticks=20/280174, aggrin_queue=200005, aggrutil=85.50%
  vda: ios=2/36583, merge=0/110, ticks=20/280174, in_queue=200005, util=85.50%

The iops is
iops        : min= 3498, max= 5108, avg=4367.71, stdev=34.99, samples=1190
vs
iops        : min=    7, max=  150, avg=26.11, stdev=31.18, samples=1200
still looks terrible bad :(

Hi again @yasker,  I continue to look into the how to build a longhorn cluster properly. After improve the underline disk IOPS, I still have problem to achieve good enough IOPS in longhorn level, I doubt it related to cluster_size on qcow file. Do we still use qcow as backing file? if yes, what is it cluster_size? Thanks a lot for the great work! When digging a deeper into the project, I am getting more confidence in longhorn now :D

@ElisaMeng You can find our latest performance report at https://longhorn.io/blog/performance-scalability-report-aug-2020/ . And it's unlikely due to the block size (if what you meant), since we've experimented with different block sizes as well but it doesn't change the performance much.
Using SSD/NVMe, 10Gbps network between the nodes and enough CPU on the node should get you a better performance.
For the upcoming v1.1.0 release, we will provide an option to Disable revision counter, which can increase IOPS by around 15%. More work will be done with the upcoming SPDK work to improve the performance of Longhorn.

@yasker Thanks a lot!


How to load dynamic modules on demand without bundling all together?

Let say I have this code:
// loader.js
var moduleName = getSomeModuleNameInRuntime();
require([ moduleName ], function(myModule) {
  // ...
});

where moduleName can have a lot of different values.
As I understand, in this case webpack will create a context for loader.js and will try to include there all it can find. I can somehow manage which modules will be included in context (although I don't understand yet how exactly it should be done). Then all that modules will be bundled together in a "context chunk", so when my loader.js will require any of them, this chunk will be downloaded (with jsonp) and required module will be found there. So far so good.
My question is - what if I don't want to download all that modules when I need only one of them? If my loader.js in runtime requires smth like tabs/chart, I wan't file containing only module tabs/chart with it's deps to be downloaded, and so on.
I played with contexts, but it's all about bundling all possible dynamic modules together.
I tried to define multiple entry points so webpack generates separate file for each of my dynamic modules (exactly what I need!), but suddenly Module not found: Error: a dependency to an entry point is not allowed.
I though a bundle-loader is what I need, but dynamic expressions, obviously, can't be processed by loaders during compilation, so I can't define a loader for them.
Still they are processed by ContextReplacementPlugin, so I though these two can be combined. I reviewed my files structure a bit, putting everything supposed to be dynamic in particular folder, which I set as context for all dynamic requests. And indeed, with this it became possible to define a loader for dynamic modules.
But... module paths in a context chunk are always relative. So it appears that dynamic moduleName in example above should also aways be relative. If my dynamic module lives in components/foo/bar.js, where components is a context folder, then moduleName in require([ moduleName ]) MUST be only and only ./foo/bar.js. Does it make any sense??
I'm out of ideas. Is it even possible at all?

// loader.js
var moduleName = getSomeModuleNameInRuntime();
require("bundle!./path/" + moduleName)(function(myModule) {
  // ...
});

@jeron-diovis Did that tip work for you?

@sokra @bebraw What does bundle! do in this case? Is it built-in to webpack or a separate bundle loader? I am having a hard time requiring scripts from a dynamic location.

@abobwhite Could you open a question at Stack Overflow? We don't really do support here anymore. Feel free to link me to that. Generally dynamic bits are hard with webpack (static analysis) and you may need to use a third party solution on top of it.

Thanks, @bebraw . I've posed the question here: http://stackoverflow.com/q/40426912/1721440. I'd be thankful for any suggestions or 3rd party solution you might have.

@sokra @bebraw
based on this suggestion
// loader.js
var moduleName = getSomeModuleNameInRuntime();
require("bundle!./path/" + moduleName)(function(myModule) {
  // ...
});

what if moduleName itself contains the path something like /path/to/my/file.js
And this path could vary on difference scenarios, Does that mean I need to pass in the lowest common parent folder, in some circumstances, even root folder?

@liqiang372 I posted a solution to my stack overflow question back in November. I ended up being able to create an alias in webpack to do it. http://stackoverflow.com/a/40537163/1721440


Is there a way to increase the expiration time when run crc stop

General information

OS: Linux / macOS / Windows
Hypervisor: KVM / Hyper-V / hyperkit

CRC version
All versions
Steps to reproduce
Run crc stop when crc is in running status.
Expected
Usually, it will take for a while and finally stopped successfully.
$ crc stop
Stopping the OpenShift cluster, this may take a few minutes...
Stopped the OpenShift cluster

Actual
But in some cases, if it takes much longer time to stop the machine, it will prompt user whether or not to force stop. This makes it a bit difficult to embed the crc launch into an automated process, e.g. CI/CD pipeline, or some automation scripts.
I did a quick check through the code and it looks there's no easy way to expand the expiration time and try to avoid the user prompt.

you can stop the cluster as a background process or delete as such without waiting it to finish.
The reason is that the processes inside the VM are gracefully shutdown when they VM receives a shutdown request... and this can take time.
We have already increaed the time before... but this is based on the drivers (as they perform the action in unison with the hypervisor).
Note: I am confused about the question as the long stop time affects your CI/CD process, but you do want to wait until this happened? I would say you should do a crc stop -f instead ?

crc stop -f is what we are using our CI which first wait for the cluster to gracefully shutdown and if that not happen then it will forcefully stop it.

I guess the following, since you mention it is a CI/CD environment. You might start your script as:
set -o pipefail
set -e

if so, all commands that fail will error out and stop the build. If so, you can also do the following:
crc stop || true

which in that case will ignore the retrun code of the crc stop command

@gbraad @praveenkumar Thanks for your comments and sorry for the confusion.
Basically, I don't want the user prompt behavior breaks the auto run script and I want to reuse/restart the stopped machine in a later phase during the script run. So, what I am really asking is just whether I could extend the expiration time a bit by myself, although I understand to increase the time may not always work:-)
One case just FYI, as an example, I want to resize a stopped image and restart it to install my applications.
On the other hand, I probably could use -f, but I'm not sure whether it will break something which makes me fail to restart the stopped VM later, especially when I install more applications on top of default OCP. I may need to double check this.
P.S.

I cannot use the background process because I need to reuse the stopped VM, so I need to know when it's stopped.

@gbraad When you said "we have already increased the time before", do you mean it's not recommended for crc user to do this because it depends on different Hypervisors?

Right. Please changes have to be ported to each hypervisor specific ally. You can of course create your own version. See our org for the repo, named like machine- and look for a commit that talks about stop or timeout.


Error: Unable to dynamically transpile ES module

Hi @jkuri !
I would like to use this package, so I installed and put into my angular2 project in the given way, but after running it I got an error.
Firtstly when I implemented it, how the tutorial written, I get http404 error, while app didn't find the package. So I put the following line into my system.config.js file:
        'ng-daterangepicker': 'node_modules/ng-daterangepicker/ng-daterangepicker.js'
After that I run it again and I get following error:
Error: Unable to dynamically transpile ES module    A loader plugin needs to be configured via SystemJS.config({ transpiler: 'transpiler-module' }).   Instantiating http://localhost:8080/node_modules/ng-daterangepicker/ng-daterangepicker.js
Please help me, I want to use this package. Thanks

Hey, same problem here. you found a solution?


Updating parallels-virtualization-sdk (11.1.2-32408)

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


Tensorflow Lite Python Interpreter Crashes

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 16.04
TensorFlow installed from (source or binary): Source
TensorFlow version (use command below): b'v1.8.0-2191-gc36266e' 1.8.0
Python version: 3.5
Bazel version (if compiling from source): 0.13
GCC/Compiler version (if compiling from source): c++ (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
CUDA/cuDNN version: N/A
GPU model and memory: N/A
Exact command to reproduce:
mkvirtualenv tf -p /usr/bin/python3
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout 4dbaa65
./configure
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
cd ~
pip install /tmp/tensorflow_pkg/tensorflow-1.8.0-cp35-cp35m-linux_x86_64.whl
wget http://download.tensorflow.org/models/mobilenet_v1_2018_02_22/mobilenet_v1_1.0_224.tgz
tar -zxf mobilenet_v1_1.0_224.tgz
python

import tensorflow as tf
a = tf.contrib.lite.Interpreter('mobilenet_v1_1.0_224.tflite')
a.allocate_tensors()
a.get_input_details()
Segmentation fault (core dumped)

Describe the problem
Segmentation fault when running the tflite python interpreter.  The Interpreter initializes and allocate_tensors() runs, but other commands result in segfault.
Is the python tflite interface only intended for ARM systems, or should it run on x64 as well?  (I'm running on x64).
Source code / logs

I'm not sure of a proper fix but adding a call to tensorflow::ImportNumpy(); in this function https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/python/interpreter_wrapper/interpreter_wrapper.cc#L111 seems to work.

The fix noted by @parvizp is correct. It has been fixed internally and should be fixed externally next week.

Great, fixed it for me!
Thanks!


Fix text resizing

Fixes #98
Fixes #128
Fixes #151
Fixes #176
Fixes #253
This introduces a max font size.
This was difficult for markdown, because the library does not support allowFontScaling. The solution in this PR is to use a smaller font size when the user scales it up too high. This way we never get over our max size.
Pre-flight check-list
Before raising a pull request

[ ] Documentation
[ ] Unit tests

Pre-merge check-list

[ ] Link to Trello ticket/GitHub issue (If applicable)
[ ] Any risky areas identified
[ ] Test plan provided
[ ] Tester approved

Tester check-list

[ ] Tested on multiple devices / OS versions (Test on the physical device(s) you have access to, otherwise use BrowserStack):

[ ] Galaxy S8 (Android 7.0/8.0)
[ ] Galaxy S7 (Android 6.0)
[ ] iPhone X (iOS 11.x)
[ ] iPhone 8 (11.x)
[ ] iPhone 7 (iOS 10.x)

Optional:

[ ] Google Pixel 2
[ ] Galaxy S8 Plus
[ ] Galaxy S7 Edge
[ ] Galaxy S6
[ ] iPhone 7+
[ ] iPhone 6

Accessibility Testing (If applicable)

[ ] Text-to-Voice (Android: Voice Assistant / iOS: Speak Selection)
[ ] Large Text (=<200%)
[ ] Landscape Screen orientation

Weak connection testing (If applicable)

[ ] Airplane mode
[ ] 2G/3G Network Settings

With respect to Markdown, we have tried to limit its use to just paragraphs and inline styles for now (e.g. bold, emphasis). It shouldn't end up being used for headings or other kinds of typographic content as these have not been designed for.

Yes, but as soon as we have the markdown renderer library, we loose control over font scaling in these pieces of text. Unfortunately.

I looked into other markdown renderers too. There are not that many out there. I wonder if we could roll our own? Looking at the current renderers source code, I don't think it would be a massive task. Alternatively we could submit a PR to add font scaling to the lib we do use.

Looking at this again, I feel that this is really hard to understand. The markdown library is an issue, but I don't think it's the biggest one.
We have a lot of places where we define the height of a component based on the font scale. These now need to know about the text style used for their children (h1, h2, text, small, ...) because all of them have different scale caps.
I can see different solutions here:

Provide a function like scaleWithText, which can be used for styles:button: {
  height: scaleWithText({ base: 44, textType: 'h2' })
}

Make the scaling cap consistent for all text types. It seems that 1.25 should work pretty well. Then this could be a constant and the styles would look like this:button: {
  height: 44 * Math.min(FONT_SIZE_CAP, PixelRatio.getFontScale())
}

@RGBboy, what do you think?

The first option looks great. I like the fact that we capture the intent in the name of the function to clarify why we are scaling the height. I would just add that as a helper exported from our Text component. It will also give us a central place to change this as we come to understand the little tweaks that may need to be made.

Since this is an explicit mock of PixelRatio in react native I don't mind this so much. It does show that font scaling works for us. But it is also quite confusing. I can have a look at making a custom mock for PixelRatio.

Found a minor issue, #304.
On iOS, if you change the font settings while the app is open, then you still get the huge text like previously. I'm not sure if this is really an issue though as I wouldn't expect users to do this very often...
Otherwise I think this looks good on the devices I've tested on:
Galaxy S8
iPhone 6
iPhone 7+

Hey @frigus02 ! Are we still following these rules?

@JunBadger For the most part, yes. The only difference is xSmall. We have these values in the code currently:

Size
Default
Max

xSmall
12
14

price
14
18

tarBarItem
12
13


sarge: (0.1.7 -> 0.1.7.post1). Fix octoprint on raspberry (aarch64-linux)

Motivation for this change
Fixes #152226
Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 152268 run on x86_64-linux 1

3 packages built:

octoprint
python38Packages.sarge
python39Packages.sarge

Result of nixpkgs-review pr 152268 run on aarch64-linux 1

3 packages failed to build:

octoprint
python38Packages.sarge
python39Packages.sarge

Result of nixpkgs-review pr 152268 run on x86_64-linux 1

3 packages built:

octoprint
python38Packages.sarge
python39Packages.sarge

Result of nixpkgs-review pr 152268 run on aarch64-linux 1

3 packages built:

octoprint
python38Packages.sarge
python39Packages.sarge

@abbradar could you have a look? Or maybe @gebner  @WhittlesJr if you got time?

Please follow the commit message guidelines (there should be a single commit titled sarge: 0.1.7 -> 0.1.7.post1).
I'd prefer to disable the two tests entirely.  Increasing the timeout just means it will fail less often; but it's still flaky.

Result of nixpkgs-review pr 152268 run on aarch64-linux 1

3 packages built:

octoprint
python38Packages.sarge
python39Packages.sarge

Result of nixpkgs-review pr 152268 run on x86_64-linux 1

3 packages built:

octoprint
python38Packages.sarge
python39Packages.sarge

There's still 4 commits in this PR.  Please squash the commits!

Thanks for reviewing and your feedback. PR is squashed.

Thanks!


fix(utils): fixes event target patch in web workers

Calling addEventListener in a Web Worker was breaking.
No tests, but we should probably run all the zone tests (if possible) inside a web worker as part of the test suite to ensure compatibility.

Thanks for the fix !
I'll test this in the context of Angular before merging.

Maybe.
If we change the target to this || self, then obviously we'll be invoking it with a target of self when this is falsy. I have no idea how all the browsers normally behave when you invoke these functions with a falsy target (is it specced?). The current solution is somewhat 'safer' in that the self path is only taken on web workers.
What do you think?

When would this be falsy ? (outside of a web worker)

@vicb
In 'working' code? I have no idea. But if someone does, in development, the following:
'use strict';

var fn = eventTarget.addEventListener;
fn('click', function () {});

Then shouldn't the behaviour be the same (or as close as possible) whether zone is loaded or not?

Not sure I get your point here, wouldn't you write fn.call(eventTarget, 'click', function); above ?

You would, yes. But my point was, that if a developer when writing their app mistakenly writes:
'use strict';

var fn = eventTarget.addEventListener;
fn('click', function () {});

Then the code should error out (or nor as the case may be) whether zone is loaded or not. Basically, the behaviour should be consistent for zone and non-zone code, even if that behaviour is an error. In this case, one would presume that this would be falsy inside the addEventListener implementation, and the code should run as such.

That makes sense.
It seems like Travis testing Angular with this is happy (currently re-running a failed test but looks like a glitch). Once it's green, I'll merge the PR. Thanks !

landed as ad5c0c8df779496ce21294cfef590c30bfba0a4a


Create tck_challenge.md

Is this a common template used by other projects?  LGTM.

Is this a common template used by other projects? LGTM.

yes


feat:Replacing External Redirection to Tomato Disease Article with Internal Page

PULL REQUEST : Closes #137
Title
Replace External Redirection to Tomato Disease Article with Internal Page
Description
This PR replaces the external redirection to the tomato disease article with an internal page on the Agrotech AI platform. The purpose is to enhance user experience by keeping users within the platform and providing consistent access to the article.
Changes Made

[x] Created an internal page for the tomato disease article
[x] Updated the redirection link in the relevant component to point to the new internal page
[x] Improved navigation flow by removing the external link

Checklist

[x] I have tested the changes locally
[x] Changes are backward-compatible

Screenshots (if applicable)

Additional Notes
This change will help in reducing bounce rates and improving platform engagement by keeping users within Agrotech AI.

hi @IkkiOcean please do this in tailwind css only..dont use extenal css...
raise a new issue ..i will assign you..this ..
in the whole project we are having react and tailwind..please try to follow that..i really a[ppreciate your work..


Get-TssSecretField returns field value enclosed in quotes

Verified issue does not already exist?
Yes
What error did you receive
Get-TssSecretField -TssSession $session -Id 12345 -Slug fieldslug

"some notes"

Please run the command using -Verbose
VERBOSE: Command invocation: Get-TssSecretField -TssSession:TssSessionObject -Id:System.Int32[] -Slug:fieldslug -Verbose:True
VERBOSE: Performing the operation GET https://server/SecretServer/winauthwebservices/api/v1/secrets/12345/fields/notes with:

"some notes"

### Provide a test case or steps to reproduce

```powershell
Get-TssSecretField -TssSession $session -Id 12345 -Slug fieldslug

Expected behavior
The field content should be returned as is, not with added quotes.
What Edition of Secret Server?
Platinum
What version of Secret Server
11.0
What PowerShell host was used when producing this error
Windows PowerShell (powershell)
PowerShell Host Version
The same result is both in PowerShell 7 and Windows PowerShell 5.1

@peetrike can you confirm that this issue is resolved?

yes, now the result is without quotes


Improvements on ziggy.d.ts generation

I tried the newly introduced TS support and it works great so far.
I would like to discuss two further improvements (it is just cosmetics):
When generating the .d.ts file using php artisan ziggy:generate <path>, then <path> must point to a JS file. This made sense before the TS introduction, but when using --types-only flag, that is a bit inconvinient. Instead I suggest to allow arbitrary files and change the extension if it is not already .js/.d.ts respectively.
Second: In the readme, you ask to add another .d.ts file to basically shim the routeFn and make it globally available for TS. Since we also need generating the declarations for the route, it probably make sense, to add the shim to the definition (or at least having another flag in the command which creates the shim right along in the ziggy.d.ts)

That file path convenience makes sense 👍🏻
The declarations I'm interested in but I have some questions. Just thinking out loud: In the example in the Readme we import routeFn from 'ziggy-js';. If we have to generate this declaration automatically we can't necessarily know that ziggy-js exists to import from—the user might not have the NPM package installed and might not have a bundler/TS alias set up to point ziggy-js to their vendor folder. (Actually, is that true? Or to get correct types without the NPM package would they have to set up the path alias in their tsconfig, and therefore it would work fine?) That means we'd have to import from the vendor directory ourselves using a relative file path, which means we'll have to generate that path based on where the file is generated... which feels gross. Am I missing anything? I'll play around with this some more and see if I can answer some of these questions myself.

I'll read this again tomorrow, but if I understand correctly: When generating the ziggy.d.ts you definitely will have the composer package installed. So from my perspective there is nothing wrong referencing the types from within the composer package (as you suggest to do in the tsconfig.json otherwise).
Maybe it is a good idea to give a bit more control about this to the user, e.g. like passing a flag (--ziggy-types=node|php). Alternatively (or additionally) you may inspect the package.json in CWD in order to find out there is the ziggy-js package installed. Or check the node_modules directory directly. When checking node_modules folder be careful of how you do this check, since diffrent package managers do different things (e.g. like not placing a folder but a symlink)


[SDPSUP-1212] : Add word count form validation

JIRA issue: https://digital-engagement.atlassian.net/browse/SDPSUP-1212
Changed

Added custom form validation methods to check number of words in textArea and textField form elements if configured under the "Form Validation" tab in Drupal.

Counter_maximum and counter_minimum values override maxlength and minlength if both are set.

Move to using VFG validation instead of browser validation for all free text fields (textArea, textField, tel, url, email)

Screenshots

@tim-yao,


Fix dropdown menu display in top navbar

Fixes https://github.com/rust-lang/docs.rs/issues/1714.

Doesn't look very nice but at least not broken anymore:


After auto-install, admin pages are unstyled and buttons are not functioning

After auto-install, which was successful admin pages are unstyled and buttons are not functioning.
Please advise.

Does your web host allow shell access?

On Dec 7, 2017 at 1:14 PM,  <Romes (mailto:notifications@github.com)>  wrote:
After auto-install, which was successful admin pages are unstyled and buttons are not functioning.
Please advise.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly,  view it on GitHub (https://github.com/therecluse26/PHP-Login/issues/149), or   mute the thread (https://github.com/notifications/unsubscribe-auth/AH24AmtnODS2QV5ET3TbfMTJhEScLQwsks5s-CsGgaJpZM4Q5-Or).

I am using a local install of XAMPP, let me check.

It sounds like composer didn’t properly pull dependencies in during the install (the automated installer invokes composer in the shell using a popen command). Try navigating to PHP-Login’s root folder in a terminal and running “composer install” (after downloading composer of course)
Sent with GitHawk

Ill give it a shot, thank you!

No problem! Let me know how it goes
Sent with GitHawk

Good call,
All seems to be working ATM.
Thank you for this by the way!

Awesome, glad we could get it up and running, and happy to help!


Fix wrong string used in GetRoutes

This PR fixes a typo in GetRoutes where the wrong string variable is used.

Codecov Report

Merging #1939 into master will decrease coverage by 0.05%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master    #1939      +/-   ##
==========================================
- Coverage   63.81%   63.75%   -0.06%
==========================================
  Files         144      144
  Lines       13583    13583
==========================================
- Hits         8668     8660       -8
- Misses       4080     4088       +8
  Partials      835      835

Impacted Files
Coverage Δ

kubernetes/deployments_kubeclient.go
55.2% <0%> (ø)
:arrow_up:

remoteworkitem/jira.go
75% <0%> (-25%)
:arrow_down:

remoteworkitem/scheduler.go
53.65% <0%> (-7.32%)
:arrow_down:

Continue to review full report at Codecov.

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


Appears to break on windows

Hey! I've recently started migrating my snapshot tests to use inline-snapshot - I've been wanting a good inline snapshot library for a while, thank you!
Everything worked almost perfectly for me apart from some failing tests on windows, here's one of the tracebacks:
Traceback (most recent call last):
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\_pytest\pytester.py", line 1172, in runpytest_inprocess
    reprec = self.inline_run(*args, **kwargs)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\_pytest\pytester.py", line 1137, in inline_run
    ret = main([str(x) for x in args], plugins=plugins)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\_pytest\config\__init__.py", line 170, in main
    config=config
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_hooks.py", line 433, in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 112, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_callers.py", line 116, in _multicall
    raise exception.with_traceback(exception.__traceback__)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_callers.py", line 80, in _multicall
    res = hook_impl.function(*args)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\_pytest\main.py", line 318, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\_pytest\main.py", line 307, in wrap_session
    session=session, exitstatus=session.exitstatus
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_hooks.py", line 433, in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 112, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 418, in traced_hookexec
    return outcome.get_result()
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_result.py", line 108, in get_result
    raise exc.with_traceback(exc.__traceback__)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_result.py", line 70, in from_call
    result = func()
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 415, in <lambda>
    lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_callers.py", line 133, in _multicall
    teardown[0].send(outcome)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\_pytest\terminal.py", line 868, in pytest_sessionfinish
    terminalreporter=self, exitstatus=exitstatus, config=self.config
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_hooks.py", line 433, in __call__
    return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 112, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 418, in traced_hookexec
    return outcome.get_result()
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_result.py", line 108, in get_result
    raise exc.with_traceback(exc.__traceback__)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_result.py", line 70, in from_call
    result = func()
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_manager.py", line 415, in <lambda>
    lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_callers.py", line 155, in _multicall
    return outcome.get_result()
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_result.py", line 108, in get_result
    raise exc.with_traceback(exc.__traceback__)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\pluggy\_callers.py", line 80, in _multicall
    res = hook_impl.function(*args)
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\inline_snapshot\pytest_plugin.py", line 153, in pytest_terminal_summary
    unused_externals = _find_external.unused_externals()
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\inline_snapshot\_find_external.py", line 66, in unused_externals
    for name in used_externals():
  File "D:\a\prisma-client-py\prisma-client-py\.nox\test-3-7\lib\site-packages\inline_snapshot\_find_external.py", line 57, in used_externals
    result |= used_externals_in(pathlib.Path(filename).read_text())
  File "c:\hostedtoolcache\windows\python\3.7.9\x64\lib\pathlib.py", line 1222, in read_text
    return f.read()
  File "c:\hostedtoolcache\windows\python\3.7.9\x64\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 6161: character maps to <undefined>

This then cascades into the pytester fixture not being able to parse the output.
For reference, this is what one of my failing tests looks like
def test_field_map(testdir: Testdir) -> None:
    def tests() -> None:
        from prisma.models import User

        def test_field_map() -> None:
            user = User(id='1')
            assert user.id == '1'

    testdir.make_from_function(tests)
    testdir.runpytest().assert_outcomes(passed=1)

Which is using an internal utility which is just a thin wrapper around pytester's makefile() and runpytest() methods.
I haven't looked into minimally reproducing this yet.
Note that this is also avoidable by just disabling inline-snapshot for the pytester tests, e.g.
pytester.runpytest('-p no:inline_snapshot', *args, **kwargs)

Never mind, it appears to break on windows full stop with the same traceback.

Thank you for using inline-snapshot and for this report.
I will look into the windows issue and add ci tests if possible.

Thank you! The dynamic snapshots feature is incredible! I haven't seen an inline snapshot implementation that's as flexible before.

Hmm just saw that your PR running windows CI   passes tests, maybe it's the combination of plugins I'm using? Or tests in nested directories? I'll try and narrow it down.

I think the problem is that it tries to encode the file with cp1252 (the default encoding on your system).
I should maybe just use utf-8 to open all files.
I don't think that it is a problem on your side.

I think your hypothesis is correct! Tests pass after making this change: https://github.com/15r10nk/inline-snapshot/commit/b943d29b3be7f523bdeafc6513b62f987f90e3c9

I saw that you use syrupy for snapshots in external files. I'm curious why you don't use outsource to save the snapshots to external files with inline-snapshot?
I only ask because I would like to know a bit more about how people use inline-snapshot.

I was not aware of outsource()! I missed it when skimming the readme. I might suggest adding a separate code sample specifically for outsource.
Unfortunately I don't think I'd be able to use it without having more control over the snapshot file name. The main thing I use syrupy for is for snapshots for generated code where the file name it was generated to is very important context.
The snapshots also change very frequently which means the file name would also change frequently which I think wouldn't be a great experience as it'll likely make git diffs & looking through history more challenging.
So an API that allows you to specify the file name, or a pytest option that changes the default behaviour to use the test name would be ideal for me.
assert outsource(codegen, file=Path(__file__).parent.joinpath('__snapshots__/client.py')) == snapshot()

0.6.1 should fix your issue.
Thank you for your feedback.
The problem with filenames was that they can not be used in every way snapshots can be used.
example:

global_snapshot=snapshot(external("test_something<the problem>.txt"))

def test_something1():
    ...
    assert outsource("text",file="test_something1.txt") == global_snapshot

def test_something2():
    ...
    assert outsource("text",file="test_something2.txt") == global_snapshot

hashes are the only thing which can be used in any situation, where snapshots are used.
But I understand you. I will think about it and provide maybe a way where you can specify the location of the file, or even better generate a location based on the test name and some index which gets incremented.

def test_something():
    assert outsource("text1", naming="local_file") == snapshot(external("./__snapshots__/test_something_0.txt"))
    assert outsource("text2", naming="local_file") == snapshot(external("./__snapshots__/test_something_1.txt"))

But this brings all sorts of other problems:

you have to rename the snapshots if you rename the test / python file
snapshots "move" if you remove one, because the index changes
this can not be combined with every way snapshots can be used (example from above)

I will think about it some time.
I develop this library without much feedback from my users (this is my second issue). I don't know, maybe it is because inline-snapshot is easy to use / maybe I have less users than I think.
I don't know. Thank you for your feedback, it is really valuable for me.

Amazing thanks for the quick fix! Confirmed that everything works with 0.6.1

you have to rename the snapshots if you rename the test / python file

For what it's worth I think this is a fine tradeoff. I don't think I ever move tests very much in the first place.

snapshots "move" if you remove one, because the index changes

What if, instead of relying on an index if the same name is used multiple times, you explicitly disallow that in the first place? So if a user wants to use the same name, they'll just have to use an index themselves.

Sorry for letting you waiting so long.
I have some plans for inline-snapshot which might not play well with the proposed changes to outsource. The key idea of inline-snapshot is that you can see in the source code when your values changed. This works currently also for the outsourced data with hashed names.
My next idea is an browser based snapshot approval-ui #48. Changing how outsource works now will make the implementation more difficult.
I will keep your wishes in mind. Maybe I will find a way to make it happen later / maybe there is no reason for it any more.
I will close this issue now because the original bug is fixed.


Explicitly list the exported symbols

Due to the lack of an explicit list of exported symbols in the __all__ variable, a strict mode of mypy and possibly other type checkers emit errors about implicit exports:
error: Module "sacrebleu" does not explicitly export attribute "CHRF"  [attr-defined]

This pull request addresses this problem by exporting all the symbols imported in the top-level __init__.py.

Could you run the check-build workflow for this PR? I have not modified the check scripts, but did not run the action in my fork repository because I committed the code before I noticed that I had to approve the workflows.

The check-build is OK.
@ozancaglayan and @mjpost: let us know if you have some comments, otherwise I will merge this PR tomorrow. I was not sure if some of the symbols are not internal or legacy, so that their usage should be deprecated (and after the deprecation period, we should remove them from this __init__.py). However, this question is orthogonal to this PR and I agree code using sacrebleu should not result in any mypy --strict errors caused by SacreBLEU.
@dustalov: Please delete also the # noqa: F401 comments. They won't be needed once all the symbols are explicitly exported (and thus used) in __all__.
@dustalov: Do you plan to run mypy also on sacrebleu (or only on your libraries which use sacrebleu)? If yes, we should perhaps also prevent another mypy error (of the same type) by replacing:
from .metrics import BLEU, CHRF, TER

with
from .metrics.bleu import BLEU
from .metrics.chrf import CHRF
from .metrics.ter import TER

Am I right?

Thank you very much for merging this! Sorry for not responding quicker, my company runs an onsite gathering this week, which reduced my screen time dramatically.
I can submit the removal of # noqa: F401 comments in a separate PR, and I used mypy to check types of my code that uses SacreBLEU. My version passes the check well, but I have not tried it for the entire codebase. I think it should be a part of the CI process.

I understand, my time for SacreBLEU is also very limited. We could have another PR that would fix some/all of the errors/warnings in SacreBLEU reported by flake8 and mypy. In the end I've decided that such PR is not related to this PR, so I should not wait with merging.


Failed to retrieve icon for 3D Content Central

This one is weird. I can see an favicon for it at https://www.3dcontentcentral.com/favicon.ico but YAFD didn't detect it. I had to download it manually into KeePass.

Maybe related to #45?
HTTP/2 only?

Maybe related to #45?
HTTP/2 only?

Indeed, it may be the same issue. Trying the request with curl using HTTP/1.1 and although it negotiates the TLS connection, it just stalls and eventually times out. :-\

Indeed, it may be the same issue. Trying the request with curl using HTTP/1.1 and although it negotiates the TLS connection, it just stalls and eventually times out. :-\

It can be downloaded now using a custom provider.
Release v<IP_ADDRESS>.


How can i subscribe a shared mailbox to get the new email?

Hi,
Could you provide an example how to use subscribe operation to follow and get new email from shared mailbox?

I'm working on something for my own project now, but I suggest you start with this and see what you come up with:

https://msdn.microsoft.com/en-us/library/office/dn458791(v=exchg.150).aspx
https://msdn.microsoft.com/en-us/library/office/dn458792(v=exchg.150).aspx


Release to master

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-create-gooddata-react-app-unit-tests-zuul-docker-el7/425/ : SUCCESS in 41s
https://checklist.intgdc.com/job/compliance/job/gooddata-create-gooddata-react-app-oss-check/328/ : SUCCESS in 6s

Build succeeded (gate pipeline).

https://checklist.intgdc.com/job/compliance/job/gooddata-create-gooddata-react-app-merge-compliance-check/175/ : SUCCESS in 27s
https://checklist.intgdc.com/job/client-libs/job/gooddata-create-gooddata-react-app-unit-tests-zuul-docker-el7/426/ : SUCCESS in 29s
https://checklist.intgdc.com/job/compliance/job/gooddata-create-gooddata-react-app-fossa-scanning-zuul-el7/140/ : FAILURE in 1m 21s (non-voting)


Album Privacy

The imgur API allows you to set an album's privacy to one of public/hidden/secret - it would be neat if I could specify this on the command line.

The idea of this tool is that you upload images and get a link to share them. I think defining the privacy at the CLI would be quite uncommon.
You can either set the default privacy level on your account settings or change it via the website after uploading.
Unless more people vote for this feature, I'm probably not going to add it, sorry.

The reason it'd be handy on the CLI is that I can bind different keyboard shortcuts to "take a findable screenshot" and "take a screenshot that can only be viewed if you know the link". This is doubly handy if you don't have an imgur account.
No worries if you think this is out of scope, however.