[BUG] after delete-settings lost admin user name cant be reused

Describe the bug
lnbits-cli tool resets settings so they are re-read from .env and first_start is shown.
If one wants to use same super admin username, it is impossible cause username is reserved.
To Reproduce
Steps to reproduce the behavior:

Install lnbits and goto first_install. create superuser "lnbits" and password
run poetry run -C /home/setup/lnbits lnbits-cli delete-settings
restart LNbits
goto first_install page and try to create user lnbits
You will get error: Username already in exists. 403 FORBIDDEN
If you have lost superuser UID / username&pwd there's no avail.
Even if you create new superadmin, it cant see old super admin with usermanager. And it can not see users the old superuser created.

Expected behavior
"delete settings" should set superuser name and password so it is possible to first_install to reset username (not "usr") and password.
Screenshots
If needed.
Desktop (please complete the following information):

LNbits version: 0.12.1
Database: sqlite (this template is missings ":" after "Database")

Additional context
(User management is tuff issue to handle.)

you could just set a new username, login into the old one and change it there then again in the new one... but i agree its not ideal.

you could just set a new username, login into the old one and change it there then again in the new one... but i agree its not ideal.

I could - but new superuser cant see old superuser on usermanager. And say I did reset settings cause I lost superuser username / password .. this seems not to work at all. I need to use cli to see superuser "usr".
And even with it I can't reset password cause MyAccount can not be accessed with http://IPaddress and there is no existing link to MyAccount page for legacy usr= "authentication".

Would it be good solution on first_install to be able to recover existing superuser by authenticating with superuser usr id?

Even if you create new superadmin, it cant see old super admin with usermanager. And it can not see users the old superuser created.

This is now possible with the /users console. See https://github.com/lnbits/lnbits/pull/2139
Now the new superuser can

manage the wallets of the old superuser (delete wallet or transfer funds)
delete old superuser (if it has no wallets)
recycle the old superuser (not necessarily a best practice)

Closing now. Please re-open the issue if the new user feature are not sufficient.


Broken Events v2 compatibility

I think this just can`t work:
https://github.com/zendframework/zend-cache/blob/master/src/Storage/Adapter/AbstractAdapter.php#L193
https://github.com/zendframework/zend-eventmanager/blob/release-2.6.2/src/EventManager.php#L57
BTW, I'm not offending, just complaining, with the v3 oncoming this backward compatibility issues got worse directly, into masters. You know I can`t be happy with things like that. Spending time finding BC breaks in the ZF2 instead of doing work for my clients. I really appreciate your work but this is sad for me that the ZF2 is going like this.

Confirm

Hi we encountered the same problem after upgrading Zend-cache from version 2.5.3 to version 2.6.0.

Confirm as well on the version 2.6.0

@bacinsky We are trying very hard to test against both v2 and v3 APIs to ensure things going break; this particular line clearly didn't have a test case covering it. I'll get a fix our shortly, as there is a way to make this work on both versions.
Thanks for the report!

https://github.com/zendframework/zend-cache/issues/72 is a direct consequence of this break.

Those affected by this issue: can you please test the patch from #73? Tests pass against both event manager versions, and I added tests explicitly for the lazy-loading aspect, which should resolve the issue. However, I'd like verification from somebody affected.

Hi @weierophinney and thanks for your reactivity on this, I tested the patch and it seems to work.

Hi @weierophinney, I also tested this patch and worked fine.
Waiting for the merge :)
Thank you!


Watchtower Logs Image Pull

Hi Bradford,
Thanks again for your work on this. I looked into my watchtower logs and saw this:
watchtower      | time="2023-01-26T12:49:53-05:00" level=info msg="Watchtower 1.5.1"
watchtower      | time="2023-01-26T12:49:53-05:00" level=info msg="Using no notifications"
watchtower      | time="2023-01-26T12:49:53-05:00" level=info msg="Checking all containers (except explicitly disabled with label)"
watchtower      | time="2023-01-26T12:49:53-05:00" level=info msg="Scheduling first run: 2023-01-29 03:00:00 -0500 EST"
watchtower      | time="2023-01-26T12:49:53-05:00" level=info msg="Note that the first check will be performed in 62 hours, 10 minutes, 6 seconds"
watchtower      | time="2023-01-29T03:00:09-05:00" level=warning msg="Could not do a head request for \"bitwarden_gcloud_proxy:latest\", falling back to regular pull." container=/proxy image="bitwarden_gcloud_proxy:latest"
watchtower      | time="2023-01-29T03:00:09-05:00" level=warning msg="Reason: registry responded to head request with \"401 Unauthorized\", auth: \"Bearer realm=\\\"https://auth.docker.io/token\\\",service=\\\"registry.docker.io\\\",scope=\\\"repository:library/bitwarden_gcloud_proxy:pull\\\",error=\\\"insufficient_scope\\\"\"" container=/proxy image="bitwarden_gcloud_proxy:latest"
watchtower      | time="2023-01-29T03:00:10-05:00" level=info msg="Unable to update container \"/proxy\": Error response from daemon: pull access denied for bitwarden_gcloud_proxy, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. Proceeding to next."
watchtower      | time="2023-01-29T03:00:10-05:00" level=info msg="Session done" Failed=0 Scanned=6 Updated=0 notify=no

I wasn't able to find any reference to a bitwarden_gcloud_proxy:latest image anywhere in the docker_compose.yml either. Based on the information I can see, it seems like I can ignore this error? Can you confirm?

Can you post your docker-compose? Unless you can confirm that it is the same as what's in the repo master?

Can you post your docker-compose? Unless you can confirm that it is the same as what's in the repo master?

I am using the one on repo's master without changes.

