setDuration doesnt work on AnimatorSet

I have created an animation which splits an image horizontaly and translate both parts in opposite direction :
final AnimatorSet mSetAnim = new AnimatorSet();
final Animator topAnim = ObjectAnimator.ofFloat(topImage, "translationY", (bmp.getHeight() / 2) * -1);
final Animator bottomAnim = ObjectAnimator.ofFloat(bottomImage, "translationY", bmp.getHeight() / 2);
mSetAnim.setDuration(duration);
mSetAnim.playTogether(topAnim, bottomAnim);
mSetAnim.start();
No matter what value i put in 'duration' it doesnt seem to have any affect. The animation duration stays the same - half a second more or less.

you can try this:
final AnimatorSet mSetAnim = new AnimatorSet();
final Animator topAnim = ObjectAnimator.ofFloat(topImage, "translationY", (bmp.getHeight() / 2) * -1).setDuration(duration);
final Animator bottomAnim = ObjectAnimator.ofFloat(bottomImage, "translationY", bmp.getHeight() / 2).setDuration(duration);
mSetAnim.playTogether(topAnim, bottomAnim);
mSetAnim.start();

in my phone, it doesn't work


Ants + fasthttp

Hello,
I am using Ants with fasthttp. Is it possible that this both packages are not compatible?
My Program fetchs 15000 rows from a MysqlDB and request the HTML code for parse 2 strings out of it.
My memory usage is crazy 1,9g with only 434 open socket files = 434 connections (maximum was around 2800):
15921 jonny     20   0 3093,3m   1,9g   6,9m S   7,3  25,1  11:59.63 goCheckResults
root@jdebian:~$ ls -l /proc/15921/fd | wc -l
434
in main():
client = &fasthttp.Client{
	ReadTimeout:         time.Duration(60) * time.Second,
	MaxIdleConnDuration: time.Duration(600) * time.Second,
	Dial: func(addr string) (net.Conn, error) {
		return fasthttp.DialTimeout(addr, time.Duration(60) * time.Second)
	},
	TLSConfig: &tls.Config{InsecureSkipVerify: true},
}
var wg sync.WaitGroup
p, _ := ants.NewPoolWithFunc(25, func(i interface{}) {
	processRow(i)
	wg.Done()
})
defer p.Release()

i := 0
for results.Next() {
	var current Job

	err = results.Scan(&current....)

	wg.Add(1)
	_ = p.Invoke(&current)
	i++
}
wg.Wait()

The function processRow calls
row := i.(*Job)

req := fasthttp.AcquireRequest()
defer fasthttp.ReleaseRequest(req)

req.SetRequestURI(row.url)
req.Header.SetMethod("GET")
req.Header.Add("User-Agent", userAgent)

//println(req.Header.String())

resp := fasthttp.AcquireResponse()
defer fasthttp.ReleaseResponse(resp)

//if err := client.Do(req, resp); err != nil {
if err := client.DoTimeout(req, resp, time.Duration(60) * time.Second); err != nil {
	return "", err
}

bodyBytes := resp.Body()
html := string(bodyBytes)

// parse using regex
// db.Exec (....) <- mysql query to update database

It is crazy how much memory usage this small program has.

It's unnecessary to use ants in fasthttp because there is already a goroutine pool in fasthttp which is also the prototype of ants, so using ants with fasthttp makes no improvement but performance loss.

I guess the WorkerPool in fasthttp is for Server use only. So this would not help solving the task.

workerPool serves incoming connections via a pool of workers
in FILO order, i.e. the most recently stopped worker will serve the next
incoming connection.

Sorry, I didn't check out the problem carefully before and thought you were talking about the server-side, have you tried not to use ants pool and what's the memory usage of that kind of situation?
If the memory usage is still high, it probably has nothing to do with ants.

I tried now to use it without ants pool and yes memory was the same, maybe a little bit higher. But from the logic side it must be higher without a pool, since the pool is to manage jobs one by one for each worker (limited to the worker). Based on my code with 25 workers the memory should be very less. (One job done and canceled, worker takes next job)
Calling go processRow(current) is like a rush without a stop or limit - its a more high concurrency than with a 25 worker pool. The job is done with go processRow() in 1/10 of the time of using ants. But on the other side i had to increase the ulimit very high to avoid too many sockets open error message. it is kind of unmanaged.
So im not sure what and why.. even with ants i had the too many sockets open error, so maybe ants did not manage the jobs correct? Im not sure, i am not a very experienced go programmer.

There is no way that ants doesn't control the concurrent amount correctly, what version of ants were you using?
You can add some debug code into your ants function and count how many sockets are opened by your program at the same time.

You could be right with "close any sockets after task"-issue. It could be the reason i have to increase the ulimit of open files (sockets in this case) before execution of the application:
I use:
defer fasthttp.ReleaseRequest(req)
defer fasthttp.ReleaseResponse(resp)

I checked the godoc https://godoc.org/github.com/valyala/fasthttp again, i dont see any other option to close the connection. In my opinion release should close the connection.
I checked even if there is a KeepAlive Option on new instance - there is no.
Any idea?

How are you measuring memory usage?
If you want to close keep-alive connections you should set a Connection: close header in your requests.
Or you could set https://godoc.org/github.com/valyala/fasthttp#Client.MaxIdleConnDuration to a second for example if you want to reuse the connection shortly but don't want to keep it around for long.

I measure using ps aux, top, cat /proc/*/status and cat /proc/*/smaps.
Ok i will add the req.Header.Add("Connection", "close") and give another try with ants.
Regarding MaxIdleConnDuration thank you for the information. In my case it is not necessary, i just do one request per host and am looking to close it fast to use less system resources.

My Application checked 2650 rows/urls. Took it from the MySQL DB passed it to the Ants Pool with 25 Workers. Requested the HTML Code of the Page and parsed it for two strings.
I added now the Connection: close to the request header and checked the results:
The open sockets are not increasing that much and that fast as before.. but they are still increasing:
root@jdebian:~$ ls -l /proc/2865/fd | wc -l
142

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2865 jonny     20   0    3,0g   2,2g   0,0g S  61,8  28,1   6:24.34 AntsgoCheckResu

root@jdebian:~$ cat /proc/2865/status
Name:   AntsgoCheckResu
Umask:  0022
State:  S (sleeping)
Tgid:   2865
Ngid:   0
Pid:    2865
PPid:   2839
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 24 25 27 29 30 44 46 109<PHONE_NUMBER>
NStgid: 2865
NSpid:  2865
NSpgid: 2865
NSsid:  2839
VmPeak:  3158000 kB
VmSize:  3158000 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:   2301028 kB
VmRSS:   2301028 kB
RssAnon:         2293980 kB
RssFile:            7048 kB
RssShmem:              0 kB
VmData:  2429984 kB
VmStk:       132 kB
VmExe:      3112 kB
VmLib:      1500 kB
VmPTE:      4648 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
CoreDumping:    0
Threads:        12
SigQ:   0/31255
SigPnd:<PHONE_NUMBER>000000
ShdPnd:<PHONE_NUMBER>000000
SigBlk:<PHONE_NUMBER>000000
SigIgn:<PHONE_NUMBER>000000
SigCgt: ffffffffffc1feff
CapInh:<PHONE_NUMBER>000000
CapPrm:<PHONE_NUMBER>000000
CapEff:<PHONE_NUMBER>000000
CapBnd: 0000003fffffffff
CapAmb:<PHONE_NUMBER>000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   f
Cpus_allowed_list:      0-3
Mems_allowed:   00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        227683
nonvoluntary_ctxt_switches:     522
root@jdebian:~$

Its a lot for 25 workers checking 2650 urls. For my logical understanding 25 workers -> each one takes a URL and request the HTML from it. Then do the parsing stuff.  So even when the HTML is 1MB each URL so we are in total at 25MB, some worker is faster, some slower.. lets increase it to the double size -> 50MB. So lets say the GC is very slow and need some time to recognise the current func() - call is not alive anymore, so lets triple the memory consumption -> we are on 150MB.
As you see the Application use 2,2g for sure and 3.0g "reserved".
As longer the Application run, as more resources it aquire. Around 2,2g it stucks.

Sounds like more memory than should be required. But keep in mind that fasthttp trades more memory usage for less CPU usage by reusing buffers.
What I would do next is use https://golang.org/pkg/net/http/pprof/ to see where the allocations are. Make sure to set runtime.MemProfileRate = 1 all the way at the top of your main function.
Also could you try using client.Do instead of client.DoTimeout? You already set a ReadTimeout on the client, you should also set a WriteTimeout of a couple of seconds.
client.DoTimeout will return after the timeout but won't close the connection so the request might still be running in the background. This could cause more open connections than you might expect.

Ok thank you for the advise, i will check it and we will see. Yes the memory consumption is abnormal huge. Good that you see it the same way. I was already worry in myself.
Yes i read already that fasthttp trades memory for cpu. But everything over 500MB for this task is crazy and unreal.

noAnts_NetHttp_Program / 50 rows=Urls:
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
5760 root      20   0  655.0m 179.8m   6.5m S   1.0  3.6   0:26.33 noAntsNetHTTP_g

real    1m0.275s
user    0m22.984s
sys     0m3.680s

noAnts_FastHttp_Program / 50 rows=Urls:
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5958 root      20   0  854.5m 387.6m   6.6m S   0.0  7.8   0:24.12 noAnts_goCheckR

real    2m57.990s
user    0m24.220s
sys     0m5.156s

Ofc time measuring is difficult because of network latency but i took the same 50 urls.. so in one way its not 100% reliable but on the other side it is telling us something.

Ants_NetHttp_Program / 50 rows=Urls / 25 Ants Worker:
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
6608 root      20   0  581.0m 144.0m   6.5m S  8.7  2.9   0:27.46 AntsNetHTTPgoCh

real    0m50.328s
user    0m23.448s
sys     0m3.852s

Ants_FastHttp_Program / 50 rows=Urls / 25 Ants Worker:
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
6517 root      20   0  782.5m 383.5m   6.0m S   0.0  7.7   0:27.60 AntsgoCheckResu

real    2m9.341s
user    0m23.172s
sys     0m4.476s

Im on the end with my knowledge and really dont know how to continue this task with golang. Maybe i have some mistake in my code, but the code is 200 lines.. and Golang is very simple.. so i dont think there can be one/such a bad mistake.
With Net/Http the Memory Usage is lower than with FastHttp but even this memory consumption is high in my opinion. 50 seconds or 2 minutes for 50 http requests? If i use the BulkOpener Extension for Chrome and Open the 50 Urls it takes same time. It is strange, i dont trust all this numbers - i have even better numbers with php+pthreads (except the crazy high cpu usage).

Would you be willing to share your code in private with me so I can see what can be improved?

Not just willing i would appreciate it much - so i even can learn. I will send it to you by email in a few minutes. Already now i wanna thank you.


