Create page to add new G2P LocusGeneDisease record

In the JSON data, can you also attach the source of the pmid?
That way we'll know when a pmid is already in G2P.
"publications": [
		{
			"pmid": "1",
			"comment": "",
			"families": null,
			"ancestries": "",
			"consanguineous": "unknown",
			"affectedIndividuals": null,
                        "source": "EuropePMC"
		},
]

If I provide publications but not any mechanism evidence, the data sent to the backend is the following:
"mechanism_evidence": [
		{
			"pmid": "1",
			"description": "",
			"evidence_types": [
				{
					"primary_type": "Function",
					"secondary_type": []
				},
				{
					"primary_type": "Functional Alteration",
					"secondary_type": []
				},
				{
					"primary_type": "Models",
					"secondary_type": []
				},
				{
					"primary_type": "Rescue",
					"secondary_type": []
				}
			]
		},
		{
			"pmid": "2",
			"description": "",
			"evidence_types": [
				{
					"primary_type": "Function",
					"secondary_type": []
				},
				{
					"primary_type": "Functional Alteration",
					"secondary_type": []
				},
				{
					"primary_type": "Models",
					"secondary_type": []
				},
				{
					"primary_type": "Rescue",
					"secondary_type": []
				}
			]
		},
		{
			"pmid": "3",
			"description": "",
			"evidence_types": [
				{
					"primary_type": "Function",
					"secondary_type": []
				},
				{
					"primary_type": "Functional Alteration",
					"secondary_type": []
				},
				{
					"primary_type": "Models",
					"secondary_type": []
				},
				{
					"primary_type": "Rescue",
					"secondary_type": []
				}
			]
		}
	],

If there is no data then it should send: "mechanism_evidence": []
The same applies for the other tags.

There is a typo:
unknown_inheritence -> unknown_inheritance

In the JSON data, can you also attach the source of the pmid? That way we'll know when a pmid is already in G2P.
"publications": [
		{
			"pmid": "1",
			"comment": "",
			"families": null,
			"ancestries": "",
			"consanguineous": "unknown",
			"affectedIndividuals": null,
                        "source": "EuropePMC"
		},
]

made the change in the latest commit

If I provide publications but not any mechanism evidence, the data sent to the backend is the following:
"mechanism_evidence": [
		{
			"pmid": "1",
			"description": "",
			"evidence_types": [
				{
					"primary_type": "Function",
					"secondary_type": []
				},
				{
					"primary_type": "Functional Alteration",
					"secondary_type": []
				},
				{
					"primary_type": "Models",
					"secondary_type": []
				},
				{
					"primary_type": "Rescue",
					"secondary_type": []
				}
			]
		},
		{
			"pmid": "2",
			"description": "",
			"evidence_types": [
				{
					"primary_type": "Function",
					"secondary_type": []
				},
				{
					"primary_type": "Functional Alteration",
					"secondary_type": []
				},
				{
					"primary_type": "Models",
					"secondary_type": []
				},
				{
					"primary_type": "Rescue",
					"secondary_type": []
				}
			]
		},
		{
			"pmid": "3",
			"description": "",
			"evidence_types": [
				{
					"primary_type": "Function",
					"secondary_type": []
				},
				{
					"primary_type": "Functional Alteration",
					"secondary_type": []
				},
				{
					"primary_type": "Models",
					"secondary_type": []
				},
				{
					"primary_type": "Rescue",
					"secondary_type": []
				}
			]
		}
	],

If there is no data then it should send: "mechanism_evidence": [] The same applies for the other tags.

made the change in the latest commit

There is a typo: unknown_inheritence -> unknown_inheritance

fixed typo in latest commit

When we are in the curation page, if we select a different page - we should have a popup or something similar warning us we are changing pages and the data will be lost. At the moment, it is possible to change the page and lose all the progress.

When we are in the curation page, if we select a different page we should have a popup or something similar warning us we are changing pages and the data will be lost. At the moment, it is possible to change the page and lose all the progress. Also, in the curation page if we click again in the search button (to search the gene) the whole page is refreshed. We should have a warning too.

Yes, will raise a separate pull request to handle these changes


Backend: Reverse geolocate the postal code for each blue bin

Context/Task
In our backend google sheets, we have the postal code of all recycling bins. However, we want to reverse geolocate them such that we can get the actual address of each postal code.

Convert postal codes into addresses using some framework (eg. Google Map API but its paid...)

Figma Link

NIL

Acceptance Criteria

NIL

Hey @neozhixuan ,
Can I check with you if my assumption is correct?

We are going to add address under facilities list tab.
Are we going to do them manually? or by code? - since i'm not familiar with the repo yet, would be nice if you could point out which file(s) to look at if it's gonna be done by code.

Thanks!

Hey @ruthondrada,

Yes it is under the address column in the google sheets.
We can utilise a reverse geolocation library in a coding platform like jupyter notebook to do it computationally. E.g. download this Facilities List table, run the current postcode column through a reverse geolocation function, and get the respective address.

e.g. 469662 -> 11 Bedok North Singapore ...

Sure, as long as the API limit doesn’t stop you from successfully reverse geolocation

thanks!  i notice that there's longtiude and latitude already.
Supposed i finished it this week, Do i just paste the postal code? or how dowe go about it?

Yep, just make sure the address is in the format of the current sheet entries!

hey @neozhixuan ,
i manage to have the python code running - just left with writing it on the excel sheet.
i used the onemap api as it is more accurate.
Also, i cannot write / over write in google sheet and i prefer not too as i think it's best if it's reviewed.
I'll attached the file her once done!
thanks!

RecycleGoWhere Backend.xlsx
@neozhixuan , updated the the address under new_address btw please take note of the following

there are some address that the api cannot be found (196 of them), can filter by Address not found
There is one entry that has empty postal code,


Register the bandit marker with pytest

Hey there 👋  I like and use this plugin. Thanks for maintaining it!
I encountered this while using pytest-bandit:

Unknown pytest.mark.bandit - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html

We encountered a similar issue with pytest-mypy recently: https://github.com/dbader/pytest-mypy/issues/25
As the error says, the solution is to register the marker: https://docs.pytest.org/en/latest/writing_plugins.html#registering-markers

Oh good find! Thanks for the contribution. This looks good to me so I'll get it merged and in a patch version on pypi.


Modal active fix

Set modal active state regardless of whether modal content is updated

What problem does this fix?

My app uses the ModalFactory to create a modal on the fly when a new level is started.  The modal is opened and closed programmatically as you progress through the level and finally destroyed once the level is completed.  While developing the app I noticed cases when the modal was not being opened or closed when specified.  This fix solves those issues and I haven't experienced any issues since implementing this fix.

I see, thanks for clarifying :)


Problem with afArrayField custom template when migrating to autoform 5

In Autoform 4 I was able to do the following: I built my custom afArrayField template to which I could pass a "subtemplate".
{{> afArrayField name="myEmployers" id="employers" template="customArray" subtemplate="company"}}

The subtemplate specified the layout of each array item.
<template name="company">
    {{> afQuickField name=current.name}}
    {{> afQuickField name=current.position}}

            {{> afQuickField name=current.startDate}}

            {{> afQuickField name=current.endDate}}

</template>

I used
{{> UI.dynamic template=../atts.subtemplate}}

