Overruling rules (AS announcements)

Describe the bug
I have a list of prefixes with the same origin AS. I want to create two rulesets:

prefixlist with origin AS and a select set of neighbors;
prefixlist with origin AS and an other select list of neighbors for which a no_export is required.
Aspected behaviour is that both use-cases is respected.

Affected Component(s)

[X] Back-End (Database, Microservices, Containers, etc)
[ ] Front-End (Flask, API, etc)
[ ] Docs
[ ] Build System

To Reproduce
In config.yaml I have the following setup:
prefixes:
simple_prefix_list: &my_prefixes

<IP_ADDRESS>/24
<IP_ADDRESS>/24
<... skip monitors ...>
asns:
my_asn: &my_asn
1
my_neighbors: &myneighbors
11
12
my_neighbors: &my_noexp_neighbors
21
222
rules:
prefixes:

*my_prefixes
origin_asns:
*my_asn
neighbors:
*my_neighbors
mitigation: manual

prefixes:

*my_prefixes
origin_asns:
*my_asn
neighbors:
*my_noexp_neighbors
policies:
'no-export'
mitigation: manual

Expected behavior
Both situation will be observed in their respective situation (is the combination origin AS and neighbour with given policy).
Now only the no-export rule is followed.
Screenshots
If applicable, add screenshots to help explain your problem.
System (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version latest

Additional context
Add any other context about the problem here.

@marcgweg thank you for reporting this Marc. Could you please elaborate more on the issue, so that we can add respective tests and see what is going on? I.e., do you actually see BGP updates within *my_prefixes with origin *my_asn and neighbor within myneighbors and only the second rule kicks in? Could you also please fix the typo in my_neighbors? It seems that you use exactly the same name for 2 different sets (the normal and the no export ones) and the yaml anchors seem also mistyped: &myneighbors (instead of &my_neighbors). This does not generate an error in yaml but may cause this logical problem with the 2 rules. After this is fixed, could you try again and let us know? if it is still an issue I will add more tests to check what is going on. Thanks!

To help clarify my previous comment, please try the following conf:
simple_prefix_list: &my_prefixes
    - <IP_ADDRESS>/24
    - <IP_ADDRESS>/24
    <... skip monitors ...>
    asns:
    my_asn: &my_asn
    1
    my_neighbors: &my_neighbors
    - 11
    - 12
    my_noexp_neighbors: &my_noexp_neighbors
    - 21
    - 222
    rules:
    prefixes:
        *my_prefixes
        origin_asns:
        *my_asn
        neighbors:
        *my_neighbors
        mitigation: manual
    prefixes:
        *my_prefixes
        origin_asns:
        *my_asn
        neighbors:
        *my_noexp_neighbors
        policies:
        'no-export'
        mitigation: manual

(with the mentioned typos fixed). If the problem persists, please let me know.

Okay, I use a different config in production, then I sent to you. In your config I miss the "-" symbols. I check my config, and try to get results you asked for.

I guess the following was wrongly typed:
my_noexp_neighbors: &my_noexp_neighbors should be
my_neighbors: &my_noexp_neighbors !?

@marcgweg the names you specify the AS groups and prefixes (my_asn, my_neighbors, etc) are like variables so they need to be unique. For your example this is the correct configuration:
prefixes:
    simple_prefix_list: &simple_prefix_list
        - <IP_ADDRESS>/24
        - <IP_ADDRESS>/24

<... skip monitors ...>

asns:
    my_asn: &my_asn
        8522
    my_neighbors_1: &my_neighbors_1
        - 11
        - 12
    my_neighbors_2: &my_neighbors_2
        - 21
        - 22

rules:
- prefixes:
    - *simple_prefix_list
  origin_asns:
    - *my_asn
  neighbors:
    - *my_neighbors_1
  mitigation:
      manual
- prefixes:
    - *simple_prefix_list
  origin_asns:
    - *my_asn
  neighbors:
    - *my_neighbors_2
  policies:
     'no-export'
  mitigation:
     manual

AH, okay. I thought the my_neighbors(_1) in the construction:
my_neighbors_1: &my_neighbors_1
- 11
- 12
was kind of a type declaration. So every neighbor should be unique in both left and right hand side...

okay, I have now the following config:
prefixes:
simple_prefix_list_1: &prefix_list_1
- <IP_ADDRESS>/24
- <IP_ADDRESS>/24
skip monitors
asns:
my_asn_1: &my_asn_1
8522
my_neighbors_1: &my_neighbors_1
- 11
- 12
my_neighbors_2: &my_neighbors_2
- 21
- 22
rules:

prefixes:

*prefix_list_1
origin_asns:
*my_asn_1
neighbors:
*my_neighbors_1
mitigation:
manual

prefixes:

*prefix_list_1
origin_asns:
*my_asn
neighbors:
*my_neighbors_2
policies:
'no-export'
mitigation:
manual

Btw: I have 18 ASNs in the my_neighbors_2 list (with the no-export option)

No problem about the edit modus. So now everything works as expected, right?

Oh sorry, was blaming the Git edit modus.
But when I try the edit the config within Artemis, I get the strange behaviour that after pressing save the first time, in 3 iterations the config gets scrambled up. When I do the edit again, scratch everything, and paste the config again --> then press save, the strange behaviour doesn't return. Another issue I guess...

I still get the issue when the origin AS8522 with neighbor 11 gets a hijack, when 2 more Ases are seen within the path. As like it is seen as a no-export path.

I do not get what you mean with scrambling, do you have an example? When you press save, we format the conf in fully-compliant (i.e., format-wise) yaml that remains stable when diffs are created (e.g., during a "learn hijack rule" event). If possible please create a new issue with the exact erroneous behavior so that we reproduce it (and make sure that the formatter works always correctly).
So what is going on in your case, is that the first rule you have for the prefix clears the BGP update (since the origin and neighbor is valid), but the second one activates route leakage check. This is as intended in the design of the detection mechanism (https://github.com/FORTH-ICS-INSPIRE/artemis/blob/master/backend/core/detection.py#L811 ). So what you actually need is that the first rule clears the BGP update and the second one is not activated at all, correct? If yes, this can be done yes, but need to check if it affects sth else in the design (just want  to understand the problem correctly).

So what we need to do there is probably simply return when the first rule clears the hijack, but maybe other use cases require all rules related to the prefix be checked first. When we designed this, we were conservative to avoid missing a hijack, but I think I get your use case now. Need to coordinate with the other 2 devs in case I am missing sth.

ok. Thank. My use case is a scenario of anycast addresses, which are deployed globally (hence the first neighbors block) and locally (the no-export group). The global group, I wish to get notified in case of a hijack. The second group (no-export) in case of unwanted route leakage.

Th scrabble case: I cannot reproduce now... Perhaps the docker-compose pull was the solution to this.

As a temporary workaround, I have removed the no-export rule group from the config. Guess it is now becoming a feature request instead of a bug report!?

No it is fine as a bug report; I think the root cause is that since we examine the different dimensions of a hijack event in parallel, it may happen that we do not synchronize the analysis for exactly the same rules in case there are multiple rule for exactly the same prefix, like in your use case. So I think it is a bug in that sense; we will fix it for the coming release (will also notify when it is available in the bleeding edge master). I will take a careful look at it next week to root it out, and will also add some tests related to this use case to make sure that we deal with the bug. Many thanks for reporting this Marc, it seems to be insidious, not covered by the rest of the tests we put in place :) .

Note to my self for dealing with this issue (for dev purposes): passing the indexed conf object/rule instead of the initial prefix node (https://github.com/FORTH-ICS-INSPIRE/artemis/blob/master/backend/core/detection.py#L460) in the respective parallel checkers, so that they all work on exactly the same object at exactly the same time and avoid rule confusion.

@marcgweg the fix will be included in latest master ("latest" tag) in a few hours. It will also be part of the 1.4.1 release, but if you would like to upgrade to latest (pulling the latest code via git, and containers via docker-compose pull) we would welcome testing and making sure that it works exactly as we expect (just make sure you also pull the latest containers themselves)

@vkotronis Just installed the latest version. I don't get the previous error situation. So the check seems correct. I'll try to contact one of the no-export ASNs to temporary leak the route information. Thanks for the handling of this issue.

I am simply re-opening the issue to first get the final OK by Marc (controlled route leak check).

I tested the functionality by placing a correct neighbor in the no-export group. I got directly a hijack message of type L (indicating rout leakage). So it works as suspected.


Tweaks to TimeSeriesForest

I'm just proofing the two toolkits paper, can I suggest these changes to code related to TimeSeriesForestClassifier

FunctionTransformer(func=time_series_slope), validate=False)
set validate to false be default
For RISE, we do this
('acf',RowwiseTransformer(FunctionTransformer(func=acf_coefs,
validate=False))),
('ps',RowwiseTransformer(FunctionTransformer(func=powerspectrum,
validate=False)))

provide the functions acf_coefs and powerspectrum.
note both of these throw exceptions with zero variance intervals, so RISE implemented with TimeSeriesForestClassifier will only complete on half the datasets. Not sure how to handle that

I think we explicitly set validate=False to silence the warning about future changes (maybe they updated that now).
Regarding the zero-variance errors, we could catch that exception and simply return whatever is appropriate in that case. How do you solve this in your hard-coded version? Ideally, we would have proper transformers for your favourite transforms, Jeremy started on this, but they're buggy as far as I remember.

See #224


whoami?

An existential question, and also a potentially useful Garden CLI command. The Garden CLI uses the user's email from their Globus login to tag models that they have registered. But there currently isn't a way for users to see this unless they register a model or cat their data.json. Make a garden-ai whoami command that prints the user's email.
Assumptions:

If there is no email, try to log the user in.

Acceptance Criteria
Given I am logged in as<EMAIL_ADDRESS>when I execute garden-ai whoami, then<EMAIL_ADDRESS>is printed in my terminal.

Bonus points: also add a logout and login command.


Tuna example change_holder function in controller.js trying to make too many responses.

Each time res.json({whatever:stuff}) is called headers are set and a response is sent and then your next call to do that tries to reset the headers on the response and it logs:
Failed to invoke successfully ::  Error: Can't set headers after they are sent.
So maybe just generate a json thing and then send it at the end.
https://github.com/hyperledger/education/blob/5c52ec18e15c81f88a008d1ca5e7fb8553c3fac1/LFS171x/fabric-material/tuna-app/controller.js#L449-L469
Will try and make a fix and pull request shortly.

I had this issue. I commented out the res.json  on line 454 because the next results check at 460 also adds transaction ID, and tries to send it (res.json calls res.send() as far as I know)


Update gradle-profiler to 0.20.0-alpha04

@bot-gradle test QFL

I've triggered the following builds for you:

QuickFeedbackLinux build

@bot-gradle test QFL

I've triggered the following builds for you:

QuickFeedbackLinux build

@bot-gradle test APT

I've triggered the following builds for you:

AllPerformanceTestsReadyForRelease build

@bot-gradle test APT

I've triggered the following builds for you:

AllPerformanceTestsReadyForRelease build

@bot-gradle test and merge

Your PR is queued. See the queue page for details.


Job ID included in the log-files names

It would be useful that log-files (err and out) include the Job ID number on their name when the simulation is launched.

This has been resolved in #9  (commit c9d495f73bda6ae59eea5f40d7932c8e519697b9): logfiles now also contain date information; log are also stored OK with simres/log.


Review of Form component implementation

Full review required.

https://github.com/silverbackis/api-components-bundle/pull/66


Using built in weights method

Now that xarray supports weighted calculations, we should use that or be consistent with how their weights are input (automatically broadcast if just 1D)
http://xarray.pydata.org/en/stable/examples/area_weighted_temperature.html

We should test whether our solution is faster or not.

Also correlation is now in xarray latest. Maybe we can rebuild a few of the metrics in a submodule xs.xr.metric and compare performance to xs metrics with asv.


fix: don't use anonymous type as type

Is there a better way to get RootNode?

Another way is to pass mth as argument and use mth.root() but I am not sure it is better.

I guess root this way, is for better performance, with minimal memory effect (since we have a single TypeInferenceVisitor.
I guess the !type.isGeneric() is incorrect, since we need to check the classpath, but that's another investigation (for now).

Should we remove assignments with 0 usages instead? It would be better I guess.

I guess TestConstructorInvoke lost its need now.

I agree, TestConstructorInvoke can be removed.
And remove unused variable also was a good decision, thanks!


feat: Add basic text support on Unix

Things worth noting:

There is the org.a11y.atspi.EditableText interface but Chromium does not implement it apparently and it mostly send action requests we don't support anyway.
GetBoundedRanges is missing, Chromium does not implement this function either.
The scroll_type argument of ScrollSubstringTo is ignored: our ActionRequest struct does not embed enough information to make use of it. We could compute a point and scroll to it but that may be too much responsibility.
The text-bounds-changed signal is never emitted: noone seem to implement it and Orca doesn't listen to it.

About the text insertion and removal events, will it help if we refactor accesskit_consumer to go back to complete copy-on-write tree snapshots, using immutable-chunkmap this time? I think I can justify doing that as part of my Newton work.
Orca doesn't actually call any of the methods on the EditableText interface. In a few places, it does check whether the object supports that interface, but only as a way of determining whether the object is editable text; in other places, Orca does the same thing by checking the state. We could fix Orca to be consistent about that, though Joanie already branched it for GNOME 46. In any case, if Chromium doesn't implement EditableText at all, I think it's acceptable for us to do the same. If Chromium claims to support the interface but has a stub implementation, we should do that.

if Chromium doesn't implement EditableText at all, I think it's acceptable for us to do the same

No, Chromium doesn't even have a stub implementation, and I couldn't find any Chromium specific workaround for this in particular inside Orca.

will it help if we refactor accesskit_consumer to go back to complete copy-on-write tree snapshots, using immutable-chunkmap this time?

This would allow us to implement the same algorithm as Chromium, only building the entire text content for nodes where it is necessary. It should be noted though that there is this comment in said algorithm:
// TODO(accessibility) Plumb through which part of text changed so we don't
// have to guess what changed based on character differences. This can be
// wrong in some cases as follows:
// -- EDITABLE --
// If editable: when part of the text node changes, assume only that part
// changed, and not the entire thing. For example, if "car" changes to
// "cat", assume only 1 letter changed. This code compares common characters
// to guess what has changed.
// -- NOT EDITABLE --
// When part of the text changes, assume the entire node's text changed. For
// example, if "car" changes to "cat" then assume all 3 letters changed.
// Note, it is possible (though rare) that CharacterData methods are used to
// remove, insert, replace or append a substring.

Which I think asks for more text events to be emitted by the renderer process. So the proper way to solve this would probably be #6.

In the new methods for converting to and from global character indices, we shouldn't use str::chars().count(). Instead, we should look at the length of the inline text box's character_lengths list. That way, we consistently use the application/toolkit's definition of "character", taking into account things like multiple code points that combine into a single glyph (e.g. some emoji), without having to add a heavy Unicode support library into AccessKit itself.

I suggest adding a new internal helper function to PlatformNode, called something like resolve_for_text, which checks that the node supports the text interface before calling the closure, and returns the UnsupportedInterface error if it doesn't. This error checking is only really needed for newton_atspi_compat, but doesn't really hurt accesskit_unix.

That's all of my feedback on this PR for now. We still need to implement insert and delete events, one way or another. The switch to immutable-chunkmap is blocked for now, because I haven't gotten any response to my PRs on that project. As for more precise events, I'm reluctant to add them as I mentioned before, but I will if they're required for full accessibility on Wayland. I wrote a comment on an at-spi2-core issue about this.

So your conversion functions were correct to use str::chars().count() where they do, but they also have to convert between AccessKit character indices (within an inline text box) and USV indices

Oh yes, I messed up here...

I'd suggest the names to_global_usv_index and text_position_from_global_usv_index.

I was looking for more descriptive names, I'll rename these functions. Thanks!

@DataTriny What do you think about my earlier suggestion that we might not need to implement the AT-SPI GetCharacterAtOffset method (and the corresponding functions in accesskit_atspi_common). As I said, Orca doesn't use it, and it's not that useful in light of Unicode combining characters.

@mwcampbell Thanks for the reminder. I had filed this issue on the at-spi2-core repo but haven't received feedback yet.

You can help test this feature by running egui-based programs using my unix-text-testing branch.

I don't think we actually want to check is_read_only when determining whether to emit a text change event. It could be that the text is read-only to the user, but the application can change it, and in that case we certainly would want to emit change events.

To be exhaustive, I should mention the existence of the text-bounds-changed signal: AFAIK this one is implemented by noone and Orca doesn't listen to it. Maybe we can revisit this once we get to implement rich text.

If no one else emits that signal and Orca doesn't use it, I think we can safely ignore it.

I'm marking this as ready for review, but I'll have to rebase it on main before you merge it.

In emit_text_selection_change, there's currently an if old_node.is_none(), then after that if statement, let old_node = old_node.unwrap();. We can save the duplicate check of the Option's state, and the unused error path in the unwrap, by doing a let-else, where the current content of the if statement goes under the else branch.

Currently, node_updated only calls emit_text_change_if_needed if the node is included in the filtered tree. Since InlineTextBox nodes are excluded from the filtered tree, this means that a text change event is only emitted if the outer node changes, e.g. if the text selection changes. But if some text content changes without changing the selection, then a text change event won't be emitted. To fix this, I suggest moving the emit_text_change_if_needed call to the top of node_updated, before we check the filter results. I guess the only possible problem with that would be if there's a reason to emit other property changes before emitting text changes.
Also, a pattern that I'm using in GTK, that I think will become common in more advanced text implementations, is to put InlineTextBox nodes inside GenericContainer nodes under the root node for the text widget. In that case, if a GenericContainer changes, e.g. by adding or removing child InlineTextBox nodes, but there are no changes on InlineTextBox nodes themselves, then we won't emit a text change event. To fix that, I suggest modifying emit_text_change_if_needed to check the filtered parent if the node's role is either InlineTextBox or GenericContainer. Yes, that will result in extra traversals if changes are made to generic containers that aren't part of a text widget. But that shouldn't be too expensive, since we'll immediately check whether the filtered parent is a text widget. And of course, correctness and completeness have to come before optimization. I should check whether I need to make that change in the Windows and macOS adapters as well.

Have you tested the text change code with non-ASCII text? I see that common_prefix, common_suffix, total_old_length, total_new_length, old_length, and new_length are all in Unicode scalar values (USVs), but when you take slices of the strings for the content field of the events, I believe the slice ranges have to be in bytes. I don't know the best way to handle that. I guess the start_index and length fields of the events are supposed to be in USVs, as the offset arguments to all the AT-SPI text methods are. So we obviously can't switch away from USVs entirely.

In emit_text_selection_change, the caret offset should be calculated using Node::text_selection_focus, as PlatformNode::caret_offset does, not using selection.end(). Remember, Node::text_selection returns a text range in which the start always comes before the end; this design was admittedly influenced by UIA. But the selection focus, which is where the caret is, might not be the end of that range.

In PlatformNode::character_extents, we need to check start.is_document_end() before calling start.forward_to_character_end(), as we do in PlatformNode::string_at_offset.

I've finished reviewing this PR.

@mwcampbell Thanks for the review.
I knew text-changed events weren't able to handle multi-byte characters but I forgot to actually fix the algorithm. Now this is done and tested. I think it is reasonably well optimized.

Unless I'm missing something, I think it's a mistake to increment prefix_usv_index one more time before breaking out of the loop. It seems to me that at the end of the loop, prefix_usv_index should be the number of common characters. Is there a reason to increment it one extra time?

The name of the variable probably didn't help the understanding. Really it's the number of unicode scalar values that both strings have in common, hence the start index of the diff.

Yes, the new variable name is clearer.
These changes look good, and I have no further suggestions. Please rebase and merge.


USB-C test improvements

The problem you're addressing (if any)
Docking station tests are hard, when we use power on AC to control laptop power state.
Describe the solution you'd like
Use a RTE to control the dock's power button.
Where is the value to a user, and who might that user be?
Since we get video, USB power and power control, we could have full remote control via a single USB-C cable.
Describe alternatives you've considered
keep using what we're using?
Additional context
No response

Use a RTE to control the dock's power button.

Or, ziptie the power button shut and just use a sonoff on the dock's PSU :) simpler and works just as well


Add support for web/desktop

Add full support for web + desktop. Also fix formatting of iOS modal, and add filtering of relevant wallets (copy of desktop implementation)

Hi, made the changes you suggested. Thanks for the tips :)


Serious memory leak in WebSocketSession

Describe the bug
While using connect_ws I noticed that the memory of the application was slowly going up. After digging a bit I found that the number of active threads was increasing every time a new message was received, indicating a memory leak somewhere in the connection/session manager.
To Reproduce
In a separate module (server.py) spin up a simple ws server (here I'm using websockets for simplicity) that sends a message periodically:
import time

from websockets.sync.server import serve, ServerConnection

def ws_handler(conn: ServerConnection) -> None:
    while True:
        conn.send("ok")
        time.sleep(1)

with serve(ws_handler, "localhost", 8000) as sv:
    sv.serve_forever()

In another module (client.py) run the client code, printing the current active threads count after each received message:
import threading

from httpx_ws import connect_ws

with connect_ws('ws://localhost:8000') as ws:
    while True:
        ws.receive()
        print('threads count:', threading.active_count())

Output:
threads count: 5
threads count: 8
threads count: 9
threads count: 10
threads count: 11
threads count: 12
threads count: 13
threads count: 14
threads count: 15
threads count: 17
threads count: 17
threads count: 18
...

Expected behavior
The number of active threads should not grow indefinitely.
Configuration

Python version: 3.12.5
httpx-ws version: 0.6.0

Additional context
I took a look at the WebSocketSession implementation and I think the problem is in the _wait_until_closed method, more precisely when trying to cancel the pending futures (line 531):
https://github.com/frankie567/httpx-ws/blob/dc94596ea02fe1706c26599f19fe06c15e78c6dc/httpx_ws/_api.py#L517-L536
What is happening is that calling cancel on a pending future will try to cancel it but will fail if it is still running, and that is the exact case with the _should_close.wait task. I confirmed this behavior by printing the return of the task.cancel() which gives False, therefore stating that the cancel operation failed. After failing to cancel, the threads will hang forever and pile up until the connection is recycled (or the system memory is exhausted).
The good news is that the fix can be pretty simple -- we just have to ensure the future is indeed cancelled. For instance setting a timeout to the _should_close.wait callable made the threads count stop growing:
diff --git a/httpx_ws/_api.py b/httpx_ws/_api.py
index dc31cd2..765b1b4 100644
--- a/httpx_ws/_api.py
+++ b/httpx_ws/_api.py
@@ -519,7 +516,7 @@ class WebSocketSession:
     ) -> TaskResult:
         try:
             executor = concurrent.futures.ThreadPoolExecutor(max_workers=2)
-            wait_close_task = executor.submit(self._should_close.wait)
+            wait_close_task = executor.submit(self._should_close.wait, timeout=1)
             todo_task = executor.submit(callable, *args, **kwargs)
         except RuntimeError as e:
             raise ShouldClose() from e

Of course using a hard-coded timeout is not a good solution to this problem -- this was only a proof-of-concept. But if confirmed I would be happy to address this properly in a PR :)