Infinite loop when consulting syntax error source from stdin

Following shell script will cause infinite loop in Trealla:
tpl -q --consult <<EOF
:- initialization(main).

main := write(hi).
EOF

I have redo a fix for #58, I think previous fix is the cause of this issue, see PR #63 for details.


[swc-plugin-angular] Add vitest support

Using inline commonjs require() was an interesting quick win but switching to using ES imports will allow us to support vitest and any other modern tools.

What about making the module system configurable so we can support both and still have first class Jest support?

TL;DR: emitting ES imports allows users to choose the module type.
Actually, SWC is already doing that for us using the module.type option.
That is why the right way is to emit ES imports and let SWC transform that to commonjs require or let it as is depending on the module.type option.
BTW, when using @swc/jest, this option is a no-op because @swc/jest will override it depending on Jest's configuration: https://github.com/swc-project/pkgs/blob/f035da2969b45ab9b1810fc2b93be9798ccf8069/packages/jest/index.ts#L55


Error, failed to detect gcc version of backend compiler 'gcc'.

Hello, i have an problem to compile with nuitka.
I am using the command:
python -m nuitka --windows-icon-from-ico=ico.ico --onefile --windows-company-name=Zuna --windows-product-version=1.0 --plugin-enable=tk-inter main.py
Im getting the error: FATAL: Error, failed to detect gcc version of backend compiler 'gcc'.
libwinpthread-1.dll wasnt found.
Any Solutions or help please?

In the template, I have made it clear, that not filling out the issue template is not acceptable. I am closing this kind of report as invalid. The main reason is that I do not want to be left guessing. For you it's easy to erase the issue template and expect me to ask you questions only as necessary, but I cannot do that. I would much rather wait for you to create a new report, fill out the template, or wait for somebody with the necessary skill to do it.
In short: No issue template, no fun.


Rotate_y property bug, 3d particles

Godot version
v3.4 beta2 official
System information
Windows 8.1, GLES3, Nvidia GeForce GT 520 (391.35)
Issue description
when the "rotate_Y" flag is set the particles ignore the emission shape and motion, instead they just stay in the center.
demonstration and comparison . On the left, Godot 3.3.2 official and on the right, Godot 3.4 beta 2 official.
https://user-images.githubusercontent.com/76788560/127715212-b501d495-7a0b-4151-8fb8-48410ac08f7c.mp4
Steps to reproduce

create a new scene.
add a ¨particles 3d¨ node.
set the emission shape to "box".
in the process material set the flag "rotate_Y".
set angular velocity to 1

Minimal reproduction project
particles_bug.zip

Related to https://github.com/godotengine/godot/issues/51043.

Fixed by #51690.


Update the simple css into tailwind css

use tailwind css instead of making css file because css file create some issues in website ui


Overriding template CSS with custom styles

Describe the problem
I am trying to update some styles of the template that gets generated by the web page. I think having a stylesheet that gets imported on the header with custom styles would be a great. I can see that magidoc already supports moving static assets to the website root.
Though I can see that there is no way to update the HTML files that are generated to import these assets in the header or anywhere else (other than the app logo and favicon).
Describe the proposed solution
Solution 1 (preferred): Static CSS files in all HTML headers
Add a static css file like so:
/static/styles/custom-styles.css
Then, have a property in the magidoc.mjs file to have styles get imported in the HTML:
module.exports = {
  ...
  website: {
    customStyleSheets: ['styles/custom-styles.css']
  }
}

This can maybe be even more generic to add anything to <head>
Solution 2: Just paste Custom styles in a style tag in the HTML
module.exports = {
  website: {
    customStyles: `
      .overrideClass {
        color: "#e3e3e3"
      }
    `,
  }
}

The contents of customStyles then just get added to the HTML header in a <style> tag.
Importance
Nice to have

Just for my own notes, seems like this can be added somewhere here:
https://github.com/magidoc-org/magidoc/blob/main/packages/starters/carbon-multi-page/src/routes/%2Blayout.svelte#L64-L66
After adding the option to config (not sure how, yet).

I didn't get an answer from you, but I added the feature as described here since I had some time today. Let me know what you think :smile:

This works great, thanks so much for the quick implementation! Sorry about the late response here, but I think this is exactly what I needed :)


Add "podman volume" command

Add support for podman volume and its subcommands.
The commands supported are:
podman volume create
podman volume inspect
podman volume ls
podman volume rm
podman volume prune
This is a tool to manage volumes used by podman. For now it only handle
named volumes, but eventually it will handle all volumes used by podman.
Signed-off-by: umohnani8<EMAIL_ADDRESS>

volume driver support is still WIP and working on adding the tests.
This allows users to create volumes using the podman volume tool, or users can create named volumes directly when doing a podman run or create. (e.g podman run -v foo:/foo alpine sh) and it will create foo, under /var/lib/containers/storage/volume.
Eventually, I believe all the volumes should be created under /var/lib/containers/storage/volume. That means if we do podman run /path/to/data/ondisk:/path/in/container alpine, we will copy the contents from /path/to/data/ondisk to /var/lib/containers/storage/volumes/random_vol_name and mount that into the container. This would allow users to easily manage all their volumes in one place.
@mheon could you please double check that I didn't miss anything in the DB stuff.

/approve

@umohnani8 We should never copy the "bind" mount volumes into local storage.  Users expect the Bind mount volumes to share the content with the outside world.
I disagree with your statement https://github.com/containers/libpod/pull/1904#issuecomment-443195631

One thing you need to make sure of is that named volumes you create have the SELinux label container_file_t on them.

Awesome job, now got to fix the failing test above.

minor nit in commit description, "cubcomands" to "subcommands"

@umohnani8 We should never copy the "bind" mount volumes into local storage. Users expect the Bind mount volumes to share the content with the outside world.
I disagree with your statement #1904 (comment)

@rhatdan yup you are right! I am not sure why I thought docker did that, sorry my bad.

Question: do we ever intend on supporting volume drivers? I think the way Docker handles them is really poorly suited to our daemonless workflow...
@rhatdan @umohnani8 thoughts?

@mheon I would like to, I am not sure why daemonless would be a problem, but discuss on IRC if you want.

Forgot to mention, I'm assuming tests are inbound?

@rhatdan not sure what in README.md needs to be updated, but I updated commands.md.
@TomSweeneyRedHat yeah will add tests in a bit, sort of moved on to work on other things for a bit :)

bot, retest this please

bot, retest this please

@umohnani8 Rebase this and it should fix the fedora 28 issue.

Rebased

@umohnani8 looks like some of the rootless integration tests aren't happy.

@umohnani8 Where, in Cirrus? There's a "More details at CirrusCI..." link somewhere near the bottom of the page that gets you full logs

/lgtm


Revert "Support antrea-agent UBI8 based image"

Reverts antrea-io/antrea#3367

Codecov Report

Merging #3373 (6563d62) into main (b147eb2) will decrease coverage by 18.75%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #3373       +/-   ##
===========================================
- Coverage   60.89%   42.14%   -18.76%
===========================================
  Files         268      200       -68
  Lines       26753    24178     -2575
===========================================
- Hits        16292    10190     -6102
- Misses       8655    12928     +4273
+ Partials     1806     1060      -746

Flag
Coverage Δ

kind-e2e-tests
?

unit-tests
42.14% <ø> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.


JS/TS Guidelines: Fit content to new Guidelines structure

Description
Per the MQ Guidelines initiative to fill gaps in the guidelines across languages, we are moving to a new common structure for the guidelines and calling out areas where there are content gaps -- i.e. one or more of the other language guidelines have guidance that is not language-specific that is not represented in this language's guidelines.
Details
Design
Please add guidance for the following areas:

[x] How the API for setting the service version should be designed
[x] Service client immutability
[ ] Conditional request methods
[ ] Model types
[ ] Model type naming conventions
[ ] Azure Core type usage
[ ] Extensible enums, if relevant

Implementation
Please add guidance for the following areas:

[ ] HttpPipeline usage and custom policies
[ ] Setting the user-agent string

Note
For the implementation, the below structure is based on .NET content.  It is intended to provide implementation details for things that aren't visible in the public API, with a TOC that largely maps to the API Design section in the Design TOC, with sections filled for areas where you already have content written.  Feel free to reach out with any questions.
New Structure
(Numbers for ease of reading here, but won't be shown in the guidelines page TOC)
For further details, please see the restructured .NET guidelines here.
Design

Introduction

Design Principles
General Guidelines
Non-HTTP Libraries

Azure SDK API Design

Service Client

Service Client Constructors

Client Configuration
Setting the Service Version
Sync and Async
Client Immutability

Service Methods

Naming
Return Types
Cancellation

Service Method Parameters

Options Parameters
Parameter Validation

Methods Returning Collections (Paging)
Methods Invoking Long Running Operations
Conditional Request Methods
Hierarchical Clients

Supporting Types

Model Types
Enumerations
Using Azure Core Types
Using Primitive Types

Exceptions (Errors)
Authentication
Namespaces
Support for Mocking

Azure SDK Libraries (Packages)

Packaging

Service-Specific Common Libraries

Versioning
Dependencies
Native Code
Doc Comments

Repository Guidelines

Documentation Style
README
Samples

Implementation

API Implementation

Service Client

Service Methods

HttpPipeline
HttpPipelinePolicy/Custom Policies

Service Method Parameters

Parameter Validation

Supporting Types
1. Serialization
2. Enumeration-like Structs

SDK Feature Implementation

Configuration
Logging
Distributed Tracing
Telemetry

Testing
Language-specific other

@salameer FYI

I don't remember what service client immutability was about but it likely is irrelevant to JS so I've marked it complete.

https://github.com/Azure/azure-sdk/pull/2150 - versioning
https://github.com/Azure/azure-sdk/pull/2151 - conditional requests
https://github.com/Azure/azure-sdk/pull/2155 - model types

https://github.com/Azure/azure-sdk/pull/2156 - core types


bug: ion-card button ignores set color

If you set a ion-card to render as a button <ion-card button="true"> the rendered button will ignore the background color coming from color: <ion-card button="true" color="primary">.
The button will show the right text color but only white as background color.
Ionic version 5.0.0

Thanks for the issue. This issue has already been resolved and will be available in an upcoming release of Ionic Framework.


Add flag to skip checking resources when fully delete app

What this PR does / why we need it:
Add flag to skip checking resources when fully deletes app.
Which issue(s) this PR fixes:
Fixes #577
Does this PR introduce a user-facing change?
Add `--dangerous-disable-checking-app-deletion` flag to  disable checking resources when fully deletes app #594

Additional Notes for your reviewer:

Relevant carvel.dev docs will be added as soon as possible
I'm not sure about the impact of remaining resources on test envrionment, so I didn't write e2e test for this flag

Review Checklist:

[x] Follows the developer guidelines
[ ] Relevant tests are added or updated
[ ] Relevant docs in this repo added or updated
[ ] Relevant carvel.dev docs added or updated in a separate PR and there's
a link to that PR
[ ] Code is at least as readable and maintainable as it was before this
change

Additional documentation e.g., Proposal, usage docs, etc.:

Hey @firgavin! Were you able to sign the cla again with the relevant information? Do let me know if you would need any help :)

