Add caching of OptInFieldsMixin fields property

Fixes: #N/A
Profiling of API requests with Silk showed that one potential bottleneck was repeated calls to serializer.fields, which is an instance attribute in baseline django-rest-framework but is overridden into a property in our OptInFieldsMixin class. It appears that this property was accessed about 9 times per model instance being retrieved. As a result, adding some basic caching here pays performance dividends - in my local testing, using the development server running in Docker, an API query to retrieve 1000 Devices (minus config-context) is reduced from about 40 seconds to about 30 seconds.
The diffs are a bit difficult to read but basically all this is, is moving most of the body of the property function into an if self.__pruned_fields is None: block.

FYI in my testing with 5k devices, this improves response time ~2x

Does it make sense to patch to the 1.1 version?

Does it make sense to patch to the 1.1 version?

Yes please, I came here to ask the same question.

I will add a +1 on the patch of 1.1.x

I'm working on preparing a 1.1.6 release to include this fix and #1108.


Firefox - "Recent" category button is focused when opening picker and showAnimation is true

You can see this on the demo at https://emoji-button.js.org/.  When the picker opens, the recent category button is focused after it opens.  This only happens when showanimation is true - you can see this by clicking the "don't show anim" button on the (unrelated) codepen here: https://codepen.io/jmlee2k/pen/oNxZwQj - it works as expected, while clicking the "show anim" button demonstrates the issue.

This will be fixed when 4.1.0 is released


Console.log in Observable

Thank you for maintaining this lib.
This code does not persists console.log ouput:
const Listr = require("listr");
const Observable = require("rxjs").Observable;

const tasks = new Listr([
  {
    title: "task",
    task: async () => {
      return new Observable(observer => {
        console.log("task - INIT");
        observer.next("Foo");

        setTimeout(() => {
          console.log("task - TIMEOUT 2000");
          observer.next("Bar");
        }, 2000);

        setTimeout(() => {
          console.log("task - TIMEOUT 4000");
          observer.complete();
        }, 4000);
      });
    }
  }
]);
tasks.run();

It displays:
✗ node test.js
task - INIT
 ⠏ task
 ⠇ task
 ✔ task

task - TIMEOUT 2000 and task - TIMEOUT 4000 just flash then break line.
Is it the normal behavior? Is there a way to avoid this?
My goal is to persists some error on console (warnings, errors and information that does not need to stop the process but are important).

Logging a line-break \n seems to help it persist


Updates devcontainer. Closes #5037 & #5038

Closes #5037 & #5038
Merging this PR will:

Remove warnings from devcontainer.json file.
Updates devcontainer.json file to latest schema.
Expand postCreateCommand lifecycle property to setup the CLI and docs on first run.
Remove python dependencies.
Simplify oh-my-zsh install.
Replace Ubuntu image with smaller Alpine Linux image.

Manually merged


unregister and register  problem

i am using managed push notification example abut when i unregester and regester with another user  but still getting call for older user in same device.
using below code to unregester .,
mSinchClient.setSupportCalling(false);
mSinchClient.unregisterManagedPush();
please help for fix this problem..

i am facing the same problem, I am thinking about change some other APIs


Add postgres client package

Description

close: #5468
How Has This Been Tested?

None
i didn't find any tests about Dockerfile
Checklist

[ ] The PR is tagged with proper labels (bug, enhancement, feature, documentation)
[ ] I have performed a self-review of my own code
[ ] I have added unit tests that prove my fix is effective or that my feature works
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation

cc: @wangxiaoyou1993

@jx2lee have you tried building the docker image with the updated dockerfile?