Thank you for the detailed analysis and reproduction, @ro-oliveira95! Sounds indeed a serious one.
I would be glad to review PR with a proper fix for this. But I don't have a clear idea of how to do it right now 😅

Hi @frankie567, thanks for the quick answer.

But I don't have a clear idea of how to do it right now

Yeah for now me neither. When searching for "ways to cancel a running future" it seems we have to rely on threading.Events, but I'm not sure if it fits well in this context.
But ok, I'll do some experimentation and try to come up with a proper solution in the PR. Maybe I'll have something latter today, let's see.

Hey, just for you to know that I came up with a (not so pretty) solution to this, but it led some tests to fail and I still have to dig more to understand what's going on. My plan is to work on this next sunday.


Playing file from local storage on Android

Hi, thank you for the great package. It works perfectly fine on ios, but I cannot make it work fine on Android for loading file from local storage.
new Sound(path, null, callback)
I tried to remove "file://" from the file path but still cannot find or open the local file on android, and the error callback is not called also.
I tried to upload the file on this uri to server and download with new Sound(remotePath) and it works fine. But I cannot find any way to directly read it from local storage.
The file's path is
file:///data/user/0/com.myapp/cache/ExperienceData/%2540xxx%252F/Audio/recording-xxx.m4a
The path I tried is
/data/user/0/com.myapp/cache/ExperienceData/%2540xxx%252F/Audio/recording-xxx.m4a
Do you have any thought on it?