Changes look good to me (we could probably add an e2e test although we can also do it as part of another PR as well) but it seems it's really hard to please the CLA bot. @firgavin Do let me know if there's anyway I can help or if there's any feedback you would like to share about the signing process.

Hi @praveenrewar - I have signed the Individual CLA, and there’s a warning message that says I should provide the name of the organization or indicate none. But where to provide?😂 Any suggestion? Thanks.

Hi @firgavin! Thanks for sharing the details, I have asked for help from folks internally and will let you know once I have an update. Thanks for being patient :)

Hi @firgavin, In the CLA form, there should be a field “Organization” (probably at the very bottom). Let me know if you are not able to find it or face any issue.

Hi @praveenrewar - Thanks for your feedback! Somehow I cannot find this field...Not sure if I am missing something. Here’s the screenshot:

Thanks for sharing the screenshot @firgavin. I have shared it with the team, hoping to get some feedback soon :)

Hi @firgavin can you please try to sign the CLA again, the warning should be gone now.

Hi @firgavin I really wish I could click that merge button but it seems that the legal team won’t be able to approve your CLA based on the organisation you are working at 😞
Please feel free to reach out for more details.

Reopening

Hi @firgavin! As a CNCF sandbox project, we have now moved to a vendor neutral org (carvel-dev) and are using DCO instead of VMware CLA, so would you like to rebase on develop and try to force push so that the DCO check gets triggered?

We could work towards having this change rebased and merged with a separate PR if this something you have a case for @aberres


Node needs to check for provider data at the start and create a record if necessary

Instead of getting the block number while initalizing the providers, the node should call Convenience to get the block number + provider data:
https://github.com/api3dao/airnode/blob/696ebad7207b02ffba9b85f2bb57430425c7cd32/packages/protocol/contracts/interfaces/IConvenience.sol#L9-L16
Before calling this, the node computes providerId off-chain as keccak256(address of path 'm'). If this method returns xpub as '', it means that the record for this provider hasn't been created on this chain yet. Then, the node should call this:
https://github.com/api3dao/airnode/blob/696ebad7207b02ffba9b85f2bb57430425c7cd32/packages/protocol/contracts/interfaces/IProviderStore.sol#L36-L42
using the wallet with path m, where admin is from config.json and xpub is derived from the private key.
Note that this method is payable. This is because the provider will have to send some ETH to the wallet with path m for the node to be able to do this. While doing this, the node will send the remaining funds to admin.

See:
https://github.com/api3dao/airnode/blob/696ebad7207b02ffba9b85f2bb57430425c7cd32/packages/protocol/test/UserFlow.js#L120
Note that the master wallet is funded beforehand here:
https://github.com/api3dao/airnode/blob/696ebad7207b02ffba9b85f2bb57430425c7cd32/packages/protocol/test/UserFlow.js#L92


Unable to install a package with a SNAPSHOT version

I am trying to install a package via the provisioning model on top of Sling Starter 12-SNAPSHOT. I modified the sling starter in the following manner:
diff --git a/src/main/provisioning/composum.txt b/src/main/provisioning/composum.txt
index b7d6175..56e6a43 100644
--- a/src/main/provisioning/composum.txt
+++ b/src/main/provisioning/composum.txt
@@ -26,7 +26,8 @@
   com.composum.sling.core/composum-sling-core-jslibs/${composum.nodes.version}
   com.composum.sling.core/composum-sling-user-management/${composum.nodes.version}
   com.composum.sling.core/composum-sling-package-manager/${composum.nodes.version}
-  org.apache.jackrabbit.vault/org.apache.jackrabbit.vault/3.2.4
+  com.composum.sling.core.osgi/composum-sling-osgi-package-installer/${composum.nodes.version}
+  org.apache.jackrabbit.vault/org.apache.jackrabbit.vault/3.2.8

 [configurations]

diff --git a/src/main/provisioning/sling.txt b/src/main/provisioning/sling.txt
index ac89592..3387c8e 100644
--- a/src/main/provisioning/sling.txt
+++ b/src/main/provisioning/sling.txt
@@ -83,6 +83,7 @@
 [artifacts]
     # Add the Slingshot Sample provisioning model
     org.apache.sling/org.apache.sling.sample.slingshot/0.9.0/slingfeature/slingfeature
+    org.apache.sling/sling-cp-demo-5/1.0-SNAPSHOT/zip
     # Default Starter content
     org.apache.sling/org.apache.sling.starter.content/1.0.6
     commons-collections/commons-collections/3.2.2

The project is attached to this issue: sling-cp-demo-5.zip.
When starting up sling the package remains untransformed and I see the following entries in the log:
30.08.2019 17:28:45.477 *INFO* [OsgiInstallerImpl] com.composum.sling.core.pckginstall.PackageTransformer transforming of package 'sling-cp-demo-5' with installation.hint '0'
30.08.2019 17:28:45.477 *WARN* [OsgiInstallerImpl] com.composum.sling.core.pckginstall.PackageTransformer Exception transforming RegisteredResource: java.lang.IllegalArgumentException: invalid version "1.0.SNAPSHOT": non-numeric "SNAPSHOT"

If I change the version 1.0, then the package is installed.

Hi!
Is this still relevant? I suppose not, since Starter 12 switched to the feature model, right? If it is: how do I reproduce this problem with the feature model? Thanks!

Thanks for coming back to this. It's not relevant since with https://github.com/apache/sling-org-apache-sling-starter/commit/ded7e486c7868cc0508a82e333605aed5749afb1 / https://issues.apache.org/jira/browse/SLING-6196 we moved to our own content package installer. Feel free to close.

OK, thank you for the update!


[Draft] Exclude deps & split into optional parts

This PR:

exclude weasyprint / matplotlib & mplcursors from base package -> optional-deps
split synth and visualization into different modules for easier handling
move to opencv-python-headless (exclude gui stuff)

Any feedback is welcome :hugs:
Closes: #1052 #1540 #1545

Thanks for the PR! I haven't reviewed all files, only the extra def part, which I think we should handle before the rest. Probably doing separate orthogonal extras, and then figuring out a good logic to combine those or add proper installation instructions

Mh i think we should keep the dependency split and handling the optional dependencies in the same PR (at the end it's not much new logic) because it's in context and so it's easier to get back to it.
About the different install options i was also thinking about but at the end i would say it's better to reduce the different options to base and full (with optional deps) because otherwise the user can install optional dependencies on it's own if required/needed (the exception messages are clear enough and easy to understand additional this impacts only .show() and .from_url() which is also updated in the readme with a comment # requires weasyprint to be installed).
For the future i don't think that we will add much more optional dependencies so i would say it's better to keep the installation jungle to a minimum :sweat_smile:
@odulcy-mindee wdyt ?

moved to viz and html as options :)
i would like to keep the "full" installations for the CI jobs instead of cherry picking the install versions depending on the jobs
api tests would fail if there is an export/import problem because the api installs only python-doctr[tf] without weasyprint / matplotlip & mplcursors

@frgfm feel free to comment later on 😊 @odulcy-mindee as discussed merge today

This PR:

exclude weasyprint / matplotlib & mplcursors from base package -> optional-deps
split synth and visualization into different modules for easier handling

Any feedback is welcome 🤗
Closes: #1052 #1540 #1545

Hey, Are there any plans to release this update soon? As the current "pip versions" have the weasyprint issue or else are you planning to keep this only a part of building from source (cloning the repo)?

This PR:

exclude weasyprint / matplotlib & mplcursors from base package -> optional-deps
split synth and visualization into different modules for easier handling

Any feedback is welcome 🤗
Closes: #1052 #1540 #1545

Hey, Are there any plans to release this update soon? As the current "pip versions" have the weasyprint issue or else are you planning to keep this only a part of building from source (cloning the repo)?

Hey @Suvoo 👋,
We have planned to do the next release end of July / beginning August :)

Thanks, will use source build till then👍


 Desktop only. Will do mobile when this gets thumbs
@chromakode visdiff seems to be freaked out (reliably).


[Feature Request] [MGS3 & MGS2]: Analog input

Please add support for Analog Input like MGSM2FIX. It's definitely better, especially for supporting more controllers with fewer issues. This is the only thing that this mod lacks.

The analog input that MGSM2Fix provides is for the analog stick, which was fixed in an official patch. MGS2 and MGS3 on PC already have perfectly working analog stuck functionality.

The analog input that MGSM2Fix provides is for the analog stick, which was fixed in an official patch. MGS2 and MGS3 on PC already have perfectly working analog stick functionality.

It's better, and i want it. Please.

The analog input that MGSM2Fix provides is for the analog stick, which was fixed in an official patch. MGS2 and MGS3 on PC already have perfectly working analog stick functionality.

It's better, and i want it. Please.

What's better? MGS2 and MGS3 already have analog stick support, you're asking for something that's already there.

It's better, and i want it. Please.

MGSM2Fix hasn't provided analog support in over 7 months as Konami added it natively themselves in patch 1.5.0. You thinking that MGSM2Fix's analog support is better is purely a placebo effect as the analog you're using while it's installed is literally the analog built into the game.


Tidy git repos with jupyter notebooks

See https://gist.github.com/pbugnion/ea2797393033b54674af