in my custom template to do this (that's the only thing I changed from the default bootstrap template):
<template name="afArrayField_customArray">

{{afFieldLabelText name=this.atts.name}}

        {{#if afFieldIsInvalid name=this.atts.name}}

            {{{afFieldMessage name=this.atts.name}}}

        {{/if}}

            {{#afEachArrayItem name=this.atts.name minCount=this.atts.minCount maxCount=this.atts.maxCount}}

                        {{#if afArrayFieldHasMoreThanMinimum name=../atts.name minCount=../atts.minCount maxCount=../atts.maxCount}}
                        <button type="button" class="btn btn-primary autoform-remove-item"></button>
                        {{/if}}

                        {{> UI.dynamic template=../atts.subtemplate}}

            {{/afEachArrayItem}}
            {{#if afArrayFieldHasLessThanMaximum name=this.atts.name minCount=this.atts.minCount maxCount=this.atts.maxCount}}

                <button type="button" class="btn btn-primary autoform-add-item" data-autoform-field="{{this.atts.name}}" data-autoform-minCount="{{this.atts.minCount}}" data-autoform-maxCount="{{this.atts.maxCount}}"></button>

            {{/if}}

</template>

Now in Autoform 5 it is not working properly anymore. The subtemplate is used, but the afQuickFields in the subtemplate do not render correctly anymore: on the inputs the form-control class is missing). That's what the resulting html of one of the fields looks like:

    Company Name
    <input type="text" name="myEmployers.0.name" id="wGQXRPML9hS9wTPue" required="" data-schema-key="myEmployers.0.name">

How can I get this working again? Did I miss something on the migration?

A lot of the internal handling as far as how it looks up the tree for templates and such has changed. Can you just add template="bootstrap3" to all of your afQuickFields in the "company" template?

That worked. Thanks.
However, quite a few of my custom autoform templates have some problems with autoform 5. I will have to investigate in detail what's going on.

You might want to check the change log. There you'll find the info on what changes were introduced to templates.

I already did all the migration changes proposed in the change log. I guess regarding custom templates there are more changes not documented in the change log.

It's certainly possible I missed some. Lots of internal changes, and it's not always obvious what they affect. I can add to the change log if you figure out what's missing.

I found the following changes which should go into the changelog:

AutoForm.find() does not exist anymore
AutoForm.getFieldValue(fieldName, [formId]): if formId is in the context you are not allowed to pass formId as second parameter otherwise it did not work properly. I thought I could still pass it if I want to.
noselect="1" not working anymore; you have to use noselect=true (this was the reason why most of my custom templates did not work anymore)

Another thing I noticed: When saving a form, it seems to disappers for a few milliseconds. This is a bit annoying if you stay on the same route when submitting. The form seems to flicker then when submitting.

Thanks @nate331. The getFieldValue stuff was already mentioned in changelog, but I updated it to include the other changes you mention.
I'm not sure about the flickering. You should submit that as a separate issue with a reproduction.

I need the example to custom array field to.
Could you like show link of your source or meteor pad?
Thanks...


kcgi: 0.10.6 -> 0.10.7

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/kcgi/versions.
These checks were done:

built on NixOS
Warning: no invocation of /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/bin/kfcgi had a zero exit code or showed the expected version
0 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
directory tree listing: https://gist.github.com/06d87d498d359996e0d7b408ba2265d2
du listing: https://gist.github.com/4636af5ca6c5f9b15b55b27e0705b167

meta.description for kcgi is: '"Minimal CGI and FastCGI library for C/C++"'.
cc @leenaars for testing.
This build is cached with Cachix. To use the cache follow these instructions:
One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout a78e5a38cb4b0d7785e7d1f9103d51b428d696e1 && nix-shell --pure -I nixpkgs=. -p kcgi

Success on x86_64-linux (full log)
Attempted: kcgi
Partial log (click to expand)
moving /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/man to /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/share/man
shrinking RPATHs of ELF executables and libraries in /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7
shrinking /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/sbin/kfcgi
gzipping man pages under /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/share/man/
strip is /nix/store/4qvrxzxa535y8304mk195x50b6p9607d-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/lib  /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/sbin
patching script interpreter paths in /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7
checking for references to /build in /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7...
moving /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/sbin/* to /nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7/bin
/nix/store/sl5jhxlixmz36c2fqzdhd5az8wnhmx2n-kcgi-0.10.7

Success on x86_64-darwin (full log)
Attempted: kcgi
Partial log (click to expand)
install -m 0555 kfcgi /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7//sbin
install -m 0444 template.xml sample.c samplepp.cc sample-fcgi.c sample-cgi.c /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7//share/kcgi
post-installation fixup
moving /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/man to /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/share/man
gzipping man pages under /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/share/man/
strip is /nix/store/7ddbq63v97nk8gkbf7gcsfmby37h6gbl-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/lib  /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/sbin
patching script interpreter paths in /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7
moving /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/sbin/* to /nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7/bin
/nix/store/w575ynm71wib2063bm952v9hnxjxnpsz-kcgi-0.10.7

Failure on aarch64-linux (full log)
Attempted: kcgi
Partial log (click to expand)
  SC_ALLOW(select),
  ^~~~~~~~
sandbox-seccomp-filter.c:174:2: warning: missing initializer for field 'k' of 'const struct sock_filter' [-Wmissing-field-initializers]
In file included from sandbox-seccomp-filter.c:46:0:
/nix/store/rc89d76g3dbfaa1jrnzlini9j2ny88xv-glibc-2.27-dev/include/linux/filter.h:28:8: note: 'k' declared here
  __u32 k;      /* Generic multiuse field */
        ^
make: *** [<builtin>: sandbox-seccomp-filter.o] Error 1
builder for '/nix/store/f5hbkp2m4qn7pxw9siyp0d3f0bnijp83-kcgi-0.10.7.drv' failed with exit code 2
error: build of '/nix/store/f5hbkp2m4qn7pxw9siyp0d3f0bnijp83-kcgi-0.10.7.drv' failed


Added dependent: destroy to Billable :charges :subscriptions

So all charges + subscriptions will be removed if Billable/User gets destroyed.
Not 100% certain—thus draft PR—if this has any side-effects, but otherwise this is behaviour one wants.

This is an interesting one. On one hand, we might want to remove those records. On the other hand, we may want to keep them for historical purposes.
If you remove charges, you lose historical data about purchases. Of course, you have them in Stripe or Braintree, but it feels like we should preserve that data here too.

My thinking here is: if User wants their data removed, you should remove their data (GDPR + general good practice).
As such I might even add a call to Stripe to remove from there too, but as an optional argument.
Could make it optional altogether?

Just leave this for now.


Missing LICENSE

Would appreciate it, this code is generally useful.

Hey! Sorry for the delay. The repository is now MIT licensed.


When will openh264 support B-frame ?

When will openh264 support B-frame ?
Thanks

The current contributors to this project are focused on the conferencing use cases and B-frame is not on their short list.  Getting this soon would require new contributors who want to put this in.

Are there any new activities regarding full Main+HighProfile/B-frame support?
Thanks for the info!

currently openh264 decoder supports CHP, encoder supports main profile without B frame.


sendBytes hangs indefinitely waiting for the confirmation

When this is called:
ttn_response_t result = ttn.sendBytes(message->getBytes(),  message->getLength(), 1, true, 12);
And the message is not successfully sent it seems to never time-out. Is there a way to configure RN2483 retries and timeout behaviour?
I see that default is #define TTN_RETX "7" but this blocks execution for a very long time without any feedback.

After investigating this issue it seems like you are correct. The problem is that the RN2483 module does not give any feedback during the time it retries.
My recommendation would be that we set #define TTN_RETX "0" and then:

Let the sendBytes function return TTN_ERROR_SEND_COMMAND_FAILED after the first failed attempt. Then the user's application can handle retries.
-or-
We handle retries in the library, allowing debugPrint's to update the user why the send command is taking so long.

Both these solutions will transmit a new packet with an incremented frame counter. If we let the RN2483 handle retries, the frame counter in the retry packets is (as far as I know) the same. Using incremented frame counters for retries seems more secure to me.
My preferred solution is setting TTN_RETX to 0 and let the user's application handle retries. Fail fast!

The timeout implemented in https://github.com/TheThingsNetwork/arduino-device-lib/pull/210 can actually cause an issue for long retry delays. Looking for a clean solution now, however setting TTN_RETX 0 will solve it too.

Is there a way to distinguish a send the failed because of bad connection form the one that was aborted by the RN2483 because of duty cycle limitation?

When the send fails because of duty cycle restrictions, the module responds with no_free_ch. The TTN library returns TTN_ERROR_SEND_COMMAND_FAILED.
When the send fails because no acknowledgement was received, the module responds with mac_err. The TTN library returns TTN_ERROR_UNEXPECTED_RESPONSE.

Thank you! 👍
i think I was slightly mislead by the naming of errors.


Fixed missing usage of $propertiesToExtract in StorageDriver

See Issue #32

closes #32

Thank you very much, I will release a new version :)


Provide alternative/more informative operation names for spans

My team is currently exploring the use of this driver at HomeAway, and we were hoping to get more options for the operation name of the span. Currently it's hardcoded to "execute" at this line.

I'm currently creating a pull request that introduces a Span Name Provider interface that would allow users to create their own span name based on the query being executed.

Resolved with https://github.com/opentracing-contrib/java-cassandra-driver/pull/7

Thanks @JordanJLopez, super helpful.


Include server information in bind/listen errors.

Description
With multi server comes multi responsibility... for more verbose errors.
As pointed out in #5491, some platforms don't include host and port information in address-in-use and other related errors.
Before #5393 this wasn't an issue, as there were only two possible suspects, now there can be more.
This PR includes name, host and port in OSErrors.
Checklist

[x] I have updated tests where applicable.
[x] I have added an entry to the CHANGELOG.
[x] Check if # pragma: no error in web master is okay. EDIT: now covered
[x] Handle address-in-use errors separately and make suggestions if the user didn't enter a port.
[x] reduce code duplication of UDP servers

With multi server comes multi responsibility

Where can I press the revert button?
Jokes aside, this is a good idea. https://github.com/mitmproxy/mitmproxy/issues/5376 is tangentially related, but does not have to be tackled in the same PR.

Jokes aside, this is a good idea. #5376 is tangentially related, but does not have to be tackled in the same PR.

Will look into #5376 next, in a separate PR :)
But I've used the opportunity to simplify UDP server instance code in this PR.


Improve integration tests to capture unnecessary requirement of ml libraries

The requirement of installing ML libraries through pip install pyvespa[ml] should only happen when using modules that requires them such as vespa.ml or vespa.experimental.ranking.
This should avoid a new occurrence of #341.

The ML module is moved to learntorank, and this issue is no longer relevant.


Find messages in inbox by matching a gateway

Currently messages are determined to be 'text messages' only by their short length.
Ideally refreshInbox() will look at each message in the inbox and determine if their sender matches the pattern outlined by any gateway defined in Contact.py's list of gateways.

Another thought would be to target only receiving messages from known senders (contacts). This would eliminate any chance of a 'false positive', but it may be at too large expense of functionality.

Completed in ab0133c889e7af068880a1770d703ff149304b9e.
Decided to implement a regular expression to test against email sender addresses to identify if the message came from a supported domain/gateway.


3.0.fix sync server settings

Updated Sync Server to use settings.
Better logging, documentation

Implemented Module Manager.
Changed settings key to "sync_server" according to new PRs


Fix issue #132.

Fix #132. There is an issue when using convert_valid_utf8_to_utf32 related to a non-ASCII character following a long chain of ASCII characters. Credit to @KaiserLancelot for identifying the bug.

@lemire I think the issue is fixed. I have also added a test for this (test issue132). The problem was that it would store the input as ASCII if the continuation mask was 0. However, this is incorrect since even if the last entry is not a continuation byte, it does not mean it is ASCII (we would have to check that the next byte is also a leading byte to be sure). So, instead, I just directly checked that the input is ASCII just like in utf8_to_utf16::convert_valid.

@KaiserLancelot Could you confirm that fix the bug?

I think that's like the fix in https://github.com/simdutf/simdutf/pull/119

@NicolasJiaxin The issue has been solved, thank you for your work.


Modifications necessary for running on MariaDB

Issue: https://github.com/cashapp/spirit/issues/252
I've been able to get spirit to work on a MariaDB 10.5.23 system, this a pull request demonstrating the changes I had to make. Unknown if MariaDB would be a goal of yours, but pt-osc is too slow for the size of some of our tables. Caveat that we haven't gone through large production alters with this change yet.

Closing as feature is not desired.


fix(listing): 2pi user storefront was not loading because of owner ch…

…eck. implememted code to fix this

@seenusuvarna @mannyrivera2010 @J-Fid @skhtet @lsemesky

:+1:

:+1:


Improve performance of wing cell lofting

Description
This PR fixes #735. The calculation of the cell geometry was slow because the implementation builds on Boolean operations of cutting planes with the component segment shell. If one of the four borders of a cell runs along an isocurve of a single face, the calculation can be sped up by trimming the surface of that face.
How Has This Been Tested?

All existing test cases for wing cell run without error.
A performance test for the lofting algorithm of wing cells has been added. The performance is tested on a cell that spans two faces in spanwise direction. Therefore the inner and outer border can be trimmed, while the leading and trailing edge borders must be cut. For this case, the performance is improved by a factor of 2. Here is a summary of a quick profiling check with valgrind/callgrind:

bottlenecks before the change:

SplitShape 82%
GetUpperShape 15%

bottlenecks after the change

SplitShape 32%
GetUpperShape 29%
GetFaceAndUV 39% (We need to match points to faces and (u,v)-coordinates to check if we can trim or not)

Checklist:

[x] A test for the new functionality was added.
[x] All tests run without failure.
[x] The new code complies with the TiGL style guide.
[ ] New classes have been added to the Python interface.
[ ] API changes were documented properly in tigl.h.

Codecov Report

Merging #764 (3b11540) into master (1060d6f) will increase coverage by 0.04%.
The diff coverage is 76.58%.

@@            Coverage Diff             @@
##           master     #764      +/-   ##
==========================================
+ Coverage   69.44%   69.49%   +0.04%
==========================================
  Files         425      425
  Lines       23359    23392      +33
==========================================
+ Hits        16222    16256      +34
+ Misses       7137     7136       -1

Impacted Files
Coverage Δ

src/wing/CCPACSWingCell.h
100.00% <ø> (ø)

src/wing/CCPACSWingCellPositionChordwise.cpp
61.53% <0.00%> (+3.00%)
:arrow_up:

src/wing/CCPACSWingCellPositionSpanwise.cpp
56.57% <0.00%> (+1.45%)
:arrow_up:

src/wing/CCPACSWingCell.cpp
71.27% <73.09%> (-0.43%)
:arrow_down:

src/common/tiglcommonfunctions.cpp
74.30% <100.00%> (+0.87%)
:arrow_up:

src/common/tiglcommonfunctions.h
100.00% <100.00%> (ø)


workbench: initial

What & Why
Add a workbench --- a simple HTML page, maintained as a part of
TigerBeetle monorepo, whose purpose is to serve any kind of developer
related information in a low-effort way. Basically, this is GUI for all
our automation.
Currently, workbench displays two pieces of information:

Release rotation (subsuming the python script)
Results of macro benchmarks across commits (binary size & build time)

To enable 2, this also adds some continuous benchmarking (CB)
infrastructure.
How: Benchmark
CB is triggered by an GH action on the main branch. This action
intentionally isn't a CI gate (yet?). The idea is that we want to track
long-term trends in numbers, and find obvious regressions within a week.
CB is orechstrated by the scripts/workbench.zig script. There's no
specific rules what goes there, but, for starters, track just two
numbers:

the size of a release binary,
the time to build the software.

These probably aren't the most impactful things to track, but the idea
here is to establish a process of tracking. Adding more things should
be relatively trivial, once the base infrastructure is in place.
Benchmark results across many runs are stored as a JSON file in the
https://github.com/tigerbeetle/workbenchdb repository, using git as
a distributed database of sorts.
Specifically:

workbench/data.json is the file (the directory to allow "log
rotation" once a year)
it is a newline delimited JSON --- each line is a JSON object
each objects records a "run" --- a set of measurements at a particular
commit and a timestamp
a measurement has a label, a value, and a unit (bytes, ms, etc)
aggregating measurements with the same label across runs gives a time
series
the set of measurements can change over time --- different runs might
have different sets of measurements
unit is convenient both for humans and for the front-end to display
results without hard-coding a list of measurements.
as a TODO, it would perhaps be nice to track hosts cpu, memory and an
OS in the run.

It is assumed that a single workbench is run at a time, so no provision
for merge conflicts is made.
How: Workbench
A GitHub pages without any build step --- just some static files in
src/workbench directory. If this grows big, we'll probably want to
switch to TypeScript at least, but maybe it needn't grow big.
To display benchmark results, the data is fetched from
raw.githubusercontent and displayed using https://apexcharts.com/. No
affiliation with this particular library, it's just something I saw on
https://deno.com/benchmarks and I quite like that page.

Deployed here: https://matklad.github.io/tigerbeetle/
Not much to see there without much data, so use your imagination ;)

I am pretty sure that we'll need quite a few iterations on the UI side of things, but:

I am pretty confident about underlying metrics data model:

const Measurement = struct {
    label: []const u8,
    value: u64,
    unit: []const u8,
};

const Run = struct {
    timestamp: i64,
    revision: []const u8,
    measurements: []const Measurement,
};

I'd say we want to collect at least some measurements of this shape and then think about how to display them best.

I am somewhat confident about the overall shape of things here: a zig script that is triggered when new code gets into main branch, which pushes the results to some git repo, and which results are subsequently fetched and visualized by client-side javascript


Tab navigation not working in MacOS

Describe the bug
When navigating through the TAB button in a form, some elements are skipped:

input radio
input checkbox
button

Steps To Reproduce
Clone the snapshot/tabbing-behavior branch from repo
Install front-end dependencies with npm install and run the following commands in different terminal windows:
// runs the fron-end devServer
npm run dev

// runs the tauri app in dev mode
npm run tauri:dev

Follow this gif to setup the first steps which you'll just need to select a directory where you want the app to store your data, like sqlite database.
It will create a directory called consolidAcao in the directory you choose.
You may skip this step, first skip the gif.

To skip the apps first steps, open the devtools in the console tab and run the following command in it:
location.href = 'http://localhost:8080/home'

You'll be redirected to the following page

Now you'll only need to press the TAB button from your keyboard and check that the input radio, input checkbox and button will never get focused.
(I added a CSS to outline in red the focused element).

All elements in this sample are using the atribute tabindex with a number greater than 0

Expected behavior
Be able to interact with any form control using TAB navigation.
Screenshots
Tabbing in Tauri instance

Tabbing in Brave Browser

Tabbing in Safari, after allowing tab navigation through System Preferences

Platform and Versions (please complete the following information):
OS: Mac OS, version 11.5.0 X64
Rustc: 1.54.0
Node: v16.6.1
Would you assign yourself to resolve this bug?

[ ] Yes
[x] No

Additional context
None

Any prospects for resolving this bug? We've been developing an app in Tauri that relies on keyboard navigation without realizing this might be an issue.


Obfuscate private API usage

Fixed #269

Sorry, my lack of comments in that area doesn't make this such an easy task I suppose.
We can't just rename those methods, because by implementing a method with the same name as a private method, we're overriding that private method. You'd have to use the Objc runtime to add the methods after manually constructing the selector, like we're already doing in FLEXWindow.m
Here are the steps in a nutshell:

Implement the method we wish to override under a different name (which you've done already by renaming it)
Find a place to put some code that will run only once to re-add the method under the desired name—a private selector. You'll probably want to put this code in +load for the class implementing the method. (In the example above we put it in +initialize, and after seeing it I've realized we have a bug; see this article for more on these two methods)
Construct the private selector from a broken-up string, like we are in the example I linked.
Grab a reference to the IMP you wish to use to override the private method
Call class_addMethod with the private selector from step 3 and the IMP from step 4

If you have any questions about the Objc runtime, don't hesitate to ask! I'm here to help!

Thanks for Your reply,
I will try to study this topic better :)

Closing this because I'm about to release 4.0 and so much has changed by now that you'll have to do a major rebase or just reset your branch to master when 4.0 releases


SCA failing in module repositories

Expected Behavior
Code runs clean in GH actions.
Output of this ticket is list of things to fix from where SCA is failing
Actual Behavior
Sec vulnerabilities are highlighted by the SCA action.
Steps to Reproduce the Problem
1.Create a PR for the example account and see the failing actions
Other information
The SCA fails for code in modules that are used in the example account.
This ticket is to address all of the modules where the SCA is failing.
Get the list of modules where the SCA is failing, once this https://github.com/ministryofjustice/modernisation-platform/issues/3061 is implemented
A/C a list of repositories and number of issues in each so we can then prioritise which repos to tackle first

get the list of modules where the SCA is failing, once this ticket is implemented

this should be resolved as part of the workflow failure ticket

The referenced item above is listed as a new issue but there's a note stating it has been completed.

I discussed this ticket with @ewastempel who asked that we :

"treat this like an extra check to go through all of the module repos and check if the SCA is not failing"
So I've been going through the repositories looking for failing workflows and finding things to fix such as this PR:
https://github.com/ministryofjustice/modernisation-platform-ami-builds/pull/618/files (which also involved some manual terraform state manipulation to refresh to data.terraform_remote_state contents).

modules identified in Example enviroment:
module "ec2_test_autoscaling_group” - source = "github.com/ministryofjustice/modernisation-platform-terraform-ec2-autoscaling-group?ref=v2.1.1"
module "bastion_linux" - source = "github.com/ministryofjustice/modernisation-platform-terraform-bastion-linux?ref=v4.0.0"
module "ec2_test_instance" - source = "github.com/ministryofjustice/modernisation-platform-terraform-ec2-instance?ref=v2.2.0"
module "ecs-cluster" - source = "github.com/ministryofjustice/modernisation-platform-terraform-ecs-cluster//cluster?ref=v3.0.0"
module "service" - source = "git::https://github.com/ministryofjustice/modernisation-platform-terraform-ecs-cluster//service?ref=v3.0.0"
module "ecs_lb_access_logs_enabled" - source = "github.com/ministryofjustice/modernisation-platform-terraform-loadbalancer?ref=v3.1.2"
module "lb_access_logs_enabled" - source = "github.com/ministryofjustice/modernisation-platform-terraform-loadbalancer?ref=v3.1.2"
module "s3-bucket-lb" - source = "github.com/ministryofjustice/modernisation-platform-terraform-s3-bucket?ref=v7.1.0"
module "s3-bucket" - source = "github.com/ministryofjustice/modernisation-platform-terraform-s3-bucket?ref=v7.1.0"
i will work through the modules one by one and check for any SCA failures.

ec2_test_autoscaling_group All green, no failures seen within run /actions/runs/6792715578
bastion_linux All green, no failures seen within run /actions/runs/6792726581
ec2_instance All green, no failures seen within run /actions/runs/6792734263
ecs-cluster All green, no failures seen within run /actions/runs/6819752344
loadbalancer All green, no failures seen within run /actions/runs/6819775380
s3-bucket All green, no failures seen within run /actions/runs/6819767093


How to connect?

Do I use the same port as my FastAPI server? I have it running on port 8000, this is what my URL looks like when I try to connect
http://localhost:8000/ws/socket.io/
Is that correct, Im using the default setting.
Thanks

This is a python client example:
import asyncio
import socketio

debug=False
sio = socketio.AsyncSimpleClient(
    logger=debug,
    engineio_logger=debug,
)

async def main():
    await sio.connect(
        'http://localhost:8000',
        socketio_path='/ws/socket.io',
        )
    await sio.emit('join', {'room': 'aaaa'})
    event = await sio.receive()
    print('event = {}'.format(event))
    await sio.emit('leave', {'room': 'aaaa'})
    event = await sio.receive()
    print('event = {}'.format(event))
    await sio.disconnect()

if __name__ == '__main__':
    asyncio.run(main())


build:silence vercel comments on github

Well, looks like github.silent = true, is the opposite of what we want. This config will prevent the comment, but all the noisy bot activity is still there.

I don't actually think Vercel is in control of this, it's on GitHub side. There's things like this: https://github.com/patridge/github-pull-request-minimizer


Implement Go to Definition service

Allow the user to navigate to the definition of a function call defined in the same file or in any other file in the project. The user can use both Go to Definition and Peek Definition functionality.

Would it be possible to integrate with the Fortran Language Server? Combining it with this simple Fortran extension we already have a very robust code navigation and error reporting (like scope masking etc.). It would be great to have all the good stuff of your extension combined with the language server.

It is very easy to enable the Fortran Language Server with your extension, just apply these small patches on the LS extension and add "onLanguage:fortran_fixed-form" as activation event in package.json for your extension (I also added .for as fixed format extension).

This is really nice!! I will love to have this included. I just dont have the time right now to make it happen but you seem to be in the right direction.

I will prepare a pull request for you and one for the language server. I will simply reference each other and create a small how-to use them. This will be done early/middle of next week.

Closing this as the suggestion by @daloic seems more attractive.


Add empty serviceName

This would throw errors for us without a serviceName field, as described here
cc: @TylerRichie

I have this covered by #3 😄


[BUG] [Segment Replication] Segment replication is broken for plugins using custom codecs

What is the bug?
Segment replicaion event fails for plugins using custom codecs (e.g. kNN). The bug prevents replica shard from allocation resulting in forever unassigned replica.
Background
During peer recovery, for segment replication enabled indices a force segment sync is performed to keep the shard upto date from primary. Recently, we added a fix where to prevent segment replication events b/w primary and replica when they are using a different codec implementations. The fix had a bug where replica shard's default codec was used rather than the one on the engine config.
How can one reproduce the bug?
Steps to reproduce the behavior:

Create 2.7.0 OpenSearch cluster.
Install kNN plugin
Create index with kNN plugin with at least one replica

curl -X PUT "$host/test-index" -H 'Content-Type: application/json' -d '{
  "settings": {
    "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "replication.type": "SEGMENT",
      "knn": true
    }
  }
}'

See error in nodes on which replica shard recovery is attempted (enable trace logs to see primary shard codec)

org.opensearch.indices.recovery.RecoveryFailedException: [test-index][0]: Recovery failed from {ip-10-0-5-73.us-west-2.compute.internal}{KcxMm3vQRmOSQYCXAs8fNQ}{M8Xgt2zLS1CNSB0A6-P0FQ}{<IP_ADDRESS>}{<IP_ADDRESS>:9300}{di}{shard_indexing_pressure_enabled=true} into {ip-10-0-3-221.us-west-2.compute.internal}{moqR5mBCRbqL7ZVGZTB4ww}{M-c6kHBURUigjyyjzFnhbw}{<IP_ADDRESS>}{<IP_ADDRESS>:9300}{di}{shard_indexing_pressure_enabled=true} ([test-index][0]: Recovery failed from {ip-10-0-5-73.us-west-2.compute.internal}{KcxMm3vQRmOSQYCXAs8fNQ}{M8Xgt2zLS1CNSB0A6-P0FQ}{<IP_ADDRESS>}{<IP_ADDRESS>:9300}{di}{shard_indexing_pressure_enabled=true} into {ip-10-0-3-221.us-west-2.compute.internal}{moqR5mBCRbqL7ZVGZTB4ww}{M-c6kHBURUigjyyjzFnhbw}{<IP_ADDRESS>}{<IP_ADDRESS>:9300}{di}{shard_indexing_pressure_enabled=true})
        at org.opensearch.indices.recovery.RecoveryTarget.notifyListener(RecoveryTarget.java:134) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indices.replication.common.ReplicationTarget.fail(ReplicationTarget.java:176) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indices.replication.common.ReplicationCollection.fail(ReplicationCollection.java:192) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indices.recovery.PeerRecoveryTargetService$RecoveryResponseHandler.onException(PeerRecoveryTargetService.java:743) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indices.recovery.PeerRecoveryTargetService$RecoveryResponseHandler.handleException(PeerRecoveryTargetService.java:669) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1414) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.transport.InboundHandler.lambda$handleException$3(InboundHandler.java:420) [opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:747) [opensearch-2.7.0.jar:2.7.0]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: org.opensearch.indices.recovery.RecoveryFailedException: [test-index][0]: Recovery failed from {ip-10-0-5-73.us-west-2.compute.internal}{KcxMm3vQRmOSQYCXAs8fNQ}{M8Xgt2zLS1CNSB0A6-P0FQ}{<IP_ADDRESS>}{<IP_ADDRESS>:9300}{di}{shard_indexing_pressure_enabled=true} into {ip-10-0-3-221.us-west-2.compute.internal}{moqR5mBCRbqL7ZVGZTB4ww}{M-c6kHBURUigjyyjzFnhbw}{<IP_ADDRESS>}{<IP_ADDRESS>:9300}{di}{shard_indexing_pressure_enabled=true}
        ... 8 more
Caused by: org.opensearch.transport.RemoteTransportException: [ip-10-0-5-73.us-west-2.compute.internal][<IP_ADDRESS>:9300][internal:index/shard/recovery/start_recovery]
Caused by: org.opensearch.transport.RemoteTransportException: [ip-10-0-3-221.us-west-2.compute.internal][<IP_ADDRESS>:9300][internal:index/shard/replication/segments_sync]
Caused by: org.opensearch.indices.replication.common.ReplicationFailedException: [test-index][0]: Replication failed on
        at org.opensearch.indices.replication.SegmentReplicationTargetService$3.onFailure(SegmentReplicationTargetService.java:362) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.ActionListener$1.onFailure(ActionListener.java:88) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.ActionRunnable.onFailure(ActionRunnable.java:103) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:54) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.OpenSearchExecutors$DirectExecutorService.execute(OpenSearchExecutors.java:343) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.ListenableFuture.notifyListener(ListenableFuture.java:120) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.ListenableFuture.lambda$done$0(ListenableFuture.java:112) ~[opensearch-2.7.0.jar:2.7.0]
        at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
        at org.opensearch.common.util.concurrent.ListenableFuture.done(ListenableFuture.java:112) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.BaseFuture.setException(BaseFuture.java:178) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.ListenableFuture.onFailure(ListenableFuture.java:149) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.StepListener.innerOnFailure(StepListener.java:82) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.NotifyOnceListener.onFailure(NotifyOnceListener.java:62) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.ActionListener$4.onFailure(ActionListener.java:190) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.ActionListener$6.onFailure(ActionListener.java:309) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.support.RetryableAction$RetryingListener.onFinalFailure(RetryableAction.java:218) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.support.RetryableAction$RetryingListener.onFailure(RetryableAction.java:210) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:74) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1414) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.transport.InboundHandler.lambda$handleException$3(InboundHandler.java:420) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:747) ~[opensearch-2.7.0.jar:2.7.0]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: org.opensearch.common.util.CancellableThreads$ExecutionCancelledException: ParameterizedMessage[messagePattern=Requested unsupported codec version {}, stringArgs=[Lucene95], throwable=null]
        at org.opensearch.indices.replication.OngoingSegmentReplications.prepareForReplication(OngoingSegmentReplications.java:154) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indices.replication.SegmentReplicationSourceService$CheckpointInfoRequestHandler.messageReceived(SegmentReplicationSourceService.java:138) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indices.replication.SegmentReplicationSourceService$CheckpointInfoRequestHandler.messageReceived(SegmentReplicationSourceService.java:119) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.indexmanagement.rollup.interceptor.RollupInterceptor$interceptHandler$1.messageReceived(RollupInterceptor.kt:108) ~[?:?]
        at org.opensearch.performanceanalyzer.transport.PerformanceAnalyzerTransportRequestHandler.messageReceived(PerformanceAnalyzerTransportRequestHandler.java:43) ~[?:?]
        at org.opensearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:106) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.transport.InboundHandler$RequestHandler.doRun(InboundHandler.java:453) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:806) ~[opensearch-2.7.0.jar:2.7.0]
        at org.opensearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:52) ~[opensearch-2.7.0.jar:2.7.0]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