We need an uri, not a path. In android it would start with content:// and would be bigger than that path you got.

My issue that I was using format file://{absolutePathToFile}, when I removed file:// prefix - it worked, maybe it is added automatically. In other libraries I have to use file:// prefix


Create devcontainer.json

Sorry but what is this for?
Can you please explain on what this PR does?

Doesn't look like it would provide any value to this project.


sap.m.DatePicker: Changing century in input field doesn't always reflect in DatePicker

OpenUI5 version: latest
Browser/version (+device/version): All
Any other tested browsers/devices(OK/FAIL):
URL (minimal example if possible): https://openui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.DatePicker/preview
User/password (if required and possible - do not post any confidential information here):
Steps to reproduce the problem:

Bring up sample page and enter date in "simple DatePicker" input field (e.g. Oct 6, 2016)
Click on calendar icon to bring up DatePicker and verify selected date is correct
Edit the century of the date in the input field (e.g. change 2016 to 1916)
Click on calendar icon to bring up DatePicker and note selected date is incorrect (hasn't changed)
Do the same for the "DatePicker using DataBinding" example and note that it works correctly

What is the expected result? Expected that the DatePicker control would always show the date specified in the input field.
What happens instead? The DatePicker doesn't recognize when the leading two digits of the year are changed (e.g. to 1916 or 2116).
Any other information? (attach screenshot if possible)

@cmastrandrea thanks for your feedback. Internal incident<PHONE_NUMBER> has been opened for this issue.

Hello,
Thanks for reporting this!
The problem is fixed for our master branch. It will soon be available and it will also get downported for the last 3 latest versions.


[0.71] Add page on React Native Gradle Plugin for 71

I'm adding a page on the Gradle Plugin so we can use it as reference for documentation and to help user with configuration as we can deeplink to each config key now.
I've also added a section on how to use flavors/variants and short list of technical details of what RNGP is doing (this could be useful for brownfield users).

There are just two questions that make sense to address imho.

I just saw one :) Is there another question to follow up on?

If the plugin uses the right compiler, why do we have this key? Are there setups that requires its customization?

Users might want to build its own version of Hermes (say from source) and make sure the hermesc version using during bundling is the custom one.


M2FiltersArgumentCollection arguments are not recognized by Mutect2 nor do they show up in the docs

This is likely intentional but we should still show these parameters in the  #docs.
Test command:
WMCF9-CB5:hellbender-protected shlee$ ./gatk-launch Mutect2 -I ~/Documents/workshop_materials/mutect2_tutorial/mutect2_handson/hcc1143_T_subset50K.bam -tumor HCC1143_tumor -O m2_test_06012017.vcf -R ~/Documents/ref/hg38/Homo_sapiens_assembly38.fasta --tumor_lod 0
Using GATK wrapper script /Users/shlee/Documents/branches/hellbender-protected/build/install/gatk-protected/bin/gatk-protected
Running:
    /Users/shlee/Documents/branches/hellbender-protected/build/install/gatk-protected/bin/gatk-protected Mutect2 -I /Users/shlee/Documents/workshop_materials/mutect2_tutorial/mutect2_handson/hcc1143_T_subset50K.bam -tumor HCC1143_tumor -O m2_test_06012017.vcf -R /Users/shlee/Documents/ref/hg38/Homo_sapiens_assembly38.fasta --tumor_lod 0
USAGE: Mutect2 [arguments]

Call somatic SNPs and indels via local re-assembly of haplotypes
Version:c25c2f4b-SNAPSHOT

Error message:
***********************************************************************

A USER ERROR has occurred: tumor_lod is not a recognized option

***********************************************************************
Use -DSTACK_TRACE_ON_USEREXCEPTION to print the stack trace.

Here's what the autodoc shows. Notice the lack of --tumor_lod description. This is only 1 of 13 parameters within the M2FiltersArgumentCollection that are absent.
WMCF9-CB5:hellbender-protected shlee$ ./gatk-launch Mutect2 -h
Using GATK wrapper script /Users/shlee/Documents/branches/hellbender-protected/build/install/gatk-protected/bin/gatk-protected
Running:
    /Users/shlee/Documents/branches/hellbender-protected/build/install/gatk-protected/bin/gatk-protected Mutect2 -h
USAGE: Mutect2 [arguments]

Call somatic SNPs and indels via local re-assembly of haplotypes
Version:c25c2f4b-SNAPSHOT

Required Arguments:

--input,-I:String             BAM/SAM/CRAM file containing reads  This argument must be specified at least once.
                              Required.

--output,-O:File              File to which variants should be written  Required.

--reference,-R:String         Reference sequence file  Required.

--tumorSampleName,-tumor:String
                              BAM sample name of tumor  Required.

Optional Arguments:

--addOutputSAMProgramRecord,-addOutputSAMProgramRecord:Boolean
                              If true, adds a PG tag to created SAM/BAM/CRAM files.  Default value: true. Possible
                              values: {true, false}

--af_of_alleles_not_in_resurce,-default_af:Double
                              Population allele fraction assigned to alleles not found in germline resource.  A
                              reasonable value is1/(2* number of samples in resource) if a germline resource is
                              available; otherwise an average heterozygosity rate such as 0.001 is reasonable.  Default
                              value: 0.001.

--alleles,-alleles:FeatureInput
                              The set of alleles at which to genotype when --genotyping_mode is GENOTYPE_GIVEN_ALLELES
                              Default value: null.

--annotateNDA,-nda:Boolean    If provided, we will annotate records with the number of alternate alleles that were
                              discovered (but not necessarily genotyped) at a given site  Default value: false. Possible
                              values: {true, false}

--arguments_file:File         read one or more arguments files and add them to the command line  This argument may be
                              specified 0 or more times. Default value: null.

--assemblyRegionPadding,-assemblyRegionPadding:Integer
                              Number of additional bases of context to include around each assembly region  Default
                              value: 100.

--base_quality_score_threshold,-bqst:Byte
                              Base qualities below this threshold will be reduced to the minimum (6)  Default value: 18.

--cloudIndexPrefetchBuffer,-CIPB:Integer
                              Size of the cloud-only prefetch buffer (in MB; 0 to disable). Defaults to
                              cloudPrefetchBuffer if unset.  Default value: -1.

--cloudPrefetchBuffer,-CPB:Integer
                              Size of the cloud-only prefetch buffer (in MB; 0 to disable).  Default value: 40.

--contamination_fraction_to_filter,-contamination:Double
                              Fraction of contamination in sequencing data (for all samples) to aggressively remove
                              Default value: 0.0.

--createOutputBamIndex,-OBI:Boolean
                              If true, create a BAM/CRAM index when writing a coordinate-sorted BAM/CRAM file.  Default
                              value: true. Possible values: {true, false}

--createOutputBamMD5,-OBM:Boolean
                              If true, create a MD5 digest for any BAM/SAM/CRAM file created  Default value: false.
                              Possible values: {true, false}

--createOutputVariantIndex,-OVI:Boolean
                              If true, create a VCF index when writing a coordinate-sorted VCF file.  Default value:
                              true. Possible values: {true, false}

--createOutputVariantMD5,-OVM:Boolean
                              If true, create a a MD5 digest any VCF file created.  Default value: false. Possible
                              values: {true, false}

--dbsnp,-D:FeatureInput       dbSNP file  Default value: null.

--disableBamIndexCaching,-DBIC:Boolean
                              If true, don't cache bam indexes, this will reduce memory requirements but may harm
                              performance if many intervals are specified.  Caching is automatically disabled if there
                              are no intervals specified.  Default value: false. Possible values: {true, false}

--disableReadFilter,-DF:StringRead filters to be disabled before analysis  This argument may be specified 0 or more
                              times. Default value: null.

--disableSequenceDictionaryValidation,-disableSequenceDictionaryValidation:Boolean
                              If specified, do not check the sequence dictionaries from our inputs for compatibility.
                              Use at your own risk!  Default value: false. Possible values: {true, false}

--disableToolDefaultReadFilters,-disableToolDefaultReadFilters:Boolean
                              Disable all tool default read filters  Default value: false. Possible values: {true,
                              false}