NB this suppresses the output for version control, so learners will have to run the notebook to see what happens (this is what we want most of the time anyways, so that's good).

Maintainers would need to install jq


Incorrect aspect ratio displayed for thumbnails

Describe the bug
I've been using the docker nightly build and have noticed recently that the incorrect aspect ratio is being used for thumbnails. I switched over from the latest docker build but noticed it had memory issues but aspect ratio was displayed correctly with that version.
Unfortunately, I don't have any particular reproduction steps, it just seems to happen with most of my pictures (although some are displayed correctly for some reason)
Photo/video (optional) that causes the bug
An example photo:

Screenshots
However, the thumbnail is displayed with equal height and width

Environment (please complete the following information):

I'm currently running PiGallery on a Raspberry Pi 4, 64-bit enabled within docker
I've been able to repro on both Chrome and Firefox (unable to load on safari)

Used app version:

docker-nightly (specifically alpine)

Happy to provide any more details/logs I can. As far as I can tell, no errors appeared in the logs during thumbnail creation or indexing

looking through past issues, this looks like it's related to https://github.com/bpatrik/pigallery2/issues/172 and https://github.com/bpatrik/pigallery2/issues/19

yes for some reason I could not figure out why these photos are rotated. I'll try to give an other look with your photo.

This also happens for me on the nightly build. The same picture (thumbnail) is shown correctly in the album art though.

Yes its a new issue. With 1.8.0 the error would occure once you zoom in.  Could not find the source of it yet.

I'm not sure what you mean with "rotated". I was able to fix this behavior by adding object-fit: cover to the img. This also seems to be relatively well supported: https://caniuse.com/object-fit.

Thanks for the PR, but I'm not sure that it will fix the issue.
The issue is the following:

Some of the photos are rotated in the bitmap, but the exif data signals that rotation (more here). Since recently, browser can handle it and based on the exif data rotate it back.
Grid is rendered based on the information that the server can read from the photo. It can read the original (bitmap) width and height and the info in the exif (exif width+ height  + orientation)
Some of the photos (seems to be related to Iphone) are correctly rotated in the bitmap, but exif data suggest that their orientation is still not correct. Others photos are not correctly rotated and exif data also suggest their orientation is not correct.

I tried to resolve this, bit on the server side I could not figure out in which case should I rotate the dimension(width and height) of the photo and in which case not. I found that taking the orientation data into account produces more valid results than the other way around.
This is the code in question:
https://github.com/bpatrik/pigallery2/blob/8c2654980d74cc8735c1ed965fa981f25bfca04e/src/backend/model/threading/MetadataLoader.ts#L88
I think setting object-fit:cover will result in some cropping, isn't it?

Sorry, I did not test in Chrome. Yes in Firefox it gets cropped a little, but is not distorted anymore.

Lets keep the conversation in #212 as that has more interactions. Closing this as it a duplicate.


Out of date dependencies?

Hi @glichtner, looking into the project it seems magicgui is listed as a dependency but not used anymore?
Also scikit-image seems to be used  https://github.com/search?q=repo%3Aglichtner%2Fnapari-pystackreg skimage&type=code but is not being declared as a dependency.
Cheers!

Hi @goanpeca,
Thanks for reporting. I've removed the magicgui dependency and added scikit-image for testing dependencies (however, both packages are installed by napari anyway).
Thanks,
Gregor

Hi @glichtner thanks for the fixes.
As a best practice suggestion, even if napari (or any other dependency) installs them, any explicitly declared dependency (as in imported and used by this package) should be listed explicitly as a dependency of this package.
Cheers!

Hey,
of course I agree and I'm thankful that you made me aware that I had incorrectly specified the dependencies. Just wanted to mention it as in "as of the current version of napari, these dependencies are installed and therefore although I have updated the dependencies in the git repo, I haven't released a new version for napari-pystackreg just because of the incorrectly specified dependencies" :)
Thanks again,
Gregor

Hello!
Happy to help! And no rush on a new release, I with other are helping  in the creation and maintenance of conda packages (and the recipes) for napari plugins so I try to keep and eye on any issues that appear.
Thanks again for the swift response!
Cheers 🚀


Fix bytes -> str handling in linux.dig action

The linux.dig action Python script didn't work on Python 3 due to bytes/string encoding issues. This PR fixes that.
TODO:

[x] Add tests?
[x] Update changelog

For the netstat action there really isn’t much to do since it’s a straight remote-shell-cmd action, and it only has a single user-specified parameter, args. So this one probably doesn’t need a unit test.
Same story for the cp, mv, netstat_grep, pkill, rm, rsync, scp, and vmstat actions.
I’m a little confused why the file_touch action doesn’t use the touch command…that could probably be changed, but if you do I would rename the existing file_touch action to something like file_init.
For the service action, it’s a remote-shell-script but it’s actually a Python script, so you can probably import directly from it, mock up and monkeypatch the sys and subprocess modules in it, and then assert that the right command arguments are passed to subprocess.call.
check_loadavg needs some tests, I would mock up and monkeypatch loadAvgFile and cpuInfoFile, override sys.stdout and check its output. Once you’ve got some tests, it then needs to be updated to support both Python 2 and 3 (except Exception:).
check_processes needs tests - you don’t need to test every method, but I would test at least byState, byPid, and byName. First, choose a pid number and set the action instance's myPid property to it, then create a test fixture directory that contains directories with purely numeric names, a few with non-numeric names, and a name that matches your chosen myPid number (say: 3456. Make sure you put stat and cmdline files in each pid directory:
proc_fixture/
proc_fixture/1234/
proc_fixture/1234/stat
proc_fixture/1234/cmdline
proc_fixture/2345/
proc_fixture/2345/stat
proc_fixture/2345/cmdline
proc_fixture/3456/
proc_fixture/3456/stat
proc_fixture/3456/cmdline
proc_fixture/abcd/
proc_fixture/abcd/stat
proc_fixture/abcd/cmdline
proc_fixture/4567/
proc_fixture/4567/stat
proc_fixture/4567/cmdline

Set the procDir property to your fixture directory, override sys.stdout and check that against a known value.
For wait_for_ssh, we need to check two of the three use cases: (1) unconnectable host (SSH timeout), and (2) instantly connectable host (eg: localhost). Use test_action_dig.py as a template for this.
If you need help standing up a test environment to begin with, I would dig through the Travis config and rerun the same commands in a VM.


Is 'x' in darcy flow datasets represents permeability factor or forced function?

Sorry to the bother,
I am a little confused about the 'True or False' natural value in darcy datasets. which kind of data pairs do the datasets contains, the coefficient-output pair a-u or forced functions-output pair f-u? I don't know what the 'True or False' or '1 or 0' value represents.

Do you mean in the small darcy example we included?

Closing as inactive, feel free to reopen.


Bug for exception handler

Describe the bug
When trying to define global exception handler, catching user defined exception fails with error "Caught handled exception, but response already started."
def custom_exception_handler(
request: Request, exception: CustomNotFoundError
) -> JSONResponse:
return JSONResponse(
status_code=status.HTTP_404_NOT_FOUND, content={"message": f"Oops! {exception.name}"}
)
exception_handlers = {CustomNotFoundError: custom_exception_handler}
app = FastAPI(
title="Root app",
version="0.1.0",
exception_handlers=exception_handlers,
)
app.include_router(api_router)
app = VersionedFastAPI(
app,
version_format=f"{MAJOR_PLACEHOLDER}",
prefix_format=f"/v{MAJOR_PLACEHOLDER}",
default_version=(DEFAULT_MAJOR_VERSION, DEFAULT_MINOR_VERSION),
exception_handlers=exception_handlers,
)
To Reproduce
Steps to reproduce the behavior:

initialize app using VersionedFastAPI
make a request to service that raise user defined exception CustomNotFoundError
returns a Http status 500 with error "Caught handled exception, but response already started."

Expected behavior
Global exception handler should catch CustomNotFoundError exception and return HTTP_404_NOT_FOUND with message
Additional context
**kwargs, should be passed to Fastapi in the constructor of VersionedFastAPI like below:
versioned_app = FastAPI(
title=app.title,
description=app.description,
version=semver,
openapi_prefix=prefix,
**kwargs,
)

Experiencing the same. This workaround seems to fix it, though it's clearly not ideal:
app = VersionedFastAPI(app, ...)

for sub_app in app.routes:
    if hasattr(sub_app.app, "add_exception_handler"):
        sub_app.app.add_exception_handler(CustomNotFoundError, custom_exception_handler)

I think it will be good to solve it in the coming version.
Do you have any plan for it?

The solution from bhandanyan-nomad above solved the problem for me, but I adapted it to be a little more automatic. In his version, you need to explicitly list the exception handlers to add. This adaptation gets the list of existing exception handlers from the original and applies them all to the subapps. This way I can be lazy and not have to specifically keep track of my exception handlers.
handlers_to_apply = {}
for ex, func in app.exception_handlers.items():
    handlers_to_apply[ex]=func

app = VersionedFastAPI(app, ...)

for sub_app in app.routes:
    if hasattr(sub_app.app, "add_exception_handler"):
        for ex, func in handlers_to_apply.items():
            sub_app.app.add_exception_handler(ex, func)

I would also like to see this resolved in future versions...

+1 we are hitting this also

+1 for this issue. Could be related to #40

+1 I hope it will be good to solve it in the coming version.

add_exception_handler

Can you show the preview of the folder structure.. I'm trying to implement the same however it's not allowing me. I'm currently having routes specified in different folders as compared to my main file.

@bhandanyan-nomad thanks so much for your solution, this just cost me 1.5 days of my life :D

+1 I am encountering the same issue.

+1 We are encountering the same issue as well.


Ice Phishing Update

Ice Phishing Bot Update

[x] Update a bot logic/test/documentation

Changes

Fix EtherScan url (urlContractCreation) which fetched only the first page of results
Added one more EtherScan error message check (Query Timeout)
Created a separate config.js file with the etherscanApis (from the .json) as it helped with the tests and it's also needed (to be separate and .js) for the obsfuscation
Created Info type/severity alert for EOA with high nonce/Verified contract with low number of txs
For verified contracts added:

Check the creator against the ScamSniffer DB and create an alert
Check against the Suspicious Contract Creation bot and create an alert (Also pass the suspicious contract's creator to the metadata

do you also have these block explorer error occured errors?

@0xtaf, have you tried adding an API token? These must then be reduced (although not disappear completely)

do you also have these block explorer error occured errors?

@0xtaf, have you tried adding an API token? These must then be reduced (although not disappear completely)

yes it definitely reduced them 👍


feat: improve ChainAdapter typings

This adds a ChainSpecificAdapterProps<T, U, V> type as proposed by @reidrankin in shapeshift/web#704 and extends ChainAdapter with a single usage of it, for ChainTypes.Ethereum.
ChainSpecificAdapterProps is to be used as an intersection with ChainAdapter and allows to declare chain-specific properties for each chain.
Example usage: https://github.com/shapeshift/web/blob/65ea158bdba3623842eec4cb919bf3f650ae5bd7/src/components/Modals/Send/views/Address.tsx#L83

as discussed, i think this is a much simpler/cleaner approach
https://canary.discord.com/channels/@me/929088734350168095/933783494818164846
@reidrankin i appreciate the aggressive typing here, but have concerns around maintainability.
what do you think of the simpler ?. approach?

@cjthompson thoughts?

I agree with Reid. Stricter typing is preferred


[FEATURE] Data Deduplication Support

Is your feature request related to a problem? Please describe (👍 if you like this request)
There are volumes which containing repetitive data, and I would like to have the option for those volumes to have deduplication. This would not only save space, but improves performance when replicating those volumes.
Describe the solution you'd like
To allow deduplication, the most practical way is on a filesystem level, so we can choose eg.: btrfs or zfs
Describe alternatives you've considered
Second option is a block level deduplication, which can be done by longhorn itself, however this would need much more effort.
Additional context
This would be really useful for CI/CD use cases where the output is and logs are really similar, but can grow fast.

Yeah, as you mentioned, you can use zfs supporting deduplication for now, but we didn't check its stabability in Longhorn for now. What you request is related to sharding support. After implementing the feature, the deduplication is theoretically doable.

Of course I would use something that is supported ;) Thanks for the feedback!

Besides of ext4 and xfs, we can check the zfs which is also a popular filesystem.
cc @innobead @shuo-wu @PhanLe1010

@derekbit What about XFS's reflink support. Is this support with Longhorn?

@derekbit What about XFS's reflink support. Is this supported by Longhorn?

Longhorn 1.4.0 supports mkfsParams setting for storage class, so you can customize the mkfs.xfs options. Go check https://longhorn.io/docs/1.4.0/volumes-and-nodes/create-volumes/#creating-longhorn-volumes-with-kubectl

This is just one datapoint but I am running proxmox server with a LSI 9300-16i (IT mode) with 4x 1.92TB Intel D3-4510 with zfs (128k record size and 16k vol block size) on hardware:

ASUS w680 Pro ACE motherboard
Intel i9 13900k
DDR5 ECC RAM 4800

My current workloads are very simple as shown in the screenshot but everything seems to be working fine with default settings (only increased some timeout values to reduce flapping/rebuilding during node restarts). I will say though zfs performance is tricky for consumer/homelab set ups and without a proper set up (dram and plp on SSDs, HBA/IT controller, etc.), your performance will suffer and may lead users to think it's an issue with longhorn + zfs but may just be an issue with zfs + hardware. If you have the right tuning (ashift, atime, record size, block size, etc.) and hardware, zfs can be very performant and reliable.


backpopulate_archive_videos doesn't handle archive_url that starts with http://

Steps to Reproduce

Find a site with videos that have an archive_url that starts with http:// and not https://
Run ./manage.py backpopulate_archive_videos --bucket ocw-website-mirror --prefix OcwExport/InternetArchive --filter <site.name here>

Expected Behavior
The archive URL prefix is properly removed before trying to copy the archive video
Actual Behavior
The prefix is not removed and the copy fails

Should we just update the data for these? There's no excuse for using http anymore.


Establish initial version control of a1111 repo & dependencies list

This change implements rudimentary version control by way of replacing references to master/main branches within the A1111 notebook with version tags.

holy moly I immediately did it again. taking the sign and calling it a day before I set something on fire.


Remove all version compatibility with Legacy nodes

This issue tracks removing all version spoofing and bwc version logic with legacy versions in 3.0

This task is OBE/obsolete - please see https://github.com/opensearch-project/OpenSearch/issues/2748#issuecomment-1334182921


Bokeh reset button causes loss of axes in HoloMap

Using the following code for a repro, the attached animated gif shows that if you set the kdim to non-zero and hit the reset button, the x- and y- axes and their ticks/labels are removed.  This is using latest master.
import holoviews as hv
hv.extension('bokeh')
hv.HoloMap({p: hv.Curve([(0,0),(1,1),(2,p)]) for p in np.linspace(0, 1, 17)}).collate()

Wow! Never seen this issue myself but it will need investigating before we release tomorrow...

I've occasionally seen this but have never tracked it down to a reproducible example. I suspect this may be an issue in bokeh so it's worth looking at the browser JS console. If we can confirm it's a bokeh issue we can open an issue there as well.

For what it is worth, I just used the snippet shown above and failed to reproduce the issue.

I can definitely reproduce it.

Sorry, I was too quick trying it out and forgot to click the reset button. I can reproduce it although I don't see anything in the web console...

@jlstevens I'd be fine with releasing and fixing later.  This issue also exists in 1.7.0, so it's not new.

Wow! Never seen this issue myself but it will need investigating before we release tomorrow...

Just confirming that I also lose axes with a simple bokeh+datashaded image, when I click reset.

(p.s. only in the notebook though; not when viewing the same plot through a bokeh server)

only in the notebook though; not when viewing the same plot through a bokeh server

That is useful information, thanks!

This issues does appear in e.g. http://holoviews.org/getting_started/Introduction.html in the NY Taxi plots.

I can no longer reproduce this with bokeh 0.12.9. If someone else can confirm I'll close this.

I also tried to reproduce this recently and couldn't. If @jordansamuels or @timothydmorton can confirm that this issue seems to be fixed, I agree we can finally close this issue.

Agree, with bokeh 0.12.9 and holoviews 1.8.4 this issue doesn't seem to exist.  Thanks!

Very happy to close this issue without having had to make a fix in HoloViews! :-)