Ah yes, this is due to 837c1fceed76d156cdbdc71cc501d6c5790b94e3. I put in a temporary fix to suppress the warning, but long-term I will probably migrate some of the containers to separate docker images that publish to Docker hub and will have watchtower support.
The discussion here  indicates that the solution isn't straightforward, at least it isn't with the way this project is structured.
I have this as an open request (#49) that I will get around to soon.


Add TagCommand sequence diagram

Address issue #169

Coverage remained the same at 88.976% when pulling 3ae87ce6a6c2fbfa6e2ee6f0f61ca6bc97beba7a on A19Sean:tagcommand-sequence-diagram into d820168594c77cf166c900818edd8f491b64eff4 on CS2103-AY1819S1-W13-1:master.


nvidia-persistenced.service doesn't start automatically on boot.

Hi, I work on AWS P3, Ubuntu 16.04, NVidia driver 410.79. My problem is that the service starts automatically only after some manual intervention / "touch" of the GPU (manual run of 'systemctl start nvidia-persistenced.service' or nvidia-smi). But the same configuration doesn't starts automatically on boot...
NVidia-persistence.service configuration file (placed in (/lib/systemd/system/nvidia-persistenced.service, configured with service enabling  - I.e. relevant link is set from /etc/... to /lib/...) :
[Unit]
Description=NVIDIA Persistence Daemon
Wants=syslog.target
[Service]
Type=forking
Restart=always
ExecStart=/usr/bin/nvidia-persistenced --verbose -u nvidia-persistenced -g nvidia-persistenced
ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced
[Install]
WantedBy=multi-user.target
This is the output after reboot (without any manual intervention):
4:~$ systemctl status nvidia-persistenced.service
● nvidia-persistenced.service - NVIDIA Persistence Daemon
Loaded: loaded (/lib/systemd/system/nvidia-persistenced.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Mar 03 13:47:27 ip-10-10-1-174 systemd[1]: Stopped NVIDIA Persistence Daemon.
After running nvidia-smi from command line - the status is below (service started automatically):
ubuntu@ip-10-10-1-174:~$ nvidia-smi
Sun Mar  3 13:54:34 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  On   | 00000000:00:1E.0 Off |                    0 |
| N/A   39C    P0    36W / 300W |      0MiB / 16130MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
ubuntu@ip-10-10-1-174:~$ systemctl status nvidia-persistenced.service
● nvidia-persistenced.service - NVIDIA Persistence Daemon
Loaded: loaded (/lib/systemd/system/nvidia-persistenced.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-03-03 13:54:34 UTC; 9s ago
Process: 1305 ExecStart=/usr/bin/nvidia-persistenced --verbose -u nvidia-persistenced -g nvidia-persistenced
Main PID: 1307 (nvidia-persiste)
Tasks: 1
Memory: 412.0K
CPU: 3ms
CGroup: /system.slice/nvidia-persistenced.service
└─1307 /usr/bin/nvidia-persistenced --verbose -u nvidia-persistenced -g nvidia-persistenced
Mar 03 13:54:34 ip-10-10-1-174 systemd[1]: Starting NVIDIA Persistence Daemon...
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: Verbose syslog connection opened
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: Now running with user ID 113 and group ID 117
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: Started (1307)
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: device 0000:00:1e.0 - registered
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: device 0000:00:1e.0 - persistence mode enabled.
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: device 0000:00:1e.0 - NUMA memory onlined.
Mar 03 13:54:34 ip-10-10-1-174 nvidia-persistenced[1307]: Local RPC services initialized
Mar 03 13:54:34 ip-10-10-1-174 systemd[1]: Started NVIDIA Persistence Daemon.
My question:
Can I start the service automatically, without any prior manual intervention?

Yes, same thing here. This software seems to be very buggy and reporting to syslog does not help at all. As long as it has not daemonized, it should write diagnostic messages to stderr. That's much easier to check (via systemctl status ...) than the absolute crappy journalctl output, which usually contains not all what is needed and other irrelevant non-sense ... Anyway, here the extracted output:
May 31 05:33:20 kino1 systemd[1]: Starting NVIDIA Persistence Daemon...
May 31 05:33:40 kino1 nvidia-persistenced[19176]: Verbose syslog connection opened
May 31 05:33:40 kino1 nvidia-persistenced[19176]: Directory /var/run/nvidia-persistenced will not be removed on exit
May 31 05:33:40 kino1 nvidia-persistenced[19176]: Started (19176)
May 31 05:33:40 kino1 nvidia-persistenced[19176]: device 0000:3d:00.0 - registered
May 31 05:33:40 kino1 nvidia-persistenced[19175]: Received signal 15
May 31 05:33:40 kino1 nvidia-persistenced[19175]: Shutdown (19176)
May 31 05:33:41 kino1 nvidia-persistenced[19176]: Received signal 15
May 31 05:33:41 kino1 nvidia-persistenced[19176]: PID file unlocked.
May 31 05:33:41 kino1 nvidia-persistenced[19176]: PID file closed.
May 31 05:33:41 kino1 nvidia-persistenced[19176]: Shutdown (19176)

It gives no clue, what happens. Very bad!
FWIW, nvidia-smi output:
Fri May 31 05:43:13 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:3D:00.0 Off |                  N/A |
| 23%   38C    P0    58W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce RTX 208...  Off  | 00000000:3E:00.0 Off |                  N/A |
| 22%   35C    P0    66W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  GeForce RTX 208...  Off  | 00000000:60:00.0 Off |                  N/A |
| 22%   40C    P0    72W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  GeForce RTX 208...  Off  | 00000000:61:00.0 Off |                  N/A |
| 22%   38C    P0    63W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   4  GeForce RTX 208...  Off  | 00000000:B1:00.0 Off |                  N/A |
| 22%   41C    P0    70W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   5  GeForce RTX 208...  Off  | 00000000:B2:00.0 Off |                  N/A |
| 19%   37C    P0    70W / 250W |      0MiB / 10989MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
|   6  GeForce RTX 208...  Off  | 00000000:DA:00.0 Off |                  N/A |
| 27%   47C    P0    76W / 250W |      0MiB / 10989MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
|   7  GeForce RTX 208...  Off  | 00000000:DB:00.0 Off |                  N/A |
| 37%   37C    P0    65W / 250W |      0MiB / 10989MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Seems, that https://github.com/NVIDIA/nvidia-persistenced/blob/master/nvidia-persistenced.c#L302 causes a SIGTERM to be sent to getpid() ...

It seems, that nvidia-persistenced tries to start the service nvidia-persistenced again. This does not work and thus systemd tries to kill the service. Because the target is given by the service PIDFile, the "original" daemon gets killed ... . What a mess!

So the workaround is e.g.:
mv /lib/systemd/system/nvidia-persistenced.service /lib/systemd/system/nv-persistenced.service
systemctl daemon-reload
systemctl start nv-persistenced

And than we see, that not nv_cfg_api.open_pci_device() tries to start the service, but a brain damaged udev rule:
# Start and stop nvidia-persistenced on power on and power off
# respectively
ACTION=="add" DEVPATH=="/bus/acpi/drivers/NVIDIA ACPI Video Driver" SUBSYSTEM=="drivers" RUN+="/bin/systemctl start --no-block nvidia-persistenced.service"
ACTION=="remove" DEVPATH=="/bus/acpi/drivers/NVIDIA ACPI Video Driver" SUBSYSTEM=="drivers" RUN+="/bin/systemctl stop --no-block nvidia-persistenced"

# Start and stop nvidia-persistenced when loading and unloading
# the driver
ACTION=="add" DEVPATH=="/module/nvidia" SUBSYSTEM=="module" RUN+="/bin/systemctl start --no-block nvidia-persistenced.service"
ACTION=="remove" DEVPATH=="/module/nvidia" SUBSYSTEM=="module" RUN+="/bin/systemctl stop --no-block nvidia-persistenced"

That's really stupid! Please remove this non-sense from /lib/udev/rules.d/71-nvidia.rules (package nvidia-kernel-common-XXX).

@jelmd , Thank you for looking into it! You're the first one replying (and with the same problem!!).

Well, I've seen the failed persistenced.service on several desktop boxes before, but haven't had the time to look into it. Most Ubuntu users don't notice/care and usually do not need it, because they are running X on there desktops anyway. [OT: However, we've now some "headless projects" and I can spent a little bit time on fixing the most annoying stuff ;-) ....]

NVIDIA is not the author of 71-nvidia.rules.  You should file an Ubuntu bug report on launchpad.net


Hook for colorschemes

Hi @junegunn, I've written the following simple hook to install colorschemes.
I needed to create a symlink for color directory and, using your suggestions, I've written the following:
let g:molokai_create_symlink = 'cd ~/.config/nvim/colors/ && for FILE in `find ../plugins/molokai/ -type f -name "*.vim"`; do ln -s "${FILE}" `basename "${FILE}"`; done'
Plug 'tomasr/molokai', { 'do': g:molokai_create_symlink }

This works, but it should be great to have a function that generalizes my bash script and puts a variable with plugin name where in my example I have "molokai".
Unfortunately I have no experience with VimL, but maybe this snippet can be useful for vim-plug docs.
Thank you for your wonderful plugin manager!

Hmm, I think you're somehow confused. Where did you get the idea that colorschemes need to be installed manually? You don't need such script to use a colorscheme. Maybe you tried to use it before plug#end()?

Ok, so what are the steps for installing a colorscheme with vim-plug?
Putting Plug 'tomasr/molokai' and colorscheme molokai it does not work because molokai.vim is searched in ~/.config/nvim/colors/ directory, and not in ~/.config/nvim/plugins/molokai/colors/molokai.vim, where vim-plug puts it...

Colorschemes are not any different from other types of plugins. You don't need to worry about directories at all. Like I said, have you made sure that colorscheme molokai appears after call plug#end()?

I did not understand at what you were referring to saying "Maybe you tried to use it before plug#end()"...
You are right, putting colorscheme molokai after plug#end() it works without any symlink.
Sorry for my dummy questions, now it's clear how it works.

No problem. It seems that the requirement is not obvious to some users. I'll see if I can further clarify the documentation.


Invoking external APIs secured with various authentication methods

In what area(s)?
area runtime
Describe the feature
Right now Dapr exposes HTTP bindings for invoking external APIs, while marked as an experimental thing it only allows for calling unsecured APIs. Are there any plans regarding extending bindings with different authentication methods?
The examples can be OAuth, Basic Auth, and mTLS. Those bindings could use credentials that are stored in secrets within Dapr. Also, what is the target architecture for such bindings? What I am wondering is whether there should be one HTTP binding component supporting various authentication methods or a number of specialized components?
One of the possible workarounds (for now) is to create a custom binding for those purposes, but as far as I know, this would require a contribution and re-building of the whole Dapr - are there any extensibility options that are already supported?

Do we have any updates on how can we invoke a secured external API?


python3.pkgs.nose: Fix nosetests distutils command

Description of changes
For some reason, entry-points were not installed breaking setup.py nosetests. Since this is a dead project and I only need it to migrate away from it, let’s write the entry points manually.
Additionally, it was using inspect.getargspec, which was removed in Python 3.6.1. Let’s apply an umerged upstream patch to use inspect.signature from Python 3.3 instead. I have removed the fallback branches from the patch since we do not need to support Python < 3.3.

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

The compatibility patch looks fine, but is there a reason you need setup.py nosetests specifically rather than just running nosetests directly? https://github.com/NixOS/nixpkgs/issues/331159 is going to break setup.py test next staging cycle, and we’re working on getting rid of nose anyway, so I’m not sure if we want to put much effort into fixing it up. That said, it shouldn’t hurt anything, so if you need it to migrate that’s fine by me. There’s a nose2pytest package now that you may find useful.

I am trying to port mypaint to pytest as per https://github.com/NixOS/nixpkgs/issues/331159 and noticed it still uses nose for doctests so I decided to tackle that first.
MyPaint uses slightly peculiar project structure (including SWIG-generated Python bindings for libmypaint) and for some reason, running nosetests directly is not able to find some _mypaintlib.


Should issue an error/warning message when no data file to delete

I used the following API, trying to delete a data file
table.newDelete().deleteFile("file:///path1")

And got the following message: INFO SnapshotProducer: Committed snapshot xxxxx (StreamingDelete)
I thought the deletion succeeded, but actually it did not, because the data file is "file:/path1", not "file:///path1".
While file URI scheme is another topic, but it would be better to issue an error/warning here when files to delete are not in data files, to warn the user

I used the following API, trying to delete a data file
table.newDelete().deleteFile("file:///path1")

And got the following message: INFO SnapshotProducer: Committed snapshot xxxxx (StreamingDelete)
I thought the deletion succeeded, but actually it did not, because the data file is "file:/path1", not "file:///path1".
While file URI scheme is another topic, but it would be better to issue an error/warning here when files to delete are not in data files.

We could add an option to StreamingDelete to validate that some data is deleted, if you wanted a failure instead of an idempotent delete. Other operations configure validations that are exposed by the base class, MergingSnapshotProducer. We could add a validation method here as well.

May I add a warning to the log but not exit the app to keep the delete as idempotent?  @rdblue

@waterlx, if the validation is configurable then callers can choose whether to ignore the failure or throw an exception. I don't think we should produce warnings for expected behavior, and when this is an idempotent operation I would consider not deleting anything expected behavior.


Readme tweaks, contributor guide polish

This address all changes on #273. There were some merging issues that made it easier for me to cherry pick the commits onto a new branch.

~I think this is missing the logo file from the original PR?~ I added it back 👍 Also we should clarify license here.
This also misses some badge additions in #274 - was that intentional?

No, not intentional. Can you commit them back to this branch @NukeManDan ?


Publish to Supermarket?

Would be great to have this cookbook published to the Supermarket!

I've avoided this in hopes that the mysql cookbook would settle down and there would once again be a "native" way to create a default mysql instance that would be automatically supported by logrotate.
Let me look over this again and try to catch up on mysql cookbook changes.  Updating/supermarketing this may still be worthwhile.

For the moment, it would seem that the mysql cookbook has not trended that way. I’m drawn to submitting a pull request that does undo the whole “multiple instances of MySQL” crap that made its way in there, but realistically, it’s unlikely, since it works “well enough”.


Address failing "Install from conda-forge" workflow

This PR tries to solve the failing "Install from conda-forge" workflow.
Closes issue #540.
How to review

Read the diff and note that the CI checks all pass.

PR checklist

[ ] Continuous integration checks all ✅

Can we try conda install … message-ix>1.0 in the workflows?
This is ugly, and I wouldn't want to leave it in, but I'm curious if it would prod the conda dependency solver to do the right thing.

I also see *** picosat: out of memory in 'resize' in the logs for the failing Windows jobs. Searching gives conda/conda#9067. Based on that, perhaps we can add conda update --all, right after the conda config calls and before conda create.


CDK8S Synth to multiple files instead of single one

Description of the feature or enhancement:

Have an ability to synthetize not only to single yaml file but to multiple ones based on the different types.
For example if there would be deployment and service then the output would be app-deployment.yaml and app-service.yaml
Use Case:

With Jenkins CI/CD automatization and usage of multiple configmaps and secrets people might not want to run all stuff to be deployed but have an better control over it, as just some small changes might be required like increased image version, so it doesn't make a sense to run kubectl command cross N files when only for one would be sufficient.
Also additional use case is when writing an helm charts. The helm chart usually use multiple k8s templates instead of single one large ,when if error occur at start it stops the remaining of the yaml file to be run, which can cause an issue when the change which fails is configmap after deployment section, while the application would be expecting to have the configmap sooner, eventually the configmap can pass with changed values while application will crash and while performing rollback to last stable version, this might not get loaded correctly.
Other:

Current workaround is that i manually split the files to multiple ones.
This is a :rocket: Feature Request

Hi @cassador
Currently, every Chart with produce its own file, using the id you provide it. So if you want to produce multiple manifest, you can place your resources in different charts.
Is that sufficient? Or do you think finer granularity for separate files is needed?

Hi @iliapolo .
So if i understood it correctly within the single .ts file i can have multiple charts which will give that result?
I will try that later tomorrow if i will have time for that and i will let you know about an opinion about it.
It will heavily depend on how the code in .ts file will look like, if that would not be too much chaotic.

@cassador the .ts files can be structured any way you like. They don't impact the resulting manifest files structure.
You can create multiple charts and just pass them around between multiple ts source files, all resources that belong to a specific chart will be synthesized to the same manifest file.

@iliapolo  thank you, i did try it and it's behaving as expected. It will just require from my end a little more practical experience how to write it more human readable friendly :).


Double Entry in navigation menu

Hello,
After I successfully installed this plugin, It was working fine with default user model. but when I create UserResource again, the double entry is displaying as in screenshot. It may be my fault also. can you please guide me please. I want only one user menu item in the navigation group.

update the config file line
  'UserResource'       => \Phpsa\FilamentAuthentication\Resources\UserResource::class, to point to your resource


Support Hash-Join execution for Outer-Joins

Problem Statement
We have various issues reporting poor performance with Outer-Joins such as https://github.com/crate/crate/issues/11851 or https://github.com/crate/crate/issues/14101. Outer-Joins are executed in CrateDB as Nested-Loop-Joins which makes them slow because of their quadratic complexity O(n^2) in runtime behaviour. There is a special case when Outer-Joins only consist of Equi-Joins-Conditions, which makes it possible to execute them as a Hash-Join resulting in linear complexity O(n). This will increase the performance significantly.
Assume the following query:
select * from R left join S on R.a = S.b

Here, the Outer-Join consists of the condition R.a = S.b which is an Equi-Join-Condition. This Equi-Outer-Join can be executed as a variant of the Hash-Join algorithm. The Join execution plans in the issues https://github.com/crate/crate/issues/11851 and https://github.com/crate/crate/issues/14101 can be optimized with this approach to Hash-Joins because the Join Conditions in these issues are all Equi-Join-Conditions.
Algorithm
Hash-Join for Inner-Joins
Let's start with the standard Hash-Join algorithm used for an Equi-Inner-Join:
select * from R inner join S on R.a = S.b:

This results in the following pseudo-code algorithm:
for each r in R
  store r into H[r.a]
for each s in S
   for each r in H[s.b]
     if r.a = s.b
        emit r,s

We first store all tuples from R in the hash table H organized by the join attribute r.a. Then we probe with the other side S the hash table to find matching join partners and emit them as tuples. This results in O(n) complexity.
Hash-Join for Equi-Outer-Joins
The standard Hash-Join algorithm can be extended to also support Equi-Outer-Joins. An Equi-Outer-Join outputs the same tuples as Equi-inner-Joins, and in addition, also outputs all tuples that did not find join partners. This can be implemented by marking tuples. Each hash table entry has one additional byte, initially 0, that is set to 1 when a join partner is found. This allows to output all tuples that did not have a join partner after the join is done. For the tuples from the right-hand-side we know immediately if we had a join partner or not.
Let's look at our first query with the Equi-Outer-Join again:
select * from R left join S on R.a = S.b

This leads to the following pseudo-code algorithm:
for each r in R
    store r into H[r.a]
for each s in S
  sm = 0
  for each r in H[s.b]
    if r.a = s.b
      mark r as joined
      sm = 1
      emit r,s
  if sm = 0
    emit null,s
for each r in H
  if r is not marked
    emit r,null

We first process all R tuples and store them unmarked in the hash table H. Then, we process all S tuples, initialize their local marker sm to zero, and probe the hash table for potential candidates. When we find one, we mark both the S and the R tuple as having join partners before emitting the joined tuple. After that hash table probe, we know whether the S tuple has a join partner, if not, we emit it after with NULL. After processing the S tuples, we do one sweep over the hash table H and emit all tuples that did not have join partners. The performance is slightly worse than the standard Hash-Join algorithm because of the additional marker handling but the complexity is still linear.
Reference:
The Complete Story of Joins (in HyPer) Thomas Neumann, Viktor Leis, Alfons Kemper

This query will improve significantly with this optimization https://github.com/crate/crate/issues/13337#issuecomment-2176149571


Feature or a bug

Sending form with params[]=1, receiving params[]=1 on server, but sending params[]=1&params[]=2, receiving params[]=[1,2]
And why you are not removing brackets from the name? It's pain the as... to work with such variables.
Like post_data['params[]'][0] etc...
Are there any settings for this?

This is a feature, and is not related to the Formidable library.
Its a way to pass arrays to ExpressJS, see here: https://stackoverflow.com/a/48751012
So going to close this as not-an-issue.

It may be a pain, but it's querystring standard. Once i was thinking for allow passing qs which may help for some.


LibreELEC 9.x - script.module.pycryptodome not available

There is no pycryptodome available, nor can I manage to install in any way. pip is not available... where can I get this dependency from for Generic builds?

It is installed, you are not correct. I've replied in all your posts on this subject - please continue the discusson on the forum.


Function node external modules

[x] New feature (non-breaking change which adds functionality)

This PR builds on top of and replaces #2815.
This adds the ability for the Function node to use extra npm modules without having to edit settings.js.
This PR changes a number of parts of the existing design note - I will be updating the design note to match.
This PR has removed some of the proposed functionality. I have done this in order to allow us to get 1.3 released soon. Otherwise it will take much longer to resolve the outstanding design questions and the release will be even later than it already is.
Here is a summary of the changes:

All external modules are installed into ~/.node-red/externalModules. The modules will only be loaded from that directory.
This means there are now two package.json files - ~/.node-red/package.json that we use today, and ~/.node-red/externalModules/package.json that lists the extra modules used by the flow.
I had originally wanted to avoid this and to install everything under the existing node_modules, however that got complicated when having to track what a flow needed and what the user had installed.

When a flow is deployed with a Function node that has an external module dependency, the runtime will make a number of checks to see if it is allowed to install/use the module.

If it has to install the module, the install must complete before the flows will be started.

If the install fails, or the module is not allowed to be installed (see next item), the flows will not start and an error shown in the editor (similar to 'missing node types' state). The error shows what modules failed to install and the reason. Any Function node that was configured to use that module is flagged with an error to help the user find them.

The setting externalModules.modules.* is used to control what the runtime is allowed to do with installing and dynamically requiring modules. It follows the same pattern as externalModules.palette.*.

A new setting, functionExternalModules has been added. Setting to false disables this whole feature - both in the runtime and the UI.

This PR removes the proposed Admin API for install/remove/update/list of npm modules. I think that api needs more design work to get right - both at the API and UI level. For the first release of this feature, we can have it work by dynamically installing modules when needed - or have the user manually install modules via the command-line. We can review the UI for managing the modules for a future iteration if user feedback requires it.

The Function node UI has been reworked to give more space to the code editor.

This PR moves the code that manages external modules into the @node-red/registry module (it was previously in @node-red/runtime. This makes more sense as it is the registry that deals with loading/installing things.

Remaining work

Update the design note to properly document what has actually been done.
[x] ~unit tests for the new externalModules code in the runtime - lots and lots of unit tests~
[x] ~rebase this on dev so it becomes mergable again.~
[x] ~fix the existing broken unit tests - d'oh~
[x] See later comment about subflow modules. ~I don't think this will work properly with npm-packaged subflows that include a Function that has module dependencies. In fact, that combination is going to get pretty messy - managing the external modules where the user doesn't know anything about them as they are coming from inside the subflow. Will require lots of special case handling in the code - something I really don't like.~

Coverage decreased (-0.3%) to 67.333% when pulling 6336ab121e23c4f8e1f0835594bc79d4ff168ffe on function-modules into d8e68a75b9e9136c26cf0ef77722c6f213baa0b4 on dev.

I have pushed an update that means subflow modules that include Function nodes with externalModules are handled better.
But I'm not sure this is 100% the right approach. If a subflow module has a dependency it should be in the subflow's package.json and therefore installed next to the subflow module in ~/.node-red/node_modules.
By treating it as a 'normal' external module, it will be dynamically installed in ~/.node-red/externalModules. That then exposes the module to the user who won't know why its there and may remove it.
It would be better to allow nodes inside a subflow module to require from ~/.node-red/node_modules and not limit it to the externalModules dir. The hard part I don't have an answer for you is how to know when to do that. The call to RED.require just receives the module name. It doesn't know what node (if any) is calling it, so cannot do that context-aware type of require.
So, in summary, the commit I've added will get it working, but this may need to change in the future.

Based on initial feedback, I've modified the ui design slightly.
The name field has been moved back to the top of the dialog so it is shown all of the time.
Whilst I wanted to give the code as much space as possible, there was a valid concern that hiding the name field would mean the user could lose track of what node they were editing. Having the name always visible means the user always knows where they are.
I've also reduced the vertical whitespace margin of the edit dialog very slightly to gain more room.

A couple more tweaks made

the expand buttons have been moved to overlap the top corner of the editors - saving a bit more vertical space.
was just spotted on slack that the 'close' function code doesn't have access to the node object - so have added that in, but have disabled node.send as you shouldn't be sending messages whilst the node is stopping. If you try, it'll log an error.

I've added functionExternalModules to the default settings.js file and it defaults to false. This means the feature is disabled by default and must be enabled by setting functionExternalModules to true.
This will make it easier for adopters to upgrade without forcing this feature on them.
I propose we'll switch the default in 2.0 to have this feature on by default.


Load tether

Why do we need Tether in Sage?

It's used for the Bootstrap tooltips in v4 and already included in the sage 9 branch.

Yes, required for tooltips in bootstrap v4. This line is needed or it will complain "Tether" is undefined.


Copy option missing from default context menu

The copy option is no longer present in the context menu the only option now is the export option.

Looks like context menu only shows with enterprise modules enabled.
And I was missing ClipboardModule Import...
I'm adding it and changing enable_enterprise_modules to True, by default.


Update Jenkinsfile to use govuk.buildProject() function

The Jenkinsfile contained a lot of custom code that is now available within the govuk_jenkinslib.groovy shared library. By changing our Jenkinsfile to rely on the govuk.buildProject() function within this library, we can take advantage of the latest developments and be more consistent with other projects.
I've made the changes to the Jenkinsfile in a step-by-step fashion in order to use the commit notes to document why particular bits of code are no longer necessary. Thus the Jenkinsfile is not left in a working state until the penultimate commit.
The change in this PR should mean that the "Run tests" stage is locked via the "Lockable Resources" Jenkins plugin so that only one build can run its tests on a given CI agent at one time. See the commit titled "Remove ThrottleJobProperty from Jenkinsfile" and this PR for details. Hopefully this should fix #898.
Note that I haven't resolved the Ruby linting TODO added in the "Remove call to govuk.rubyLinter() from Jenkinsfile" commit, but I'm not sure it's worth delaying getting this PR merged. I think we could address it separately.

Note that I haven't resolved the Ruby linting TODO added in the "Remove call to govuk.rubyLinter() from Jenkinsfile" commit, but I'm not sure it's worth delaying getting this PR merged. I think we could address it separately.

I'm happy to postpone making this change but I think it might be better to capture this in a GitHub issue rather than as a TODO in the code. What do you think, @floehopper?

Have you compared the output of the Jenkins job in master versus this branch? Are you confident that we're not losing anything (aside from the slight difference in Ruby linting) by making this change?

@chrisroos:

I'm happy for you to merge it if you're confident that we're not losing anything by making this change.

The only thing I know we're losing is lint-ing of some files/directories as per my comment in the PR description:

Before the change: rubyLinter("app bin config features Gemfile lib spec")
After the change: rubyLinter("app lib spec test")

So the following files/directories would no longer be Ruby lint-ed in CI:

bin
config
features
Gemfile

There doesn't seem to be an obvious way to override this, which is why I've left it for now.
Having said that, I've just noticed that we have a lint.rake file which defines a "lint" rake task which is run as part of the "default" rake task which is run in CI. This rake task runs the linter against the following: app bin config features Gemfile lib spec, and so maybe we're not losing anything after all.

Rebasing against master and force-pushing in preparation for merging.


Show only first row from description at collection

Let's make it show only the first line from the description of the collection
Test at https://kodadot.xyz/rmrk/collection/54563af23dba417622-CAT
https://user-images.githubusercontent.com/5887929/152416447-a8365828-2643-4584-a36d-682cc6ca2b02.mov

@yangwao I;ll do this


[BUG/FEATURE] Unable to parse already hashed entity ids when using get! macro

Describe the bug
Sometimes you want to store the entity value in another model and then used the stored entity value to get! another model.
This currently fails. The issue stems from the hashing of the values in the get macro.
squad_id.squad_entity_id is an entity
get!(world, (squad_id.squad_entity_id), Squad)
To Reproduce

# Model trying to call
#[derive(Model, Copy, Drop, Serde, Print)]
struct Squad {
    #[key]
    game_id: u32,
    #[key]
    player: ContractAddress,
    #[key]
    squad_id: u32, // this is the count the player has
    unit_qty: u32, //  quantity of units
    owner: ContractAddress
}

# This obviously works
let mut squad = get!(world, (game_id, player, squad_id), Squad);

# Trying to call it with the already hashed keys. This fails
let mut squad = get!(world, (squad_id.squad_entity_id), Squad);

Expected behavior
We should be able to used the entity value when querying for models.

Closed if favor of #1431.


SSR

I see no sense to add something ssr-related to the library. It is supposed to be used only in the browser. The best way to use it with nextjs is to restrict usage by client components only. Or load it asynchronously with next/dynamic. No default value on the server is needed, moreover it can lead to hydration errors.


fix rendering of "--"; closes #331

Does this work?  I guess probably.
I settled on "always using literal text for commands".  This is quite a common thing to come up!

We could set smartquotes = False in sphinx.conf.  I am not necessarily proposing that we do this, but I just realized it would be an option:
https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-smartquotes
(tldr: yes, merge this, consider long-term plan later)

It works but I did not expect it to work. I made a typo and it worked. What I hoped that would work, didn't work: \-\-. So I don't know why it works but it works :-)

I can also switch to code block format but it looks ugly in a bold heading. But it does not have to be bold.


[BUG] auth using desktop can't use pairing code

So when I use "browsers: Browsers.windows('Dekstop');" then use the pairing code, the code cannot be used, unlike using a browser like Chrome and others.

Suggestion: fallback browser choice on pairing code login format (though seems improbable unless a switch was indicated in socket options)


User information injection

Hello,
I have an object containing informations about current user. I want to inject the object as transient (per request) in a layer where user info is not available (no reference to Web dependencies). Is there a way to init this object on every request (as old Begin_Request handler) with current user info (such username etc)?
Thanks,
Ion

Disclaimer - I'd suggest being really careful with this pattern. Using DI in this way makes you really sensitive to when you are getting things from DI and what their lifetime is. If you do this wrong and have a bug, the result will be crosstalk between users - one user's request executing with another user's credentials.
You can do something like the following:

register a scoped service IUserAccessor like this:

public interface IUserAccessor
{
    public User CurrentUser { get; set; }
}

register User as a transient using a factory like this:

services.AddTransient<User>((services) => services.GetRequiredService<IUserAccessor>().CurrentUser);

Lastly, add some kind of middleware that DIs IUserAccessor and sets CurrentUser early in the pipeline. Because IUserAccessor is scoped, it will be durable for the rest of the request.


Adjust fonts in the form(signup.hbs) and side navigation so that its visible clearly.

In some browsers(Chrome) fonts become too thin and are not clearly visible try correcting it.

@chaitanyagiri Hi, is this #21 acceptable?

@firdausmaarof  Please attach screenshots from both firefox and chrome.

Chrome:

Firefox:

@firdausmaarof  Thanks for contributing. I'll merge your PR now meanwhile you may take a look to the web application and suggest some UI improvements, or work on previous issues. Happy coding.


Moving Receptor Client to gem

Issue: https://github.com/RedHatInsights/receptor_controller-client-ruby/issues/2
https://github.com/slemrmartin/receptor_controller-client-ruby
no functional changes, only switched namespace

Based on #14, needs rebase

Rebased, ready

skipping this step. Closing


docs: add guide about managing custom metadata

Current dependencies on/for this PR:

main

PR #333   👈

This stack of pull requests is managed by Graphite.


time seriesplot visualization

Visualizes all years in a geodataframe or specified years from a list. #11

we also need to add proplot to the yaml files in the ci/ dir or the tests are going to keep failing

Let me know if we need any more changes on this.


[p50] Dropbox fails to start without OS password

Sometimes even fails after password passed.

Sometimes even fails after password passed.

Exact same issue is reported here as well as a solution.

I don't see inotify printed in syslog as pointed out in a solution. We'll see next time rebooted.
$ sudo cat /var/log/syslog|grep -ir inotify
grep: .dbus: Permission denied
Binary file .dropbox-dist/dropbox-lnx.x86_64-36.4.22/libQt5Core.so.5 matches
Binary file .dropbox-dist/dropbox-lnx.x86_64-36.4.22/python-packages-27.zip matches
Binary file .ros/rosdep/sources.cache/7cfbeed211a3f9a6507c86cebaeedb3e3c4387f8.pickle matches
grep: .viminfo: Permission denied
grep: .cache/dconf: Permission denied
Binary file .cache/google-chrome/Default/Cache/dadc7772b6788357_1 matches
Binary file .cache/google-chrome/Default/Cache/a0cffd517e8cc1b3_1 matches
Binary file .cache/google-chrome/Default/Cache/d0489acb73321b01_1 matches
Binary file .cache/google-chrome/Default/Cache/41ad64190ef9b524_1 matches
Binary file .cache/google-chrome/Default/Cache/89ed272437b3f1ac_1 matches
Binary file .cache/google-chrome/Default/Cache/b25134e06e166f77_1 matches
Binary file .cache/google-chrome/Default/Cache/170ce59a4cbc3406_1 matches
Binary file .cache/google-chrome/Default/Cache/3b29e22fce6e6e6c_1 matches
Binary file .cache/google-chrome/Default/Cache/98144549bba1a4ea_1 matches
Binary file .cache/google-chrome/Default/Cache/4f46e827852a56a5_1 matches
Binary file .cache/google-chrome/Default/Cache/472e5a04105a9d1e_1 matches
Binary file .cache/google-chrome/Default/Cache/dc9243e99f2afd96_1 matches
Binary file .cache/google-chrome/Default/Cache/0a77d5d7c2a33d05_1 matches
Binary file .cache/google-chrome/Default/Cache/ee6ea825ecc9f464_1 matches
Binary file .cache/google-chrome/Default/Cache/9b8af12d4df3681f_1 matches
:

Today after I rebooted this issue didn't happen, so maybe the above was a fix.


error while executing for first time

i installed kivy and checked if all the requirements are met
i get this error
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/novatek/kivy-designer/designer/main.py", line 3, in
from designer.app import DesignerApp
File "designer/app.py", line 11, in
from designer.components.buildozer_spec_editor import BuildozerSpecEditor
File "designer/components/buildozer_spec_editor.py", line 19, in
from pygments.lexers.configs import IniLexer
ImportError: No module named pygments.lexers.configs
using lubuntu latest stable

same on macOS High Sierra 10.13.6

[INFO   ] [Logger      ] Record log in /Applications/Kivy3.app/Contents/Resources/.kivy/logs/kivy_18-07-31_11.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.6.5 (default, Jun 18 2018, 16:36:13)
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-9<IP_ADDRESS>)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_imageio, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used
[INFO   ] [GL          ] OpenGL version <b'2.1 INTEL-10.36.19'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) Iris(TM) Graphics 540'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
Traceback (most recent call last):
File "/Applications/Kivy3.app/Contents/Frameworks/python/3.6.5/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"main", mod_spec)
File "/Applications/Kivy3.app/Contents/Frameworks/python/3.6.5/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "designer/main.py", line 3, in
from designer.app import DesignerApp
File "/Users/xxxxxxxxxxx/Downloads/kivy-designer-master/designer/app.py", line 11, in
from designer.components.buildozer_spec_editor import BuildozerSpecEditor
File "/Users/xxxxxxxxxxx/Downloads/kivy-designer-master/designer/components/buildozer_spec_editor.py", line 19, in
from pygments.lexers.configs import IniLexer
ModuleNotFoundError: No module named 'pygments'