--excludeIntervals,-XL:String One or more genomic intervals to exclude from processing  This argument may be specified 0
                              or more times. Default value: null.

--genotyping_mode,-gt_mode:GenotypingOutputMode
                              Specifies how to determine the alternate alleles to use for genotyping  Default value:
                              DISCOVERY. Possible values: {DISCOVERY, GENOTYPE_GIVEN_ALLELES}

--germline_resource:FeatureInput
                              Population vcf of germline sequencing containing allele fractions  Default value: null.

--graphOutput,-graph:String   Write debug assembly graph information to this file  Default value: null.

--group,-G:String             One or more classes/groups of annotations to apply to variant calls  This argument may be
                              specified 0 or more times. Default value: null.

--help,-h:Boolean             display the help message  Default value: false. Possible values: {true, false}

--heterozygosity,-hets:Double Heterozygosity value used to compute prior likelihoods for any locus.  See the GATKDocs
                              for full details on the meaning of this population genetics concept  Default value: 0.001.

--heterozygosity_stdev,-heterozygosityStandardDeviation:Double
                              Standard deviation of eterozygosity for SNP and indel calling.  Default value: 0.01.

--indel_heterozygosity,-indelHeterozygosity:Double
                              Heterozygosity for indel calling.  See the GATKDocs for heterozygosity for full details on
                              the meaning of this population genetics concept  Default value: 1.25E-4.

--interval_exclusion_padding,-ixp:Integer
                              Amount of padding (in bp) to add to each interval you are excluding.  Default value: 0.

--interval_padding,-ip:IntegerAmount of padding (in bp) to add to each interval you are including.  Default value: 0.

--interval_set_rule,-isr:IntervalSetRule
                              Set merging approach to use for combining interval inputs  Default value: UNION. Possible
                              values: {UNION, INTERSECTION}

--intervals,-L:String         One or more genomic intervals over which to operate  This argument may be specified 0 or
                              more times. Default value: null.

--lenient,-LE:Boolean         Lenient processing of VCF files  Default value: false. Possible values: {true, false}

--log_somatic_prior:Double    Prior probability that a given site has a somatic allele.  Default value: -6.0.

--maxAssemblyRegionSize,-maxAssemblyRegionSize:Integer
                              Maximum size of an assembly region  Default value: 300.

--maxReadsPerAlignmentStart,-maxReadsPerAlignmentStart:Integer
                              Maximum number of reads to retain per alignment start position. Reads above this threshold
                              will be downsampled. Set to 0 to disable.  Default value: 50.

--min_base_quality_score,-mbq:Byte
                              Minimum base quality required to consider a base for calling  Default value: 10.

--min_variants_in_pileup:Integer
                              Minimum number of reads in pileup to be considered active region.  Default value: 2.

--minAssemblyRegionSize,-minAssemblyRegionSize:Integer
                              Minimum size of an assembly region  Default value: 50.

--minNormalVariantFraction:Double
                              Minimum number of reads in pileup to be considered active region.  Default value: 0.1.

--nativePairHmmThreads,-threads:Integer
                              How many threads should a native pairHMM implementation use  Default value: 1.

--normal_lod:Double           LOD threshold for calling normal non-germline  Default value: 2.2.

--normal_panel,-PON:FeatureInput
                              VCF file of sites observed in normal  Default value: null.

--normalSampleName,-normal:String
                              BAM sample name of tumor  Default value: null.

--output_mode,-out_mode:OutputMode
                              Specifies which type of calls we should output  Default value: EMIT_VARIANTS_ONLY.
                              Possible values: {EMIT_VARIANTS_ONLY, EMIT_ALL_CONFIDENT_SITES, EMIT_ALL_SITES}

--power_constant_qscore:Integer
                              Phred scale quality score constant to use in power calculations  Default value: 30.

--QUIET:Boolean               Whether to suppress job-summary info on System.err.  Default value: false. Possible
                              values: {true, false}

--readFilter,-RF:String       Read filters to be applied before analysis  This argument may be specified 0 or more
                              times. Default value: null.

--readIndex,-readIndex:String Indices to use for the read inputs. If specified, an index must be provided for every read
                              input and in the same order as the read inputs. If this argument is not specified, the
                              path to the index for each input will be inferred automatically.  This argument may be
                              specified 0 or more times. Default value: null.

--readShardPadding,-readShardPadding:Integer
                              Each read shard has this many bases of extra context on each side. Read shards must have
                              as much or more padding than assembly regions.  Default value: 100.

--readShardSize,-readShardSize:Integer
                              Maximum size of each read shard, in bases. For good performance, this should be much
                              larger than the maximum assembly region size.  Default value: 5000.

--readValidationStringency,-VS:ValidationStringency
                              Validation stringency for all SAM/BAM/CRAM/SRA files read by this program.  The default
                              stringency value SILENT can improve performance when processing a BAM file in which
                              variable-length data (read, qualities, tags) do not otherwise need to be decoded.  Default
                              value: SILENT. Possible values: {STRICT, LENIENT, SILENT}

--recoverDanglingHeads,-recoverDanglingHeads:Boolean
                              This argument is deprecated since version 3.3  Default value: false. Possible values:
                              {true, false}

--sample_ploidy,-ploidy:Integer
                              Ploidy (number of chromosomes) per sample. For pooled data, set to (Number of samples in
                              each pool * Sample Ploidy).  Default value: 2.

--secondsBetweenProgressUpdates,-secondsBetweenProgressUpdates:Double
                              Output traversal statistics every time this many seconds elapse  Default value: 10.0.

--standard_min_confidence_threshold_for_calling,-stand_call_conf:Double
                              The minimum phred-scaled confidence threshold at which variants should be called  Default
                              value: 10.0.

--TMP_DIR:File                Undocumented option  This argument may be specified 0 or more times. Default value: null.

--tumor_lod_to_emit:Double    LOD threshold for emit tumor variant  Default value: 3.0.

--tumorStandardDeviationsThreshold:Integer
                              How many standard deviations above the expected number of variant reads due to error we
                              require for a tumor pielup to be considered active.  Default value: 2.

--use_jdk_deflater,-jdk_deflater:Boolean
                              Whether to use the JdkDeflater (as opposed to IntelDeflater)  Default value: false.
                              Possible values: {true, false}

--use_jdk_inflater,-jdk_inflater:Boolean
                              Whether to use the JdkInflater (as opposed to IntelInflater)  Default value: false.
                              Possible values: {true, false}

--useDoublePrecision,-useDoublePrecision:Boolean
                              use double precision in the native pairHmm. This is slower but matches the java
                              implementation better  Default value: false. Possible values: {true, false}

--useNewAFCalculator,-newQual:Boolean
                              If provided, we will use the new AF model instead of the so-called exact model  Default
                              value: false. Possible values: {true, false}

--verbosity,-verbosity:LogLevel
                              Control verbosity of logging.  Default value: INFO. Possible values: {ERROR, WARNING,
                              INFO, DEBUG}

--version:Boolean             display the version number for this tool  Default value: false. Possible values: {true,
                              false}

Advanced Arguments:

--activeProbabilityThreshold,-activeProbabilityThreshold:Double
                              Minimum probability for a locus to be considered active.  Default value: 0.002.

--allowNonUniqueKmersInRef,-allowNonUniqueKmersInRef:Boolean
                              Allow graphs that have non-unique kmers in the reference  Default value: false. Possible
                              values: {true, false}

--allSitePLs,-allSitePLs:Boolean
                              Annotate all sites with PLs  Default value: false. Possible values: {true, false}

--annotation,-A:String        One or more specific annotations to apply to variant calls  This argument may be specified
                              0 or more times. Default value: [Coverage, DepthPerAlleleBySample, TandemRepeat,
                              OxoGReadCounts, ClippedBases, ReadPosition, BaseQuality, MappingQuality, FragmentLength,
                              StrandArtifact].

--bamOutput,-bamout:String    File to which assembled haplotypes should be written  Default value: null.

--bamWriterType,-bamWriterType:WriterType
                              Which haplotypes should be written to the BAM  Default value: CALLED_HAPLOTYPES. Possible
                              values: {ALL_POSSIBLE_HAPLOTYPES, CALLED_HAPLOTYPES}

--comp,-comp:FeatureInput     Comparison VCF file(s)  This argument may be specified 0 or more times. Default value:
                              null.

--consensus,-consensus:Boolean1000G consensus mode  Default value: false. Possible values: {true, false}

--contamination_fraction_per_sample_file,-contaminationFile:File
                              Tab-separated File containing fraction of contamination in sequencing data (per sample) to
                              aggressively remove. Format should be "<SampleID><TAB><Contamination>" (Contamination is
                              double) per line; No header.  Default value: null.

--debug,-debug:Boolean        Print out very verbose debug information about each triggering active region  Default
                              value: false. Possible values: {true, false}

--disableOptimizations,-disableOptimizations:Boolean
                              Don't skip calculations in ActiveRegions with no variants  Default value: false. Possible
                              values: {true, false}

--doNotRunPhysicalPhasing,-doNotRunPhysicalPhasing:Boolean
                              Disable physical phasing  Default value: false. Possible values: {true, false}

--dontIncreaseKmerSizesForCycles,-dontIncreaseKmerSizesForCycles:Boolean
                              Disable iterating over kmer sizes when graph cycles are detected  Default value: false.
                              Possible values: {true, false}

--dontTrimActiveRegions,-dontTrimActiveRegions:Boolean
                              If specified, we will not trim down the active region from the full region (active +
                              extension) to just the active interval for genotyping  Default value: false. Possible
                              values: {true, false}

--dontUseSoftClippedBases,-dontUseSoftClippedBases:Boolean
                              Do not analyze soft clipped bases in the reads  Default value: false. Possible values:
                              {true, false}

--emitRefConfidence,-ERC:ReferenceConfidenceMode
                              Mode for emitting reference confidence scores  Default value: NONE. Possible values:
                              {NONE, BP_RESOLUTION, GVCF}

--excludeAnnotation,-XA:StringOne or more specific annotations to exclude  This argument may be specified 0 or more
                              times. Default value: null.

--gcpHMM,-gcpHMM:Integer      Flat gap continuation penalty for use in the Pair HMM  Default value: 10.

--input_prior,-inputPrior:Double
                              Input prior for calls  This argument may be specified 0 or more times. Default value:
                              null.

--kmerSize,-kmerSize:Integer  Kmer size to use in the read threading assembler  This argument may be specified 0 or more
                              times. Default value: [10, 25].

--max_alternate_alleles,-maxAltAlleles:Integer
                              Maximum number of alternate alleles to genotype  Default value: 6.

--max_genotype_count,-maxGT:Integer
                              Maximum number of genotypes to consider at any site  Default value: 1024.

--maxNumHaplotypesInPopulation,-maxNumHaplotypesInPopulation:Integer
                              Maximum number of haplotypes to consider for your population  Default value: 128.

--maxProbPropagationDistance,-maxProbPropagationDistance:Integer
                              Upper limit on how many bases away probability mass can be moved around when calculating
                              the boundaries between active and inactive assembly regions  Default value: 50.