Is it possible to tabout in luasnippet nodes if it is "taboutable" and if not, use luasnippets' tab?

Sorry for the late response,
Merged it, but it feels like in the long term it might be more annoying then useful.
Let me know if this is what you want

Sorry for the late response, Merged it, but it feels like in the long term it might be more annoying then useful.
Let me know if this is what you want
To use it, change your luasnip keys to something like this
    {
        "<Tab>",
        function() return "<Plug>(neotab-out-luasnip)" end,
        expr = true,
        silent = true,
        mode = "i",
    },

If I am using nvim-cmp and luasnip, how should I modify my code?
        ["<Tab>"] = cmp.mapping(function()
          if cmp.visible() then
            cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert })
          elseif luasnip.expand_or_jumpable(1) then
            luasnip.expand_or_jump(1)
          else
            neotab.tabout()
          end
        end, { "i", "s" }),

@yifan0414 this should work
["<Tab>"] = cmp.mapping(function()
          if cmp.visible() then
            cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert })
          else
            neotab.tabout_luasnip()
          end
        end, { "i", "s" }),


JFXTextField float label not working correctly

When the text is set manually in teh textflied, the float label doesnt update correctly and there is no animation.

I saw this also happened in other issues with the datepicker, but this is with the textfield.
Is there any workaround?

Related to https://github.com/jfoenixadmin/JFoenix/issues/441

Does this bug still occur on JFoenix 1.9.0?

Hello,
it's already fixed in the latest JFoenix build 1.9.
Regards,

The text overlap problem, thanks to the JFoenix Team, has been long since been fixed.
But if you're looking to get the JFXDatePicker's label to float, see #603.


can't auto  refresh the container

Expected behavior
when i build a images,then run the container,but not auto refresh that container in kitematic's Continers list.unless reboot the kitematic
Actual behavior
Information about the Issue
Steps to reproduce the behavior

...
...

Container list should refresh on their own. If that doesn't happen you can go to View -> Refresh list. There's also a keybinding of CMD+R


Jakarta EE Specifications page

Here, we will need to collect the correct content, following the template that was made and approved.

Intro
Functional Changes
Maven coordinates
Compatible chart
Ballots (Plan review & Release review)

Sidebar:

Scope (Released)
Details ( Release Record, Javadoc, Spec PDF, Spec HTML , REST TCK, API TCK, Optional TCK - Links

@Emily-Jiang Am I missing anything?

for this one, we ought to link directly to the Jakarta EE website page. If the page exists there, there is no need to create a new.

@Emily-Jiang I created git tickets for each specification; please check if I didn't miss something. Also, I created a doc that can be used for organizing each spec content.
https://docs.google.com/document/d/1i2I8zwvoVYx3Dx_d2hXqHwmqv-cVCFxNobWOOhpVhAo/edit?usp=sharing
Can you please read over this and let me know what you think?
@aeiras you too :)

We also need the team to provide a link to the Spec Release Issue under here so that we can find all of the links on the right hand side to the pdf/tck/api jars.

As for the compatible charts, we need to create/maintain ourselves.

https://docs.google.com/document/d/1i2I8zwvoVYx3Dx_d2hXqHwmqv-cVCFxNobWOOhpVhAo/edit#heading=h.olvqz7p1ihcn
Specification content template

@rstjames here is a similar page to list the version of the specs, which is the overall page for each individual specs. There is a dedicated page for each released version, e.g. this one.


Variables don't working

I'm trying to use local variables at FilesLoader and FtpTask but dont working.
I'm use dotnet core on linux platform, latested version 4.8.
My confile file looks like this:
<Workflow id="1" name="Upload database backup" description="Upload database backup" xmlns="urn:wexflow-schema">
  <Settings>
    <Setting name="launchType" value="trigger" />
    <Setting name="enabled" value="true" />
    <Setting name="approval" value="false" />
  </Settings>
  <LocalVariables>
    <Variable name="folder" value="/opt/wexflow/MyTestsWorkflow/UploadBackupTask" />
    <Variable name="ftp" value="myaddress.com" />
  </LocalVariables>
  <Tasks>
   ...
    <Task id="3" name="FilesLoader" description="Carregar arquivo de backup" enabled="true">
      <Setting name="folder" **value="$folder"** />
    </Task>
    .........
    <Task id="6" name="Ftp" description="Listar arquivos FTP" enabled="true">
      <Setting name="command" value="list" />
      <Setting name="protocol" value="ftp" />
      <Setting name="server" **value="$ftp"** />
      <Setting name="port" value="21" />
      <Setting name="user" value="xxxx" />
      <Setting name="password" value="xxxxx" />
      <Setting name="path" value="/Teste/" />
    </Task>
   ......
</Workflow>

I looked at the source code, and realized that the Workflow.Parse method is no longer running, it was commented recently.

@fabionaspolini Yes, local variables and global variables are no longer working since storing workflows in the database. That's why I commented Workflow.Parse method. I will work on that soon.

@fabionaspolini I added local variables and global variables in the upcoming version 4.9. I will notify you once I release the v4.9.

@fabionaspolini I've just released the v4.9.


Bot id not found

Hi While running the provided command, I'm getting bot id not found error though I'm passing it as a parameter

I am also facing the same issue.
for old bot it is working fine but for newly created bots it is throwing bot id not found error.
@santhoshstark did you get any solution?

Another resource here for getting help with issues is the Power Virtual Agent forums at https://powerusers.microsoft.com/t5/Forums/ct-p/pva_forums - eg: the Bot Extensibility section.

thanks @rggammon :)

Hi,
I have created bot in PVA and following steps from below link to use bot framework with power virtual agent.
https://docs.microsoft.com/en-us/power-virtual-agents/advanced-use-dispatcher
I am trying to dowload the annotations.csv and msdynce_botcontents.csv files from power apps but seems like I am not getting bot data in those files.
I tried publishing the bot as well but same issue I am facing.
Because of incorrect files I am getting error "Bot id was not found" while converting csv files.
Can anyone please help me with this?
Thanks


Heroku seems to be tightening up free dynos?

https://devcenter.heroku.com/articles/dyno-sleeping

In addition, if a free dyno exceeds a quota of 18 hours of activity during a 24 hour window, it will be forced to recharge.

[...]

Apps in the “recharging” state are shut down for 6 hours. No dyno (whether web, worker or one-off) will run during this period of time.
Any web traffic received in this state will return an error page and an HTTP status code 503.
Oh, well. So much for that! :-)

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26019134-heroku-seems-to-be-tightening-up-free-dynos?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github).

I got an email notification from Heroku for an unrelated app.

