Copy Tooltip from nns-dapp

Motivation
NNS dapp has a tooltip component with somewhat broken behavior.
Before fixing it, I thought it would be useful to have a showcase in gix-components to easily play around with it while changing it.
And it seemed like the kind of component that would be useful to have in gix-components anyway.
So before fixing the tooltip component, I'm copying it unchanged from nns-dapp to gix-components.
Once this component is fixed, we can switch nns-dapp over to this tooltip component.
Changes

Copied Tooltip.svelte, Tooltip.spec.ts and TooltipTest.svelte from the nns-dapp repo unchanged.
Added a page with showcase for the component.

Screenshots

It would be good to add an e2e test, which are easy to add here.

Done

We could also have a screenshot once we fix the issue, right?

What do you mean? Did you not see the screenshot?

We could also have a screenshot once we fix the issue, right?

What do you mean? Did you not see the screenshot?

Sorry, I meant a screenshot testing of the issue once it's fixed.

Actually, the e2e test I added observes the issue.
The screenshot when taken on Mac looks like the screenshot in the PR description.
But on Linux it somehow doesn't trigger.
My guess is that the button is right in the center and through some kind of rounding error is considered to be left of center on Linux and right of center on Mac or something.
But once it's fixed, the issue of course won't be visible in the screenshot because then the issue doesn't exist anymore.
So I'm still not sure what kind of screenshot you expect after fixing the isuse.

Actually, the e2e test I added observes the issue. The screenshot when taken on Mac looks like the screenshot in the PR description. But on Linux it somehow doesn't trigger. My guess is that the button is right in the center and through some kind of rounding error is considered to be left of center on Linux and right of center on Mac or something.
But once it's fixed, the issue of course won't be visible in the screenshot because then the issue doesn't exist anymore. So I'm still not sure what kind of screenshot you expect after fixing the isuse.

I would expect a working screenshot that in case we break it again we find it early.

Oh, I see. I don't think that's what screenshots are for. And also it's more likely that some cases we didn't think of are still/already broken rather than that some obvious case break. And it would be too many screenshots to cover even a decent fraction of cases.
The right way forward is to factor the logic outside of the component and have lots of unit tests with numbers.

If we can make it as unit tests better, yes.


LSTM MKLDNN integration for ONNX LSTM op

Add graph pass to rewrite onnx lstmcell  to lstm cpu op
Gate reordering of ONNX LSTM cell IOFC -> IFCO
insert reshapes to keep the weights in ldigo format
test case for onnx LstmCell to CPU Lstm

Before

After

(nGraph) [pthoreho@nervana-skx21 build_shared]$ ./test/unit-test --gtest_filter="cpu_fusion.lstm_cell"
Note: Google Test filter = cpu_fusion.lstm_cell
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from cpu_fusion
[ RUN      ] cpu_fusion.lstm_cell
mkldnn_verbose,info,Intel(R) MKL-DNN v0.20.0 (Git Hash aef88b7c233f48f8b945da310f1b973da31ad033),Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) with AVX512BW, AVX512VL, and AVX512DQ extensions
mkldnn_verbose,exec,concat,simple:any,undef,in:f32_nc out:f32_nc,num:2,6x4,145.901
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_blocked out:f32_nc,num:1,4x16,0.000976562
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_blocked out:f32_nc,num:1,4x16,0.000976562
mkldnn_verbose,exec,reorder,simple:any,undef,in:f32_x out:f32_x,num:1,16,0.850098
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_x out:f32_x,num:1,16,0.000976562
mkldnn_verbose,exec,rnn,ref:any,forward_training,fdata:tnc-ldsnc-tnc-ldsnc fwei:ldigo-ldigo-ldgo ddata:f32f32-f32f32 dwei:f32f32f32,alg:vanilla_lstm_unidirectional_left2right,l1t1mb3sic4slc4dic4dlc4,248.947
[       OK ] cpu_fusion.lstm_cell (1784 ms)
[----------] 1 test from cpu_fusion (1784 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1784 ms total)
[  PASSED  ] 1 test.
14:55:39.613832: [MAIN] Tests finished: Time: 1788 ms Exit code: 0
(nGraph) [pthoreho@nervana-skx21 build_shared]$ ./test/unit-test --gtest_filter="CPU.lstm_cell_no_bias_no_peepholes"
Note: Google Test filter = CPU.lstm_cell_no_bias_no_peepholes
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from CPU
[ RUN      ] CPU.lstm_cell_no_bias_no_peepholes
mkldnn_verbose,info,Intel(R) MKL-DNN v0.20.0 (Git Hash aef88b7c233f48f8b945da310f1b973da31ad033),Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) with AVX512BW, AVX512VL, and AVX512DQ extensions
mkldnn_verbose,exec,concat,simple:any,undef,in:f32_nc out:f32_nc,num:2,4x3,91.103
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_blocked out:f32_nc,num:1,3x12,0.00292969
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_blocked out:f32_nc,num:1,3x12,0.000976562
mkldnn_verbose,exec,reorder,simple:any,undef,in:f32_x out:f32_x,num:1,12,0.473877
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_x out:f32_x,num:1,12,0.000976562
mkldnn_verbose,exec,rnn,ref:any,forward_training,fdata:tnc-ldsnc-tnc-ldsnc fwei:ldigo-ldigo-ldgo ddata:f32f32-f32f32 dwei:f32f32f32,alg:vanilla_lstm_unidirectional_left2right,l1t1mb2sic3slc3dic3dlc3,228.213
mkldnn_verbose,exec,concat,simple:any,undef,in:f32_nc out:f32_nc,num:2,4x3,29.0818
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_blocked out:f32_nc,num:1,3x12,0.0012207
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_blocked out:f32_nc,num:1,3x12,0
mkldnn_verbose,exec,reorder,simple:any,undef,in:f32_x out:f32_x,num:1,12,0.234863
mkldnn_verbose,exec,reorder,jit:uni,undef,in:f32_x out:f32_x,num:1,12,0.000976562
mkldnn_verbose,exec,rnn,ref:any,forward_training,fdata:tnc-ldsnc-tnc-ldsnc fwei:ldigo-ldigo-ldgo ddata:f32f32-f32f32 dwei:f32f32f32,alg:vanilla_lstm_unidirectional_left2right,l1t1mb2sic3slc3dic3dlc3,1.75513
[       OK ] CPU.lstm_cell_no_bias_no_peepholes (2830 ms)
[----------] 1 test from CPU (2830 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (2830 ms total)
[  PASSED  ] 1 test.
14:59:33.82681: [MAIN] Tests finished: Time: 2834 ms Exit code: 0

@nmostafa @gaurides @ayzhuang can u guys review it?

@gaurides @ayzhuang can u approve , if it looks good. I have addressed the PR comments

@ayzhuang I thought I will add it once your PR is merged. Hopefully with the MKLDNN V1, we can directly integrate instead of going through graph pass. Let me know

@ayzhuang I thought I will add it once your PR is merged. Hopefully with the MKLDNN V1, we can directly integrate instead of going through graph pass. Let me know

We need to support both MKLDNN versions for couple months. If this fusion is only for v0.20, you can put #if MKLDNN_VERSION_MAJOR < 1 around this fusion. Both PRs will merge this week, without #if, we cannot build with v1.0.

@ayzhuang this time charm? :)


Site having incredibly slow download speeds

When downloading any jar from the official site the downloads speeds are low as 60kb/s which is not normal.
I have checked whether this is my issue but my internet is running normally and downloading from other sites is downloading at fast speeds.
However this doesn't seem like worldwide issue since servers can download the jar with normal speeds but as I have checked if it could be my issue but I didn't find any, so I have no idea.

There is nothing we can do, all downloads are handled by cloudflare, so you have connections issues to cloudflare. Check with your ISP or something

I don't really think this is problem with ISP

Seems to be problem with my browser now clue why but on other one it's downloading normally.


Rename Microsoft.AspNet.Hosting.json

Personally, I vote for hosting.json :+1:

@PinpointTownes @davidfowl

hosting.json

Much better imo

:+1:  hosting.json

hosting.json :+1:
Seems consistent with project.json, config.json, packages.json, etc.

:+1:

@BrennanConroy


Make the caches smaller or limit cache based on actual data size

Syncing a DAG with large headers clearly leads to memory increase and to OOM

Fixed with #351


Add table aws_vpc_eni

References
https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-interfaces.html
Hello. I'd like to get ENIs for managing security groups with ENIs based.
Thanks.
Best regards.

Hello @cjsrkd3321, Thanks for raising this request.
We appreciate all your contributions and feedback 👍 . We will look to get this table out soon.

Hi @cjsrkd3321 , ENIs are already available in the aws_ec2_network_interface table. There is an example of working with ENI + security group data in https://hub.steampipe.io/plugins/turbot/aws/tables/aws_ec2_network_interface. If you have any other questions, please let us know here or in Slack!

OMG! I couldn't find that. thanks for your commend!! 😀


Cellprofiler ExportedSpreadsheet cdv files empty

I set up a pipeline to analyze worm images. I wanted to export the image intensity data to a spreadsheet, so I chose to export them as csv files. However, when I open the csv files, they're empty. No data of std intensity, integrated intensity, etc. However, when I was running the pipelines, those measurements were did show up. I have attached my pipeline and also the exported spreadsheets. I hope somebody can help me out.
MyExpt_Experiment.csv