--minDanglingBranchLength,-minDanglingBranchLength:Integer
                              Minimum length of a dangling branch to attempt recovery  Default value: 4.

--minPruning,-minPruning:Integer
                              Minimum support to not prune paths in the graph  Default value: 2.

--numPruningSamples,-numPruningSamples:Integer
                              Number of samples that must pass the minPruning threshold  Default value: 1.

--pcr_indel_model,-pcrModel:PCRErrorModel
                              The PCR indel model to use  Default value: CONSERVATIVE. Possible values: {NONE, HOSTILE,
                              AGGRESSIVE, CONSERVATIVE}

--phredScaledGlobalReadMismappingRate,-globalMAPQ:Integer
                              The global assumed mismapping rate for reads  Default value: 45.

--showHidden,-showHidden:Boolean
                              display hidden arguments  Default value: false. Possible values: {true, false}

--useFilteredReadsForAnnotations,-useFilteredReadsForAnnotations:Boolean
                              Use the contamination-filtered read maps for the purposes of annotating variants  Default
                              value: false. Possible values: {true, false}

Conditional Arguments for readFilter:

Valid only if "AmbiguousBaseReadFilter" is specified:
--ambigFilterFrac:Double      Threshold fraction of ambiguous bases  Default value: 0.05.

Valid only if "FragmentLengthReadFilter" is specified:
--maxFragmentLength,-maxFragmentLength:Integer
                              Keep only read pairs with fragment length at most equal to the given value  Default value:
                              1000000.

Valid only if "LibraryReadFilter" is specified:
--library,-library:String     The name of the library to keep  Required.

Valid only if "MappingQualityReadFilter" is specified:
--maximumMappingQuality,-maximumMappingQuality:Integer
                              Maximum mapping quality to keep (inclusive)  Default value: null.

--minimumMappingQuality,-minimumMappingQuality:Integer
                              Minimum mapping quality to keep (inclusive)  Default value: 20.

Valid only if "OverclippedReadFilter" is specified:
--dontRequireSoftClipsBothEnds,-dontRequireSoftClipsBothEnds:Boolean
                              Allow a read to be filtered out based on having only 1 soft-clipped block. By default,
                              both ends must have a soft-clipped block, setting this flag requires only 1 soft-clipped
                              block.  Default value: false. Possible values: {true, false}

--filterTooShort,-filterTooShort:Integer
                              Value for which reads with less than this number of aligned bases is considered too short
                              Default value: 30.

Valid only if "PlatformReadFilter" is specified:
--PLFilterName,-PLFilterName:String
                              Keep reads with RG:PL attribute containing this string  This argument must be specified at
                              least once. Required.

Valid only if "PlatformUnitReadFilter" is specified:
--blackListedLanes,-blackListedLanes:String
                              Keep reads with platform units not on the list  This argument must be specified at least
                              once. Required.

Valid only if "ReadGroupBlackListReadFilter" is specified:
--blackList,-blackList:String This argument must be specified at least once. Required.

Valid only if "ReadGroupReadFilter" is specified:
--keepReadGroup,-keepReadGroup:String
                              The name of the read group to keep  Required.

Valid only if "ReadLengthReadFilter" is specified:
--maxReadLength,-maxReadLength:Integer
                              Keep only reads with length at most equal to the specified value  Required.

--minReadLength,-minReadLength:Integer
                              Keep only reads with length at least equal to the specified value  Default value: 1.

Valid only if "ReadNameReadFilter" is specified:
--readName,-readName:String   Keep only reads with this read name  Required.

Valid only if "ReadStrandFilter" is specified:
--keepReverse,-keepReverse:Boolean
                              Keep only reads on the reverse strand  Required. Possible values: {true, false}

Valid only if "SampleReadFilter" is specified:
--sample,-sample:String       The name of the sample(s) to keep, filtering out all others  This argument must be
                              specified at least once. Required.

Tool returned:
0

Tagging @cmnbroad  as requested.

Looks like Mutect2 has a private Mutect2Engine, and Mutect2Engine has an M2ArgumentCollection, both of which contain fields with @Argument annotations. For these (nested) arguments to be visible to the command line parser/doc, they need to be both annotated in the containing class with @ArgumentCollection, and instantiated by the constructor (i.e., Mutect2's Mutect2Engine would have to be instantiated by the constructor). Otherwise, they may have to be refactored.

@sooheelee @cmnbroad These are arguments for the stand-alone filtering CLI FilterMutectCalls.  There were good reasons for doing this, which I think will be worth the nuisance.

So to be clear, you guys have a handle on how to make the arguments appear in the docs? Is this something you can do in the near future? We need the arguments to appear in the docs for the beta release.

Yes, all solved. These parameters that I thought were missing in Mutect2 are actually now in the new tool FilterMutectCalls and do show up in the documentation.


replace sync.Map

Description
replace sync.Map
Why is this needed:
https://github.com/golang/go/issues/40999
there are 2 issues:

go 15.1 introduced a regression, that keys in sync.Map.dirty are not deleted
even in go 1.14, keys in sync.Map.read are not purged immediately, see comments at the end

Changes include

[x] Bugfix (non-breaking change that solves an issue)
[ ] Hotfix (change that solves an urgent issue, and requires immediate attention)
[ ] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)

Checklist

[x] I have assigned this PR to myself
[x] I have added at least 1 reviewer
[x] I have added the relevant labels
[ ] I have updated the official documentation
[ ] I have added sufficient documentation in code

Testing

[x] I have tested this code with the official test suite
[ ] I have tested this code manually

Codecov Report

Merging #178 (4e94b30) into dev (a736c73) will decrease coverage by 0.15%.
The diff coverage is 87.09%.

:exclamation: Current head 4e94b30 differs from pull request most recent head 6e82bd0. Consider uploading reports for the commit 6e82bd0 to get more accurate results

@@            Coverage Diff             @@
##              dev     #178      +/-   ##
==========================================
- Coverage   51.27%   51.12%   -0.16%
==========================================
  Files         113      115       +2
  Lines       16875    17038     +163
==========================================
+ Hits         8653     8711      +58
- Misses       7484     7587     +103
- Partials      738      740       +2

Impacted Files
Coverage Δ

network/identity/identity.go
18.18% <0.00%> (-0.19%)
:arrow_down:

helper/common/concurrent_map.go
91.42% <91.42%> (ø)

txpool/account.go
85.65% <91.66%> (+0.22%)
:arrow_up:

network/server.go
74.84% <100.00%> (+0.05%)
:arrow_up:

protocol/syncer.go
66.87% <100.00%> (+0.06%)
:arrow_up:

protocol/testing.go
83.25% <100.00%> (-0.64%)
:arrow_down:

txpool/queue.go
83.97% <100.00%> (-0.27%)
:arrow_down:

txpool/txpool.go
68.31% <100.00%> (ø)

helper/common/common.go
0.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@DarianShawn It's been tested by someone, it's an old question, The current sync.Map implementation is not good, it is worse than the simplified map + sync.RWMutex, It can be modified to sharding locks in the future (like concurrent-map)
golang/go#28938
golang/go#21035
golang/go#47643

@DarianShawn benchmark results
use sync.Map
dev branch (5f4f1a38)
root@9f69ebf63463:/work# go test -benchmem -count=3 -run=^$ -bench ^BenchmarkPruneStaleAccounts100KAccounts$ github.com/dogechain-lab/dogechain/txpool
goos: linux
goarch: amd64
pkg: github.com/dogechain-lab/dogechain/txpool
cpu: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
BenchmarkPruneStaleAccounts100KAccounts-16    	      82	  13443283 ns/op	  269576 B/op	    1220 allocs/op
BenchmarkPruneStaleAccounts100KAccounts-16    	      86	  13168944 ns/op	  277700 B/op	    1164 allocs/op
BenchmarkPruneStaleAccounts100KAccounts-16    	      86	  13126742 ns/op	  257031 B/op	    1163 allocs/op
PASS
ok  	github.com/dogechain-lab/dogechain/txpool	16.029s

use ConcurrentMap
commit (acd3b938)
root@9f69ebf63463:/work# go test -benchmem -count=3 -run=^$ -bench ^BenchmarkPruneStaleAccounts100KAccounts$ github.com/dogechain-lab/dogechain/txpool
goos: linux
goarch: amd64
pkg: github.com/dogechain-lab/dogechain/txpool
cpu: Intel(R) Core(TM) i7-10700K CPU @ 3.80GHz
BenchmarkPruneStaleAccounts100KAccounts-16    	     127	   8534692 ns/op	  218225 B/op	    1577 allocs/op
BenchmarkPruneStaleAccounts100KAccounts-16    	     134	   8750662 ns/op	  206825 B/op	    1495 allocs/op
BenchmarkPruneStaleAccounts100KAccounts-16    	     136	   9093683 ns/op	  203788 B/op	    1473 allocs/op
PASS
ok  	github.com/dogechain-lab/dogechain/txpool	15.688s


Add packl ctor taking bool + add overloads of operators involving packl's and bool's

This is a work in progress in the SPMD branch that will be merged into master.


Allow sorting exercises by start date

Checklist

[x] I tested all changes and all related features with different users (student, tutor, instructor, admin) on the test server https://artemistest.ase.in.tum.de.
[x] Client: I added multiple integration tests (Jest) related to the features (with a high test coverage)
[x] Client: I added multiple screenshots/screencasts of my UI changes
[x] Client: I translated all the newly inserted strings into German and English

Motivation and Context

The user is only able to sort for dueDates, but it should also be possible to sort for releaseDates

Description

Added nur dropdown with a new sortingtype, releaseDate
added tests for this component
Removed code which should be unused, please also double check this in the code review

Steps for Testing

Log in to Artemis
Navigate to Course overview
See if exercises are ordered correctly after dueDate
Vary with the sorting options (Newest, Oldest, DueDate, ReleaseDate) and make sure exercises are correctly ordered based on the chosen sorting type (see screenshots). Play around with the sorting button and make sure no errors occur and the sorting is always correct.

Test Coverage
course-exercises.component.ts: 20% -> 97,93%
Screenshots

if that should need test maybe you can link me what kind of tests and an example in artemis repo and some kind of tutorial. I am sure I will figure it out

the check client-style still fails. Please check the lint and prettier errors

the check client-style still fails. Please check the lint and prettier errors


To test before next release

[x] Reading from a bucket
[x] Writing to an existing bucket

[x] N5Writer should create a bucket when it doesn't exist

All done


[now dev] Use system installed version of Node.js for builds

Rather than downloading the 8.10 Node.js binary, simply assume that the user has their preferred version of node already installed onto the system and use that version.
If there is no node binary in the $PATH, then process.execPath is used instead, meaning that the pkg binary node version will be used.
NOTE: DO NOT merge this until relevant changes have been made to zeit/now-builders, otherwise we may run into native addon version mismatch issues.

Codecov Report

