seekRange matching HLS manifest

Have you read the Tutorials?
Yes
Have you read the FAQ and checked for duplicate open issues?
Yes
What version of Shaka Player are you using?
4.7.1
Please ask your question
This relates to issue https://github.com/shaka-project/shaka-player/issues/2261
I need to have the clock update according to the manifest length.
Is there some code I can override? A way to force shaka to reinitialize the seekable range? (So I can, let's say, every minute tell shaka to rebuild whatever it uses internally to track video length)
It's been several years. I am hoping some things are clearer now :)

I'm sorry to tell you that we haven't made any progress in this field :(

Hey,
How complicated is that to implement?
I can pay a $500 bounty for whoever adds this.
Not much but might be enough if it's simple :)


tor-browser-bundle-bin: 11.0.14 -> 11.0.15

Description of changes
Upstream update: https://blog.torproject.org/new-release-tor-browser-11015/

Update Tor to <IP_ADDRESS>

Please also backport to 22.05.
Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[X] Fits CONTRIBUTING.md.

Ping past reviewers: @FliegendeWurst @lourkeur @rapenne-s

Result of nixpkgs-review run on x86_64-linux 1

1 package built:

tor-browser-bundle-bin


cmd/go: replace directive on +incompatible version fails on verifying with sum.golang.org consistently

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

$ go version
go version go1.13rc1 linux/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/home/leighmcculloch/local/bin"
GOCACHE="/home/leighmcculloch/.cache/go-build"
GOENV="/home/leighmcculloch/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/leighmcculloch/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/leighmcculloch/local/bin/go/1.13rc1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/leighmcculloch/local/bin/go/1.13rc1/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/leighmcculloch/devel/test/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build816830480=/tmp/go-build -gno-record-gcc-switches"

What did you do?
I run go mod tidy on the following code.
go.mod:
module test

go 1.13

require (
        github.com/throttled/throttled v2.2.2+incompatible
)

replace github.com/throttled/throttled v2.2.2+incompatible => github.com/bartekn/throttled v2.2.3-0.20181102161246-c99eef3ad70a+incompatible

main.go:
package main

import (
        "fmt"

        "github.com/throttled/throttled"
)

func main() {
        fmt.Println(throttled.HTTPRateLimiter{})
}

What did you expect to see?
I expected go mod tidy to exit status code of success (0).
$ go mod tidy
$ echo $?
0

What did you see instead?
The go mod tidy command had a failure exit status code (1) and a 410 Gone error message.
$ go mod tidy
go: downloading github.com/throttled/throttled v2.2.2
verifying<EMAIL_ADDRESS><EMAIL_ADDRESS>reading<EMAIL_ADDRESS>410 Gone
$ echo $?
1

If I visit the URL<EMAIL_ADDRESS>it returns the text:
not found: invalid version

If I remove the replace directive, go mod tidy returns success and there is no verifying error message. The output in the section above where the exit status is 0 is what I see when the replace statement is removed. The problem I'm experiencing is isolated to when the replace directive is in use.
The version of the throttled package is v2.2.2+incompatible and so if the tool wants to query the sumdb about it, it should be attempting to query the URL<EMAIL_ADDRESS>but for some reason it is attempting to go to the URL without the +incompatible suffix.
It also seems strange that it is attempting to download the source package when I have a replace directive present pointing to the fork. Possibly it shouldn't be doing that either?
Context
The above example is a reduced example of an error I'm seeing while I'm trying to migrate a larger Go repo from dep to Modules (stellar/go#1634).

/cc @bcmills

I tried this on Go 1.12.9, and the go mod tidy command works as expected there, so this only seems to be broken on Go 1.13rc1. I assume that's because in 1.12 there is no call out to the sumdb.

Found the bug. It's another variation on #32700.

With the fix, I get a successful go mod tidy with upgraded versions:
test$ go mod tidy
go: downloading github.com/throttled/throttled v1.0.0
go: downloading github.com/throttled/throttled v2.2.4+incompatible
go: finding versions for github.com/throttled
go: finding versions for github.com/throttled/throttled/store
go: finding versions for github.com/throttled/throttled/store/memstore
go: found github.com/throttled/throttled/store in github.com/throttled/throttled v2.2.4+incompatible
go: downloading github.com/gomodule/redigo v1.7.0
go: downloading github.com/gomodule/redigo v2.0.0+incompatible
go: found github.com/gomodule/redigo/redis in github.com/gomodule/redigo v2.0.0+incompatible

test$

This seems like a small and obvious enough fix to make Go 1.14. The bug has been present since CL 152739, but was masked by the lack of error reporting in go mod tidy in 1.12.


Make group expressions nullable more accurate

Which issue does this PR close?

Closes #.
Rationale for this change

GROUPING SETS ((a, b), (a)), the a expr will always be treated as nullable in old code, which is not accurate.
What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

Can we add the test to prevent regression?


Updated NASDAQStock sql py class w ticker, uploaded NASDAQ100 tables

Verified in MySQL NASDAQStock table that we're able to upload these tables. Now we can filter for company category mapping to ticker

Rebased on top of main branch to include @kfbustam latest updates


The trait glib::IsA<O> is not implemented

The following code should work, but fails with missing IsA trait implementations errors:
        impl<O: IsA<Foo>> FooExt for O {
            fn test(&self) {
                let self_ = imp::Foo::from_instance(self.downcast_ref::<Foo>());
                unimplemented!()
            }
        }

See related test I am about to submit.

@elmarco ?

The test wasn't correct. So either it was fixed, or the test was fixed. Anyway, we can close it now. Thanks


Pause recently Added Requests won't work

Assume that the user wants to pause the download as soon as it just enqueued for the first time, then, it is not going to work till its status is changed to at least, Started or maybe this is happened due to the delay between calling enqueue function and the download request actually being added to database and so on, I call the enqueue function as soon as the click event is triggered so that's why I wonder this might be the problem. Then another tap is required to pause the download. I've tested this and have got this results and I think it's not much of a good experience for the user. correct me if i'm missing anything.

@Mahan3340 looking into this. Will post back soon.

@Mahan3340 Just doubled checked. Calling pause on any download with a status of Queued and Downloading will pause the Download. If the download does not have a status of queued or Downloading ,it will not get paused. Can you share logs. You can Enable Fetch logging with the FetchConfiguration builder. Also can you share an example of a request you enqueue?.

I have to check again maybe its just in another state, this happens to downloads with very small size which, even when I request pause it will be downloaded anyway. Maybe it wont pause soon enough so it would be downloaded by that time. I'll check again and will let you know with logs and more details

I tested again and the problem is just with very small files that will be downloaded fast and pause action wont get a chance to be done. its reasonable result so I will close the issue for now


[SCB-1707] Forward compensation only sends once a failure event if multiple retries fail

Coverage increased (+0.03%) to 80.926% when pulling 82dc9c8324abe4465754b3f40280d0431491e96b on coolbeevip:SCB-1707 into 133a2fa7247b2ba00a380762a38369849390560e on apache:master.


Update python 3.11 version in ci

Codecov Report
Base: 100.00% // Head: 100.00% // No change to project coverage :thumbsup:

Coverage data is based on head (b99c79c) compared to base (d4f1370).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #326   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           12        12
  Lines          428       428
=========================================
  Hits           428       428

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


ADC simulator

Added pedals to the simulation GUI, a Python script that generates ADC data from the simulated pedals and writes them into a csv file, a C file that processes the raw ADC data from the csv file, converts it a percentage and provides the values when requested, and a test file, Test_BSP_ADC.c, that displays in the terminal the press percentage of the accelerator and brake.

 So we want to make the ADC module not specific to the pedals quite yet, since the Pedal stuff will be part of the Driver software. That being said, I want you to do less with this module. I'll leave comments on each file explaining what API I want and how I want it to operate. But if you have more questions, I'm on Slack.
Since some of this software does do pedal stuff, maybe keep the code somewhere safe for now, and I can have you both work on the Pedal drivers once we start working on them.

Also, for the documentation, take a look at the simulator_switches branch to see how I documented each function. The header file shows what it does, the source file shows how it does it, and the test file explains how it was tested.


Fix infinite gelocation search and switch to Airly API

I decided to try and fix infinite location search which caused app breaking. App relies on retrieving geolocation from rate limited Google service, suspecting this as root cause. Also I replaced Airqmon API with direct calls to Airly API so this won't reach API rate limit as well. Hope this helps.
P.S @jsynowiec the app is well written, great job 👍
Fixes #50

I will review this at some point, but it is not a fix to the mentioned issue at first look. Instead, it removes two core functions by replacing them with something else. I doubt I will be willing to merge it in the current form.
Removing geolocation is a wrong decision. You could consider providing a station as an alternate, non-default option. Otherwise, it would be inconvenient to reconfigure Airqmon every time one travels. A few hundred users use the location detection successfully, and I cannot reproduce the issue mentioned in #50, so I see this more as an edge case scenario.
To give you some context on the Airqmon API. User tests and reviews conducted before the release of v2 showed that users are not willing to register for the API key themselves and provide it in the settings. They expect the binary release to work out-of-the-box with as little configuration as needed. There was also a high demand to support more sensors from different networks. To address both issues, the Airqmon API was introduced alongside the v1 release to abstract the Airly data and to enable support for more data providers. Especially outside Poland. That I never publically supported more data providers is a different story.
Also, this app is not "an Airly client", nor is it associated with them in any way.
You can revert to 1.1.0 if you want to use the Airly API directly with your API key instead of depending on the Airqmon API. It also only uses IP-based geolocation so that you might have better luck with the #50.

In the wake of https://github.com/jsynowiec/airqmon/issues/50#issuecomment-1008751034, I will give this another thought as it puts this PR in a different perspective.


Implement version flag

In accordance with https://github.com/sigstore/community/issues/16, implement a version flag

@lukehinds you mean to output the version of the tool?
today cosign have a version command that output the version
$ cosign version
GitVersion:    v0.2.0-18-gfdce69c
GitCommit:     fdce69c1f650e44d3b3c14978098f2c9ace1e270
GitTreeState:  clean
BuildDate:     '2021-04-06T14:38:17Z'
GoVersion:     go1.16.1
Compiler:      gc
Platform:      darwin/amd64

is that this issue is about?


WebView cache is not cleared when calling clearCache(true)

Bug description:
clearCache does not clear the cache as intended
To Reproduce:
Link to repo to reproduce:
https://github.com/jonhassall/react-native-webview-clearcache-bugreport
Here you should put a link to a repository with a reproduction of the bug
expo start
Press 'Load' button to make a HTTPS request to get the current time. The response has a 15 second max-age
Press 'Load' again quickly and see that the date does not change. This is the intended behavior, as it has successfully been cached.
Wait 15+ seconds and press 'Load' again and see the date does change. The cache successfully expired as greater than max-age
The bug:
Press 'Load' to make a fresh HTTPS request with the current time.
Press 'Clear Cache'
Press 'Load'
The date stays the same, as the cache has not been cleared.
Expected behavior:
Expected behavior is the cache is cleared.
Environment:

OS: Android
OS version: 9
react-native version: 36
react-native-webview version: 7.0.1 and 8.1.2

Thank you.

I am experiencing the same issue. Do you have any updates on this?

@jewardMagat Is my bug report missing? I made an entire example repo just for this.

I found out that if you install @react-native-community/cookies, you can clear all the cookies both for iOS and Android by doing:
CookieManager.clearAll(true)

The true param means that it will clear cookies for the webkit webview (which is what this library uses)

@waclock is @react-native-community/cookies will do the same thing clearCache(true) had to do?

@waclock is @react-native-community/cookies will do the same thing clearCache(true) had to do?

To be honest I'm not sure if there's anything that I'm missing. My use case was that I would logout of the app, but the webview wouldn't reset the cookies/cache so if I logged in with a second user, the webview would still show the first user logged in.

@waclock try using of incognito. on closing, app cache mast be reseted

@waclock try using of incognito. on closing, app cache mast be reseted

That's not an option, as I use multiple webviews for my app, which they share caché. I had got it working with incognito by "changing" its property to true for a while before the user logged out, but that only worked for Android. iOS throws an error saying that you can't change the incognito property.
Anyway, I posted that specific library/snippet of code to help others. I'm good with the solution I've come up with.

What about clearCache? the method described in the question should
theoretically work? if not, how to apply it correctly?!
чт, 19 мар. 2020 г., 14:40 John Peebles<EMAIL_ADDRESS>
@waclock https://github.com/waclock try using of incognito. on closing,
app cache mast be reseted
That's not an option, as I use multiple webviews for my app, which they
share caché. I had got it working with incognito by "changing" its property
to true for a while before the user logged out, but that only worked for
Android. iOS throws an error saying that you can't change the incognito
property.
Anyway, I posted that specific library/snippet of code to help others. I'm
good with the solution I've come up with.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/react-native-community/react-native-webview/issues/1245#issuecomment-601155568,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKFFANUAKDLFTMJG3DVSG73RIIHCPANCNFSM4K72UQNQ
.

What about clearCache? the method described in the question should theoretically work? if not, how to apply it correctly?! чт, 19 мар. 2020 г., 14:40 John Peebles<EMAIL_ADDRESS>…
@waclock https://github.com/waclock try using of incognito. on closing, app cache mast be reseted That's not an option, as I use multiple webviews for my app, which they share caché. I had got it working with incognito by "changing" its property to true for a while before the user logged out, but that only worked for Android. iOS throws an error saying that you can't change the incognito property. Anyway, I posted that specific library/snippet of code to help others. I'm good with the solution I've come up with. — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#1245 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKFFANUAKDLFTMJG3DVSG73RIIHCPANCNFSM4K72UQNQ .

In theory I'd say it should clear everything regarding the browser (basically "reset it"). After running clearCache, no cookies should be stored, so if you go to a specific website you shouldn't be logged in. This is not currently happening with clearCache, and also I believe clearCache only works for Android if I'm not mistaken, as it uses a native method from the native implementation.

Thanks for answering.
not sure that I have understood everything. ClearCache reset cache for all
webviews of specific app.
Because I want to try that method. But I don't know how to check execution
of this method.
Author describes abstract method. but can i do something like that -
console.log(cache)
чт, 19 мар. 2020 г., 14:52 John Peebles<EMAIL_ADDRESS>
What about clearCache? the method described in the question should
theoretically work? if not, how to apply it correctly?! чт, 19 мар. 2020
г., 14:40 John Peebles<EMAIL_ADDRESS>… <#m_-8278795414500741489_>
@waclock https://github.com/waclock https://github.com/waclock try
using of incognito. on closing, app cache mast be reseted That's not an
option, as I use multiple webviews for my app, which they share caché. I
had got it working with incognito by "changing" its property to true for a
while before the user logged out, but that only worked for Android. iOS
throws an error saying that you can't change the incognito property.
Anyway, I posted that specific library/snippet of code to help others. I'm
good with the solution I've come up with. — You are receiving this because
you commented. Reply to this email directly, view it on GitHub <#1245
(comment)
https://github.com/react-native-community/react-native-webview/issues/1245#issuecomment-601155568>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKFFANUAKDLFTMJG3DVSG73RIIHCPANCNFSM4K72UQNQ
.
In theory I'd say it should clear everything regarding the browser
(basically "reset it"). After running clearCache, no cookies should be
stored, so if you go to a specific website you shouldn't be logged in. This
is not currently happening with clearCache, and also I believe clearCache
only works for Android if I'm not mistaken, as it uses a native method from
the native implementation.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/react-native-community/react-native-webview/issues/1245#issuecomment-601160438,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKFFANVADPLQVHP4UZYZXJTRIIIPPANCNFSM4K72UQNQ
.

Thanks for answering. not sure that I have understood everything. ClearCache reset cache for all webviews of specific app. Because I want to try that method. But I don't know how to check execution of this method. Author describes abstract method. but can i do something like that - console.log(cache) чт, 19 мар. 2020 г., 14:52 John Peebles<EMAIL_ADDRESS>…
What about clearCache? the method described in the question should theoretically work? if not, how to apply it correctly?! чт, 19 мар. 2020 г., 14:40 John Peebles @.***: … <#m_-8278795414500741489_> @waclock https://github.com/waclock https://github.com/waclock try using of incognito. on closing, app cache mast be reseted That's not an option, as I use multiple webviews for my app, which they share caché. I had got it working with incognito by "changing" its property to true for a while before the user logged out, but that only worked for Android. iOS throws an error saying that you can't change the incognito property. Anyway, I posted that specific library/snippet of code to help others. I'm good with the solution I've come up with. — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#1245 (comment) <#1245 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKFFANUAKDLFTMJG3DVSG73RIIHCPANCNFSM4K72UQNQ . In theory I'd say it should clear everything regarding the browser (basically "reset it"). After running clearCache, no cookies should be stored, so if you go to a specific website you shouldn't be logged in. This is not currently happening with clearCache, and also I believe clearCache only works for Android if I'm not mistaken, as it uses a native method from the native implementation. — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#1245 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKFFANVADPLQVHP4UZYZXJTRIIIPPANCNFSM4K72UQNQ .

Simply try logging into a specific website (let's say github.com), then run clearCache, refresh the website, and see if you're still logged in or not.
If that's the use case you're looking for, I suggest using my solution

I have made vpn browser. And i need to implement possibility of cleaning
cache.
And in my case it's hard to check ot
чт, 19 мар. 2020 г., 15:03 John Peebles<EMAIL_ADDRESS>
Thanks for answering. not sure that I have understood everything.
ClearCache reset cache for all webviews of specific app. Because I want to
try that method. But I don't know how to check execution of this method.
Author describes abstract method. but can i do something like that -
console.log(cache) чт, 19 мар. 2020 г., 14:52 John Peebles
<EMAIL_ADDRESS>… <#m_-3435156154276057388_>
What about clearCache? the method described in the question should
theoretically work? if not, how to apply it correctly?! чт, 19 мар. 2020
г., 14:40 John Peebles @.***: … <#m_-8278795414500741489_> @waclock
https://github.com/waclock https://github.com/waclock
https://github.com/waclock try using of incognito. on closing, app cache
mast be reseted That's not an option, as I use multiple webviews for my
app, which they share caché. I had got it working with incognito by
"changing" its property to true for a while before the user logged out, but
that only worked for Android. iOS throws an error saying that you can't
change the incognito property. Anyway, I posted that specific
library/snippet of code to help others. I'm good with the solution I've
come up with. — You are receiving this because you commented. Reply to this
email directly, view it on GitHub <#1245
https://github.com/react-native-community/react-native-webview/issues/1245
(comment) <#1245 (comment)
https://github.com/react-native-community/react-native-webview/issues/1245#issuecomment-601155568>>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKFFANUAKDLFTMJG3DVSG73RIIHCPANCNFSM4K72UQNQ
. In theory I'd say it should clear everything regarding the browser
(basically "reset it"). After running clearCache, no cookies should be
stored, so if you go to a specific website you shouldn't be logged in. This
is not currently happening with clearCache, and also I believe clearCache
only works for Android if I'm not mistaken, as it uses a native method from
the native implementation. — You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1245 (comment)
https://github.com/react-native-community/react-native-webview/issues/1245#issuecomment-601160438>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKFFANVADPLQVHP4UZYZXJTRIIIPPANCNFSM4K72UQNQ
.
Simply try logging into a specific website (let's say github.com), then
run clearCache, refresh the website, and see if you're still logged in or
not.
If that's the use case you're looking for, I suggest using my solution
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/react-native-community/react-native-webview/issues/1245#issuecomment-601165518,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKFFANXOYWFHNISJZPVTHVDRIIJ3LANCNFSM4K72UQNQ
.

Still looking for a solution.

Give the cookie manager a try. It worked flawlessly for me.


new API hostname and ability to change hostname in client options

Users will connect to our new .com domain in case another .io TLD problem happens. Users can also set options[:api_hostname] when instantiating the API client to set their own domain name.

@tbarbugli PR should be all set, includes some SNI testing and should ensure the old getstream.io hostname should still pass the regex pattern for Heroku users. (could possibly simplify it by combining both hostnames into a single regex but I'd prefer to be more explicit about it for a first pass)

Do we mind that any existing Heroku app with the STREAM_URL environment variable in the form <username>:<password>@api.getstream.io/?app_id=<app id> will actually connect to the new stream-io-api.com domain?
In the feature branch I was working on for this card I had updated the regex so use the domain set in configuration.

I've piled on with a minor change to the README.md to outline minimum/supported versions in a way that's consistent with the other libraries.

Discussed in person with Tommaso. We're good to merge.


Move first shortcut doesn't work in windows with pinned tab(s)

Pressing Alt-[ (or Shift-]) have no effect.
Is there a way to capture logs around this?
Thanks

This shows in Console:
TypeError: e.target.blur is not a function  content_script.js:21:310


Will there be a built-in webpage browser

Sometimes HTML code can express more things than classic GUI.For example,it's very convenient to show scores of students just with HTML and CSS,which is pretty as well.
So,will there be a built-in webpage browser in nana?I am very looking forward to it.
(I am inspired by this repo litehtml)

Hi, there is not current plan to develop a html renderer. It's a huge project.


Revisit About link

Right now, the About link takes you to the Monocular README.md
We should rethink what to do with it.

I don't think we'll need this anymore once we have the kubeapps/website landing as well, so IMO we remove it


UofT-DSI | python - Assignment 2

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
Added code as required by the assignment under 1 , 2, and 3 headings.
What did you learn from the changes you have made?
how to use numpy functions, including loops to import, manipulate, then check data from a file.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
I was considering alternative code for the check_zeros function, as well as other methods like .strip() to prevent errors due to the source data/files, which makes the code more robust in handling of data irregularities.
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
It took me a few minutes to realize when testing the patient_summary function that I was outputting the length of string instead of the string itself, which had my confused as to why mean, min, and max were all outputting 60.
How were these changes tested?
I tested the code by running the python lines in vscode, revising, then re-running the code until I observed the expected output.
A reference to a related issue in your repository (if applicable)
N/A
Checklist

[x] I can confirm that my changes are working as intended

You did a great job here! Just a few quick notes:

Please add comments to your code to make it clearer for other people and explain what is happening in your code.
It is important to always define which optional parameters are getting values. So for example the code summary_values = np.mean(data, ax) should be summary_values = np.mean(data, ax).
Please go ahead and do the modifications and then close this pull request. Thanks!

Item 1, I didn't add comments because there were comments everywhere already. Now I know I must always add my own. Will do going forward.
Item 2, X should be Y, your code is exactly the same, what are you asking me to change?
summary_values = np.mean(data, ax) should be summary_values = np.mean(data, ax)

Perfect!
About second note:
Unfortunately it is not edited properly, so this is the correct way:
summary_values = np.mean(data, axis=ax)
On Sunday, September 15, 2024, ALEX8642 @.***> wrote:

You did a great job here! Just a few quick notes:

Please add comments to your code to make it clearer for other people
and explain what is happening in your code.
It is important to always define which optional parameters are
getting values. So for example the code summary_values = np.mean(data,
ax) should be summary_values = np.mean(data, ax).
Please go ahead and do the modifications and then close this pull
request. Thanks!

Item 1, I didn't add comments because there were comments everywhere
already. Now I know I must always add my own. Will do going forward.
Item 2, X should be Y, your code is exactly the same, what are you asking
me to change?
summary_values = np.mean(data, ax) should be summary_values =
np.mean(data, ax)
—
Reply to this email directly, view it on GitHub
https://github.com/ALEX8642/python/pull/2#issuecomment-2351761996, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/BFNKGJHXEYNAVJETDPHIHZLZWXOARAVCNFSM6AAAAABN2DG5MWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJRG43DCOJZGY
.
You are receiving this because you commented.Message ID:
@.***>


InterestEarningAccount class requirements

Hello, thank you so much for these tutorials they have helped me a lot. One of the requirements for the class InterestEarningAccount says that "An interest earning account: Will get a credit of 2% of the month-ending-balance.". But the implementation of the PerformMonthEndTransactions method gives a credit of 5%.

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

ID: ece1648c-e8a7-153d-a22b-350a619aa26d
Version Independent ID: a0c9221a-cc55-4c31-4f54-0e5fbdcbce25
Content: Object-Oriented Programming (C#)
Content Source: docs/csharp/fundamentals/tutorials/oop.md
Product: dotnet-csharp
Technology: csharp-fundamentals
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

@BillWagner Let me handle that!


Verify that tr069 server still works

i have no actual guarantee but it boots up, gets connected to mysql and generally doesnt throw up in my face.


Category::Syntax error returned on valid JSON when deserializing incompatible type into enum value

I encountered the following situation:
Problem
#[derive(Debug, Deserialize, Serialize)]
pub struct ObjectWithAdt {
    pub kind: TypedVariant,
}

#[derive(Debug, Deserialize, Serialize)]
pub enum TypedVariant {
    A,
    B,
}

let payload = json!({
    "kind": 1,
});

let serialized = serde_json::to_string(&payload).unwrap();
let err = serde_json::from_str::<ObjectWithAdt>(&serialized).unwrap_err();
dbg!(&err);
assert_eq!(err.classify(), Category::Data);

Encountered the following error:
src/main.rs:55:5] &err = Error("expected value", line: 1, column: 9)
thread 'main' panicked at src/main.rs:56:5:
assertion `left == right` failed
  left: Syntax
 right: Data

Expectation
I expected something akin to this output:
src/main.rs:55:5] &err = Error("invalid type: integer `1`",  line: 1, column: 9)

I am sympathetic to the fact that which type to expect may be hard to capture as part of the error reporting. However, it comes across as incorrect that the error scenario is classified into Catalog::Syntax - the payload is clearly valid JSON.
See separate playground link for multiple permutations, including the failing scenario described herein.

I just found this open PR which improves the error messages for this scenario - I assume this also changes the Category into the correct one as well


Have nearby info alert dialog "OK" button on bottom right of dialog

Description
Fixes #2177 Nearby places information dialog okay button

Used setPositiveButton instead of setNeutralButton
Changed function to use lambda

Tests performed
Automated tests
Tested 2.9.0-debug-nearby-info-button~1e8a940cc on Galaxy Nexus (emulator) with API level 28.
Screenshots showing what changed

Before
After

Codecov Report

Merging #2178 into master will increase coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master   #2178      +/-   ##
=========================================
+ Coverage    5.72%   5.72%   +<.01%
=========================================
  Files         231     231
  Lines       11587   11586       -1
  Branches     1078    1078
=========================================
  Hits          663     663
+ Misses      10869   10868       -1
  Partials       55      55

Impacted Files
Coverage Δ

...r/free/nrw/commons/contributions/MainActivity.java
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Going to work on this, fix conflicts + realised there are other places where this is the same that I want to fix too.


DNSSEC not able to enable

How do i enabled dnssec in the docker-compose executed pdns-server docker image?

The container docker-compose uses seems to have dnssec disabled by default. I've put an issue in upstream to see if they'd consider enabling it - psi-4ward/docker-powerdns#18
Otherwise you would need to change the pdns.conf file in the container. First do docker ps --filter "name=pdns-server" to get the conainer ID then docker exec -it containerid /bin/sh to enter the container, finally use vi to change /etc/pdns/pdns.conf to include gmysql-dnssec=yes

I already did that, but the pdns.conf seems to be overwritten in each Container restart.
What really helped was adding the --gmysql-dnssec=yes to the docker-compose.yml as startup parameter to the container options.

pdns.conf sould not get overwritten

But it is, every time my system issues a restart cause of system updates, the pdns.conf inside the container is back to standard.
I tried to mount /etc/pdns/conf.d as volume to create own configs there but I could not figure it out yet how to do that.
Can you give a small example on how I would need to do that @psi-4ward

Did you solve your problem?


typo fix moshi -> mochi

LGTM

🚀 The docs preview is ready! Check it out here:     https://modal-labs-examples--frontend-preview-0ac4524.modal.run


Implement simple PipelineRun

Expected Behavior
A user should be able to create a PipelineRun which will look at the Tasks in the referenced Pipeline and for each of those, create a TaskRun.
If #59 is done before this, creation of the TaskRun would also trigger running of the Task, however if not, nothing would actually be executed but the TaskRuns would exist.
Out of scope of this issue (coming in later issues):

Providing inputs to the Tasks
Doing something with produced outputs

Requirements:

Test coverage (unit tests + if possible integration tests, may be blocked by #16 )
Docs that explain how to create a PipelineRun, with examples
Docs that explain how to debug this (i.e. where to look if it goes wrong)

Actual Behavior
If you create a PipelineRun, nothing will happen.
Steps to Reproduce the Problem

Deploy the Pipeline CRD + related CRDs to your cluster (note: should be docs on how to do this post kubebuilder)
Create a Task like this:

apiVersion: pipeline.knative.dev/v1beta1
kind: Task
metadata:
  name: helloworld-task
  namespace: default
spec:
    buildSpec:
        steps:
            - name: helloworld
              image: busybox
              args: ['echo', 'hello', 'build']

Create a Pipeline like this:

apiVersion: pipeline.knative.dev/v1beta1
kind: Pipeline
metadata:
  name: hello-pipeline
  namespace: default
spec:
    tasks:
        - name: helloworld-task-1
          taskRef:
              name: helloworld-task
        - name: helloworld-task-2
          taskRef:
              name: helloworld-task
        - name: helloworld-task-3
          taskRef:
              name: helloworld-task

Create a PipelineRun like this:

apiVersion: pipeline.knative.dev/v1beta1
kind: PipelineRun
metadata:
  name: hello-pipeline-run-1
  namespace: default
spec:
    pipelineRef:
        name: hello-pipeline
    triggerRef:
        type: manual

Creating the PipelineRun should have created TaskRuns, so we should then be able to see:

a. The status of the PipelineRun should be updated (see example), check with kubectl get pipelineRuns
b. There should be 3 TaskRuns created, each with a unique name and a reference to the PipelineRun (check with kubectl get taskRuns), for example:
apiVersion: pipeline.knative.dev/v1beta1
kind: TaskRun
metadata:
  name: helloworld-task-run-1-1
spec:
    taskRef:
        name: helloworldTask
    trigger:
        triggerRef:
            type: manual

(I left the PipelineParams reference out of the PipelineRun, but if it turns out that we need a ServiceAccount to make this work, we'll need to specify it in the PipelineParams and reference it in the PipelineRun as well)

@bobcatfish Was looking at if there is a way to divide this further.
Few subtasks i am thinking of:

[ ] Add unit tests for task_controller.go
[ ] Add unit tests for task_run_controller.go

On the branch, i went ahead and added all the methods

runWorker
processNextWorkItem
enqueueBuild
We could potentially see if
https://github.com/knative/build-pipeline/blob/master/pkg/controller/taskrun/controller.go#L275 has  some tasks recorded.


chore: upgrade eslint

rm -r node_modules
npm uninstall eslint
npm install --save-dev eslint

We should solve this as part of https://github.com/newrelic/nr1-graphiql-notebook/pull/31 (i.e. we do the update there, then merge it).

:tada: This issue has been resolved in version 0.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


A question about de-normalization.

Thank you for nice work!
Have you conducted any more experiments on de-normalization? Does de-normalization have a positive impact on training SwinIR?

Thank for your question.
Unfortunately, I have not applied de-normalization on SwinIR-NG, due to the fair comparison issue.
The performances reported in our paper come from the results of SwinIR paper.
Therefore, I have tried to keep the settings as SwinIR.
Thank you.


Fix deadlock by only allowing the last page in each batch to send a single message

Summary
There's a deadlock in collecting Gitlab commits. This is due to that multiple goroutines in FetchWithPaginationAnts can send false to the channel while the main for loop breaks immediately after receiving the first false. The fix is to only allow the last page in each batch to send a single message (whether true or false) to the main for loop.
Key Points

[ ] This is a breaking change
[x] New or existing documentation is updated

LGTM


Determine new API URL structure for warehouse (starting with new JSON API)

At the PyCon2014 sprint I have started to make bandersnatch easier to cache. This means moving away from XML-RPC in general.
I'm leveraging the existing /pypi//json API which already helps, but I'll need two more endpoints:

get a list of all packages and their most recent serial
get the changelog

I implemented the necessary code on a branch for PyPI:
https://bitbucket.org/ctheune/pypi/branch/ctheune-bandersnatch-json
However, I don't wanna force this through but have a decision how the URLs should look like.
Ideally we can implement this in both warehouse and PyPI in a way that bandersnatch can support both of them without breaking when you guys switch the public server (and I might be on vacation. ;) )

Hello! Quick call-out that some of us would really enjoy the JSON API containing info like owners/maintainers before the XMLRPC API is shut down. See ticket linked right above. Cheers, thanks for all your work!

I've marked #2914 as something we should address before shutting down legacy PyPI, but developing the structure for the new API can wait till after we shut down the legacy site.

As we develop the new API we should consider #347 as well. And I've added this issue to the list of things we might work on at the PyCon sprints.

I would also love an API for managing both my account and my projects. For some examples of where this is useful:

We have an account that owns all of the projects our organization publishes. I want to rotate its password every week.
Likewise, I want to audit all of my organization's project and verify that no more than n people have admin access to it.
I am actually in the process of migrating all of my projects in my personal account to a new account. It would be cool to do that programmatically.

I'm happy to help with the design and discussions around this (my day job is helping design APIs and implement clients for Google Cloud Platform).

I am actually in the process of migrating all of my projects in my personal account to a new account. It would be cool to do that programmatically.

We could probably just call this "the ability to add/remove collaborators via API" I think, since actual account migration is probably not something that happens very often.

I'm hoping to carve out some ideas on this soon, maybe next week? Ideally the output of this ticket is the basic framework/skeleton of the API, and then further tasks can extend the functionality of it.
Defining APIs for PyPI is a tad bit trickier than the general case, because we generally have to design for a decade+ (for instance, XMLRPC got added, but it has not aged or scaled well! From my investigations so far, GraphQL would be a similar mistake). I'm almost certain that something Hypermedia based is the way forward here, but there's a lot of different ways to take that, we'll also need to be ensure to include all of the typical scaling things like pagination and the like.

We could probably just call this "the ability to add/remove collaborators via API" I think, since actual account migration is probably not something that happens very often.

Yep just calling a a specific use case.

I'm hoping to carve out some ideas on this soon, maybe next week? Ideally the output of this ticket is the basic framework/skeleton of the API, and then further tasks can extend the functionality of it.

Sounds good, happy to review and be around to bounce ideas off of (I'm on IRC during PST working hours as thea).

Hypermedia based is the way forward here, but there's a lot of different ways to take that, we'll also need to be ensure to include all of the typical scaling things like pagination and the like.

Agreed - REST/JSON (and to some extend RPC/JSON) has more or less stood the test of time (in tech years, at least). Happy to provide feedback on that sort of stuff as well.

@jonparrott In our meeting on Monday Donald said he's started a design document about the new API(s). He's currently trying to focus on Python open source work on Thursdays and Fridays, so maybe you could ping him this Friday and start an Etherpad/Google Doc?
@steveklabnik and @phildini, will you be at PyCon North America later this month? Several of us will be discussing and working on the API redesign during the sprints.

I will not. I wasn't aware until now :) maybe we could make some time to chat via skype or something? Honestly, at this point, @dgeb is the person you'd want to talk to, so let's cc him here too :)

Some notes from today's sprints:

Simple api is the biggest success story for scaling

Hypermedia API

We should have a hypermedia API

Allows us to change things in the background
Move things around as we need to
Not having a single route for everything

Rules out GraphQL

Bad idea: something that allows you to reduce the data you get back

Because it's easier/better for us to just catch the full response
Having more responses that are smaller is not a big deal with HTTP2

Bad idea: something that lets you get data in bulk

We have a long tail of packages
Also uploads are very active
This means that the cache for a bulk request will frequently be out of date
It's easier for us to cache smaller responses about individual projects/releases

Technologies for hypermedia APIs

Hyperschema (json schema stuff)

Plain JSON over HTTP
http://json-schema.org/latest/json-schema-hypermedia.html
Actual json document + schema document
No library implementation
If you ignore the schema, it's just a plain JSON api
Ideally, you don't hard-code URLs in the individual endpoints

These are defined by the schema instead

Versioning is just done by changing link headers, not via URL path

Perhaps the schemas will be versioned

Would need to be in the core of warehouse

could live at api.pypi.org?

Eventually existing APIs will just use this new API

JSON-legacy/XML-RPC will just wrap this new API
Then we can work in getting people off these APIs

Other things we need:

Some standard for error responses for the entire endpoint
Standard SUNSET header: allows the API to tell clients that endpoints are being deprecated

Will need to bake this into the various clients, but should be done from day one

(cc @cooperlees @asmacdo @dwighthubbard)

Was the possibility of an RPC-based API discussed at all? I'd like to know the reasons for ruling it out.
(for context, I'm not a big fan of hypermedia APIs - they tend to add an enormous amount of cognitive overhead for both users and maintainers).
Not that we should block on this by any means, just curious as to what was discussed.

There are many downsides to RPC APIs.  You need to name every operation; you don’t benefit from HTTP features like caching or transparent retries since everything is a POST; you need to identify every resource ID instead of relying on URLs to identity them; you need to add authorization code in all methods instead of benefiting from Pyramid ACLs linked to the resource tree.
I find too that it’s not always easy to come up with names for all resources and define what the HTTP verbs should mean, but otherwise the uniform interface has lots of benefits.

There are lots of ways of doing RPC APIs, and while your concerns are valid for some implementations, they aren't universal.
I mentioned this briefly during the sprints: Google's API style guide is an extremely well-done guide for creating RPC APIs that can also be exposed in a REST-like way. While it walks through the patterns and examples using protobuf, it's applicable regardless of the encoding type.
Hypermedia APIs are really bizarre to me personally. If we're going to go the hypermedia route, I would prefer us take after GitHub and be relatively conservative about it. Although I really hate the idea of using HTTP headers to convey useful information like next page tokens.

Thanks for the link!
(Same feeling about using headers.  I am using JSON-API in a project and like the uniform response format with pagination links and related resources.)

Yeah, using headers for actual data makes things transport-specific. Using full URLs for links also ties the API to a specific transport, whereas using resource names (basically just the path part of the URL) provides agnosticism. We want something that will have longevity, I think buying in deeply into hypermedia would be counterproductive to that.

Was the possibility of an RPC-based API discussed at all? I'd like to know the reasons for ruling it out.

We didn't discuss RPC APIs though I had considered it when I was thinking about it prior to PyCon. My thinking is basically that:

The sort of stereotypical RPC API tends to use a single route URL (often times with POST) for all of it's requests. This is true of the older ones like XMLRPC and JSONRPC and some newer ones like GraphQL and I believe gRPC[1].
A large portion of our API is read-only, and much of that we want to implement in a way that can be served statically using nothing more than some files on disk and Apache/Nginx/etc. None of the gRPC frameworks seem to support this at all, and while they can maybe be twisted into making it workable, you're getting far off the beaten path where it's likely to break.
We scale our API by caching, while you can do an RPC based API [2] from what I've found of the various RPC frameworks, it's either not documented at all how to do it, or it's impossible. I delved into this with gRPC and basically just found a bunch of open issues asking for guiddance or mechanics for doing so.
Ultimately though, I said hypermedia because it's the style of API I most prefer and I think they best fit the use case of the web (after all, websites are the best example of hypermedia and they last decades just fine!). I'm happy to be convinced otherwise, but skimming through the google guide, I'm not seeing anything that stands out that makes me feel like "yea, this makes me really like RPC APIs now".

Of course similarly to RPCs, there are a lot of ways to do Hypermedia APIs ;) For instance, sticking full URLs or putting Link metadata into headers is not a mandatory part of Hypermedia APIs. Although having the option to do that is incredibly useful.
One of the key benefits of a fully hypermedia API is that the only thing you need is the root URL of the API and everything else is discovered at runtime. A historical use case where that would have been extremely useful is the upload API, it was originally living under the same domain, but as time went on we realized we needed it to live at a new, different domain. With a hypermedia API that would have been as trivial as starting to serve the root document that says the upload API resources are located at a different hostname, and all existing clients would have simply automatically started uploading to the new domain.
If you think in terms of HTML, the original API could have been written like:
<!-- https://api.pypi.org/ -->

<form method="POST" action="/upload/" name="upload">
   <!-- Some Upload Fields -->
</form>

As client could then do something like:
import urllib.parse

import html5lib
import requests

resp = requests.get("https://api.pypi.org/")
resp.raise_for_status()

data = html5lib.parse(resp.content)
upload = data.find("//form[name=upload]")

resp = requests.request(upload["method"], urllib.parse.urljoin("https://api.pypi.org/", upload["action"]))
resp.raise_for_status()

Now that code isn't perfect, but you can see here all that really got hard coded in the end client is that there is an action (via a form) named upload, and the base url. Now if we ever want to do something like, move uploading to it's own domain name (or a different URL or whatever), we simply start returning a new response like:
<!-- https://api.pypi.org/ -->

<form method="POST" action="//upload.pypi.org/" name="upload">
   <!-- Some Upload Fields -->
</form>

And all of the existing clients are not only still going to work, but they'll automatically adjust to point to the new location. Effectively instead of hardcoding URLs or structure, we're hardcoding link/action names (such as "upload" here).
Obviously HTML is a pretty crummy data exchange format for computers (great for presentation to users as a UI builder though) so we'll want some encoding that is built for data exchange. JSON is a popular one, but the big problem with JSON is there is nothing like forms or links built into it. So in order to implement something like the above, your client has to start baking assumptions into it like "when I fetch this URL, the data located in the "url" key is an URL". That isn't what we want (and isn't hypermedia!) so we have to look to other content types that do include those things.
There are a number of options for this like:

JSON Hyper Schema.
JSON API.
Siren
Collection+JSON
HAL

There are other ones too that offer similar things, but effectively what all of these do is attempt to marry the idea of actions and links into a data format that sucks less than HTML. Some of them rely on things like headers, while others rely on specially formatted response bodies, and others rely on a side by side schema file that can be combined with the response data to generate links/actions at runtime.
Again, I'm not particularly married to any one of these, however my personal favorite is JSON Hyper Schema. It relies on a side by side schema file that both validates the data in the response and lets you extract links/actions out of a JSON body without having to spend a lot of time formatting it in exactly the right way.
Here's a quick example of what it looks like using a demo of a blog:
Say you have a resource that can represent a blog post, you might have a JSON response that returns something like:
{
    "id": 5,
    "title": "JSON Hyper-Schema",
    "slug": "json-hyper-schema",
    "body": "My long post about JSON Hyper-Schema..."
}

You could then craft a JSON Schema document that looked like:
{
    "type": "object",
    "properties": {
        "id": {
            "type": "number"
        },
        "title": {
            "type": "string"
        },
        "urlSlug": {
            "type": "string"
        },
        "body": {
            "type": "string"
        }
    },
    "required": ["id"],
    "base": "http://api.example.com/",
    "links": [{
        "rel": "self",
        "href": "posts/{id}",
        "templateRequired": ["id"]
    }]
}

When you combine these two responses at runtime, you can fetch any of the data out of the JSON response you like, but you can also look and see "oh I can find out the link to myself by looking in links, finding the one that is rel=self, and combining it with data from the response (in this case id) to generate a href.
The full spec allows much more than this of course, you can link to other things like next/prev, where you'd include a bit in the response body that tells you what the next/previous page is, and then a link object to describe how to turn that into an URL or linking to actions that don't cleanly map to GET/POST/DELETE/etc.
One of the reasons I really like this style over the other styles, is the Hypermedia portion of it can more or less be completely ignored for just playing around use cases. Since the data itself looks like a typical "JSON over HTTP" API, you can treat it like that and hard bake in URLs etc etc, however if you do that then you risk breaking if the API gets restructured (like moving things to a different URL path, or what have you). That often times doesn't matter for quick one off scripts you're never going to run again, but for things that you plan on implementing for wider consumption or that you want to have working for a long time, you'll want to opt into the extra complexity of parsing the schema object and combining them at runtime.
Probably the biggest downside here is there are not a lot of things doing a full out Hypermedia API today, which means that tooling for them isn't super great across all languages.
Does that all make sense? I'm not currently married to any part of this of course, but that's sort of the thinking that I had.
[1] I had found some documentation that suggests maybe you can do something saner with gRPC, but it's really hard to find much documentation on how to actually use gRPC in an existing application, or really at all in Python. After spending like 2 hours unable to get even a demo gRPC service working, I gave up on it.
[2] RPC and hypermedia aren't really mutually exclusive tbh, you have things like the defunct hyperglyph project which gave RPC using hypermedia.

The example you showed for hypermedia is super problematic from my perspective because it requires clients to always do run-time discovery of the API. In practice, almost no one does this (and when forced to, it leads to overly complex client libraries). They will hardcode URLs and make assumptions, and if they don't, the will make assumptions about the links themselves (just like your hardcoded //form[name=upload]). This is really problematic in my opinion.
A true, fixed, versioned IDL (like protobuf, but I am by no means advocating for protobuf, JSON-Schema and friends also satisfy this) solves this. It is an ahead-of-time commitment to a specific interface. This is what I want. This allows clients to build with confidence.
Also, I wanted to clarify something about linking to the Google API Style Guide - I absolutely do not want warehouse to have a gRPC API, but I wanted to call out two things: that guide has well established patterns that work regardless of transport and Google uses protobuf to serve both gRPC and HTTP/JSON/REST APIs. See https://cloud.google.com/apis/design/standard_methods for examples of how we map common methods (List, Create, Get, Update, Delete) to HTTP methods. It might be a useful exercise to sketch out the API in proto or OpenAPI to see how it would look.
(I would strongly support adoption of OpenAPI specs, as we could immediately take advantage of swagger-generated clients)

You don't do full discovery every single time. You keep your current
position. It's one request each time, just like RPC.
On Thu, May 17, 2018 at 9:41 PM, Thea Flowers<EMAIL_ADDRESS>wrote:

The example you showed for hypermedia is super problematic from my
perspective because it requires clients to always do run-time discovery of
the API. In practice, almost no one does this (and when forced to, it leads
to overly complex client libraries). They will hardcode URLs and make
assumptions, and if they don't, the will make assumptions about the
links themselves (just like your hardcoded //form[name=upload]). This
is really problematic in my opinion.
A true, fixed, versioned IDL (like protobuf, but I am by no means
advocating for protobuf, JSON-Schema and friends also satisfy this)
solves this. It is an ahead-of-time commitment to a specific interface.
This is what I want. This allows clients to build with confidence.
Also, I wanted to clarify something about linking to the Google API Style
Guide - I absolutely do not want warehouse to have a gRPC API, but I wanted
to call out two things: that guide has well established patterns that work
regardless of transport and Google uses protobuf to serve both gRPC and
HTTP/JSON/REST APIs. See https://cloud.google.com/apis/
design/standard_methods for examples of how we map common methods (List,
Create, Get, Update, Delete) to HTTP methods. It might be a useful exercise
to sketch out the API in proto or OpenAPI
https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml
to see how it would look.
(I would strongly support adoption of OpenAPI specs, as we could
immediately take advantage of swagger-generated clients)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/pypa/warehouse/issues/284#issuecomment-390068471, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AABsikKs0o1_7znSwi0BE4LM4ixG8cMhks5tzibggaJpZM4Byq-v
.

@theacodes I guess I'm just not seeing what an IDL actually gets us here? The example of JSON Hyper Schema has JSON-Schema as part of it, it's just instead of your client hardcoding URLs and actions all over the place, it can discover them at runtime. You can also ship them as part of your client so that a network access isn't required in the common case (unless you introduce a new schema).

I don't want to hold up progress. I would love to see a design doc or proof of concept if/when we have one.

POC is up #4078, I'm using this etherpad to document design proposal.
I did my best to incorporate the ideas discussed here, as well as in person discussions at pycon. I've set aside some time to keep working on this, so all feedback is welcome.

Per discussion in IRC just now -- the author closed #4078 last year, and it's unclear whether this kind of feature would be welcome if someone were to try again at implementing it.

Maintainers' opinions are welcome. Also, in my opinion, it would be easier to finalize design and implementation, test and review, and deploy this if we had funding for it.

@asmacdo that Etherpad has now dissolved and reset -- did you keep a copy of your design proposal anywhere else?
Reminder to others that work on this could probably use funding.

@brainwane unfortunately I dont have a backup , but the PR could still be distilled down into a design proposal.
Key points:

Create a resource based, hypermedia API
Use Marshmallow to serialize
use apispec to generate OpenAPI schema

Additional necessary features

Pagination
Filtering
CDN caching (consider how pagination/filtering will affect)

Bit of a related update here: PEP 691 has been accepted.


gen_vx_mask problem when shapefile wraps the edge of a global grid.

OK, here's the latest problem when the mask wraps over the edge of the grid:

bin/gen_vx_mask \

/scratch/johnhg/gfs.grib \

/scratch/johnhg/ne_110m_geography_regions_polys.shp \

mask.nc -type shape -shapeno 9 -v 3

I've attached a plot of the resulting mask.
[MET-989] created by johnhg

Original JIRA attachment location:
https://sdg.rap.ucar.edu/jira/browse/MET-989?filter=12903
See comment above from 4/25/18
lon_wrapping.pdf


Creating storage account with hierarchical namespace results in error

Describe the bug
Parameter --hns or --enable-hierarchical-namespace fails the az storage create command.
Command Name
az storage account create
Errors:
(InvalidRequestPropertyValue) The value 'True' is not allowed for property isHnsEnabled. For more information, see - https://aka.ms/storageaccounthns
Code: InvalidRequestPropertyValue

To Reproduce:

az storage account create -g {} -n {} --sku Premium_LRS --enable-hierarchical-namespace

Expected Behavior
The storage account is created.
Environment Summary
Linux-5.15.0-1023-azure-x86_64-with-glibc2.31, Ubuntu 20.04.5 LTS
Python 3.10.10
Installer: DEB

azure-cli 2.46.0

Additional Context

@evelyn-ys for awareness

Now with az upgraded to version 2.47.0, the error remains the same and still is not possible to create storage accounts with hierarchical namespaces.

Found workaround for everyone who runs into this.
For making this work it is needed to add parameter --kind BlockBlobStorage.
The problem is, the API does not tell you that it's not possible to create --sku Premium_LRS with --kind StorageV2 (which is default) anymore. Instead of it returns error The value 'True' is not allowed for property isHnsEnabled. which is misleading to say the least.
I would recommend a returning more descriptive error, at least eg.: "Selected combination of kind and sku is not available".


refactor/auth: make use of safeApp.auth.openUri function for sending auth requests

Closing, as email app has been archived and web_hosting_manager moved to it's own repository.


As soon as i click generate segments i get an error and nothing happens for like 1h

This is what i get, shown in the browser console.

My whole logs from cmd.
C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\easyocr\detection.py:78: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  net.load_state_dict(copyStateDict(torch.load(trained_model, map_location=device)))
C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\easyocr\recognition.py:169: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  state_dict = torch.load(model_path, map_location=device)
INFO:     Started server process [9932]
INFO:     Waiting for application startup.
INFO:     Adding highlight 0726(1).mp4
INFO:     Adding highlight 0726(10).mp4
INFO:     Adding highlight 0726(11).mp4
INFO:     Adding highlight 0726(12).mp4
INFO:     Adding highlight 0726(2).mp4
INFO:     Adding highlight 0726(3).mp4
INFO:     Adding highlight 0726(4).mp4
INFO:     Adding highlight 0726(5).mp4
INFO:     Adding highlight 0726(6).mp4
INFO:     Adding highlight 0726(7).mp4
INFO:     Adding highlight 0726(8).mp4
INFO:     Adding highlight 0726(9).mp4
INFO:     Adding highlight 0726.mp4
INFO:     Adding 13 highlights, this may take a while.
WARNING:  Wait for `Application startup complete.` to use Crispy.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://<IP_ADDRESS>:7821 (Press CTRL+C to quit)
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fc99230e9d45b721291/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fc99230e9d45b721293/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fca9230e9d45b721295/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fca9230e9d45b72129d/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b72129f/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fca9230e9d45b721297/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fca9230e9d45b721299/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fcb9230e9d45b7212a1/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fca9230e9d45b72129b/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fcb9230e9d45b7212a3/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b7212a5/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fcb9230e9d45b7212a7/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fcb9230e9d45b7212a9/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fc99230e9d45b721291 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fc99230e9d45b721291 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fc99230e9d45b721293 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fc99230e9d45b721293 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fca9230e9d45b721295 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /filters/66a37fca9230e9d45b721295 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62046 - "GET /highlights/66a37fc99230e9d45b721291/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fca9230e9d45b721297 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fca9230e9d45b721297 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fca9230e9d45b721299 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fca9230e9d45b721299 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fca9230e9d45b72129b HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /filters/66a37fca9230e9d45b72129b HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62047 - "GET /highlights/66a37fc99230e9d45b721293/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62048 - "GET /highlights/66a37fca9230e9d45b721295/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fca9230e9d45b72129d HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fca9230e9d45b72129d HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b72129f HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fcb9230e9d45b72129f HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fcb9230e9d45b7212a1 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /filters/66a37fcb9230e9d45b7212a1 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62049 - "GET /highlights/66a37fca9230e9d45b721297/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62050 - "GET /highlights/66a37fca9230e9d45b721299/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62051 - "GET /highlights/66a37fca9230e9d45b72129b/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fcb9230e9d45b7212a3 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fcb9230e9d45b7212a3 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b7212a5 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fcb9230e9d45b7212a5 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fcb9230e9d45b7212a7 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /filters/66a37fcb9230e9d45b7212a7 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fcb9230e9d45b7212a9 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fcb9230e9d45b7212a9 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62046 - "GET /highlights/66a37fcb9230e9d45b7212a7/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62051 - "GET /highlights/66a37fcb9230e9d45b7212a3/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62049 - "GET /highlights/66a37fcb9230e9d45b7212a5/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62047 - "GET /highlights/66a37fca9230e9d45b72129d/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62048 - "GET /highlights/66a37fcb9230e9d45b7212a1/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62050 - "GET /highlights/66a37fcb9230e9d45b72129f/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62046 - "GET /highlights/66a37fcb9230e9d45b7212a9/thumbnail HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62051 - "GET /highlights/66a37fc99230e9d45b721291/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62047 - "GET /highlights/66a37fca9230e9d45b721297/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62048 - "GET /highlights/66a37fca9230e9d45b721295/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62049 - "GET /highlights/66a37fc99230e9d45b721293/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62050 - "GET /highlights/66a37fca9230e9d45b721299/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62046 - "GET /highlights/66a37fca9230e9d45b72129b/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62049 - "GET /highlights/66a37fca9230e9d45b72129d/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62050 - "GET /highlights/66a37fcb9230e9d45b72129f/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62047 - "GET /highlights/66a37fcb9230e9d45b7212a1/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62051 - "GET /highlights/66a37fcb9230e9d45b7212a3/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62048 - "GET /highlights/66a37fcb9230e9d45b7212a5/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62046 - "GET /highlights/66a37fcb9230e9d45b7212a7/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62049 - "GET /highlights/66a37fcb9230e9d45b7212a9/snippet HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fc99230e9d45b721291/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fc99230e9d45b721293/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fca9230e9d45b721295/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fca9230e9d45b721297/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fca9230e9d45b721299/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fca9230e9d45b72129b/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fca9230e9d45b72129d/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fcb9230e9d45b72129f/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fcb9230e9d45b7212a1/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fcb9230e9d45b7212a3/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fcb9230e9d45b7212a5/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fcb9230e9d45b7212a7/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b7212a9/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /musics HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /musics/66a37fc99230e9d45b721290 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62049 - "GET /musics/66a37fc99230e9d45b721290/music HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fc99230e9d45b721291/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fc99230e9d45b721293/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fca9230e9d45b721295/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fca9230e9d45b721297/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fca9230e9d45b721299/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fca9230e9d45b72129b/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fca9230e9d45b72129d/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /highlights/66a37fcb9230e9d45b72129f/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fcb9230e9d45b7212a1/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/66a37fcb9230e9d45b7212a3/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fcb9230e9d45b7212a5/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fcb9230e9d45b7212a7/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b7212a9/segments HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /filters/global HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62046 - "GET /results/thumbnail?t=1721991531182 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62051 - "GET /results/video?t=1721991531182 HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\responses.py", line 299, in __call__
    stat_result = await anyio.to_thread.run_sync(os.stat, self.path)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\to_thread.py", line 33, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
    return await future
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
    result = context.run(func, *args)
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'merged.mp4'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 366, in run_asgi
    result = await app(self.scope, self.receive, self.send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\uvicorn\middleware\proxy_headers.py", line 75, in __call__
    return await self.app(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\fastapi\applications.py", line 261, in __call__
    await super().__call__(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\middleware\errors.py", line 181, in __call__
    raise exc
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\middleware\errors.py", line 159, in __call__
    await self.app(scope, receive, _send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\middleware\cors.py", line 84, in __call__
    await self.app(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\exceptions.py", line 82, in __call__
    raise exc
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\exceptions.py", line 71, in __call__
    await self.app(scope, receive, sender)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
    raise e
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\routing.py", line 656, in __call__
    await route.handle(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\routing.py", line 259, in handle
    await self.app(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\routing.py", line 64, in app
    await response(scope, receive, send)
  File "C:\Users\Lucas\AppData\Local\Programs\Python\Python39\lib\site-packages\starlette\responses.py", line 302, in __call__
    raise RuntimeError(f"File at path {self.path} does not exist.")
RuntimeError: File at path merged.mp4 does not exist.
INFO:     <IP_ADDRESS>:62041 - "GET /highlights HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fc99230e9d45b721291 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fc99230e9d45b721291 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fc99230e9d45b721293 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fc99230e9d45b721293 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fca9230e9d45b721295 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /filters/66a37fca9230e9d45b721295 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fca9230e9d45b721297 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fca9230e9d45b721297 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fca9230e9d45b721299 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fca9230e9d45b721299 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fca9230e9d45b72129b HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /filters/66a37fca9230e9d45b72129b HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fca9230e9d45b72129d HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /filters/66a37fca9230e9d45b72129d HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /highlights/66a37fcb9230e9d45b72129f HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fcb9230e9d45b72129f HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fcb9230e9d45b7212a1 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /filters/66a37fcb9230e9d45b7212a1 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b7212a3 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fcb9230e9d45b7212a3 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62043 - "GET /highlights/66a37fcb9230e9d45b7212a5 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62045 - "GET /filters/66a37fcb9230e9d45b7212a5 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62042 - "GET /highlights/66a37fcb9230e9d45b7212a7 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62044 - "GET /filters/66a37fcb9230e9d45b7212a7 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/66a37fcb9230e9d45b7212a9 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /filters/66a37fcb9230e9d45b7212a9 HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "POST /highlights/segments/generate HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62041 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62040 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62070 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62071 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62071 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62071 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62071 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62095 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62158 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62158 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62159 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62169 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62179 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62179 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62180 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62180 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62197 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62198 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62210 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62211 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62217 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62217 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62226 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62227 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62237 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:62238 - "GET /highlights/segments/generate/status HTTP/1.1" 200 OK

Hi,
That is surprising, I've never seen this before, it seems like the final montage is not generated, probably a complex combination of filters and music, and I'd be interested to have more info.
Can you take a short recording where you go through all the pages inside crispy ? So I can see your configuration, and then try to re-run the processing of the highlights, and then the final montage ?
What game are you using ?

Hi,
That is surprising, I've never seen this before, it seems like the final montage is not generated, probably a complex combination of filters and music, and I'd be interested to have more info.
Can you take a short recording where you go through all the pages inside crispy ? So I can see your configuration, and then try to re-run the processing of the highlights, and then the final montage ?
What game are you using ?

Okay, so first of all im using the game Overwatch, and im using a 3 minute music without any filters turned on, should the final montage even be generated when i generate segments?

And it turns out, after i refresh the page and go to segments, every segment generates after some time.

Yes you need to generate the segment, and you'll at some point receive a message saying it is ready to generate the final montage !

Also, can the generation not work correct if i have some overlay on?

Shouldn't be an issue, the generation can take some time, just let it run in the background if needed


Assertion errors when animating to an item that is removed during the animation

Consider the following example:
import 'package:flutter/material.dart';
import 'package:super_sliver_list/super_sliver_list.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: SuperListViewPage(),
    );
  }
}

class SuperListViewPage extends StatefulWidget {
  const SuperListViewPage({super.key});

  @override
  State<SuperListViewPage> createState() => _SuperListViewPageState();
}

class _SuperListViewPageState extends State<SuperListViewPage> {
  final _controller = ListController();
  final _scrollController = ScrollController();
  var _items = 100;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SuperListView.builder(
        controller: _scrollController,
        listController: _controller,
        itemCount: _items,
        itemBuilder: _buildItem,
      ),
      floatingActionButton: FloatingActionButton(onPressed: _onTap),
    );
  }

  void _onTap() {
    if (_items == 0) {
      _reset();
    } else {
      _scroll();
    }
  }

  void _scroll() {
    _controller.animateToItem(
      index: _items - 1,
      scrollController: _scrollController,
      alignment: .5,
      duration: (_) => const Duration(milliseconds: 300),
      curve: (_) => Curves.ease,
    );

    setState(() {
      _items = 0;
    });
  }

  void _reset() {
    setState(() {
      _items = 100;
    });
  }

  static Widget _buildItem(BuildContext context, int index) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 30),
      child: Center(
        child: Text('$index'),
      ),
    );
  }
}

When pressing on the floating button, an assertion error will be issued that the index does not exist, even though at the start of the animation it does.
It seems when performing animations, the simulation expects the final index to be present during the entire animation.
While this example is extreme in that removing of the item happens immediately after the animation start.
In addition, looking at: https://github.com/superlistapp/super_sliver_list/blob/a4a4326d4cc89207e9e5079d6e7b39c9aab4993c/lib/src/animate_to_item.dart#L45-L52
It seems index is always used to determine the next position to use. Couldn't this also lead to cases where the items change in such a way that the index would be pointing to a different item not the one originally intended?

I could clamp the index to total number of items in case that changes to get around the assertion. Other than I'm not sure what else to do given that SliverChildDelegate which ultimately backs the children does not have a concept of identity for items and as such can't really detect item removal.

I think clamping would be a great start that would cover most code paths.
As for item synchronisation, personally, I think it would rarely happen.
However, a possible solution that comes to mind, (although I haven't checked the internals in detail so I might be wrong here) would be to get the render object of the item being scrolled to and reuse it on further calls? Something, like:
class ExtentManager {
  double? getOffsetToReveal(RenderObject item);
  (double, RenderObject) getInitialItemToRevealData(int index);
}

The RenderObject is not available initially. It is created on demand when it reaches the cache area during scrolling.

Thank you for the explanation.
Could another potential solution be to ask the caller about the current index on each animation tick?
For instance, instead of
abstract interface class ListController {
  void animateToItem({
    required int index,
    required ScrollController scrollController,
    required double alignment,
    required Duration Function(double estimatedDistance) duration,
    required Curve Function(double estimatedDistance) curve,
    Rect? rect,
  });
}

we'd have:
abstract interface class ListController {
  void animateToItem({
    required int? Function() getItemIndex,
    required ScrollController scrollController,
    required double alignment,
    required Duration Function(double estimatedDistance) duration,
    required Curve Function(double estimatedDistance) curve,
    Rect? rect,
  });
}

Similar to what we have with duration and curve?
If the getItemIndex call returned null, it would indicate the scroll should stop perhaps reusing the last target offset and finishing animating to it?

I like this! I'm not sure if this should be a breaking change or a separate method (if so it needs different name). I think when returning null I'd just stop the animation.

I can see a use case for both of these methods, for instance, if you're building a chat application and want to redirect the user to a specific message, you'd use the index getter variant. Whereas if you are building a news application and want to navigate the user to the 10th most popular article, you'd always use the index directly.
A potential solution I have in mind would be something like the following (additional parameters skipped for brevity):
abstract interface class ListController {
  /// Directly jumps to the selected index.
  void jumpToItem(int index);
  void animateToItem({
    required int index,
  });
  void animateToLiveItem({
    required int index,
  });
}

I can see a use case for both of these methods, for instance, if you're building a chat application and want to redirect the user to a specific message, you'd use the index getter variant. Whereas if you are building a news application and want to navigate the user to the 10th most popular article, you'd always use the index directly.
A potential solution I have in mind would be something like the following (additional parameters skipped for brevity):
abstract interface class ListController {
  /// Directly jumps to the selected index.
  /// The caller is responsible for providing a valid index.
  void jumpToItem(int index);

  /// Animates to the selected index.
  /// The animation manager validates the index continues to
  /// be valid during the entire duration of the animation. If it
  /// stops being valid, the animation ends.
  void animateToItem({
    required int index,
  });

  /// Animates to the selected live index.
  /// The caller is responsible for keeping the index valid for
  /// the duration of the animation.
  void animateToLiveItem({
    required int? Function() index,
  });
}

At first, I wanted to suggest breaking animateToItem and adding animateToIndex that could potentially just forward the call to animateToItem. However, since we have jumpToItem already and it doesn't make sense for it to come in two variants (because the caller will always have to provide a valid index and only has to do it once). I think its best to keep the current naming and signature for these methods.
Additionally, if animateToIndex simply forwarded a call to the animateToItem variant, the developer could still hit the errors we are trying to prevent here. Which made me think the proposed solution would be best.
@knopp What do you think?

@knopp Were you able to give this proposal a thought?

I'd simply go with changing the animateToItem signature to replace item index with a ValueGetter.
void animateToItem({
    required ValueGetter<int> index,
    required ScrollController scrollController,
    required double alignment,
    required Duration Function(double estimatedDistance) duration,
    required Curve Function(double estimatedDistance) curve,
    Rect? rect,
  })

This would be a breaking change but it's rather minor and I think it's better than cluttering API.

@knopp Thank you for the fix! But how about the case when the item is fully removed and there is no backing index to return?

Right. I think the return value should be nullable (null cancelling the animation).


Update release notes for 0.4.15rc1

This updates the release notes with PRs that happened after 0.4.15rc0. I'll release rc1 after this merges.

I think it's the release manager, as they will have a few more things in their head like grouping of all of the PRs that are being merged, and also ideas about how to put them together in the highlights if needed. :blush:


Theme Request

Is it possible to get the Logout and Username text to be the same class as the header h1?  Trying to get a clean header bar and it's difficult when those use visited and unvisited classes.  I know I can modify the source files (like I changed KB to our company name) but I'd like to keep source edits to a minimum so updates can be simple.
Picture example is attached.

So I changed the order of operations in my custom style sheet to this order and now the UserName is white.  Still trying to figure out how to change Logout to white.  But it's much better now.
a:link {...}
a:visited {...}
a:hover {...}
a:active {...}
.username a {...}

The page header have modified in the development branch. Now there is a dropdown menu for the user and each different part of the header are using a different css class. So you can change the logo, the title and the rest more easily.


Rename package

What changes were proposed in this pull request?
Rname package from com.tencent.rss to org.apache.uniffle
Why are the changes needed?
Asf podding issues
Does this PR introduce any user-facing change?
No
How was this patch tested?
GA passed.

LGTM


6062 another waifu minter

:art: rounded radio button
:art: RadioSelect can be rounded
:zap: rounded
:art: rounded stepper
NONE 🚫
:art: new cool submit button
:globe_with_meridians: by method
☀ Split
:technologist: label in NeoField is optional
☀ Split
:bug: broken steps
:bug: useless mint options
:art: blue for selection

Thank you for your contribution to the KodaDot - One Stop Shop for Polkadot NFTs.
👇 __ Let's make a quick check before the contribution.
PR Type

[ ] Bugfix
[ ] Feature
[ ] Refactoring

Context

[ ] Closes #<issue_number>
[ ] Requires deployment <snek/rubick/worker>

Before submitting pull request, please make sure:

[ ] My contribution builds clean without any errors or warnings
[ ] I've merged recent default branch -- main and I've no conflicts
[ ] I've tried to respect high code quality standards
[ ] I've didn't break any original functionality

Optional

[ ] I've tested it at </ksm/collection>
[ ] I've tested PR on mobile
[ ] I've written unit tests 🧪
[ ] I've found edge cases

Had issue bounty label?

[ ] Fill up your KSM address: Payout

Community participation

[ ] Are you at KodaDot Discord?

Screenshot 📸

[ ] My fix has changed something on UI; a screenshot is best to understand changes for others.

Copilot Summary

🤖 Generated by Copilot at 10fd5b8
This pull request adds a new feature for generative minting of NFTs with a Split summer theme, and improves the UI and performance of some components related to this feature. It also makes some minor changes to the NeoField component and the $link-light variable. The main files affected are GenerativeMint.vue, GenerativeMintForm.vue, promptBuilder.ts, and options.ts.

🤖 Generated by Copilot at 10fd5b8

Oh we're minting NFTs with a Split summer theme
We've changed the clothes and the styles and the NeoField
On the count of three, we'll pull the rope and see
What the promptBuilder has for us to reveal

oh no..

Maybe check #6082 changes to add some code

seen, looks amazing sir!
Just would like to have it done since BlockSplit conference is happening (23-25)


Key phrase or password protect network

Have you read a contributing guide?

[X] I have read CONTRIBUTING.md
[X] I have searched the existing requests and didn't find any that were similar
[X] I have considered creating a pull request instead and want to proceed

Clear and concise description of the problem
Knowing an anysync network's IP means you can create a space there.
This opens it up for malicious / unwanted use by random people.
Suggested solution
Add authentication to allow securing the synchronization server.
Alternative
No response
Additional context
No response

At the moment, we don't have authentication mechanisms.
You can use a VPN and firewall to restrict access to your Anytype network.