Issues running velocyto

Hi,
I am trying to run velocyto using both run and run10x command. I get the same error in each case. It looks like an issue with samtools
I am running it on cluster using 1 node and 12ppn. I am not sure how to set the parameters in veloctyto for samtools on a cluster
I tried to run samtools on passorted_bam.bam to generate cell sorted file and try to run velocyto on it and I still get same error.
See the commands and error below
Any help will be appreciated!
Many Thanks
run10x
velocyto run10x -m  /cluster/projects//mm10_rmsk.gtf   /cluster/projects/MFS_DCS_pool  /cluster/projects//genes.gtf
run
velocyto run -b outs/filtered_gene_bc_matrices/mm10/barcodes.tsv -o ./velocyto_run  -m  /cluster/projects//mm10_rmsk.gtf outs/possorted_genome_bam.bam  /cluster/projects//genes.gtf
run  -> after sort
samtools sort -l 0 -O BAM -t CB outs/possorted_genome_bam.bam -o cellsorted_possorted_genome_bam.bam
velocyto run -b outs/filtered_gene_bc_matrices/mm10/barcodes.tsv -o ./velocyto_run_cellsorted -m  /cluster/projects//mm10_rmsk.gtf cellsorted_possorted_genome_bam.bam  /cluster/projects//genes.gtf
##############################
And I get the following error
##############################
018-12-14 15:32:12,809 - DEBUG - Read first 290 million reads
2018-12-14 15:32:31,928 - DEBUG - End of file. Reset index: start scanning from initial position.
2018-12-14 15:32:31,965 - DEBUG - 2742974 reads were skipped because no apropiate cell or umi barcode was found
2018-12-14 15:32:31,966 - INFO - Now just waiting that the bam sorting process terminates
samtools sort: couldn't allocate memory for bam_mem
/cluster/tools/software/python/3.6.5/lib/python3.6/site-packages/h5py/init.py:36: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type.
from ._conv import register_converters as _register_converters
Traceback (most recent call last):
File "/cluster/tools/software/velocyto/0.17.13/bin/velocyto", line 11, in
sys.exit(cli())
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/click/core.py", line 764, in call
return self.main(*args, **kwargs)
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/velocyto/commands/run10x.py", line 106, in run10x
samtools_memory=samtools_memory, dump=dump, verbose=verbose, additional_ca=additional_ca)
File "/cluster/tools/software/velocyto/0.17.13/lib/python3.6/site-packages/velocyto/commands/_run.py", line 225, in _run
Otherwise sort manually by samtools sort -l [compression] -m [mb_to_use]M -t [tagname] -O BAM -@ [threads_to_use] -o cellsorted_[bamfile] [bamfile]")
MemoryError: bam file #0 could not be sorted by cells.
This is probably related to an old version of samtools, please install samtools >= 1.6.                In alternative this could be a memory error, try to set the --samtools_memory option to a value compatible with your system.                 Otherwise sort manually by samtools sort -l [compression] -m [mb_to_use]M -t [tagname] -O BAM -@ [threads_to_use] -o cellsorted_[bamfile] [bamfile]

@shabs24  Did you manage to solve this? I receive the same error.

@shabs24 @idalarsson  Did you solve this? I also got the same error when I tried run10X, run after sort both.

@shabs24 @idalarsson Did you solve this? I also got the same error when I tried run10X, run after sort both.

I was running on cluster and was able to solve by requesting more memory (60 GB).

@shabs24 , how much memory do you have avaiable on your cluster? I also got the same error. The file is 10x, So I suppose it's already sorted. I'm running it on a 128GB RAM system.

@davisidarta, I have used 60 Gb memory on the cluster.

I had the same problem ... how many threads are you using? (want an estimation of threads ~ memory per sample)

I am using 240 GB for a 1000 cells and still hitting the same error. No idea what is going wrong. Samtools is version 1.9
~$ velocyto run10x -m /alltracks_mask.gtf /KUL-1-1000cells/ /refdata-cellranger-mm10-3.0.0/genes/genes.gtf --samtools-memory 240000
MemoryError: bam file #0 could not be sorted by cells.
                This is probably related to an old version of samtools, please install samtools >= 1.6.                In alternative this could be a memory error, try to set the --samtools_memory option to a value compatible with your system.                 Otherwise sort manually by samtools ``sort -l [compression] -m [mb_to_use]M -t [tagname] -O BAM -@ [threads_to_use] -o cellsorted_[bamfile] [bamfile]``

If anyone is struggling with the same issue, please see this
https://github.com/velocyto-team/velocyto.py/issues/192#issuecomment-545349435

@saeedfc @shabs24 After you cellsort the possort bam file. Did you just use the same bam.bai index file that came with the possort bam from cellranger? Or, did you index the cellsorted_possorted bam? Thank you so much!

I faced the same error, I tried requesting more memory and it didn't work. Since I used conda, so I created a new environment and installed velocyto based on the installation guide. The problem is solved.