Merging #2480 into canary will decrease coverage by 0.49%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           canary    #2480     +/-   ##
=========================================
- Coverage   11.24%   10.75%   -0.5%
=========================================
  Files         256      256
  Lines        9260     9208     -52
  Branches     1037     1023     -14
=========================================
- Hits         1041      990     -51
  Misses       8115     8115
+ Partials      104      103      -1

Impacted Files
Coverage Δ

src/util/dev/builder.ts
67.27% <100%> (-0.19%)
:arrow_down:

src/util/dev/builder-cache.ts
67.52% <0%> (-9.45%)
:arrow_down:

Continue to review full report at Codecov.

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

I think it potentially cause problems when local and production nodejs version differs. e.g. local 12 and production 10.


Scripthookdotnet 3.5.1 crashes with LSPDFR/RPH version 2699

I know scripthookvdotnet works perfectly fine without LSPDFR, but with it, it crashes on loading screen. I have installed on required files for shvdn, but no solution for the crash.  "RPH and ENB launch.bat"
Update: it looks like with NVE installed and using its  "RPH and ENB launch.bat" that comes with NVE seems to not crash it with SHDN, but loading with RPH itself or using GTA V launcher and then loading rph after, still crahses it.

SHV log:  // GTA V SCRIPT HOOK (build Jul 27 2022, v1.0.2699.0)
//     (C) Alexander Blade 2015-2022
[19:54:31] INIT: Started
[19:54:31] INIT: Success, game version is VER_1_0_2699_0_STEAM
[19:54:31] INIT: Registering script 'ScriptHookVDotNet.asi' (0x00007FFC47631480)
[19:54:38] INIT: Pool 1 extended
[19:54:38] INIT: Pool 3 extended
[19:54:38] INIT: Pool 4 extended
[19:54:43] INIT: GtaThread collection size 189
[19:54:43] INIT: wnd proc 0x00000000FFFF0A5B
[19:54:43] INIT: IDXGISwapChain 0x00007FFC72A0DDD8 (0x00007FFB8A1FF090)
[19:54:43] INIT: IDXGISwapChain set
[19:54:43] INIT: DX init started
[19:54:43] INIT: DX feature level B000
[19:54:43] INIT: DX init succeeded
[19:55:15] CORE: Requesting thread creation
[19:55:15] CORE: Creating threads
[19:55:16] CORE: Started control thread, id 33 active 1
[19:55:16] CORE: Started thread 'ScriptHookVDotNet.asi' (0x00007FFC47631480), id 34 active 1
[19:55:16] CORE: Launching main() for 'ScriptHookVDotNet.asi' (0x00007FFC47631480), id 34
SHDN log:  [19:55:16] [DEBUG] Loading API from .\ScriptHookVDotNet2.dll ...
[19:55:16] [DEBUG] Loading API from .\ScriptHookVDotNet3.dll ...
[19:55:16] [DEBUG] Loading scripts from C:\Program Files (x86)\Steam\steamapps\common\Grand Theft Auto V\scripts ...
[19:55:16] [DEBUG] Loading assembly DisablePhone.dll ...
[19:55:16] [INFO] Found 1 script(s) in DisablePhone.dll resolved to API 2.11.5.
[19:55:16] [DEBUG] Instantiating script DisablePhone.DisablePhone ...
[19:55:17] [INFO] Started script DisablePhone.DisablePhone.
RPH log: [8/27/2022 7:54:35 PM.844] Started new log on 8/27/2022 7:54:35 PM.844
[8/27/2022 7:54:35 PM.844] ====================================================================================================
[8/27/2022 7:54:35 PM.841] Log path: C:\Program Files (x86)\Steam\steamapps\common\Grand Theft Auto V\RagePluginHook.log
[8/27/2022 7:54:35 PM.845] Log verbosity: Trivial
[8/27/2022 7:54:35 PM.846] Initializing input system
[8/27/2022 7:54:35 PM.847] Initializing game console
[8/27/2022 7:54:35 PM.851] Console key has been set to F4 (key code: 115)
[8/27/2022 7:54:35 PM.880] Initializing console variable "ConsoleScrollAmount".
[8/27/2022 7:54:35 PM.890] Type: System.Int32, Reading section: "Miscellaneous", key: ConsoleScrollAmount
[8/27/2022 7:54:35 PM.892] Read value:
[8/27/2022 7:54:35 PM.892] Initializing console variable "ConsoleKey".
[8/27/2022 7:54:35 PM.892] Type: System.Windows.Forms.Keys, Reading section: "Miscellaneous", key: ConsoleKey
[8/27/2022 7:54:35 PM.893] Read value: F4
[8/27/2022 7:54:35 PM.893] Setting value of console variable "ConsoleKey" to stored value.
[8/27/2022 7:54:35 PM.893] Console key has been set to F4 (key code: 115)
[8/27/2022 7:54:35 PM.893] Initializing console variable "PluginTimeoutThreshold".
[8/27/2022 7:54:35 PM.893] Type: System.Int32, Reading section: "Miscellaneous", key: PluginTimeoutThreshold
[8/27/2022 7:54:35 PM.895] Read value: 60000
[8/27/2022 7:54:35 PM.895] Setting value of console variable "PluginTimeoutThreshold" to stored value.
[8/27/2022 7:54:35 PM.895] Initializing console variable "AlwaysShowConsoleOutput".
[8/27/2022 7:54:35 PM.895] Type: System.Boolean, Reading section: "Miscellaneous", key: AlwaysShowConsoleOutput
[8/27/2022 7:54:35 PM.896] Read value:
[8/27/2022 7:54:35 PM.896] Initializing console variable "ShowConsoleCommandInfoOnPluginLoad".
[8/27/2022 7:54:35 PM.896] Type: System.Boolean, Reading section: "Miscellaneous", key: ShowConsoleCommandInfoOnPluginLoad
[8/27/2022 7:54:35 PM.897] Read value: False
[8/27/2022 7:54:35 PM.897] Setting value of console variable "ShowConsoleCommandInfoOnPluginLoad" to stored value.
[8/27/2022 7:54:35 PM.897] Initializing console variable "ShowOnScreenWarnings".
[8/27/2022 7:54:35 PM.897] Type: System.Boolean, Reading section: "Miscellaneous", key: ShowOnScreenWarnings
[8/27/2022 7:54:35 PM.897] Read value:
[8/27/2022 7:54:35 PM.897] Console initialized
[8/27/2022 7:54:35 PM.897] Initializing forms manager
[8/27/2022 7:54:35 PM.898] Cleaning temp folder
[8/27/2022 7:54:35 PM.899] Version: RAGE Plugin Hook v1.96.1311.16366 for Grand Theft Auto V
[8/27/2022 7:54:35 PM.904] ================ RAGE Plugin Hook ================
[8/27/2022 7:54:35 PM.907] Detected Windows 10 Professional (64-bit) (10.0.22000.0)!
[8/27/2022 7:54:35 PM.907] Checking game support
[8/27/2022 7:54:35 PM.960] Product name: Grand Theft Auto V
[8/27/2022 7:54:35 PM.960] Product version: 1.0.2699.0
[8/27/2022 7:54:35 PM.960] Is steam version: True
[8/27/2022 7:54:35 PM.961] Initializing DirectX
[8/27/2022 7:54:35 PM.961] Initializing Direct3D
[8/27/2022 7:54:35 PM.961] Getting game swap chain
[8/27/2022 7:54:35 PM.976] Swap Chain created: 0x7FF74BFAE910
[8/27/2022 7:54:35 PM.976] Swap Chain VTable: 0x1B47F0340D0
[8/27/2022 7:54:35 PM.976] 0x748948F760F045E9;0x8D48564157552024;0x170EC814890246C
[8/27/2022 7:54:35 PM.976] D3D11Present: 0x7FFC729714C0
[8/27/2022 7:54:35 PM.976] D3D11ResizeBuffers: 0x7FFC72997790
[8/27/2022 7:54:35 PM.976] D3D11ResizeTarget: 0x7FFC729E6B10
[8/27/2022 7:54:35 PM.976] D3D11SetFullscreenState: 0x7FFC72998350
[8/27/2022 7:54:35 PM.976] Direct3D initialized
[8/27/2022 7:54:35 PM.977] Initialized DirectX
[8/27/2022 7:54:35 PM.977] Direct3D watcher thread spawned
[8/27/2022 7:54:36 PM.023] Getting device
[8/27/2022 7:54:36 PM.023] Retrieved device
[8/27/2022 7:54:36 PM.023] Creating wrapper
[8/27/2022 7:54:36 PM.054] Wrapper created
[8/27/2022 7:54:36 PM.056] Effect created
[8/27/2022 7:54:36 PM.056] Creating buffer
[8/27/2022 7:54:36 PM.056] Created buffer
[8/27/2022 7:54:36 PM.056] Creating blend state
[8/27/2022 7:54:36 PM.056] Created blend state
[8/27/2022 7:54:36 PM.056] Done with creation
[8/27/2022 7:54:36 PM.081] Initializing texture system.
[8/27/2022 7:54:36 PM.081] Initializing texture system; phase 1
[8/27/2022 7:54:36 PM.081] Initializing texture system; phase 2
[8/27/2022 7:54:36 PM.085] Initializing texture system; phase 3
[8/27/2022 7:54:36 PM.085] Initializing texture system; phase 4
[8/27/2022 7:54:36 PM.090] Initializing texture system; phase 5
[8/27/2022 7:54:36 PM.091] Initializing texture system; phase 6
[8/27/2022 7:54:36 PM.091] Initializing texture system; phase 7
[8/27/2022 7:54:36 PM.092] Initializing texture system; phase 8
[8/27/2022 7:54:36 PM.093] Initializing texture system; phase 9
[8/27/2022 7:54:36 PM.093] Initializing texture system; phase 10
[8/27/2022 7:54:36 PM.095] Initializing texture system; phase 11
[8/27/2022 7:54:36 PM.095] Initializing texture system; phase 12
[8/27/2022 7:54:36 PM.096] Initializing texture system; phase 13
[8/27/2022 7:54:36 PM.096] Initializing texture system; phase 14
[8/27/2022 7:54:40 PM.977] Direct3D watcher thread ended
[8/27/2022 7:55:07 PM.096] LoadingScreenMsg: Initializing game support
[8/27/2022 7:55:07 PM.347] Initializing game support
[8/27/2022 7:55:12 PM.668] LoadingScreenMsg: Velocity limit removed
[8/27/2022 7:55:12 PM.960] Compatibility level: 0
[8/27/2022 7:55:12 PM.960] Supported version detected
[8/27/2022 7:55:12 PM.960] ==================================================
[8/27/2022 7:55:12 PM.960] LoadingScreenMsg: Patching code
[8/27/2022 7:55:13 PM.211] LoadingScreenMsg: Waiting for game initialization
[8/27/2022 7:55:13 PM.461] Waiting for game initialization
[8/27/2022 7:55:13 PM.562] LoadingScreenMsg: Initializing core
[8/27/2022 7:55:13 PM.812] Initializing hook
[8/27/2022 7:55:18 PM.827] LoadingScreenMsg: Completing interoperability
[8/27/2022 7:55:19 PM.077] Completing interoperability
[8/27/2022 7:55:19 PM.077] Initialization code 1.
[8/27/2022 7:55:19 PM.077] Initialization code 2.
[8/27/2022 7:55:19 PM.077] Initialization code 3.
[8/27/2022 7:55:19 PM.081] 1 Address: 0x00007FF749C7F93C
[8/27/2022 7:55:19 PM.081] Calling func 1
[8/27/2022 7:55:19 PM.089] 2 Address: 0x00007FF74A820DCE
[8/27/2022 7:55:19 PM.089] 3 Address: 0x00007FF749245FFE
[8/27/2022 7:55:19 PM.109] Address: 0x00007FF74A820D78
[8/27/2022 7:55:19 PM.109] Unknown var: 0x00007FF74B99FD20
[8/27/2022 7:55:19 PM.109] Initialization code 4.
[8/27/2022 7:55:19 PM.109] Initialization code 5.
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 1
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 2
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 3
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 4
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 5
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 6
[8/27/2022 7:55:19 PM.109] Completing interoperability, phase 7
[8/27/2022 7:55:19 PM.109] LoadingScreenMsg:
[8/27/2022 7:55:19 PM.360] LoadingScreenMsg: Loading Story Mode
[8/27/2022 7:55:19 PM.610] LoadingScreenMsg: Loading and Populating Game World
[8/27/2022 7:55:19 PM.861] LoadingScreenMsg:
[8/27/2022 7:55:22 PM.652] Initializing console variable "IsDeveloperModeEnabled".
[8/27/2022 7:55:22 PM.652] Type: System.Boolean, Reading section: "Miscellaneous", key: IsDeveloperModeEnabled
[8/27/2022 7:55:22 PM.653] Read value:
[8/27/2022 7:55:22 PM.653] Initializing console variable "TimeScale".
[8/27/2022 7:55:22 PM.653] Type: System.Single, Reading section: "Miscellaneous", key: TimeScale
[8/27/2022 7:55:22 PM.653] Read value:
[8/27/2022 7:55:22 PM.659] Loading plugin from path: C:\Program Files (x86)\Steam\steamapps\common\Grand Theft Auto V\Plugins\LSPD First Response.dll