Replica shards remain unassigned and will remain forever because all shard replica allocation tries goes through same code flow.
➜  opensearch-cluster-cdk git:(main) ✗ curl -s -X GET "$host/_cat/shards?v"
index                     shard prirep state      docs store ip         node
test-index                0     p      STARTED       0  230b <IP_ADDRESS>  ip-10-0-5-73.us-west-2.compute.internal
test-index                0     r      UNASSIGNED
.opensearch-observability 0     r      STARTED       0  208b <IP_ADDRESS>  ip-10-0-5-73.us-west-2.compute.internal
.opensearch-observability 0     r      STARTED       0  208b <IP_ADDRESS> ip-10-0-3-221.us-west-2.compute.internal
.opensearch-observability 0     p      STARTED       0  208b <IP_ADDRESS> seed
.kibana_1                 0     p      STARTED       1 5.1kb <IP_ADDRESS> seed
.kibana_1                 0     r      STARTED       1 5.1kb <IP_ADDRESS> ip-10-0-4-116.us-west-2.compute.internal

This bug is also manifested when an older lucene codec is used during index creation
curl -X PUT "$host/test-index-lucene94" -H 'Content-Type: application/json' -d '{
  "settings": {
    "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "replication.type": "SEGMENT",
      "codec": "Lucene94"
    }
  }
}'