sure, check below build log
$ docker build --platform linux/amd64 . -t mage-ai/test
[+] Building 657.3s (14/14) FINISHED                                                                                docker:orbstack
 => [internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 3.27kB                                                                                0.0s
 => [internal] load metadata for docker.io/library/python:3.10-bookworm                                                                                1.3s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [1/9] FROM docker.io/library/python:3.10-bookworm@sha256:aaacc373f21abcbc67a22d203dab7fb797c016cc4c1daa7d2dec359dcbf4aea1                                                                             16.3s
 => => resolve docker.io/library/python:3.10-bookworm@sha256:aaacc373f21abcbc67a22d203dab7fb797c016cc4c1daa7d2dec359dcbf4aea1                                                                              0.0s
 => => sha256:c4907bcc084d711316df51048c4c8625e5b38226c8a4dd22f2ec6965da439d18 2.33kB / 2.33kB                                                                                0.0s
 => => sha256:c780c1edc88f3c7244e1b75cae5a7f8df8cf33461e25d67e916dc76a3218b2cf 5.94kB / 5.94kB                                                                                0.0s
 => => sha256:cdd62bf39133c498a16f7a7b1b6555ba43d02b2511c508fa4c0a9b1975ffe20e 49.56MB / 49.56MB                                                                                3.7s
 => => sha256:a47cff7f31e941e78bf63ca19f0811b675283e2c00ddea10c57f78d93b2bc343 24.05MB / 24.05MB                                                                                1.8s
 => => sha256:aaacc373f21abcbc67a22d203dab7fb797c016cc4c1daa7d2dec359dcbf4aea1 9.08kB / 9.08kB                                                                                0.0s
 => => sha256:a173f2aee8e962ea19db1e418ae84a0c9f71480b51f768a19332dfa83d7722a5 64.39MB / 64.39MB                                                                                8.1s
 => => sha256:01272fe8adbacc44afd2b92994b31c40a151f4324ca392050d9e8d580927dd32 211.27MB / 211.27MB                                                                                11.6s
 => => extracting sha256:cdd62bf39133c498a16f7a7b1b6555ba43d02b2511c508fa4c0a9b1975ffe20e                                                                                1.5s
 => => sha256:2503de423c42c91e553f5faf8e7d04db973ea96d6d3865e13ece952d27439b0c 6.16MB / 6.16MB                                                                                4.4s
 => => sha256:3f9262f6ef06204821bf90796cb4b90743cb3dff874b3fb91c11ede1d0094eb4 20.24MB / 20.24MB                                                                                7.3s
 => => extracting sha256:a47cff7f31e941e78bf63ca19f0811b675283e2c00ddea10c57f78d93b2bc343                                                                                0.4s
 => => sha256:fddd6c71e7646d2c20e2b785ddcf2f6b6ec2a0fd76591e838fd7059638ea27fb 248B / 248B                                                                                7.7s
 => => extracting sha256:a173f2aee8e962ea19db1e418ae84a0c9f71480b51f768a19332dfa83d7722a5                                                                                1.5s
 => => extracting sha256:01272fe8adbacc44afd2b92994b31c40a151f4324ca392050d9e8d580927dd32                                                                                3.6s
 => => extracting sha256:2503de423c42c91e553f5faf8e7d04db973ea96d6d3865e13ece952d27439b0c                                                                                0.1s
 => => extracting sha256:3f9262f6ef06204821bf90796cb4b90743cb3dff874b3fb91c11ede1d0094eb4                                                                                0.4s
 => => extracting sha256:fddd6c71e7646d2c20e2b785ddcf2f6b6ec2a0fd76591e838fd7059638ea27fb                                                                                0.0s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 454B                                                                                0.0s
 => [2/9] RUN   curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - &&   curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list   40.6s
 => [3/9] RUN   R -e "install.packages('pacman', repos='http://cran.us.r-project.org')" &&   R -e "install.packages('renv', repos='http://cran.us.r-project.org')"                                        37.4s
 => [4/9] RUN   pip3 install --no-cache-dir sparkmagic &&   mkdir ~/.sparkmagic &&   curl https://raw.githubusercontent.com/jupyter-incubator/sparkmagic/master/sparkmagic/example_config.json > ~/.spa  257.0s
 => [5/9] RUN   pip3 install --no-cache-dir "git+https://github.com/wbond/oscrypto.git@d5f3437ed24257895ae1edd9e503cfb352e635a8" &&   pip3 install --no-cache-dir "git+https://github.com/dremio-hub/ar  209.0s
 => [6/9] COPY ./mage_ai/server/constants.py /tmp/constants.py                                                                                0.0s
 => [7/9] RUN if [ -z "$FEATURE_BRANCH" ] || [ "$FEATURE_BRANCH" = "null" ] ; then   tag=$(tail -n 1 /tmp/constants.py) &&   VERSION=$(echo "$tag" | tr -d "'") &&   pip3 install --no-cache-dir "mage-a  92.1s
 => [8/9] COPY --chmod=0755 ./scripts/install_other_dependencies.py ./scripts/run_app.sh /app/                                                                                0.0s
 => [9/9] WORKDIR /home/src                                                                                0.0s
 => exporting to image                                                                                3.3s
 => => exporting layers                                                                                3.2s
 => => writing image sha256:7bfaf12ac7398faf1c6c4a12316031db227fde0a45347869b7422fb35a9fb76f                                                                                0.0s
 => => naming to docker.io/mage-ai/test                                                                                0.0s

 1 warning found (use docker --debug to expand):
 - UndefinedVar: Usage of undefined variable '$PYTHONPATH' (line 71)

but when progressed with docs, build failed. can i fixed it?
$ ./scripts/init.sh default_repo
[+] Building 8.8s (6/18)                                                                                docker:orbstack
 => [server internal] load build definition from dev.Dockerfile                                                                                0.0s
 => => transferring dockerfile: 3.37kB                                                                                0.0s
 => [server internal] load metadata for docker.io/library/python:3.10-bookworm                                                                                1.5s
 => [server internal] load .dockerignore                                                                                0.1s
 => => transferring context: 2B                                                                                0.0s
 => CACHED [server  1/14] FROM docker.io/library/python:3.10-bookworm@sha256:aaacc373f21abcbc67a22d203dab7fb797c016cc4c1daa7d2dec359dcbf4aea1                                                              0.0s
 => [server internal] load build context                                                                                1.7s
 => => transferring context: 171.41MB                                                                                1.7s
 => ERROR [server  2/14] RUN   curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - &&   curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql  7.1s
------
 > [server  2/14] RUN   curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - &&   curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list &&   curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg &&   NODE_MAJOR=20 &&   echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list &&   apt-get update -y &&   ACCEPT_EULA=Y apt-get install -y --no-install-recommends   nodejs   nfs-common   msodbcsql18   unixodbc-dev &&   postgresql-client   apt-get clean &&   rm -rf /var/lib/apt/lists/*:
0.163   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
0.163                                  Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
100   983  100   983    0     0   9358      0 --:--:-- --:--:-- --:--:--  9451
0.630 OK
0.639   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
0.639                                  Dload  Upload   Total   Spent    Left  Speed
100    88  100    88    0     0   1276      0 --:--:-- --:--:-- --:--:--  1294
...
...
failed to solve: process "/bin/bash -o pipefail -c curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - &&   curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list &&   curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg &&   NODE_MAJOR=20 &&   echo \"deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main\" | tee /etc/apt/sources.list.d/nodesource.list &&   apt-get update -y &&   ACCEPT_EULA=Y apt-get install -y --no-install-recommends   nodejs   nfs-common   msodbcsql18   unixodbc-dev &&   postgresql-client   apt-get clean &&   rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 127

@wangxiaoyou1993 please help merge this change as well (I don't have write access), thanks.


[WIP] Allow setting custom cluster name

@architkulkarni @kevin85421
Why are these changes needed?
This PR extends the RayJob CRD with a RayClusterName field with similar behavior to JobId.
Related issue number
Closes #1294
Checks
N.B.1: I tested the logic and run a couple of jobs on local cluster as well as tested that previous behavior is not impacted.
N.B.2: I will work/update the tests as soon as I get feedback and turn this draft into a PR.

[ ] I've made sure the tests are passing.
Testing Strategy

[ ] Unit tests
[ ] Manual tests
[ ] This PR is not tested :(

Sorry. I have not read #1294 before. I will review it soon before you start working on the tests.

@kevin85421 I completely understand that you can look up the service by a selector and also understand the reason of the current logic. However, exposing the service to non-k8s users through a reverse-proxy, e.g. nginx, would require an additional service just to perform the lookup get the correct FQN service, also integrating with other services is a bit challenging because they all require similar lookup.
My current proposal does not break the previous behavior, but, similar to the JobId, allows the creation of a deterministic cluster name, which results also of a deterministic service name. In our case all these resources have unique name based on an uuid.

@architkulkarni I will add/update the tests and update the status of this PR.

Take a look at the relationship between: RayJob --> RayCluster --> Pod / Service

As demonstrated in https://github.com/ray-project/kuberay/pull/1326#pullrequestreview-1578018567, it is currently easy to associate a Pod or Service with RayCluster.
However, there seems to be no label in RayCluster to associate it with RayJob.
If we implement (2), we still wouldn't have a method to associate the RayJob with the head service. However, there doesn't seem to be a use case for this association.

I do not recommend allowing users to configure the name of the RayCluster that a RayJob owns if we do not have a very strong use case because:

Currently, KubeRay has three CRDs, and we should standardize configurations that exhibit similar behaviors. If we enable users to configure RayJob's RayCluster name, it will make the behavior pretty diverge. To elaborate, users will find that:

They can configure the RayJob's RayCluster name via a field RayClusterName.
In RayCluster, you do not have the variable RayClusterName, and you should set it in the metadata.name.
In RayService, users cannot set the RayClusterName. During RayService's zero-downtime upgrade, two RayClusters owned by the RayService will coexist in the same namespace simultaneously. However, it's impossible for two RayClusters to have the identical RayClusterName within the same namespace. Consequently, this behavior will be distinctly different from that of RayJob.

You can implement (2) if you are interested in it.

I completely understand that you can look up the service by a selector and also understand the reason of the current logic. However, exposing the service to non-k8s users through a reverse-proxy, e.g. nginx, would require an additional service just to perform the lookup get the correct FQN service, also integrating with other services is a bit challenging because they all require similar lookup.

Oh, I understand your point. We allow users to configure the entire head service. You can take this gist as an example. It will create a head svc "custom-ray-head-service-name", but currently this has a bug which may be related to this. If you do not have the bandwidth to fix it, Archit or I can fix it.
  rayClusterSpec:
    rayVersion: '2.5.0' # should match the Ray version in the image of the containers
    # Ray head pod template
    headGroupSpec:
      headService:
        metadata:
          name: custom-ray-head-service-name

That's correct, I tried that before but the operator was not able to reconcile the job, the env vars were always generated automatically, so I assumed that it's only for customizing labels/annotations and not the service name.
If that works then this PR is not needed.

Open a PR https://github.com/ray-project/kuberay/pull/1332/ and tested it with the gist mentioned above. I will write some unit tests tmr.

Closing this draft in favor of #1332


feat(transform_conformance): keep exec snapshot files

closes #7564

#7565  👈 (View in Graphite)
main

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


Add database support

We'll definitely need a database for the bot as we go on, we'll need to add support for it. Most likely, just using sqlite will be enough here and it will make it a lot easier for everyone involved when compared to having to work with a full dbms, like postgresql.
Question is whether or not we'll also want to do ORM (sqlalchemy) or just write some simple crud classes, or work directly with SQL everywhere. As much as I like sqlalchemy, it's probably a bit too involved and complex for us now. As for writing SQL directly, that could lead to issues and is probably more complex than just exposing some basic crud classes that everyone can use even without being familiar with SQL.

After some discussions, we'll go with SQLAlchemy after all, mainly due to the possibility of using alembic for db migrations, which would be pretty annoying to have to handle manually. For the backend, we'll still go with sqlite though, to avoid everyone having to have a database that can can connect to.


Context dependent L-systems

Add rules that can specify edge/node rewriting based on the surroundings of the predecessor.

Can now replace predecessors depending on the left and right context and ignoring specified characters.


Add basic documentation related to development

It would be nice if things related to development also gets documented somewhere.
Example: If you change the build system, all you have to do is stack build eta:eta-build to build the new eta-build instead of doing cleaninstall.sh which I was doing earlier.

Posting here for when we create the dev section in the docs:
Grepping through Eta code base with regexes:
For function definitions: ^[function-name]
For data declarations: ^data.*[type-name]
For newtype/type synonym declarations: type\ [type-name]
For record field declarations: [field-name].*::


Added States to Overview dashboard

Not sure, whether all went well...

Please revert to use the default values, not the ones from your setup. In general it would be nice if only the necessary lines were changed :)

I agree. Not sure, where all those changes came from... Still there appears my URL to be there. How can I change that?!?
(Perhaps I should restart from scratch...)

@adriankumpf I redid it from scratch. Unfortunately I cannot keep the diff at a minimum because grafana rearranges the panels...
Perhaps zu could review and, if ok, deploy this?
Overview-1584459056104.zip

I created a new pull request. Hopefully cleaner and more correct... :-)


gensio: 2.3.7 -> 2.5.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for gensio is: "General Stream I/O"
meta.homepage for gensio is: "https://sourceforge.net/projects/ser2net/"
meta.changelog for gensio is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.4.0 with grep in /nix/store/ch0iibgcv8q2m72ism0kjsp69qfjqx04-gensio-2.4.0
found 2.4.0 in filename of file in /nix/store/ch0iibgcv8q2m72ism0kjsp69qfjqx04-gensio-2.4.0

Rebuild report (if merged into master) (click to expand)

3 total rebuild path(s)

2 package rebuild(s)

2 x86_64-linux rebuild(s)
1 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
gensio
ser2net

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ch0iibgcv8q2m72ism0kjsp69qfjqx04-gensio-2.4.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gensio https://github.com/r-ryantm/nixpkgs/archive/32267cdd71e625bfc05e70c18bcc4b2fb80efef0.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ch0iibgcv8q2m72ism0kjsp69qfjqx04-gensio-2.4.0
ls -la /nix/store/ch0iibgcv8q2m72ism0kjsp69qfjqx04-gensio-2.4.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gensio
ser2net

Maintainer pings
cc @emantor for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for gensio is: "General Stream I/O"
meta.homepage for gensio is: "https://sourceforge.net/projects/ser2net/"
meta.changelog for gensio is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.5.2 with grep in /nix/store/nd767qkv6d8s6kzxa9nm10aizc1hjvrs-gensio-2.5.2
found 2.5.2 in filename of file in /nix/store/nd767qkv6d8s6kzxa9nm10aizc1hjvrs-gensio-2.5.2

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gensio
ser2net

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/nd767qkv6d8s6kzxa9nm10aizc1hjvrs-gensio-2.5.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gensio https://github.com/r-ryantm/nixpkgs/archive/8ca10dff980cb305497e8214a953553d96721fbc.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/nd767qkv6d8s6kzxa9nm10aizc1hjvrs-gensio-2.5.2
ls -la /nix/store/nd767qkv6d8s6kzxa9nm10aizc1hjvrs-gensio-2.5.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gensio
ser2net

Maintainer pings
cc @Emantor for testing.

@Emantor is this behavior of a binary in gensio inteded?

[nix-shell:~/.cache/nixpkgs-review/pr-170180]$ ./results/gensio/bin/greflector --version
./results/gensio/bin/greflector: line 7: syntax error near unexpected token `('
./results/gensio/bin/greflector: line 7: `def dump_buffer(buf):'

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for gensio is: "General Stream I/O"
meta.homepage for gensio is: "https://sourceforge.net/projects/ser2net/"
meta.changelog for gensio is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found ratelimit-test with grep in /nix/store/x4rnymg6n75yxccrz34fmzizjrwrfg54-gensio-ratelimit-test
found ratelimit-test in filename of file in /nix/store/x4rnymg6n75yxccrz34fmzizjrwrfg54-gensio-ratelimit-test

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gensio
ser2net

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/x4rnymg6n75yxccrz34fmzizjrwrfg54-gensio-ratelimit-test \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gensio https://github.com/r-ryantm/nixpkgs/archive/f468971c4bba144960fab625ac049e730bdc8a62.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/x4rnymg6n75yxccrz34fmzizjrwrfg54-gensio-ratelimit-test
ls -la /nix/store/x4rnymg6n75yxccrz34fmzizjrwrfg54-gensio-ratelimit-test/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gensio
ser2net

Maintainer pings
cc @Emantor for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for gensio is: "General Stream I/O"
meta.homepage for gensio is: "https://sourceforge.net/projects/ser2net/"
meta.changelog for gensio is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.5.4 with grep in /nix/store/m9gx24bf5vrfdymcfww3k6lj8r2mvkv3-gensio-2.5.4
found 2.5.4 in filename of file in /nix/store/m9gx24bf5vrfdymcfww3k6lj8r2mvkv3-gensio-2.5.4

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gensio
ser2net

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/m9gx24bf5vrfdymcfww3k6lj8r2mvkv3-gensio-2.5.4 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gensio https://github.com/r-ryantm/nixpkgs/archive/e5bb54b3cd9e4794b130a1f7d866dcb032932099.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/m9gx24bf5vrfdymcfww3k6lj8r2mvkv3-gensio-2.5.4
ls -la /nix/store/m9gx24bf5vrfdymcfww3k6lj8r2mvkv3-gensio-2.5.4/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gensio
ser2net

Maintainer pings
cc @Emantor for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for gensio is: "General Stream I/O"
meta.homepage for gensio is: "https://sourceforge.net/projects/ser2net/"
meta.changelog for gensio is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.5.5 with grep in /nix/store/9h8q097pvdwhrh5swlxlq498m1aakqzb-gensio-2.5.5
found 2.5.5 in filename of file in /nix/store/9h8q097pvdwhrh5swlxlq498m1aakqzb-gensio-2.5.5

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gensio
ser2net

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/9h8q097pvdwhrh5swlxlq498m1aakqzb-gensio-2.5.5 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gensio https://github.com/r-ryantm/nixpkgs/archive/32976e0eabce085fe4cbb018728348bf2864b697.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/9h8q097pvdwhrh5swlxlq498m1aakqzb-gensio-2.5.5
ls -la /nix/store/9h8q097pvdwhrh5swlxlq498m1aakqzb-gensio-2.5.5/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gensio
ser2net

Maintainer pings
cc @Emantor for testing.

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

2 packages built:

gensio
ser2net


services.networks Additional property flink-nessie-iceberg-net is not allowed

The networks section needs to be defined at the root level.


Generates unreadble .csv files for scene detection

Using the command "scenedetect -i goldeneye.mp4 -o scenes_list.csv -d content -si -df 4"
generates unreadable .csv files.

I was wondering about the same thing. There's a typo in the tutorial. It shoud be ”-co" for csv files and "-o" for mkv files.

See issue  #29 for the same concern and response

There is another issue with the split that is done with the use of mkvmerge --split. The timecodes supplied are not used at all and can be verified from (https://github.com/mbunkus/mkvtoolnix/wiki/Splitting-imprecise ).


Parameterize truncation_seq_length?

Thanks for providing such a great tool for a community! I pulled the latest repo and noticed that docking would fail on larger structures. I then traced it to this one line of code. Would it be possible to parameterize truncation_seq_length? The error message was also a bit confusing: LM embeddings for complex AF-P08518-F1 did not have the right length for the protein. Skipping AF-P08518-F1. Thanks!

Seconding this! The specified truncation_seq_length in the README for the PDBBind dataset resulted only ~1% of uncorrupted data points.

Removing the truncation_seq_length limit entirely resulted in the cache_torsion for training being able to successfully process about ~50% of the data points. (Had to rerun the embedding process, which took a surprisingly long time with no truncation. It generated a 42GB esm2_3billion_embeddings.pt instead of the original file with the README's truncation_seq_length 10GB esm2_3billion_embeddings.pt).


Changes required to accommodate new Employee Mappings table

Pylint will fail because fyle accounting mappings isn't released yet


Responsive grid layout doesn't respect layouts prop

I'm trying to use react-grid-layout and save / load from localstorage, but in my case the some of the items in the layouts are dynamic and are generated from a prop "categories". It seems like the layouts that are returned by onLayoutChange do not correspond to the layouts i have as state. Here is the code:
import {useEffect, useState, useMemo} from 'react'
import {useData} from '/lib/effects.js'
import {ErrorC, Layout} from '/components/common.js'
import {Loading} from "/components/Loading.js";
import user from '/lib/user.js'
import { Responsive, WidthProvider } from 'react-grid-layout'
import { Card, Col, Row } from 'react-bootstrap'
import Image from 'next/image'

const ResponsiveGridLayout = WidthProvider(Responsive);

function getFromLS(defaultValue) {
  let ret = defaultValue;

  if (typeof window === 'undefined')
    return ret;

  try {
    let val = JSON.parse(localStorage.getItem("homeLayouts"));
    if (val) {
        console.log("getFromLS", val);
      ret = val;
    }
  } catch (e) {
  }

  // console.log('getFromLS', defaultValue, ret);

  return ret;
}

function ErrorCard(props) {
    const { error } = props;

    return (
        <Card className="bg-danger text-white fh">
            <Card.Body className="d-flex align-items-center justify-content-center">
                { error.message }
            </Card.Body>
        </Card>
    );
}

function NumberCard(props) {
  const { className, number = "-", label } = props;

  return (
    <Card className={`${className} text-white text-center fh`}>
      <Card.Body className="d-flex align-items-center justify-content-center">

{number}

{label}

      </Card.Body>
    </Card>
  );
}

function ProvidersNumberCard(props) {
  const { data, error } = useData('/api/getProvidersN');

  // if (error)
  //   return <ErrorCard error={error} />;

  if (error || !data)
    return <NumberCard className="bg-primary" label="Data Providers" />;

  const { providersN } = data;

  return <NumberCard className="bg-primary" number={providersN} label="Data Providers" />
}

function OfferingsNumberCard(props) {
  const { data, error } = useData('/api/getOfferingsN');

  // if (error)
  //   return <ErrorCard error={error} />;

  if (error || !data)
    return <NumberCard className="bg-secondary" label="Offerings Available" />;

  const { offeringsN } = data;

  return <NumberCard className="bg-secondary" number={offeringsN} label="Offerings Available" />;
}

function CategoryCardPure(props) {
  const { name, number = '-' } = props;

  return (
    <Card className="fh">
        <Card.Body className="d-flex align-items-center justify-content-between">
            { name }
            { number }
        </Card.Body>
    </Card>
  );
}

function CategoryCard(props) {
  const { name } = props;
  const { data, error } = useData(`/api/getCategoryOfferingsN?category=${name}`);

  // if (error)
  //   return <ErrorCard error={error} />;

  if (error || !data)
    return <CategoryCardPure name={name} />;

  const { offeringsN } = data;

  return <CategoryCardPure name={name} number={offeringsN} />;
}

function HomePure(props) {
  const {
    categories = []
  } = props;

  const layoutA = {
    i: 'a', w: 5, h: 4, isResizable: false
  };

  const layoutB = {
    i: 'b', w: 6, h: 2, isResizable: false,
  };

  const layoutC = {
    i: 'c', w: 3, h: 2, isResizable: false,
  };

  const layoutD = {
    i: 'd', w: 3, h: 2, isResizable: false,
  };

  function getCategoriesLayout(y, ncols) {
    let res = [];
    let i, x;

    for (
      i = 0, x = 0;
      i < categories.length;
      i++
    ) {
      res.push({
        i: 'category' + i, w: 2, h: 1, isResizable: false,
        x, y
      });

      x += 2;
      if (x + 2 > ncols) {
        x = 0;
        y ++;
      }
    }

    return res;
  }

  const layouts = useMemo(() => ({
    lg: [
      { ...layoutA, x: 0, y: 0 },
      { ...layoutB, x: 5, y: 0 },
      { ...layoutC, x: 5, y: 2 },
      { ...layoutD, x: 8, y: 2 },
      ...getCategoriesLayout(4, 11),
    ],
    md: [
      { ...layoutA, x: 0, y: 0, w: 4 },
      { ...layoutB, x: 4, y: 0 },
      { ...layoutC, x: 4, y: 2 },
      { ...layoutD, x: 7, y: 2 },
      ...getCategoriesLayout(4, 10),
    ],
    sm: [
      { ...layoutA, x: 0, y: 0, w: 6 },
      { ...layoutB, x: 0, y: 4 },
      { ...layoutC, x: 0, y: 6 },
      { ...layoutD, x: 3, y: 6 },
      ...getCategoriesLayout(8, 6),
    ],
    xs: [
      { ...layoutA, x: 0, y: 0 },
      { ...layoutB, x: 0, y: 4 },
      { ...layoutC, x: 0, y: 6, w: 2 },
      { ...layoutD, x: 2, y: 6, w: 2 },
      ...getCategoriesLayout(8, 4),
    ],
  }), [categories]);;

  // console.log("RENDER", layouts);

  const [ _layouts, setLayouts ] = useState(getFromLS(layouts));

  useEffect(() => {
    // setLayouts(layouts);
    setLayouts(getFromLS(layouts));
  }, [layouts]);

  useEffect(() => {
    localStorage.setItem("homeLayouts", JSON.stringify(_layouts));
  }, [_layouts]);

  console.log("RENDER", layouts, _layouts);

  function onLayoutChange(layout, layouts) {
    setLayouts(layouts);
    console.log("onChange", layouts, categories);
    // if (categories.length)
    //   localStorage.setItem("homeLayouts", JSON.stringify(layouts));
  }

  const categoryEl = categories.map((category, idx) => (

          <CategoryCard name={category.category} />

  ));

  return (<Layout>

      <ResponsiveGridLayout className="layout"
        breakpoints={{lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0}}
        cols={{lg: 11, md: 10, sm: 6, xs: 4, xxs: 3}}
        layouts={_layouts}
        rowHeight={100}
        onLayoutChange={onLayoutChange}
      >
        <Card key="a" className="welcome-card d-flex align-items-center justify-content-center">
          <Image src="/img/Web-ri_sep.png" layout="fill" objectFit="contain" className="p-3" />
        </Card>

        <Card key="b">
          <Card.Body>
            <Row className="py-3">
              <Col>

                  USER

                  { user.name }

              </Col>
              <Col>

                  COMPANY

                  { user.company }

              </Col>
            </Row>
            <Row className="py-3 bg-light">
              <Col>

                  ROLE

                  Data Provider

              </Col>
              <Col>

                  DATA PROVIDER ID

                  { user.providerId }

              </Col>
            </Row>
          </Card.Body>
        </Card>

          <ProvidersNumberCard />

          <OfferingsNumberCard />

        { categoryEl }
      </ResponsiveGridLayout>

  </Layout>);
}

export default function Home() {
  const { data, error } = useData('/api/');

  if (error)
    return <ErrorC error={error} />;

  if (!data)
    return <HomePure />;

  return <HomePure { ...data } />;
}

Here is a minimal example using codesandbox:
https://codesandbox.io/s/react-bootstrap-demo-forked-52u0r?file=/src/index.js
Can you please help me out? Thanks.

This seems to be a common problem - I have the same issue that there is no way to programmatically alter the layout, also see #1526, #1529.

I'm sorry but it's going to be very difficult to figure out what the bug is with such a long, non-runnable code example. Please reduce this to the minimum form possible and post it on codesandbox so someone can diagnose it, or perhaps you will be able to diagnose it yourself at that size.

I've been working on a codesandbox here, but I suspect that this error is the fault of the user of the library, not the library itself, as the layout prop sometimes works and sometimes doesn't, and because you actually have a functional examplehere.
I'll give an update once I find the time to look through the source for the example.

After some experimentation, I found a way to get my code to work. I can't say for sure that @quirinpa, @mborecki, and @ishak-lm (from the mentioned issues) aren't experiencing a different issue, but I'm guessing we're all having essentially the same problem.
It seems like the issue has something to do with how states work in react, but I'm not knowledgeable enough about that to be able to pinpoint what's going on here. You can see my full testing code here, but the important part is this:
//This is the method I was using before, that doesn't work
let newLayouts = { ...layouts };
newLayouts.desktop.push(newViewDesktop);
newLayouts.mobile.push(newViewMobile);
setLayouts(newLayouts);

//This method does work
setLayouts({
  desktop: [...layouts.desktop, newViewDesktop],
  mobile: [...layouts.mobile, newViewMobile]
});

Conclusion: while there may be room for improvement to make this more intuitive depending on what the problem actually is, my issue has been solved, and I'm guessing the others' issues can be solved on their side as well.

After some experimentation, I found a way to get my code to work. I can't say for sure that @quirinpa, @mborecki, and @ishak-lm (from the mentioned issues) aren't experiencing a different issue, but I'm guessing we're all having essentially the same problem.
It seems like the issue has something to do with how states work in react, but I'm not knowledgeable enough about that to be able to pinpoint what's going on here. You can see my full testing code here, but the important part is this:
//This is the method I was using before, that doesn't work
let newLayouts = { ...layouts };
newLayouts.desktop.push(newViewDesktop);
newLayouts.mobile.push(newViewMobile);
setLayouts(newLayouts);

//This method does work
setLayouts({
  desktop: [...layouts.desktop, newViewDesktop],
  mobile: [...layouts.mobile, newViewMobile]
});

Conclusion: while there may be room for improvement to make this more intuitive depending on what the problem actually is, my issue has been solved, and I'm guessing the others' issues can be solved on their side as well.

Thank you, I was running into a similar issue (layout items would reset to { w: 1, h: 1, static:false}) when providing the layout from an Akita store. Setting a local useState in the component rendering the grid, populating it from the store and then proving the layout from the local state fixed it.

First of all, thanks for your support. I don't think I am changing immutable state in that way @uthbees.. And I've logged the state and it seems correct. It really seems like the layouts prop doesn't update ResponsiveGridLayout's internal state somehow.. I agree @STRML that a minimal working example would be ideal. I will prepare one as soon as I can.

I'm having some trouble getting a minimal example to work. here's what i got so far:
https://codesandbox.io/s/react-bootstrap-demo-forked-52u0r?file=/src/App.js

I've been looking at it for a while now, but I don't see any issue. It all seems to be working perfectly to me. That said, I'm sure you're seeing some sort of problem, so you may want to strip down the example more and/or elaborate on the specific issue more clearly.

I am logging _layouts state which at a certain point has 21 items for each breakpoint. When it does, the following "onChange" log occurs and does not reflect the value previously logged (the value of the state).

i add a new item {w:5, h:5, ...}  to layout,  and  i'm sure the 'layout' props is update, but 'onLayoutChange' callback give a default item {w:1, h: 1, ...}. when i change to use 'data-grid' , it work fine.
here is the sandbox:  'onLayoutChange' callback layout not equal to 'props' layout;
https://codesandbox.io/s/react-bootstrap-demo-forked-czle3e?file=/src/App.js:1382-1388

Thank you @ggbond2077 , I was almost looking for another library. To clarify the prop layouts of the ResponsiveGridLayout must be equal to the current breakpoint and layout. Like so:
ts```
type TGridData = {
layout: Layout[];
cols: number;
breakpoint: string;
};
const [gridData, setGridData] = useState(initialGridData);
<ResponsiveGridLayout layouts={{ [gridData.breakpoint]: gridData.layout }} />


fixed a javascript bug in query-server

@yudhik11  thank you for your PR. But you have not followed the Best practices.

Link your PR to a proper issue.
Add a proper commit message
Squash your commits into one
No proper PR title
No proper PR description

Read through all the links mentioned above please. Especially this.
Duplicate.


Incorrect system time shown on marketing site.

Not that this is a show stopper, but my system time shows:

and the website shows:

AM / PM is incorrect and 12 is displayed as 0.

doh! good catch


Symbolic links suggested as directories for cd command

fix for issues https://github.com/railsware/upterm/issues/1014 & https://github.com/railsware/upterm/issues/1225

@Cygnusfear thanks. Looks like fix problem with ln -s, but mac alias folders still not visible. Will check, but maybe you will find reason.

Ok, problem found
https://stackoverflow.com/questions/33337057/finder-aliases-not-recognized-as-symlinks-on-a-mac-with-node-js


Include MIT license

npm is looking to include licenses in the top 1000 depended-upon projects! :)
http://npm1k.org/

See https://github.com/felixge/node-formidable/issues/412


Add "Vary: Origin" header; do not set "Access-Control-Allow-Origin" h…

…eader when origin is not allowed
Fixes #42, #50

Failing tests are likely due to Travis changes...

This changes many things that are unrelated to your changes and it makes it quite hard to review and understand what you actually changed. The whole event dispatcher removal makes no sense to me, I don't think it's necessary, and the way we had it we avoided triggering the response listener unless necessary, which IMO is better. Could you please open a new PR (or two) with the individual changes you want to do?

The refactoring is necessary because the Vary: Origin header should be set on all (potentially CORS) requests.
In any case, I think injecting the event dispatcher and adding the event listener that way is an anti-pattern.

Well that's your opinion but IMO it's less wasteful to call less listeners.
The main issue though is that changing it all at once makes it really
hard to review so I'd be happy to check things one by one.

Let us first agree on the intended outcomes...
Precondition: The request MUST have matching options (as obtained from the options resolver), which tells us that the path has been configured for CORS. Otherwise we SHOULD skip it, be it during kernel.request or kernel.response.

The Access-Control-Allow-Origin header MUST be set to the value of the Origin header (actually this is not so straightforward according to the spec, but let's forget about that for now...), or * if the applicable allow_origin option is true; unless the origin is not allowed, in which case it MUST not be set. [ Fixes #50 ]
The Vary: Origin header MUST be set in the response; unless the applicable allow_origin option is true, in which case it SHOULD not be set (as it is unnecessary). [ Fixes #42 ]

This has helped me clarify my thoughts and serves as guidance for me to bring this PR in line with the above requirements. Tell me if I've missed anything...

Precondition sounds good except that with the current model, if kernel.response is called we know that we have to act since it is only registered in case the path is under CORS config.

Sounds good to me to skip instead of sending "null", it definitely should do the job. The rest I think is already the correct behavior.
Makes sense as well.

Thanks for laying it down in clear terms :)

@Seldaek I wasn't talking about implementation. The precondition is for requirements 1 and 2 so that I don't have to repeat myself :stuck_out_tongue:

with the current model, if kernel.response is called we know that we have to act since it is only registered in case the path is under CORS config.

Are you sure? That assumption is incorrect because we still provide the defaults even when the path doesn't match: https://github.com/nelmio/NelmioCorsBundle/blob/de48ff53f478fdfca308307a5cf25ea56928e7a7/Options/ConfigProvider.php#L53

You are right about the defaults I think, I just hope it doesn't create a BC issue where if people had no paths configured it would work before but not anymore if we remove that return $this->defaults; you linked.
So if we remove that, the kernel.request handler would return early, and the framework would probably throw a 405 because OPTIONS is not an allowed method, unless people did not configure the required request methods for a route in which case the route will be executed which I think is pretty bad as that could allow CORS-execution of a resource even without having access to it. I think in case there are no $options returned we should check if the method is OPTIONS and if so just return a 400 or 405 response straight away.

There are further requirements regarding the pre-flight request that I left out...
I've been trying to figure out what's so special about them, but this comment seems to be spot on:

Preflight requests are designed to be compatible with regular OPTIONS requests. Just respond to all OPTIONS requests in the same way.
http://stackoverflow.com/questions/32331737/how-can-i-identify-a-cors-preflight-request#comment52538208_32331737

If we follow that line of thought, we should refer to RFC7231 on the OPTIONS method, which suggests that the response might include the Allow header. But perhaps what this bundle needs to do is just respect the response set by a controller or other listeners, and only modify it to add the appropriate CORS-related headers. In case no response has been generated, we should generate one.

Routes can be dynamic, so we can't just inject OPTIONS as allowed method via a compiler pass. Hmm...

I'd rather keep this simple really, either we ignore OPTIONS that don't match this bundle's URL, or we treat them all as invalid and return early to protect the users (with the side effect that users can't write controllers accepting OPTIONS anymore, but is this really a problem I don't know).

we treat them all as invalid and return early to protect the users (with the side effect that users can't write controllers accepting OPTIONS anymore

Not a problem since we should be able to change CorsListener to a very low priority now.

We can't have a lower prio than the router AFAIK, but maybe this isn't true anymore with latest symfony

Closing as this does more changes than I have time to review right now.. https://github.com/nelmio/NelmioCorsBundle/pull/67 and allows you to fix the cache/vary use case at least.


Fix regression of drag-n-drop between different webviews

The regression occured because of recent changes in the chromium code (most likely related to out-of-process iframes).

@brenca I tried out this build in Electron and didn't see the issue fixed, I think the build didn't apply this patch since it was originally at the root of the repo instead of the patches/ folder.
I've moved it into that directory and rebased, will try verifying again once the builds complete.

@kevinsawicki Oh dang, I forgot to move that before submitting the PR, sorry for that. Another reason for me not to work at night, I guess. :D

@brenca thanks for investigating and fixing this, verified it with the test app from https://github.com/electron/electron/issues/8667


Change kiam-server 443 port name

kiam-server port name changed from commit https://github.com/uswitch/kiam/commit/ceb88e190bb9552f76a491dad41fcb5d0ba855b9
This PR is to reflect this change in the template

/assign @danielfm

Codecov Report

Merging #1690 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #1690   +/-   ##
======================================
  Coverage    25.4%   25.4%
======================================
  Files          98      98
  Lines        5065    5065
======================================
  Hits         1287    1287
  Misses       3635    3635
  Partials      143     143

Continue to review full report at Codecov.

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

/assign @dominicgunn

Verified this fixes the issue. Thank you @cebernardi.
/lgtm

/approve


Add depth model from MiDas for getting depth tensor to create 3D animations

Add functionality for calculation of depth tensors as seen here.
https://github.com/deforum/stable-diffusion/blob/main/helpers/depth.py
also Affine geometric transformation functions(translations, rotations, scaling)
would be a cool addition and project.

Credit to Deforum community - Usage displayed here.
https://colab.research.google.com/github/deforum/stable-diffusion/blob/main/Deforum_Stable_Diffusion.ipynb
video explanation:
https://www.youtube.com/watch?v=F1bk9OXOmow
would be cool with textual inversion.

I am trying out deforum. Will take a look at this.

@0x1355  Hi! potentially we can start with a 2d transformation, like perpetual outpainting in the y direction.

I wonder how much these transformations will effect the quality of the interpolation videos, though? I don't really know what the difference is between what deforum is doing for frame interpolation vs what we are doing here. I am more of a fan of the interpolations happening here, as they look "cleaner + smoother" to me (but I'm probably biased😅)
If we were to add something like this, would it be doing something different for the community than what deforum has already done?

You're right they may not be as clean as they are now at first. from what I gathered that part of the deform code for the 3d transformation came from the disco diffusion library  and https://twitter.com/gandamu_ml as cited here.
I thought it would be good to rewrite some of the ideas in a more explicit fashion, like in a pipeline as It took me a long time to understand what was going on in that notebook.  But a lot of the ideas are cool and could be expanded on.  Also, a python package format would be good for modularity and redundancy sake and maybe we get lucky and improve or learn something new :).

Back from deforum land. Will put my thoughts in words tomorrow.

TL;DR
Low impact. High effort.
Personally I would prioritize for something else for now.
** Low impact**
deforum has 2D, 3D, video_input, and interpolation animation modes. In comparison, sd-videos only does interpolation at the moment - but the implementation is better. See this example:
https://user-images.githubusercontent.com/4979897/193021075-3299fc7d-e7d3-4db8-a993-077f944c0936.mov
Adding 3D animation, at least if we do it the same way as deforum, will result in a 3D mode that is, at best, as good as deforum. This doesn't add much value to sd-videos users. They can just use deforum for that.
** High effort **
What if we do it differently? Possible, but not easy.
deforum 2D/3D animation mode does the following:

Render a key frame
Transform the frame according to animation movement settings
Use transformed frame as initial image for the next key frame, with adjusted number of steps
Create tween frames by blending the two key frames (NOT interpolating)
Repeat

Repeated initial image and blending help with coherence. But the flip side is that longer and slower movement videos tend to degrading into artifacts like lines and patterns, like at the end of this video:
https://user-images.githubusercontent.com/4979897/193010083-9cc8af48-a950-4906-8c2d-ff2f1c5dc91f.mp4
This issue has been on their radar for a while, but they haven't been able to find a better solution yet. This suggests high effort.
** Prioritize for something else **
I use sd-videos to make longer and slower videos. The two most common issues I see are:

Flickering
Inconsistent pace of interpolation: little change for a while, then suddenly a lot going on

And features that are missing in both, like different interpolation steps between key frames instead of the same for all.
Personally I prefer to work on things like the above, where we can add more value. It doesn't mean I don't like or want to work on a 3D mode. Just a lower priority for me now.

Thank you so much yet again @0x1355 for your comprehensive deep dive into another issue here. I'm going to mark this as low priority/not going to solve for now.


Able to access options set by global_option() outside of the command block

Sometime, it's useful to be able to access options that at set in the global_option() be accessible outside of the command block so that I can do initialization of codes that are global to all sub commands.  For example
global_option('-p', '--plan_id PLAN_ID_OR_NAME', 'specify the plan name or plan id')
command :rename do |c|
...
c.action do |arg, options|
...
I want to check the option plan_id outside of the c.action block for the various commands that this global_option applies to

I am thinking that a separate initialization block could be defined by user. And if that block is present, then it should be executed before the block of the command is called. Would such modification to commander be possible?

@pruan-rht Can you put together a code sample for how you would want to use the global option? I'm not sure why you need to access the option outside of the command block.
@akostadinov your suggestion seems to address a different issue; and I'm not really sure what use case that helps with. Again, a code sample of intended usage would be great for discussion.

Also, I had some suggestions for a similar problem on this issue: https://github.com/tj/commander/issues/81
Please take a look and let me know if that addresses your use case or not.

@ggilder, thanks for getting back so fast.  Unfortunately, your suggestioin on #81 does not address the issue.

Sorry to hear that. If you can provide a code sample to show what you'd like to have, I'm sure we can figure something out.

@ggilder, below is an example.  Without being able to access the global_option outside of the sub commands, I would need to add the line 'update_plan_id(options) if options.plan_id' to each of the supported commands.
def run
....
global_option('-p', '--plan_id PLAN_ID_OR_NAME', 'specify the plan name or plan id')
  default_command :add
  command :add do |c|
      ...
    c.action do |args, options|
      ...
      update_plan_id(options) if options.plan_id
      ...
      res = @tcms.add_testcase_tags(case_ids, tags)
    end
  end

  command :remove do |c|
     ...
    c.action do |arg, options|
      ...
      update_plan_id(options) if options.plan_id
      ...
      res = @tcms.remove_testcase_tags(case_ids, tags)
    end
  end

  command :rename do |c|
     ...
      update_plan_id(options) if options.plan_id
     ...
      res = @tcms.add_testcase_tags(case_ids, options.new_tag)
      raise "Add tag operation failed for cases #{casd_ids}" unless res.nil?
      res = @tcms.remove_testcase_tags(case_ids, options.old_tag)
      ...
    end
  end
  run!

Thanks, I think this and @akostadinov 's comments on #81 have clarified the use case. In your case, though, could you just use the existing facility to provide a block for a global option? I'm wondering if something like this would work:
def run
  # ...
  global_option('-p', '--plan_id PLAN_ID_OR_NAME', 'specify the plan name or plan id') do |plan_id|
    update_plan_id(plan_id)
  end
  # commands etc.
end

That wouldn't work, however, if update_plan_id needs other global options.

@ggilder, you are correct, that will work for my particular case fortunately since the update_plan method doesn't need other global_options.  Thank you for the pointer...I think this would be a good example to put into the README/example section to cut down the noise to you.  Anyway, I still think it would be good to have a way to access the global_options for the other use case.

This issue was moved to commander-rb/commander#7


I use winning icons but I want to make them animated

Describe your problem here.
I saw many scripts for animated icons but since I use 3 icons (neutral,losing and winning) I wanted to ask if someone can help me
(Source or lua)
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
I was updating to the newer version so yeah

just copy and paste the code of the neutral/losing icons then edit it to the winning icons thing


Updates from rspec-dev (2018-12-21)

These are some updates, generated from rspec-dev's rake tasks.

Changes would have no affect to RSpec-Rails


x/tools/gopls: mismatch "uml" package for the "models" package and mistakenly reports an error

What version of Go are you using (go version)?

$ go version
go version go1.17.1 darwin/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/thomaspeugeot/Library/Caches/go-build"
GOENV="/Users/thomaspeugeot/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/thomaspeugeot/go/pkg/mod"
GONOPROXY="github.com/thomaspeugeot,github.com/fullstack-lang"
GONOSUMDB="github.com/thomaspeugeot,github.com/fullstack-lang"
GOOS="darwin"
GOPATH="/Users/thomaspeugeot/go"
GOPRIVATE="github.com/thomaspeugeot,github.com/fullstack-lang"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.17.1"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/thomaspeugeot/go/src/github.com/fullstack-lang/laundromat/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/_r/bxjvdzc17mb6p56qc7nms1r80000gn/T/go-build87726630=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?
thomaspeugeot@MacBook-Pro-de-Thomas ng % cd /tmp
thomaspeugeot@MacBook-Pro-de-Thomas /tmp % git clone https://github.com/fullstack-lang/laundromat
Cloning into 'laundromat'...
remote: Enumerating objects: 435, done.
remote: Counting objects: 100% (435/435), done.
remote: Compressing objects: 100% (225/225), done.
remote: Total 435 (delta 247), reused 378 (delta 190), pack-reused 0
Receiving objects: 100% (435/435), 992.00 KiB | 1.04 MiB/s, done.
Resolving deltas: 100% (247/247), done.
thomaspeugeot@MacBook-Pro-de-Thomas /tmp % cd laundromat
thomaspeugeot@MacBook-Pro-de-Thomas laundromat % code .

What did you expect to see?
A vscode screen with 0 problems reported
What did you see instead?
2 problems reported in files
go/diagrams/states_Machine.go
go/diagrams/states_Washer.go

I believe the error reported is correct (go build also fails).
Did you want to use UmlState ?

@seankhliao , Sorry, yes, it was UmlState. I apologize for not checking this before. It happens this code is later compiled by go/types without issues, therefore, I thought the problem was with gopls, not go/types.  I close the issue.


Nightly integration tests on Travis and Security Group Changes.

This adds changes to the Security Groups rules set on kube creation (AWS). Also, this adds a single line to keep integration tests from running during every single PR or push. They'll only run nightly during cron jobs.

Coverage decreased (-0.3%) to 35.109% when pulling 86ad28b7c185b7e4f23d5a608e4543884261b305 on TheKLARKEN:clarke into f4943376c9ec661e317f691bc07cc0c2e2b5615a on supergiant:master.

LGTM

Didn't realize my commits were automatically added to this PR. 😅 Things should be solid now!

@TheKLARKEN tests are failing. Can you please rebase and fix them?

This is killing me. unable to open database file is produced by returning SQLITE_CANTOPEN, and that exact error is returned in almost 30 different places under different circumstances, and I can't tell at all which one is happening and, therefore, why. It's for an old integration test Ben wrote, so I can't ask him for help, either. 😕
--- FAIL: TestCloudAccountsList (0.00s)
panic: unable to open database file [recovered]
	panic: unable to open database file

goroutine 40 [running]:
testing.tRunner.func1(0xc4205460f0)
	/usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:742 +0x29d
panic(0x508daa0, 0xc420148c20)
	/usr/local/Cellar/go/1.10.2/libexec/src/runtime/panic.go:502 +0x229
github.com/supergiant/supergiant/test/api.wipeAndInitialize(0xc4205a4600)
	/Users/clarkevennerbeck/go/src/github.com/supergiant/supergiant/test/api/testutils_test.go:51 +0x66
github.com/supergiant/supergiant/test/api.newTestServer(0x5af7317)
	/Users/clarkevennerbeck/go/src/github.com/supergiant/supergiant/test/api/testutils_test.go:19 +0xe6
github.com/supergiant/supergiant/test/api.TestCloudAccountsList(0xc4205460f0)
	/Users/clarkevennerbeck/go/src/github.com/supergiant/supergiant/test/api/cloud_accounts_test.go:15 +0x26
testing.tRunner(0xc4205460f0, 0x521eb20)
	/usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:777 +0xd0
created by testing.(*T).Run
	/usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:824 +0x2e0
FAIL	github.com/supergiant/supergiant/test/api	0.054s
Error: Tests failed.

It worked! I completely forgot that I moved a folder, and that's what broke it! Thanks for your help, everyone!


Banc Sabadell

This is working Banc Sabadell integration.

integrates rspec and specs out the sabadell integration
adds abstract http client, that should be able to use different drivers on different platforms
sabadell integration, that does not inherit from bank
using fake_bsmobil to implement fake api for testing
travis ci

I'm not sure if it is ready, there is plenty things I'd like to do. Add more docs, document it a bit, etc.
I noticed few tiny things like year in transactions is wrong, but have no power to fix that now.
The code requires Ruby 2.2. Which is probably not cool for rbx/jruby/rubymotion support, what MRI version are you targeting?

Hello @mikz,
First of all, sorry for not reviewing this earlier and thank you for your awesome contribution. It's clear you put a lot of time into this.
I've reviewed the PR and I would like to suggest to split this in different PRs after we discuss each change. There are 53 files modified and the whole structure of the gem has been modified, so I think we would do better if we discuss each big change individually. Here are my thoughts regarding each of them:

Splitting into multiple gems (under the same repo)
This is probably the biggest change you made. I'm a bit confused since is the first time I see an approach like this.
The main problem with the single gem approach is the dependencies. For instance ING requires rmagick, which often is painful to install, so if you just want to use BBVA you still need to install the rmagick dependency. On your PR I've seen that the new bank_scrap-core has all the other gems as dependencies, so I guess this doesn't solve this problem, does it?
Could you elaborate on what are the benefits of this multi-gem approach?
Abstract HTTP client
I really like this one. From my experience with BBVA I had to try 4 different clients until I found one (mechanize) that allowed me to replicate the exact network traffic that the API was expecting. Other banks could have similar issues and maybe mechanize is not the best client for them. Therefore I think this is a great idea.
However as the main gem has the bank's gem as dependencies, and those banks as the mechanize gem as dependency, right now if I install the main bank_scrap gem I will be forced to install the bank-_scrap-mechanize and mechanize gems. How are you planning to make this really optional?
Rspec and testing
This was something we were really needing, so kudos for it. I still need to checkout if I can replicate what you did with fake_bsmobil with BBVA.

Finally as this is a big change to the project I think we should try to come up with the biggest consensus possible between all the contributors. I'm gonna ping those who appear as contributors in the repo but any opinion is welcome: @ismaGNU @raulmarcosl @ferblape @javierarce @hopsor.
Thank you!

Thanks very much for the feedback. The intention was to spark the discussion about substantial changes that will be required to make it multi platform.
I'm on vacation now so I'll reply in a week or so. Cheers.
Sent from my iPhone

On 21. 6. 2015, at 16:25, Javier Cuevas<EMAIL_ADDRESS>wrote:
Hello @mikz,
First of all, sorry for not reviewing this earlier and thank you for your awesome contribution. It's clear you put a lot of time into this.
I've reviewed the PR and I would like to suggest to split this in different PRs after we discuss each change. There are 53 files modified and the whole structure of the gem has been modified, so I think we would do better if we discuss each big change individually. Here are my thoughts regarding each of them:
Splitting into multiple gems (under the same repo)
This is probably the biggest change you made. I'm a bit confused since is the first time I see an approach like this.
The main problem with the single gem approach is the dependencies. For instance ING requires rmagick, which often is painful to install, so if you just want to use BBVA you still need to install the rmagick dependency. On your PR I've seen that the new bank_scrap-core has all the other gems as dependencies, so I guess this doesn't solve this problem, does it?
Could you elaborate on what are the benefits of this multi-gem approach?
Abstract HTTP client
I really like this one. From my experience with BBVA I had to try 4 different clients until I found one (mechanize) that allowed me to replicate the exact network traffic that the API was expecting. Other banks could have similar issues and maybe mechanize is not the best client for them. Therefore I think this is a great idea.
However as the main gem has the bank's gem as dependencies, and those banks as the mechanize gem as dependency, right now if I install the main bank_scrap gem I will be forced to install the bank-_scrap-mechanize and mechanize gems. How are you planning to make this really optional?
Rspec and testing
This was something we were really needing, so kudos for it. I still need to checkout if I can replicate what you did with fake_bsmobil with BBVA.
Finally as this is a big change to the project I think we should try to come up with the biggest consensus possible between all the contributors. I'm gonna ping those who appear as contributors in the repo but any opinion is welcome: @ismaGNU @raulmarcosl @ferblape @javierarce @hopsor.
Thank you!
—
Reply to this email directly or view it on GitHub.

@javiercr I agree with you @mikz did a great job. Thanks for the effort. I'd go also for separated gems, makes more sense to keep dependencies and code simple and issues can be split for each bank.

@javiercr thanks very much for taking the time.
The commits in the PR make sense on its own. The biggest one is just a kitchen sink with all the integrations split. It is there just to show how it would look like. The Banc Sabadell integration works without it. It definitely makes sense to tackle each of the issues separately so I'll create different PR for the split later and we can continue discussion there.

Splitting into multiple gems (under the same repo)
Agree that the dependencies are the issue. That is the main reason.
I want to use bank_scrap in RubyMotion and there is no RMagick or other gems like mechanize.
BankScrap::Core
bank_scrap-core has no dependencies, see bank_scrap-core.gemspec. Integrations depend on bank_scrap-core as it implements some basic classes. The README says:

Bank Scrap Core is zero dependency core that providers models and basic structures for building bank integrations.

Dependencies
I imagine BankScrap aims to be a library. Not a CLI utility. Therefore it should aim to be as much dependency abstract as it can be and if possible do not have some dependencies at all.
The core aims to be totally dependency free so it can be installed on any platform.
Every integration declares just own dependencies. See bank_scrap-bankinter.gemspec for example. It depends on execjs and nokogiri. So it does solve problem of RMagick.
That might lead to some conflicts between integrations (like one locking too tight to a version of a dependency), but that can be solved by loading them all in tests (so they won't load because of bundler), and defining some constants like NOKOGIRI_DEPENDENCY in shared Gem::Specification called BankScrap::Specification.
Which is there to have common base for all the integrations, like license, url, ruby version, rspec, etc.
It is not the best name, but it is just a prototype.
Plugins / Integrations
I changed the #find_bank_class_for(bank_name) to not only rely on autoload, but require the dependency first.
This can be further optimised by using Gem::find_files(glob) like Rubygems plugins

As of RubyGems 1.3.2, RubyGems will load plugins installed in gems or $LOAD_PATH. Plugins must be named ‘rubygems_plugin’ (.rb, .so, etc) and placed at the root of your gem’s #require_path. Plugins are discovered via Gem::find_files then loaded. Take care when implementing a plugin as your plugin file may be loaded multiple times if multiple versions of your gem are installed.

So the CLI can for example print all the available integrations.
Future
In the future I'd imagine that there could be several abstract XML parsers, JS executors, HTTP clients and it would be on the platform to decide which to choose. For example good luck using Nokogiri on Rubinius.
Also, with the gem approach there can be for example 'base' ING integration and then other two that extend it with some platform specific way.
Abstract HTTP client
I needed the Abstract HTTP Client for RubyMotion. And I really did not need whole mechanize. Actually it was more work to use mechanize than to use plain Net::HTTP.
Some integrations were using mechanize, so I kept that by just wrapping it in bank_scrap-mechanize and declaring that as a dependency in each integration. It does not follow the API of abstract http client. Not sure if it can, but that is really not needed now.
What should installing bank_scrap do is question that I can't answer. Should it be the CLI, should it include some integrations, should it be just the core?
Right now, I was trying to keep the layout where installing bank_scrap gives you this bag of tools and you can use it all, but you can also cherry pick just individual integrations as libraries.
I'd love to make mechanize optional, but that would require changing the integrations, which I did not want to do without test coverage. But when it would be optional, why would you need it at all? It uses Net::HTTP underneath.  As long as integrations will depend on mechanize, it can't be made optional.
But you can just install integrations that do not require mechanize and use them without mechanize (that is my plan actually how to use it on RubyMotion).
Rspec and testing
Using the fake server was awesome experience. Writing the server took some time, but then the integration took just a bit.
We could extract some foundation from fake_bsmobil and use it for other integrations.

This PR was meant to include Banc Sabadell integration and show splitting of the gems to spark some discussion. I'm glad that it finally happened.
I'll take out the gem splitting and just include the Banc Sabadell so it can be merged soon and issue another PR for the split. There we can discuss how to do it (one by one, all at once, what makes sense, ...).
Wdyt?

@javiercr rebased this and moved the split to #30
This now contains just the Banc Sabadell integration.


RemoteMediator initialize() Cannot access database on the main thread since it may potentially lock the UI for a long period of time

In the example shown on Paging3 on Paging 3 Library, database is directly accessed in initialize method to start with SKIP or INITIAL refresh. However, if I try accessing the database like that in my code, it throws "Cannot access database on the main thread since it may potentially lock the UI for a long period of time."
I had to modify the code like below to do the same thing:
`
override suspend fun initialize(): InitializeAction {
return coroutineScope {
withContext(Dispatchers.IO) {
val launchRefresh = database.news().newsItems().isNullOrEmpty()
            if (launchRefresh) InitializeAction.LAUNCH_INITIAL_REFRESH
            else InitializeAction.SKIP_INITIAL_REFRESH
        }
    }

}
`
Paging Library: 3.0.0-alpha11
compileSdkVersion: 30
kotlinVersion: 1.3.61
Android Studio: 4.1.2

@shivamsriva31093 I am facing same issue Did you found the answer?


Global activate loses assets files when referencing Git repo

We have a Dart package that includes an asset file that we need to load at runtime.
We tried globally activating our package from the main branch of our Git repository. When we tried to run our package, globally, it couldn't find our asset file. When we inspected the files that Dart created after globally activating the package, our asset file wasn't in the directory. The global activation code only appears to contain:
/bin/[some_snapshot]
/incremental (which is empty)
pubspec.lock

We tried packaging our file in the /lib directory of our Dart package, and also at the root of our Dart package. Global activation didn't copy the file from either location.

CC @slightfoot


OTR: problems with GO:0031555 ! transcriptional attenuation and  GO:0031564 ! transcription antitermination

Definition problem with GO:0031555 ! transcriptional attenuation

current definition: "Regulation of transcription through variation in where transcription termination occurs"
Attenuation involves regulation of genes downstream of a terminator whose formation is controlled by alternative secondary structures. Sometimes one of these is called the antiterminator structure, but that should not be equated to the biological process of antitermination. The paradigm is the trp operon of E. coli, where the alternative RNA structures are controlled by translational pauses, but other mechanisms can be used to determine the RNA fold. Some examples are riboswitches, the B. subtilis TRAP system, and the T-box system (also in B. subtilis) that controls expression of tRNA synthetases. Attenuation is not controlling where termination occurs, it is controlling whether termination occurs at the attenuator.
Following Yanofsky (1981) Nature, with slight modification I would suggest that attenuation as a process be defined as

the regulation of gene expression by the selective reduction of the transcription of transcription of [DNA distal to a specific transcriptional terminator]

Where I have brackets, Yanofsky wrote

distal portions of an operon

The problem with my definition is that it would apply to termination reduces distal expression whether or not that termination was subject to regulation. But it would help with item #4 below.

Definition problem with GO:0031564 ! transcription antitermination
current definition: "Regulation of transcription by a mechanism that allows RNA polymerase to continue transcription beyond a termination site." [ISBN:0198577788, PMID:12456320]

Antitermination as exemplified by the N and Q dependent systems in phage lambda is processive. Once the antitermination complex forms, RNA polymerase becomes resistant to multiple terminators. In E. coli this affects both rho-dependent and rho-independent termination, while attenuators are rho-independent.

GO:0031564 ! transcription antitermination should not be a child of GO:0031555 ! transcriptional attenuation.

I would make GO:0031564 ! transcription antitermination a sibling of attenuation, not a child. Yanofsky writes of attenuation occurring in lambda, but I think that's in the context of the terminators, not the antitermination.
Note that there may be at least one more form of regulation of termination. There are phage proteins that seem to act more globally by antagonizing rho. These would be more global than attenuators, but not processive. However the data on these is probably too ambiguous to create a GO term at this point.

Annotation to GO:0031555 ! transcriptional attenuation

a) cis vs trans:
The existing annotations to this term include things like the trp leader peptide, which strike me as problematic. Whether termination occurs at trp is determined by the rate of translation through trpL, but is that a function of trpL? This seems different from the function of a trans-acting protein like TRAP that stabilizes one of the alternative RNA structures. As we start annotating RNAs, are attenuators and riboswitches in the domain of GO or do they belong to SO?
b) increased or decreased attenuation?
Annotation to GO:0031555 ! transcriptional attenuation does not capture whether the product being annotated increases or decreases termination at the attenuator. It seems that child terms are needed to capture this, but I think how to do this depends on whether GO adopts my proposed definition. It also raises the question of whether the attenuation term itself could be used for annotation or if only child terms should be used.
If I have time I will try to find the papers I used to use when I taught this stuff.

Hi Jim,
Thank you for your very detailed message. This will take me a little while to process and implement, so please let me know if there is any urgency. Papers used for teaching would be a great help indeed. It was also suggested I pinged @ukemi as transcription specialist :)
Thanks,
Melanie

Hi Jim,
I have been looking at those - mostly trying to catch up on background reading, as I haven't thought about attenuation since college days :) I asked other GO editors but no one is an expert in this area either.
I am hoping we can deal with those one at a time, and you can perhaps provide more details/pointers to help me process this ticket?
Looking at

Definition problem with GO:0031564 ! transcription antitermination
current definition: "Regulation of transcription by a mechanism that allows RNA polymerase to continue transcription beyond a termination site." [ISBN:0198577788, PMID:12456320]

Antitermination as exemplified by the N and Q dependent systems in phage lambda is processive. Once the antitermination complex forms, RNA polymerase becomes resistant to multiple terminators. In E. coli this affects both rho-dependent and rho-independent termination, while attenuators are rho-independent.

I don't understand the issue with the definition. You explain that once the complex is formed, the RNApol becomes resistant to other terminators, so isn't it true that it continues transcription beyond a termination site? Isn't the formation of the anti termination complex a "mechanism" and the global effect is the regulation of transcription?
Cheers,
Melanie

Hi Melanie,
It's been a while since I wrote this. I think the problem is with "a termination site" being too suggestive that it only works at one site.

Hi @jimhu-tamu - trying to move forward on old tickets. If you have specific suggestions on how to address the above could you please help? I'm afraid none of us GO editors have expertise in this field.

@krchristie: do you have any input on this? @ukemi mentioned you were a transcription expert.

Hi,
I haven't thought about this much since the transcription overhaul that @ukemi and I did in 2010, though we did do some work on bacterial transcription then, though I thought these were OK then. However, Jim is clearly much more knowledgable on bacterial transcription than I am.
If Jim needs more specific terms, we should create them, but these the two terms "GO:0031555 transcriptional attenuation" and "GO:0031564 transcription antitermination" seem like they are meant to be very general top level terms. Jim is distinguishing between "antitermination" sites and "attenuator" sites in a way I'm not familiar with. It might be worth checking if those words are always used consistently across all the literature. If not, it might be hard to implement these very specific meanings that Jim is referring to in GO without creating misunderstandings.
For example, looking at the ontology, it seems to me that "GO:0031555 transcriptional attenuation" is currently a process term that is meant to cover a broad range of ways that transcription can be reduced between the initiation site and the distal end of the transcription unit/operon, including "transcriptional attenuation by ribosome" not just the mechanisms of recognizing terminator sites. So, if this use of the word "attenuation" is used in the literature, GO may need to reflect this too.

GO:0031555 transcriptional attenuation
- (BP) GO:0031556 transcriptional attenuation by ribosome
- (BP) GO:0031564 transcription antitermination

Regarding the definition of "transcription antitermination" allowing readthrough of all downstream terminator sites, could that be fixed by just changing the last word from singular "site" to a more inclusive "site(s)".
I also see that there are a couple MF terms, which if I remember correctly were added by the 2010 transcription overhaul, to cover some specific types of antitermination factor activities.

GO:0001073 transcription antitermination factor activity, DNA binding
GO:0001072 transcription antitermination factor activity, RNA binding

Beyond those general comments, I'm not sure I can add much to this discussion.

Thanks @krchristie for the feedback. I did the update to site(s).
@jimhu-tamu: can you please comment on other aspects of this request? I'll otherwise will close the ticket as "Won't fix" by Thursday feb 23rd. Thanks!

Hi Melanie,
Apologies for the very slow replies. I was hoping to set aside some time to dig into the literature. I've been discussing this with Debby and looking at papers today, but it's complicated so I'm going to put my thinking in a Google Doc

Hi @jimhu-tamu - no problem, this is a complex topic which requires time, and I really appreciate you and others going in depth to make sure it is done right. I am trying to address my tickets before the end of the grant (end February), but @ukemi kindly agreed to take over this one if not done by then, so I'll co-assign him now anyway.

@ukemi: could you please review the google doc and below? Your name is associated to many of the original definitions. I'm specifically unsure whether we want to obsolete GO:0031555, transcriptional attenuation or just update it.
TODO:
Updates:

[ ] Obsolete GO:0031555, transcriptional attenuation (or update as per NTR below)
[ ] NTR:Name: transcriptional attenuation
Def: Regulation of gene expression in response to a metabolic signal through control of the formation of a terminator within an attenuator element (SO:0000140) upstream of regulated gene(s)
[ ] Update  GO:0031556 ! transcriptional attenuation by ribosome to
Name: Ribosome-mediated attenuation
Def: Attenuation where formation of alternative RNA secondary structures is regulated by the rate of translation in the attenuator.
Is_a: transcriptional_attenuation
[ ] Update id: GO:0031564

Name: processive transcription antitermination
namespace: biological_process
def: "Regulation of transcription by a mechanism that allows RNA polymerase to continue transcription beyond a termination site(s)."
NTRs for other forms of attenuation  (per Merino and Yanofsky, PMID:15851059):

[ ] Protein-mediated transcription attenuation

Def: Attenuation where formation of alternative RNA secondary structures is regulated by binding of an RNA-binding protein.
Is_a: transcriptional_attenuation
Synonym: transcriptional_antitermination[narrow]

[ ] Aptamer-mediated transcription attenuation

Def: Attenuation where formation of alternative RNA secondary structures is regulated by stabilization of an RNA structure by binding of a ligand by the attenuator RNA.
Is_a: transcriptional_attenuation
Synonym: small-molecule-mediated transcription attenuation

[ ] RNA-mediated transcription attenuation

Def: Attenuation where formation of alternative RNA secondary structures is regulated by RNA-RNA interaction.
Is_a: transcriptional_attenuation

[ ] tRNA-mediated transcription attenuation

Def: Attenuation where formation of alternative RNA secondary structures is regulated by RNA-RNA interaction.
Is_a: RNA-mediated transcriptional_attenuation

[ ] Antisense RNA-mediated transcription attenuation

Def: Attenuation where formation of alternative RNA secondary structures is regulated by RNA-RNA interaction.
Is_a: RNA-mediated transcriptional_attenuation

Talked to @ukemi who mentioned he'd like to use this for the Protege curator course and he will follow-up on this ticket with @krchristie.

See https://en.wikipedia.org/wiki/Attenuator_(genetics) for references

@amandamackie Can you help with this old request - my question is, would these terms be useful?

Transcription information in EcoCyc is curated by Julio's group at UNAM.
I don't have any expertise in the area and am hesitant to comment further. Julio are you able to help?
Amanda
From: pgaudet @.***
Sent: Thursday, 12 January 2023 1:12 AM
To: geneontology/go-ontology @.>
Cc: Amanda Mackie @.>; Mention @.***>
Subject: Re: [geneontology/go-ontology] OTR: problems with GO:0031555 ! transcriptional attenuation and GO:0031564 ! transcription antitermination (#12178)
@amandamackiehttps://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Famandamackie&data=05|01|amanda.mackie%40mq.edu.au|3a7c5ac8bd1f4298a2cb08daf3ddc4ce|82c514c1a7174087be06d40d2070ad52|0|0|638090431065101144|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=S6Rb3gg6xJUICuT6Tm8lbUVLC4xPx8kJYM4qizmAx6I%3D&reserved=0 Can you help with this old request - my question is, would these terms be useful?

Reply to this email directly, view it on GitHubhttps://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgeneontology%2Fgo-ontology%2Fissues%2F12178%23issuecomment-1378811848&data=05|01|amanda.mackie%40mq.edu.au|3a7c5ac8bd1f4298a2cb08daf3ddc4ce|82c514c1a7174087be06d40d2070ad52|0|0|638090431065101144|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=Lf9ameElTUAqOTLy17XjXMcFU2ny025oSfIa0nwLjw4%3D&reserved=0, or unsubscribehttps://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAELYAGTUN7PU5MJMUU434TTWR25RTANCNFSM4BVP3ARQ&data=05|01|amanda.mackie%40mq.edu.au|3a7c5ac8bd1f4298a2cb08daf3ddc4ce|82c514c1a7174087be06d40d2070ad52|0|0|638090431065101144|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=gqpbJSCn8qfpsgvaxJVErc9dbXKLCqeR03dicrA80To%3D&reserved=0.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

Fixed definitions:

[ ] GO:0031555 transcriptional attenuation : "A regulatory mechanism by which bacteria and archae can direct RNA polymerase to prematurely terminate transcription in response to a specific metabolic signal." [PMID:12210530, PMID:15851059, PMID:7007895]
[ ] Changed parent from is_a: GO:0031554 ! regulation of termination of DNA-templated transcription to
+is_a: 'positive regulation of termination of DNA-templated transcription' and
+is_a: GO:0010629 ! negative regulation of gene expression
[ ] GO:0031564  transcription antitermination: Regulation of transcription by a mechanism that allows RNA polymerase to continue transcription beyond termination site(s), thus allowing expression of downstream genes under specific conditions." [ISBN:0198577788, PMID:12456320, PMID:21478900, PMID:30191803]
[ ]  Changed parent from is_a: GO:0031554 ! regulation of termination of DNA-templated transcription
+is_a: GO:0010628 ! positive regulation of gene expression
+is_a: GO:0060567 ! negative regulation of termination of DNA-templated transcription

Thanks, Pascale


using browser back button on :number wildcard

I use the :number wildcard to define my routie:
routie('question/:number', function (number) {
  //some code
});

now if i go for example from my URL #question/7 to #question/9 and press the back button in my browser i go to #question/8, which should of course end up at #question/7 (because i skipped #8). Any way to fix this behavior?

I know this is an old issue, but I'm not able to duplicate on 0.3.2.