Helm create uses old HPA Version

Jump to issue
Output of helm version:
➜ helm version
version.BuildInfo{Version:"v3.9.4", GitCommit:"dbc6d8e20fe1d58d50e6ed30f09a04a77e4c68db", GitTreeState:"clean", GoVersion:"go1.17.13"}

Output of kubectl version:
➜ kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:57:26Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"darwin/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.3-gke.2100", GitCommit:"25d7334511e90d0b636707059c955baebce769cd", GitTreeState:"clean", BuildDate:"2022-08-16T09:24:54Z", GoVersion:"go1.18.3b7", Compiler:"gc", Platform:"linux/amd64"}

Cloud Provider/Platform (AKS, GKE, Minikube etc.):  GKE, v1.24.3-gke.2100
Issue
When creating a new helm chart using helm create <chart> the HPA is using an old outdated and soon to be deprecated version

Warning
_note: Task is just a better version of makefile, the command it runs is `helm upgrade
➜ task upgrade
task: [upgrade] helm upgrade $releaseName $chart
W1102 13:34:17.245653   42748 warnings.go:70] autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler
W1102 13:34:17.269708   42748 warnings.go:70] autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler
W1102 13:34:20.310690   42748 warnings.go:70] autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler
W1102 13:34:20.438095   42748 warnings.go:70] autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler
W1102 13:34:20.463040   42748 warnings.go:70] autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler
W1102 13:34:20.488023   42748 warnings.go:70] autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler

The Deprecation notice is Here
What would be nice to see is the New version:
Issues related
https://github.com/helm/helm/issues/10710

A fix for this should include a test that fails if any resource here receives a deprecation warning.

@joejulian I am interested in this issued, may i take it?

@hzliangbin please do, yes.

/assign

A fix for this should include a test that fails if any resource here receives a deprecation warning.

@joejulian   It's hard to judge a resource rendered by a helm manifest is deprecated or not. it was affected by the version of users' k8s .we should handle it like ingress.
https://github.com/helm/helm/blob/3974136b6eba92f17a821aac52a80b59a9fa1202/pkg/chartutil/create.go#L223-L229
@hzliangbin  If you are too busy to fix it, I'd like to do it for you :-)

A fix for this should include a test that fails if any resource here receives a deprecation warning.

@joejulian   It's hard to judge a resource rendered by a helm manifest is deprecated or not. it was affected by the version of users' k8s .we should handle it like ingress.
https://github.com/helm/helm/blob/3974136b6eba92f17a821aac52a80b59a9fa1202/pkg/chartutil/create.go#L223-L229
@hzliangbin  If you are too busy to fix it, I'd like to do it for you :-)

True, but for testing purposes we can use the linter deprecations.

True, but for testing purposes we can use the linter deprecations.

I have tried it, we can't use lint releative package in  create.go,it will cause import cycle not allowed in test

True, but for testing purposes we can use the linter deprecations.

linter deprecations depends on LDFLAGS  which is not set when test uint case, it's 1.20 by default. it will lead to autoscaling/v2beta1 is not regarded as deprecated.
https://github.com/helm/helm/blob/7838fb769d00f53c858d994a873f42c2960a7d25/pkg/lint/rules/deprecations.go#L30-L34
If we set ldflags when testing , helm template test case may face faill because of template 's annotation is diff from k8s version
https://github.com/helm/helm/blob/21e694e0f9575700f16f6c87002c6ccdc434edc4/cmd/helm/testdata/output/template-show-only-multiple.txt#L10-L12
we can also set the variate k8sVersionMinor   and all "helm template" 's output to version 25. it case that we should keep the variate k8sVersionMinor  same with the version of k8s.io package which we used.
Is there a plan to have the best of both worlds?
PS: it means some currenct test cases may have bugs, because of  Fixed variate k8sVersionMinor=20

@wujunwei just take it

True, but for testing purposes we can use the linter deprecations.

linter deprecations depends on LDFLAGS k8sVersionMinor  which is not set when test uint case, it's 1.20 by default. it will lead to autoscaling/v2beta1 is not regarded as deprecated.
https://github.com/helm/helm/blob/7838fb769d00f53c858d994a873f42c2960a7d25/pkg/lint/rules/deprecations.go#L30-L34

My intention was always to come back at this and make those override-able with a cli flag.

My intention was always to come back at this and make those override-able with a cli flag.

I have a few question about it, how to do it when testing? and what's the content in test case about it ?
https://github.com/helm/helm/blob/21e694e0f9575700f16f6c87002c6ccdc434edc4/cmd/helm/testdata/output/template-show-only-multiple.txt#L10-L12

/assign


Not an issue - go2rtc idea/guidance/assitance needed for multiple(between 2 and 4 Hikvision cameras) at multiple sites(10+ only connected via public IP)

hi @AlexxIT and all,
Need some guidance/assistance. We have multiple sites (not really sites, a pole with fibre without static IP's and 2+ cameras). Some neighbourhood watch communities got anything between 5 and 20 of these poles. The Hikvision apps suck. Current option is to use Dynamic DNS and open certain ports on the router for RTSP(which more often than not the ISP reset the router and config is lost). These poles normally only have a 10/20 mbps fibre line, and if multiple people try to view the line gets congested.
I like the idea that you can take the stream to then do RTMP to like Youtube etc. What will be the best/ideal way to take these streams on each pole and send them to another webservice where its only one stream that is taking the bandwidth and all other users then stream/liveview from there? My thinking is that we will probably need a Raspberry Pi at each pole(this then takes out the requirement of using DDNS and doing config on the fibre router which will be ideal) or otherwise connect via the rtsp stream and then publish it to another service?
Any guidance will be appreciated.

Have you checked out Frigate NVR? You just need one central POE switch and run cat6 to each pole where the cameras are located. And then you can have one computer, even a Raspberry Pi, running Frigate to monitor them. However, I would suggest getting a small mini pc if you're going to have multiple people accessing the video feeds.
https://frigate.video/
Good luck.

I don't really understand your configuration enough to give good advice


Append logs for tests to regr.log

Commit 700f29b changed things so that details of the various tests
that ran ended up in separate files. This is nice (and important for
running things in parallel), but isn't massively helpful if you use
regr.log to understand what happened from a CI run!
This patch adds the logs again, splitting them up so that failing
tests come before passing ones (since you usually just care about the
failures).

An example of the output:


Documentation --saveconf

In the manpage, --saveconf is implied to overwrite ~/.textme even if another conffile is selected using -c. Clarify that this is not the case.

Fixed


Window forward not coming forward when clicking inside the window

When superputty is partially behind other windows and you click within the superputty window that it exposed it does not bring the full window forward. Instead, I am finding I have to try and mouse over the window edge and click to bring it forward. This appears to be new behavior with the <IP_ADDRESS> release.

Confirmed, Clicking on terminal session in the background properly gives focus, but does not bring window the foreground. This behavior is different from the previous release <IP_ADDRESS> which gave focus and also brought the app to the foreground. More investigation is needed to determine what changes might have caused this.
Comfirmed with Win10 and tested against <IP_ADDRESS>, and current Trunk/Development version.

Also noticed that right-click on the session tab are and selecting a new session does not open the new session.

I just recheck and now it is working on the <IP_ADDRESS> but not on another system on the <IP_ADDRESS>. It was happening early on the .10 so I am not sure what is causing it.

If you run into it again and have specifics to share, please open a new issue. Thanks for the testing!

As a (sometimes functional) workaround, clicking on the window border of the app or the border some of the tiled sessions seems to bring the app to foreground but it is finicky - not all parts of the border respond this way when clicking on them.

Any progress on this issue?  Is a patch available?

This is an issue for me as well. I was using a HVD [VMWare] and everything worked fine. I was moved over to a Laptop and I started seeing this issue. The O.S. hasnt changed, nor has settings. I'm using Windows 10 Enterprise / SuperPutty Version <IP_ADDRESS> - When I just use Putty I dont see this issue. I can toggle between the sessions. When I use Superputty I have to hit the outer edge of the Superputty App in order to toggle over. Its a distraction.

Hi, is this issue likely to be fixed in a v1.5.x release?
Is this an issue whereby PuTTY is not passing back an event to SuperPuTTY?

This is still an issue in <IP_ADDRESS>


Active style doesn't change when doing a normal scroll

Active style doesn't change when doing a normal scroll from page to page it only changes when clicking on a particular link.

Active style matches the current url. The url changes when clicking on a link, but not when simply scrolling to an element. This is standard behavior of how element ids and links work in html. If you want the active style to change on normal scroll, you'll have to change the url  using history.push(...) when the element is scrolled into view, which is out of scope of the library.


ctrl-R overrided by vscode default keybinding

ctrl-R does not work in normal mode as redo.
Looks like the deafult keybinding is covering the extension setting.

I have enabled useCtrlKeysForNormalMode.
Forgive me if I messed up something in vscode on my side, I do no understand its settings well yet.

Works for me.


Remove auto-generated RBAC

Resolves https://github.com/fusor/mig-controller/issues/273, we are relying on mig-operator as the source of truth for RBAC now.

@sseago @jortel @dymurray can we get this merged today?


resource binding is not substituted when chaining API calls

I am trying to use a package generating api documentation (scribe).
I started getting the given runtime error : Expecting resource binding to be substituted.. This error is thrown by the CloudCreativity\LaravelJsonApi\Http\Requests\Concerns\ResourceRequest.
Basically it happens when API calls are chained. When I register a single route (i.e. $api->resource('establishments')->controller()->only('read');) everything works fine, but when I register multiple routes (i.e. $api->resource('establishments')->controller()->only('index', 'read');) I get this error.
It works fine when requesting the API from an external source as I only fetch one or the other endpoint, but as Scribe chains API calls to every available route the error occurs.
I tried to debug this on my own but I lack knowledge on both laravel-json-api internals and how Scribe performs requests to fully understand where does the issue come from. Do you have any idea what is happening ?
Here is an example stack trace:
{
    "message": "Expecting resource binding to be substituted.",
    "exception": "CloudCreativity\\LaravelJsonApi\\Exceptions\\RuntimeException",
    "file": "\/Users\/robinstraub\/Documents\/Binch\/chr\/api\/vendor\/cloudcreativity\/laravel-json-api\/src\/Http\/Requests\/Concerns\/ResourceRequest.php",
    "line": 49,
    "trace": [
        {
            "file": "\/Users\/robinstraub\/Documents\/Binch\/chr\/api\/vendor\/cloudcreativity\/laravel-json-api\/src\/Http\/Controllers\/JsonApiController.php",
            "line": 404,
            "function": "getRecord",
            "class": "CloudCreativity\\LaravelJsonApi\\Http\\Requests\\FetchResource",
            "type": "->"
        },
        {
            "file": "\/Users\/robinstraub\/Documents\/Binch\/chr\/api\/vendor\/cloudcreativity\/laravel-json-api\/src\/Http\/Controllers\/JsonApiController.php",
            "line": 111,
            "function": "doRead",
            "class": "CloudCreativity\\LaravelJsonApi\\Http\\Controllers\\JsonApiController",
            "type": "->"
        },
        {
            "file": "\/Users\/robinstraub\/Documents\/Binch\/chr\/api\/app\/Http\/Controllers\/Api\/V1\/EstablishmentsController.php",
            "line": 44,
            "function": "read",
            "class": "CloudCreativity\\LaravelJsonApi\\Http\\Controllers\\JsonApiController",
            "type": "->"
        },
       [...]
    ]
}

Apologies but I don't fully understand what is going on here. The routing you mention as the problem does work - we have that setup in multiple production applications.
When you do this:
$api->resource('establishments')->controller()->only('index', 'read');

Two routes should be registered. Do they appear as defined routes when you use the route:list Artisan command?

Hi, I experienced this issue again while writing tests. I setup a code sample to replicate the issue, hopefully it can help you understand what is going on.
I created a new issue as I didn't realise the tests problems I was running into came from the same cause, here is a link : https://github.com/cloudcreativity/laravel-json-api/issues/575

@robinstraub When you do this:
$api->resource('establishments')->controller()->only('index', 'read');

The code is registering 2 routes. Do you see those two routes when you use the route:list Artisan command?
As for Scribe... if it is running multiple tests or whatever it does against a single Laravel application, then that is invalid. As explained on the other issue, in reality each HTTP request would receive a brand new instance of the Laravel application. If you or Scribe are chaining multiple requests against a single instance of a Laravel application, you will get false positives and other errors - because that does not reflect the reality of what happens in a HTTP request. The fix is for your code to use a new instance of the Laravel application per request and per test.

Having taken an exceptionally quick look at Scribe... I believe it uses your tests to generate the docs? In which case the route cause of the problem will be your tests not reseting the application when testing two (or more) HTTP requests in a single test.
If that's the case, my strong advice would be to refactor your tests to only submit a single HTTP request per test. Generally this is the approach I'd recommend to any developer - use the Arrange, Act, Assert approach to tests https://github.com/testdouble/contributing-tests/wiki/Arrange-Act-Assert I.e. for Laravel tests, arrange sets up the application state (e.g. putting things into the database), act is the single HTTP request, assert tests the expected response and/or application state (e.g. changes in the database). I.e. there's only one HTTP request in that test.
If you really must keep multiple HTTP requests in a single test, then make sure the application is reset between requests using the resetApplication test.

ok thank you, Scribes calls internally the specified endpoints to generate the documentation and uses php comments/annotations. I'll look into how I can setup scribe to isolate the calls so that the application state isn't kept between calls.
I'll close the issue as it is something I have to deal with Scribe and this library works as intended, thanks a lot for your support !

No problem! If you get it working with Scribe it might be worth posting a comment on this issue just in case anyone else looks in the future.


Fixed issue #1394 wrong appmesh Listener property and #1396 dependson should be a type list and #1397 proxy props should be list

Thanks! Still wish AWS would publish docs/spec files for this addition.

@markpeek Thank you! I've seen those docs with my own eyes. Our TAM had forwarded an email to me when they release support for CFT. Now I can't find them. I've already asked him to investigate. Will get some answers next week. Thanks.


ament_lint: 0.6.4-0 in 'crystal/distribution.yaml' [bloom]

Increasing version of package(s) in repository ament_lint to 0.6.4-0:

upstream repository: https://github.com/ament/ament_lint.git
release repository: https://github.com/ros2-gbp/ament_lint-release.git
distro file: crystal/distribution.yaml
bloom version: 0.7.2
previous version for package: 0.6.3-0

Holding for other core releases.


How to deploy python bot

In the interface only c# and nodejs is available but python isn't.
Also documentation is not provided for deploying a python chatbot. How to deploy python chatbot on Azure Chatbot service

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 096d934c-2856-e868-efeb-6622e2a5eafb
Version Independent ID: 8bf74926-6a35-5753-0a1a-6663ba5965b2
Content: Deploy your bot - Bot Service - Bot Service
Content Source: articles/bot-builder-deploy-az-cli.md
Service: bot-service
GitHub Login: @ivorb
Microsoft Alias: kamrani

Thanks for mentioning that Python wasn't available on the Azure Portal web app bot template, I've opened issue 1583 to address this.
The Deploy your bot article includes instructions for deploying Python bots. Steps 4 and 5.1 include Python specific instructions but I am going to clarify the language in those sections. Feel free to reopen this issue with more information if you are still having issues.

I tried these steps but for some reason it is not working. On the emulator it works as expected.
Maybe it is because of the deployment script not getting generated for python.

Command line instrucutions need more information. The current documentation is broken @emgrol .

For some reason i can't re-open this issue. It is not yet resolved

What steps did you follow for section 3? The current documentation is unclear, not necessarily broken.

@amonit and @amankhandelwal-ideaspark: I don't think this is a doc issue since I followed the instructions in the article and was able to deploy multiple bots and test them in Web Chat. Adding the support label.

@emgrol If you can assign me, I'll take it from here for helping with their deployments.

I was able to deploy. It was not working previously because of resource-group.
So I created a separate resource group and it worked.

Sounds good @amankhandelwal-ideaspark !
@amonit, are you still having issues deploying?

Closing as I have answered OP's question both here and on Stack Overflow.


SAM-Med 2D Inference

I'm trying to use the given code for 3D inference with SAM-Med 2D, but I'm having trouble. Could it be that there's an architecture mismatch?
I'm running
python validation.py --seed 2023\
	-vp ./results/vis_sam_med2d \
	-cp ./ckpt/sam_med2d.pth \
	-tdp ./data/validation_test1 -nc 10 \
	--image_size 256 -mt vit_b --dim 2 --save_name ./results/sam_med2d.py --ft2d

as in the infer_med2d.sh file, just with:

the ckpt folder having been created myself, containing sam-med2d_b.pth as downloaded from here, as given in the readme.
-cp changed to ./ckpt/sam-med2d_b.pth to reflect the name from the download above
-tdp changed to ./data/validation to reflect the directory name in the current github repo.

These changes result in the command
python validation.py --seed 2023
-vp ./results/vis_sam_med2d
-cp ./ckpt/sam-med2d_b.pth
-tdp ./data/validation -nc 10
--image_size 256 -mt vit_b --dim 2 --save_name ./results/sam_med2d.py --ft2d
Then, running, I get
set seed as 2023
get 1 datasets
device: cuda
*******interpolate
Traceback (most recent call last):
File "[my path]/SAM-Med3D/segment_anything/build_sam.py", line 111, in _build_sam
sam.load_state_dict(state_dict['model'])
File "/home/[user]/anaconda3/envs/sam-med/lib/python3.11/site-packages/torch/nn/modules/module.py", line 2152, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for Sam:
Unexpected key(s) in state_dict: "image_encoder.blocks.0.Adapter.norm.weight", [... lots of layers ...] "image_encoder.blocks.11.Adapter.spatial.2.weight".
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "[my path]//SAM-Med3D/validation.py", line 327, in
sam_model_tune = sam_model_registryargs.model_type.to(device)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[my path]/SAM-Med3D/segment_anything/build_sam.py", line 38, in build_sam_vit_b
return _build_sam(
^^^^^^^^^^^
File "[my path]/SAM-Med3D/segment_anything/build_sam.py", line 116, in _build_sam
new_state_dict = load_from(sam, state_dict, image_size, vit_patch_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[my path]/SAM-Med3D/segment_anything/build_sam.py", line 128, in load_from
pos_embed = new_state_dict['image_encoder.pos_embed']
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'image_encoder.pos_embed'
with text in brackets being my modifications to the message. The error arises in the try/except block in the _build_sam function of build_sam.py:
with open(checkpoint, "rb") as f:
            state_dict = torch.load(f)
        try:
            if 'model' in state_dict.keys():
                sam.load_state_dict(state_dict['model'])
            else:
                sam.load_state_dict(state_dict)
        except:
            print('*******interpolate')
            new_state_dict = load_from(sam, state_dict, image_size, vit_patch_size)
            sam.load_state_dict(new_state_dict)
        print(f"*******load {checkpoint}")

Thus the loading attempt from the try section didn't work, and the except couldn't fix it. As I understand it, the weights from sam-med2d_b.pth are trying to be loaded into the model sam defined early in the _build_sam function. But this must have the base SAM architecture, and thus couldn't include the adapter layers in SAM-Med2D, which I expect would inevitably lead to the mismatch in architectures I read from the terminal output. Furthermore, the model-type flag must be the name of an original SAM model since it gets passed through the dictionary sam_model_registry. Am I understanding the error correctly? If so, could you possibly share the code you used to test SAM-Med2D on the 3D data?

Hi, it seems the key issue is located at loading SAM-Med2D weights? The code I used to test SAM and SAM-Med2D is validation.py. I suggest you set the load_state_dict's strict parameter to false, or directly modify the weights' keys to fit the structure described in the code. If you have concerns about this structure, you can also modify the structure yourself to adapt to the weights.

Yes, it seems like the released version of code for the 2D inference is still with bugs for SAM-Med2D.
It is okay for SAM without adapters, and the results in Readme.md about SAM-Med2D are validated by its author.
Since the repo isn't designed to provide an inference tool for 2D models, I have no plan to rewrite the correct function for SAM-Med2D. Sorry 😢
I will close this issue. Feel free to open another issue if you still have questions.


Declear FOSRest dependency.

There is an undecleared dependency to the FOSRest library, here's a quick patch to fix that.

the FOSRest dependency is explained inside the FOSRestBundle
so i think what should maybe change is the URL being referenced for the instructions:
https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/1-setting_up_the_bundle.md

Well, I just lost an hour because the FOSRest library refactoring happened without me seeing it. As the FOSRestBundle does not alert me if the lib is missing, I would think you should add the comment at least until 2.1 is out.

it should alert you if you use composer:
https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/composer.json

If you follow the instruction of FOSRestBundle you should be fine. We can't put all the dependencies of our dependencies in the doc.


Documentation has been added for Electronic Gadget site

Created README file and added necessary content which helps for contributors while previewing

Close #2514

Checklist:

[✅] I have mentioned the issue number in my Pull Request.
[✅] I have commented my code, particularly in hard-to-understand areas
[✅] I have created a helpful and easy to understand README.md

@MohitGupta121  Kindly, review this.


Impossibility to access stack on 2.17.0

Hello,
Bug description
I can't access to a stack create by docker directly on portainer.
i created the team/user and give access to it but it's impossible. Also, I had the labels io.portainer.accesscontrol.teams=<teams> and io.portainer.accesscontrol.users=<user> on each container.
Expected behavior
User / team can have access to the stack create by docker
Portainer Logs
","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwCheckPortainerAuthorizations.func1","line":"282","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwCheckLicense.func1","line":"254","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwAuthenticateFirst.func1","line":"375","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"mwSecureHeaders.func1","line":"479","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*Router).ServeHTTP","line":"210","source":"mux.go"},{"func":"StripPrefix.func1","line":"2152","source":"server.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*Handler).ServeHTTP","line":"223","source":"handler.go"},{"func":"(*OfflineGate).WaitingMiddleware.func1","line":"39","source":"offlinegate.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*Monitor).WithRedirect.func1","line":"117","source":"admin_monitor.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"serverHandler.ServeHTTP","line":"2947","source":"server.go"},{"func":"(*conn).serve","line":"1991","source":"server.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:176 > retrying storage detection in 30 seconds |
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/docker/images/digest.go:62 > Can not find registry auth, try to access in anonymous | image=
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/docker/images/digest.go:62 > Can not find registry auth, try to access in anonymous | image=
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/docker/images/digest.go:62 > Can not find registry auth, try to access in anonymous | image=
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/docker/images/status.go:204 > error when fetch remote digest for image | image=
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/docker/images/status.go:204 > error when fetch remote digest for image | image=
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/docker/images/status.go:204 > error when fetch remote digest for image | image=
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140 > unable to create Kubernetes client for initial storage detection | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179 > final error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140 > unable to create Kubernetes client for initial storage detection | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179 > final error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140 > unable to create Kubernetes client for initial storage detection | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179 > final error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM INF github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140 > unable to create Kubernetes client for initial storage detection | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]
2023/02/16 03:32PM ERR github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179 > final error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]

Steps to reproduce the issue:

Go to portainer web ui, create a new team, create a new user, add the user on the team, add the access of this team to the stack local, try to access to it with the freshly create user

Technical details:

Portainer version: 2.17.0 EE (be)
Docker version (managed by Portainer): 23.0.1
Platform (windows/linux): Debian 10 buster 64bits amd
Command used to start Portainer (docker run -p 9443:9443 portainer/portainer): docker container rm -f portainer && docker run -d -p 8000:8000 -p 9443:9443 --network=host --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ee:latest
Browser: firefox
Use Case (delete as appropriate): Using Portainer at Home
Have you reviewed our technical documentation and knowledge base? Yes

Additional context

Hello,
I found out that if I give the role "helpdesk" and not "read-only" for a specific stack, the user/team can access to the stack but also at all the stack. For now it's solve my problem but i think it is a bug.
Regards,

@RomyxBaps
Thank you for the additional information.  I am going to investigate.  I will update you as I learn more.
Thanks!

@RomyxBaps
Is this a Limited stack?
Thanks!

@RomyxBaps
Here are the steps taken:
[1] I created this Stack:
version: '3.2'
services:
    ltest:
        image: busybox:latest
        command: "ping localhost"
        labels:
            io.portainer.accesscontrol.teams: dev

Note the label:
        labels:
            io.portainer.accesscontrol.teams: dev

[2] Create Team:  dev
[3] Create User:  thenson

[4] Environment >> Manage Access >> dev

[5] Stack >> Access Control >> dev

[6] Login thenson

Can you review my steps?  Is this what you are trying to do?
Thanks!

Hello,
Yes this is what i'm trying to do.
Thank you for your reply.

@RomyxBaps
Given the steps and reproduction provided, are you able to move forward?
Thanks!

Hi,
Sorry for late anwser.
I don't have on "Stack" the "menu" "Access Control"


docker-compose template generated by vew config is not accepted by rancher-compose

If you specify a Command through the UI when creating a service, and then go to the view config screen of your project to bring up the docker compose yaml for your service your get a entry like so:
SomeService:
  command:
  - Some Command

This throws a syntax error when used with Rancher compose:
Failed to parse service SomeService: yaml: unmarshal errors:
  line 2: cannot unmarshal !!seq into string

as it is expecting:
SomeService:
  command: "Some Command"

Either rancher compose should be ale to handle arrays or view config should be updated to generate a string instead of an array.

This is similar to the issue reported in - #1161

@usmanismail ,  With server version - v0.24.0-rc4 and rancher compose version - V0.1.2 , I am able to use docker-compose template generated by rancher and use it with rancher compose to create services.

Verified.


Update ulauncher-deb

Updates ulauncher-deb to version 5.12.1

Ulauncher is already at version 5.12.1.


A lot of "The procedure entry point xxx could not be located in the dynamic link library" errors before first start

Hi, today I've updated a library from the latest NuGet packages and also libvlc.dll, libvlccore.dll and plugins from latest VLC version (2.2.1) and now before first start of video in my app a lot of error modals (actually 21) with text The procedure entry point xxx could not be located in the dynamic link library. After clicking Ok to every modal video starts normally. I'm also tried to delete all VLC dlls, plugins and NuGet packages and re-add them, but it didn't help.
Example:

Uh, I fixed the problem by uninstalling VLC player from my computer, installing the new version on different loaction and copy the pluging dir into my project from this fresh install of VLC... and now it works (maybe update procedure of VLC player corrupted some plugins..., althought VLC player was working without problems).


install_referrer intents removed on March 1, 2020

I received the following information from Branch via Email and I'm wondering if any action will be needed for this plugin. Is there any action that needs to be taken on this end?
Message
A couple of months ago, Google announced that they will stop broadcasting install_referrer intents on March 1, 2020. Branch uses this data to help power our deep linking and attribution services on Android devices.
Fortunately, Google has also introduced the Play Install Referrer API to provide the same data. This API provides better performance, and there is a good chance it is already configured in your app. However, Google has recently contacted several Branch customers about this, so we wanted to proactively reach out and help you confirm your configuration in advance of the cutoff date.
REQUIRED ACTIONS
Branch Android SDK: please do EITHER of the following for your Android app:

Ensure you've linked the Play Install Referrer Library as a Gradle dependency. To do this, please add this directive to your build.gradle file (it is not necessary to implement any of the other steps on this page, as the Branch SDK will handle the rest for you).

OR

Update to the most recent version of the SDK (v4.3.2), which bundles the Play Install Referrer Library automatically.

TUNE Android SDK: Please update to the most recent version of the SDK (v6.1.2, currently only available on JCenter). The TUNE Android SDK already bundles the Play Install Referrer Library, but older versions contain a rare bug that can cause a background thread to pause for up to 60 seconds while waiting for install_referrer data to be returned.
In addition, we recommend confirming that the following entry has been removed from your AndroidManifest.xml file:
Branch SDK
<receiver android:name="io.branch.referral.InstallListener" android:exported="true">
   <intent-filter>
   <action android:name="com.android.vending.INSTALL_REFERRER" />
   </intent-filter>
</receiver>

TUNE SDK
<receiver android:name="com.tune.TuneTracker">
    <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

If you have any questions, please feel free to reach out to<EMAIL_ADDRESS>Sincerely,
The Branch Team

Thanks for the heads up!
This plugin currently uses the Branch SDK v3, so based on this email, users of this plugin should add the Play Install Referrer Library as a Gradle dependency.
I'll update the README to include the necessary change (until some point in the future where I hopefully have time to update this plugin to use the SDK v4 which has it bundled).

As of https://github.com/BranchMetrics/capacitor-branch-deep-links/commit/4c24eb00af44a4b16e88062296d9fbb21ea92f60 install_referrer should not be included anymore. As a matter of fact, I think the whole config should be changed. See: https://github.com/BranchMetrics/capacitor-branch-deep-links/issues/21


🐛 [Bug] userContact.emailChecked vs user.password

🐛 Bugreport
Clarify:

do we have emailChecked  true without password set in production
is it possible to have password set without having email checked?
is it possible to have email checked without having a password?

If one of the cases is true, write unit tests to check this
else remove to dos and skipped unit tests for these cases

I think, that we don't have the possibility of password empty or null and emailChecked = false.
Since the Registration goes as followed:

Fill registration form > Send Form > ...> Sends email registration
User opens registration link > Needs to enter password... > Send Form > ... > sets password & sets userContact.emailChecked = true.

So IMO remove the TODOs


map over object keys

I'm looking for  way to map over object keys. Something like:
let obj = {a: 1, b: 2}
let result = mapKeys(k => `${k}z`, obj)  // {az: 1, bz: 2}

didn't find anything like that by browsing thru the docs

maybe something like
compose(fromPairs,map(mapFunc), toPairs)
?

I don't know any immediate way to do that outside actually writing that function (presumably modeled on R.mapObj:
var mapKeys = R.curry(function mapKeys(fn, obj) {
  return R.reduce(function(acc, key) {
    acc[fn(key)] = obj[key];
    return acc;
  }, {}, R.keys(obj));
});

mapKeys(k => `${k}z`, {a: 1, b: 2});  //=> {az: 1, bz: 2}

I've never used anything like this.  How will you use it?

As I noted elsewhere, I've my own variant of this function in our code base, which renames a particular property of an object, leaving everything else as-is. It's quite useful for "translating" objects from 3rd-party models into the local model.

here is my implementation for mapKeys
import {
    curry,
    keys,
    map,
    values,
    zipObj
} from 'ramda';

export let mapKeys = curry((fn, obj) => zipObj(map(fn, keys(obj)), values(obj)));

See #1124, #1129, #1137 for other implementations.
This one was a close call for inclusion in the library; eventually it was decided that this belonged in the Cookbook, but it looks as though no one ever did actually include it.

See #1124, #1129, #1137 for other implementations.

Those are not actually the same function.
The idea with objFromKeys is (a → b) → [a] → {a: b}.
It's in the Cookbook now.

Hey, you're right, they're not!
They say that memory's the first thing to go.  I forget what the second one is...
Thanks.

Why this issue is closed? All of this solution casing a hard time for typescript.

@smmoosavi:
What issues are you having?  Do note that while we like to make things smoother for Typescript users, we don't generally go far out of our way for it, as this is a JS library and at last check it used features not compatible with TS typings.  That may since have changed (I've heard rumors) but it's not been a major motivating factor.

Hey guys, can you please add the mapKeys to the lib?  🙏
We need to map the keys while keeping the same values.
It's a second time this year we need it and on a different project.
Lodash provides it out-of-the-box by the way.

@zatziky:

Note
I've done this before, and swore I would make sure never to do it again.  I wrote a medium-length response to this yesterday, thought I'd posted it, but must have left it in preview mode without posting.  Then somehow I killed that tab, and it's gone.
I probably won't go into as much detail this time around; I'm a little frustrated.

If you want to create a PR for this, I promise it will get a fair hearing.  But there are no promises that it will be accepted.  Ramda has to balance between not over-expanding its API and providing useful functions.  So a PR would need to explain either why this is hard to do correctly in user code or why its so common that Ramda should simply supply it.
BTW, what lodash -- or Underscore, or any other libraries -- offer is not much of a source for Ramda.  We are more inspired by other FP languages than other JS libraries, but we don't treat either the languages or the libraries as guidelines, only inspiration.  Conversely, we would not expect libraries like lodash to support every feature we offer.  I don't think they have lift or transducers or lenses, and I would not expect them to.

I have been thinking about creating a more general function that would make mapKeys a very simple function to write:
const rebuild = (fn) => (obj) =>
  fromPairs (chain (apply (fn)) (toPairs (obj)))

const remap = (fn) =>
  rebuild ((k, v) => [fn (k, v)])

const mapKeys = (fn) =>
  remap ((k, v) => [fn (k), v])

mapKeys (k => `${k}z`) ({a: 1, b: 2}) //=> {az: 1, bz: 2}

rebuild (
  (k, v) => v % 3 == 0
    ? [[`${k}1`, v / 3], [`${k}2`, v / 3], [`${k}3`, v / 3]]
  : v % 3 == 1
    ? [[k, v]]
  : []
) ({a: 8, b: 6, c: 7, d: 5, e: 3, f: 0, g: 9})
//=> { b1: 2, b2: 2, b3: 2, c: 7, e1: 1, e2: 1, e3: 1,
//     f1: 0, f2: 0, f3: 0, g1: 3, g2: 3, g3: 3 }

rebuild would take a function from a key and value to an array of key-value pairs, and an object, split that object into key-value pairs, call the function on each and reconstitute the result into an object.  You can see in the final call the power of rebuild, where we take the key-values and, depending on the value, return three, one, or no new key-values for our final object.
remap is a simple gloss on this for those cases when there's a one-to-one mapping between input key-value pairs and output ones.
With that mapKays is simple to write.  Whether that would then be included in Ramda, I don't know.  I feel though that rebuild at least is a likely candidate, and possibly remap.
Of course this is also easy to write in modern JS:
const rebuild = (fn) => (obj) =>
  Object .fromEntries (Object .entries (obj) .flatMap (e => fn (...e)))

so we'd have to have the same discussion about the benefits and drawbacks of that function.
But if we included rebuild and remap, would you still think a mapKeys function would be important?

Hey Scott, @CrossEye

If you want to create a PR for this, I promise it will get a fair hearing. But there are no promises that it will be accepted.

It's better to first know something will be accepted before creating a PR.
I already a created PR while ago that was not accepted because you want to keep the ops limited.
So, I won't put my time to risk again. ;-)

I have been thinking about creating a more general function that would make mapKeys a very simple function to write

That's exactly 1 of 3 main issues I have with Ramda.
I am aware we can build such methods as mapKeys ourselves.
But we should be given common operators out-of-the-box.
Ramda has awesome documentation and we could nicely leverage it.
See, you just type in map and get all relevant functions.
You even see if they are dedicated to a list or an object.

That said bulk of operators should not be an issue if you can quickly find what you need.

@zatziky:

If you want to create a PR for this, I promise it will get a fair hearing. But there are no promises that it will be accepted.
It's better to first know something will be accepted before creating a PR.

I have no problem continuing to discuss without a PR, but it's often easier to have something specific to discuss.

I already a created PR while ago that was not accepted because you want to keep the ops limited.
So, I won't put my time to risk again. ;-)

Sorry if you had a bad experience.  I've never looked to see what portion of PRs we accept, but I find them the best way to play around with enhancements, to actually try them and share them.  That does mean they have to be considered experimental until approved.

I have been thinking about creating a more general function that would make mapKeys a very simple function to write

That's exactly 1 of 3 main issues I have with Ramda.

What are the other two?

I am aware we can build such methods as mapKeys ourselves.
But we should be given common operators out-of-the-box.

Ramda has to balance several concerns.  We can't bloat the library with every function one might ever want.  This is not only a matter of file size, but also one of conceptual weight.  And even excellent documentation searching is not the solution.  We're not likely to find mapKeys when looking for renameProperties.  And while I'd love to build a Hoogle-like signature search, that probably wouldn't help for many problems.
But we want to offer the common functions, and especially the common ones that are hard to write oneself.  The idea is to be a useful, helpful library, with a design aimed at a specific problem: making it easier to write functional code in JS.
We've never figured out a definitive answer on what makes a function a good candidate for Ramda.  We don't include isArray, isObject, isFunction, or isString, finding that a common is is clean enough, and still easily allow the user to write those they need:
const isString = is (String)
const isArray = is (Array)
// later
if (isString (response)) {
  // handle string
} else if (isArray (response)) {
  // handle array
} else {
  // handle error
}

(Of course, I usually don't bother, simply doing is (String) (response) or is (String, response).)
But we do include both compose and pipe, even though either would be easy enough to derive from the other.  It seemed to the team that each was so useful that it was worth having both.
So we have to make a judgment call on these, based on a few factors: how common the requirement seems to be, how close the function seems to Ramda's core mission, and how easy or difficult it would be for users to write correctly on their own.
So new functions not proposed by the core team or without strong immediate support from a team member tend to need a champion, someone who can argue those factors on behalf of the candidate function.
I have almost never needed a mapKeys function, so I'm not likely to be the champion of it.  But there are other functions that have been included in Ramda that I or my teammates rarely use; and someone successfully argued for them, either in issues or as pull requests.  That you've needed this function twice in the recent year is a useful data point, but not compelling enough on its own.
In other words, we're willing to be convinced, but you need to actually do the convincing.

The requested functionality is what mapObjIndexed already provides, no?
From the documentation:
const prependKeyAndDouble = (num, key, obj) => key + (num * 2);
R.mapObjIndexed(prependKeyAndDouble, { x: 1, y: 2, z: 3 }); //=> { x: 'x2', y: 'y4', z: 'z6' }

REPL

@ericfreed-pki:  That's a different function.  mapObjIndexed allows us to consider the values of the related keys when mapping the values, but it doesn't allow us to change keys.  The idea of mapKeys is different, allowing us to change the keys:
mapKeys (toUpper, {foo: 1, bar: 2}) //=> {FOO: 1, BAR: 2}


proxmox-image fails to build with qemu 7.0

Describe the bug
After qemu: 6.2.0 -> 7.0.0 (commit 9d733f3d4975fb3c516a2bf2bf1bc6f50781a553) proxmox-image fails to build.
Steps To Reproduce
Steps to reproduce the behavior:
nix run github:nix-community/nixos-generators -- -f proxmox -I nixpkgs=https://releases.nixos.org/nixos/unstable/nixos-22.05pre375061.c777cdf5c56/nixexprs.tar.xz
Expected behavior
Command should produce a vma image
Actual behavior
Various compilation errors (copied in case others are searching for a fix)
FAILED: libblock.fa.p/vma-writer.c.o
../vma-writer.c:206:5: error: too few arguments to function 'aio_set_fd_handler'
../vma-writer.c:209:5: error: too few arguments to function 'aio_set_fd_handler'
Additional context
We probably need a rebased patch from proxmox:
https://git.proxmox.com/?p=pve-qemu.git;a=history;f=debian/patches/pve/0026-PVE-Backup-add-vma-backup-format-code.patch;h=b37b17c286da3d32945fbee8ee4fd97a418a50db;hb=HEAD
Notify maintainers
@illustris @SuperSandro2000

https://github.com/qemu/qemu/commit/826cc32423d
This is what's causing the issue. I tried the easy solution of just passing NULL for io_poll_ready in both aio_set_fd_handler calls added by the patch. The qemu build succeeds, but the qemu process segfaults when building the VMA. I'll have to take a proper look at this tomorrow.

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/871


Association .populate() only populates defined attributes

When using adapters that support schemaless mode (i.e. schema: false) populating a One-to-many association only populates the attributes defined in the associated model being populated.
I'm pretty sure this is undesired behaviour?

Submitted https://github.com/balderdashy/waterline/pull/985 which should be a fix for this but needs a bit of testing.

Hey @particlebanana, I think tests for this feature would be great candidates to be placed in a features/schemaless folder and enabled via adapter package.json like "features": ["schemaless"]. More about this idea on PR balderdashy/waterline-adapter-tests#64.

This helps me understand my questions in https://github.com/balderdashy/waterline/pull/985#issuecomment-102218703
Perhaps the select option should be removed altogether with #985.

If it's removed will find({select[]}) still work in schemaless mode? Or the select you mentioned is not related to this one?

It appears to me that this select isn't directly related to the find option.  We could scour the code to confirm that, but the easiest thing to do would be to try and use sails-memory in schemaless mode :P

the easiest thing to do would be to try and use sails-memory in schemaless mode :P

True :)

select tests added in PR balderdashy/waterline-adapter-tests#71.

Fixed by PR #985, please re-open if you are still experiencing this issue.


[FEA] release plugin w/ cuda classifier

Is your feature request related to a problem? Please describe.
as https://github.com/NVIDIA/spark-rapids/pull/5249 we created a bundled plugin jar.
We will need to deploy plugin w/ cuda classifier

Verified the latest deploy scripts works, close the issue.


Why I can use SAML artifact resolution with WID as database?

As title.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

SAML artifact resolution is where the relying party (i.e. your ADFS presenting your shared application) retrieves a token from a claims provider (i.e. another company's ADFS) on behalf of the client (i.e. the other company's user).  It is not required very often.  The problem is that your relying party will make an entry for the SAML artifact in the database, then send the resolution request and get a response fairly quickly (about as quickly as you'd expect ADFS to return an authentication request, 0.5-2 sec at most).  But the synchronization interval for WID is five minutes.  There is no guarantee that the response from the claims provider will be directed to the same ADFS server as issued the request.  So it is very likely that the ADFS server which receives the response from the claims provider will not be the one which sent the request, and since they are effectively not using the same database (at least for the next five minutes), then the ADFS server which receives the response will not have any knowledge of or reference for the SAML artifact and will drop it.  If they are using an external SQL server, then all ADFS servers effectively see the same database at the same time.  There are hints at this in the documentation: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-the-ad-fs-configuration-database

#assign:IngridAtMicrosoft


White flash before initial  load

My app begins with a View with an image in it, like this:
 <View style={styles.page}>
   <Image style={styles.biker} source={require('image!Yosemite')} />
 </View>

When I refresh my simulator I see a white flash before the Image loads:

I see this happen on initial app load, too:

The LaunchImage shows
The white flash shows
Then my image show

I'd like to remove the white flash between those stages. There is other content in my view, could that be slowing things down?
Thanks in advance for the help!

Try setting the backgroundColor of your RCTRootView to [UIColor clearColor] (arguably RCTRootView should be transparent by default and the example projects should explicitly give it a white background cc @nicklockwood).
@martco also another thing to note is that the system will hide your launch image as soon as the app has launched. So there will be nothing displayed in the period of time after the app has launched but before React has rendered.

@ide  thanks!@!!! i was able to change the bgColor, can I change it to my image, instead? Can you point me to how to do that? thanks you're awesome@!

The easiest solution would be set up your app it looks like:

View - the root of your app
UIImage with your background
RCTRootView that is transparent and covers your UIImage once loaded

self.window.rootViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage<EMAIL_ADDRESS>

I'm so happy right now, thanks @ide!!

Hah awesome!

I had the same issue, however my image from the rootViewController is not appearing centered. The LaunchImage is fine, the first image is fine too, but the background between them is not aligned.


Declare class and const cause name is already bound

Hi guys
I have a code like this, and it causes. Because I am using ImmutableJS with Flow so that I need to make a type definitions for it.

import Immutable from 'immutable';

declare class Todo {
  id: string;
  complete: boolean;
  text: string;

  constructor(data: {
    id: string;
    complete: boolean;
    text: string;
  }): void;

  set(key: 'id', value: string): Todo;
  set(key: 'complete', value: boolean): Todo;
  set(key: 'text', value: string): Todo;
}

// $FlowExpectedError: Intentional rebinding for flow.
const Todo = Immutable.Record({
  id: '',
  complete: false,
  text: '',
});

export default Todo;

type definitions can define in a separate file. for example your source file named index.js, in the same directory create file named index.js.flow
//@flow
import {Record} from 'immutable'

export default class Todo extends Record<{
  id: number;
  text: string;
  complete: boolean}> {
}


Mismatch in property name - SearchServiceName vs. ServiceName

Under "Step 3: Log Search events", the plain text says use "ServiceName" but the code snippet shows "SearchServiceName". Which one is correct?
Other mismatches:
DocId vs ClickedDocId
Rank vs Position

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 3d15016b-314c-5757-2ea0-76bd04cf87c6
Version Independent ID: bc6c02ee-9770-7af5-e496-34e5ef8d0865
Content: implement search traffic analytics - Azure Search
Content Source: articles/search/search-traffic-analytics.md
Service: search
GitHub Login: @HeidiSteen
Microsoft Alias: heidist

they are the same thing -- I'll fix it - -thanks!

It looks like the .NET SDK is being referenced in places, so the correction is to use SearchServiceName throughout (see PR https://github.com/MicrosoftDocs/azure-docs-pr/pull/80128)  This change will be live by tomorrow noon.  I recommend closing this issue.


Disabled mod is still launched and works.

I have installed mod "PocoHud3".
I have set it to "disabled" via in-game menu and restarted PayDay 2.
But the mod continues to work as if it was enabled.

Known bug in discontinued blt2, use superblt instead
Am So., 11. Nov. 2018, 16:48 hat Dark-Nero<EMAIL_ADDRESS>geschrieben:

I have installed mod "PocoHud3".
I have set it to "disabled" via in-game menu and restarted PayDay 2.
But the mod continues to work as if it was enabled.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/JamesWilko/Payday-2-BLT/issues/207, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AAhp6MKyBVd9H3n0EyUVUnr3HY-lo0KBks5uuEbegaJpZM4YYi7C
.

related to https://github.com/JamesWilko/Payday-2-BLT-Lua/pull/67

Installed SuperBLT. PocoHud3 can be disabled now.
But the same issue happens to another mod: HoloUI, and using SuperBLT doesn't help.


refactor(utils): move implementation from types to utils

fix #610

It will be published as patch version?


Address class question

I'm testing the Address class and finding that the last byte of the 7 byte addresses are difftent than what this ax.25 generator is producing:
https://notblackmagic.com/bitsnpieces/ax.25/
Why are they different? Heres the test code:
dest = 'NJ7P'
ssid = 0
addr = ax25.Address(dest, ssid)
b = addr.pack()
src = 'N7LEM'
ssid = 0
addr = ax25.Address(src, ssid)
b = addr.pack()
the results:
NJ7P-0 -->    9c  94  6e  a0  40  40  00
N7LEM-0 --> 9c  6e  98  8a  9a  40  00
I think that the ax.25 spec uses this same example and agrees with the generator.

There are two reasons you're seeing a difference.

The generator, by default, sets the command/response bit in the first address. (The first drop-down, "Type (AX.25 V2)", is set to Command.) This affects the top bit in the last byte of the first address. This bit needs to be set explicitly on an ax25.Address, because only the caller knows the intended usage. You can set this using the command_response property of the ax25.Address.

The pack() method is not setting the reserved bits (bits 5 & 6 of the last byte). The AX.25 spec does say "When not implemented, they are set to 1", so this is a bug in the ax25 package that I'll fix shortly. Thanks for spotting that. That said, I've never seen any software that pays any attention to those bits, so their not being set shouldn't cause any issues.


Update goja

Added support for separators in numeric literals.

Improved support for Unicode code point escapes (\u{...}) in regexes.

Improved number parsing compatibility.

I prefer that you do a merge commit here directly with the master branch from goja.
In this way the next time this code gets changed you don't need to cherry-pick and merge conflict fix changes.
Given how common it is for fixes or even feature additions to touch across multiple places, making it easy to not have merge conflicts seems like a must if we want to do this more.

I prefer that you do a merge commit here directly with the master branch from goja.
In this way the next time this code gets changed you don't need to cherry-pick and merge conflict fix changes.
Given how common it is for fixes or even feature additions to touch across multiple places, making it easy to not have merge conflicts seems like a must if we want to do this more.

Sure, of course! Like now? 🤔

Yeah and also the "merge pull request" so again .. git can figure out the merge conflict resolution later


added create user, login, and logout routes for use-routes.js

User-routes are now functioning. You are able to view all users, create new user, login and logout.


[988] Add 'IntelliJ Setup' section to README

Description

Resolves #988
Adds an IntelliJ Setup section to README.md which describes how to setup delta-lake in IntelliJ and how to fix a common build error

How was this patch tested?
Re-cloned Delta Lake and followed the steps myself.

@allisonport-db - yes we should do something like that. We should look at some other open-source projects for inspiration.
Once we agree on a new format we can make a starter issue?


What's the step to implement  CustomEditor,Just as OrderDetailsEditor

When I add a attribute  in the ScriptEditorType.cs,It will override by the T4 Template?

Yes, don't add something there. When you transform T4 it'll bring your new editor type there.

Thanks,Just need use [LookupScript("Northwind.OrderDetailsEditor")] ,then I can have [LookupEditor("Northwind.OrderDetailsEditor")] ,I forgot it!

No, it's wrong, lookup editor has no relation to OrderDetailsEditor, typo?

GridEditor?

Then how ?Where did it implement OrderDetailsEditor?

I resolved it by create a file named XXEditor,then every thing works!
I realised this by the code in MultipleOutputHelper.ttinclude  just as below
foreach (var type in lister.List().Values) {
if (lister.IsEditorType(type))
{
generator.EditorTypes[type.FullName] = new EditorTypeInfo {
Options = lister.GetOptions(type)
};
}
}

I want to implement  something  just like OrderDetailsEditor,I also have a Composite Primary Key,but datatype is not integer,it is string ;When I update ,It warning NotImplementedException,I can't figureout it


[concurrency] Implement effectful properties

https://forums.swift.org/t/pitch-effectful-read-only-properties/44090
TODOs:

[x] Hide behind -Xfrontend -enable-experimental-concurrency flag
[x] Parsing / serialization / deserialization

[x] Implementation
[x] Test parsing
[x] Test serialization/deserialization.

[x] Typechecking

[x] async / throws read access sites & their coverage
[x] Protocols (conformance, composition, inheritance)
[x] Class Inheritance & Overrides
[x] Actor Isolation
[x] Key Paths
[x] Prevent annotation with @objc (causes crashes in typechecking, for good reason)
[x] Make sure protocol test covers subscripts
[x] Raise error about effectful props in property wrappers

[x] Code generation

[x] Test SILGen
[x] Executable test

Deferred Tasks:

Property Wrappers
A useful error message when an attempt is made to use effects in an implicit getter.
Overload resolution issue in this code, where the u.someProp from A should be chosen due to being in an async context:

protocol None {
  associatedtype V
  var someProp : V { get }
}
protocol A {
  associatedtype V
  var someProp : V { get async }
}
func f<U : A & None>(u : U) async {
  _ = u.someProp // no errors raised here!
}

Note that the checker disallows conformance to A & None with an async property witness, so this does not ultimately lead to a mis-compile. It is, however, a bit misleading to allow someone to write f as it stands, and doesn't match up with how we handle this for functions.

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test and merge

@swift-ci please smoke test and merge

@swift-ci please smoke test and merge

This is the PR that I learn about // REQUIRES: objc_interop :)

@swift-ci please smoke test and merge

@swift-ci please smoke test and merge

Just the driver failure on Linux... will try again because that should be fixed by now.

@swift-ci please smoke test Linux

OK I rebased and fixed the change to the asyncHandler note. Rerunning test locally before triggering another run

@swift-ci please smoke test and merge


Unable to publish Articulate posts on 7.6.1

Hi,
I got hit by an odd issue. I upgraded a 7.4.x to 7.6.1 and everything went smoothly.
I disabled the new property value converters in umbracoSettings.config to be safe.
When I now try to publish posts in Articulate I get:
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.

I originally posted on the issue at our.umbraco.org
So far, I have been unable to determine if this is specific to my site or more general.

I'll close this issue as a check was added in articulate to check for the existence of these properties some time ago.


URL consistency for license badges

I noticed today that the GitHub license badge uses /license whereas most of our other license badges use /l. I'd suggest we change GitHub to match the others and add a redirect.
The other one that uses /license is AUR; we could update that one too.

Agreed with the objective of making them consistent, though as food for thought, weren't we elsewhere trying to use more explicit route naming conventions vs. shorthand?
I think consistency across badge types would be great too, so that users don't have to remember that  one badge type uses a shorthand while another uses a more verbose/complete name (i.e. l for licenses but coverage for coverage, etc.)

That's a reasonable point. I'd be fine with switching over to /license which is definitely more readable… though that would also be a bit more work 😁

The other areas where we're using short identifiers pretty consistently are the version badges and the download badges. I'd be slightly less inclined to change those to longer forms, though really wouldn't mind doing it for /l to /license, I guess mostly because the /l badges seem a bit harder to visually recognize.

In my opinion, we should stick with l.
We've got over 15 badges using the short form and 2 using the long form. It would be quite a lot of work to migrate the majority over to the long form. I'm guessing we would have to either add redirectors or regexes in the path, with additional tests, adding complexity and maintenance overhead. Even though the performance hit would probably be very small, it will definitely not help with response times.
License is one of our core categories, keeping the short form is consistent with our other popular version and downloads categories. Yes, short forms are admittedly slightly harder to recognize visually, but people are probably used to it by now and it does save 6 characters on every single license URL. Very few services or "things" start with the letter l, so that reduces risk of confusion as well.

though that would also be a bit more work 😁

We've got over 15 badges using the short form and 2 using the long form. It would be quite a lot of work to migrate the majority over to the long form.

That's a strong enough case on its own for me to vote for sticking with l too 👍


Generation error against something that used to work ok (2 years ago :-) )

Problem statement
A generation that was successful as per v0.19.0 doesn't work against .v0.30.3
Swagger specification
2.0
Steps to reproduce
tried to generate server for the file below
Environment GitPod / Mac
swagger version: v0.30.3
go version: go1.19.4 linux/amd64
OS:   5.15.0-47-generic #51-Ubuntu SMP Thu Aug 11 07:51:15 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
I just dusted off something I wrote that worked 2 years ago. See: https://github.com/stevef1uk/cassuservice
The swagger file my code generates is show below. I have put this in Swagger Editor & https://apitools.dev/swagger-parser/online/# and both are happy with it, however, swagger generate server -f swagger.txt gives the error: 'The swagger spec at "/workspace/go/src/github.com/stevef1uk/test4/swagger.txt" is invalid against swagger specification 2.0. see errors :

some references could not be resolved in spec. First found: invalid character 's' looking for beginning of value

File contents:
swagger: '2.0'
info:
version: 1.0.0
title: Simple API
description: A generated file representing a Cassandra Table definition
schemes:

http
host: localhost
basePath: /v1
paths:
/verysimple:
get:
summary: Retrieve some records from the Cassandra table
description: Returns rows from the Cassandra table
parameters:
- name: id
in: query
description: Primary Key field in Table
required: true
type: integer
format: int32
responses:
200:
description: A list of records
schema:
type: array
items:
required:
- id
- message
properties:
id:
type: integer
message:
type: string
400:
description: Record not found
default:
description: Sorry unexpected error
post:
tags:

"Verysimple"
summary: Add a new record to the Cassandra table
description: Adds or updates a row in the Cassandra table
operationId: addVerysimple
consumes:

application/json
produces:
application/json
parameters:
in: body
name: body
description: The fields of the table that needs to be populates in JSON form
required: true
schema:
$ref: '#/definitions/Verysimple'
responses:
'201':
description: Record created
'405':
description: Invalid input
definitions:
Verysimple:
properties:
id:
type: integer
message:
type: string

`swagger: '2.0'
info:
version: 1.0.0
title: Simple API
description: A generated file representing a Cassandra Table definition
schemes:

http
host: localhost
basePath: /v1
paths:
/verysimple:
get:
summary: Retrieve some records from the Cassandra table
description: Returns rows from the Cassandra table
parameters:
- name: id
in: query
description: Primary Key field in Table
required: true
type: integer
format: int32
responses:
200:
description: A list of records
schema:
type: array
items:
required:
- id
- message
properties:
id:
type: integer
message:
type: string
400:
description: Record not found
default:
description: Sorry unexpected error
post:
tags:

"Verysimple"
summary: Add a new record to the Cassandra table
description: Adds or updates a row in the Cassandra table
operationId: addVerysimple
consumes:

application/json
produces:
application/json
parameters:
in: body
name: body
description: The fields of the table that needs to be populates in JSON form
required: true
schema:
$ref: '#/definitions/Verysimple'
responses:
'201':
description: Record created
'405':
description: Invalid input
definitions:
Verysimple:
properties:
id:
type: integer
message:
type: string`

Sorry didn't mean to close the issue just add the file properly indented in the above comment

swagger: '2.0'
info:
  version: 1.0.0
  title: Simple API
  description: A generated file representing a Cassandra Table definition
schemes:
  - http
host: localhost
basePath: /v1
paths:
  /verysimple:
    get:
      summary: Retrieve some records from the Cassandra table
      description: Returns rows from the Cassandra table
      parameters:
        - name: id
          in: query
          description: Primary Key field in Table
          required: true
          type: integer
          format: int32
      responses:
        200:
          description: A list of records
          schema:
            type: array
            items:
              required:
                - id
                - message
              properties:
                 id:
                   type: integer
                 message:
                   type: string
        400:
          description: Record not found
        default:
          description: Sorry unexpected error
    post:
      tags:
      - "Verysimple"
      summary: Add a new record to the Cassandra table
      description: Adds or updates a row in the Cassandra table
      operationId: addVerysimple
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          description: The fields of the table that needs to be populates in JSON form
          required: true
          schema:
            $ref: '#/definitions/Verysimple'
      responses:
        '201':
          description: Record created
        '405':
          description: Invalid input
definitions:
  Verysimple:
    properties:
      id:
        type: integer
      message:
        type: string

This issue seems outdated: I've been able to validate the above spec and generate a running server from it.
It seems like a transitory regression hit the OP. I believe it is safe to close this now.


Enable automatic decompression on HttpWebRequest

Had issues with gzipped website (for example https://www.nianticlabs.com/) not being decompressed and therefore the content basically unreadable. Related to this SO answer: http://stackoverflow.com/a/2815876

Thanks for the pull request.  However, you just need to set an Abot config value that takes care of this...
IsHttpRequestAutomaticDecompressionEnabled = true


Update README.md

Type of PR:
Documentation

PR Description:
This PR corrects the spelling of 'GitHub' in the README.md file. The previous version had 'Github', which has been updated to the correct form 'GitHub'.

PR Main Files Walkthrough:

README.md: Corrected the spelling of 'GitHub' in various sections of the document.

/describe

/review


BTC/INR pair giving wrong Qty via api

Describe your environment

Operating system: Windows 10
Python Version: 3 above via conda platform

Describe the problem:
running this Api:
pd.json_normalize(bitbnsObj.getBuyOrderBook(BTC), "data", meta=["status", "error","code"])
Observed Results:

What happened?
Output is coming as below:
0
dict
2
{'rate': 2666145.61, 'btc': 7050}
1
dict
2
{'rate': 2663113.45, 'btc': 87190000}
2
dict
2
{'rate': 2663069.89, 'btc': 19216500}
3
dict
2
{'rate': 2662923.18, 'btc': 7543600}
4
dict
2
{'rate': 2662518.18, 'btc': 26679500}
5
dict
2
{'rate': 2662454.75, 'btc': 16096000}
6
dict
2
{'rate': 2662453.99, 'btc': 43969700}
7
dict
2
{'rate': 2662164.37, 'btc': 4170200}
8
dict
2
{'rate': 2662144.51, 'btc': 8369799}
9
dict
2
{'rate': 2662027.59, 'btc': 7842000}
10
dict
2
{'rate': 2661978.69, 'btc': 32316200}
11
dict
2
{'rate': 2652240.89, 'btc': 18641647}
12
dict
2
{'rate': 2650352.7, 'btc': 3764}
13
dict
2
{'rate': 2649811.09, 'btc': 186252}
14
dict
2
{'rate': 2642000, 'btc': 301846}
What did you expect to happen?
BTC Value - which is qty to be in range of 0.1289 onwards

please opine

hi @sukhwant280, the quantity here needs to refactored to 10^-8 decimals (currently it is displayed in sats).
e.g
data = {'rate': 2663113.45, 'btc': 87190000}
vol = data['btc'] * (10 ** -8)
print(vol)

output:
0.8719

should not this be already factored in the api.. as there are so many other coins and will be challenging to resolve for these specific coins?
Enhancement request can we take and if taking, please provide eta.
thanks
sukhwant

AFAIK, only btc
noted. (as changing it on the backend could disrupt the flow for those who have implemented the refactoring, it will take a while to roll out the change)
would suggest implementing client side change for now.

noted. just to confirm, BTC is only coin to be refactored?
please close the ticket after response

yes


Move virtual methods to BundlePrivate and fix the system bundle.

Thanks for making these changes.... Looks good for merge !


Update lock file

Why is this change needed?
In this PR I am going to update the lock file in skuba because Jest has fixed the NodeJS.Glabal  namespace issue that started happening after @types/node  removed it.
Some of our repo is using the latest version of skuba but still seems to have the old jest version. I am not too sure about this but I am hoping update the lock file and making another skuba release might fix it 😅

Lockfiles aren't packaged and they have no effect on consumers, and observe that this refresh has not touched any Jest dependencies in any case.
Changes to our templates as a result of this fix were landed in #498.


yquake2: 8.00 -> 8.01

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/yquake2/versions.
meta.description for yquake2 is: "Yamagi Quake II client"
meta.homepage for yquake2 is: "https://www.yamagi.org/quake2/"
meta.changelog for yquake2 is: ""
Updates performed

Version update

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
Warning: no invocation of /nix/store/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01/bin/yq2ded had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01/bin/yquake2 had a zero exit code or showed the expected version
0 of 2 passed binary check by having a zero exit code.
0 of 2 passed binary check by having the new version present in output.
found 8.01 with grep in /nix/store/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01
found 8.01 in filename of file in /nix/store/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01

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

6 total rebuild path(s)

5 package rebuild(s)

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

First fifty rebuilds by attrpath
yquake2
yquake2-all-games
yquake2-ctf
yquake2-ground-zero
yquake2-the-reckoning

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01 \
  --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 yquake2 https://github.com/r-ryantm/nixpkgs/archive/d7180b892f72972178f45837eb27127e339b909f.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/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01
ls -la /nix/store/pkivz5pxps0ff3bcp7gd6y20p96af8bb-yquake2-8.01/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

5 packages built:

yquake2
yquake2-all-games
yquake2-ctf
yquake2-ground-zero
yquake2-the-reckoning

Maintainer pings
cc @tadfisher for testing.

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

5 packages built:

yquake2
yquake2-all-games
yquake2-ctf
yquake2-ground-zero
yquake2-the-reckoning

Since https://github.com/NixOS/nixpkgs/pull/156360 also contains this update, this PR can be closed


[FLOC-3608] Replace PRecord with PClass.

https://clusterhq.atlassian.net/browse/FLOC-3608
There are a couple of references to PRecord left in code that deals explicitly with both (persistence).
Also, NodeState was left as a PRecord, since .items() is called on it.

Thanks Tom, it's great to see this finally happen!
One comment about a change that looks unrelated. Please back that out & merge the rest once the tests pass / fail reasonably.