What is the expected behavior?
Replica shards should be assigned for all type of plugins
What is your host/environment?

OS: linux
Version [e.g. 22]: 2.7.0
Plugins kNN

This error is also manifested when using an older lucene codec implementation during index creation. One such example (verified on OS 2.7.0)
curl -X PUT "$host/test-index-lucene80" -H 'Content-Type: application/json' -d '{
  "settings": {
    "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1,
      "replication.type": "SEGMENT",
      "codec": "Lucene80"
    }
  }
}'

Created backports for removing string matching and use of default codec.

https://github.com/opensearch-project/OpenSearch/pull/7789
https://github.com/opensearch-project/OpenSearch/pull/7786

Thanks for raising this issue. I am curious to hear if an integration tests with plugins installed could have helped detect this earlier. @mch2 @andrross

Verified this bug is also not present during OS upgrades for kNN plugin (providing custom codecs).


Package doc for developers

Description
This adds a package doc that contains guidelines on how to implement a connector. The format is already aligned with the extended go doc format introduced in Go 1.19 (more info).
You can see how this will be formatted to HTML by using godoc. If you don't have it installed yet you should run this:
go install golang.org/x/tools/cmd/godoc@latest

Then you can run this in the SDK directory:
godoc -http=:8081

And navigate to http://localhost:8081/pkg/github.com/conduitio/conduit-connector-sdk/
P.S.: If you use a Go version older than 1.19 it won't look exactly as it should.