Your app [] is running on free dynos and has been active for more than 18 of the last 24 hours. Normally, your app would recharge for the next 6 hours. Don't worry, your app is still running. Right now we're simply sending notifications.

Ominous.

Applications that use traditional dynos and that do not have paid usage will be migrated to free dynos starting on July 15th, 2015. However, if you have an application that is using traditional dynos and that has paid usage for dynos, a database or add-ons, you can choose to keep your app on traditional pricing through January 31, 2016.

I thought we had a ticket for this already? The new pricing is $7/dyno.

Okay, we might.

Found it - #3386 :) Closing this...


Fall-"back" to VMRC desktop client if no NPAPI plugin is available

So as chrome retired the NPAPI a few years ago, the VMRC NPAPI plugin got deprecated and a standalone VMRC application has been released. Also there is a new HTML5 and WebSocket based client called WebMKS.
This PR introduces a test for the existence of the old VMRC NPAPI plugin and if it's not present, it will fall-"back" to the new VMRC desktop client. This is done by redirecting the client to a  vmrc:// URL.
You can test this in the following way:

Have an NPAPI-compatible web browser (IE, FF)
Install the old VMRC pluin
Try the VMRC console (should run in a browser)
Uninstall the old VMRC pluggin
Install the new VMRC desktop application (v8 and/or v9)
Try the VMRC console (should run in a separate application)

https://bugzilla.redhat.com/show_bug.cgi?id=1345812

LGTM :+1:

@Fryguy what about the setTimeout increase?

@Fryguy what about the setTimeout increase?

I'll leave it up to you to pick the most optimal number.

Thanks @skateman, looks good on the URI side.


KB extension: How to separate multiple entries per row in the investigation file?

I'm wondering where this question / issue came up. Any source?

It was part of a feedback sheet genereated while testing DP tools

Not sure, if I get it right.
In the isa.investigation.xlsx multiple values are not separated row-wise but column wise (key:value[s]).
And it's recommended not to (manually) adapt the keys (left column), but rather add to it via ARC commander.

In any case, we need better explanations (maybe visualisation) of the different isa file types in the knowledge base.

Exactly! This is the idea of this issue. @Martin-Kuhl is aware of this.


Use local version db if newer than bundled

Fixes https://github.com/JuliaLang/juliaup/issues/131.
Or rather, this PR and all the stuff that was merged before.

🎉 🎉 🎉


Repair metric file writer

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 30 (3.33%)  changed or added relevant lines in 4 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.7%) to 52.917%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

plugins/plugin-core-metric-middleware-file-writer/lib/middleware/FileWriterMetricMiddleware.ts
0
4
0.0%

libraries/search/lib/objective/BranchObjectiveFunction.ts
0
6
0.0%

libraries/metric/lib/MetricManager.ts
0
19
0.0%

Files with Coverage Reduction
New Missed Lines
%

libraries/search/lib/objective/BranchObjectiveFunction.ts
1
12.28%

Totals

Change from base Build<PHONE_NUMBER>:
-0.7%

Covered Lines:
710

Relevant Lines:
1291

💛  - Coveralls


BelongsTo dependency documentation misleading

great package, but unfortunately the example
BelongsTo::make('Post'),

NovaDependencyContainer::make([
    Boolean::make('Visible')
])
->dependsOn('post.id', 2)

works only for post.id but not for other attributes of Post e.g. post.title
So I think #39 is still an issue.

No update for this issue? I'm also facing this problem... Like @cord mentioned, only the id works. You can also use post that will work or even a non-existing column, like post.thisisatest, alle these columns only check the BelongsTo id...
@ragingdave Is this a short term fix? If so, this is the perfect package for me! If not then this package isn't working for me..

In looking into the nova js for the BelongsTo field, it seems that the reason for even specifying the key of the relation to check against is more for the php side than the js side. It looks as though even though the JS side would get enough information to populate the dropdown, the only thing available would be the id. So specifying the key is to ensure that the php side checks the right key more than the js side.


Trending posts should only display community posts

In the spirit of building communities rather than followings, all trending posts should be community oriented.

Done!


Infinite Grid Proxy requests in offline network

Description
Sometimes, when the network disconnects before the page is reloaded, an infinite loop of requests to the grid proxy keeps happening. More than 7000 requests were made in under 10 mins.
Steps to reproduce

Go to https://dashboard.dev.grid.tf/#/nodes or any other page that requests data from the grid proxy
Make sure to set the network to slow 3G then offline

Logs/Alerts

Request: https://gridproxy.dev.grid.tf/version

only small number of requests were made after waiting 10 minutes

i think it is acceptable now

Verified:

Devnet
ec2ed3d


Folder link to image file

I think it would be good to have a button to open the file browser at the location, where the currently open image is saved

Fixed with commit https://github.com/helmuttheis/XCamera/commit/167a748dd348e0066995d1d3c639cee350dc92c6


May I ask how to make the device support Simplified Chinese font display

have successfully burned the English version of the firmware and it is working properly. I hope it can display Simplified Chinese font

You can if your device hardware supports PSram and large 16Mb flash.
Upload a Truetype font, for example chinese.ttf and use the text_font parameter to select it:

{"page":4,"id":1,"obj":"btn","x":5,"y":35,"w":90,"h":90,"radius":0,"value_str":"\uE769","text":"\n欢迎","toggle":true,"value_ofs_y":-24, "text_font": "chinese36"}
{"page":4,"id":250,"obj":"label","x":240,"y":150,"w":240,"align":"center","template":"祝您有个美好的一天！", "text_font": "chinese24"}


keep slot connection tags when resolving recipe by verb

addresses: https://github.com/PolymerLabs/arcs/issues/1133
PS: if this makes, I can do a similar thing for handles.

If I understand correctly, this acts to accumulate tags into slots that are explicitly matched by name, when substituting recipes for verbs.
i.e.
recipe aVerb
  P
    consume foo

recipe
  particle can aVerb
    consume foo #woo

--->

recipe
  P
    consume foo #woo

I had something quite different in mind, and I suspect Berni did too. What I'd like to see is something like:
recipe aVerb
  P
    consume #annotation #item #subitem
    consume #special_other_thing

recipe
  particle can aVerb
    consume #annotation as s0
  Q
    consume master
      provide as s0

--->

recipe
  P
    consume as s0
    consume #special_other_thing
  Q
    consume master
      provide as s0

in other words, the verb is used to establish the mapping, not accumulated after mapping is already established.
WDYT?

Ignoring verbs and nested recipes for a second, if i have 2 particles:
particle P
  consume slotP

particle Q
  consume slotQ
    provide slotQq

recipe
  P
    consume slotP #details
  Q
     consume slotQ
       provide slotQq #details

once resolve-recipe runs and slots are mapped, the resulting recipe will be
recipe
  P
    consume slotP #details as slot0
  Q
     consume slotQ
       provide slotQq #details as slot0

and the assigned tag will be kept for the slot, because it is useful information to have for the next steps.
is this not a behavior you'd expect? otherwise, why it would be different for nested recipes?
i think that if a slot (or slot-connection) is given a tag at some point, this tag should stick, because it is describing the slot and important for future recipes.

What should this do?
recipe aVerb
  P
    consume annotation
  Q
    consume annotation #foo

recipe
  particle can aVerb
    consume #foo as s0
  R
    consume master
      provide as s0

I agree that, once matched, excess tags should be copied across. However, I think this should be secondary to using tags to match which slot to bind to.


assign tenant_id to miq_request and service

Add and assign tenant id to MiqRequest and Service.

also update existing assign migration per conventions (note, there is a spec for that existing one)

/cc @mkanoor @gmcculloug I noticed that requester was not on miq_request_task, so I left it off. It is trivial to add in this PR, so just let me know.
UPDATE: added tenant_id to MiqRequestTask and moved migration code out.

@kbrock Since we are not adding tenant_id on the miq_request_tasks table we should include a delegate on the task.  We also need to expose the tenant from the automate service models for the three effected models here.

@gmcculloug I noticed that userid is stored in MiqRequestTask - is there a mechanism for storing the group to? Is it possible to not read userid from MiqRequestTask and delegate that to MiqRequest? (5.4+ only)

@kbrock We have never stored the group before and always relied on current_group for the user so there is no mechanism for that.  It would require a little investigation but I think we would be able to delegate userid to the request.

@kbrock Since you have a migration to update existing records it seems we should also be creating new request/services with the tenant_id populated or maybe we move that work into a separate PR and just get the modeling work in here.  Thoughts?

@gmcculloug moved that out, think we can merge this now


Lisa add sankey diagram operator

sankey_test.csv
I created the sankey diagram operator. The operator shows up on the website but it's getting some errors. I have attached the simple test I used to test. Thanks for reviewing!

The sankey diagram operator takes a csv file as an input, and creates a flow diagram as the result.
Input Table Format:
There are three attributes (columns), Source, Target, and Value. The Source column has information about the start nodes; The Target column has information about the destination nodes. The Value column has information about the flow volume. Both Source and Target column uses String type for their values. The Value column uses Integer type.
P.s. the name of the attributes could be customized
Sankey Diagram Property:

Title
The title of the flow diagram (optional)
Source
The name of the first column from the input table
Target
The name of the second column from the input table
Value
The name of the third column from the input table

@Lisayjn749 I suggest recreating the PR after you fix the issues below:

Please correct the error related to using the Sankey diagram operator. Please create a pull request once the feature is functioning without errors. Check the worker's console or log for error messages you can review. It will help you fix the issue.
Please move the description in the comment to the first comment. You can edit the first comment.


Remove auto deployment of project

Description
The production deployment was happening automatically on a schedule and we've decided to keep the deployment manual for now, so we can ensure sufficient testing before changes get introduced.
Checklist

[ ] Created tests which fail without the change (if possible) - N/A
[ ] Extended the README / documentation, if necessary - I will plan to update https://github.com/seattle-uat/civiform/wiki/Production before this gets merged

Issue(s)
Fixes #1558

Updated docs - https://github.com/seattle-uat/civiform/wiki/Production


feat(snackbar): allow snack bar to be positioned on the page

For #3577

@jelbourn and @josephperrott so this is going to be only left of center at first?

@jelbourn ready for you to take a look

@jelbourn & @josephperrott would this just be in the next build or will be available on master branch anytime in the future

@jelbourn  Should be ready to review again.

@jelbourn Comments addressed ready for a look

@jelbourn ready for a look when you are.

There are a lot of goodies in this upcoming release... any breaking changes I should know?  I would like to probably bring down master until the release is set.

I confirmed that these errors were caused by #4370.  Everything should work as expected after merge of #5131.

@josephperrott the Travis CI failures look real

@jelbourn @kara
Rebased and pushed again to be sure, looks like Travis CI is finding it good to go now.

so this change din't make it into the beta-7 build?