Same exact problem, but just using RPH. Crashes every time during load up story mode with RPH.  Without it, game runs fine.  This is a known issue, not sure why it can't get resolved. Never use to do this until the latest few updates of SHVDN

I too am having compatibility issues with RPH. Crashes my game when loading with RPH, but works just fine without it. Oddly, I'm able to get it to load just once with RPH when rebooting my computer, then after the second try, it no longer works and starts crashing again. I hope someone will be able to fix this, I miss scripts with LSPDFR.

I’m not completely convinced, but If #976 is relevant to this issue, then this is responsible to our SHVDN.

Same issue here, crashes with it, fine without.
Load story fine with it, load with RPH, crash and nothing more.

BTW, one quick work around with SHVDN crashing during load up with RPH.  OpenIV >tools > ASI managers > Uninstall OpenIV.asi and ASI Loader.  Reboot PC (no need to shut down)  Once rebooted:  OpenIV > tools > ASI managers >  reinstall OpenIV.asi and ASI loader.  Should be a temporary fix for at least that day of gameplay.

Gave this a try and still having the same issue unfortunately.


Why cannot find WASStartup and WSACleanup in source code?

Question 1: I found that the WINDOWS system handles the network offline (unplug the peer network cable), and it takes about 8 seconds for the program to detect it.
Problem 2: During the brute force test, connections are constantly established and closed (shutdown). Socket2 does not call the WSACleanup function, so the connection fails.

Question 1: I found that the WINDOWS system handles the network offline (unplug the peer network cable), and it takes about 8 seconds for the program to detect it.

This is outside of the scope of socket2. Socket2 doesn't do anything to change this.

Problem 2: During the brute force test, connections are constantly established and closed (shutdown). Socket2 does not call the WSACleanup function, so the connection fails.

We use the standard library for WSAStartup, see https://github.com/rust-lang/socket2/blob/1f70523b45a061560eb92a5510cfeed0a8e83de1/src/sys/windows.rs#L218-L227. In rust standard library: https://github.com/rust-lang/rust/blob/078eb1120a3f576598b976d9470701363f48fccc/library/std/src/sys/windows/net.rs#L36-L59

Is there a reason why WSAStartup isn't called directly? Being tied to the standard library's startup/shutdown seems less versatile and more hacky.

Is there a reason why WSAStartup isn't called directly? Being tied to the standard library's startup/shutdown seems less versatile and more hacky.

It's not really possible as standard library always calls the WSAStartup whenever a std::net type is used. Furthermore it will panic if the call to WSAStartup fails. So if socket2 would call WSAStartup itself any usage of a type in std::net would cause a panic.

WSAStartup can be successfully called multiple times. The std only panics if the call fails. Trivial example:

That certainly didn't use the be case. What Windows version are you using?
Some more background: https://github.com/tokio-rs/mio/issues/1046, https://github.com/tokio-rs/mio/pull/1029

I've not yet investigated that thread but it's documented behaviour so I'm surprised it didn't work.

An application can call WSAStartup more than once if it needs to obtain the WSADATA structure information more than once. On each such call, the application can specify any version number supported by the Winsock DLL...
An application must call the WSACleanup function for every successful time the WSAStartup function is called.


Release rsconnect-python 1.20.0

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

It's e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender


NotSupportedException on InvokeIfOutputStreamFound