I see the linter is complaining, I'll probably need to reformat the package doc. In the meantime, if you review this, please focus on the content 😄


Fix documentation for React 15

Fix issue https://github.com/reactjs/React.NET/issues/259

Thanks!


e2e: compare output in Go string literal

I manually print out the command outputs when the issue
was reproduced, and checked they are matching when compared as
Go string literals (UTF-8), but not when compared with regex.
Fixes https://github.com/coreos/etcd/issues/4480.

@xiang90 Please review. The issue is easily reproducible in my laptop and with this fix, I don't see error anymore. Think when passed to regexp.MatchReader, some character got inserted making the regex non-matchy. Simplest way is just to compare the go string literals.

Can you please show the output that caused regex to fail?

@xiang90
a, b := proc.ReadLine()
fmt.Printf("%q === %q (%v)", a, expected, b)

"\x00bar\r" === "bar"

@gyuho do you have any idea where does the additional \x00 come from?

@xiang90 So the output is when I edit the code like this:
func spawnWithExpect(args []string, expected string) error {
	proc, err := spawnCmd(args)
	if err != nil {
		return err
	}
	a, b := proc.ReadLine()
	fmt.Printf("%q === %q (%v)", a, expected, b)
	ok, err := proc.ExpectRegex(expected)

And \x00 is null character (https://en.wikipedia.org/wiki/Null_character). Seems like we get it interacting with OS stdin, stdout (in C)? Not sure.

@heyitsanthony Any idea of where is the null char comes from? I remembered some of you mentioned that once...

@heyitsanthony  For the background... since it's null character, the text representation should be matching, but it just doesn't work with gexpect regex match.

@xiangli the extra nul could be coming from the gexpect buffering code, not sure what else could be doing it

@heyitsanthony I am fine with this solution as long as we know where the null comes from...

@xiangli it looks like ReadUntil is injecting nuls:
        join := make([]byte, 1, 512)
        chunk := make([]byte, 255)
        for {

                n, err := expect.buf.Read(chunk)

                if err != nil {
                        return join, err
                }

                for i := 0; i < n; i++ {
                        if chunk[i] == delim {
                                if len(chunk) > i+1 {
                                        // PROBABLY SHOULD BE [i+1:n]
                                        expect.buf.PutBack(chunk[i+1:])
                                }
                                return join, nil
                        } else {
                                join = append(join, chunk[i])
                        }
                }
        }

@heyitsanthony  I see. Thanks! Looks like gexpect buffers using rune, and we pass string literal to match those two text data. We should try to compare in the same format (type assert to string and compare).

@gyuho I'm not sure if rune is really the source of the problem here. It's not clear to me whether the regex matcher is getting corrupted data and that's breaking it; the ReadLine is corrupting the data for sure though.

@heyitsanthony I see. I will look into more. In the meantime, should we merge this or do we want to fix the gexpect? I think it makes things easier just to use strings for everything.
Thanks!

I submitted a patch to fix the corruption, but I don't think it's related to the regex stuff failing.
lgtm; the test might as well use the String version if it doesn't need a regex.

got it. Thanks!


perf: dont expand shared arrays too often

The current condition for the shared branch fires too often.

!bench

!bench


Branch packagerefractor

another refractor

Codecov Report

Merging #257 (8431989) into master (05deb94) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #257   +/-   ##
=========================================
  Coverage     74.60%   74.60%
  Complexity      621      621
=========================================
  Files           103      103
  Lines          1756     1756
  Branches        202      202
=========================================
  Hits           1310     1310
  Misses          378      378
  Partials         68       68

Impacted Files
Coverage Δ
Complexity Δ

src/main/java/seedu/ta/AppParameters.java
75.00% <ø> (ø)
9.00 <0.00> (?)

src/main/java/seedu/ta/Main.java
0.00% <ø> (ø)
0.00 <0.00> (?)

src/main/java/seedu/ta/MainApp.java
0.00% <ø> (ø)
0.00 <0.00> (?)

src/main/java/seedu/ta/commons/core/Config.java
68.18% <ø> (ø)
7.00 <0.00> (?)

...c/main/java/seedu/ta/commons/core/GuiSettings.java
88.46% <ø> (ø)
11.00 <0.00> (?)

...rc/main/java/seedu/ta/commons/core/LogsCenter.java
78.37% <ø> (ø)
10.00 <0.00> (?)

src/main/java/seedu/ta/commons/core/Messages.java
0.00% <ø> (ø)
0.00 <0.00> (?)

src/main/java/seedu/ta/commons/core/Version.java
82.50% <ø> (ø)
19.00 <0.00> (?)

...c/main/java/seedu/ta/commons/core/index/Index.java
100.00% <ø> (ø)
10.00 <0.00> (?)

...ta/commons/exceptions/DataConversionException.java
100.00% <ø> (ø)
1.00 <0.00> (?)

... and 93 more

Continue to review full report at Codecov.

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


Error on provisioning DEV: 'Agent did not show up ....'

Followed instructions to provision DEV for JKE sample app.
All steps OK up until MySQL_Server and WebSphere_Liberty_Profile: These did not complete  because the Agent did not show up even after 360.0 seconds.
Problem seems to be related to this (snipped from Instances output log):
Starting Execute cloud user/final scripts...
jke-provision-DEV-error.txt
[ 9826.844205] cloud-init[455]: apt-get is /usr/bin/apt-get
[ 9826.846668] cloud-init[455]: curl is /usr/bin/curl
[ 9826.850852] cloud-init[455]: /var/lib/cloud/instance/scripts/part-001: line 16: command: yum: not found
[ 9827.147831] cloud-init[455]:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
[ 9827.149945] cloud-init[455]:                                  Dload  Upload   Total   Spent    Left  Speed
[ 9827.172793] cloud-init[455]:   0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100    79    0    79    0     0   2300      0 --:--:-- --:--:-- --:--:--  3291
[ 9827.227347] cloud-init[455]: gzip: stdin: not in gzip format
[ 9827.228637] cloud-init[455]: tar: Child returned status 1
[ 9827.228811] cloud-init[455]: tar: Error is not recoverable: exiting now
[ 9827.230798] cloud-init[455]: /var/lib/cloud/instance/scripts/part-001: line 19: /tmp/ibm-ucd-agent-install/install-agent-with-options.sh: No such file or directory
[ 9827.232342] cloud-init[455]: Cloud-init v. 0.7.8 running 'modules:final' at Sun, 01 Jul 2018 18:40:47 +0000. Up 10.0 seconds.
[ 9827.232491] cloud-init[455]: 2018-07-01 18:40:48,030 - util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [127]
[ 9827.235737] cloud-init[455]: 2018-07-01 18:40:48,033 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
[ 9827.236775] cloud-init[455]: 2018-07-01 18:40:48,034 - util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_scripts_user.py'>) failed

Same for 14.04 image


Tracing

Trying again.  I rebased the branch, but the old pull request kept showing changes from the other branch that was merged in the middle....
This version is doing Jaeger tracing with the opentelemetry client code.
Currently going to kretzke-test on landscape.
you need to:
pip3 install --user opentelemetry-sdk
pip3 install --user opentelemetry-apoi
pip3 install --user opentelemetry.exporter.jaeger
for this to work. We'll need to get this as RPM's for the real install...
Sample submit trace: https://landscape.fnal.gov/jaeger/trace/567645c0924d925384ebde56bc53f63a

So I think I've addressed the major concerns.  We may want more spans, but I think those could be separate pull requests; it should be easy to add a few more decorators later if we want.   So if there are no objections I'll merge this late tomorrow or so.

@marcmengel I really wish you had waited for me to approve this before merging.

I backed it back out.


Example does not function on Custom embedder

As stated when running flutter build bundle AOT image on a custom Linux embedder ivi-homescreen platform type is not properly decoded.  Running runtime=debug image does work fine; see https://github.com/flutter/flutter/issues/103660.  I have native platform channel code implemented in ivi-homescreen, which interoperates with the example.
https://github.com/toyota-connected/ivi-homescreen
The usage of 1P plugin patterns only means that it supports the Flutter GTK embedder.  No other Linux embedder is supported.

I am closing all older issues. If this issue still exists in the latest version, please let me know.


Gated Propagation Module - ID Branch and LT/ST propagation

Reading the code I can't understand how to identify the Visual Branch and ID Branch in the GatedPropagationModule.

https://github.com/yoxu515/aot-benchmark/blob/315c62f0fc0eaaa6c26ede48f32f2ff41e54209a/networks/layers/transformer.py#L645
Based on the implementation above, you stack the Visual and ID information and then the output of the "long_term_attention" and "short_term_attention" is splitted into it seems to be Visual and ID. But why splitting the output of GP function we have Visual and ID info if they have been computed toghether in that modules?

A good question. The primary consideration for concatenating visual and ID "V"s is "efficiency".
Since the attention map is shared between the visual and ID branches, we get Softmax(visual_query * visual_key) * Concat(visual_value, ID_value) = Concat(Softmax(visual_query * visual_key) * visual_value, Softmax(visual_query * visual_key) * ID_value. But the former implementation is more memory-efficient.

Okay, but in the end isn't the output a mix of visual and ID because of DW_CONV and Fully Connected Layer (projection)?
https://github.com/yoxu515/aot-benchmark/blob/315c62f0fc0eaaa6c26ede48f32f2ff41e54209a/networks/layers/attention.py#L701
https://github.com/yoxu515/aot-benchmark/blob/315c62f0fc0eaaa6c26ede48f32f2ff41e54209a/networks/layers/attention.py#L702

Right, they will be mixed. I also tried to project visual and ID separately, which is more complex, but no performance gain was observed.


Git bash very slow in VS code

Type: Performance Issue
Open any project in vs code with git and the command takes 1 minute to execute.
VS Code version: Code 1.90.0 (89de5a8d4d6205e5b11647eb6a74844ca23d2573, 2024-06-04T19:33:54.889Z)
OS version: Windows_NT x64 10.0.22631
Modes:

System Info

Item
Value

CPUs
11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz (8 x 2419)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_graphite: disabled_offvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
15.70GB (8.19GB free)

Process Argv
--crash-reporter-id 943f905e-c589-482c-b4dd-70aca8dcb267

Screen Reader
no

VM
0%

Process Info
CPU %	Mem MB	   PID	Process
    0	   107	  7428	code main
    0	    93	  1948	fileWatcher [2]
    0	   143	  3140	extensionHost [2]
    0	   105	  2792	     "C:\Users\conta\AppData\Local\Programs\Microsoft VS Code\Code.exe" "c:\Users\conta\AppData\Local\Programs\Microsoft VS Code\resources\app\extensions\json-language-features\server\dist\node\jsonServerMain" --node-ipc --clientProcessId=3140
    0	    91	  4396	ptyHost
    0	     7	  8632	     conpty-agent
    0	     5	 16588	     "C:\Program Files\Git\bin\bash.exe" --init-file "c:\Users\conta\AppData\Local\Programs\Microsoft VS Code\resources\app/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh"
    0	    11	  9356	       "C:\Program Files\Git\bin\..\usr\bin\bash.exe" --init-file "c:\Users\conta\AppData\Local\Programs\Microsoft VS Code\resources\app/out/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh"
    0	   118	  7884	shared-process
    1	   212	  8444	   gpu-process
    0	    43	 10632	   utility-network-service
    0	    29	 11268	   crashpad-handler
    0	   100	 14272	window [3] (Issue Reporter)
    0	   210	 18320	window [2] (settings.json - Arias Choice - Visual Studio Code)

Workspace Info
|  Window (settings.json - Arias Choice - Visual Studio Code)
|    Folder (Arias Choice): 492 files
|      File types: png(204) bak(154) rpyc(24) rpy(23) mp3(21) save(12) txt(5)
|                  ttf(4) webm(4) json(3)
|      Conf files: settings.json(1);

Extensions (8)

Extension
Author (truncated)
Version

dart-code
Dar
3.90.0

flutter
Dar
3.90.0

languague-renpy
Luq
2.2.2

debugpy
ms-
2024.6.0

python
ms-
2024.8.0

vscode-pylance
ms-
2024.6.1

remote-wsl
ms-
0.88.2

vscode-gradle
vsc
3.13.5

A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscoreces:30445986
vscod805:30301674
binariesv615:30325510
vsaa593:30376534
py29gd2263:31024239
vscaat:30438848
c4g48928:30535728
azure-dev_surveyone:30548225
2i9eh265:30646982
962ge761:30959799
pythongtdpath:30769146
welcomedialogc:30910334
pythonidxpt:30866567
pythonnoceb:30805159
asynctok:30898717
pythontestfixt:30902429
pythonregdiag2:30936856
pythonmypyd1:30879173
pythoncet0:30885854
h48ei257:31000450
pythontbext0:30879054
accentitlementst:30995554
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
cppperfnew:31000557
dsvsc020:30976470
pythonait:31006305
jchc7451:31067544
chatpanelt:31048053
dsvsc021:30996838
724cj586:31013169
pythoncenvpt:31062603
a69g1124:31058053
dvdeprecation:31068756
pythonprt:31056678
dwnewjupyter:31046869
2f103344:31067618
26j00206:31048877

Can confirm, experiencing the same on Windows 11.
Here's a video showing how slow Git Bash is in Code now vs. how it runs outside of it, you can see how it hangs for a few seconds after returning the output of a command:
https://github.com/microsoft/vscode/assets/1656595/97ccda82-ef19-43f4-beee-31364d99eecc

I face the same issue with you, in both of my window computer. Zsh in WSL or Linux is still good

I am also facing the same issue after updating. Git bash is incredibly slow to render command output in the integrated terminal. Powershell with the integrated terminal works fine and using git bash outside of VSCode also works fine.

/duplicate of https://github.com/microsoft/vscode/issues/212090 which is currently pinned to the top of the Issues page

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Pull Request from Archive Tool.

:x: Validation status: errors

File
Status
Preview URL
Details

DocsArchiveDemoArchived/you-need-to-update-your-android-device.md
:x:Error

Details

DocsArchiveDemoArchived/you-need-to-update-your-device-OS-security-patch-android.md
:x:Error

Details

:warning:Warning

Details

DocsArchiveDemoArchived/you-need-to-update-your-android-device.md

[Error] Unable to resolve "[!INCLUDEwit_nextref]

" at line 33: Absolute path "https://reivew.docs.microsoft.com/DocsArchiveDemoSrc/includes/end-user-os-update-guidance" is not supported.

DocsArchiveDemoArchived/you-need-to-update-your-device-OS-security-patch-android.md

[Error] Unable to resolve "[!INCLUDEwit_nextref]

" at line 37: Absolute path "https://reivew.docs.microsoft.com/DocsArchiveDemoSrc/includes/end-user-os-update-guidance" is not supported.

[Warning] Multiple input files are attempting to write to the same output file "TOC.json". Please rename at least 1 of following input files to ensure no duplicate output files: "TOC.md, toc.yml".
[Warning] Multiple input files are attempting to write to the same output file "TOC.mta.json". Please rename at least 1 of following input files to ensure no duplicate output files: "TOC.md, toc.yml".

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


add robust merge optional

@hufnagel, Dirk please review, Tier0 workflow spec needs to be updated to make robust merge false.

this need to be tested


Render table in Markdown format on unicode(dataset)

This will be useful for testing and for, well, outputting data in Markdown. Also, this could be helpful in the interactive python's prompt.
Format description is here: http://michelf.com/projects/php-markdown/extra/#table
I want to implement this during the next week, if you have no objections.

I'd love this! I wasn't aware that there was a spec for markdown tables.
:+1:


Message.isMemberMentioned() throwing error

When I call Message.isMemberMentioned() passing a ClientUser who has NOT been mentioned, I get this error:
Message.js:364
    if (member instanceof Discord.GuildMember && member.roles.some(r => this.mentions.roles.has(r.id))) return true;
               ^

TypeError: Right-hand side of 'instanceof' is not an object

The entire function is defined like this:
isMemberMentioned(member) {
    if (this.mentions.everyone) return true;
    if (this.mentions.users.has(member.id)) return true;
    if (member instanceof Discord.GuildMember && member.roles.some(r => this.mentions.roles.has(r.id))) return true;
    return false;
}

When I log Discord.GuildMember, it is undefined. Any ideas?

This is fixed in the master branch.

I see, thank you! I hope there will be a release soon that contains this fix as well :)


:bomb: release 1.5.0

IMPORTANT: Please do not create a Pull Request without creating an issue first.
Before submitting (must do checklist)

[ ] Did you read the contribution guide?
[ ] Did you update the docs? We use Numpy format for all the methods and classes.
[ ] Did you write any new necessary tests?
[ ] Did you update the CHANGELOG?

Type of Change

[ ] Examples / docs / tutorials / contributors update
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Improvement (non-breaking change which improves an existing feature)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Proposed Changes

Related Issue

Closing issues

Codecov Report

Merging #415 (d96b659) into master (690db0f) will decrease coverage by 33.72%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           master     #415       +/-   ##
===========================================
- Coverage   87.22%   53.49%   -33.73%
===========================================
  Files          99       99
  Lines        5002     5002
===========================================
- Hits         4363     2676     -1687
- Misses        639     2326     +1687

Impacted Files
Coverage Δ

etna/commands/__init__.py
0.00% <0.00%> (-100.00%)
:arrow_down:

etna/commands/backtest_command.py
0.00% <0.00%> (-96.43%)
:arrow_down:

etna/commands/forecast_command.py
0.00% <0.00%> (-92.00%)
:arrow_down:

etna/commands/__main__.py
0.00% <0.00%> (-87.50%)
:arrow_down:

etna/commands/resolvers.py
0.00% <0.00%> (-80.00%)
:arrow_down:

etna/analysis/outliers/density_outliers.py
22.44% <0.00%> (-75.52%)
:arrow_down:

etna/transforms/fourier.py
27.08% <0.00%> (-72.92%)
:arrow_down:

etna/transforms/filter.py
28.57% <0.00%> (-71.43%)
:arrow_down:

etna/analysis/outliers/median_outliers.py
25.00% <0.00%> (-70.84%)
:arrow_down:

etna/datasets/datasets_generation.py
26.47% <0.00%> (-70.59%)
:arrow_down:

... and 60 more

Continue to review full report at Codecov.

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


Load latest consistent metadata from disk

Fixes issue #:
The issue tracker does not have an issue for this task.
Description of the changes being introduced by the pull request:
This pull request ensures that repository_tool.load_repository() loads the latest consistent metadata from disk.  The latest consistent metadata for some role X should be loaded from disk even if a different, lower version of X is listed in Snapshot.  This behavior is needed because roles may independently add/edit metadata without updating Snapshot.
For example, suppose we have a collaborative repo where the Root or some delegated file is modified.  The person responsible for the metadata file signs it with keys that only they control.  The written metadata file now differs from what is specified in the "stale" Snapshot file.  To refresh the repo (new versions of Timestamp and Snapshot must be written), the repository maintainers must load the latest consistent metadata on disk and not what's in the current Snapshot, otherwise the newly updated Root or delegated file is ignored.  Once the latest consistent metadata is loaded, the stale Snapshot file can be re-signed with the latest versions of metadata available on disk.
Please verify and check that the pull request fulfills the following
requirements:

[ ] The code follows the Code Style Guidelines
[ ] Tests have been added for the bug fix or new feature
[ ] Docs have been added for the bug fix or new feature

Signed-off-by: Vladimir Diaz<EMAIL_ADDRESS>

Thanks for the fix, @vladimir-v-diaz !


chat content not showing up.

[write something useful and descriptive here]
I got the desktop notification and see the message preview in the lefthand chat pane. But the full message content isn't loading.

my log id: c666d32c4a6d9771a8ec031c

update on this (this is @malgorithms ) - running keybase chat read chris,max from rudder's computer can show these contents...it's just missing from the GUI


vs code custom task not working properly

HI,
I've cloned the repo and run the task-provider-sample  with a Rakefile with several tasks and wheh you open the task ( on the extension host ) we see only the build task  although we have additional tasks ... see the image below
while debug the code I see
result.push(task); is filled with all the required tasks, however in task UI there is only one.
Any idea ?
im using vscode Version: 1.42.1

Please share your settings.json and tasks.json.

@alexr00  here is the files of the source , the target while debug (extension development host )  have an empty .vscode folder ...let me know if you need additional info ?
settings.json
{
	"editor.insertSpaces": false,
	"tslint.enable": true,
	"typescript.tsc.autoDetect": "off",
	"typescript.preferences.quoteStyle": "single"
}

tasks.json
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "npm",
			"script": "watch",
			"problemMatcher": "$tsc-watch",
			"isBackground": true,
			"presentation": {
				"reveal": "never",
				"panel": "dedicated"
			},
			"group": {
				"kind": "build",
				"isDefault": true
			}
		},
		{
			"type": "npm",
			"script": "compile",
			"problemMatcher": "$tsc",
			"presentation": {
				"reveal": "never",
				"panel": "dedicated"
			}
		}
	]
}