nowadays, I can shoot this problem like this
create new env
conda create -n velocyto python=3.9
install samtools, first(maybe you can get a samtools version =1.17
conda install -c bioconda samtools
and then, install other things(reference by https://velocyto.org/velocyto.py/install/index.html)
conda install numpy scipy cython numba matplotlib scikit-learn h5py click
install velocyto through this way(reference by https://velocyto.org/velocyto.py/install/index.html)
because when I do"pip install velocyto", It has a error like version collision with other package(ex:pandas,,etc.)
git clone https://github.com/velocyto-team/velocyto.py.git
cd velocyto.py
pip install -e .
and then excute your velocyto code
velocyto run10x -m /cluster/projects//mm10_rmsk.gtf /cluster/projects/MFS_DCS_pool /cluster/projects//genes.gtf
or you can try this way that recommend by this website(https://lightrun.com/answers/velocyto-team-velocyto-py-issues-running-velocyto)
this website told you that run samtools, first. And then, run velocyto.
#good luck to you:))

SOLVED！
Run velocyto begin with  velocyto run --samtools-memory 4000 this will set your samtools memory to 4000MB, which is based on the instruction of this:https://velocyto.org/velocyto.py/fullapi/cliapi.html?highlight=memory#cmdoption-velocyto-run-samtools-memory.


fix release workflow

Time spent on this PR:
Resolves: #
Pull Request type

Please check the type of change your PR introduces:

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[ ] Testing

What is the new behavior?

Does this introduce a breaking change?

[ ] Yes
[x] No

Will have to release v0.2.7-1


Some Faces lose Lightmaps upon loading

I've found on some maps, faces get incorrectly flagged as "special" and end up losing their lightmaps
for example in "c1a4i.bsp"

@marigi64 thanks, fixed in https://github.com/UnrealKaraulov/newbspguy/commit/35dc1849e1aba8f921b8c25d60848bef9e2a55f3


Title required for most directives

Hi,
It seems that contrary to what's in the documentation, titles are required for all directives except proof (using jupyter-book).
If I write:
```{prf:theorem}
Content
```

I get the following "There was an error in building your book.".
More details:
Exception occurred:
File "XXXXX/.local/lib/python3.8/site-packages/sphinx_proof/nodes.py", line 36, in depart_enumerable_node
idx = self.body.index(f"Proof {number} ")
ValueError: 'Proof  ' is not in list
It works well if I add a title:
```{prf:theorem} Theorem title
Content
```

Is it possible to make the title optional?
Thanks for your help!
Nath

Hi @nathanael-fijalkow , sorry for the late reply. This issue should be fixed in v0.1.0 onwards.


Roadmap for Supermium

Github has an amazing feature called Roadmap, probably new. It's done through the Projects tab. Can you please start to use it?

Documentation: https://github.blog/changelog/2023-03-23-roadmaps-in-projects-are-now-generally-available/
Working example: https://github.com/orgs/typesense/projects/1/views/1

Thank you for suggesting this feature. It will allow me to keep track of future changes: https://github.com/users/win32ss/projects/1/views/1?layout=board
Although I like the board view (sorting by todo/in progress/done) a little better than the others as it is admittedly difficult to keep specific time frames for certain features.

Thanks! If there are some plans about subsequent releases, it would be also interesting to see it there.
I would keep this open to let other people know about it.


sporatic failure of wsn build: WsnConnectorTest.shouldNotHangOnToHttpConnectSessionsWhenEstablishingAndTearingDownWsnConnectorSessions

In one of 8 builds I did on my machine, I got the following failure.
WsnConnectorTest.shouldNotHangOnToHttpConnectSessionsWhenEstablishingAndTearingDownWsnConnectorSessions FAILED with exception org.junit.runners.model.TestTimedOutException: test timed out after 30000 milliseconds
org.junit.runners.model.TestTimedOutException: test timed out after 30000 milliseconds
	at java.lang.Object.wait(Native Method)
	at org.apache.mina.core.future.DefaultIoFuture.await(DefaultIoFuture.java:98)
	at org.apache.mina.core.future.DefaultConnectFuture.await(DefaultConnectFuture.java:106)
	at org.kaazing.gateway.transport.wsn.WsnConnectorTest.shouldNotHangOnToHttpConnectSessionsWhenEstablishingAndTearingDownWsnConnectorSessions(WsnConnectorTest.java:373)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:745)
=================== BEGIN STORED LOG MESSAGES ===========================
...
=================== END STORED LOG MESSAGES ===========================
shouldCloseWsnSessionWhenTransportClosesCleanlyButUnexpectedly(org.kaazing.gateway.transport.wsn.WsnConnectorTest) starting
WsnConnectorTest.shouldCloseWsnSessionWhenTransportClosesCleanlyButUnexpectedly success
shouldCorrectlyConstructLocalAndRemoteAddressesForConnectedWsnSessions(org.kaazing.gateway.transport.wsn.WsnConnectorTest) starting
WsnConnectorTest.shouldCorrectlyConstructLocalAndRemoteAddressesForConnectedWsnSessions success
Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 30.229 sec <<< FAILURE!
Running org.kaazing.gateway.transport.wsn.WsnTransportTest
connectorShouldWriteAndReceiveMessage(org.kaazing.gateway.transport.wsn.WsnTransportTest) starting
Acceptor: received message: Message from connector
WsnTransportTest.connectorShouldWriteAndReceiveMessage success
connectorShouldReceiveMessageFromAcceptor(org.kaazing.gateway.transport.wsn.WsnTransportTest) starting
WsnTransportTest.connectorShouldReceiveMessageFromAcceptor success
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 sec

Results :

Tests in error:
  shouldNotHangOnToHttpConnectSessionsWhenEstablishingAndTearingDownWsnConnectorSessions(org.kaazing.gateway.transport.wsn.WsnConnectorTest): test timed out after 30000 milliseconds

The snipped out part (the "stored log messages" is in:
zenhub.log | uploaded via ZenHub

From the logs, it only completed 92 iterations out of 100 in the specified time. So reducing the no of iterations in the test. Don't know whether it fixes.
Created a pull request:
https://github.com/kaazing/gateway/pull/175

The WsnConnector#connect method is called in junit thread in the test.
When the test passes, the order is as follows:

HttpConnector ConnectFuture listener gets called in i/o thread
HttpSession is closed in i/o thread

When the test fails, the order is as follows:

HttpSession is closed in i/o thread
HttpConnector ConnectFuture listener gets called in junit thread

---------------------- Failure ---------
11179 [New I/O worker #434] INFO  connect  - HttpConnector Got INFO_SWITCHING_PROTOCOLS
11179 [New I/O worker #434] INFO  HttpConnectProcessor  - HttpConnectProcessor#removeInternal with upgradeHandler=null
...
11180 [Time-limited test] INFO  connect  - Setting ioBridgeHandler for upgrade

junit test thread does the following in order:
(1) WsnConnector.connect()
(2) HttpConnector.connect()
(3) Adds a listener to Http's ConnectFuture that sets up upgrade handler
Between (2) and (3), an I/O thread connects to  server, gets a response 101, and closes HttpSession. HttpConnectProcessor tries to upgrade, but doesn't find upgrade handler as (3) is not yet done.
Perhaps, this race happens extremely low in practice as there is http request/response network roundtrip.

There was another sporadic build failure with same message.

This happened again. Probably, we should fix this sooner than later.

@jitsni Can we prioritize this issue and get it resolved if you already know what the problem is ?

Attempted to modify timeout.
Reproduced the issue on my local build intermittently, attaching the logs with failure/success scenarios.
failed_to_get_session.txt | uploaded via ZenHub
timeout.txt | uploaded via ZenHub
successful.txt | uploaded via ZenHub

Attempted to increase timeout interval.
Reproduced the issue on my local build intermittently, attaching logs with several failure/success situations.
failed_to_get_session.txt | uploaded via ZenHub
successful.txt | uploaded via ZenHub
timeout.txt | uploaded via ZenHub

Hoping this is resolved via #328, we can reopen if reproduces


test this model on a single picture

there is any demo to test this model on a single picture ?
Thank you.

You can refer to the code of these two parts.
https://github.com/Shank2358/GGHL/blob/main/evalR/evaluator_demo.py
https://github.com/Shank2358/GGHL/blob/main/demo..py

You can refer to the code of these two parts.
https://github.com/Shank2358/GGHL/blob/main/evalR/evaluator_demo.py
https://github.com/Shank2358/GGHL/blob/main/demo..py

You can refer to the code of these two parts.
https://github.com/Shank2358/GGHL/blob/main/evalR/evaluator_demo.py
https://github.com/Shank2358/GGHL/blob/main/demo..py

there is any demo to test this model on a single picture ? Thank you.

You can refer to the code of these two parts.
https://github.com/Shank2358/GGHL/blob/main/evalR/evaluator_demo.py
https://github.com/Shank2358/GGHL/blob/main/demo..py


Why replace _ in url?

Hi, @FlorianRappl
Why are you replacing underscores in the url with nothing?
	[TestMethod]
	public void TestMethod2()
	{
		//
		Url url = new Url("https://will_be_replaced.but.why/");
			//
		Assert.AreEqual("https://will_be_replaced.but.why/", url.Href);
	}

gives
Assert.AreEqual failed. Expected:<https://will_be_replaced.but.why/>. Actual:<https://willbereplaced.but.why/>.

While this might be unexpected behavior. It is according to spec on valid hostnames, RFC 1124 and RFC 952 mandates that host names may not contain underscores, and as far a I know, there aren't any valid domain names, that do. However, one would expect an exception.
From Wikipedia:

The Internet standards for protocols mandate that component hostname labels may contain only the ASCII letters 'a' through 'z' (in a case-insensitive manner), the digits '0' through '9', and the hyphen ('-'). The original specification of hostnames in RFC 952, mandated that labels could not start with a digit or with a hyphen, and must not end with a hyphen. However, a subsequent specification (RFC 1123) permitted hostname labels to start with digits. No other symbols, punctuation characters, or white space are permitted.

The URL parser never throws an exception. This is by design. Your browser also does not throw an exception. If you really want to know that you provided a valid or invalid URL (i.e., that the parser modified the URL) check the IsInvalid property.
All this being said: The URL parser follows the algorithms from the WHATWG group. What you see is the behavior that is also seen from standard web browsers.

What you see is the behavior that is also seen from standard web browsers

What behavior do you mean? I can reach https://loony_picture.dirty.ru/ using any browser, but I can not reach it using BrowsingContext, becouse it uses Url that converts the url above to https://loonypicture.dirty.ru/ and targets page that does not exist.
Another example is https://black_white.dirty.ru/ and https://blackwhite.dirty.ru/ -- both are absolutely different resources.

All this being said: The URL parser follows the algorithms from the WHATWG group.

Url class annotations states that its implemented according to RFC3986. But on pages 12-13 of this specification we can read:

2.3.  Unreserved Characters
Characters that are allowed in a URI but do not have a reserved
purpose are called unreserved.  These include uppercase and lowercase
letters, decimal digits, hyphen, period, underscore, and tilde.
  unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

Berners-Lee, et al.         Standards Track                    [Page 13]

RFC 3986                   URI Generic Syntax               January 2005
URIs that differ in the replacement of an unreserved character with
its corresponding percent-encoded US-ASCII octet are equivalent: they
identify the same resource.  However, URI comparison implementations
do not always perform normalization prior to comparison (see Section
6).  For consistency, percent-encoded octets in the ranges of ALPHA
(%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E),
underscore (%5F), or tilde (%7E) should not be created by URI
producers and, when found in a URI, should be decoded to their
corresponding unreserved characters by URI normalizers.

So, it seem that underscore is allowed character. This just an excerpt from the specification, but I bet that the whole document says nothing about underscore replacement.
@mausworks paying attention to all above -- yes, this is absolutely unexpected behavior for me. BrowsingContext loads absolutely different address.

@ushenkodmitry while it is true that underscores are allowed in URL:s (such as in the path, query or fragment), they are not allowed in hostname part, as both I and @FlorianRappl described.
Regardless; I think dirty.ru should learn conform to established web standard, not the other way around. Using underscores in hostnames is invalid according to both RFC 1124 and RFC 952. Maybe the coders of that website should read up them.

@ushenkodmitry see WHATWG URL specification. Also Google has a nice paragraph about why URLs with underscores will be downrated.
Also please read the Wikipedia entry on host names:

While a hostname may not contain other characters, such as the underscore character (_), other DNS names may contain the underscore.[4] Systems such as DomainKeys and service records use the underscore as a means to assure that their special character is not confused with hostnames. For example, _http._sctp.www.example.com specifies a service pointer for an SCTP capable webserver host (www) in the domain example.com. Note that some applications (e.g. Microsoft Internet Explorer) won't work correctly if any part of the hostname contains an underscore character.[5]

Well, I understand yours point, but I do not accept )). The resource is reachable with any web browser (checked just now). It is reachable with HttpClient and all web APIs within .Net. Why it can not be reachable by BrowsingContext?
Whould you use a browser which renders https://blackwhite.dirty.ru/ to you, even you requesting https://black_white.dirty.ru/? The problem of cource not just in dirty.ru. I'm sure there are other.

Agreed - I think we need to tolerate this. Fixed as PR #446.


GAPI: Error 400 redirect_uri_mismatch

Greetings everyone,
I am working on integrating Google Sign In on my website: https://www.druidward.eco
The goal is just to have people sign in, have a member status, and rate or comment on content.
I have watched related videos by Google and I have read the relevant parts of the guidelines.
But I might have missed something in the process, because I get this message whenever I click on my Google Sign In button: "Error 400 redirect_uri_mismatch".
The following code has been inserted in my template (Yes, I have copied and pasted my own ID):

    <meta name="google-signin-scope" content="profile email">
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">

The following code has been inserted in a module located on my header:

You will find below a temporary link to images showing the settings for my Credentials (they are of course hidden in red).
Picture 1:
https://druidward.eco/beta/images/brandvisuals/GoogleConsole.png
Picture 2:
https://druidward.eco/beta/images/brandvisuals/GoogleConsoleURI.png
PS: you can try the button yourself on any page of the website.
I would be very grateful if anyone could provide me with help on how to proceed to fix the issue.
Have a nice day!

UPDATE: I've had this problem for days, literrally breaking my head over this and it turns out it this feature works well with Google Chrome and Edge. I only get an error message with Mozilla Firefox and Brave Browser. Is this something that I can solve, or is this a compatibility issue that must be addressed by Google/Mozilla/Brave developers?
Mozilla Firefox being very popular, I am surrprised... Also, Google Sign In seems to work for company websites such as Pinterest.
Any advice ?

I have no idea why, but it now works on Mozilla Firefox and Brave Browser.
I do not remember making any modifications myself, it somehow took 11 days.

It seems it does not work anymore...
Any help would be great, please!


Return error in case docker network inspect is ambiguous

This fix is partially based on comment https://github.com/docker/docker/issues/30242#issuecomment-273517205
Currently, docker network inspect relies on FindNetwork() which does not take into consideration that multiple networks with the same name might exist.
This fix propose to return docker network inspect in a similiar fashion like other commands:

Lookup full ID
Lookup full name
~Lookup partial name~ Lookup partial ID

If multiple networks exist, an error will be returned.
NOTE: this fix is not a complete fix for the issue raised in https://github.com/docker/docker/issues/30242#issuecomment-273517205 where SwarmKit is unable to update when multiple networks with the same name exit.
To fix that issue requires multiple places when FindNetwork() is called. Because of the impact of changing FindNetwork(), this fix focus on the issue in docker network inspect.
A separate PR will follow up to address https://github.com/docker/docker/issues/30242#issuecomment-273517205
An integration test has been added.
Signed-off-by: Yong Tang<EMAIL_ADDRESS>

/cc @thaJeztah @mavenugo @aboch

Lookup partial name

This doesn't seem right. I don't know of any docker commands that match based on partial name. It should match based on partial ID instead.
$ docker service ls
ID            NAME       MODE        REPLICAS  IMAGE
q14qsmgl5za8  myservice  replicated  0/1       busybox:latest
$ docker service inspect myserv
[]
Status: Error: no such service: myserv, Code: 1
$ docker service inspect q14
[
    {
        "ID": "q14qsmgl5za8e1vy7zs9aliq4",
...

Thanks @aaronlehmann for the review. The

3 . Lookup partial name

was a typo. The intention was to lookup full ID, then full name, then partial ID. The commit message and description has been updated with the PR.

Thanks @aaronlehmann @AkihiroSuda for the review. The PR has been updated with the suggested changes.
Also, now the logic is:

Lookup FullID against swarm network, if there is any match, return immediately.
Lookup FullID against local network, if there is any match, return immediately.
Lookup FullName against swarm network and local network:

If there is only one match, return the network
If there are more than one match, return error

Lookup PartialID against swarm network and local network:

If there is only one match, return the network
If there are more than one match, return error

Now the order of the search for FullID is different compared with previously. Previously it was first local search, then swarm search. Now it is swarm search first, then local search.
The reason for the change is to match the behavior of getNetworksList(). As we could see for getNetworksList(), swarm network takes precedence over local network in case there is a collision.
Also because of that, the way FullID match is done is slightly different from FullName and PartialID. FullID will return immediately while FullName and PartialID will wait until all matched results have been collected.
Please take a look and let me know if there are any issues.

I see some networking tests are failing; looks related.

I did some investigation and saw additional confusions about the information provided by docker network inspect:

ingress network exists both in cluster and local. So which one (cluster or local) takes precedence makes a difference.
In case a service is created, a customized network exists both in cluster and local. So which one (cluster or local) takes precedence also makes a difference.
However, in different places the order of the precedence are not necessary the same, e.g., getNetworksList vs getNetwork.

Here is one scenario I found out: In current master branch, docker network inspect outputs additional information after a service is created with a custom network. But that information seems to be provided by local scope network.
current behavior:
ubuntu@ubuntu:~/docker$ docker version
Client:
 ...
 Git commit:   2b41212
 Built:        Wed Feb  1 01:35:35 2017
...
ubuntu@ubuntu:~/docker$
ubuntu@ubuntu:~/docker$ docker swarm init
Swarm initialized: current node (aa3a1jbfllzzc1uliehanrh55) is now a manager.

To add a manager to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-23miui2cagsnm4326xz2ce6ctzt523nh4l3jfhinfbf6t7g8hy-b153axqyigpcjrgdhtw0tlac5 \
    <IP_ADDRESS>:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

ubuntu@ubuntu:~/docker$
ubuntu@ubuntu:~/docker$ docker network create -d overlay --ipam-opt foo=bar foo
qk4e4xauk3xyjessogtxl7vfw
ubuntu@ubuntu:~/docker$
ubuntu@ubuntu:~/docker$ docker network inspect foo
[
    {
        "Name": "foo",
        "Id": "qk4e4xauk3xyjessogtxl7vfw",
        "Created": "0001-01-01T00:00:00Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {
                "foo": "bar"
            },
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4097"
        },
        "Labels": null
    }
]
ubuntu@ubuntu:~/docker$
ubuntu@ubuntu:~/docker$ docker service create --network=foo --name top busybox top
mchbg4qnc42480s5bibr4tme2
ubuntu@ubuntu:~/docker$
ubuntu@ubuntu:~/docker$ docker network inspect foo
[
    {
        "Name": "foo",
        "Id": "qk4e4xauk3xyjessogtxl7vfw",
        "Created": "2017-01-31T17:50:13.272546786-08:00",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {
                "foo": "bar"
            },
            "Config": [
                {
                    "Subnet": "<IP_ADDRESS>/24",
                    "Gateway": "<IP_ADDRESS>"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "ebd5bec5914fbe3214abae2ab556b062ca5d5ee64c6c5748d9f290a386864047": {
                "Name": "top.1.gqg5kpe4fvbmdk85vhdmf72is",
                "EndpointID": "dab084b0c63df75a34e9ce70f56c884bcfa434bc652252c1aa23f0479b7c8a46",
                "MacAddress": "02:42:0a:00:00:03",
                "IPv4Address": "<IP_ADDRESS>/24",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4097"
        },
        "Labels": {},
        "Peers": [
            {
                "Name": "ubuntu-c9705c0ddefa",
                "IP": "<IP_ADDRESS>"
            }
        ]
    }
]
ubuntu@ubuntu:~/docker$

If we make some modifications so that cluster scope takes precedence, i.e.,
ubuntu@ubuntu:~/docker$ git diff api/
diff --git a/api/server/router/network/network_routes.go b/api/server/router/network/network_routes.go
index fe3201e..e88ec24 100644
--- a/api/server/router/network/network_routes.go
+++ b/api/server/router/network/network_routes.go
@@ -70,11 +70,11 @@ func (n *networkRouter) getNetwork(ctx context.Context, w http.ResponseWriter, r
                return err
        }

+       if nr, err := n.cluster.GetNetwork(vars["id"]); err == nil {
+               return httputils.WriteJSON(w, http.StatusOK, nr)
+       }
        nw, err := n.backend.FindNetwork(vars["id"])
        if err != nil {
-               if nr, err := n.cluster.GetNetwork(vars["id"]); err == nil {
-                       return httputils.WriteJSON(w, http.StatusOK, nr)
-               }
                return err
        }
        return httputils.WriteJSON(w, http.StatusOK, n.buildNetworkResource(nw))

Then the behavior will be slightly different with additional information like Peers not exist:
modified behavior after switch the order (last docker network inspect foo only)
...
ubuntu@ubuntu:~/docker$ docker service create --network=foo --name top busybox top
mj5liavp6vt3kj9mrju44izb0
ubuntu@ubuntu:~/docker$
ubuntu@ubuntu:~/docker$ docker network inspect foo
[
    {
        "Name": "foo",
        "Id": "srtoqqic5sqglfmo36vmtk3lz",
        "Created": "0001-01-01T00:00:00Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {
                "foo": "bar"
            },
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4097"
        },
        "Labels": null
    }
]

I think it would be good to have a consistent rule of generating output for docker network inspect ....
/cc @mavenugo @aboch

@yongtang The reason for the discrepancy is because the overlay network's resources are allocated at time of creation by the swarmkit's network allocator. But the overlay network plumbing (the peer info would be there after that) happens lazily only when first sandbox is connected. Which for regular swarm network happens when the service on that network is created (first task is connected), while for the ingress network it happens when the ingress sandbox is created and connected which happens at cluster initialization/join.
When a swarm network is only allocated but not yet plumbed, libnetwork does not know about it.
I am pretty sure it's because of that the that order is first calling FindNetwork() and then attempting to cluster.GetNetwork() in case of nosuchnw error. So the logic should be like: first look if the network is already plumbed (there you will get all the state information), if not, look if it is only allocated (as this is a property swarm network may have).
I don't think you want to change that order, otherwise the server api will always return only the allocation information even for network that are already plumbed.

Thanks @aboch for the detailed explanation. I updated the PR and now the same order as before was used.
The intention of this PR was to resolve the duplicate names issue in a network inspect so that an error will be returned in case there is any ambiguity.
I took a look and it looks like even though a network might exist both locally and in a cluster, it always has the same ID (unless of course they are two different networks with the same network). For that I use a map to check and see if the network returned is the same network (same ID, same name, different scope), or different network (different ID, same name). If it is the same network (just different scope) then we will use the information based on the order you described.
Please take a look and let me know if there are any issues.

Thanks @yongtang I added few comments. Done with the review.
On a side note, not related to this PR, if the client specifies the full ID, we still query for all the network and walk them until we find the match, when both libnetwork and swarmkit provide a method that would return the network via direct id lookup.
If Backend interface had the counterpart NetworkByID()method, then we could try that first, before entering the loop. But this is not related to this PR.

@aboch Thanks for the review. The PR has been updated. With respect to NetworkByID() I think I probably could do it in the follow up PR. There might be several places in daemon that used network name (instead of ID) when creating containers. Was intend to address the issue as well, but think it might be good to address the network inspect first, because network inspect has less impact.

ping @aboch @aaronlehmann @AkihiroSuda
Design LGTM for me, but I'ld like your opinion :angel: :pray:

LGTM

looks good to me

The experimental build timed out during cross-compilation after a successful test run. It looks like this build happened to run a bit longer than most and ran up against the 120 minute limit. Merging.


Fix width configuration option

This PR addresses #149
This also adds the repository information to the package.json file.

Thank you for this fix — much appreciated!

:+1: Happy to help!


fix: [9655] - Fix compilation errors under Angular 16

Description 📝
This is a fix for issue #9655 .
Fixes 🔄
List highlighting major changes

Change src/regions to ../regions in linode/types.ts
Change src/regions to ../regions in account/types.ts

Yes, good call @coliu-akamai


Ensure Obs API Route is reconciled correctly

https://issues.redhat.com/browse/ACM-10647

@jacobbaungard

Just one minor nit from Sonarcloud to define apiGateway.Name as a constant.

Yeah I was/am not sure if the function used to build the name comes from the env and effects it some way.


C#: Fix bindings generator for Callable argument default value

Previously there weren't any Callable arguments with a default value, but d4dd859991205e6cecfa9a0553b89db47c983d0b introduced one.

Thanks!


Bug: improve 'Tags' tooltip in product information

What?

The tooltip for the 'Tags' field in product information could be more expressive

what change needs to be done @pKorsholm can you elaborate more. Please provide more description for other issues as well @pKorsholm

This tooltip is not very indicative of what a tag is or does.
The tooltip text needs to be more elaborate i.e. "Tags are one word descriptors for the product used for searches"

Closed #88


Question not an issue: Render array instead of string

Hey guys,
I want to render only a part of the html and I would like to use the rendered array structure for it.
This one is the generated structure:
[
  [
    "text",
    "
\r\n",
    0,
    6
  ],
  [
    "#",
    "test",
    6,
    17,
    [
      [
        "text",
        "
Nr:  ",
        19,
        32
      ],
      [
        "name",
        "nr",
        32,
        38
      ],
      [
        "text",
        "
\r\n",
        38,
        45
      ]
    ],
    45
  ],
  [
    "text",
    "
",
    58,
    63
  ]
]

I would like to render only a part of it:
[
  "#",
  "test",
  6,
  17,
  [
    [
      "text",
      "
Nr:  ",
      19,
      32
    ],
    [
      "name",
      "nr",
      32,
      38
    ],
    [
      "text",
      "
\r\n",
      38,
      45
    ]
  ],
  45
]

Is there any way to do it directly or do I need to regenerate the html out of it?
Thanks in advance!

Ask questions on stackoverflow, not on github issues.

It wouldn't hurt to be a bit more polite/happy though.

@dasilvacontin @Wikunia Sorry lack of sleep must be getting to me. Now that I read my comment again I realize I came off as grumpy. Apologies!

Thanks! That's much better, and constructive also. :)


Slack Channel to expand Developer, User, and Education Outreach

@aphelionz
I love the idea of a Slack Channel =    hydroshare.slack.com
Are you thinking one thread? Or multiple?
The current groups I propose we start with are:
Developers (managed by you)
Education (managed by Liza)
Users (managed by Jon Pollack - I am on the CUAHSI user's committee so I would propose we take some conversations there, but it depends on the committee, and if we decide to expand to a larger user group beyond the 6-10 person committee)
@jphuong and I and other UW folks would be able to support on technical issues and questions as needed, but it is probably best to have CUAHSI officially manage the channel.
Groups found under the Collaborate Dashboard may or may not already have their own channel, if so, is there a way to integrate?
We are redesigning the front page footer and could send people to these channels as an alternative to emails, if they wanted to search by forum.
We can talk later about integration with HydroShare, but not too much later...  when we get news of the next round of funding we can bring @horsburgh back into the conversation.   Currently, we can email people from the profile user page, but there is not easy communication pathway within HydroShare at the moment.  This will be needed in the social focus of the next stage. My view is if we can use Slack and not reinvent the wheel, it would be great.
Let's start using it stand alone and see how far we get and if it helps with communication beyond the HydroShare inner circle.
C

On the backend, we should continue using Trello for collaborative task management and Github for issue management with developers.

@ChristinaB I created a slack channel https://hydroshare.slack.com, and I also registered the #hydroshare channel on freenode.irc.net so Non-Slack developer types can chat with me.
Any member of the hydroshare channel can invite people, so have at it!

@ChristinaB - my developer group uses Slack daily for our messaging within our group. It works great for that.  And, I can recommend it to the HydroShare developers group.
But, I'm not sure I would recommend it for user support (at least for the user facing side). My main concern is that it's one more thing that users have to figure out - "what is this Slack thing?...I just want to report a bug..." But, maybe it could work, and there's even a customer service app for slack: https://get.slaask.com/ (disclaimer - just googled this 5 seconds ago)
But, there's also a number of articles like this out there: https://www.gosquared.com/blog/customer-service-doesnt-belong-in-slack
Whatever we choose to do, it needs to be deliberate and it needs to work for our users. HydroShare Groups integration with Slack might also be cool.

For context: Here is a Footer design Google Doc [https://docs.google.com/document/d/1dkoZh6GgkeftP1gaNxbJA7g1PQBoDTXOustVKvYH6Tg/edit?usp=sharing]  where need to keep talking about Customer Service aspects of outreach and user interaction because we need to make sure we have the backend processes to support the 'Contact' links on the footer.
I don't think  hydroshare.slack.com was proposed directly for CUAHSI-user HydroShare customer service, but as a forum type environment for groups of developers, educators, researchers, etc.   We will talk about it in the Wednesday E&O meeting and take feedback on it from developers in that follow up meeting as well.

I think if we want to go down the road of having users report a bug, we would do better to add on a LiveChat and keep that funded.  We sure aren't there, quite  yet...

@ChristinaB Ok to close this now that we've got a handful of poeple on the channel? We can discuss tomorrow.


Fix sub and div for integer types

subtract != negate + add for unsigned types
divide != inverse + multiply for integer types

Thanks!

lgtm


Update go to v1.23

Based on https://github.com/networkservicemesh/deployments-k8s/issues/12260
First step was to update base images to fix CVEs - https://github.com/networkservicemesh/deployments-k8s/issues/12283
Second (current) - to update source code go version

[x] 1. .github
[x] 2. cmd-template
[x] 3. deployments-k8s
[x] 4. sdk
[x] 5. sdk-kernel
[x] 6. sdk-k8s
[x] 7. sdk-sriov
[x] 8. sdk-ovs
[x] 9. sdk-vpp
[x] 10. api
[x] 11. cmd-nsc
[x] 12. cmd-forwarder-vpp
[x] 13. cmd-forwarder-ovs
[x] 14. cmd-forwarder-sriov
[x] 15. cmd-nse-icmp-responder-vpp
[x] 16. cmd-nse-vlan-vpp
[x] 17. cmd-nse-supplier-k8s
[x] 18. cmd-nse-l7-proxy
[x] 19. cmd-exclude-prefixes-k8s
[x] 20. cmd-map-ip-k8s
[x] 21. cmd-admission-webhook-k8s
[x] 22. cmd-cluster-info-k8s
[x] 23. cmd-ipam-vl3
[x] 24. cmd-nsc-init
[x] 25. cmd-nsmgr
[x] 26. cmd-nsmgr-proxy
[x] 27. cmd-nse-vfio
[x] 28. cmd-registry-memory
[x] 29. cmd-registry-proxy-dns
[x] 30. cmd-nse-remote-vlan
[x] 31. cmd-nse-firewall-vpp
[x] 32. cmd-nse-vl3-vpp
[x] 33. cmd-nsc-vpp
[x] 34. cmd-nse-simple-vl3-docker
[x] 35. cmd-nsc-simple-docker
[x] 36. cmd-registry-k8s
[x] 37. cmd-nse-icmp-responder
[x] 38. gotestmd
[x] 39. integration-tests
[x] 40. integration-k8s-kind
[x] 41. integration-k8s-gke
[x] 42. integration-k8s-aks
[x] 43. integration-k8s-packet
[x] 44. integration-k8s-aws
[x] 45. integration-interdomain-k8s

ETA for each PR: 10-30m depending on required linter fixes

@szvincze Hello
We have updated go version to 1.23  in source code. Can we merge it and test in RC.2?

It's done, thanks!


Move window/logMessage handler to the rest of the notification handlers in window.py

Coverage decreased (-0.1%) to 26.653% when pulling e9ce28d679cf046298363e54771d9f2a126cd9c8 on refactor/move-window-logmessage-to-the-rest-of-the-notification-handlers into 977beeea9c38dd69859986a4f3d262161a92f010 on master.

Note that the old implementation had an early return on window/logMessage

Ah yes, I hadn't thought of that.


Issue with k8s.io/docs/concepts/configuration/overview/

This is a...

[ ] Feature Request
[ ] Bug Report

Problem:
Proposed Solution:
Page to Update:
https://kubernetes.io/...

@cpellot Could you please provide more information? Which issue are you seeing?

/assign

This issue appears to have been created unintentionally


updated the start component

closes #17
here is what it looks like

Summary by CodeRabbit

New Features

Enhanced the Start component to display potential winnings and remaining time for game modes.
Updated the layout of the Start components in the Home screen for improved visual organization and information clarity.

User Interface Improvements

Replaced the previous game start button with a detailed layout that includes headings and paragraphs for better user understanding.

Hello, please add a remaining time for the normal games too

FYI I just discovered you didnt handle the hide of this component when a game is going on :


How can i chat private like one to one?

Hello..
I am new with socket io and io. I want to use this app to one to one chat. How can i do this? Please help
Thanks in advance..

There are two ways.

Create a unique identifier through which you identify which socket you want to send your message.
Try https://www.udacity.com/course/developing-android-apps--ud853

Use rooms.
Create unique rooms each time you need a private chat.
If you want sample code on this please feel free to browse Pictionary

@melvin0008 Thanks for response.
I want to chat app like a client can chat with agent but client must have agent_id, device_id and message.
When agent receive message he reply base on unique device id. How i can do this.

Hey @melvin0008
I want to like this in nodejs and socket io
https://github.com/fabioberger/Mobile-Live-Chat-Support-Server
Thanks in advance.

@surendrakumar1992  Just like I mentioned you can add unique identifiers.
For eg.
On the Client end
var agent_id="xyz",
 devide_id="abc",
 message="pqr";
socket.emit('new_message',sessionId, {message:message,agent_id:agent_id,device_id:device_id});

On the server end
socket.on( 'new_message', function(session,data)
      {
          socket.device_id=data.device_id;
          socket.agent_id=data.agent_id;
          socket.broadcast.to(socket.devide_id).emit('my message', msg);
      });

Reference


Remove Sass from custom CSS files

This is mentioned by @weaverryan in #1449.
We don't really use any Sass feature (except nesting and some variables). I've replaced Sass variables by CSS custom properties ... and removed the nesting by flattening all styles (we can readd nesting soon when native support is a big bigger than today: https://caniuse.com/?search=nesting).
Ryan, if you agree on this, can we just merge it and then you rebase your PR? Thanks!

Oh, this would make life MUCH easier over on my PR - thank you!
After this, on that PR, we could focus on:
A) importing CSS versions (instead of sass) for all of the vendor packages other than Bootstrap (bootstrap-tagsinput, ~lato-font/scss/public-api, etc). In theory (?) we may be overriding some Sass variables on those. But if we are, we can check on what we're tweaking and find a different solution.
B) Keep Bootstrap - but point at the vendor/ directory. Or do you think we could remove the Bootstrap Sass entirely? We're overriding several things in _variables.scss. What I don't know is how feasible it is to make these same changes by overriding CSS properties.


No such file or directory error when stop and start server again

If I start ember fastboot --serve-assets and stop and start it again, I got the following error.
➜  fastboot-app git:(master) ✗ ember fastboot --serve-assets
version: 2.3.0-beta.2
Built project successfully. Stored in "fastboot-dist".
Installing FastBoot npm dependencies
ENOENT: no such file or directory, open 'fastboot-dist/assets/fastboot-app-3c4eeb07dfdc5923d7d7c76ef3a77d0d.js'
Error: ENOENT: no such file or directory, open 'fastboot-dist/assets/fastboot-app-3c4eeb07dfdc5923d7d7c76ef3a77d0d.js'

Environment:
➜  fastboot-app git:(master) ✗ ember -v
version: 2.3.0-beta.2
node: 5.6.0
npm: 2.14.10
os: darwin x64

Solution:
➜  fastboot-app git:(master) ✗ rm -rf fastboot-dist
➜  fastboot-app git:(master) ✗ ember fastboot --serve-assets
version: 2.3.0-beta.2
Built project successfully. Stored in "fastboot-dist".
Installing FastBoot npm dependencies
DEBUG: -------------------------------
DEBUG: Ember      : 2.3.0
DEBUG: Ember Data : 2.3.3
DEBUG: -------------------------------
Ember FastBoot running at http://[::]:3000

@zoltan-nz Thank you for the report. Is this still happening in the final Ember CLI 2.3.0? If so I will have to investigate further.

@tomdale I was not able to reproduce this error with the latest stable version of ember-cli, ember v2.3 and ember-cli-fastboot. I think, it is fixed. I just close this issue. Thanks! :)


Allow a JSON file to be used for configuration

Personal preference but I'd prefer to use a config.json file in the same directory as the Python script for configuration rather than the environment variable.

Added a get_config() method like so that seems to work:
def get_config():
    aws_json = os.getenv(ENV_VAR)
    if aws_json is not None:
        return json.loads(aws_json)
    else:
        try:
            script_dir = os.path.dirname(os.path.abspath(__file__))
        except NameError:
            script_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
        abs_file_path = os.path.join(script_dir, CONFIG_FILE)
        return json.loads(open(abs_file_path).read())

Commit is here: https://github.com/taylor-d/letsencrypt-aws/commit/7a8a67bede1b6623535061a333480cff369e74df.  Need to do some testing before PR.

Awesome, thanks for this!

+1
The docs might also explain how to pass json as an env variable.

If you want to use a config file, write a wrapper like this:

Create wrapper (e.g. run.sh) with the following:

#!/bin/bash
LETSENCRYPT_AWS_CONFIG=$(cat config.json) python letsencrypt-aws.py "$@"

Make executable: chmod +x run.sh
Run it, e.g. ./run.sh update-certificates

Quick breakdown of script:
LETSENCRYPT_AWS_CONFIG=$(cat config.json)
Puts the content of config.json into the ENV var LETSENCRYPT_AWS_CONFIG for the duration of the script execution (config.json can be any path).
"$@"
Pass any parameters onto the letsencrypt-aws.py script. This keep it's simple and passes any parameters after run.sh to the letsencrypt-aws.py script.

Here's a sample config.json file:
{
    "domains": [
        {
            "elb": {
                "name": "YOUR_ELB_NAME"
            },
            "hosts": ["HOST1.com", "HOST2.com"]
        }
    ],
    "acme_account_key": "file:///path/to/key"
}


Class from anonymous function cannot instantiate

This example test fails on RC15.  It used to work (at least on RC12).  In Groovy:
@Test
void "class can instantiate"() {
    def context = Context.create("js")

    def exports = context.eval("js", """
        (function() {
            class MyClass {}
            return {
                MyClass: MyClass,
            };
        })()
    """)
    def jsClass = exports.getMember("MyClass")
    assertThat jsClass.canInstantiate() isTrue() // fails
}

We're using this mechanism so we can clear bindings, as explained in https://github.com/graalvm/graaljs/issues/146
As a workaround, jsClass.canExecute() is still true, so we can do something like:
String tempCtorRefName = "MyClassCtorRef";
Value bindings = context.getBindings("js");
bindings.putMember(tempCtorRefName, jsClass);
Value instance = context.eval("js", "new " + tempCtorRefName + "();");
bindings.removeMember(tempCtorRefName);

Thank out for the bug report. I can confirm that the mentioned test-case works in rc14 but does not work in rc15. This bug is an unwanted consequence of the introduction of a new API for language interoperability. I will fix it.

This issue is fixed by https://github.com/graalvm/graaljs/commit/358c10fe8557dbefe021bfc262e87507992fbfa3.


STOR-1578: Revert "Merge pull request #195 from gnufied/revert-192-enable-new-fe…

…atures-csi-driver"
This reverts commit b17da9c385956bb86485836831ea5a651277510a, reversing changes made to 330d29014e0a4a6fddc09ba1b90aa2e7ad6f31c7.
Fixes https://issues.redhat.com/browse/STOR-1578

I am bringing this first, because without this, bringing the vsphere driver rebase will cause driver to crash loop.

/retest

/retest

/lgtm

/override ci/prow/e2e-vsphere-ovn-upgrade

/label docs-approved
/label px-approved

/label qe-approved


bugfix: add xdai rpc url

This PR solves two issues.

xDAI chain was not recognized when connected through WalletConnect stating chain ID 100 is nowhere to be found
While connecting to a wallet, we get the balance update as 0, as the state is not getting rerendered due to a bug in not setting the network name. Generalizing the wallet connect functionality solved the issue.

CC @dekanbro @dan13ram :)

@scottrepreneur, this bugfix would be super helpful for us to efficiently transfer xDAI from Gnosis Safe.


Walk

The Pull Request resolves Issue #273
Description:
A brief description about the addition or edits made.
Notes: Delete all the text including this!

The #273 should be replaced with the specific Issue being referenced.

Hey @nomitpahuja
Can you create a new Pull Request just for Walk.json ?
There is a conflict because of your previous commit.
Thanks for contributing

yeah cool, no problem!
On Mon, Oct 8, 2018, 12:15 AM Showndarya<EMAIL_ADDRESS>wrote:

Hey @nomitpahuja https://github.com/nomitpahuja
Can you create a new Pull Request just for Walk.json ?
There is a conflict because of your previous commit.
Thanks for contributing
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Showndarya/Hacktoberfest/pull/326#issuecomment-427676739,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AnvVj3z4MWDcGOf077YBOFBdYIOEtqbzks5uikvNgaJpZM4XL-cT
.

I am closing this Pull Request. Do create a new Pull request for Walk.json

i'll do it in 45 minutes
On Mon, Oct 8, 2018, 12:19 AM Showndarya<EMAIL_ADDRESS>wrote:

I am closing this Pull Request. Do create a new Pull request for Walk.json
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Showndarya/Hacktoberfest/pull/326#issuecomment-427677061,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AnvVj9FhPXJMlJ6wg1e1eU1PWUiLFt1Xks5uikzAgaJpZM4XL-cT
.


Update docs SDK examples/guides

Once we have more stable codebase (mainly around permit/permit2) we need to update docs examples/guides to use most recent SDK interfaces.

Some realizations:

Permit2 examples will require a process.env.PRIVATE_KEY in order to .signTypedData
Should we have seperate swapV2 and swapV3 examples since only v3 uses permit2?
Permit2 examples will have to be on Sepolia cus that's the only chain Router is deployed
The token pair from scaffold prod does not get picked up by SOR paths fetched from API

Thinking about this a bit more how about these separate examples as a fresh approach?

How to fetch a swap

Fetches from api and shows how to re-query
No build call

Swap With Approvals

Run on a fork (similar to removeLiquidity example)
Info at top explaining this is only way V2 works, mention signature alternative for V3
Not using API - use a hard coded V2 path
Approval process goes through function exported from separate example (see below)
use buildCall

Swap With Signature

Run on a fork (similar to removeLiquidity example)
Info at top explaining this is V3 only and why Permit2/Signatures can be used
Not using API - use a hard coded path
Approval process goes through function exported from separate example (see below)
use buildCallWithPermit2

Approvals

Shows the various methods of approving for V2/V3:

V2 approves vault
V3 with normal approvals, approve permit2, approve router
V3 with signature, approve permit2, signature

Exports each method as a function that can be used in other examples

Looks like the approvals are currently being abstracted away in makeForkTx > forkSetup > approveTokens.
We want to bring those to the surface and be more explicit right?

Definitely agree with modularizing the examples. Might be good to outline the folder/file structure as starting point.
Not sure best way to handle custom vs smart path given the different approval options. Kinda gross to repeat
Feel free to edit:

📁 examples

📁 swaps

📄 query.ts
📁 withApproval

📄 customPath.ts
📄 smartPath.ts

📁 withSignature

📄 customPath.ts
📄 smartPath.ts

📁 approvals

📁 v2
📁 v3

While viem's client.impersonateAccount can simulate transactions on a fork, it does not seem to be able to .signTypedData, because signatures require a private key no matter what
I think Bruno did this in the PermitHelper by using the private key associated with the default viem test addresses


Expanding Hyper-Hypersurfaces to N dimensions

This is a major rework of hypersurfaces to facilitate large-scale interpolation in N dimensions, which became necessary because I found that I need to interpolate at least in 3D for the sterile neutrino analysis. The previous code could only support 2D at most, and the grid points were all loose files being put into a special folder structure which would have become a nasty thing going to higher dimensions. The goal of this rework is also to make the logistics around fitting hypersurfaces on a grid as simple as possible for the user and to store all of the results in one large JSON file that can be read in one go.
There are basically three changes:

hypersurface code split up into three files
HypersurfaceInterpolator supports ND interpolation via scipy's RegularGridInterpolator
rework of the entire scaffolding around fitting a grid of hypersurfaces on a cluster and merging all the results to a HypersurfaceInterpolator.

The code for standard non-interpolating hypersurfaces remains unchanged.
The new procedure for fitting hypersurfaces on a grid is demonstrated in the fitting script for the sterile analysis. It only requires running three functions:

prepare_interpolated_fit takes in all of the information about nominal and systematic sets and a fit directory. It dumps all of the necessary information to run each fit into JSON files in the given directory.
run_interpolated_fit(fit_dir, job_idx) is run by each job on the cluster. All that is needed is the fit directory and the job index, and thanks to the prepared JSON files all of the other information to run the fit can be loaded automatically.
assemble_interpolated_fits(fit_directory, output_file): When all jobs are complete, this function automatically scans the fit_directory for completed fits and assembles them all into one large JSON named output_file. This is then the file that is passed to the PISA stage as fit_results_file.

The plotting function plot_fits_in_bin of the HypersurfaceInterpolator is also improved and can now show 1D and 2D slices of interpolated fits as long as a value for the remaining dimensions is chosen. The function is demonstrated in a notebook in the fridge.

Here is an example of a 2D slice taken from a 3D interpolated hypersurface from one bin in the sterile analysis. The interpolation runs over the parameters deltam31, deltam41 and theta24, and deltam31 was set to 2.5e-3 eV^2 for this slice.

@marialiubarska I made some changes to address the concerns you raised. Thanks again for checking!


FixedTop class is hiding topbar

Hi
When I add the FixedTop class on my topbar, the topbar disappears.
Any solution for this?
Regards
Seeger

Fixed this: be sure to add navbar-fixed-top when using Bootstrap.


.add_row() returns an error

My code:
page = 'https://www.notion.so/883f41e4c7044aa4a5439558068cd46d?v=e01f2e017b8b4ff68258cc078c8a41df'
client = NotionClient(token_v2=token)
collection = client.get_block(page).collection
newRow = collection.add_row()
newRow.subject='HIS'
Exception has occurred: AttributeError
'NoneType' object has no attribute 'set'

Having the same issue. Tried my hand at debugging but I'm not immediately seeing why the .set() method would be missing from this object.

This is probably a duplicate of #92. I also bumped into this today. Sounds like #96 should provide a fix

I have encountered the same error today, and it fixed when I deleted the other views on the database. It works with only 1 view it seems.


RGB / 24 bit true color glitching / blinking in macOS terminal.app

Issue Status
macOs terminal does not support TrueColor. This will be documented in the Color::Rgb docs (as of PR #477)
Original issue text:

Description

Colors are not working properly in macOS system terminal. I am using crossterm as a backend.
To Reproduce

Something like this when drawing the buffer
let fg = tui::style::Color::Rgb(123, 312, 22); // any color
let bg = tui::style::Color::Rgb(123, 22, 312); // any color
buf.get_mut(0, 0).set_char('▄').set_fg(fg).set_bg(bg);

Expected behavior

Instead of showing the correct colors as expected the whole buffer looks weird and blinks (see video below).
Screenshots

This is a video of a ratatui application where most of the buffer is constructed like in the example above.
https://github.com/ratatui-org/ratatui/assets/33600480/0a650b5c-ce23-4b7f-be96-b3c60efc8aed
Same terminal with font "SF Mono Regular 11" (System default) so it does not seem to be a font issue

This is what it looks like in ITerm2 on the same machine (and in every other terminal I tried on linux + windows)

Environment

OS: macOS Ventura 13.5 (M2)
Terminal Emulator: macOS system terminal (Version 2.13 (447))
Font: Monaco 18
Crate version: 0.23.0
Backend: crossterm

Do you know if this Is this just the Rgb colors or all colors?
Can you run the colors example and post the output? (I'll add a second view that shows RGB)
As a side note, looking at the image you're displaying (very cool btw), you might be interested in https://crates.io/crates/ratatu-image by @benjajaja

Using the new colors example from https://github.com/ratatui-org/ratatui/pull/476 I am able to repro this:

expected (iterm2):

Raised the issue upstream at https://github.com/crossterm-rs/crossterm/issues/819

The root cause is that Terminal.app doesn't support TrueColor.
https://discussions.apple.com/thread/250459018
https://discussions.apple.com/thread/250636611
Same problem in Termion. Interestingly Termwiz uses an approach that falls back to an ANSI color on non true color enabled terminals, which is neat.

Because this is something out of our hands (it would require a fix in Terminal.app, the best we can do with this for now is document it - see #477.
Neither Crossterm or Termion expose information on the terminal capabilities to be able to detect if this is a problem, and the Termwiz backend just falls back to the default text color (which is not ideal and perhaps worth fixing if someone wants to do this).
Closing this out as wontfix, but there may be other non-obvious approaches to detecting this that could be worth pursuing if you absolutely need this (i.e. manually checking the terminal capabilities and providing the user with an alternative palette).

Thank you so much for the quick response and figuring this out!
I will likely try to use terminfo to query capabilities and then either map true color to what is available or abort with a user understandable message.
For context I am building a 3D volumetric viewer for brain imaging / neuroscience. We often want to quickly check what our data looks like on remote clusters and inside containers where we are only connected via a terminal. Ratatui made prototyping this a breeze so thank you and all other conributers a lot!

If you do want a bit of a head start on this, it's worth taking a look at the termwiz source code. In particular: https://github.com/wez/wezterm/blob/main/termwiz/src/caps/mod.rs

Seeing the amount of edge cases in this makes me wonder if I should switch to the termwiz backend alltogether until crossterm implements (color) capability querying. But thanks in any case for the pointers!

Perhaps, but do take note that it hasn't been used anywhere near as much as the other backends, so you're swapping known unknowns for unknown unknowns.


Support of "scale"-Entry

For the LRS4xxx there is a new customer command LMDscandatascalefactor to set the distance scaling.
Customer quote:
On pages 87 - 89 you will find the new command LMDscandatascalefactor with which the resolution and thus the maximum output distance range can be set.

Release 2.7.3 supports settings LFPmeanfilter and LFPmedianfilter (MRS1xxx, LMS1xxx, LMS4xxx, LRS4xxx) and LMDscandatascalefactor (LRS4xxx).


[c4core] builds on mac

Fixes #19262

c4core:x64-osx:       skip: 39a469cbda52375c0ca8b527bff83db761c6ab0cb5c614aca41b561092034601

Can you please resolve the file conflicts?


Support for Mac Catalyst?

Hi, does the tool support Mac Catalyst builds, e.g. build_targets = ["x86_64-apple-ios-macabi", "aarch64-apple-ios-macabi"]?
If not would it be possible to please add support for these targets? I think xcodegen already supports Mac Catalyst.
Thanks!

Hi! I never tried this, but theoretically we can support every target, that supported by rustc and xcodegen. PR is very welcome :)


Update OmniSharp, changelog, and version number

Nothing here is pressing for a review. Let me know if you spot anything and I'll fix later.


Throttle karma requests

We need to prevent high-frequency botwars of attrition

Someone went nuts in the channel tonight; getting Donald.Trump to -666 (LOL).
This throttle comes not a moment too soon.
Please clarify, if I'm reading the code correctly it only throttles per user?  That would be my desired operation.  I.e. A single user cannot do multiple consecutive karma for a given string, but others can so if one person gets a flood of praise they don't lose out.
Right?

Answered my own question by re-reading the code and testing; yes it has the desired function of throttling per user.
Suggest we close this and revisit with a new issue if we need to adjust the throttle.

Actually there is a bug.
Repro:
Try foo++ then bar++.
Expected result:  Both update.
Actual result: bar gets ignored since the user previously incremented on foo within timelimit.

 I'd suggest we close this one, as technically we've done it, and open another if you want to change the way it works

Ack - happy to go with this.  Thanks


[Task] Add analytics events for the new editor navigation

Analytics events for the changes done for simplifying the editor navigation:

Create new datasource CTA on the property pane
Run button at the response tab for actions

Suggested widgets (payload data for incoming / outgoing):

Click on connect to selected widget from the actions right side bar (out of scope)
Use a suggested widget from the api / query pane

Associated entities:

Click on associated entity from the actions side bar
Click on associated entity dropdown from the property pane
Select an associated entity from the associated entity dropdown at the property pane

Sniping mode:

Start visual sniping mode
Select a widget via visual sniping mode

Slash commands:

Triggered slash commands menu (via button click or code mirror)
Execute a slash command (with command details in the payload)

Backend events:

Create a mock datasource
Create a mock datasource query

Added events for sniping mode.

Added event for mock-data creation

@pranavkanade, @AnaghHegde, @akash-codemonk can you give me the events name for each action so that it would be easier for me to test

@RakshaKShetty Event name is CREATE and attribute is MockDataSource

Create new datasource CTA on the property pane - CONNECT_DATA_CLICK
Run button at the response tab for actions - RESPONSE_TAB_RUN_ACTION_CLICK
Use a suggested widget from the api / query pane - SUGGESTED_WIDGET_CLICK
Click on associated entity from the actions side bar - ASSOCIATED_ENTITY_CLICK
Click on associated entity dropdown from the property pane - ASSOCIATED_ENTITY_DROPDOWN_CLICK
Select an associated entity from the associated entity dropdown at the property pane - ASSOCIATED_ENTITY_CLICK


Documentation missing for gulp.watch (glob, ['task1', 'task2', 'task3', callback])

The other day, I was looking up the API for BrowserSync and spotted an interesting function signature of gulp.watch for which I could not find any description on the official documentation page for gulp:
    // add browserSync.reload to the tasks array to make
    // all browsers reload after tasks are complete.
    gulp.watch ("js/*.js", ['js', browserSync.reload]);

Even though the comment above states that the callback (browserSync.reload) is called after all of the tasks are completed, I could not find any official gulp documentation for this particular function signature.
It turned out that that function signature is valid, of course, and supported by Orchestrator under the hood.
It would be nice for this particular function signature of gulp.watch to be documented on the official gulp documentation page so that everybody can take advantage of it or at least not be confused by this particular function signature when they see it being used somewhere else.

It's not valid. See https://github.com/gulpjs/gulp/issues/776

Ah, I see. Thanks, @heikki .


Feature: At mention submit

Allow user to submit at mentions. Currently on allows people in the same room.

@bzang could you throw some screen shots of the @ mention popup?

Sure thing. @adamweeks

@adamweeks, fixed. Ready for another round


Fix setup.py for pip install

Replace the if/else statement in the setup.py for choosing the installation process (with or without Fortran). This allows pip to install the package, even when no Fortran compiler can be found.

By pip, you mean installing from local files, or from PyPI?
Anyway, I merged the commit, then had to fix various problems with ReadTheDocs (which still complained of the lack of a fortran compiler for some reason). I managed to install particles (from PyPI) in a freshly created env. Seems everything is ok now. Thx!

Hi, yes I mean installing by pip from local files (or from pip install git+https://github.com/nchopin/particles). I haven't tried PyPI yet, but if you found that it works, I guess we can leave it to that.
Actually, the ModuleNotFound exception only triggers if numpy is not installed, I could'nt figure a way to check for the fortran compiler itself. This way, installing via pip works if we starting from a fresh environment. Unfortunatly, installing the module on a fresh environment with numpy still causes an error I can't catch.

yeah, this fortran dependency is quite a pain... Did you try with the latest version? I removed the ModuleNotFound condition from the try/except block, so as to catch any error that could occur.

I tried again with the latest version, on a clean Dockerfile just to stay on the safe side. This script runs smoothly:
FROM python:latest

WORKDIR /home/user/
ENV VENV=/home/user/.env/

# Install venv
RUN python3 -m pip install --upgrade --user pip virtualenv
RUN python3 -m virtualenv $VENV
RUN $VENV/bin/pip install git+https://github.com/nchopin/particles

# Import particles
RUN $VENV/bin/python -c "import particles"

If we add a numpy installation in the middle, the usual uncaught error in raised (even with the except all exception).
RUN python3 -m virtualenv $VENV
RUN $VENV/bin/pip install numpy
RUN $VENV/bin/pip install git+https://github.com/nchopin/particles

By the way, in the documentation, you wrote as the recommended method:
cd some_folder_of_your_choosing
git clone https://github.com/nchopin/particles.git
pip install --user .

These lines can be replaced by pip install git+https://github.com/nchopin/particles


Missing country field in Basic Analytics

Hi everyone,
I recently upgraded to 2021.4.0 and enabled analytics, but az I can see country info is missing in sent data:
2021-04-07 22:15:09 INFO (MainThread) [homeassistant.components.analytics] Submitted analytics to Home Assistant servers. Information submitted includes {'uuid': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'version': '2021.4.0', 'installation_type': 'Home Assistant Supervised', 'supervisor': {'healthy': True, 'supported': True}}
Documentation says IP address derived server-side from the IP address, but my HA runs on Debian in Docker container and both the host system and the container have private IP addresses. So is this the reason? Or can someone tell me how the IP address really derived?
Thank you in advance for the answers.

Well even if HA itself has a private IP address (as most instances do), at some point in the communication chain to the HA analytics server, there has to be a public IP that you use from your ISP. That one is the one then used for the country determination.

The analytics backend runs in Cloudflare's network, they attach the country-code to all pages/services served in that network.

I see, everything is clear now.
THX guys!


async fn download_ambient_runtime(version: &str, os: &str)

For the "download desktop version" function on the website, I need some way to download the ambient runtime. It would be great if it's exposed in a crate somewhere, so we can call:
download_ambient_runtime("0.3", "osx").await;
download_ambient_runtime("nightly-2023-08-29", "osx").await;

Can we just generate the url?

@chaosprint Yup that works


Copy resources

This fixes #66 and copies all resources to same folder as frameworks.

This is shipped in 1.0.1


Check that test_summary.csv is up-to-date in CI

Right now test_summary.csv is only updated when --update flag is set, but we don't verify that it is correct in the mode without an update.
I think at the very least, we should check in CI that this file is up-to-date.

Also, I think it would be great to have some github bot(?) which monitor PR changes and alaram us in PR discussion (simply posting message there) if any of state.csv is degradating in this PR. Maybe somebody knows some tools for it?

Also, I think it would be great to have some github bot(?) which monitor PR changes and alaram us in PR discussion (simply posting message there) if any of state.csv is degradating in this PR. Maybe somebody knows some tools for it?

I think that would be great - there is a GitHub Action that can create comments in PRs by the bot. We post testing and benchmarking results after each new commit in the PR.


Fix wrong build tools version in RN 0.56

React Native 0.56 has moved to newer build tools for android and exported versions with gradle variables.
This PR uses variables declared in project instead of hardcoded versions and fixes build on RN 0.56.

Thanks, mate!


Google oAuth2 refresh token support.

Hello,
After 1 hour Google tokens are getting expired so, this commit adds refresh token support.
Solves #977

Closing in favor of https://github.com/sahat/hackathon-starter/commit/dcfad818db297ce4d56412ac491558d185ef1601


FileInfo: Add Digest and Linkname methods

Add a Digest method to the FileInfo struct to return the digest of the file. The digest is stored in the header at offset 1035.
Add a ~LinkTarget~ Linkname method to the FileInfo struct to return the link target for links in the RPM. The link targets for an RPM are stored in the header at offset 1036.
Update tests to verify new methods.

Signed-off-by: Matthew Johnson<EMAIL_ADDRESS>These methods are required for use in https://github.com/clearlinux/diva. It is simple enough to implement this on our own but it would be much cleaner (and allow us to read the RPM only once) if this library exposed this information.

Thanks for your quick response!


Expose EditorSettings shortcut related functions

Closes https://github.com/godotengine/godot-proposals/issues/4112.
Closes https://github.com/godotengine/godot-proposals/issues/2024.

Hey! Sorry you have been getting no feedback for this long. Our backlog is fairly large, but we're trying to improve that.
@YuriSizov will try to find some time to review this. As its not a blocking/compat breaking or blocking change, we'll move the target to 4.x to not block Godot 4.0 release. It can still go in Godot 4.0 if its reviewed and approved before feature freeze.
Thanks again for contributing and sorry this has been gathering dust!

I think for the first draft this API makes sense to me. There is something to be said about making it a bit less verbose and a bit more abstract (see https://github.com/godotengine/godot-proposals/issues/2024), maybe, but overall it's no worse than what you have to do in game code.
Here's a simple example I've made while testing:
@tool
extends EditorPlugin

func _enter_tree():
	var editor_settings := get_editor_interface().get_editor_settings()

	if not editor_settings.get_shortcut("my_plugin/alert"):
		var alert_shortcut := Shortcut.new()
		var key_stroke := InputEventKey.new()
		key_stroke.keycode = KEY_9
		alert_shortcut.events.append(key_stroke)
		editor_settings.add_shortcut("my_plugin/alert", alert_shortcut)

func _shortcut_input(event):
	var editor_settings := get_editor_interface().get_editor_settings()
	if event.pressed and editor_settings.is_shortcut("my_plugin/alert", event):
		print("ALERT!")

Works just fine, and I have no errors on reloading the plugin or the project completely.

Two notes though:

I think we could benefit from has_shortcut(name) in the public API. You can obviously try to get the shortcut and check it, but a helper like that would probably be nice to have for simplicity.
The editor settings don't seem to pick up on the newly added shortcuts. So they can't be rebound, which is kind of the point. This needs fixing.

Looks good and simple enough for me, exactly what I wanted when I opened the proposal request.
Very good 👏

Why not offer a higher level function like:
editor_settings.add_shortcut("my_plugin/alert", "ctrl+a")
Or:
editor_settings.add_shortcut("my_plugin/alert", "ctrl+a",self,"select_all")
It would also make it much easier to see at a glance as we would not have to build the stroke in our head.
And because it's a one shot, decoding the string wouldn't make a perceptible impact on speed.

@programaths What you propose is unrelated to this proposal and more related to the general input handling in Godot.
You can't bind methods to input events like that, you have to handle input events, be it raw strokes, shortcuts, or actions. Even if we could, it wouldn't be "select_all" as a string, btw, it would be a callable.
As for providing the combination as a string, it does look helpful, but again, this is unrelated to this PR. It can be a helper method for input events or a static helper method for input in general. That said, relying on strings is bad. You need to learn specific syntax with no completion or typing help. You will be limited in what you can and cannot set this way. And it's easy to make mistakes, typos, break it in some other subtle ways.
Either way, check https://github.com/godotengine/godot-proposals in case there is a proposal that covers what you want and give it a thumbs-up.

There is quite a big quality issue in the proposed code, relying on string is bad (https://github.com/godotengine/godot/pull/58585#issuecomment-1237947265) and Godot already solved that issue.
@tool
extends EditorPlugin

const alert_shortcut=&"my_plugin/alert"

func _enter_tree():
	var editor_settings := get_editor_interface().get_editor_settings()

	if not editor_settings.get_shortcut(alert_shortcut):
		var alert_shortcut := Shortcut.new()
		var key_stroke := InputEventKey.new()
		key_stroke.keycode = KEY_9
		alert_shortcut.events.append(key_stroke)
		editor_settings.add_shortcut(alert_shortcut, alert_shortcut)

func _shortcut_input(event):
	var editor_settings := get_editor_interface().get_editor_settings()
	if event.pressed and editor_settings.is_shortcut(alert_shortcut, event):
		print("ALERT!")

Indeed relying on strings is bad. You need to know the specific name of the shortcut with no completion or typing help. And it's easy to make mistakes, typos, break it in some other subtle ways.

There is quite a big quality issue in the proposed code

It's not a proposed code, it's just an example of how the API can be used. It would sure be more stable to store the name of the shortcut in a variable and reference it, but it wasn't important for the demonstration. Unfortunately, here we can't get rid of strings completely, because they server as a human-recognizable identifier. In case of the key combinations they would be responsible for a lot more than that.

I only see methods for adding shortcuts to the editor settings. How would one clean up the shortcut when disabling the plugin? It would probably need some remove_shortcut() method, otherwise the shortcut will stay there for eternity

@winston-yallow Good call. We don't have such need internally, but for plugins this makes sense to have.

I have added has_shortcut() and remove_shortcut() functions.

The editor settings don't seem to pick up on the newly added shortcuts. So they can't be rebound, which is kind of the point. This needs fixing.

This one I haven't solved yet because all shortcuts displayed in editor settings are shortcuts manually registered using ED_SHORTCUT() e.g. ED_SHORTCUT("animation_bezier_editor/focus", TTR("Focus"), Key::F); in AnimationBezierTrackEdit ctor.
And all shortcuts are added to the same shortcuts HashMap so I don't know if it is possible to differentiate between them during runtime

Pretty sure all you need to do is then save the editor settings and it should update?

The editor settings don't seem to pick up on the newly added shortcuts

The added shortcut does get returned in EditorSettings::get_singleton()->get_shortcut_list(&slist), but when constructing the shortcut list for the settings there is a check:
Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E);
if (!sc->has_meta("original")) {
	continue;
}

"original" is set for shortcuts for the "revert to default" functionality. All shortcuts registered through the editor have this. This is a bit of a 'gotcha' as it is specific to the way editor shortcuts work. Anyway, once you add that, it does start showing up in the settings, however the name is blank. This is because we use the resource name for the name of the shortcut. So on p_shortcut, we need to add ->set_name("shortcut name").
With all this being quite specific to adding shortcuts from scripting, it is probably worth adding a method specifically for adding shortcuts from script. This also helps with the remove_shortcut stuff, as we could then set_meta("from_scripting", true) and only allow removing shortcuts where get_meta("from_scripting") == true. This is just what I came up with off the top of my head - there may be better ways.
There is also a bit of a mess about when it comes to loading saved shortcut changes from editor settings. Basically, editor settings are loaded first, then your script is run, so we want to not have if not editor_settings.get_shortcut(alert_shortcut_name): in the script. We need to try add the shortcut every time - and if something was loaded from EditorSettings, then just take that shortcut array and apply it.
Hopefully looking at the code makes it all a bit clearer - here is a diff between this PR any my additions. https://github.com/IgorKordiukiewicz/godot/compare/expose-editor-settings-shortcut-related-functions...EricEzaM:58585?expand=1

Try to remove built in shortcut:

Shortcut changes save:

it does start showing up in the settings, however the name is blank. This is because we use the resource name for the name of the shortcut. So on p_shortcut, we need to add ->set_name("shortcut name").

This can already be handled by user code, but we can also make the public add_shortcut method take a third argument and set it internally.

This also helps with the remove_shortcut stuff, as we could then set_meta("from_scripting", true) and only allow removing shortcuts where get_meta("from_scripting") == true. This is just what I came up with off the top of my head - there may be better ways.

I don't think it's a huge problem. You can also dynamically mess up other editor settings with the API we have. While it can be useful to safeguard this, it's not a requirement at this point IMO, and we can just rely on good will of plugin developers. Besides, none of it is gone forever and it only takes disabling the plugin and restarting the editor to restore the missing settings (albeit at their default values).

"original" is set for shortcuts for the "revert to default" functionality. All shortcuts registered through the editor have this. This is a bit of a 'gotcha' as it is specific to the way editor shortcuts work.

Ah, right. Then we should do the same for the shortcuts added through the public API. They shouldn't really differ from "editor shortcuts". Editor is also full of built-in plugins, so I'm not sure why we'd want the user-scripted plugins to be any different. Besides, they also need to have that default/user-configured distinction. So if that's what is missing then it needs to be added to the public API.

There is also a bit of a mess about when it comes to loading saved shortcut changes from editor settings. Basically, editor settings are loaded first, then your script is run, so we want to not have if not editor_settings.get_shortcut(alert_shortcut_name): in the script. We need to try add the shortcut every time - and if something was loaded from EditorSettings, then just take that shortcut array and apply it.

I wanted to ask "why", but then I guess if the plugin's code adds shortcuts with the "original" meta and user's stored information is used to override it, then yeah, we should probably always add it, and just merge the two.

Updated, also should, about this change from: https://github.com/IgorKordiukiewicz/godot/compare/expose-editor-settings-shortcut-related-functions...EricEzaM:58585?expand=1
	Array use_events = p_shortcut->get_events();
	if (shortcuts.has(p_path)) {
		auto existing = shortcuts.get(p_path);
		if (!existing->has_meta("original")) {
			// Loaded from editor settings, but plugin not loaded yet.
			// Keep the events from editor settings but still override the shortcut in the shortcuts map
			use_events = existing->get_events();
		} else if (!Shortcut::is_event_array_equal(existing->get_events(), existing->get_meta("original"))) {
			// Shortcut exists and is customised - don't override with default.
			return;
		}
	}

@YuriSizov  should I add it or just leave it as it is without it, since the already existing add_shortcut method doesn't have any checks against already existing shortcuts, etc. ?

Try using the system without that code - it doesn't work properly when you try customise the shortcut and keep that customisation between editor restarts.
The public add_shortcut method isn't even used anywhere, except for when settings are being loaded. It should probably be made private.

I don't have much knowledge how shortcuts work internally, but just from the API it seems weird that a method named get_shortcut() isn't just a getter. Instead it also adds that shortcut to a list if it is a builtin one. So as I understand it, a call to get_shortcut() can change the result of get_shortcut_list(). The documentation does mention this, but without many details. It was unclear to me what list it was talking about until I read the source code.


sg.add_adata(adata_file) not working

Hi @fairliereese,
I'm following the tutorial (https://freese.gitbook.io/swan/tutorials/getting_started) for SWAN with my data but when I run:
adata_file = '/home/jupyter/talon_output/WGBR_20240330_transcript_adata.h5ad'
sg.add_adata(adata_file)

I get:
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/tmp/ipykernel_9583/3669442909.py in <module>
      1 adata_file = '/home/jupyter/talon_output/WGBR_20240330_transcript_adata.h5ad'
----> 2 sg.add_adata(adata_file)

AttributeError: 'SwanGraph' object has no attribute 'add_adata'

The functions:
sg = swan.SwanGraph()
sg.add_annotation(annot_gtf)
sg.add_transcriptome(data_gtf)
sg.add_abundance(ab_file)
All seem to work perfectly fine so far. Any help you can provide would be greatly appreciated.
Thanks,
wdg118

Hi! When / how did you download Swan. This error makes me think you don't have the most updated version and should try installing from GitHub.

Hi @fairliereese ,
I downloaded Swan a few days ago, I installed it from GitHub using git clone.

Hi, sorry for the delay. This is some weird behavior that I'd love to solve. Would you be able to send me the files you're working with as well as the code you're using that yields these two errors so I can investigate? You can email them (or share them on Google drive) to fairlie.reese {at} gmail {dot} com.

OK solved your issue! Basically there was a problem with the formatting in the obs and var tables. As specified in the docs, you need to ensure that your indices for both tables are set with the dataset name and transcript ID variables you wish to use. Therefore, just set the index, save the adata, and try again:
import scanpy as sc
import swan_vis as swan

fname = 'WGBR_20240330_transcript_adata.h5ad'
adata = sc.read(fname)
adata.var.set_index('annot_transcript_id', inplace=True)
adata.obs.set_index('dataset', inplace=True)
adata.write('adata.h5ad')

# SwanGraph with annotation / transcriptome information already added
sg.add_adata('adata.h5ad')

Great! Thank you so much, I'll try it out!


updated js to use jQuery in no conflict mode.

WordPress requires no conflict mode for all javscript

Sounds good but not quite sure if I really want to merge the pulls (also the one you provided here: https://github.com/milohuang/reverie/pull/21). The framework is designed to better work with Foundation (even when Foundation updated). The JS files are from Foundation so the merge could affect the future update. I am no coder and not sure about the impact. Could you elaborate it a bit?

Pull 21 is mainly just the proper way to call javascript in WordPress. It doesn't affect the js at all, and when you update Foundation, it won't conflict with anything. Read more about it here: http://codex.wordpress.org/Function_Reference/wp_enqueue_script
As for the second one where I edited the JS file... Its pretty standard now to write all javascript in no conflict mode including jQuery. This way if another library is used, there are no conflicts. I also think that WordPress will through errors if you don't use it properly. WordPress comes with its own version of jQuery that you can enqueue as well. Its safe to assume that plugins etc that a user might use will utilize this jQuery that is bundled with WordPress, so including your version, plus another version seems silly.


Validating text values

I am binding a text input to a model property.  When the value changes, I want to save the changes to the server.  I have this part done already.  However, I need to run some validation on the new value before saving the model.  Mostly I want to make sure that the text input isn't empty.
The general idea I'm working on is changing the title of the model in the view.  I want to make sure that the new title isn't empty before saving the model back to the server.  I have validation set on the server, but I would like to avoid wasting an ajax call to the server, since I already know empty values won't work.
How can I accomplish some simple validation like this when binding form elements to the model?

Bump?

Have a look at Backbone.Validation for this and bind the validate call to e.g. a change event of the according input field(s).


WIP: Update OpenAPI schema and link with JSON schemas

This is work in progress, but it gives a perspective on my approach to where a project could be moving, checkout locally or see screenshot below.
The idea is to provide modern documentation AND examples specific to the TSP mode-of-transportation, initially for Taxi and E-bikes. Also specification and schemas should be valid and linked to latest maas-schemas. Would be nice to have a sample implementation which are validated to work in Whim App.
Todo and progress

[x] Modern UI for seeing specification and examples in single place
[x] Initial examples for Taxi provider
[x] Using JSON schemas from maas-schemas to reference to payloads in OpenAPI spec
[x] Additional sections in the schema to describe rate limits, authorization and etc
[ ] Include all booking methods
[x] Add original booking description
[ ] Full booking API implementation
[ ] Validate and specify proper payloads schemas
[ ] Full examples for Taxi
[ ] Full examples for E-bike
[x] Make tests for validating examples against schemas
[ ] Best case scenario attributes for Taxi
[ ] Best case scenario attributes for E-bike
[ ] Update documentation on high-level booking process
[ ] Simplify booking BPMN
[ ] HTML meta tags & icon
[x] Fix static generation
[ ] Versioning information
[ ] Deploy maas-schemas latest version NPM repo
[ ] Test API
[ ] Sample TSP API implementation
[x] Deploy to GitHub Pages not to maas-api.org
[x] Check code against common eslint rules

See how repo looks at by PR branch: https://github.com/huksley/maas-tsp-api/tree/spec-schemas
DISCLAIMER This is not ready to merge, needs improvement and peer review first.
Static demo
https://huksley.github.io/maas-tsp-api/

Epic!

As we discussed, lets focus this PR on the first iteration of changing the structure and presentation. Follow up tasks can focus on TSP-specific use cases, API flows like payment, sample test API, etc.

[ ] Declare proper parameters for GET bookings/options based on schema


Add AudioStreamPlayerInternal to unify stream players

We have 3 AudioStreamPlayer classes and they share a lot of code. Code duplication, especially this big, is bad and that doesn't need explaining. Every fix or common feature has to be implemented 3 times and there is risk of code differences that result in bugs.
This PR tries to unify the code under a single class - AudioStreamPlayerInternal. It's an internal class used by the 3 audio players (not by inheritance). I delegated all common code and fields to the new class. The best indicator how big was the code duplication is that this PR has more deleted lines despite I added a whole new class. I also cleaned up some includes.
I tried to avoid introducing changes, but there are small differences from the original code, mostly in the order of some lines (some things were ordered differently in different players and common methods will obviously unify that). Probably needs testing to check whether all features are still working and there is no change in behavior. I did some basic tests and the audio still plays at least.
In the meantime I also came up with an alternate approach of taking advantage of C++ multiple inheritance. Maybe I'll try that too, as it should save some more code and possibly make it more readable.

In the meantime I also came up with an alternate approach of taking advantage of C++ multiple inheritance. Maybe I'll try that too, as it should save some more code and possibly make it more readable.

I'm very interested. Readability seems to be the must. But, is something like the suggestion ever used across  the rest of the codebase?
Whatever path is taken to unite the AudioStreamPlayers, it would be nice in the future to do the same for other classes with a lot of duplicated code.

An important discussion point is whether this may interfere with people creating custom streams with gdextension. I think the answer is no because they can just inherit audiostream and continue duplicating all the code we're consolidating here. But that's a use case I want us to continue supporting so I want to bring it up :)

Compatibility is retained by doing this. From the outsider's perspective nothing should change.

But, is something like the suggestion ever used across the rest of the codebase?

No, AFAIK every class is single inheritance.
I tried that approach and seems like you can't bind methods from another class (in that case AudioStreamPlayerInternal would be the secondary parent class), which makes it useless. Maybe there is a way to untangle the inheritance, but it's not that easy, so meh. The solution in this PR is better than what we have anyway.

Compatibility is retained by doing this. From the outsider's perspective nothing should change.

Yeah makes sense, I'm just trying to be thorough. I also think we should come up with a better name because we have a couple audio streams that won't end up subclassing this new internal class because they're dynamic (microphone, generator, probably others).

It could be called something like "Core". I had it for a bit and it's the only thing that comes to mind.

I also think we should come up with a better name because we have a couple audio streams that won't end up subclassing this new internal class

The new class is for audio stream players (it's AudioStreamPlayerInternal), not audio streams. I think the name is fine.

Yeah sorry, neither of my comments make any sense for this. I got a covid vaccine about 36 hours ago and I'm still in the living dead phase of recovery. Didn't help that I hadn't looked at the code yet. I do want to refactor streams at some point too but there's a lot less we can do there without breaking stuff. As you noted, you can't create a new player in GDExtension yet so we really don't have to worry about breaking compat, and I'm not even aware of any custom modules that implement their own players without going through an entirely different middleware.

Rebased and updated. I had to change the AudioStreamPlayerInternal to Object, to handle the newly added parameter_list_changed signal. I also fixed the null issue from #86473.

Failing test:
./tests/core/object/test_class_db.h:833:
TEST SUITE: [ClassDB]
TEST CASE:  [ClassDB] Add exposed classes, builtin types, and global enums
  [ClassDB] Validate exposed classes

./tests/core/object/test_class_db.h:376: ERROR: CHECK_FALSE( (p_arg.name.is_empty() || p_arg.name.begins_with("_unnamed_arg")) ) is NOT correct!
  values: CHECK_FALSE( true )
  logged: Unnamed argument in position 0 of method 'AudioStreamPlayer2D.set_pitch_scale'.

Thanks!


[8.x] Add JobQueued event

This PR follows: https://github.com/laravel/framework/pull/32894
The previous PR was refused due to too many changes. Since that @themsaid added the function Queue::enqueueUsing() which gives a single place where we can emit the JobQueued event.
Existing tests are updated and 2 new added to make sure the event is sent on push and bulk.

Merged.

Merged.


Adding OmniAI::LocalAI and OmniAI::Ollama

I'm not sure whether this is a good place to add these as part of OmniAI::OpenAI or whether they should be in their own gem.

I agree with you @ksylvest so I changed the PR to a draft so that we might continue to discuss the new namespace if you are interested.  If not you may just close the PR.
I have a repo of the new gem at https://github.com/MadBomber/omniai-ollama
One of the things that I am trying within my local working directory is to adapt the entire OmniAI::OpenAI test suite to the new namespace.  While I am getting many errors and failures due primarily to the mocked requests not matching even after a global search and replace of "api.openai.com" with "localhost:11434", the effort did point out many of the classes which I failed to alias in this PR.

@ksylvest   I'm closing this PR as OBE.