Nope, it had been causing some tests inside Google to fail that we still need to investigate

@jelbourn and @josephperrott did this make it into beta.8?

please rebase

Is this going to make it into the next build? I'm really waiting for this feature. @josephperrott

I hope next build come with this changes.

This release is taking longer than expected.  Any idea when the next release is?

@jelbourn rebased and ready to be looked at.

@josephperrott can you rebase again?

@jelbourn Rebased and ready to go.

+1 merge please

@jelbourn && @josephperrott did this end up making it into the latest build?  If not, is there a new holdup for this feature?

This should be in beta.11

@jelbourn yea!!! I looked in the release notes and didn't see it.

How can we change the position/location of snackbar?

@ORESoftware have a look at this https://angular-vv8kca.stackblitz.io.

ah yes thanks


Audience Management

For larger broadcast calls with numerous participants it can be a security risk to the integrity of the call if someone gets on and causes trouble. Additionally, it can be very beneficial to grant additional tools to the guide and Co-Hosts of the virtual call to be able to remove or silence people at will
A audience management interface for the guide and designated co-hosts (the guide can select them during the call) which gives the guide the ability to:

See the names of participants in an organized fashion
Remove participants from the call
Invite participants to speak or turn on their camera
Mute all participants
Designate co-hosts or managers during the call
Chat privately with individuals
Create a waiting room experience for guests
Turn on or off avatars for guests

It already would be greatly beneficial to have a "mute-all" button to permit the guide to conduct a tour of a space without interruptions
The management system could permit the participants to feel a part of a community during the call.

Thanks for sending this feedback.
I'll list the replies below:
1. See the names of participants in an organized fashion
Participants will be visible to everyone who is eligible as a host when we launch the broadcast feature. See https://github.com/SuperViz/sdk/issues/34
2. Remove participants from the call
I've created a separate card. You can subscribe here: https://github.com/SuperViz/sdk/issues/60
3. Invite participants to speak or turn on their camera
I've created a separate card. You can subscribe here:  https://github.com/SuperViz/sdk/issues/61
4. Mute all participants
We've captured this feature here: https://github.com/SuperViz/sdk/issues/52
5. Designate co-hosts or managers during the call
We aren't planning to add more permission levels at this point, but I've added a card. You can subscribe here:  https://github.com/SuperViz/sdk/issues/62
6. Chat privately with individuals
I've added a card. You can subscribe here:  https://github.com/SuperViz/sdk/issues/63
7. Create a waiting room experience for guests
With the current SDK version, you are able to create a waiting room for your guests.
8. Turn on or off avatars for guests
I've added a card. You can subscribe here:  https://github.com/SuperViz/sdk/issues/64


Why  self.form.get('grant_type') and not  self.data.get('grant_type') ?

https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib/oauth2/rfc6749/requests.py#L79

Section-4.3.2 of RFC 6749 says grant_type should go in the request body:

The client makes a request to the token endpoint by adding the following parameters using the "application/x-www-form-urlencoded" format per Appendix B with a character encoding of UTF-8 in the HTTP request entity-body:
grant_type
REQUIRED.  Value MUST be set to "password".

So that property should be retrieved from the request body, not from the request URI, and since the data property aggregates data from from both the query parameters (self.args) and and the form data (self.form), self.form.get('grant_type') avoids the risk of getting it from the wrong place.
https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib/oauth2/rfc6749/requests.py#L34-L36
https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib/oauth2/rfc6749/requests.py#L38-L43

Hi @codespearhead, thanks for checking out this PR!  I believe that Section 4.3.2 applies specifically to Resource Owner Password Credentials Grants. That section does say the grant_type may be in the form body, but it also says: grant_type REQUIRED.  Value MUST be set to "password". Clearly that only applies to password type grants. However, even for password grants, section 4.3.2 only shows the grant_type may be provided via form body by way of example. It does not say grant_type MUST be provided by form body, nor does it explicitly prohibit URL parameter grant_type implementations.
The OAuth2Request class is intended to support grant types other than just password though. Using data would still be compatible with password grants as defined in RFC6749 by accepting the grant_type field through the form body, but would also allow other grant types and situations. Since grant_type is treated similarly with other parameters like scope, response_type and redirect_uri in the RFC, it would make sense to treat grant_type the same as those other parameters in OAuth2Request as well.

@apvd Actually, no matter which grant type, it should be in the request body.
https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.3
https://datatracker.ietf.org/doc/html/rfc6749#section-4.3.2
https://datatracker.ietf.org/doc/html/rfc6749#section-4.4.2

Thanks for following up! I see that the types currently defined in rfc6749
are in the form body. But authlib is meant to be extensible to new grant
types, correct? I'd like to implement one where the grant type is in the
URL.
What's the recommended way to support TOKEN_ENDPOINT_HTTP_METHODS = ["GET"]? Thanks!
-Aaron
On Wed, Jul 10, 2024 at 8:29 AM Hsiaoming Yang @.***>
wrote:

@apvd https://github.com/apvd Actually, no matter which grant type, it
should be in the request body.
https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.3
https://datatracker.ietf.org/doc/html/rfc6749#section-4.3.2
https://datatracker.ietf.org/doc/html/rfc6749#section-4.4.2
—
Reply to this email directly, view it on GitHub
https://github.com/lepture/authlib/issues/658#issuecomment-2220826777,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABGO6OZP66ITXV6NNHHOXVDZLVHNDAVCNFSM6AAAAABKJZHCIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRQHAZDMNZXG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

I wonder what use case justifies creating a new grant type, because if that grant type is not defined in the OAuth2 specification, whatever you create will no longer be OAuth2-compliant: it will become a custom authorization protocol used only by you, which is the problem the OAuth2 specification was created to solve in the first place.
It's safe to assume there's no risk of there ever being an OAuth2 grant type that declares that field as a URL parameter. This is because not having a single source of truth is widely regarded as a bad practice: it leaves room for undefined behavior and thus increases maintenance burden because of interoperability issues, which is one of the major reasons why the SOAP protocol fell out of favor.
However, if you're creating your own specification based on OAuth2 for learning purposes, I suggest explicitly defining in your custom specification what should happen when that attribute is declared in the wrong place, as well as what should happen when it's declared in both the right and wrong places. Then, you can implement that logic in the following files in your own fork of this library that conforms to your custom specification:
https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib%2Foauth2%2Frfc6749%2Frequests.py#L38-L43
https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib%2Foauth2%2Frfc6749%2Frequests.py#L34-L36

Thanks, Pedro!
The RFC also allows for extended grant types that are up to server
implementation.
https://datatracker.ietf.org/doc/html/rfc6749#section-4.5
So it's possible to have a grant that gets a token from a GET request. The
scenario I am thinking is flows that want on OIDC token
(response_type=id_token) often want it from a GET, so it would be
necessary to extend it with a grant that supports that, ergo gets the
grant_type from the URL params.
I am curious how the "single source of truth" applies to scope,
response_type and redirect_uri, which all can obtained from data?
On Wed, Jul 10, 2024 at 11:31 AM Pedro Aguiar @.***>
wrote:

I wonder what use case justifies creating a new grant type, because if
that grant type is not defined in the OAuth2 specification, whatever you
create will no longer be OAuth2-compliant: it will become a custom
authorization protocol used only by you, which is the problem the OAuth2
specification was created to solve in the first place.
It's safe to assume there's no risk of there ever being an OAuth2 grant
type that declares that field as a URL parameter. This is because not
having a single source of truth is widely regarded as a bad practice: it
leaves room for undefined behavior and thus increases maintenance burden
because of interoperability issues, which is one of the major reasons why
the SOAP protocol fell out of favor.
However, if you're creating your own specification based on OAuth2 for
learning purposes, I suggest explicitly defining in your custom
specification what should happen when that attribute is declared in the
wrong place, as well as what should happen when it's declared in both the
right and wrong places. Then, you can implement that logic in the following
files in your own fork of this library that conforms to your custom
specification:
https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib%2Foauth2%2Frfc6749%2Frequests.py#L38-L43
https://github.com/lepture/authlib/blob/0ad753cbe39e3cb5bee33ef93b7497020a33dea1/authlib%2Foauth2%2Frfc6749%2Frequests.py#L34-L36
—
Reply to this email directly, view it on GitHub
https://github.com/lepture/authlib/issues/658#issuecomment-2221178221,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABGO6O5EVO2LYXK4EHCVBKLZLV4XRAVCNFSM6AAAAABKJZHCIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRRGE3TQMRSGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Upon further examination, Section 3.2 (Token Endpoint) of RFC6749 offers a much more straightforward answer to your original question:

The client MUST use the HTTP "POST" method when making access token requests.

So extended grant types cannot use the HTTP "GET" method.
That's to ensure secure transmission of sensitive parameters, since URIs can be logged (intermediary proxies, referer headers, etc.) or stored in browser history.
Either way, I believe we're dealing with an XY problem here, so I wonder what problem you're facing that isn't addressed by the defined OAuth2 flows, to which the suggested solution attempt of defining a custom flow where obtaining the access token from a GET request seems like an appealing solution.

As per Section 3.2 (Token Endpoint) of RFC6749, that endpoint can only be accessed by the HTTP "POST" method:

The client MUST use the HTTP "POST" method when making access token requests.

So extended grant types cannot use the HTTP "GET" method.
That's to ensure secure transmission of sensitive parameters, since URIs can be logged (intermediary proxies, referer headers, etc.) or stored in browser history.
Either way, I believe we're dealing with an XY problem here, so I wonder what problem you're facing that isn't addressed by the defined OAuth2 flows, to which the suggested solution attempt of defining a custom flow where obtaining the access token from a GET request seems like an appealing solution.

I'd like to support a URL sourced OIDC token. Google requires those id
tokens to come from a GET url. If GET is prohibited, maybe it just means
that authlib/Oauth2 cannot service as a provider of OIDC tokens for this
purpose in a direct way.
https://cloud.google.com/iam/docs/workforce-obtaining-short-lived-credentials#oidc-url
I'll close my PR since it's been fully considered and rejected. Thanks for
your attention!
-Aaron
On Wed, Jul 10, 2024 at 5:04 PM Pedro Aguiar @.***>
wrote:

As per Section 3.2 (Token Endpoint) of RFC6749
https://datatracker.ietf.org/doc/html/rfc6749#section-3.2, that
endpoint can only be accessed by the HTTP "POST" method:
The client MUST use the HTTP "POST" method when making access token
requests.
So extended grant types cannot use the HTTP "GET" method.
That's to ensure secure transmission of sensitive parameters, since URIs
can be logged (intermediary proxies, referer headers, etc.) or stored in
browser history.
Either way, I believe we're dealing with an XY problem
https://xyproblem.info/ here, so I wonder what problem you're facing
that isn't addressed by the defined OAuth2 flows, to which the suggested
solution attempt of defining a custom flow where obtaining the access token
from a GET request seems like an appealing solution.
—
Reply to this email directly, view it on GitHub
https://github.com/lepture/authlib/issues/658#issuecomment-2221739474,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABGO6O3R5MYJ3LAMG6QRRETZLXD2XAVCNFSM6AAAAABKJZHCIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRRG4ZTSNBXGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