Thanks

Sorry, I found the issue. thanks!


Prettier Element Matcher output when selector can't be found

Currently the output when a selector can't be matched looks like the following:
Error: Error: Cannot find UI Element.

((((respondsToSelector(accessibilityIdentifier) && accessibilityID('MetricCardDataTable')) && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && ancestorThatMatches(((respondsToSelector(accessibilityIdentifier) && accessibilityID('MetricCard:applicationCompletionRate')) && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && ancestorThatMatches((respondsToSelector(accessibilityIdentifier) && accessibilityID('MetricList:applicationEfficiency')))))))) && !(kindOfClass('RCTScrollView'))) || (kindOfClass('UIScrollView') && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && ancestorThatMatches((((respondsToSelector(accessibilityIdentifier) && accessibilityID('MetricCardDataTable')) && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && ancestorThatMatches(((respondsToSelector(accessibilityIdentifier) && accessibilityID('MetricCard:applicationCompletionRate')) && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && ancestorThatMatches((respondsToSelector(accessibilityIdentifier) && accessibilityID('MetricList:applicationEfficiency')))))))) && kindOfClass('RCTScrollView'))))))

This is from using the following selector:
    element(
      by.id('MetricCardDataTable').withAncestor(
        by.id('MetricCard:applicationCompletionRate').withAncestor(
          by.id('MetricList:applicationEfficiency')
        )
      )
    );