False positive for TypeParameterUnusedInFormals

I have the following method declaration in an interface:
  <R,
   R1 extends R,
   R2 extends R,
   X1 extends Exception,
   X2 extends Exception,
   V extends Visitor1<R1, X1> & Visitor2<R2, X2>
  >
  R accept_(V v) throws X1, X2;

(Explanation: I have two visitor interfaces, both parameterized in the return type and exception type of their methods, and this method should accept visitors that implement both interfaces.
The return type of this method is a super type of both visitors' return types.)
Error-prone 2.0.3 reports this warning:
[TypeParameterUnusedInFormals] Declaring a type parameter that is only used in the return type is a misuse of generics: operations on the type parameter are unchecked, it hides unsafe casts at invocations of the method, and it interacts badly with method overload resolution
    [javac]   R accept_(V v) throws X1, X2;
    [javac]     ^
    [javac]     (see http://errorprone.info/bugpattern/TypeParameterUnusedInFormals)
    [javac]   Did you mean '<R1 extends R,'?

First, I think my code is correct and does not contain a problem,
because while R is not used in the parameter types, it is bounded by R1 and R2, both of which are in the parameter types (at least indirectly through V).
Second, the suggestion is not understandable (where should I put this <R1 extends R,? It is not valid where the arrow points to). The name of the type parameter could also be added to the warning text.

Thanks for the report, I think there are two bugs here. The check is only supposed to complain if the return type is not "reachable" from the formal parameter types, but as you mentioned they're connected through the bounds.
The fix is also broken. The diagnostics only show the first line of a fix. My guess is that the complete fix it's trying to suggest is:
 <R1 extends R,
   R2 extends R,
   X1 extends Exception,
   X2 extends Exception,
   V extends Visitor1<R1, X1> & Visitor2<R2, X2>
  >
  R accept_(V v) throws X1, X2;

... but that still doesn't make any sense.


feat: Display Pool Tokens in Swap Tool

What is the purpose of the change:
There was a regression in the swap tool behavior on the pool details page following #3097. This PR resolved this by hiding the token select drawer. However, For StableSwap pools with >2 tokens, they will be able to see the token drawer.
Linear Task
Linear Task URL
Brief Changelog

Hide drawer when pools assets are less than 3
Show drawer when pool assets are greater than 2
Add integration test verifying this behavior
Divide swap tool props to give devs better control of desired behavior on the different pages.

Testing and Verifying

[ ] /pool/908 should display the token select drawer without search and recommended assets as it has three assets
[ ] Swap tool in other pages should be unaffected

Summary by CodeRabbit

New Features

Added filtering of assets based on pool ID in asset retrieval queries.
Introduced optional search box and recommended token toggles in the token selection components.
Enhanced the Swap Tool with new properties to support fixed width, usage of other currencies, and handling query parameters.
Modified the Trade Tokens modal to support transactions in multiple currencies.

Bug Fixes

Updated the Swap Tool to ensure correct initial token denomination is set based on the asset page being viewed.

Tests

Added mock implementation for IntersectionObserver to improve testing capabilities.

Documentation

No visible changes for end-users.

What are your thoughts on handling this force pool ID case on the client, by querying the pool on the client and returning it's reserve coins as the selectable assets, instead of modifying the getUserAssets procedure? I think it's OK if the user balances are not available in the dropdown in the direct swap, as the dropdown is only available in the edge case of a > 2 asset stable pool anyways.

I've considered this as well, but I believe it would complicate the code and make testing more challenging because it would depend on reactivity rather than a function's output. Additionally, it's simpler to write a unit test for the mapGetAssetsWithUserBalances function, which already calculates the balances. Perhaps I'm overlooking something. Do you think it would be unwise to include the pool id as a filter option solely for the getUserAssets function?


Orphaned features

I get some warning message similar to the following in debug log file:
2016-04-13 08:07:46,273 [23] Orchard.Environment.ShellBuilders.CompositionStrategy - (null) - WARN Identified 'AdvancedPoll' as an orphaned feature state record in Settings_ShellFeatureRecord.

What is the best way to remove all orphaned features?

I had to go directly in db to remove this...

So i think we need to create a console command for this.

We should identify what this means, and how we get in this state to see if we can fix how it happens in the first place.

Not sure we need a command. If it's a real issue a migration should fix existing records, and we need to fix the bug in the first place. IF it's not a real problem, just live with it, still fix the reason why they are orphaned.

But living is not possible with several warning in every request. 14 warnings will be added to my log file after any request. Deleting a module may cause this issue or deleting or renaming a feature in manifest file. I agree for fixing the main reason.

Every request? really ?

Yes, i get warning for a very large percentage of requests not only during shell startup. But i don't get warning sometimes may be for output cache.

This happened to me when I deleted a theme or module folder manually "without using the UI to uninstall". Would need to test some things to be able to reproduce. I'm not sure if this is because I had cleaned the database using this #1147 and that it misses some lines to clean also Settings_ShellFeatureRecord wich would lead to having these logs entry about an orphaned feature state record.

i also got this today because  I deleted a theme or module folder manually "without using the UI to uninstall".
i recreate a dummy module called Orchard.Scheduler, then deleted it on UI, which should be ok.
2016-04-15 18:44:06,085 [49] Orchard.Environment.ShellBuilders.CompositionStrategy - (null) - WARN Identified 'Orchard.Scheduler' as an orphaned feature state record in Settings_ShellFeatureRecord.

Skrpt described it already, it is caused by manually deleting files without using the UI. I got the same message except for TheThemeMachine. I deleted it in the past manually as i did not need it. I recovered the file, clicked uninstall in the Admin area and the log is gone.


⚠ Samsung has degraded performance

In 884a5a5, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2257 ms

Resolved: Samsung performance has improved in e6e20f6.


Also deploy Puppet code to the new puppet Infra

This should pass, but I haven't tried it yet. This will help me to iterate on it.

I needed to install g10k manually (wasn't part of Puppet) but otherwise this now passed.


Postprocessing onto GPU

Thak you for sharing you work! Its really nice to see righ set of backbones in the openpose  task. But for real use case in order to use such predictor in real task its need not only onload image on GPU side but offload all cmap and paf tensors from GPU to CPU in order to postprocess them with your .cpp code. In some cases all three times: onloading, inference itself and offloading becomes equal. I wonder if there any way of how to postprocess this results onto GPU and offload only estimated coordinates of keypoints?

Hi kallivad,
Thanks for the positive feedback!
It would be interesting to investigate post-processing on GPU!  The post-processing code has largely been written such that no complex data structures are used (just data pointers to memory, and ints/floats).  This potentially makes it simpler to port to GPU.
For some operations it is clear how they could be accelerated using GPU ie:

refine_peaks
paf_score_graph

For others I'm less certain as of now.  I've moved away from the idea primarily since we can overlap GPU (neural network) / CPU (post processing) computation, the post-processing is typically inexpensive on CPU.  But it may be worth re-visiting the potential latency/throughput savings of GPU acceleration, if time allows.
Best,
John


Use Pooch to download tutorial data

Accessing/downloading datasets for YASA tutorials would be much easier with Pooch.

[ ] Add data files to OSF or Zenodo repository and remove from GitHub (they could stay on GitHub as data files and just get removed from the packaged installation, but given that some edf files might be large, I prefer a separate repository).
[ ] Create a fetchers.py or downloaders.py or datasets.py module to access downloaders
[ ] Update tutorials and notebooks with new way to load data

Pooch has very simple and clear documentation for this, and a great resource to work off of is Ensaio.
I'm afraid that some version of this will need to be implemented in v0.7. It feels necessary for me to make the tutorial notebooks for the new evaluation module, since those will require larger datasets to show how their purpose. (therefore kind of blocking #166)
**In the future it would be cool to access larger datasets here, like for full analyses rather than demos. It doesn't require any storage. A major benefit would be if YASA performed some standardization step, handling the various formats that people share their PSG data in. But given all the complexities that come with that, this feature should be reserved for a dedicated contributor later on (if interested in implementation at all).

I'm afraid that some version of this will need to be implemented in v0.7.

Agreed 👍

Noting here that we will use Zenodo to store the YASA tutorial data. I remembered that Pooch has a nice DOIDownloader class that integrates well with Zenodo to automatically pull metadata about all the files. It's a simpler implementation this way.
Plus I just noticed that YASA also gets archived on Zenodo -- sweet :)
This is good to know and I might squeeze this onto the documentation somewhere. If people want to cite specific versions of YASA that they use in a paper (which is a good idea considering it's early stages of development), I think this is the best way to do it.
@raphaelvallat, I'll create a new YASA tutorial data repository on Zenodo and add you as admin or whatever the highest privileges are.

Placing a list here of all the YASA data files to grab and put on Zenodo. If anyone notices a file I'm missing, please let me know in this thread.
From documentation quickstart page, there is a full-night PSG recording with corresponding hypnogram:

[ ] yasa_example_night_young.edf gdrive link
[ ] yasa_example_night_young_hypno.csv gdrive link

From notebooks folder on GitHub repository:

[ ] data_ECG_8hrs_200Hz.npz gh link
[ ] data_EOGs_REM_256Hz.npz gh link
[ ] data_N2_spindles_15sec_200Hz.txt gh link
[ ] data_N3_no-spindles_30sec_100Hz.txt gh link
[ ] data_full_6hrs_100Hz_9channels.npz gh link
[ ] data_full_6hrs_100Hz_Cz+Fz+Pz.npz gh link
[ ] data_full_6hrs_100Hz_hypno.npz gh link
[ ] data_full_6hrs_100Hz_hypno_30s.txt gh link
[ ] data_resting_EO_200Hz_raw.fif gh link
[ ] sub-02_hypno_30s.txt gh link
[ ] sub-02_mne_raw.fif gh link

All data files are up on a new Zenodo repository here: https://doi.org/10.5281/zenodo.14564284
All filenames are the same except I removed some of the prefixes (e.g., data_) that seemed redundant now that they are all surrounded by other data files on a data repository.
@raphaelvallat I added you as another owner/admin on that Zenodo repository. Feel free to change anything around. Any file changes will bump a version, changing metadata will not (either are fine).


Would import template files for download make sense?

Sorry if this was previously asked, couldn't find it.
On the import page where users can upload a file, pick the format and click the "Submit" button, would it make sense to have links to download an empty template for each format? Like a CSV with only one row - the header information.
This would be similar to exporting one item and then deleting the data from the file, leaving only the header.
Not sure about non-tabular formats like JSON, though... 🤔
Just an idea (a request from a client, actually)... Thoughts?

Thats actually a good idea. I find the biggest issue with importing is how to structure the file. I would probably start with csv/xslx and then try to figure out other formats from there on. I personally like it, and it should be quite simple to do.

A similar question was asked on Stack Overflow (i.e. how to download a file with only headers).


AutoComplete options miss out some items in array, when set dynamically on text change.

Hi Everyone,
I'm facing a weird issue while fixing another scroll issue of autocomplete in IE.
What caused the issue.
I updated material-ui/lab and material-ui/core versions to fix the issue of scroll on IE. Seems like updating to the following version fixed scroll issue.
"@material-ui/core": "^4.9.10",
"@material-ui/lab": "^4.0.0-alpha.49",
Current Behavior 😯
But seems like updating the modules created a new issue for me. Now dropdowns with static data are working fine but when it comes to dynamically fetch AutoComplete options on text change it is not behaving correctly.
When debugging code- array has 2 values as shown in the below screenshot.

But after rendering dropdown it only shows one option

This happens only in few cases and setting options dynamically
Expected Behavior 🤔
AutoComplete should show all the items set as options.
Steps to Reproduce 🕹
Here is my code.
export function Asynchronous(props) {
  const [open, setOpen] = React.useState(false);
  const [options, setOptions] = React.useState([]);
  const [loading, setLoading] = React.useState(false);

  React.useEffect(() => {
    if (!open) {
      setOptions([]);
    }
  }, [open]);

   const searchData =(event)=> {
    setLoading(true);
    let active = true;
    var searchText= event.target.value;
      if (searchText.trim() != "") {
        console.log("Searching reviewers");

        ApiRequests(
          "consultant/getreviewersuggest?scriteria=" +
          searchText +
          "&usercpdrdataid=" +
          props.userCPDRDataID,
        )
        .then((result) => {
            console.log(result);
            const reviewerOptions = [];
            if (result.data.length > 0) {
              result.data.map((item) => {
                reviewerOptions.push({'initials':item.initials,'name':item.name,'roleName':item.roleName});
              });
            }
            if (active) {
              setOptions(Object.keys(reviewerOptions).map((item)=>reviewerOptions[item]));
              OR
              setOptions(reviewerOptions);  **Both working in same way**
            }
           // setOptions(reviewerOptions);
            setLoading(false);
            return () => {
              active = false;
            };
          })
          .catch((error) => {
            console.log(error);
          });
      } else if (searchText.trim() == "") {
        setOptions([]);
        setLoading(false);
      }

  }

  return (
    <Autocomplete
      id="asynchronous-demo"
      style={{ width: 300 }}
      open={open}
      onOpen={() => {
        setOpen(true);
      }}
      onClose={() => {
        setOpen(false);
      }}
      getOptionSelected={(option, value) => option.name === value.name}
      getOptionLabel={(option) => option.name}
      options={options}
      loading={loading}
      renderOption={(option) => (
        <React.Fragment>

                {option.initials}

                {option.name}

                {option.roleName}

        </React.Fragment>
      )}
      renderInput={(params) => (
        <TextField
          {...params}
          label="Asynchronous"
          variant="outlined"
          onChange={searchData}
          InputProps={{
            ...params.InputProps,
            endAdornment: (
              <React.Fragment>
                {loading ? <CircularProgress color="inherit" size={20} /> : null}
                {params.InputProps.endAdornment}
              </React.Fragment>
            ),
          }}
        />
      )}
    />
  );

}

Context 🔦

Your Environment 🌎

Please provide a minimal reproduction test case. This would help a lot 👷 .
A live example would be perfect. This codesandbox.io template may be a good starting point. Thank you!

Please provide a minimal reproduction test case. This would help a lot 👷 .
A live example would be perfect. This codesandbox.io template may be a good starting point. Thank you!

Thank you for your reply. It is somehow not reproducing in codesandbox.io here is the link.
https://codesandbox.io/s/serene-gauss-ul8jf?file=/src/App.js

No reproductions means we can't help you. Sorry.

So, it turns out that problem was with the way I'm searching and setting options in AutoComplete control. In earlier material-ui/lab versions like in 4.0.0-alpha.39 this code was working fine.
But in 4.0.0-alpha.55 we have to make some modifications in they way we search on text change.
Solution

Remove the onChange event in TextField

<TextField
          {...params}
          key="searchCoConsultantsLY"
          placeholder="Collaborating Consultant"
          variant="outlined"
          //onChange={searchCoConsultantOptions}    **this is commented out**
          fullWidth
          onBlur={handleBlurCoConsultants}
          //onFocus={handleOnFocus}
        />

Add filterOptions props in AutoComplete control to filter.
Now add a new property to AutoComplete control for filtering/searching called "filterOptions". What it does is it generate a new set of options you create within this function.

filterOptions={(options, state) => {

        return SearchItemsBasedOnText(options, state.inputValue)
      }}

const SearchItemsBasedOnText = (options, text) => {
   let searchString = text.toLowerCase().trim();
   let searchedClients = [];
   if (searchString != "") {
     searchedClients = props.suggestedConsultants.filter((item) => {
       if (item.initials.toLowerCase().trim() === searchString) {
         return true;
       }
       if (item.initials.toLowerCase().trim().indexOf(searchString) > -1) {
         return true;
       }
       if (item.name.toLowerCase().trim().indexOf(searchString) > -1) {
         return true;
       }
     });
   }

   //removing the values already selected in dropdown
   if (selectedCollaboratingConsultants_GrLYC != null) {

       selectedCollaboratingConsultants_GrLYC.map((item, index) => {
         let deleteIndex = searchedClients.findIndex(
           (x) =>
             (x.initials.toLowerCase().trim() === item.initials.toLowerCase() || x.username.toLowerCase().trim() ===item.username.toLowerCase())
         );
         if (deleteIndex > -1) {
           searchedClients.splice(deleteIndex, 1);
         }
       });

   }

   searchedClients = searchedClients.slice(0, 16);
   return (searchedClients[0] === undefined?[]:searchedClients)
//here returning new set of options.
 };

End Note: Seems like onChange TextField inside renderInput props in Autocomplete control can not be used to set options dynamically as we did in earlier versions. So we have to use filterOptions props to update the options dynamically

Sharing the solution, might be helpful for someone who is facing the same issue.
So, it turns out that problem was with the way we are searching and setting options in AutoComplete control in older versions. In earlier material-ui/lab versions like in 4.0.0-alpha.39 this code was working fine.
But in 4.0.0-alpha.55 we have to make some modifications in they way we search on text change.
Solution

Remove the onChange event in TextField

<TextField
          {...params}
          key="searchCoConsultantsLY"
          placeholder="Collaborating Consultant"
          variant="outlined"
          //onChange={searchCoConsultantOptions}    **this is commented out**
          fullWidth
          onBlur={handleBlurCoConsultants}
          //onFocus={handleOnFocus}
        />

Add filterOptions props in AutoComplete control to filter.
Now add a new property to AutoComplete control for filtering/searching called "filterOptions". What it does is it generate a new set of options you create within this function.

filterOptions={(options, state) => {

        return SearchItemsBasedOnText(options, state.inputValue)
      }}

const SearchItemsBasedOnText = (options, text) => {
   let searchString = text.toLowerCase().trim();
   let searchedClients = [];
   if (searchString != "") {
     searchedClients = props.suggestedConsultants.filter((item) => {
       if (item.initials.toLowerCase().trim() === searchString) {
         return true;
       }
       if (item.initials.toLowerCase().trim().indexOf(searchString) > -1) {
         return true;
       }
       if (item.name.toLowerCase().trim().indexOf(searchString) > -1) {
         return true;
       }
     });
   }

   //removing the values already selected in dropdown
   if (selectedCollaboratingConsultants_GrLYC != null) {

       selectedCollaboratingConsultants_GrLYC.map((item, index) => {
         let deleteIndex = searchedClients.findIndex(
           (x) =>
             (x.initials.toLowerCase().trim() === item.initials.toLowerCase() || x.username.toLowerCase().trim() ===item.username.toLowerCase())
         );
         if (deleteIndex > -1) {
           searchedClients.splice(deleteIndex, 1);
         }
       });

   }

   searchedClients = searchedClients.slice(0, 16);
   return (searchedClients[0] === undefined?[]:searchedClients)
//here returning new set of options.
 };

End Note: Seems like onChange TextField inside renderInput props in Autocomplete control can not be used to set options dynamically as we did in earlier versions. So we have to use filterOptions props to update the options dynamically


Rollups string review

UI text updates for rollups
Critical Changes
Changes
Issues Closed
New Metadata
Deleted Metadata

@kofijohnson I think I've done as much string review as I can right now. Can you review when you get a chance? Thanks in advance!

@smarovich great job on your first PR. It looks great!

Thanks so much, @kofijohnson!!


Striped multiport fifo

Currently we have implemented a MultiportFifo, that gives very strong guarantees:

all elements are in time order
always maximum subset of methods is usable

But this comes at cost of exponential complexity, and sometimes we can live with weaker guarantees:

all elements are in time order
always maximum subset of methods which operates on elements from the same stripe are ready.

As an example, lets take 2 port fifo with content:

cycle 1: a, b
cycle 2: c, d

Now we start to pop elements.
If we pop from such queue one element we get in first cycle  a or b. Let assume that we got a, on the beginning of the second cycle of popping we have:

cycle 1: b
cycle 2: c, d

MultiportFifo guarantees that we can pop now two elements b and either c or d. In StrippedMultiportFifo it will be enough if we get only b (so second port will be unused).
Such structure can be useful to pass elements between pipeline elements if we care about order between cycles, but don't care about full pipeline usage.

If you don't care about throughput, why not use a normal FIFO?
The thing you are suggesting will have pretty weird performance behavior, and the only way to reduce the weirdness is to increase the number of internal queues while keeping the number of ports.
Also, did you mean "striped"?

If you don't care about throughput, why not use a normal FIFO?

Because in some cases we can optimistically assume, that nearly always all output port will be ready if at least one is ready. In such case using normal FIFO will be not useful because it will always limit to only 1 port instead. Additionally we can not use simply n different normal FIFO because we can need to keep in order data which are send in different cycles.
One example about which I thought while creating this issue:
I can get an vector instruction, which need to be translated to 24 simpler ones. Original instruction do widening addition data in 8 registers simultaneously. So it have to be translated to:

widen rs1
widen rs2
add rs1 and rs2
So for each register pair this instructions have to be ordered (I have to first widen and after that add data), but job can be parallelised over all 8 destination registers. So I get 3 batches each of 8 instructions. I don't care about order of execution inside a batch but order between batches is important, so each batch can be a stripe in fifo.

The thing you are suggesting will have pretty weird performance behavior, and the only way to reduce the weirdness is to increase the number of internal queues while keeping the number of ports.

I don't understand why performance behaviour will be weird? In optimistic case whole stripe will be read at once. If there are some stalls and the stripe can not be read at once, then we have to split it to parts and first we process as much data as possible and in next cycle rest.

Also, did you mean "striped"?

Fixed


issue 3100

fixing wrong location of option, according to issue #3100

@TrudyHa - can you please assist to check, approve and merge the content for this PR based on issue #3100?
Thank you.


fix(RELEASE-1088): linting issues in send-slack-notification task

/test release-pipelines-e2e-suite


WIP: commands: Add file path option to CLI

Codecov Report

Merging #88 into master will decrease coverage by 0.46%.
The diff coverage is 75%.

@@            Coverage Diff             @@
##           master      #88      +/-   ##
==========================================
- Coverage   99.24%   98.77%   -0.47%
==========================================
  Files          12       12
  Lines         397      409      +12
  Branches       57       60       +3
==========================================
+ Hits          394      404      +10
- Misses          1        2       +1
- Partials        2        3       +1

Flag
Coverage Δ

#unittests
98.77% <75%> (-0.47%)
:arrow_down:

Impacted Files
Coverage Δ

src/schemathesis/runner.py
100% <100%> (ø)
:arrow_up:

src/schemathesis/commands.py
85.71% <66.66%> (-3.76%)
:arrow_down:

Continue to review full report at Codecov.

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

Implemented in #242


no border between topnav and chat (below responsiveness-breakpoint)

no longer relevant, as border is on the topnav now


feature: separate workloads source code from control plane source code

Feature Description
Determine dependencies and shared library code and separate as appropriate.  Includes testing artifacts and existing documentation where applicable.

I played with this a couple of months ago, and it was helpful to get to know the codebase. Whoever works on this now might find some useful bits in:
https://github.com/kcp-dev/kcp/compare/main...markmc:kcp:wip-control-plane-only
https://github.com/markmc/syncer
The bit I got stuck on (and ran out of time) was what to do about the syncer virtual workspace

The syncer virtual workspace would move out too. It would run in a pod somewhere (could be the same as the other TMC controllers). It would need ingress of some kind configured. The controllers in there would be responsible for setting the URL in the SyncTarget status to whatever is configured for ingress.

And thanks for looking into this!!!

/transfer-issue contrib-tmc


Fully destroy experiments using the Redis adapter

Currently the redis adapter's #destroy_experiment method only removes experiment metadata; all participant data is retained even if the experiment is reset. This can lead to large numbers of old keys hanging around in redis instances, requiring manual cleanup.
This change uses redis's SCAN command[1] to delete all keys matching the experiment prefix, which should completely reset the experiment.
The SCAN command works in batches, each time returning a cursor value that can be used in subsequent calls; when the cursor "0" is returned, the scan is complete.
I've tried to test this here by making the shared adapter test more complete; I haven't got this running locally at the moment, however, so it's likely to be failing on travis and I'll patch it up with subsequent commits.
Is this something you'd be interested in merging, once the tests pass? The SCAN command was implemented in Redis 2.8.0, released in 2013; is this okay?
[1] https://redis.io/commands/scan

@urbanautomaton makes sense to me! Thanks for taking this on - if we can get the tests passing, happy to merge.
For redis compatibility, I think master already has a redis >= 3.x restriction, which will be in the next release, so should be fine!

Thanks for the response - the build's now green (with no further effort on the other adapters, either!) so I think this is ready. 😄

Awesome, will take a look tonight!
On Thu, Dec 6, 2018 at 7:50 AM Simon Coffey<EMAIL_ADDRESS>wrote:

Thanks for the response - the build's now green (with no further effort on
the other adapters, either!) so I think this is ready. 😄
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/assaf/vanity/pull/356#issuecomment-444860372, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAFxKb27BrYYZOLz4hfZcrsBkSbf-lBxks5u2RJ9gaJpZM4ZDLzC
.


Creating opslevel_service using v0.11.0 is failing

We've been using v0.11.0 successfully in the last couple of weeks. Since recently, when adding new opslevel_service resource with lifecycle { ignore_changes = ... } it started to fail. This is not the first time we can not use a locked-down provider version to manage existing resources or create new ones with same configuration.
Example HCL:
resource "opslevel_service" "kafka" {
  for_each = {
    for topic in local.kafka_topics : topic.topicName => topic
  }
  name = each.value.topicName

  description = "Kafka topic {each.value.topicName}"
  framework   = "kafka"
  language    = "kafka"
  product     = "<redacted>"

  tags = ["kafka_topic:True"]
  lifecycle {
    ignore_changes = [
      description,
      owner,
    ]
  }
}

Terraform apply:
$ terraform apply -target='opslevel_service.kafka["<redacted>"]'

...

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # opslevel_service.kafka["<redacted>"] will be created
  + resource "opslevel_service" "kafka" {
      + description  = "Kafka topic {each.value.topicName}"
      + framework    = "kafka"
      + id           = (known after apply)
      + language     = "kafka"
      + last_updated = (known after apply)
      + name         = "<redacted>"
      + product      = "<redacted>"
      + tags         = [
          + "kafka_topic:True",
        ]
    }

Plan: 1 to add, 0 to change, 0 to destroy.
╷
│ Warning: Resource targeting is in effect
│
│ You are creating a plan with the -target option, which means that the result of this plan may not represent all of the changes requested by the current configuration.
│
│ The -target option is not for routine use, and is provided only for exceptional situations such as recovering from errors or mistakes, or when Terraform specifically suggests to use it as part of an error message.
╵

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

opslevel_service.kafka["<redacted>"]: Creating...
╷
│ Warning: Applied changes may be incomplete
│
│ The plan was created with the -target option in effect, so some changes requested in the configuration may have been ignored and the output values may not be fully updated. Run the following command to verify that no other changes are pending:
│     terraform plan
│
│ Note that the -target option is not suitable for routine use, and is provided only for exceptional situations such as recovering from errors or mistakes, or when Terraform specifically suggests to use it as part of an error message.
╵
╷
│ Error: OpsLevel API Errors:
│       - 'lifecycleAlias' '' was not found
│       - 'tierAlias' '' was not found
│
│
│   with opslevel_service.kafka["<redacted>"],
│   on kafka_topics.tf line 5, in resource "opslevel_service" "kafka":
│    5: resource "opslevel_service" "kafka" {

Hey @oponomarov-tu - we are in the middle of a massive refactor of the codebase bringing it up to the lastest SDK version. I think we won't beable to test this out until that is shipped and then we'll most likely want to have your roll forward to that one to see if this is fixed there. I'll add this to our queue for checking on post refactor.

Thanks for prompt feedback. I guess this is most likely blocking everyone from using OpsLevel provider and opslevel_service resources in particular. Well, guess we have to wait then. Have a nice Friday!


It makes Alipay blocked at start page

Device: OnePlus 7 pro
System: Android 10
Env: Riru v25.4.2  MPH v25.1.0 LSPosed v1.3.5 (With MiPush Framework Enhancement Module v1.2)
I've no idea it's compatible or has conflict with MiPush Frameworke Enhancement Module.
After I installed MPH, Alipay blocked at start page, Coolapk and some other apps had noticeable lag right after I tapped apps' icon
At the very first time I guessed it would be Thanox's issue. Then I disabled its App ops  and Incognito functions. Restarted my cellphone many times. But Alipay still blocked, Coolapk and some other apps still lagged at initiating.
Then I reinstalled XiaoMi_Push_Framework_Fake_Advanced-v2.8 (I modified it  to MIUI 12 as your module's parameters) and disabled MPH, everything came back to normal.

First make sure you are using riru 25+.
It may be conflicted when used with xposed hooks since the replaced native function may not play well in xposed space.
There's also a possilble case that your Rom changes the related code as the module is based on AOSP.
Please try without using related xposed modules and get logs with tag "MPH".

I don't know how noticeble the lag is,but if you are cold start app then it is normal to be a bit lag as the hook need to block the process.

The use of DobbySymbolResolver is a bit expensive too. I'm about to replace it with symbol reference instead.I tested this before and it was working.

I don't know how noticeble the lag is,but if you are cold start app then it is normal to be a bit lag as the hook need to block the process.

App usually and should be started immediately right after I tap app's icon.
"noticeable lag" means (some of them, not all) apps start with hesitation (lag at Launcher, might also stuck at start page or with black screen).
I installed 19 Xposed moules and 20 Magisk packages.
I've no idea any other modules also have conflict with MPH.
As your reply, I disabled MiPush Frameworke Enhancement and XiaoMi_Push_Framework_Fake_Advanced-v2.8 in LSPosed and Magisk respectively, re-enabled MPH again. (I assume there's no other app/module that could hook system to be like MIUI).
Rebooted my cellphone but the blocked/lag issue happened again.  : (
I didn't delete any log in Magisk.  It seems no logs about MPH.

I don't know how noticeable the lag is, but if you are cold start app then it is normal to be a bit lag as the hook need to block the process.

App usually and should be started immediately right after I tap app's icon.
"noticeable lag" means (some of them, not all) apps start with hesitation (lag at Launcher, might also stuck at start page or with black screen).
I installed 19 Xposed modules and 20 Magisk packages.
I've no idea any other modules also have conflict with MPH.
As your reply, I disabled MiPush Frameworke Enhancement and XiaoMi_Push_Framework_Fake_Advanced-v2.8 in LSPosed and Magisk respectively, re-enabled MPH again. (I assume there's no other app/module that could hook system to be like MIUI).
Rebooted my cellphone but the blocked/lag issue happened again. : (
I didn't delete any log in Magisk. It seems no logs about MPH.

Then maybe your Rom changes a lot so the code path is different. There's other Riru module that do the same thing made by real developers ,may be you can use them instead.
The log is not in Magisk, you can catch them simplely with logcat.
The module is strictly AOSP based.I don't have issues on LOS. If you get any devices run it,maybe you can test it for me.

Pls check the new version v25.3.1.
If it still stuck then i can do nothing, sorry🌝.

Pls check the new version v25.3.1.
If it still stuck then i can do nothing, sorry🌝.

re-enabled mph and installed 25.3.1
disabled MiPush Framework Enhancement an XiaoMi Push Framework Fake Advanced
rebooted
...
...
😂stuck as always.
T_T sayonara, MPH.

I got this problem during development too. I think this is caused by data pointer in hooker lib not correctly returned to the caller, which make the app stuck at waiting the result.
The code path in your Rom may differ from AOSP, so I can't fix this without the rom source.

I got this problem during development too. I think this is caused by data pointer in hooker lib not correctly returned to the caller, which make the app stuck at waiting the result.
The code path in your Rom may differ from AOSP, so I can't fix this without the rom source.

I'm using OnePlus 7pro with Hydrogen OS 10.0.10.GM21.
It seems to be an AOSP like system.

解决不了 🐎了 哭哭


adds input parameters validation

adds validation for language, loglevel, namespace and class name parameters
adds shorthand for loglevel and description parameters
adds validation for path parameters

fixes #127

For information there's no diff in terms or generation.
This PR brings more user friendly messages like:

Could not open/create output directory X:\oinoinoin, reason: Could not find a part of the path 'X:\oinoinoin'.
Could not open the file at C:\sources\github\kiota\src\kiota\openapi.yml, reason Could not find file 'C:\sources\github\kiota\src\kiota\openapi.yml'.
ruby is not a supported generation language, supported values are CSharp, Java, TypeScript, PHP, Python, Go
dangerousis not a supported generation log level, supported values are Trace, Debug, Information, Warning, Error, Critical, None
,charp is not a valid class name for the client, the class name must conform to ^[a-zA-Z_][\w_-]+
,charp is not a valid namespace name for the client, the namespace name must conform to ^[a-zA-Z_][\w._-]+

Instead of throwing exceptions at people.