This "URL-sourced Credential Flow" is indeed a custom OIDC flow by Google, which is likely there for legacy reasons, so at first glance none of the standard flows will suffice. However, implementing it yourself shouldn't be that hard given that you can use authlib's primitives (implementation provided at the end of this answer).
However, it's worth noting that such a flow is for creating Google credentials manually, which is something (next section on the same page)[https://cloud.google.com/iam/docs/workforce-obtaining-short-lived-credentials#use_the_client_libraries] suggests avoiding if possible:

If you use a supported client library, you can configure the client library so that it generates Google credentials automatically. When possible, we recommend that you generate credentials automatically, so that you don't need to implement the token-exchange process yourself.

Since you created this issue in a Python package, I assume you're using Python, and Google offers an official client library whose usage is exemplified in that very section so you can cut to the chase:
from google.cloud import storage
import google.auth

credentials, project = google.auth.default(
    scopes=['https://www.googleapis.com/auth/devstorage.read_only'])

client = storage.Client(
    project="project-id", credentials=credentials)

Does that solve your problem?

ChatGPT-generated answer, which although I haven't tested myself, it looks like it should work.
Complete Code
import requests
from authlib.integrations.requests_client import OAuth2Session

class GoogleCloudAuthenticator:
    def __init__(self, workforce_pool_id, provider_id, url_to_return_oidc_id_token, workforce_pool_user_project):
        self.workforce_pool_id = workforce_pool_id
        self.provider_id = provider_id
        self.url_to_return_oidc_id_token = url_to_return_oidc_id_token
        self.workforce_pool_user_project = workforce_pool_user_project
        self.audience = f"//iam.googleapis.com/locations/global/workforcePools/{self.workforce_pool_id}/providers/{self.provider_id}"
        self.token_url = "https://sts.googleapis.com/v1/token"
        self.subject_token_type = "urn:ietf:params:oauth:token-type:id_token"

    def fetch_oidc_id_token(self):
        """
        Fetch the OIDC ID token from the specified URL.

        Returns:
        str: The OIDC ID token.
        """
        response = requests.get(self.url_to_return_oidc_id_token)
        response.raise_for_status()
        return response.json().get('id_token')

    def exchange_token_for_google_credentials(self, token):
        """
        Exchange the OIDC ID token for Google Cloud credentials using Google's STS.

        Args:
        token (str): The OIDC ID token.

        Returns:
        dict: The response containing Google Cloud credentials.
        """
        client = OAuth2Session()
        data = {
            'grant_type': 'urn:ietf:params:oauth:grant-type:token-exchange',
            'audience': self.audience,
            'subject_token': token,
            'subject_token_type': self.subject_token_type,
            'requested_token_type': 'urn:ietf:params:oauth:token-type:access_token',
            'scope': 'https://www.googleapis.com/auth/cloud-platform',
            'options': {
                'userProject': self.workforce_pool_user_project
            }
        }
        response = client.post(self.token_url, data=data)
        response.raise_for_status()
        return response.json()

    def authenticate(self):
        """
        Authenticate by fetching the OIDC ID token and exchanging it for Google Cloud credentials.

        Returns:
        dict: The Google Cloud credentials.
        """
        oidc_id_token = self.fetch_oidc_id_token()
        return self.exchange_token_for_google_credentials(oidc_id_token)

def main():
    workforce_pool_id = 'your_workforce_pool_id'
    provider_id = 'your_provider_id'
    url_to_return_oidc_id_token = 'http://localhost:5000/token'
    workforce_pool_user_project = 'your_workforce_pool_user_project'

    authenticator = GoogleCloudAuthenticator(
        workforce_pool_id, provider_id, url_to_return_oidc_id_token, workforce_pool_user_project
    )

    try:
        google_credentials = authenticator.authenticate()
        print("Google Cloud Credentials:", google_credentials)
    except requests.exceptions.RequestException as e:
        print(f"HTTP Request failed: {e}")
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

Explanation

Class Definition: GoogleCloudAuthenticator encapsulates the authentication logic.

__init__ Method: Initializes the object with necessary parameters and constructs the audience, token_url, and subject_token_type.
fetch_oidc_id_token Method: Fetches the OIDC ID token from the specified URL, assuming the response is JSON formatted and the token is stored under the key id_token.
exchange_token_for_google_credentials Method: Exchanges the OIDC ID token for Google Cloud credentials.
authenticate Method: Orchestrates the fetching and exchanging of the token.

Main Function: Creates an instance of GoogleCloudAuthenticator, sets up the necessary configuration, and performs the authentication process.

Hi Pedro, thank you so much for the detailed reply!
I agree it's best to use the official gcloud SDK from google to implement
the token exchange process as you suggest on the client.
In order to make that work, the client library requires a source of OIDC
tokens from an identity provider. (In the generated sample code, this is
referred to as self.url_to_return_oidc_id_token). I would like to use
authlib to implement that identity provider. The official google client
library requires that the OIDC identity token be retrieved by a GET, rather
than a POST. The client library controls the request, clients using the
library can provide the target URL but not the HTTP method. Once it has
retrieved the OIDC ID token, it will do the token exchange with Google STS
for an access token, no problem.
Sounds like authlib OIDC identity provider support isn't intended to
provide identity tokens to Google gcloud clients, so I'll find another way
around. Thank you!
-Aaron
On Wed, Jul 10, 2024 at 6:56 PM Pedro Aguiar @.***>
wrote:

This "URL-sourced Credential Flow" is indeed a custom OIDC flow by Google,
which is likely there for legacy reasons, so at first glance none of the
standard flows will suffice. However, implementing it yourself shouldn't be
that hard given that you can use authlib's primitives (implementation
provided at the end of this answer).
However, it's worth noting that such a flow is for creating Google
credentials manually, which is something (next section on the same page)[
https://cloud.google.com/iam/docs/workforce-obtaining-short-lived-credentials#use_the_client_libraries]
suggests avoiding if possible:
If you use a supported client library, you can configure the client
library so that it generates Google credentials automatically. When
possible, we recommend that you generate credentials automatically, so
that you don't need to implement the token-exchange process yourself.
Since you created this issue in a Python package, I assume you're using
Python, and Google offers an official client library whose usage is
exemplified in that very section so you can cut to the chase:
from google.cloud import storageimport google.auth
credentials, project = google.auth.default(
scopes=['https://www.googleapis.com/auth/devstorage.read_only'])
client = storage.Client(
project="project-id", credentials=credentials)
Does that solve your problem?
ChatGPT-generated answer, which although I haven't tested myself, it looks
like it should work.
Complete Code
import requestsfrom authlib.integrations.requests_client import OAuth2Session
class GoogleCloudAuthenticator:
def init(self, workforce_pool_id, provider_id, url_to_return_oidc_id_token, workforce_pool_user_project):
self.workforce_pool_id = workforce_pool_id
self.provider_id = provider_id
self.url_to_return_oidc_id_token = url_to_return_oidc_id_token
self.workforce_pool_user_project = workforce_pool_user_project
self.audience = f"//iam.googleapis.com/locations/global/workforcePools/{self.workforce_pool_id}/providers/{self.provider_id}"
self.token_url = "https://sts.googleapis.com/v1/token"
self.subject_token_type = "urn:ietf:params:oauth:token-type:id_token"
def fetch_oidc_id_token(self):
    """        Fetch the OIDC ID token from the specified URL.        Returns:        str: The OIDC ID token.        """
    response = requests.get(self.url_to_return_oidc_id_token)
    response.raise_for_status()
    return response.json().get('id_token')

def exchange_token_for_google_credentials(self, token):
    """        Exchange the OIDC ID token for Google Cloud credentials using Google's STS.        Args:        token (str): The OIDC ID token.        Returns:        dict: The response containing Google Cloud credentials.        """
    client = OAuth2Session()
    data = {
        'grant_type': 'urn:ietf:params:oauth:grant-type:token-exchange',
        'audience': self.audience,
        'subject_token': token,
        'subject_token_type': self.subject_token_type,
        'requested_token_type': 'urn:ietf:params:oauth:token-type:access_token',
        'scope': 'https://www.googleapis.com/auth/cloud-platform',
        'options': {
            'userProject': self.workforce_pool_user_project
        }
    }
    response = client.post(self.token_url, data=data)
    response.raise_for_status()
    return response.json()

def authenticate(self):
    """        Authenticate by fetching the OIDC ID token and exchanging it for Google Cloud credentials.        Returns:        dict: The Google Cloud credentials.        """
    oidc_id_token = self.fetch_oidc_id_token()
    return self.exchange_token_for_google_credentials(oidc_id_token)

def main():
workforce_pool_id = 'your_workforce_pool_id'
provider_id = 'your_provider_id'
url_to_return_oidc_id_token = 'http://localhost:5000/token'
workforce_pool_user_project = 'your_workforce_pool_user_project'
authenticator = GoogleCloudAuthenticator(
    workforce_pool_id, provider_id, url_to_return_oidc_id_token, workforce_pool_user_project
)

try:
    google_credentials = authenticator.authenticate()
    print("Google Cloud Credentials:", google_credentials)
except requests.exceptions.RequestException as e:
    print(f"HTTP Request failed: {e}")
except Exception as e:
    print(f"An error occurred: {e}")

if name == "main":
main()
Explanation

Class Definition: GoogleCloudAuthenticator encapsulates the
authentication logic.

init Method: Initializes the object with necessary parameters
and constructs the audience, token_url, and subject_token_type.

fetch_oidc_id_token Method: Fetches the OIDC ID token from the
specified URL, assuming the response is JSON formatted and the token is
stored under the key id_token.
exchange_token_for_google_credentials Method: Exchanges the
OIDC ID token for Google Cloud credentials.
authenticate Method: Orchestrates the fetching and exchanging
of the token.

Main Function: Creates an instance of GoogleCloudAuthenticator, sets
up the necessary configuration, and performs the authentication process.
—
Reply to this email directly, view it on GitHub
https://github.com/lepture/authlib/issues/658#issuecomment-2221841783,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABGO6O5YCEJ6SY25VYE5Y4LZLXQ6TAVCNFSM6AAAAABKJZHCIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRRHA2DCNZYGM
.
You are receiving this because you were mentioned.Message ID:
@.***>


fix: cargo-web compilation

Motivation
Since the changement with the BoxBody #622 tonic-web wasn't compiling, the CI didn't detect it (this will be fixed with #648).
Solution
Make tonic::body::empty_body public and use it instead of the old and non existant anymore BoxBody::empty()

Thanks!