It would be nice if the output would look more like:
    MetricList:applicationEfficieny
      MetricCard:applicationCompletionRate
        MetricCardDataTable

This better reflects the component hierarchy and would make it easier at a glance to see which selector failed without having to parse through some of the default stuff (Scrollview, RCTScrollview, etc)

The error text is displayed by Earl Grey when its matcher fails. That is the actual native stuff that fails. If anything, I think we should add instead of hide this line.
This is not a priority for us. Please file PRs with improvements.

Closing old issues. This is out of scope for this project.


/project set-artifact command

Fixes #32
Depends on https://github.com/LearnersGuild/game/pull/208

LGTM


"graphql" being a devDependencies make it impossible to use in a dependent project

I have a project that depends on graphiql AND graphql, but I'm getting Error: Schema must be an instance of GraphQLSchema. Also ensure that there are not multiple versions of GraphQL installed in your node_modules directory.
and I actually have both node_modules/graphql and node_modules/graphiql/node_modules/graphql .
I don't think graphiql should devDep on graphql in the first place, because it's already a peerDep

devDependencies of dependencies aren't supposed to be installed when you npm i a project.
The graphql devDep of graphiql should only have been installed if you went inside graphiql and exec-ed npm i, which you should not do (not have done).

Woo, I'm sorry, I was wrong. The weirdness is that graphql was being installed if I forget to put it as a dep at the top-level BUT no error was raised. (so I had to clean my node_modules and try again)
Hopefully this will be fixed by NPM 3+ (peerDep not being auto-installed)
Thanks