Plugin Version or Commit ID
v0.10.0
Unity Version
2021.3.4f
Your Host OS
Windows 10 Pro / Mac OS
Target Platform
iOS
Description
Suddenly I got this error message when I play the app.
NotSupportedException: To marshal a managed method, please add an attribute named 'MonoPInvokeCallback' to the method definition. The method we're attempting to marshal is: Mediapipe.Unity.OutputStream`2[[Mediapipe.NormalizedLandmarkListPacket, Mediapipe.Runtime, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null],[Mediapipe.NormalizedLandmarkList, Mediapipe.Runtime, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]]::InvokeIfOutputStreamFound
  at Mediapipe.UnsafeNativeMethods.mp_CalculatorGraph__ObserveOutputStream__PKc_PF_b (System.IntPtr graph, System.String streamName, System.Int32 streamId, Mediapipe.CalculatorGraph+NativePacketCallback packetCallback, System.Boolean observeTimestampBounds, System.IntPtr& status) [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.CalculatorGraph.ObserveOutputStream (System.String streamName, System.Int32 streamId, Mediapipe.CalculatorGraph+NativePacketCallback nativePacketCallback, System.Boolean observeTimestampBounds) [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.Unity.OutputStream`2[TPacket,TValue].AddListener (System.EventHandler`1[TEventArgs] callback) [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.Unity.Holistic.MySolution.OnStartRun () [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.Unity.Holistic.MySolution+<Run>d__26.MoveNext () [0x00000] in <00000000000000000000000000000000>:0
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0

And this is the definition of InvokeIfOutputStreamFound  of OutputStream.cs file (Nothing changed to your code)
  [AOT.MonoPInvokeCallback(typeof(CalculatorGraph.NativePacketCallback))]
    protected static Status.StatusArgs InvokeIfOutputStreamFound(IntPtr graphPtr, int streamId, IntPtr packetPtr)
    {
      try
      {

I can't get the idea, so could you tell me something suspicious about it?
Code to Reproduce the issue
No response
Additional Context
No response

Suddenly I got this error message when I play the app.

What do you mean by "suddenly"?
If you're sure that the plugin code is not modified, try removing Library/.
rm -rf Library

The build did not work in the commit that was built before. Thank you for replying I'll try it

It works Thanks!

Did you remove the cache (e.g. Library/) before starting UnityEditor?

Yes, still have problem with this error. I'll describe more information here if I have further progress.

Will you try it again, please?

Close UnityEditor
rm -rf Library/
Open UnityEditor
Build your app


Some tabs are not shown completely when many tabs are open

Description:
Some tabs are not shown completely when many tabs are open. No horizontal scroll bar for the entire page as well

verified the fix for this issue with 0.970.2


Add a language dropdown list

Describe the feature
The user can listen to songs of the language he likes so we can add a dropdown functionality regarding this.
So when user selects a particular language he/she will be recommended that particular language songs
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I have checked the existing issues
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

Before we proceed, could you please provide some specifics on how you plan to tackle this task?
Backend Implementation: How do you plan to integrate language selection functionality into our backend?
Frontend Integration: What approach do you propose for integrating the language selection dropdown into our frontend interface? Will this involve any significant UI changes or additions?

@Riddhi162  clarify your task and if u are able to do asap then it is good to assign u.

So in your provided api link there is a global search option wherein there is a language parameter

And in the index.js file the way we are calling year and name of the artist we can also call its language and then filter the music array based on the selected language I'm willing to work on this. I'll make sure that I'll complete this issue.

Before we proceed, could you please provide some specifics on how you plan to tackle this task?
Backend Implementation: How do you plan to integrate language selection functionality into our backend?
Frontend Integration: What approach do you propose for integrating the language selection dropdown into our frontend interface? Will this involve any significant UI changes or additions?

We can include the language icon on the bar where there is search option and that will simply create a dropdown list and as we select the language top songs in that language will be available. So no such significant ui changes

@Riddhi162  do it.

Please assign this to me! I will filter the songs according to the language selected.

@Riddhi162 Please update your status on this issue. If you won't be taking it forward, it would be assigned to someone else.

@riyasachdeva04 I created the pull request please check.


feat: use custom root type for KeyBinding

it won't let me re-open the previous PR since I force-pushed so see #65 for context

ok, I took a look deeper at the failing test, and I have to say, I still just feel like we're focusing on the app-model side more than the napari side here.  The issue (as I'm sure you're well aware, but now I am too) is that pydantic is now having difficulty serializing the default value for ShortcutsSettings.shortcuts ... (not the field itself) which, after #68 was merged, is now essentially a dict of arbitrary objects.  which indeed does pose more of a challenge for serialization than it did when it was a base model.
looking through the field default serialization code in pydantic, it looks like the main reason that __modify_schema__ didn't appear to be working for you is that it's actually not making it to that point before it chokes on serializing the default value.  However, one way to avoid trying to serialize a complex default value when generating the schema is simply to not provide it to default, but to use a default_factory instead.  (then you'll bypass the encode_default function here)
So, before we continue doing surgery on the Keybindings field (which really is and should be able to be a rather simple field)... I'd look harder at ShortcutSettings.  Try, for example, to use:
class ShortcutsSettings(EventedModel):
    shortcuts: Dict[str, List[KeyBinding]] = Field(
        default_factory=lambda: default_shortcuts,
        ...

and then either revert #68 or use modify_schema with something like
    @classmethod
    def __modify_schema__(cls, field_schema, field: Optional['ModelField']):
        if field:
            field_schema['type'] = 'string'

okay, thanks for investigating and coming up with alternative solutions, ill try this one out today and let you know how it goes

so it does fix the schema bug, however it then doesnt properly factor into the logic for excluding defaults since it is a factory, will investigate further
 assert safe_load(fake_path.read_text()) == {
            'schema_version': CURRENT_SCHEMA_VERSION
        }
E       AssertionError: assert {'schema_vers... ['P'], ...}}} == {'schema_vers..., build=None)}
E         Omitting 1 identical items, use -vv to show
E         Left contains 1 more item:
E         {'shortcuts': {'shortcuts': {'napari:activate_add_ellipse_mode': ['E'], ...

Interesting. If your main issue is with putting the hacky workarounds inside app-model, how would you feel about doing the same hacky stuff you hate but putting it in napari instead? I could make a wrapper around the app_model.KeyBinding object and do all the surgery on that and stick it in the napari repo itself.

how would you feel about doing the same hacky stuff you hate but putting it in napari instead?

i would like that more!  I do still think these workarounds are indicative of deeper problems on the napari side... but given that those problems already exist there, and less so here, i'd much rather keep them "grouped" together over there :joy:


Backend: Many Common Embeds Broken

Since many types of media embed (twitter, instagram, flickr, imgur, etc) have switched to using a specially-named DIV that triggers some javascript to load the actual content, many stories that consist mostly of these embeds (for example, a blog post about a series of tweets) show up and uselessly empty.  It seems that many RSS feeds strip out the required script tags for some reason, breaking the original content.  It would be fairly cheap/easy to re-enhance the story HTML with these missing tags if we see any of the well-known DIV names and fix the broken content and would really save our users the time and headache of leaving the app and having to load a whole web page.

Hmm, we have this problem on iOS and on the web. I think a server-side fix would be more appropriate.

I did one quick experiment where I had the story view scan a story for any twitter-tweet attribute and if I find it, I tack on a <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> at the end before pushing to the UI.  Worked a treat.

Ok, what I need to do is make this happen on the backend. Would you mind testing if instagram also works similarly? If all I need to do is add a script to the end of a story if it contains a string then I can add that this week.

Will give it a poke when I get back to my build env. (note to self: Looks like the magic string is instagram-media and the script should be something like <script async defer src="//platform.instagram.com/en_US/embeds.js"></script>)

Okay, confirmed that replacing the stripped-out scripts at the end of the story body works just fine for Twitter and Instagram embeds.  It seems, however, that imgur embeds get even more mangled by content platforms than just having their scripts stripped, so until I find a feed that doesn't totally wreck them, I can't test.
Here are my search keys and the tags I append before the end of the body:

key
tag

twitter-tweet
<script id="twitter-wjs" type="text/javascript" async defer src="http://platform.twitter.com/widgets.js"></script>

instagram-media
<script async defer src="http://platform.instagram.com/en_US/embeds.js"></script>

imgur-embed-pub
<script async src="http://s.imgur.com/min/embed.js" charset="utf-8"></script>

The script tags are exactly as prescribed by the sites, though they might still work in more simplified forms.

I added instagram, but do you have any example feeds/stories for imgur and twitter?

9420924c1d51d7e6ba62d8ae48f5960adeab2407

I see instagram posts sporadically throughout lots of tumblr feeds.  Here is a random one where the most-recent post is an IG video embed:
https://www.newsblur.com/site/3652990/
And here is another (you'll need to go a dozen or so stories in, probably) that often uses both styles of Instagram embed that work and that don't work:
https://www.newsblur.com/site/3844191/

Looks like that second one has a twitter embed that looks to be working now.

Instagrams do too. Excellent!

Note that the feed needs to be insta-fetched (or automatically fetched) for the stories to be updated. Top feed is five hours old, so an insta-fetch fixed the images.

Very nice!  I imagine this will save me (everyone?) a ton of time popping in and out of browsers from time to time.

That's the hope. However, I can verify that for whatever reason, it isn't automatically working on iOS.

I know that back in the day, in order to get some other non-stripped embeds working, I had to ensure the HTML viewer component had all of the following enabled:

javascript
HTML5 local/dom storage
file/cache access
Also had to ensure that the CSS overrides we were doing didn't restrict the dynamic divs or blockquotes from expanding when their scripts finally ran.

It's because I'm using scheme-less URIs.
//platform.twitter.com/widgets.js becomes file://platform.twitter.com/widgets.js. I would specify https, but Safari didn't let the embed happen due to mismatching schemes.

ahh, yeah, listed the tags in the table with the scheme included because some versions and configurations of the Android webview had similar issues.

Ok, moved to https. Works on iOS now. Will try and blog about this tomorrow. I should go find an imgur example too.

Looks like Android is doing something funky and clipping the embeds. See this story from Coding Horror.

And this Instagram embed on Mission Mission.

See the note in #846, which contains the patch that prepared the Android app for these changes.

Ahh, sorry about that. I hadn't cleared my github inbox yet. I was prepping for a blog post, which it looks like I can still publish today. Thanks!

Blogged: http://blog.newsblur.com/post/134937976476/better-embeds-for-twitter-instagram-and-imgur

Nice.  If that Beta looks stable after a day, we can push it up to Prod whenever you like.  It contains quite a few fixes along with the embed tweaks.


[EUWE] Revert disabling snapshot revert of active snapshots

Euwe PR for https://github.com/ManageIQ/manageiq-ui-classic/pull/409
Revert of https://github.com/ManageIQ/manageiq/pull/12768
This was causing issues on VMware where you are able to revert to the current snapshot
https://bugzilla.redhat.com/show_bug.cgi?id=1402992

cc @dclarizio @h-kataria @borod108

@h-kataria is this good to go?


[SPARK-13351] [SQL] fix column pruning on Expand

Currently, the columns in projects of Expand that are not used by Aggregate are not pruned, this PR fix that.

Test build #51397 has started for PR 11225 at commit bfa6896.

Test build #51397 has finished for PR 11225 at commit bfa6896.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51397/
Test PASSed.

LGTM. This change looks correct to me.
I'm going to merge this PR into master.


Comment Driven Behaviors

Is your feature request related to a problem? Please describe.

Describe the solution you'd like
This would exist purely to enhance the overall intelligence that VSCode can give users. I would like to use a formalized comment system to provide:

LSP file header reference(s) to another *.LSP that explicitly instructs VSCode to include those (now linked) document symbols in my autoComplete suggestions. Very similar to how TypeScript & C# uses the Import keyword to create a direct data coupling to an external file.
SETQ  headers that denote VSCode should refer to these variable names as enumerators.
DEFUN headers that can provide signature and argument declaration information for user defined functions.

Additional context
None of this is unique and the benefits would be quite the feature evolution for AutoLisp users. Many languages provide Attribute headers and ///@Param comment declarations. We would just need to formalize what we are doing and nudge VSCode to help the user follow those rules. I would probably suggest not going C# & XML on this. Thinking more like something resembling AutoLisp:
;(assert IMPORT "./utilities/pointHelpers.lsp")

;(assert ENUM (type STR) "optional usage description")
(setq goodChoice "UseExisting"
      badChoice  "StartFromScratch"
)

;(assert DEFUN (pt1 (type LIST)) (pt2 (type LIST)) (type LIST))
ALSO accept longer/cleaner versions of the header like:
;(assert DEFUN "optional usage statement"
;    (pt1 (type LIST) "optional definition statement")
;    (pt2 (type LIST) "optional definition statement")
;    (type LIST "optional return value summary statement"))
(defun XYZ:Midpoint (pt1 pt2 / x y z)
  (setq x (/ (+ (car pt2) (car pt1)) 2.0)
        y (/ (+ (cadr pt2) (cadr pt1)) 2.0)
        z (/ (+ (caddr pt2) (caddr pt1)) 2.0)
  )
  (list x y z)
)

So, these  examples represent a suggestion to rely on the syntax we already have. This will allow us to utilize existing parsing capabilities to extract this information. We would just have to define some comment system function/type names

It looks like this is a big one, we need to take some time to design and design it.

Agreed on the careful design, but I really don't think this is fundamentally that complicated. The VSCode limitations (stated below) may in fact make it slightly easier.
From what I can tell, the vscode.languages.registerCompletionItemProvider won't trigger within something VSCode has determined to be a comment.
I still want some version of this, but not so sure it can be assisted the way I wanted. Probably have to be more snippet based and maybe there is some way we can swoop in and contextually manipulate the inserted template or in the case of import prompt for a file.


Regarding #106

Actually browsers like chrome have disabled displaying custom messages on reload from sites (previously I thought it was possible but on doing some research I find this). They display their own messages instead.
You can test it here: https://rahuljagwani.github.io/concore-editor/
@pradeeban

ok, close enough. Thanks for the fix. Merged.

@pradeeban
Thanks for merging.
I have somewhat tried to integrate the concore-editor with concore. You can check it here: https://rahuljagwani.github.io/concore-editor/.
To test:

Start the concore server
Upload directory on concore-editor from which graphml has to be merged.(example: sample from demo or sampleplot from example etc.)
open the graphml file to be build
Now click on 'build' (wait for sometime to let it build and execute other functions)

For now it is working for only valid directories and files and a lot of checks are pending and order of executing functions has to be done in certain order.
I just want to know, is this the sort of integration which is expected?
Give me feedback about it.
Thanks

The steps look good to me.
But you did not include one step above. That is, starting the FRI.
Is that something you forgot to improve in the steps (which is okay - you can go ahead and edit the steps above), or did you make some changes in FRI or concore-editor to make that manual FRI startup step unnecessary/obsolete? (which will be fantastic, but we never thought about that that far).

The steps look good to me.
But you did not include one step above. That is, starting the FRI.
Is that something you forgot to include in the steps (which is okay - you can go ahead and edit the steps above), or did you make some changes in FRI or concore-editor to make that manual FRI startup step unnecessary/obsolete? (which will be fantastic, but we never thought about that that far).

Actually this implementation works when in fri/server (python3 main.py) is called manually, which I have mentioned in step 1 (starting the concore server) .
Here I have just made changes in concore-editor's axios api calls to server by removing the hardcoding and putting the generic variable name in code, which works when Directory and graphmls are uploaded.
(For ex-
Axios.post(http://<IP_ADDRESS>:5000/build/${this.superState.uploadedDirName}fetch=${this.superState.graphs[this.superState.curGraphIndex].fileName.split('.')[0]})
.then((res) => { // eslint-disable-next-line
alert(res.data['message'])
}).catch((err) => { // eslint-disable-next-line
alert(err);
});
)
Regarding the "changes in FRI or concore-editor to make that manual FRI startup step unnecessary/obsolete" , I thought in this direction and came to conclusion about its implementation that even though its possible but a lot configuration change has to be done in node modules as from frontend js which is browser code we have use it as a server-side code and certain features will be difficult to use. We can implement this later after researching more, till then let user call backend manually.

Ah, this is good enough. My bad that I quickly skimmed through and did not notice "FRI" in your comment. You are right at calling it the concore server (both are essentially the same).