Hi @khans359,
This repo is for workflows and scripts for running a CellProfiler pipeline on Google Cloud hardware (Terra.bio). We are not supporting de design of CellProfiler profiler. There is is a great place for you to ask this questions: [https://forum.image.sc/tags/c/image-analysis/6/cellprofiler]
I hope you find the help you need.


Set optional fields

Description
Add optional fields to the documentation.

Coverage remained the same at 94.291% when pulling 5cb63b71509d51d7498419c24596161e80d13d3f on doc-optional-fields into 78bf38e9a84f7e8e0c1039cad01e0eea2a7d57c8 on main.


Admin UI header

One suggestion I have for improving the state of our CSS code base is that we store color hex-values in variables. Doing so would make our code more readable and maintainable.  I'm not insisting that it happen for this PR, but perhaps we should create a technical debt ticket for our backlog?

That's a good idea to keep in mind for the future, although I don't think all browsers (IE, Edge and some slightly old versions of Firefox http://caniuse.com/#feat=css-variables ) support it yet, so I think we may have to hold off for the moment.


:bug: ensure Signed-Releases only scores 5 releases

What kind of change does this PR introduce?
bug fix

[X] PR title follows the guidelines defined in our pull request documentation

What is the current behavior?
the releasesHaveProvenance was creating too many findings for repos which had more than 5 releases with provenance, which violated an assumption of the Signed-Releases evaluation code
What is the new behavior (if this is a feature change)?**
the releasesHaveProvenance probe only generates 5 releases, and a consistency check was added to the evaluation code

[X] Tests for the changes have been added (for bug fixes/features)

Which issue(s) this PR fixes
Fixes #3766

Special notes for your reviewer
Does this PR introduce a user-facing change?
For user-facing changes, please add a concise, human-readable release note to
the release-note
(In particular, describe what changes users might need to make in their
application as a result of this pull request.)

Fixed a bug which allowed some repos to score higher than 10 in the Signed-Releases check.

/scdiff generate Signed-Releases


Rename "epochIndex" to "epochNumber"

@aahna-ashina  This is not closed?

@metadimensions Not yet 😅

Okay let me know if there is any changes to be made


postman: fix icon not found

Motivation for this change
Postman doesn't build because the icon is no longer present at the old url
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

Does this need a backport?

I just checked the 18.03 branch and it has an older version of postman (5.5.2 vs 5.5.3) that doesn't have this issue. It actually handles the icon better than the current version (extracts it from the package instead of downloading it).

Now I dislike this fix :D
I was planning on sending a pull request to update postman to 6.1.4 sometime soon so when I do I'll use the icon from the package instead of downloading it separately and then the version in master will be less fragile.


Style consumer index

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#152  👈
#150
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @thisisgoldman and the rest of your teammates on  Graphite

Merge activity

Aug 26, 8:19 PM EDT: @thisisgoldman started a stack merge that includes this pull request via Graphite.


qiskit.transpiler needs function & class examples

What is the expected enhancement?

While there's always more documentation that could be written, after #4134 this documentation has rather more content than it did when the issue was created.
If somebody were to extend this, good things to add would be:

tweak the introduction to actually talk about qiskit.transpile and include a cross reference to it
update the current text which is out-of-date (the part about layout passes, for one)
talk about how to create a custom pass manager with the current set-up (#6403 notwithstanding)
more prominently link to the list of passes qiskit.transpiler.passes

Hey I am looking for a good first issue to work on. Is this still needed? If so can I be assigned to it?


Request to remove Guggenberger Airport in Sartell, MN that no longer exists

How to reproduce

Leaflet version I'm using: 1.2
Browser (with version) I'm using: Chrome Version 60.0.3112.113
OS/Platform (with version) I'm using: Mac OSX
Zoom to Sartell, Minnesota (northwest of St. Cloud, MN)
See Guggenberger Airport included in the map

What behaviour I'm expecting and which behaviour I'm seeing
Guggenberger Airport no longer exists and should not be included on the map.
Leaflet displays Guggenberger Airport in Sartell, Minnesota. We request that it be removed for accuracy.
Minimal example reproducing the issue
See attached screenshot

[ X ] this example is as simple as possible
[ X ] this example does not rely on any third party code

Using http://playground-leaflet.rhcloud.com/ or any other jsfiddle-like site.

Leaflet is just a tool to display maps on a browser, it has no idea about the map nor the data behind the map.
In this case, it seems this is a map build on top of openstreetmap, which is editable by anyone, even by you: http://www.openstreetmap.org/about, so you can fix the issue yourself, great! :)


Star in tab does not get removed on save of tab

For me this happens when I'm trying to save a tab that previously had saved text, but now the text field is empty. Is there any other scenario where you encountered this?

Please test 1825df7, it seems to work in every scenario that I've tested now. It did not only happen when there is empty text but also if the text is the same as the previous text.

For me this happens when I'm trying to save a tab that previously had saved text, but now the text field is empty. Is there any other scenario where you encountered this?

This also happened to me whenever I added text, and removed exactly that text and then try to save it: the modal that says the tab has been saved pops up, but the star remains. The modal also keeps popping up in the same fashion as our saved modal initially did.

Please test 1825df7, it seems to work in every scenario that I've tested now. It did not only happen when there is empty text but also if the text is the same as the previous text.

It still does not seem to work for me. The star persists, and if I try to save an empty tab, the modal does not pop up at all.

Please test 1825df7, it seems to work in every scenario that I've tested now. It did not only happen when there is empty text but also if the text is the same as the previous text.

It still does not seem to work for me. The star persists, and if I try to save an empty tab, the modal does not pop up at all.
Edit - It might be just on my browser? Some of the bugs that we seemed to have only really happened on my browser, it would be great if either @bornobob or @huynguy97 could also test this fix.

Did you have syntax highlighting disabled? I see that syntax highlighting makes it so that isSaved is updated more frequently. Will post a new commit for you to try

Please test 4cc52c7 and make a gif if the issue persists.

For me this happens when I'm trying to save a tab that previously had saved text, but now the text field is empty. Is there any other scenario where you encountered this?

This also happened to me whenever I added text, and removed exactly that text and then try to save it: the modal that says the tab has been saved pops up, but the star remains. The modal also keeps popping up in the same fashion as our saved modal initially did.

However, this is really weird as this should never happen. The function that calls the modal also calls the setTitle function, can you test it in a private window? It might be that something is messing up in your cache

When I load a file, save it, reload the page and then delete the contents of the tab and then try to save it indeed still doesn't work. Will debug this

It still does not seem to work for me. The star persists, and if I try to save an empty tab, the modal does not pop up at all.
Edit - It might be just on my browser? Some of the bugs that we seemed to have only really happened on my browser, it would be great if either @bornobob or @huynguy97 could also test this fix.

Did you have syntax highlighting disabled? I see that syntax highlighting makes it so that isSaved is updated more frequently (we need to remove this code). Will post a new commit for you to try. New empty tabs are automatically saved btw, you can only save when there is a * in the title.

This also happened to me whenever I added text, and removed exactly that text and then try to save it: the modal that says the tab has been saved pops up, but the star remains. The modal also keeps popping up in the same fashion as our saved modal initially did.

However, this is really weird as this should never happen. The function that calls the modal also calls the setTitle function (and the conditions of that should be satisfied to remove the star), can you test it in a private window? It might be that something is messing up in your cache
Anyways, test 4cc52c7 in a clean browser

It's super nice! This works in a clean browser indeed. I'm going to clear out the cache of my browser, but I've verified that it works.

When I load a file, save it, reload the page and then delete the contents of the tab and then try to save it indeed still doesn't work. Will debug this.
Another commit... 454e9a6, fixes this issue for me.

This also works for me! With that, I think all the bugs have been resolved as far as my manual testing has shown. I think we can close the issue for now. Good work!


Add partial conversion functions for converting between types

Especially useful for numeric types:
integerToNatural :: Integer -> Maybe Natural
integerToInt     :: Integer -> Maybe Int
intToWord        :: Int -> Maybe Word
wordToInt        :: Word -> Maybe Int

Maybe there could be some abstraction for such kind of things that can looks like this:
class PartialProjection small big where
    widen   :: small -> big
    shorten :: big -> Maybe small

Or even generalise this construction to be able to have Maybe or not have it in both directions.
Looks like Prism but dunno. To be discussed.

I like the idea of the type class personally, seems like a useful abstraction to have, though I'm not sure if we want to extend it beyond just numeric types.
Something like:
class Embeded small big where
    expand :: small -> big
    contract :: big -> Maybe small

conveys the idea of the numeric types we want to abstract over, without generalising too far.
I think this does generalise to some kind of prism more generally, but I think there's a use case for a less general abstraction, since this is indeed quite useful.

@cronokirby Yes, this idea is worth exploring 👍 Maybe it call it Expandable or something like that. I'm okay giving it a try as one of the Relude.Extra.* modules. The most difficult part here is naming. Name expand appears too often. Maybe can think of something better 🤔
Also, in general it's usually better to have type with Either to tell the reason of failure, so the following is better:
contract :: big -> Either String small

And it's quite trivial to write optionalContract :: big -> Maybe small.
Rather than numeric hierarchy I see the following instance that might be useful:
instance Expandable (Maybe a)    (Either e a)  -- this is `rightToMaybe` from `relude`
instance Expandable (NonEmpty a) [a]

And the law is:
contract . expand ≡ pure

If we're interested in having only numeric things then in most cases it's enough to have the following function implemented by @jiegillet in https://github.com/kowainik/tomland/pull/120
integerToBounded :: forall a. (Integral a, Bounded a) => Integer -> Maybe a

Btw, I just noticed that similar function is already in base:

https://hackage.haskell.org/package/base-<IP_ADDRESS>/docs/Data-Bits.html#v:toIntegralSized

Though, it doesn't work with Integer -> Maybe Natural... 😞
Another interesting idea similar to such abstraction is already implemented for injections by @int-index in his inj and inj-base packages. The code is very interesting by itself:

http://hackage.haskell.org/package/inj-base-<IP_ADDRESS>/docs/Inj-Base.html

I'm not a big fan of having String as an error type, but an Embeded or some other similar typeclass to generalise this idea could be interesting to explore.
I think that for now we could add integerToBounded to relude, although I'm not sure where the best fit would be, but I do think it warrants addition because it seems consistently useful enough.

Yeah, I also don't know where to put integerToBounded... It could be Relude.Extra.Enum if only it was called Relude.Extra.BoundedEnum. Or if we had Relude.Numeric (probably a good idea, should be discussed under separate issue).
Obviously, String is not a good type for error message. But it's hard to have open sum type with ability for users to add more constructors. We can only have newtype ExpandableError = ExpandableError Text and it's better than String, but still...

Partial numeric functions are implemented in #128.
There's witherable for partial mappings but see #113.
I think experiments like Expandable are too new and should be explored in separate packages first before adding to custom prelude. So I think that this issue can be closed.

So it seems to me like the fundamental underlying concept is "there is a natural way to convert from a to b", where these conversions are sometimes partial, sometimes injective and sometimes surjective. From this the most fine grained hierarchy we can build is the following:
class PCast a b where
    pCast :: a -> Maybe b

class PCast a b => PSurj a b where
     pSurj :: a -> Maybe b

class (PCast a b, PInj b a) => PInj a b where
    pInj :: a -> Maybe b

class (PSurj a b, PInj a b, Inj b a) => PBij a b where
    pBij :: a -> Maybe b

class PCast a b => Cast a b where
    cast :: a -> b

class (PSurj a b, Cast a b) => Surj a b where
    surj :: a -> b

class (PInj a b, Cast a b, PBij b a) => Inj a b where
    inj :: a -> b

class (Surj a b, Inj a b, Bij b a) => Bij a b where
    bij :: a -> b

Quick note that PSurj and PBij don't quite correspond to the mathematical definition of a partial surjection/bijection, as we are referring to the entire output type as opposed to just the image of the function. For example mathematically f :: Bool -> Bool, f False = False is a partial bijection, but above I consider it to be a partial injection and not surjective.
The laws for this hierarchy should be fairly clear from context, namely that superclass functions in the same direction should return the same thing as the original function (modulo adding a Just), and that superclass functions in the opposite directions should totally invert the original function.
This hierarchy may seem overkill but it's worth noting there are practical examples of pairs of types for every above class that match that class and its superclasses (by definition) but none of its subclasses:
PCast String Regex
PSurj String Int
PInj Int Nat
PBij Integer Int
Cast String Parser
Surj UTCTime Day
Inj Int Integer
Bij Int Int

The String Regex one is a bit cheeky as it's assuming the Regex type internally uses functions and thus can't be deeply inspected, and also assumes that some combinators exist for the Regex that can't be expressed in string form. But if you drop PCast the hierarchy gets fractured, so once you commit to the rest you kind of have to keep it.
I do not currently see a library that implements anything similar to the above, so I honestly might implement such a library as sometimes I know there is a single intuitive way to go from A to B and want GHC to do the work for me. The inj library looks interesting although the extensive non-Maybe partiality more or less turns me away from it.


"#" character escaping in the gitflow template doesn't seem to work

In this template file:
https://github.com/rfennell/AzurePipelines/blob/main/SampleTemplates/XplatGenerateReleaseNotes (Node based)/Version 3 (and later)/gitflow-template.hbs
The commits section:
{{#forEach commits}}
{{truncate id 5}} by {{author.displayName}} {{#if (gt changes.length 0)}}({{inflect changes.length "file" "files" true}} changed) {{/if}}-  {{replace message '#' '# '}}
{{/forEach}}
This seems to have a replace method that should escape # symbols, but this doesn't seem to be happening. Do I need to explicitly add the handlebars-helpers extension to the task somewhere? I've tried to modify the replace statement but I have one specific ticket that used markdown that breaks the formatting of the release notes.

Have a PR/commit that contains "####" in the commit message
Generate release notes
View release notes to see that the TOC is broken due to picking up the # # # #.

You should not need any special declaration for the replace function as it is including automatically as part of the https://github.com/helpers/handlebars-helpers?tab=readme-ov-file#replace.
You can of course write your own as detailed here but you should not need to


Can't use on Kicad 8

It seems not working with Kicad 8, I can't place any text, can someone test it? Thanks

@gregdavill I think it's time for a new release now that v8 is stable. But first #99 needs to be fixed or reverted. I sense a lot more people coming here in the following days complaining about the plugin not working in v8 😅

@gregdavill I think it's time for a new release now that v8 is stable. But first #99 needs to be fixed or reverted. I sense a lot more people coming here in the following days complaining about the plugin not working in v8 😅

Agree ! As I just installed and first I wanted to try was this tool via PCM and came to know that it's not working so for now I have reverted my KiCad version.

While Greg finds time and makes the decision, I pushed a v8 branch with the breaking commit reverted so anyone in need can clone or download it and manually replace the plugin and have it work in v8.

@arturo182, I tried your branch under Windows 11 and was unable to get it to function.  There is a good possibility I did something wrong, but I did try to follow your directions.  This was the result:

I tried creating a KiBuzzard label, nothing appeared.  So I tried the usual [ctrl]+V, and nothing.  Tried "Paste", nothing.
KiBuzzard Labels from my saved KiCad v7 project edited using KiCad v8 can be selected, modified, but not saved to the .kicad_pcb file.
Since other help requests are prompted to include the kibuzzard.log file, I'm attaching mine.
kibuzzard.log
This file may be a mashup of KiCad v7 KiBuzzard logging and any logging done by your KiBuzzard modifications.  Hope it helps.
This reporting is just to say KiBuzzard and workarounds aren't working with my Windows 11/KiCad v8rc3 installation.
No rush, I'll keep using KiCad v7 for now, which I'd planned to do anyway until v8 issues settle down.
Application: KiCad x64 on x64

Version: 8.0.0-rc3, release build

Libraries:
	wxWidgets 3.2.4
	FreeType 2.12.1
	HarfBuzz 8.3.0
	FontConfig 2.14.2
	libcurl/8.5.0-DEV Schannel zlib/1.3

Platform: Windows 11 (build 22631), 64-bit edition, 64 bit, Little endian, wxMSW

Build Info:
	Date: Feb 16 2024 16:09:39
	wxWidgets: 3.2.4 (wchar_t,wx containers)
	Boost: 1.83.0
	OCC: 7.7.1
	Curl: 8.5.0-DEV
	ngspice: 42
	Compiler: Visual C++ 1936 without C++ ABI

Build settings:

@craigarno Your last lines in the log file have the following error:
02-26 16:26:47 com_github_gregdavill_KiBuzzard.plugin 107:Version check failed "8.0.0-rc3" not in version list

I think when you unzipped the KiBuzzard-8 zip it put all the files into a folder kibuzzard-8 instead of overwriting the old files with updated versions.

Thank you very much, 8 works.

@gregdavill I think we're ready for a release 🫡

I installed this on the release version of Kicad 8 through the package manager -I have the same issue.
03-04 22:22:38 svg2mod 1301:Font "BerkeleyMono-Bold" does not natively support style "Regular" using "Path" instead
03-04 22:22:38 svg2mod 1301:Font "BerkeleyMono-Bold" does not natively support style "Regular" using "Path" instead
03-04 22:22:38 svg2mod-unfiltered 262:Found SVG layer: F.SilkS
03-04 22:22:38 svg2mod-unfiltered 262:Found SVG layer: F.SilkS
03-04 22:22:38 svg2mod 263:  Detailed names: [F.SilkS]
03-04 22:22:38 svg2mod 263:  Detailed names: [F.SilkS]
03-04 22:22:38 svg2mod 304:  Inlining 6 segments...
03-04 22:22:38 svg2mod 304:  Inlining 6 segments...
03-04 22:22:38 svg2mod 339:  Writing Text with 90 points
03-04 22:22:38 svg2mod 339:  Writing Text with 90 points
03-04 22:22:39 com_github_gregdavill_KiBuzzard.plugin 57:Running KiBuzzard
03-04 22:22:39 com_github_gregdavill_KiBuzzard.plugin 57:Running KiBuzzard
03-04 22:22:39 com_github_gregdavill_KiBuzzard.plugin 107:Version check failed "8.0.0" not in version list
03-04 22:22:39 com_github_gregdavill_KiBuzzard.plugin 107:Version check failed "8.0.0" not in version list
03-04 22:22:39 com_github_gregdavill_KiBuzzard.plugin 148:Version check failed "8.0.0" not in version list
03-04 22:22:39 com_github_gregdavill_KiBuzzard.plugin 148:Version check failed "8.0.0" not in version list
I'm unsure how I'm supposed to work around it? are there any instructions on how to fix it.
Thanks.

Read the comments above

Sorry - I assumed that the package manager had an updated version that worked.
I've followed the howto above and it's working now,

Hello everyone, I have "installed" the pre-release version 1.6.0 according to arturo182's description. Nevertheless, there seems to be a problem. The last line in the log says there is no window open :( but the cache contains the generated label. So that you can at least display the generated label by inserting it.
...
03-07 13:00:49 com_github_gregdavill_KiBuzzard.plugin 71:Loading label onto clipboard
03-07 13:00:49 com_github_gregdavill_KiBuzzard.plugin 150:No pcbnew window found

Seems to be cropping up with KiCad 8.0.1 after working fine on 8.0.0.
03-22 02:09:52 com_github_gregdavill_KiBuzzard.plugin 148:Version check failed "8.0.1" not in version list

I'm not sure if this is still relevant but downloading the https://github.com/gregdavill/KiBuzzard/releases/tag/1.6.0. Removing the old KiBuzzard installation and reinstalling KiBuzzard with the downloaded file above via the KiCad package manager works.
I'm using KiCad 8.0.1 on Windows 11.

I'm not sure if this is still relevant but downloading the KiBuzzard-1.6.0-pcm.zip. Removing the old KiBuzzard installation and reinstalling KiBuzzard with the downloaded file above via the KiCad package manager works.

I tried this with my design using KiCad 8.0.2 and Windows 11.  A quick check (not exhaustive) suggests this KiBuzzard installation procedure worked for me.

Here not working, get the following log.
At least manual insert works (STRG+V) after generating Label.
Win10, KiCad Version: 8.0.2, release build, KiBuzzard 1.6.0 via Plugin-Manager
06-08 16:37:24 svg2mod 1301:Font "UbuntuMono-B" does not natively support style "Regular" using "Path" instead
06-08 16:37:25 svg2mod 1301:Font "UbuntuMono-B" does not natively support style "Regular" using "Path" instead
06-08 16:37:25 svg2mod 1301:Font "UbuntuMono-B" does not natively support style "Regular" using "Path" instead
06-08 16:37:25 svg2mod-unfiltered 262:Found SVG layer: F.SilkS
06-08 16:37:25 svg2mod 263:  Detailed names: [F.SilkS]
06-08 16:37:25 svg2mod 351:  Writing Text with 9 points
06-08 16:37:25 svg2mod 1301:Font "UbuntuMono-B" does not natively support style "Regular" using "Path" instead
06-08 16:37:25 svg2mod 1301:Font "UbuntuMono-B" does not natively support style "Regular" using "Path" instead
06-08 16:37:25 svg2mod-unfiltered 262:Found SVG layer: F.SilkS
06-08 16:37:25 svg2mod 263:  Detailed names: [F.SilkS]
06-08 16:37:25 svg2mod 339:  Writing Text with 9 points
06-08 16:37:25 svg2mod 339:  Writing Text with 28 points
06-08 16:37:25 svg2mod 304:  Inlining 1 segments...
06-08 16:37:25 svg2mod 339:  Writing Text with 47 points
06-08 16:37:25 svg2mod 339:  Writing Text with 43 points
06-08 16:37:27 com_github_gregdavill_KiBuzzard.plugin 57:Running KiBuzzard
06-08 16:37:27 svg2mod-unfiltered 262:Found SVG layer: F.SilkS
06-08 16:37:27 svg2mod 263:  Detailed names: [F.SilkS]
06-08 16:37:27 svg2mod 339:  Writing Text with 9 points
06-08 16:37:27 svg2mod 339:  Writing Text with 28 points
06-08 16:37:27 svg2mod 304:  Inlining 1 segments...
06-08 16:37:27 svg2mod 339:  Writing Text with 47 points
06-08 16:37:27 svg2mod 339:  Writing Text with 43 points
06-08 16:37:27 com_github_gregdavill_KiBuzzard.plugin 71:Loading label onto clipboard
06-08 16:37:27 com_github_gregdavill_KiBuzzard.plugin 150:No pcbnew window found

@MichaDit this might be fixed by #123


Reorganization of Patient Components

Description
This is a prerequisite for SARAALERT-1308.  This is a much needed patient file reorganization.  Moved all components (detailed below) that are used on the monitoree page into the patient folder.
Important Changes
I realize the diff is scary but it's really only filepath updates from moving files around.
The main changes are:

Created /household folder within /patient to house the household actions and HoH badge components (from /subject/monitoring_actions and /utils respectively.  This will later house the broken out components for SARAALERT-1308
Moved /subject/monitoring_actions into /patient
Moved /assessments folder within /patient and created a /actions folder within to house everything else in /subject that is displayed in the reporting section on the monitoree page (with the exception of DownloadMonitoree.js which is now in it's own /export folder in the /patient folder
Moved /close_contacts folder within /patient
Moved /laboratory folder within /patient
Moved respective test files to all the above components to have the same file structure within the tests folder
Some general test cleanup with the imports (added semi colons, alphabetized and standardized)

The remaining folders that need to be moved are:

/history: moved in @ashankland's PR for SARAALERT-832

Checklists
Submitter:

[x] This PR describes why these changes were made.
[x] This PR is into the correct branch.
[x] This PR includes the correct JIRA ticket reference.
[x] Code diff has been reviewed (it does not contain: additional white space, not applicable code changes, debug statements, etc.)
[ ] If UI changes have been made, Chrome Dev Tools Lighthouse accessibility test has been executed to ensure no 508 issues were introduced.
[ ] Tests are included and test edge cases
[x] Tests have been run locally and pass (remember to update Gemfile when applicable)
[ ] Test fixtures updated and documented as necessary

@holmesie  :

[ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[ ] The tests appropriately test the new code, including edge cases
[ ] You have tried to break the code
[ ] If applicable, you have tested changes against a large database, and considered possible performance regressions

@tstrass  :

[ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[ ] The tests appropriately test the new code, including edge cases
[ ] You have tried to break the code
[ ] If applicable, you have tested changes against a large database, and considered possible performance regressions

I think things are a little inconsistent between what is under the patient directory, and what is at the same level. I actually think we should move everything, except perhaps monitoring_actions, to the same level as patient. Otherwise we should move a lot more into patient (ex: vaccines is in patient, but close_contact and laboratory aren't). It's really one or the other IMO, just want to make a call on that.

Talked about this offline... moved /close_contact and /laboratory folders into /patient as a part of this PR to do everything together.  The only other outstanding folder that needs to be moved is /history, which is moved as a part of the 832 PR


Error 504 Ray ID: 594fdaa05b4d9736 • 2020-05-17 19:49:06 UTC Gateway time-out

Error 504 Ray ID: 594fdaa05b4d9736 • 2020-05-17 19:49:06 UTC Gateway time-out
maybe the experts can explain what makes a website like Arduino.cc getting errors gateway-Time-Out
too much requests at the same time?
DDOS-hacker-attack?
some misconfiguration of the server slowing the server down?

I am getting the same problem

Same here

I get the same error when trying to browse any page on "forum.arduino.cc". Ray ID is different though.
It shows my browser and Colombus Cloudflare are working, but it indicates that there is a host error.

Same here; had it yesterday evening once (approx 9 hours ago) and a refresh solved it.
Currently 3 attempts failed. Latest attempt:
Error 504 Ray ID: xxxxxxxxxxxxxxxx • 2020-05-18 03:47:55 UTC
Gateway time-out
You
Browser
Working
Johannesburg
Cloudflare
Working
forum.arduino.cc
Host
Error
What happened?
The web server reported a gateway time-out error.
What can I do?
Please try again in a few minutes.
Cloudflare Ray ID: xxxxxxxxxxxxxxxx • Your IP: aa.bbb.ccc.dd • Performance & security by Cloudflare

Seems OK now.

I can confirm this  website is working again.
Thanks


Documentation Edit and Add Debugging Techniques

This PR introduces the following changes

Update the Edit Command in the DG
Update Janssen's PPP
Update the Undo Command in the UG
Add assertions and logging to the code relevant to edit

DG and UG aligns with what the team has discussed. LGTM.


Private Properties/Methods

There is no way (that I can see) to show private API's. Though this is not generally necessary for using an element it often helps to understand what is happening in the background.
Origin page

We took the view here that internal implementation details shouldn't appear in the catalog.
We find, as devs, that when someone reaches a point where they want to know what's going on under the hood, they really want to go all-in, and will ultimately go digging through the source anyway.
Also, from a philosophical perspective, the published API really IS the interface; publishing anything private would violate encapsulation. One of the benefits of custom elements IS the encapsulation, so we wanted to respect that.
Having said that, we do have some ideas for improving the API documentation, such as grouping by behavior/mixin/inheritance (to show where the code is really coming from) and showing html attribute names with the properties (because confusion still exists around this for first time users).
I'm closing this for now, but we'll be very happy to revisit it if time proves us wrong.


QBittorent Windows Paths

When I have a path set likepath: "F:/TV Shows/{{ series_name }}/Season {{ series_season }}/", any accepted torrents are downloaded to that directory but all spaces are replaced with +'s like F:\TV+Shows\Brooklyn+Nine-Nine\Season+3

What is the actual issue that you are facing? Could you share logs / config?

@dsemi is it supposed to be savepath or save_path in qbittorrent.py? Looking at API here shows save_path.. https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-Documentation#download-torrent-from-url

My output configuration is
 exec:
      on_output:
        for_accepted:
          - echo %DATE% %TIME% found {{series_name}} {{series_id}} at {{url}} >> acceptedTorrents.txt
     qbittorrent:
      username: admin
      password: password
      host: <IP_ADDRESS>
      port: 8080
      path: "F:/TV Shows/{{ series_name }}/Season {{ series_season }}/"

And here is the relevant section of the log files:
2016-04-07 18:50 VERBOSE  task          TV_download     ACCEPTED: `Brooklyn Nine Nine S03E21 720p HDTV HEVC x265 RMTeam 720P HEVC` by series plugin because target quality
2016-04-07 18:50 INFO     urlrewriter   TV_download     Entry 'Brooklyn Nine Nine S03E21 720p HDTV HEVC x265 RMTeam 720P HEVC' URL rewritten to https://torcache.net/torrent/3B1A1469C180F447B77021074DBBCCAEF62611E5.torrent (with torrentz)
2016-04-07 18:50 INFO     urlrewriter   TV_download     Entry 'The Americans 2013 S04E04 720p HDTV HEVC x265 RMTeam 720P HEVC' URL rewritten to https://torcache.net/torrent/367AB1F057DD6056A28F717FEF73BFFD8A48B189.torrent (with torrentz)
2016-04-07 18:50 INFO     download      TV_download     Downloading: Brooklyn Nine Nine S03E21 720p HDTV HEVC x265 RMTeam 720P HEVC
2016-04-07 18:50 INFO     download      TV_download     Downloading: The Americans 2013 S04E04 720p HDTV HEVC x265 RMTeam 720P HEVC
2016-04-07 18:50 VERBOSE  details       TV_download     Summary - Accepted: 2 (Rejected: 1 Undecided: 21 Failed: 0)
2016-04-07 18:50 VERBOSE  exec          TV_download     Executing: echo %DATE% %TIME% found Brooklyn Nine-Nine S03E21 at https://torcache.net/torrent/3B1A1469C180F447B77021074DBBCCAEF62611E5.torrent >> acceptedTorrents.txt
2016-04-07 18:50 VERBOSE  exec          TV_download     Executing: echo %DATE% %TIME% found The Americans (2013) S04E04 at https://torcache.net/torrent/367AB1F057DD6056A28F717FEF73BFFD8A48B189.torrent >> acceptedTorrents.txt
2016-04-07 18:50 INFO     task          TV_download     Rerunning the task in case better resolution can be achieved.

The show "Brooklyn Nine-Nine" was then saved into F:\TV+Shows\Brooklyn+Nine-Nine\Season+3 and "The Americans" was saved into `F:\TV+Shows\The+Americans+\Season+4'
It sorta sounds like somewhere in the plugin it's converting spaces into the wrong symbol for transmission.

This could be a very ugly fix,  but could you try to define the path with %20 as spaces?

@qvazzler it's savepath
@Zephyrus29 The plugin isn't modifying the path any differently from other plugins, POST form data is encoded with '+' replacing spaces. It sounds like an issue on the qBittorrent side; they're probably not decoding the data correctly and assume no spaces in the path.

Try using %20 as a space and it just appears as that in the folder name.

I updated the qBittorent documentation. I think you have to rewrite the qbittorrent plugin, sorry for that.
https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-Documentation#download-torrent-from-url

Why is this multipart/form-data? It's not like massive file contents are being sent; it's some urls, a cookie, download location, and a label at most.
Anyway that's the issue, we send application/x-www-form-urlencoded data and qBittorrent expects each parameter to be in plain text.

@dsemi anything you can help us with?

Creating a pull request that should fix the issue.  Feel free to patch it and test yourself; it worked for me on a Linux machine using a path with spaces.

@Zephyrus29 if it's fixed, please close the issue.

Thanks a lot @dsemi!

No problem, happy to help.


Getting an EntitySetProxy

Hello,
I would like reference dynamically ODATA entities. As per the tutorial one way of getting how many records an entity_set has is:
service.entity_sets.entity_set_name.get_entities().count().execute()
I would like to pass the name of the entity set as a parameter and get the number of records in the given data set.  E.g.
service.schema.entity_set('entity_set_name')
However the above code returns and EntitySet which does not have the method get_entities().
Can you please explain what is the most appropriate method of getting an EntitySetProxy entity passing the name of the entity set as a parameter?
Many thanks in advance for your help,
Achilleas

Hi @avoutsas67
First, service.schema.entity_set is traversing the service $metadata, so it make sense to not have get_entities there. It just gives you the service structure.
Second, it seems to me that referencing odata entities dynamically is not covered in exposed API. Seems as enhancement request.
However, I think I was able to get the information you seek in a ugly way, by using the Python magic methods, e.g.
sample.entity_sets.__getattr__('entity_set_name').get_entities().count().execute()
Is that acceptable workaround for you?

Dear @phanak-sap,
Many thanks for the suggestion. The following code
service.entity_sets.__getattr__('entity_set_name').get_entities().count().execute()
does the job
Thanks for your response and prompt action. Providing an example in the documentation would be really welcome.
Many thanks for your support.
Kind regards
Achilleas


Re-implement parallel matrices

Redo of #363, which got reverted in #387 .
The accessing separate env and secrets doesnt work for login, this needs to be refactored. Keeping as draft for now

Changes:

According to the docs, attestation and SBOM support is build directly into the docker/build-push-action for any version later than v4, thus we can remove our attestation steps.
Matrices implementation ONLY for images, and not registry auth. Each image will be built and pushed to both registries at once which should be optimized due to the caching

I want to keep the feature changes small to minimize disruptions. However when we have time I want to next investigate removing the caching step. This is because we are caching Docker layers using actions/cache@v4, but docker/build-push-action@v6 supports its own caching mechanism (type=gha). While this used to make sense for separate build steps, now that we have aggregated them, technically it shouldn't be needed.

/HOLD
Waiting for the Jan 9th release so we dont ruin our workflows. Can pick this up again then.


Missing Gemfile.lock in repo

Because Gemfile.lock is in the .gitignore, it isn't included in this repo.
Without the lockfile, a fresh clone of this repo will always bundle install the latest available version of each gem.
This can lead to issues when breaking changes are released in one of the dependencies.
For example, the latest version of sqlite3-ruby has this change:

Raise ArgumentError if Database#execute, #execute_batch, or #query are passed multiple bind parameters that are not in an Array. In v2.0.0 these methods would silently swallow additional arguments, and this change makes the failure explicit.

Which causes this error when running notes_cloud_ripper.rb:
/usr/local/rvm/gems/default/gems/sqlite3-2.0.1/lib/sqlite3/database.rb:197:in `execute': wrong number of arguments (given 3, expected 1..2) (ArgumentError)
        from /workspaces/apple_cloud_notes_parser/lib/AppleNoteStore.rb:678:in `rip_notes'
        from /workspaces/apple_cloud_notes_parser/lib/AppleNoteStore.rb:221:in `rip_all_objects'
        from /workspaces/apple_cloud_notes_parser/lib/AppleBackup.rb:243:in `block in rip_notes'
        from /workspaces/apple_cloud_notes_parser/lib/AppleBackup.rb:240:in `each'
        from /workspaces/apple_cloud_notes_parser/lib/AppleBackup.rb:240:in `rip_notes'
        from notes_cloud_ripper.rb:194:in `<main>'

That specific error isn't too hard to fix, but there may be breaking changes in any of the other gems which don't necessarily cause the program to raise an error, but instead lead to works-on-my-machine-type bugs.
Also there might be more breaking changes in the future!

Thanks for flagging. The lack of checking in Gemfile.lock is somewhat intended as I know users were on different versions of Ruby and some gems, particularly Google's protobuf, have had their OWN breaking changes that required different versions in different versions of Ruby. I have not yet wanted to specify a Ruby version beyond "if it hasn't been end-of-lifed, it should work."
That said, I appreciate the heads up and will look at pushing a fix to this error with how execute is called.

The immediate issue of SQLite calls is addressed in a82014e01cf72bcb5852227d0fc08c5466f0356a. I will consider checking in a Gemfile that fits anything Ruby 3 and up.

Hey! Sounds good
Great project btw 😀
There was another notable breaking change in the latest sqlite3-ruby:

Database#columns returns a list of internal frozen strings.

This causes AppleNote::is_gzip to raise a FrozenError when it tries to call data.force_encoding
Adding .dup should be all that's needed to fix it
-    return data.force_encoding("US-ASCII").start_with?("\x1F\x8B".force_encoding("US-ASCII"))
+    return data.dup.force_encoding("US-ASCII").start_with?("\x1F\x8B".force_encoding("US-ASCII"))

This didn't cause the program to crash, but it did mean that all exported notes had an empty content section.

After I ran into that error, I stopped looking into trying to fix any issues with the new deps and instead started to see if I could just configure a stricter Gemfile.
By adding these version ranges I was able to get everything working without any changes to the program source (also, I was using ruby 3.2!):
diff --git a/Gemfile b/Gemfile
index a485721..f681cdd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,22 +1,22 @@
 source "https://rubygems.org"

 # Gems owned by Ruby directly
-gem 'cgi',">= 0.3.3" # Ruby official
-gem 'fileutils', ">= 1.4.0" # Ruby official
-gem 'openssl', ">= 2.2.0" # Ruby official
-gem 'rake', ">= 10.5.0" # Ruby official
-gem 'zlib', ">= 1.1.0" # Ruby official
+gem 'cgi',"~> 0.3" # Ruby official
+gem 'fileutils', "~> 1.4" # Ruby official
+gem 'openssl', "~> 2.2" # Ruby official
+gem 'rake', "~> 13.2" # Ruby official
+gem 'zlib', "~> 1.1" # Ruby official

 # Gems owned by Google
-gem 'google-protobuf', ">= 3.11.2" # Google official
+gem 'google-protobuf', "~> 4.26" # Google official

 # Gems owned by some "organization" on GitHub
 gem 'rspec' # Owned by rspec
-gem 'sqlite3', ">= 1.4.0" # Owned by SparkleMotion
+gem 'sqlite3', "~> 1.4" # Owned by SparkleMotion

 # Gems with multiple possible maintainers
-gem 'nokogiri', ">= 1.14.0" # Multiple maintainers
-gem 'keyed_archive', ">= 1.0.0" # Owned by me and one other
+gem 'nokogiri', "~> 1.14" # Multiple maintainers
+gem 'keyed_archive', "~> 1.0" # Owned by me and one other

 # Gems with just one maintainer
-gem 'aes_key_wrap', ">= 1.1.0" # Single owner: @tomdalling
+gem 'aes_key_wrap', "~> 1.1" # Single owner: @tomdalling

From what I could tell, ~> 1.1 is a shortcut for >= 1.1.0, < 2.0.0

Thanks for doing the hard work on that! I'm going to push make sure that Gemfile works with a few different versions on a clean installation and then push it, if so. It definitely will end support for Ruby 2.7 (which is end-of-lifed, I know, but there's possibly some other clean up to do for that). I want to make sure the database columns issue doesn't crop up anywhere else before I push that fix and call it good.
I appreciate the help!

Pushed the new Gemfile in e6d04752474d1bae9919367e4e7194c67a70d7e5 after building Docker images for Ruby 3.0 - 3.3 and testing it on a Mac.

The current Gemfile doesn't work for me on macOS 14.5 23F79 (Sonoma) MacBookPro18,2 (Apple M1 Max, arm64):

Details
❯ bundle install
Fetching gem metadata from https://rubygems.org/......
Resolving dependencies...
Using rake 13.2.1 (was 13.1.0)
Using bundler 2.3.7
Using diff-lcs 1.5.1
Using base64 0.2.0
Using nkf 0.2.0
Using rexml 3.2.6
Using racc 1.7.3
Using bigdecimal 3.1.8
Using fileutils 1.7.2
Using ipaddr 1.2.6
Using zlib 1.1.0 (was 3.1.0)
Using CFPropertyList 3.0.7
Using aes_key_wrap 1.1.0
Using sqlite3 1.7.2 (arm64-darwin)
Using keyed_archive 1.0.0
Using rspec-support 3.13.1
Using google-protobuf 4.27.0 (arm64-darwin) (was 3.25.3)
Fetching openssl 2.2.3 (was 3.2.0)
Using cgi 0.4.1
Using nokogiri 1.16.2 (arm64-darwin)
Using rspec-core 3.13.0
Using rspec-expectations 3.13.0
Using rspec-mocks 3.13.0
Using rspec 3.13.0
Installing openssl 2.2.3 (was 3.2.0) with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /usr/local/git/apple_cloud_notes_parser/.direnv/ruby/gems/openssl-2.2.3/ext/openssl
/usr/local/.rbenv/versions/3.1.2/bin/ruby -I /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0 -r ./siteconf20240529-18546-n9gs77.rb extconf.rb
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for openssl/ssl.h... yes
checking for CRYPTO_malloc() in -lcrypto... yes
checking for SSL_new() in -lssl... yes
checking for LIBRESSL_VERSION_NUMBER in openssl/opensslv.h... no
checking for OpenSSL version >= 1.0.1 and < 3.0.0... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/.rbenv/versions/3.1.2/bin/$(RUBY_BASE_NAME)
	--with-openssl-dir
	--with-openssl-include
	--without-openssl-include=${openssl-dir}/include
	--with-openssl-lib
	--without-openssl-lib=${openssl-dir}/lib
	--with-kerberos-dir
	--without-kerberos-dir
	--with-kerberos-include
	--without-kerberos-include=${kerberos-dir}/include
	--with-kerberos-lib
	--without-kerberos-lib=${kerberos-dir}/lib
	--with-debug
	--without-debug
	--enable-debug
	--disable-debug
	--with-nsl-dir
	--without-nsl-dir
	--with-nsl-include
	--without-nsl-include=${nsl-dir}/include
	--with-nsl-lib
	--without-nsl-lib=${nsl-dir}/lib
	--with-nsllib
	--without-nsllib
	--with-socket-dir
	--without-socket-dir
	--with-socket-include
	--without-socket-include=${socket-dir}/include
	--with-socket-lib
	--without-socket-lib=${socket-dir}/lib
	--with-socketlib
	--without-socketlib
	--with-crypto-dir
	--without-crypto-dir
	--with-crypto-include
	--without-crypto-include=${crypto-dir}/include
	--with-crypto-lib
	--without-crypto-lib=${crypto-dir}/lib
	--with-cryptolib
	--without-cryptolib
	--with-ssl-dir
	--without-ssl-dir
	--with-ssl-include
	--without-ssl-include=${ssl-dir}/include
	--with-ssl-lib
	--without-ssl-lib=${ssl-dir}/lib
	--with-ssllib
	--without-ssllib
extconf.rb:113:in `<main>': OpenSSL >= 1.0.1, < 3.0.0 or LibreSSL >= 2.5.0 is required (RuntimeError)

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /usr/local/git/apple_cloud_notes_parser/.direnv/ruby/extensions/arm64-darwin-22/3.1.0/openssl-2.2.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/local/git/apple_cloud_notes_parser/.direnv/ruby/gems/openssl-2.2.3 for inspection.
Results logged to /usr/local/git/apple_cloud_notes_parser/.direnv/ruby/extensions/arm64-darwin-22/3.1.0/openssl-2.2.3/gem_make.out

  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:47:in `block in build'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/tempfile.rb:317:in `open'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in build_extensions'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/installer.rb:853:in `build_extensions'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/rubygems_gem_installer.rb:71:in `build_extensions'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/rubygems_gem_installer.rb:28:in `install'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/source/rubygems.rb:204:in `install'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/installer/gem_installer.rb:54:in `install'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/installer/parallel_installer.rb:186:in `do_install'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/worker.rb:62:in `apply_func'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/worker.rb:57:in `block in process_queue'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/worker.rb:54:in `loop'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/worker.rb:54:in `process_queue'
  /usr/local/.rbenv/versions/3.1.2/lib/ruby/3.1.0/bundler/worker.rb:91:in `block (2 levels) in create_threads'

An error occurred while installing openssl (2.2.3), and Bundler cannot continue.

In Gemfile:
  openssl

If I change part of Gemfile back to:
# Gems owned by Ruby directly
gem 'cgi',"~> 0.3" # Ruby official
gem 'fileutils', "~> 1.4" # Ruby official
gem 'openssl', ">= 2.2.0" # Ruby official
[…]

`
then installation works again:

Details
❯ bundle install
Fetching gem metadata from https://rubygems.org/......
Resolving dependencies...
Using rake 13.2.1 (was 13.1.0)
Using bundler 2.3.7
Using diff-lcs 1.5.1
Using racc 1.7.3
Using nkf 0.2.0
Using rexml 3.2.6
Using aes_key_wrap 1.1.0
Using rspec-support 3.13.1
Using sqlite3 1.7.2 (arm64-darwin)
Using zlib 1.1.0 (was 3.1.0)
Using base64 0.2.0
Using openssl 3.2.0
Using bigdecimal 3.1.8
Using fileutils 1.7.2
Using rspec-expectations 3.13.0
Using nokogiri 1.16.2 (arm64-darwin)
Using rspec-core 3.13.0
Using google-protobuf 4.27.0 (arm64-darwin) (was 3.25.3)
Using CFPropertyList 3.0.7
Using cgi 0.4.1
Using rspec-mocks 3.13.0
Using keyed_archive 1.0.0
Using rspec 3.13.0
Bundle complete! 11 Gemfile dependencies, 23 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.


Issues related with numpy reduction operation

Invalid SDFG
Describe the bug
When using arr.max() inside a dace program, an invalid SDFG is generated and cannot be loaded by the SDFG viewer. The viewer complains that a non-digit "-Infinity" is detected as a value of the "Identity". Manually correcting "-Infinity" to minimum representable floating point number solves the problem. Yet it is unclear how does "-Infinity" get serialized into the SDFG json. Note that using np.max(arr) lead to such problem.
To Reproduce
@dace.program
def foo(a: dace.float[3]):
  return a.max()

foo(np.array([1.,2.,3.])) # cannot be loaded by SDFG viewer

@dace.program
def bar(a: dace.float[3]):
  return np.max(a)

bar(np.array([1.,2.,3.])) # works fine

Code generation issue
Describe the bug
When applying a reduction operation on a temporary array in a dace program, it fails to compile with the CPU backend. The generated cpp file looks like following:
inline void reduce_0_0_2(foo_t *__state, double _in, double* _out) {
    //ignore some code here...
    for (auto _i0 = 0; _i0 < 3; _i0 += 1) {
            double inp = _in[_i0]; // <----- a double cannot be accessed as an array!
            double out;
            out = inp;
            dace::wcr_fixed<dace::ReductionType::Max, double>::reduce_atomic(_out, out);
    }
}

To Reproduce
@dace.program
def foo():
    a = np.array([1.,2.,3.])
    b = np.max(a)

Thanks for reporting!
For the first issue:
As sympy is used to store to json, it seems that the "identity" property of reduce nodes is not given a type: https://github.com/spcl/dace/blob/master/dace/libraries/standard/nodes/reduce.py#L1061
Maybe we should consider using SymbolicProperty as it can be stored/loaded properly, and the identity value is a symbolic expression anyway.


org/space quota: details page

Organization and space now have a quota tab that shows the quota details
configuration. This page is also reachable through the quota link in the
summary card.
Signed-off-by: Vítor Avelino<EMAIL_ADDRESS>Motivation and Context
There was no way of seeing the org/space quota details.
How Has This Been Tested?
Manually.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Docs update
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

There's still some cards that needs the correct icon like Trial DB allowed, App Tasks Limit, etc. Help on that is appreciated.

@KlapTrap, this is ready for review again.


Adapt to Swift 2.0 & project update

Will ignore the build failure, Travis-CI is still using old version of CocoaPods.


RC2.1 Unexpected failure of the "AvaloniaStatsTask" task

Hello,
When i switch my avalonia project from rc1.1 to rc2.1 I have this compilation error :(
Error MSB4018 Unexpected failure of the "AvaloniaStatsTask" task.
System.NotSupportedException: FileStream had to open a device that was not a file. For support of devices such as 'com1:' or 'lpt1:', call CreateFile, then use FileStream constructors that use an OS handle such as IntPtr.
to Microsoft.Win32.Win32Native.SafeCreateFile(String lpFileName, Int32 dwDesiredAccess, FileShare dwShareMode, SECURITY_ATTRIBUTES securityAttrs, FileMode dwCreationDisposition, Int32 dwFlagsAndAttributes, IntPtr hTemplateFile)
to System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
to System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
to Avalonia.Telemetry.WinProcUtil.StartBackground(String exe, String cmdline)
to Avalonia.Telemetry.AvaloniaStatsTask.StartCollector()
to Avalonia.Telemetry.AvaloniaStatsTask.Execute()
to Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
to Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() Avalonia.Themes.Neumorphism C:\Users\flari.nuget\packages\avalonia.buildservices\0.0.27\buildTransitive\Avalonia.BuildServices.targets 9
What should I do ????
Thanks
Eviral

Wait a few hours. We are working hard on a fix. We have one, but needs some tests running.
Thanks for your patience

Fix should be available now via RC2.2 Please update and try again.

Problem fixed with RC2.2 !
Thanks a lot !


feat: update KP to KMS and add a new test

Description
Update the repository to use the term KMS instead of KP.
It includes changes in Readme, variable name/description, default example and adds a test for existing KMS.
Types of changes in this PR
Changes that affect the core Terraform module or submodules

[ ] Bug fix
[x] New feature
[ ] Dependency update

Changes that don't affect the core Terraform module or submodules

[x] Examples or tests (addition or updates of examples or tests)
[ ] Documentation update
[ ] CI-related update (pipeline, etc.)
[ ] Other

Release required?
Identify the type of release. For information about the changes in a semantic versioning release, see Release versioning.

[ ] No release
[ ] Patch release (x.x.X)
[x] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content
This repository now supports KMS including Key Protect and HPCS. Key protect term in the code has been renamed to KMS. Repository name is also changed to terraform-ibm-kms-key-ring from terraform-ibm-key-protect-key-ring.
Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

Merge actions for mergers

Use a relevant conventional commit message that is based on the PR contents and any release notes provided by the PR author. The commit message determines whether a new version of the module is needed, and if so, which semver increment to use (major, minor, or patch).
Merge by using "Squash and merge".

/run pipeline

@shemau sure, converted to minor release. Thanks.

/run pipeline

/run pipeline

:tada: This PR is included in version 2.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


 Was that because calibration got faster or because gptmd got slower, I wonder.

@acesnik You can see from the chart that GPTMD got slower by x2.5.
Not sure what calibration has to do with it.

Could be any of these:
MetaMorpheus Add for maxThreads in MzLib change
#1310 by ianhirsch was merged 22 days ago • Review required
File Output Reorganization
#1309 by ianhirsch was closed 23 days ago • Review required
Small fix ensures that crashes in entering indistinguishable proteins are handled
#1307 by rmmiller22 was merged 23 days ago • Review required
Rob's MetaDraw...
#1306 by rmillikin was merged 22 days ago • Review required
File specific overwrote all other parameters to default
#1305 by zrolfs was merged 23 days ago • Approved

I think this is a false-positive issue here, actually. I ran GPTMD on the same 2 calibrated files with v0.0.284 and v0.0.288 and it took about 15min both times. I think because #1310 correctly limited the number of threads used, and the .toml file Jenkins uses limits the threads to use per file to 3, the search slowed down from using unlimited threads to using 3 threads. GPTMD must be most affected by using fewer threads?


ChatUtils 1.10.1+1.20.1

Mod Name
ChatUtils 1.10.1+1.20.1
Mod Homepage
https://modrinth.com/mod/chatutils/version/1.10.1+1.20.1
Describe the bug
.
Steps to reproduce
Put and start server
Logs
https://gist.github.com/DonorKrovi/f9d6a12dc7dd40248a989fbb68a0ac20
Additional context
No response

§eMod 'Chat Utils Mod' (chat_utils)§r 1.10.1+1.20.1 requires any version of §6fabric§r, which is missing!

Do you have the farbic api installed?

forgified farbic api

no

According to the mod's modrinth page, it is not supported on servers. I've tested it on a client as well and it runs fine.

Client side
Required

Server side
Unsupported


fixed local file sharing

I couldn't get local file sharing on android to work so I added a functionality to read in the local file as base64 and then share. I will admit that this solution is a bit hacky but I'm creating the pull request anyway as is and will be happy to fix if you have any comments.

Hi thanks . I'll check

@logileifs I'm interested in the issue you were facing, what exactly was the error when trying to share a local file on Android? Was it a NullPointerException in ShareFile#getRealPathFromURI by any chance (I can see that you have commented its code)?
I have been facing a similar issue with local files for which the mime type wasn't correctly detected, created pull request #63 to solve it. It might interest you and I would be glad to have your feedback in case it seems useful to you :smile:

this pr is very old and has conflicts


QRCode class does not have the property of userAgent.

Describe the bug
In 1.0.3, QRCode class does not have the property of userAgent.
In the document of QRCode.md, there is the userAgent property.
The documentation and implementation don't seem to match.
Expected behavior
QRCode class has the userAgent property, getter, and setter.
Additional context
I checked a commit message '''removed userAgent from qrcode request''' 71eba882ed1514266390960f6a243844105b15ac .
I am willing to close this issue,  because there is a reason of '''removed userAgent'''.
Could I check or ask why '''removed userAgent''' ?

QRCode class had the userAgent property, getter, and setter. 6bc9a274ec02f7071f8ff27f0fee41a8a9f7ac6a


⚠ Bofrost.fr has degraded performance

In ac892b7, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 2139 ms

Resolved: Bofrost.fr performance has improved in 0f03311 after 7 minutes.


Upgrade in-toto

What does this PR do?
Update in-toto in downloader and ddev from 0.2.3 to 0.3.0.
Motivation
Much better error messages for users and ourselves for When Things Go Wrong.
Additional Notes
@ofek should check to make sure that ddev continues to work as expected on Windows.
Review checklist (to be filled by reviewers)

[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached
[ ] Feature or bugfix must have tests
[ ] Git history must be clean
[ ] If PR adds a configuration option, it must be added to the configuration file.

Good catch @ofek 🙇


[ERROR] FileNotFoundError: [Errno 2] No such file or directory: 'ld'

Getting this issue when I am running this in a lambda function.
[ERROR] FileNotFoundError: [Errno 2] No such file or directory: 'ld'
Traceback (most recent call last):
  File "/var/task/update.py", line 44, in lambda_handler
    clamav.update_defs_from_freshclam(AV_DEFINITION_PATH, CLAMAVLIB_PATH)
  File "/var/task/clamav.py", line 115, in update_defs_from_freshclam
    ":".join(current_library_search_path()),
  File "/var/task/clamav.py", line 45, in current_library_search_path
    ld_verbose = subprocess.check_output(["ld", "--verbose"]).decode("utf-8")
  File "/var/lang/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/var/lang/lib/python3.8/subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/var/lang/lib/python3.8/subprocess.py", line 854, in init
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/var/lang/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)END RequestId: e2d4e70b-35a4-4ee5-b81e-881b89f16b76
REPORT RequestId: e2d4e70b-35a4-4ee5-b81e-881b89f16b76	Duration: 2082.57 ms	Billed Duration: 2100 ms	Memory Size: 128 MB	Max Memory Used: 82 MB	Init Duration: 265.13 ms

This issue is coming in python 3.8 runtime.

Even i have started facing the issue. Any resolution yet ?

Install ld within the Dockerfile (via yum install binutils), and copy it to the bin/directory.  Next, adjust the providedupdated.py`:
def current_library_search_path():
    ld_verbose = subprocess.check_output(["./bin/ld", "--verbose"]).decode("utf-8")
    rd_ld = re.compile(RE_SEARCH_DIR)
    return rd_ld.findall(ld_verbose)

You'll discover you need to manually copy additional xxx.so files into the bin/ directory, in the same Dockerfile.

Install ld within the Dockerfile (via yum install binutils), and copy it to the bin/ directory.  Next, adjust the provided updated.py:
def current_library_search_path():
    ld_verbose = subprocess.check_output(["./bin/ld", "--verbose"]).decode("utf-8")
    rd_ld = re.compile(RE_SEARCH_DIR)
    return rd_ld.findall(ld_verbose)

You'll discover you need to manually copy additional xxx.so files into the bin/ directory, in the same Dockerfile.

Install ld within the Dockerfile (via yum install binutils), and copy it to the bin/ directory.  Next, adjust the provided clamav.py:
def current_library_search_path():
    ld_verbose = subprocess.check_output(["./bin/ld", "--verbose"]).decode("utf-8")
    rd_ld = re.compile(RE_SEARCH_DIR)
    return rd_ld.findall(ld_verbose)

You'll discover you need to manually copy additional xxx.so files into the bin/ directory, in the same Dockerfile.

I confirmed that when using python 3.7, the clamav.py did not display any error.  Overall, making simple adjustments, or moderate adjustments to corresponding build processes (if that's what you have) is much worth the time, then going down rabbit holes of missing xxx.so files on the python 3.8 environment.

ld works on python3.8 python3.9? @jeff1evesque
Id works can you share copy command for bin/ld


PR #438 observation

hey @djmb great work on the new features, I have a small request Could we have a version bump when big changes like #438 are introduced? this PR just broke so many deployments.
Releasing the deploy lock...
  Finished all in 39.4 seconds
  ERROR (SSHKit::Command::Failed): Exception while executing on host xx.xx.xx.xx: docker exit status: 125
docker stdout: Nothing written
docker stderr: docker: open .kamal/env/roles/service_name-web.env: no such file or directory.
See 'docker run --help'.

Hi and thanks @acidtib!
If you point to the released versions from RubyGems this shouldn't be an issue I think. Are you pulling Kamal directly from the main branch?

Same issue happening for me. Have you found a fix?

@delivey, how do you install Kamal? If you use gem install kamal it should only pull released versions from Rubygems.

The new features, with breakage, will be released as part of v1.0. But yeah, if you run off main, you have to expect that things might break!


 Delete the others, including these Instructions.
{{cask_file}} represents the cask file you’re submitting/editing (if applicable).
If there’s a checkbox you can’t complete for any reason, that’s OK. Just explain in detail why you weren’t able to do so.

Changes to a cask
Editing an existing cask

[ ] Commit message includes cask’s name (and new version, if applicable).
[ ] brew cask audit --download {{cask_file}} is error-free.
[ ] brew cask style --fix {{cask_file}} left no offenses.

Adding a new cask

[x] Checked there aren’t open pull requests for the same cask.
[x] Checked there aren’t closed issues where that cask was already refused.
[ ] Checked the cask follows the requirements of acceptable casks.
[ ] When naming the cask, followed the token reference.
[x] Commit message includes cask’s name.
[x] brew cask audit --download processing2 is error-free.
[x] brew cask style --fix processing2 left no offenses.
[x] brew cask install processing2 worked successfully.
[x] brew cask uninstall processing2 worked successfully.

➜  homebrew-versions-1 git:(master) brew cask audit --download Casks/processing2.rb
==> Downloading http://download.processing.org/processing-2.2.1-macosx.zip
Already downloaded: /Users/ryan/Library/Caches/Homebrew/Cask/processing2--2.2.1.zip
==> Verifying checksum for Cask processing2
audit for processing2: passed
➜  homebrew-versions-1 git:(master) brew cask style --fix Casks/processing2.rb

1 file inspected, no offenses detected
➜  homebrew-versions-1 git:(master) brew cask install Casks/processing2.rb
==> Downloading http://download.processing.org/processing-2.2.1-macosx.zip
Already downloaded: /Users/ryan/Library/Caches/Homebrew/Cask/processing2--2.2.1.zip
==> Verifying checksum for Cask processing2
==> Moving App 'Processing.app' to '/Applications/Processing.app'
🍺  processing2 was successfully installed!
➜  homebrew-versions-1 git:(master) brew cask uninstall Casks/processing2.rb
==> Removing App: '/Applications/Processing.app'
➜  homebrew-versions-1 git:(master) date
Tue Aug  9 23:10:21 PDT 2016

Thanks!

@reitermarkus Thanks for merging. This is really helpful for the LED art community. There's a Processing OPC client which only runs on Processing v2.
I know several people that have been bitten by brew cask install processing to drive large LED art installations and then spent way too much time (I've been there) debugging only to realize that they just need to use P2, not P3. :)


add generator option to add some redundant decorator types

Added option emitRedundantDecoratorArgs to generator config to add some redundant type definition as suggested in https://github.com/MichalLytek/typegraphql-prisma/issues/277
Not sure if passing this option to the respective functions is the right way.
Also I had to add ts-toolbelt as a devDep otherwise local build would fail for me.
Would be really awesome if you let me know if there is a chance of merging this or of having this feature otherwise in the near future.
Thanks :)

I would like to name this option as emitRedundantTypesInfo. We can use it and reduce the redundancy in inputs, args and models by default and enable full info with this option enabled.
We also need a docs page describing that feature + regression tests to make sure we generate proper classes for different settings.

Closing as superseded by 36113bee.
@tsteenkamp Thanks for your contribution and the initial idea ❤


Add thread parameters to Message

I think this should cover the SKCore portion of https://github.com/SlackKit/SlackKit/issues/100.

👍 Thanks for the PR!


mux_gen + v2x: Support generating FASM annotations for muxes.

Cleanup of duplicate argument parsing + main code.
Separate out building interconnect information from generating the interconnect XML.
Support for treating routing muxes specially.
New form for muxes similar to new form for the direct XML.
Working on the tests.

This currently enables;

[x] Automatic generation of fasm_mux using mux_gen and v2x.
[x] Automatic generation of pack patterns.

This fixes numerous issues;

Fixes https://github.com/SymbiFlow/symbiflow-arch-defs/issues/701
Fixes https://github.com/SymbiFlow/symbiflow-arch-defs/issues/169 - vlog_to_pbtype.xml tool using object type rather than name in output.
Fixes https://github.com/SymbiFlow/symbiflow-arch-defs/issues/697 - v2x: Add support for "fasm_mux" in "interconnect"

@mkurc-ant Just FYI

@mithro I understand your approach. You want to generate muxes with <interconnect>+<mux> and nothing else inside. That makes sense.
Though I am not sure whether having a <pb_type> with <interconnect> and no child <pb_types>s inside is legal in VPR.

Though I am not sure whether having a <pb_type> with <interconnect> and no child <pb_types>s inside is legal in VPR.

     if (!is_leaf_pb_type) {
         //Non-leafs may have a model/pb_type children
         children_to_expect.push_back("model");
         children_to_expect.push_back("pb_type");
         children_to_expect.push_back("interconnect");

         if (is_root_pb_type) {
             VTR_ASSERT(!is_leaf_pb_type);
             //Top level pb_type's may also have the following tag types
             children_to_expect.push_back("fc");
             children_to_expect.push_back("pinlocations");
             children_to_expect.push_back("switchblock_locations");
         }
     } else {
         VTR_ASSERT(is_leaf_pb_type);
         VTR_ASSERT(!is_root_pb_type);

         //Leaf pb_type's may also have the following tag types
         children_to_expect.push_back("T_setup");
         children_to_expect.push_back("T_hold");
         children_to_expect.push_back("T_clock_to_Q");
         children_to_expect.push_back("delay_constant");
         children_to_expect.push_back("delay_matrix");
     }

     //Sanity check contained tags
     expect_only_children(Parent, children_to_expect, loc_data);

This is a snippet of code from VPR. If the pb_type is a leaf one it will through an error as it does not expect interconnect tags.

Getting Yosys to output parameters would help with this CL (see https://github.com/YosysHQ/yosys/issues/1001).

@mithro @acomodi I checked that actually having a <pb_type> only with <interconnect> inside is legal. I used the testarch for the check.

Currently failing with;
KeyError: "No yosys module named $mux (only have dict_keys(['CARRY']))"

Your invention of GET_REL_TARGET makes me feel like you don't understand what you are doing. Can you please stop and write a document explaining the changes you are making?

See related github issue #720 Rename golden update targets to be better and the commit messages;

https://github.com/SymbiFlow/symbiflow-arch-defs/pull/703/commits/70be2dc734c719c46f39057b125e481041611232
https://github.com/SymbiFlow/symbiflow-arch-defs/pull/703/commits/7d6ab5b9f395cccb371e65f002aae5ccc89ef4a9

This is what the make targets under fig42-dff directory look like now;
tansell@tansell:~/github/SymbiFlow/symbiflow-arch-defs/build/utils/vlog/tests/fig42-dff$ make
1.SILENT
all
clean
clean/
cmake_check_build_system
cmake_force
default_target
depend
diff_utils_vlog_tests_fig42-dff_dff
diff_utils_vlog_tests_fig42-dff_dff/
diff_utils_vlog_tests_fig42-dff_dff.model.xml
diff_utils_vlog_tests_fig42-dff_dff.model.xml/
edit_cache
edit_cache/
file_utils_vlog_tests_fig42-dff_dff.aig.svg
file_utils_vlog_tests_fig42-dff_dff.aig.svg/
file_utils_vlog_tests_fig42-dff_dff.bb.svg
file_utils_vlog_tests_fig42-dff_dff.bb.svg/
file_utils_vlog_tests_fig42-dff_dff.bb.yosys.svg
file_utils_vlog_tests_fig42-dff_dff.bb.yosys.svg/
file_utils_vlog_tests_fig42-dff_dff.flat.svg
file_utils_vlog_tests_fig42-dff_dff.flat.svg/
file_utils_vlog_tests_fig42-dff_dff.flat.yosys.svg
file_utils_vlog_tests_fig42-dff_dff.flat.yosys.svg/
file_utils_vlog_tests_fig42-dff_dff.model.actual.xml
file_utils_vlog_tests_fig42-dff_dff.model.actual.xml/
file_utils_vlog_tests_fig42-dff_dff.model.golden.xml
file_utils_vlog_tests_fig42-dff_dff.model.golden.xml/
file_utils_vlog_tests_fig42-dff_dff.model.xml
file_utils_vlog_tests_fig42-dff_dff.model.xml/
file_utils_vlog_tests_fig42-dff_dff.pb_type.xml
file_utils_vlog_tests_fig42-dff_dff.pb_type.xml/
file_utils_vlog_tests_fig42-dff_dff.sim.v
file_utils_vlog_tests_fig42-dff_dff.sim.v/
file_utils_vlog_tests_fig42-dff_diff_utils_vlog_tests_fig42-dff_dff.model.xml.diff
file_utils_vlog_tests_fig42-dff_diff_utils_vlog_tests_fig42-dff_dff.model.xml.diff/
file_utils_vlog_tests_fig42-dff_golden.model.xml
file_utils_vlog_tests_fig42-dff_golden.model.xml/
help
install
install/
list_install_components
list_install_components/
merge_utils_vlog_tests_fig42-dff_dff.model.xml
merge_utils_vlog_tests_fig42-dff_dff.model.xml/
merge_utils_vlog_tests_fig42-dff_golden.model.xml
merge_utils_vlog_tests_fig42-dff_golden.model.xml/
preinstall
preinstall/
rebuild_cache
rebuild_cache/
render_utils_vlog_tests_fig42-dff_dff.aig
render_utils_vlog_tests_fig42-dff_dff.aig/
render_utils_vlog_tests_fig42-dff_dff.bb
render_utils_vlog_tests_fig42-dff_dff.bb/
render_utils_vlog_tests_fig42-dff_dff.bb.yosys
render_utils_vlog_tests_fig42-dff_dff.bb.yosys/
render_utils_vlog_tests_fig42-dff_dff.flat
render_utils_vlog_tests_fig42-dff_dff.flat/
render_utils_vlog_tests_fig42-dff_dff.flat.yosys
render_utils_vlog_tests_fig42-dff_dff.flat.yosys/
test
test/
update_utils_vlog_tests_fig42-dff_golden.model.xml
update_utils_vlog_tests_fig42-dff_golden.model.xml/
utils/
v2x_utils_vlog_tests_fig42-dff_dff
v2x_utils_vlog_tests_fig42-dff_dff/
view_utils_vlog_tests_fig42-dff_dff.aig
view_utils_vlog_tests_fig42-dff_dff.aig/
view_utils_vlog_tests_fig42-dff_dff.bb
view_utils_vlog_tests_fig42-dff_dff.bb/
view_utils_vlog_tests_fig42-dff_dff.bb.yosys
view_utils_vlog_tests_fig42-dff_dff.bb.yosys/
view_utils_vlog_tests_fig42-dff_dff.flat
view_utils_vlog_tests_fig42-dff_dff.flat/
view_utils_vlog_tests_fig42-dff_dff.flat.yosys
view_utils_vlog_tests_fig42-dff_dff.flat.yosys/

Your invention of GET_REL_TARGET makes me feel like you don't understand what you are doing. Can you please stop and write a document explaining the changes you are making?

See related github issue [#720 Rename golden update targets to be better]

But you missed the reason it is named in a regular way (e.g. file prefix).  It has nothing to do with humans, it has to do with the build system.  If I write a simulation, and it needs the dependency tree, and the verilog I need is built from muxgen, how does that target know to use the muxgen prefix over the file prefix?   How does xml merge know to use v2x prefix over the file prefix or muxgen over the file prefix?  You've totally broken dependency tracking and target linking.  How do you propose to fix it?

Your invention of GET_REL_TARGET makes me feel like you don't understand what you are doing. Can you please stop and write a document explaining the changes you are making?

See related github issue [#720 Rename golden update targets to be better]

But you missed the reason it is named in a regular way (e.g. file prefix). It has nothing to do with humans, it has to do with the build system. If I write a simulation, and it needs the dependency tree, and the verilog I need is built from muxgen, how does that target know to use the muxgen prefix over the file prefix? How does xml merge know to use v2x prefix over the file prefix or muxgen over the file prefix? You've totally broken dependency tracking and target linking. How do you propose to fix it?

The file targets still exist, the build system knows how to build the files.
The v2x prefix is solely a name human to trigger building a given set of files.
xml_merge doesn't know anything about the v2x_XXX target it depends on the file targets (which depend on their dependencies, etc).

This PR is fairly large, and has some obvious break points (e.g. CMake changes versus v2x changes).  Can we separate the CMake changes from the v2x changes?

@kgugala Please signoff all commits and do code formatting.

@mithro blif_model info is generated as additional xlm subelement. The golden models you referred to in your comments have have blif_model defined as pb_type attributes because they are used for comparison with *.pb_type.xml files after those are transformed with convert-pb_type-attributes.xsl. See example ADDDER xml:
<?xml version='1.0' encoding='utf-8'?>
<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" num_pb="1" name="ADDER">
  <blif_model>.subckt ADDER</blif_model>
  <input name="a" num_pins="1"/>
  <input name="b" num_pins="1"/>
  <input name="cin" num_pins="1">
    <pack_pattern name="ADDER" type="carry"/>
  </input>
  <output name="cout" num_pins="1">
    <pack_pattern name="ADDER" type="carry"/>
  </output>
  <output name="sum" num_pins="1"/>
  <delay_constant in_port="a" out_port="cout" max="300e-12"/>
  <delay_constant in_port="b" out_port="cout" max="300e-12"/>
  <delay_constant in_port="cin" out_port="cout" max="10e-12"/>
  <delay_constant in_port="a" out_port="sum" max="300e-12"/>
  <delay_constant in_port="b" out_port="sum" max="300e-12"/>
  <delay_constant in_port="cin" out_port="sum" max="300e-12"/>
</pb_type>

@mithro blif_model info is generated as additional xlm subelement. The golden models you referred to in your comments have have blif_model defined as pb_type attributes because they are used for comparison with *.pb_type.xml files after those are transformed with convert-pb_type-attributes.xsl. See example ADDDER xml:
<?xml version='1.0' encoding='utf-8'?>
<pb_type xmlns:xi="http://www.w3.org/2001/XInclude" num_pb="1" name="ADDER">
  <blif_model>.subckt ADDER</blif_model>
  <input name="a" num_pins="1"/>
  <input name="b" num_pins="1"/>
  <input name="cin" num_pins="1">
    <pack_pattern name="ADDER" type="carry"/>
  </input>
  <output name="cout" num_pins="1">
    <pack_pattern name="ADDER" type="carry"/>
  </output>
  <output name="sum" num_pins="1"/>
  <delay_constant in_port="a" out_port="cout" max="300e-12"/>
  <delay_constant in_port="b" out_port="cout" max="300e-12"/>
  <delay_constant in_port="cin" out_port="cout" max="10e-12"/>
  <delay_constant in_port="a" out_port="sum" max="300e-12"/>
  <delay_constant in_port="b" out_port="sum" max="300e-12"/>
  <delay_constant in_port="cin" out_port="sum" max="300e-12"/>
</pb_type>

The golden model should match the output of v2x before the XML transforms.

Looks like there are conflicts?

Please run spell check over all the README.md files.

done


Specify unwinding

Specifies behaviour around unwinding. Especially with respect to non-Rust code.

Rendered

cc me

Instead of #[unsafe_no_unwind], why not #[no_panic] with the similar semantics as C++ noexcept? (see also: http://discuss.rust-lang.org/t/no-panic/1356)
I think you'd still get most of the optimization benefit, but don't risk undefined behavior.
The semantics of #[no_panic] would be:

A caller of a no_panic function is guaranteed that we won't attempt to unwind out of the function.
If a panic does happen within a no_panic function, the process is aborted.
There is no guarantee how many Drop impls will run when unwinding into a no_panic function (but if a Drop impl does run, all other Drop impls that should have run prior are guaranteed to do so, in the correct order)

Because #[no_panic] allows the compiler to see whether a function might panic in cross-crate calls, it could skip emitting unwinding infos for more functions because we're guaranteed not to unwind into them.
The last point allows the compiler to reuse the same aborting code for all no_panic functions, as it doesn't need to call drop for any locals used by the functions. But it goes further: it allows the compiler to automatically mark any functions as no_panic if they are only reachable from other no_panic functions in the call graph. And any explicit panic!() calls in no_panic functions can be directly turned into an abort() call.
Thus, a program that doesn't use try or threads, and marks the main function as #[no_panic] would always abort() instead of panicking, and wouldn't have to link against the rust unwinding logic at all! (though you'd need LTO for the the compiler to be able to figure out the complete call graph)

@dgrunwald I think that the #[no_panic] attribute you're describing may be able to work in tandem with the #[unsafe_no_unwind] attribute being proposed here. The compiler would have to emit extra code for a safe version of #[no_panic] (force abort on unwind), but the unsafe version of the attribute has a clear analog in LLVM which may allow for optimizations it may not otherwise be able to deduce.
In general the semantics of #[no_panic] that you're describing sound very similar to the nounwind attribute in LLVM as I believe it already performs much of the propagating analysis.

@Aatch could you update this RFC with some of the feedback in this thread? There hasn't been much discussion on this but I think that it may be ready for merging soon.

AFAIK the only optimizations that #[unsafe_no_unwind] can do and #[no_panic] can't are those where the undefined behavior "travels back in time" and causes the compiler to eliminate whole code paths.
For example, I'd expect that #[unsafe_no_unwind] will optimize away all bounds checking (which should probably be mentioned in the RFC, since it makes the attribute more dangerous than one might naively expect from the current description)
With my no_panic, there's really two directions of propagation:
a) Functions that only calls no_panic functions and does not cause panics itself, can never be observed to unwind, and thus be marked no_panic. (propagation: callees -> caller)
b) Functions that are only called by no_panic functions will always unwind into a no_panic function. Because no_panic doesn't have to run drop impls, it's impossible to observe when exactly during unwinding the process was aborted, and thus we can mark the function no_panic (propagation: callers -> callee)
I was under the impression that this corresponds to the noexcept semantics in C++ -- looking more closely, C++ just says that unwinding into noexcept functions is implementation-defined. g++ seems to handle noexcept the way as I'm proposing; but clang still unwinds within noexcept functions, and LLVM nounwind seems to do only the callee->caller propagation :(
Example:
fn set_index<T>(arr: &mut [T], idx: usize, val: T) {
    arr[idx] = val
}
#[no_panic] // or #[no_unwind], not sure how we should call this
fn main() {
   let arr : &mut[Box<int>] = get_array();
   set_index(arr, 5, Box::new(42));
}

When the index 5 is out-of-range, by my no_panic rules, the compiler does not have to call the Box destructor in set_index. This is especially important when set_index gets inlined into main: I don't want inlining to cause main to have unwinding tables despite being marked #[no_panic], just so that a box can get destroyed before the process is aborted.

Back to the main part of the RFC: catching panics and converting them to error codes.
The mechanism suggested by this RFC is unsafe, because catching panics is unsafe in the presence of TLS. Moreover, callers cannot easily wrap the mechanism behind a safe API, because reasoning about the safety requires global knowledge about the usage of TLS in the program.
In my mind, this makes the try mechanism useless where it is needed most: FFI binding libraries that attempt to provide a safe Rust API around a C library that involves callbacks. Aborting the whole process remains the only valid choice for those libraries.

@dgrunwald Why would #[unsafe_no_unwind] optimize bound checks away? Bound checking guards against more than segv crashes, for example, it prevents accessing memory that isn't owned by the container (and could contain secrets). Optimizing bound checks away seems more dangerous than one would otherwise expect.

@carllerche if you can assume a lack of panic, all panics become unreachable markers. And bounds check failures panic. As a result, the compiler is able to assume that all of the bounds checks succeed.
As to #[unsafe_no_unwind]'s safety: it's got unsafe in the name to warn users that they have to be very careful about using it, just like the unsafe keyword we already have.

@dgrunwald

If a panic does happen within a no_panic function, the process is aborted.

This was one of the points you mentioned for #[no_panic]. I'm curious, how do you envision this being implemented? I would personally implement this via a "try/catch" block, but that would incur a cost whereas #[unsafe_no_unwind] would not incur any cost (it's just an LLVM attribute).

I'm curious, how do you envision this being implemented?

I had hoped that it would be possible to get the unwinding implementation to abort the process when a function is marked in some way in the unwinding tables (or even simpler: if the function is not present in the unwinding tables).
Unfortunately it looks like LLVM has no good way to do this, and indeed needs a try/catch block: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-May/036960.html
:-(

ping @alexcrichton

Unassigning myself as I believe this has now moved under the T-lang umbrella

We discussed this RFC today in the language subteam meeting, and decided that it ought to be closed in favor of RFC #1236, which covered roughly the same ground. Thanks @Aatch nonetheless. There are also a few bits in here that may be worth pulling out for a later RFC, such as the annotations for functions that govern whether landing pads are created or not.