Extend InventoryCollectionDefault::NetworkManager with network_groups

With this commit we implement a class function that is needed when implementing graph inventory refresh for NetworkManager that support NetworkGroup inventory object. The new network_groups function provides hash of common properties that are needed by persister.
@Ladas I've assigned you since I remember you being in charge of introducing graph refresh. Please let me know if someone else should be assigned instead.
@miq-bot add_label enhancement
@miq-bot assign @Ladas
/cc @gberginc

@miq-bot assign @blomquisg

I'm not sure what the rationale to use NetworkGroup was either, but I think Nuage guys are using miq in production already (not 100% sure about this). I don't think I have balls to go change this without consulting them first 😄
My plan would be to implement graph inventory refresh that works exactly like their current legacy refresher and then drop the legacy refresher completely. Then, having only one fansy refresher, I'd go into changing models if requested. Sounds good?

@blomquisg I think Ladas and myself converged to the point where only merge button needs to be pressed. Naturally, if you have any comments, I'd be glad to hear them.

Punting over to @agrare because I think he's been following more of the general networking discussions than I have.


Building a staticlib that includes a C library dependency.

This may not be an issue with cxx per se, so feel free to close this issue if so. Let me describe my situation.
You may remember I opened an issue earlier about building a library from cxx that I would then link in my C++ project via CMake. You said that in this case I need to build it as a staticlib crate type, which works great. The only problem with this is that my Rust code has the zmq crate as a dependency, which is a wrapper around the C ZeroMQ library. And when I build my cxx project as staticlib, the underlying libzmq.a static library is not linked into it. I have to then manually link it in my CMakeLists.txt file, which means that I need ZeroMQ to be present in the system in a place where CMake can find it. In the end, it makes building the entire project more complicated that it could be.
Would you say this is an issue with building staticlib crates in general, with the zmq crate or cxx?

If you'd like to avoid relying on ZeroMQ to be present in the system in a place where CMake can find it, the zmq crate's vendored feature appears relevant. https://github.com/erickt/rust-zmq/blob/eede4315e10eccddec4348561c42ded534e6001e/Cargo.toml#L28
It appears to build libzmq into the cargo-produced staticlib using https://github.com/jean-airoldie/zeromq-src-rs.
Generally I think what you're seeing go wrong is that the staticlib you are handing off from Cargo to CMake is not the only output artifact that Cargo produces. There is a lot of metadata along with it like linker flags, which are collected by Cargo from the output of build scripts in the transitive dependency graph. Unfortunately Cargo only records all of that information in a way that is only intended to be consumed by Cargo.
Based on what I've seen from the experience of people using CMake, this workflow of trying to mix Cargo and CMake is going to be super annoying for anything beyond very basic crates. If it's an option for you, it could be worth exploring something like Bazel which natively handles mixed-language projects extremely well.
Otherwise I would recommend pursuing how to connect the rest of Cargo's output metadata to CMake. Likely requires Cargo changes.

Hmm, when you say "requires Cargo changes", do you mean changing its source code? Then it's definitely more than I can handle.

After reading your comment I decided to check all the cargo output artifacts and there's indeed the static ZeroMQ lib stored in one of the folders. I'm gonna try a brute force approach and just look for it recursively from CMake.

Just letting anyone who might possibly find this useful, my crude solution works good enough. I basically just glob the cargo build folder for the library filename inside my CMake file and link it to my C++ executable.


[BUG] Discord image attachments aren't linked in-game

What happened?

Discord image attachments do not display:

What should happen?

Before version 2.0.0, attachments do display, as seen here:

Steps to reproduce

Simply send an embedded image in the integrated channel

Version

[ ] 1.12
[ ] 1.15
[x] 1.16

Platform

[x] Forge
[ ] Spigot

Mod version: 2.1.0 (Seems to affect only versions after 2.0.0 from my testing)
Config file
(Used default config file)
Crash report if available (use https://hastebin.com)
Additional info

This is already known and an issue of an external library. Keeping this open until it gets fixed there


URL for online demo should be changed.

https://inspirit.github.com -> https://inspirit.github.io

all links are fixed now