Authentication Documentation Obsolete?

I am facing an issue with the sign_up/sign_in methods in Python for client.auth. Basically, I am following the documentation found on this repo, but I get the following error:
from supabase import create_client

url = "myURL"
key = "myKey"

email  =<EMAIL_ADDRESS>password  = '12345'

user = supabase.auth.sign_up(email=email, password=password)

The above code returns this:
TypeError: SyncGoTrueClient.sign_up() got an unexpected keyword argument 'email'

I also tried
user = supabase.auth.sign_up(email, password)

But getting this:
AttributeError: 'str' object has no attribute 'get'

Thanks

Yes, it looks like the documentation is obsolete now. I started trying this library just yesterday and I can't say it matches my expectations after a few weeks of experience with the JS client.
In your case, if you're on the just released 1.0.0, then you should be able to see SyncGoTrueClient.sign_up signature in your IDE. It shows that it accepts only a "typed" dictionary called credentials of "type" SignUpWithPasswordCredentials which is a Union of SignUpWithEmailAndPasswordCredentials and SignUpWithPhoneAndPasswordCredentials. In your case it is SignUpWithEmailAndPasswordCredentials which expects a dictionary with two mandatory keys email and password. In other words, you have to call:
supabase.auth.sign_up({"email": email, "password": password})

Thanks! That works. I was looking at the datatype that was required, and since it needed to have a 'get' method, I assumed it was a dictionary, but I couldn't get the attributes right. Thanks for clarifying that up!

Cool @J0 . Would love to see this library mature as I have decided to bet on Supabase. You already saw my comment on #367 -- that's my main concern so far. I am happy to contribute a little in the next 10 days an hour a day or so. jazeps.basko @ gmail.com

Hey all,
We've added a new version of the docs so am going to issue. We will continue iterating on the existing spec though.
@jbasko sorry about delay on this - if you're keen the doc reference could use some love - the file corresponding to the reference doc content is here
Lmk if anyone has questions/issues
Jo


Fixed IP address ... is already in use on instance .). when downgrading neutron → nova

Hi Marco & Everyone,
This is not something you need to fix; it's an FYI, something we came across during one of our failed tests:

If you have installed a BOSH Director on OpenStack with the BOSH CLI and use_nova_networking not set or set to false (the default).
And you attempt to to re-deploy the BOSH Director with use_nova_networking: true
Then your deployment will fail:

  Deleting VM '29abd612-bf89-4a59-909d-0bc5b80d1273'... Finished (00:00:12)
  Creating VM for instance 'bosh/0' from stemcell 'fee5f147-bd3f-405c-844f-6cdbda58ddb2'... Failed (00:00:02)
Failed deploying (00:00:37)

Stopping registry... Finished (00:00:00)
Cleaning up rendered CPI jobs... Finished (00:00:00)

Deploying:
  Creating instance 'bosh/0':
    Creating VM:
      Creating vm with stemcell cid 'fee5f147-bd3f-405c-844f-6cdbda58ddb2':
        CPI 'create_vm' method responded with error: CmdError{"type":"Bosh::Clouds::CloudError","message":"OpenStack API Bad Request (Fixed IP address <IP_ADDRESS> is already in use on instance >

At that point you either need to set the networking model back to neutron & redeploy or free up the port with the OpenStack CLI & redeploy with the nova networking model:
openstack port list | grep BOSH-IP-ADDRESS
openstack port delete PORT-ID

Hey Brian,
Thanks for documenting this – I wasn't aware that switching from neutron to nova-networking was creating such issue. Unfortunately, I'm not really sure what we could do about this, except documenting it. Did you encounter this during tests? If not, what was the reason for switching from neutron to nova-networking? My hope was that nova-networking would only be used by people whose OpenStack doesn't offer neutron.
Warm regards
Marco

Did you encounter this during tests?

Yes, it was our CI that caught this. We did a CPI bump on a bunch of versions of our application, Ops Manager (1.11, 1.12, 2.0, and 2.1). On version 1.11 we never exposed the use_nova_networking option, but on later versions we exposed it. We also made a conscious decision to stick to nova networking in our CI.
The CPI bump changed the default networking from nova to neutron. Our version 1.11 never exposed that option, so it was upgraded to neutron. But then our upgrade (to 1.12) Concourse job ran, and that job deliberately set use_nova_networking to true, which had the effect of downgrading the OpenStack backend to nova, and that's when we ran into the error.

My hope was that nova-networking would only be used by people whose OpenStack doesn't offer neutron.

I share that hope. I made the case that we should switch our CI from nova to neutron, mentioning that nova was a deprecated OpenStack backend, but the PM didn't feel comfortable with that move, and opted to stick with nova, so I re-engineered our code to silently set use_nova_networking to true on version 1.11 of our codebase. I've since rotated to a different team (PWS).
See you the next time you're out here,
—Brian

Alright, thanks Brian for the explanation. I'm going to leave this one around here for documenting the behavior.


Update e2e tests to export only what's defined in si-migrator.yml

This PR allows one to define only the migrators they want to integration test so they don't need to install all supported brokers in e2e tests.

lgtm


Add mutex to protect concurrent prepareMPPTasks

What problem does this PR solve?
Issue Number: ref #8285
Problem Summary:
Executor id is the field of global instance context. And it is passed as ref during prepareMPPTasks for TestUtils, and will be increased by 1 each time. Add mutex to protect it and pass tsan check.
Increase the sleep time, since in tsan mode, the execution time will be longer than before due to the mutex lock operation.
What is changed and how it works?
Check List
Tests

[x] Unit test
[] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/run-all-tests


Installing via bower doesn't work until ngFileSaver is added as a dependency

Couldn't get it to work until I added "angular-file-saver": "^1.1.2", as a dependency as well as to the app.js list of modules.
Perhaps this helps others.

fixed in v1.2.2


Nodes render below links (Z axis)

[X] Implementation
[ ] Unit test
[ ] Docs

Due to the order of rendering nodes before links in /src/Tree/index.js (line ~282), nodes appear below links. This can be verified by setting the node color to a light color, and leaving the link color its default black.
I'm making an assumption on this, but I would think most users would prefer the links to appear as though they are passing underneath (or through) nodes, and not passing above them.

Reverted fix, as this will collide with my other PR. I should have made my previous PR on a branch.

Agreed, it looks as you'd expect this way; haven't been able to commit much time to working on styling/appearance so this will be a welcome PR 🚀

I'll jump on this now.


info() return does not include type when version_aware=True

I believe this results in incorrect behaviour when version_aware is enabled (though I personally have not used version-aware buckets myself). Also causes isfile() to return false when called on a file.
Version: 0.4.0
https://github.com/dask/s3fs/blob/85b863170f76063b270671442448b15e821f92b6/s3fs/core.py#L467-L476
Example:
s3 = s3fs.S3FileSystem(version_aware=True)
path_file = '<bucket>/<prefix>/test.txt'
path_dir = '<bucket>/<prefix>/'
for p in [path_file, path_dir]:
    print(f'isfile={s3.isfile(p)}, isdir={s3.isdir(p)}')
    print(s3.info(p))

Output:
isfile=False, isdir=False
{'ETag': '"..."', 'Key': '.../test.txt', 'LastModified': datetime.datetime(2019, 10, 25, 20, 29, 56, tzinfo=tzutc()), 'Size': 5, 'size': 5, 'path': '.../test.txt', 'StorageClass': 'STANDARD', 'VersionId': None}
isfile=False, isdir=True
{'Key': '...', 'Size': 0, 'StorageClass': 'DIRECTORY', 'type': 'directory', 'size': 0, 'name': '...'}

Thanks for the report. Not including type looks like a bug. Interested in submitting a PR to fix it?

Hey @TomAugspurger, certainly happy to do so. I'm not very familiar with the s3fs/fsspec internals though - does this code block apply only for files?
https://github.com/dask/s3fs/blob/85b863170f76063b270671442448b15e821f92b6/s3fs/core.py#L467-L476

I believe so, since s3 doesn't have actual directories. So if we've gotten an object at that point we know it's a file? I could be wrong though.

Yes, that thing must be a file ( cc @mariusvniekerk )


problems using official foo_playcount and it's rating

Hi,
after installing Spider Monkey Panel in perfect working fb2k v1.3.20 on W7 x64 - and not making any use of it, i only installed it - I can't write rating tags to foo_playcount's database anymore. Modifying already existing rating tags stored in the database isn't possible either. Writing rating tags direct to files is still working. After uninstalling Spider Monkey Panel everything is working as before and writing and modifying rating tags in files or in the database is possible again without any issue !
Seems Spider Monkey Panel and the official Playback Statistics (foo_playcount) can't work together without making trouble.
Any ideas or suggestion?

Thanks for the bug report!
Which version of SMP are you using? And how are you modifying rating tags?

Hi,
using SMP 1.15. Rating tags are set within a perfect working old skin (Br3tt's kameleon). TIM (foo_uie_trackinfo_mod 0.8.0 beta) is used for the rating part, using "kameleon_rate_to_db" (value 0 or 1) as extended variable (foo_exvar 0.5.0) to switch between writing tags to database or files.
Here's the used script:
$puts(config_name,'kameleon')
$puts(foo_path,%FOOBAR_PATH%)
$puts(img,$get(foo_path)'images/'$get(config_name))
// PerSecond
//$drawrect(0,0,%_width%,%_height%,brushcolor-20-20-20 pencolor-null)
// PerTrack
// ----------------------------
// .deb --- Rating System
// ----------------------------
$if($stricmp('FOO_LASTFM',$left(%path%,10)),
$imageabs2(0,0,0,0,0,0,0,1,$get(img)'/rating/set1/r0.png',alpha-135)
,
// --------------------------------------------
// drawing RATING info
// --------------------------------------------
//$if(%_isplaying%,
$puts(aa-fp,$year(%first_played%))
$puts(mm-fp,$month(%first_played%))
$puts(jj-fp,$day_of_month(%first_played%))
$puts(aa-lp,$year(%last_played%))
$puts(mm-lp,$month(%last_played%))
$puts(jj-lp,$day_of_month(%last_played%))

$ifgreater($if3(%rating%,$meta(rating),0),0,
$puts(rating,$if3(%rating%,$meta(rating),0))
$puts(no.set,1)
,
$ifgreater($get(aa-lp),$get(aa-fp),
	$ifgreater($get(mm-lp),$get(mm-fp),
		$puts(nb.aa,$sub($get(aa-lp),$get(aa-fp)))
		$puts(nb.mm,$sub($get(mm-lp),$get(mm-fp)))

		$ifgreater($get(jj-lp),$get(jj-fp),
			$puts(nb.jj,$sub($get(jj-lp),$get(jj-fp)))
		,
			$puts(nb.mm,$sub($get(nb.mm),1))
			$puts(nb.jj,$add($sub(30,$get(jj-fp)),$get(jj-lp)))
		)

	,
		$puts(nb.aa,$sub($sub($get(aa-lp),$get(aa-fp)),1))
		$puts(nb.mm,$add($sub(12,$get(mm-fp)),$get(mm-lp)))

		$ifgreater($get(jj-lp),$get(jj-fp),
			$puts(nb.jj,$sub($get(jj-lp),$get(jj-fp)))
		,
			$puts(nb.mm,$sub($get(nb.mm),1))
			$puts(nb.jj,$add($sub(30,$get(jj-fp)),$get(jj-lp)))
		)
	)
,
	$puts(nb.aa,0)
	$ifgreater($get(mm-lp),$get(mm-fp),
		$puts(nb.mm,$sub($get(mm-lp),$get(mm-fp)))
	,
		$puts(nb.mm,0)
	)
	$ifgreater($get(jj-lp),$get(jj-fp),
		$puts(nb.jj,$sub($get(jj-lp),$get(jj-fp)))
	,
		$puts(nb.jj,0)
	)

)

$puts(autorate.add,2)
$puts(autorate.nbdays.sub,30)

$puts(daterange, $add( $add($mul(365,$get(nb.aa)),$mul(30,$get(nb.mm))),$get(nb.jj)) )

$puts(fix,$div($get(daterange),$get(autorate.nbdays.sub)))
$if(%play_counter%,$puts(rating,$div(%play_counter%,$get(autorate.add))),$puts(rating,0))
$puts(rating,$sub($get(rating),$get(fix)))
$if($greater($get(rating),5),$puts(rating,5))
$if($greater(0,$get(rating)),$puts(rating,0))
$puts(no.set,2)

)
//,)
$ifgreater($if3(%rating%,$meta(rating),0),0,
$puts(rate.x,0)
$puts(rate.y,1)
$imageabs2(0,0,0,0,0,0,$get(rate.x),$get(rate.y),$get(img)'/rating/set'$get(no.set)'/r0.png',alpha-128)
$if(%_isplaying%,
$ifequal($get(rating),1,
	$button($get(rate.x),$get(rate.y),0,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get

(no.set)'/r1x.png',$ifequal(%kameleon_rate_to_db%,1,,TAG:REMOVE:rating:1),TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),0,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r1.png',$ifequal(%kameleon_rate_to_db%,1,1,TAG:SET:rating:1),TOOLTIP:"Average")
)
$ifequal($get(rating),2,
$button($get(rate.x),$get(rate.y),12,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r2x.png',$ifequal(%kameleon_rate_to_db%,1,,TAG:REMOVE:rating:2),TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),12,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r2.png',$ifequal(%kameleon_rate_to_db%,1,2,TAG:SET:rating:2),TOOLTIP:"Good")
)
$ifequal($get(rating),3,
$button($get(rate.x),$get(rate.y),24,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r3x.png',$ifequal(%kameleon_rate_to_db%,1,,TAG:REMOVE:rating:3),TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),24,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r3.png',$ifequal(%kameleon_rate_to_db%,1,3,TAG:SET:rating:3),TOOLTIP:"Very Good")
)
$ifequal($get(rating),4,
$button($get(rate.x),$get(rate.y),36,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r4x.png',$ifequal(%kameleon_rate_to_db%,1,,TAG:REMOVE:rating:4),TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),36,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r4.png',$ifequal(%kameleon_rate_to_db%,1,4,TAG:SET:rating:4),TOOLTIP:"Excellent")
)
$ifequal($get(rating),5,
$button($get(rate.x),$get(rate.y),48,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r5x.png',$ifequal(%kameleon_rate_to_db%,1,,TAG:REMOVE:rating:5),TOOLTIP:"Reset")
,
$button($get(rate.x),$get(rate.y),48,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set'$get
(no.set)'/r5.png',$ifequal(%kameleon_rate_to_db%,1,5,TAG:SET:rating:5),TOOLTIP:"MegaHit")
)
)
,
$puts(rate.x,0)
$puts(rate.y,1)
//$imageabs2(0,0,0,0,0,0,$get(rate.x),$get(rate.y),'./images/ibiza/rating/set'$get(no.set)'/r0.png',alpha-128)
$if(%isplaying%,
$button($get(rate.x),$get(rate.y),0,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set1/r1.png',
$ifequal(%kameleon_rate_to_db%,1,1,TAG:SET:rating:1),TOOLTIP:"Average")
	$button($get(rate.x),$get(rate.y),12,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set1/r2.png',

$ifequal(%kameleon_rate_to_db%,1,2,TAG:SET:rating:2),TOOLTIP:"Good")
	$button($get(rate.x),$get(rate.y),24,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set1/r3.png',

$ifequal(%kameleon_rate_to_db%,1,3,TAG:SET:rating:3),TOOLTIP:"Very Good")
	$button($get(rate.x),$get(rate.y),36,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set1/r4.png',

$ifequal(%kameleon_rate_to_db%,1,4,TAG:SET:rating:4),TOOLTIP:"Excellent")
	$button($get(rate.x),$get(rate.y),48,0,12,12,$get(img)'/rating/set'$get(no.set)'/r'$get(rating)'.png',$get(img)'/rating/set1/r5.png',

$ifequal(%kameleon_rate_to_db%,1,5,TAG:SET:rating:5),TOOLTIP:"MegaHit")
,
$imageabs2(0,0,0,0,0,0,$get(rate.x),$get(rate.y),$get(img)'/rating/set'$get(no.set)'/r0.png',alpha-135)

)
)
)
// ----------------------------
// .fin --- Rating System
// ----------------------------
// MOOD TAG SET/UNSET to feed automatically auto-playlist for my iPod or iPhone
$if($stricmp('FOO_LASTFM',$left(%path%,10)),
$imageabs2(12,12,0,0,0,0,61,1,$get(img)'/bt/mood0.png',nokeepaspect)
,
$ifgreater($if2(%MOOD%,0),0,
$button(61,1,0,0,12,12,$get(img)'/bt/mood1.png',$get(img)'/bt/mood0.png',TAG:REMOVE:MOOD:1,TOOLTIP:"Unset")
,
$button(61,1,0,0,12,12,$get(img)'/bt/mood0.png',$get(img)'/bt/mood1.png',TAG:SET:MOOD:1,TOOLTIP:"Set")
)
)
// SKIP TAG SET/UNSET
$if($stricmp('FOO_LASTFM',$left(%path%,10)),
$imageabs2(12,12,0,0,0,0,75,2,$get(img)'/bt/skip0.png',nokeepaspect)
,
$ifgreater($if2(%SKIP%,0),0,
$button(75,2,0,0,12,12,$get(img)'/bt/skip1.png',$get(img)'/bt/skip0.png',TAG:REMOVE:SKIP:1,TOOLTIP:"Unset")
,
$button(75,2,0,0,12,12,$get(img)'/bt/skip0.png',$get(img)'/bt/skip1.png',TAG:SET:SKIP:1,TOOLTIP:"Set")
)
)

Uhm... Did you close by accident? Or was your problem resolved?

Sorry, yes was an accident,

Reopened, because closed by accident.

I'm guessing it's because your $button commands are ambiguous. It's looks like it's set to run a menu command matching 1, 2,3,4 or 5. It doesn't even appear to distinguish between main menu commands and context menu commands?? This is where the conflict comes in because SMP has  main menu commands from 1-10. I'm assuming Rating/1 etc would work but I've not tested it.

It's looks like it's set to run a menu command matching 1, 2,3,4 or 5

@marc2k3 : yep, you are right - on_main_menu callback is invoked when foo_uie_trackinfo_mod is utilized this way.
@WebSkater : this is a bug/flaw of foo_uie_trackinfo_mod component: it does not provide a way to invoke a command via full path (e.g. Playback Statistics/Rating/1) and there is no way to differentiate between shortened commands (just 1 in your case). See the corresponding post from the component developer: https://hydrogenaud.io/index.php/topic,47044.msg466220.html#msg466220
Closing the issue, since this is not a bug in foo_spider_monkey_panel.


Delete spark and postgres connectors

Looks like I removed too much stuff related to the quasar metastore posgres. Fixing.

@wemrysi I'd rather we have a clean history for this sort of mass deletion. Are you :+1: if I rebase this PR so that the travis problems were having are fixed where they should have been fixed rather than as a separate commit after the fact?

@alissapajer Absolutely, :+1:!

@wemrysi build is green, ready for review.


Different outcome calling externally or from Portal editor:Test and Logic Apps

When I call my Function with a set payload from an external tool the result is a 200, but when calling from either the editor in the portal and running a Test (with the exact same payload) or from within Logic Apps (with again the same payload) I receive a 500 error with the message:
"Exception while executing function: determine-encoder -> Cannot perform runtime binding on a null reference"
Investigative information

Timestamp: 2017-12-21T23:31:57.266
Function App version (1.0 or 2.0-beta): 1.0
Function App name: vpmediahelpers
Function name(s) (as appropriate): determine-encoder
Region: West-Europe

Calling from Function App Test functionality in the portal (500 error):
2017-12-21T23:31:57.266 Function started (Id=31ab2c33-6bd7-45a8-a55b-4bb1867738f3)
2017-12-21T23:31:57.579 Function completed (Failure, Id=31ab2c33-6bd7-45a8-a55b-4bb1867738f3, Duration=311ms)
Calling from external test tool (200 result):
2017-12-21T23:32:38.683 Function started (Id=4a0d3015-e3c7-47c2-b5d2-88e834227eef)
2017-12-21T23:32:38.683 Function completed (Success, Id=4a0d3015-e3c7-47c2-b5d2-88e834227eef, Duration=0ms)
Repro steps
Provide the steps required to reproduce the problem:
Call the endpoint (please find protection code via infocation IDs) either from within the editor in the portal, or from an external tool.
Expected behavior
Both calls should be 100% identical and hence lead to a 200 result.
Actual behavior
The call from the portal seems to be handled differently from the call externally. Payload is the same to my knowledge.
Known workarounds
None.
Related information
Provide any related information

Programming language used: C#
Links to source: Cannot share on github but I'm an MSFT emp so can share via mail when needed
Bindings used : HTTP

Perhaps an important detail: I deployed this code using the latest Visual Studio Functions tooling

Closing this issue. Turns out my test tool automatically adds the "Content-Type" header with value "application/json"... this turned out to be the defining difference.


Role-based access control

Create default groups with permissions using management command.
Refs #LIIK-31

Codecov Report

Merging #63 into master will decrease coverage by 0.06%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #63      +/-   ##
==========================================
- Coverage   94.63%   94.56%   -0.07%
==========================================
  Files          60       60
  Lines        3839     3793      -46
  Branches      121      121
==========================================
- Hits         3633     3587      -46
  Misses        192      192
  Partials       14       14

Impacted Files
Coverage Δ

traffic_control/tests/test_base_api.py
100.00% <100.00%> (ø)

traffic_control/tests/test_base_api_3d.py
100.00% <100.00%> (ø)

traffic_control/views.py
97.86% <100.00%> (-0.15%)
:arrow_down:

azure_client_ip/middleware.py
68.75% <0.00%> (-1.84%)
:arrow_down:

traffic_control/models/mount.py
99.19% <0.00%> (-0.01%)
:arrow_down:

traffic_control/models/traffic_sign.py
99.33% <0.00%> (-0.01%)
:arrow_down:

azure_client_ip/test_middleware.py
100.00% <0.00%> (ø)

traffic_control/tests/test_mount_api.py
100.00% <0.00%> (ø)

traffic_control/tests/test_barrier_api.py
100.00% <0.00%> (ø)

... and 7 more

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 c33de3c...a6fcb55. Read the comment docs.


Not Get non-wallet Transaction details via api (nodejs)??

hello i m using doge wallet. i m using node-dogecoin to get the transaction details i got my wallet transaction with out from address. but when i shaw the other api chain.so then get the full details of transaction (non-wallet or wallet) with from address.  how could i got transaction details of all txids.

This isn't something the default bitcoind (and therefore dogecoind) supports, because the indexes are huge. There are patches to add an --addrindex option, which could potentially be adapted, but it's not an option we have in any recent release.
Generally it's a lot more efficient to use a service such as chain.so to do this, or alternatively you can fetch each block in turn via RPC and scan the transactions inside it for any matching the relevant address(es).

To answer the last part of your question:

how could i got transaction details of all txids.

add a txindex=1 to your dogecoin.conf. This explodes your data directory, so make sure you have plenty of disk space.
It will not sort by address still, but it will allow you to fetch any transaction by hash.
    -txindex
       Maintain a full transaction index, used by the getrawtransaction rpc
       call (default: 0)


updated docker-compose to include cloud_db_params variable, updated m…

…igrations doc, tested connections & migrations still work (ran migrate without upgrade for cloud db to check alembic tracking)

It's done un-named so that it will be automatically detected. It can also have a name, but we would have to declare it in a different way in the docker-compose.yml. We would have to drop the environment: tag and use env_file: to make it work, and it seems like you can't have both in the same compose file. So given that we have other things listed under environment in addition to the db_params, it makes sense to do it this way. Let me know if you have questions!


Implement optional parameter for X-Goog-Content-Length-Range.

At the end of this operation all requests will be able to include a parameter (GoogContentLengthRange) to set this request header.  The library will not check if the request header is applicable for a given API, the server can reject the request if the application made a mistake.

Closing this bug, setting this parameter seems to have no effect.


Question: Can it be that it has problem if non-standard directories

Hi,
I'm the maintainer of the TYPO3 Crawler, which used non-standard vendor-dir.
Everything is in a .Build directory.
When running the tool. I get
PHP Warning:  foreach() argument must be of type array|object, null given in /home/tomas/Projects/Private/crawler/.Build/vendor/shipmonk/composer-dependency-analyser/src/Analyser.php on line 410

Which indicates from code, that no class loading is found https://github.com/shipmonk-rnd/composer-dependency-analyser/blob/master/src/Analyser.php#L410
My composer.json looks like this for the autload part.
"autoload": {
        "psr-4": {
            "AOE\\Crawler\\": "Classes"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "AOE\\Crawler\\Tests\\": "Tests",
            "TYPO3\\CMS\\Core\\Tests\\": ".Build/vendor/typo3/cms-core/Tests"
        }
    },

Can it be that this tool have problems with projects with non-standard directory structure?

That PHP Warning is definitelly a bug when no composer autoloader is found (fixed in #150).

But since you have regular composer autoload sections, it should not happen (composer autoloader should be present). Few questions to verify the state:

How did you install this tool and how do you run it?
Did you setup custom vendor dir in your composer.json?
Does this tool output No composer class loader detected! (to stderr) ?

I assume you are mentioning this repository, right?
Looks like you are using custom classloader instead of composer's one, which currently is not supported. I'll try to add support, but I'm currently getting some class not found failures, so I need to check even that.

Can you test #151? With that, I was able to make the tool work over your repository, but I'm not certain if autoloading is working correctly there. I'll check that more deeply tomorrow.

The main problem is that the autoloader the package uses (ClassAliasLoader) is broken and is unable to load classes referenced in the codebase (failing on Fatal Error).

You can exclude paths that references those broken symbols to make it work, but it will definitelly affect the results:

use ShipMonk\ComposerDependencyAnalyser\Config\Configuration;

$config = new Configuration();

return $config->addPathsToExclude([
    __DIR__ . '/.Build/vendor/typo3/cms-core/Tests',
    __DIR__ . '/Tests/Acceptance',
]);

Another idea is to enable composer's classloader for the analysis (which seems to work):
use ShipMonk\ComposerDependencyAnalyser\Config\Configuration;

/** @var \Composer\Autoload\ClassLoader $classLoader */
$classLoader = require __DIR__ . '/.Build/vendor/autoload.php';
$classLoader->register();

return new Configuration();

Thanks for all you information. Will try to set it up according to your advice.

Closing as stale.


Remove the XXX_Server resource requirement

We should attempt to remove the ${project.name}_Server resource requirement. It's a big awkward from a user perspective to have to ensure one end point always gets invoked before another endpoint.
I would think we could use a filter of some sort to handle this. We may have to set the servlet context on the ResteasyContext, but IMO that should be a last resort. I feel we could use a ContainerRequestFilter to set a property on the request itself.
If this cannot be removed, we really should remove the start and stop end points as they should not be publicly exposed.

I can confirm removing the XXX_Server does no harm to the service to work when WildFly gRPC Subsystem is present. To verify this, I removed the XXX_Server from my generated war:
weli@192:~/w/g/target|main⚡?
➤ zip -d grpcToRest.example.grpc-1.0.1.Final-SNAPSHOT.war 'WEB-INF/classes/org/greet/Greet_Server$2.class'                                                                                22:20:38
deleting: WEB-INF/classes/org/greet/Greet_Server$2.class
weli@192:~/w/g/target|main⚡?
➤ zip -d grpcToRest.example.grpc-1.0.1.Final-SNAPSHOT.war 'WEB-INF/classes/org/greet/Greet_Server$1.class'                                                                                22:21:00
deleting: WEB-INF/classes/org/greet/Greet_Server$1.class
weli@192:~/w/g/target|main⚡?
weli@192:~/w/g/target|main⚡?
➤ zip -d grpcToRest.example.grpc-1.0.1.Final-SNAPSHOT.war 'WEB-INF/classes/org/greet/Greet_Server.class'                                                                                22:21:11
deleting: WEB-INF/classes/org/greet/Greet_Server.class

And then I deployed this updated WAR into my local Galleon provisioned WildFly dist with gRPC subsystem installed:

And then I use this branch to verify that the gRPC service is up:

https://github.com/liweinan/grpcToRest.example/compare/verify_no_XXX_server?expand=1

Here is the test result:

So I guess it's safe to remove the XXX_Server classes from the auto-generated project, @ronsigal wdyt?

Heyyy @liweinan. Well, I have a few comments.

One of the reasons for XXX_Server is the startGRPC() method, which lets you start a gRPC server outside of WildFly with the grpc subsystem.

Another reason was the use of XXX_Server.getServletContext() in XXXServiceGrpcImpl. I was using an initial call to XXX_Server.startContext() to grab a ServletContext that I could use for some of the HttpServletRequest methods. Lately I've changed that to GrpcHttpServletDispatcher.getServletContext("GrpcServlet") [still a work in progress], but I haven't committed anything, so I'm guessing you would still see XXX_Server.getServletContext(). Is that true? So, I'm not sure how things are working for you. I'm confused.

I have a new use for XXX_Server. I'm using the initial call to grab an HttpServletRequest that I can use for the HttpServletRequest security methods like login():

    public static HttpServletRequest getHttpServletRequest(String name) {
        return requests.get(name);
    }

    @Path("context")
    @GET
    public String startContext(@Context HttpServletRequest request, @Context ServletConfig servletConfig) throws Exception {
        servletContextMap.put(servletConfig.getServletName(), request.getServletContext());
        requests.put(servletConfig.getServletName(), ResteasyContext.getContextData(HttpServletRequest.class));

        HttpServletRequest r = (HttpServletRequest)ResteasyContext.getContextData(HttpServletRequest.class);
        return "Got " + this + ": " + servletConfig.getServletName() + " servletContext";
    }

Of course, you would have no way of knowing that. ;-)
So, I don't think we can remove it. But I would like to understand what's going on in item 2.
-Ron

Could we use a ServletContextListener to register the context name? I would think that's doable.
I think we definitely need to remove the generated startGRPC end point, e.g. /start. This could potentially be used for a DDoS or thread exhaustion attack. The generated method looks like:
@Path("start")
@GET
public String startGRPC(@Context HttpServletRequest request) throws Exception {
    servletContext = request.getServletContext();
    final CC1_Server server = new CC1_Server();
    new Thread() {
        @SuppressWarnings({"deprecation", "removal"})
        public void run() {
            try {
                if (System.getSecurityManager() == null) {
                    server.start();
                } else {
                    AccessController.doPrivileged((PrivilegedExceptionAction<Void>) () -> {server.start(); return null;});
                }
                logger.info("started gRPC server on port " + PORT);
                server.blockUntilShutdown();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();
    return "Starting gRPC server on port " + PORT;
}

If it just set loop to keep hitting that end point I could start too many threads and just crash the server potentially. We should also not be running it privileged. If we wanted something like this the we should require the correct permissions.

@jamezp I'll verify the suggested solution.

There's a variable "inWildfly" in the pom.xml that comes out of the archetype than can change some of the results. We could update ServerGrpcGenerator to output startGRPC() only if inWildfly is false.

There's a variable "inWildfly" in the pom.xml that comes out of the archetype than can change some of the results. We could update ServerGrpcGenerator to output startGRPC() only if inWildfly is false.

IMO we don't want that method exposed to any endpoint. I assume we want this to be usable in Tomcat and the like as well. It would be a security issue there too.
What I think we need is a way to register the resources like we do in the gprc subsystem. I'm not sure how this would be done yet. I need to learn more about gRPC to give an idea for this :) One option might be a simple API, something like:
public class ServerBuilder {
    public ServerBuilder addService(final BindableService service) {
        // add
    }
    public Server build() {
        // create the server
    }
}

I assume we want this to be usable in Tomcat

Yeah, I've been pretty WildFly-centric. E.g., I don't have any non-WildFly tests yet. But, yeah, you're right. Btw, the startGRPC() method dates from the time before the existence of the grpc subsystem.

After some learning I  understand the class file is generated by ServerGrpcGenerator.java:
weli@192:~/w/resteasy-grpc|main✓
➤ grep -rn 'startGRPC' *                                                                                00:42:32
grpc-bridge/src/main/java/dev/resteasy/grpc/bridge/generator/ServerGrpcGenerator.java:109:                    .startBlock("public String startGRPC(@Context HttpServletRequest request) throws Exception {")
weli@192:~/w/resteasy-grpc|main✓

And it's used by ServiceGrpcExtender:
// Write the prefix_Server
final ServerGrpcGenerator generator = new ServerGrpcGenerator(Path.of(generatedSourcePath), packageName,
        root);
generator.generate();

For the startGRPC method itself, maybe adding a flag can solve the problem:
    final AtomicBoolean grpcStarted = new AtomicBoolean(false);

    @Path("start")
    @GET
    public String startGRPC(@Context HttpServletRequest request) throws Exception {
        if (grpcStarted.getAndSet(true)) {
            servletContext = request.getServletContext();
            final Greet_Server server = new Greet_Server();
            new Thread() {
                @SuppressWarnings({"deprecation", "removal"})
                public void run() {
                    try {
                        if (System.getSecurityManager() == null) {
                            server.start();
                        } else {
                            AccessController.doPrivileged((PrivilegedExceptionAction<Void>) () -> {
                                server.start();
                                return null;
                            });
                        }
                        logger.info("started gRPC server on port " + PORT);
                        server.blockUntilShutdown();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
            return "Starting gRPC server on port " + PORT;
        } else {
            return "gRPC server already started on port " + PORT;
        }
    }

...

    @Path("stop")
    @GET
    public void stopGRPC() throws Exception {
        logger.info("stopping gRPC server on port " + PORT);
        stop();
        grpcStarted.set(false);
    }

I can confirm removing the XXX_Server does no harm to the service to work when WildFly gRPC Subsystem is present. To verify this, I removed the XXX_Server from my generated war:
weli@192:~/w/g/target|main⚡?
➤ zip -d grpcToRest.example.grpc-1.0.1.Final-SNAPSHOT.war 'WEB-INF/classes/org/greet/Greet_Server$2.class'                                                                                22:20:38
deleting: WEB-INF/classes/org/greet/Greet_Server$2.class
weli@192:~/w/g/target|main⚡?
➤ zip -d grpcToRest.example.grpc-1.0.1.Final-SNAPSHOT.war 'WEB-INF/classes/org/greet/Greet_Server$1.class'                                                                                22:21:00
deleting: WEB-INF/classes/org/greet/Greet_Server$1.class
weli@192:~/w/g/target|main⚡?
weli@192:~/w/g/target|main⚡?
➤ zip -d grpcToRest.example.grpc-1.0.1.Final-SNAPSHOT.war 'WEB-INF/classes/org/greet/Greet_Server.class'                                                                                22:21:11
deleting: WEB-INF/classes/org/greet/Greet_Server.class

And then I deployed this updated WAR into my local Galleon provisioned WildFly dist with gRPC subsystem installed:

And then I use this branch to verify that the gRPC service is up:

https://github.com/liweinan/grpcToRest.example/compare/verify_no_XXX_server?expand=1

Here is the test result:

So I guess it's safe to remove the `XXX_Server` classes from the auto-generated project, @ronsigal wdyt?

This verification is wrong. I tried to stop the WildFly server, changed the port in test, and disable the beforeTest setup, and test is still passing, it's really weird:

I've put my test code here:
https://github.com/liweinan/grpcToRest.example/blob/main/src/test/java/org/jboss/resteasy/grpc/server/GreetingTest.java
It passes no matter I start WildFly server or not, and I confirmed no other server is running(The port is even not listening for connection).

@ronsigal  In addition I have done more researches to this, and I tried to start the gRPC server inside WildFly:
➤ curl http://localhost:8080/grpcToRest.example.grpc-0.0.1-SNAPSHOT/grpcToJakartaRest/grpcserver/start                                                                                00:49:42

And the server started in WildFly:
00:20:22,791 INFO  [org.greet.Greet_Server] (Thread-146) Server started, listening on 8082
00:20:22,792 INFO  [org.greet.Greet_Server] (Thread-146) started gRPC server on port 8082

I have a question, what is this server's relationship with the gRPC subsystem that listens on 9555, I assume they provide the similar functions right?

@liweinan, yes, the start method is meant for situations where the grpc subsystems isn't available, either in WildFly without the grpc layer or in some other server. Note that I haven't done any experiments with tomcat or other servers.

@liweinan, panic is over!! ;-) Try this:
    @Test
    public void testGreeting() {
        channelPlaintext = ManagedChannelBuilder.forTarget("localhost:9556")
                .usePlaintext()
                .intercept(new ClientLogInterceptor()).
                build();
        blockingStub = GreetServiceGrpc.newBlockingStub(channelPlaintext);

        GeneralEntityMessage.Builder builder = GeneralEntityMessage.newBuilder();
        GeneralEntityMessage gem = builder.setURL("http://localhost:xxx/greet/Bill").build();
        try {
            GeneralReturnMessage grm = blockingStub.greet(gem);
        	System.out.println("OK!!");
            dev_resteasy_example_grpc_greet___Greeting greeting = grm.getDevResteasyExampleGrpcGreetGreetingField();
            Assert.assertEquals("hello, Bill1", greeting.getS());
        } catch (StatusRuntimeException e) {
            //
        	System.out.println("ooops!!");
        }
    }

@ronsigal After applying your changes now I can see the test faliure:

Thanks for help! :D

@liweinan, panic is over!! ;-) Try this:
    @Test
    public void testGreeting() {
        channelPlaintext = ManagedChannelBuilder.forTarget("localhost:9556")
                .usePlaintext()
                .intercept(new ClientLogInterceptor()).
                build();
        blockingStub = GreetServiceGrpc.newBlockingStub(channelPlaintext);

        GeneralEntityMessage.Builder builder = GeneralEntityMessage.newBuilder();
        GeneralEntityMessage gem = builder.setURL("http://localhost:xxx/greet/Bill").build();
        try {
            GeneralReturnMessage grm = blockingStub.greet(gem);
        	System.out.println("OK!!");
            dev_resteasy_example_grpc_greet___Greeting greeting = grm.getDevResteasyExampleGrpcGreetGreetingField();
            Assert.assertEquals("hello, Bill1", greeting.getS());
        } catch (StatusRuntimeException e) {
            //
        	System.out.println("ooops!!");
        }
    }

@ronsigal In addition I find even after the test run is finished, there are still large amount of data generated at port 9555:

Is this a normal behavior? (I'm not sure  about how the gRPC subsystem works internally but it seems a large amount of data after a call is not a normal situation)

Now I can capture the request correctly:

@ronsigal I checked the post message and here is the request data:

So the URL is just a placeholder right? With my understanding it will just call the backend service at port 8080 right?


ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I'm running yt-dlp version 2<IP_ADDRESS>. (update instructions)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
downloading playlists produce this error:
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
here is the command i used:
/c lib\yt-dlp.exe -f "bestaudio/mp4/webm/m4a" -c -i --no-warnings --newline --no-cache-dir --no-part  --add-metadata --xattrs --sleep-interval 4 -o "tempc3h1w2%(title)s.%(ext)s" https://www.youtube.com/playlist?list=PLbKnAyxuLzzkNbJWM88JgawfgjghGeTV9 >"C:\Users\Nuno\AppData\Local\Temp/RenovaMusicc3h1w2.txt" 2>&1
Verbose log
[debug] Command-line config: ['-vU', '-f', 'bestaudio/mp4/webm/m4a', '-c', '-i', '--no-warnings', '--newline', '--no-cache-dir', '--no-part', '--add-metadata', '--xattrs', '--sleep-interval', '4', '-o', 'temm\\%(title)s.%(ext)s', 'https://www.youtube.com/playlist?list=PLbKnAyxuLzzkNbJWM88JgawfgjghGeTV9']
[debug] Encodings: locale cp1252, fs utf-8, out cp1252 (No ANSI), err cp1252 (No ANSI), pref cp1252
[debug] yt-dlp version 2<IP_ADDRESS> [c0c2c57] (win_exe)
[debug] Python version 3.8.10 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] exe versions: ffmpeg n4.4-ffmpeg-windows-build-helpers (setts)
[debug] Optional libraries: brotli, Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
Latest version: 2<IP_ADDRESS>, Current version: 2<IP_ADDRESS>
yt-dlp is up to date (2<IP_ADDRESS>)
[debug] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLbKnAyxuLzzkNbJWM88JgawfgjghGeTV9
[youtube:tab] PLbKnAyxuLzzkNbJWM88JgawfgjghGeTV9: Downloading webpage
[debug] [youtube:tab] Final URL: https://www.youtube.com/playlist?list=PLbKnAyxuLzzkNbJWM88JgawfgjghGeTV9
[youtube:tab] PLbKnAyxuLzzkNbJWM88JgawfgjghGeTV9: Downloading API JSON with unavailable videos
[download] Downloading playlist: Piruka - AClara
[youtube:tab] playlist Piruka - AClara: Downloading 14 videos
[download] Downloading video 1 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=pAcl8ib3p3w
[youtube] pAcl8ib3p3w: Downloading webpage
[youtube] pAcl8ib3p3w: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] pAcl8ib3p3w: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr5---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655560&ei=KOY0YviINNTRxwKci6LgDA&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AA8x6gJzylF3_p75LsqUXQHo2x56hxgvWSaFsdn6DB7Q&itag=251&source=youtube&requiressl=yes&mh=yQ&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5q7knez&ms=au%2Conr&mv=m&mvi=5&pl=45&initcwndbps=1663750&vprv=1&mime=audio%2Fwebm&gir=yes&clen=1914860&dur=110.361&lmt=1542314063272257&mt=1647633439&fvip=5&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhANvEqZ8m7jDI57BZXYoA3cJLn-ybbL7Vwt43jbmc4284AiBc71yOa3DshGXlfwOa9ZzHg_7gzmOl8SjD16y_x8Mzpg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgZz1TVFX4wI2l8t8EoG5zKfvcjuU-x-fwNKVQnZyti8MCIQC1OyAhu-26P_53Ji-cRaE_1S4ltZCBMVf_uUHWueGqMw%3D%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 2 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=xDIyA3CRlKk
[youtube] xDIyA3CRlKk: Downloading webpage
[youtube] xDIyA3CRlKk: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] xDIyA3CRlKk: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr5---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655561&ei=KeY0Yqe6Kv-2mLAPubeW8AI&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AF6KcO41e0zW4BZSAZBB5s6X8SvDkJm4QphCvteTu7tv&itag=251&source=youtube&requiressl=yes&mh=B2&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5q7kned&ms=au%2Conr&mv=m&mvi=5&pl=45&initcwndbps=1781250&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3775109&dur=209.601&lmt=1483648532778660&mt=1647633671&fvip=3&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgRtfWtuvhGmPCIm6mDdKm79MFS4xjXkr_0H0u14J60b0CIFyplLO9qOShKZNrvaEh0RnPos9PfssiLaSsxpBxpjGv&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhANJNEQD1FkxDUleH25855C9MbsoS8gkq2xUfG5Urr-F1AiEAuBp2gkMJqQiS3lYIFPDmrx9okABlJ96DWOKzY9Ngj9s%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 3 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=vRJZ83yAKS8
[youtube] vRJZ83yAKS8: Downloading webpage
[youtube] vRJZ83yAKS8: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] vRJZ83yAKS8: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr3---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655562&ei=KuY0YtXkJOy3mLAPjuu22Aw&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AEyhBmvmnzPtS6fl_QhqEplQWFTQOBPnknVtwH8fqg_R&itag=251&source=youtube&requiressl=yes&mh=NV&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5q7kne6&ms=au%2Conr&mv=m&mvi=3&pl=45&initcwndbps=1562500&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3213939&dur=179.481&lmt=1540937312791773&mt=1647633439&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAMEpf85zrokIrew_I3QXilxU3NNGZ5D3Pf2Na1Fowh1jAiEA0SQmFG5-zaEj_NsIFm1q94rlARDQiRZEFkKPHrzw1sA%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgB7Qni2yuQMaIxIRfpB8pB_gjdh3yKRD94FNN7MwEXewCIQCqzlpWVj0RmLgB1N-K7-D9utaP6lUkyfMbSwzJ7CDzYA%3D%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 4 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=V2vGc2GsH-A
[youtube] V2vGc2GsH-A: Downloading webpage
[youtube] V2vGc2GsH-A: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] V2vGc2GsH-A: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr4---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655563&ei=K-Y0YtfkGJm-mLAP65iRsAQ&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AIJcvHKdegAVH0E7uRLSU-XY3TsPRWalaQSEXPyHrYHG&itag=251&source=youtube&requiressl=yes&mh=5S&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5qzen7d&ms=au%2Conr&mv=m&mvi=4&pl=45&initcwndbps=1781250&vprv=1&mime=audio%2Fwebm&gir=yes&clen=5905481&dur=342.401&lmt=1541876105617469&mt=1647633671&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5511222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgTBvLygaItakEPRME46LnXSt3j-NcvWSCC8kVdSLrrBQCIBwJlcY91xPu85Bwu55fx4DdLD0wQGjTNVxH-U0kWObP&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgcxUa49mS-zc0Kaf8GLO4ooonUCP9UOO-XCG9Gx1-0o8CIAZGD-DQ_N6tMQcnPo-sSlm3SMMNkWbwXUcPNrcCkLtw"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 5 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=Wp6_v1u0aZQ
[youtube] Wp6_v1u0aZQ: Downloading webpage
[youtube] Wp6_v1u0aZQ: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Wp6_v1u0aZQ: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr2---sn-apn7en7l.googlevideo.com/videoplayback?expire=1647655564&ei=LOY0YtayEvXPmwe73riYDA&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AAKgpyY4bpKqDZbE7eaeIISIQ3tFjQJC1IfYNvikNu-q&itag=251&source=youtube&requiressl=yes&mh=sL&mm=31%2C29&mn=sn-apn7en7l%2Csn-apn7en7e&ms=au%2Crdu&mv=m&mvi=2&pl=45&initcwndbps=1375000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=2773027&dur=154.361&lmt=1577441768988826&mt=1647633671&fvip=2&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgOD9dDZ1Iwrb-m9Q8VvIphHvvI-1N7m6uRHdG5bhGeKwCIQCwkA_BjNo9SvL1h1wzKGpvneSqbdkykbq8GHqhaNBbdQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAMgJKhoEFTGgsVF7O4VsVZFchcJcWSbYsWlmfIadwcBAAiEA_CWNKWB-0XhbsL__Pb1e_qbFVP2koeQZPWaucSmCg_Q%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 6 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=wVmy_sNDZI4
[youtube] wVmy_sNDZI4: Downloading webpage
[youtube] wVmy_sNDZI4: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] wVmy_sNDZI4: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr5---sn-apn7en7l.googlevideo.com/videoplayback?expire=1647655565&ei=LeY0Yt-BC8e2mLAP86eIiA0&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-ALTFJzak26-gyMXdpxMVJnpiHZw4NmPLrqYjmVRoQ7Jb&itag=251&source=youtube&requiressl=yes&mh=Mm&mm=31%2C29&mn=sn-apn7en7l%2Csn-apn7en7e&ms=au%2Crdu&mv=m&mvi=5&pl=45&initcwndbps=1375000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=847574&dur=49.941&lmt=1483647967718708&mt=1647633671&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAM_KhG3m7fUaGmxZKrAfy1saDdbgcJFKUvHmVZEnc82hAiAY-0VPNxj_Q6ue9vgM0b-lroYwsHV1nBKx-9cEd0cEzQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgETLrUg3_VQ8dFof89N2N5ghcXTZV_J8Y4BsgKliN_7YCIQCr8FcWhuQ58yOOehIQ-sjH6zgQPdEpn6m2fcEZsGg4UQ%3D%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 7 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=QHhzhSH7E5E
[youtube] QHhzhSH7E5E: Downloading webpage
[youtube] QHhzhSH7E5E: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] QHhzhSH7E5E: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr5---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655566&ei=LuY0YsjeBp22mLAPs4CM-Ak&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AAxT7nGit0uxT8ZN6lQGpHew5pjh9cuzySgA4VNuOdDS&itag=251&source=youtube&requiressl=yes&mh=73&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5q7kne6&ms=au%2Conr&mv=m&mvi=5&pl=45&initcwndbps=1692500&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3780502&dur=216.921&lmt=1541450569501342&mt=1647633671&fvip=5&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhANXvvv98mUO1A9W_uCN7YaqRatpFH38wqLSQBJDg6KukAiEA9AJN8A24WHaztzn_KjzGIeWCq30mi6NGikcT9FgrtKE%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgMs2upn7FoVwVUgEJjQ72LV5b4e5yNWwfxbFgWwuLz1gCIHGYHC25TNEZxgQ0OH_X8c2SrBy9hskfLjHptjVrsFjm"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 8 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=OpdlQTOMzeM
[youtube] OpdlQTOMzeM: Downloading webpage
[youtube] OpdlQTOMzeM: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] OpdlQTOMzeM: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr2---sn-apn7en7l.googlevideo.com/videoplayback?expire=1647655567&ei=LuY0YovaPMLJxwK4rrLABQ&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-ABd-oJhpShLLirEmXmGmv6-RARRmMZaM5TG-hmKc4Ds3&itag=251&source=youtube&requiressl=yes&mh=5p&mm=31%2C29&mn=sn-apn7en7l%2Csn-apn7en7e&ms=au%2Crdu&mv=m&mvi=2&pl=45&initcwndbps=1375000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3580282&dur=206.901&lmt=1577215105688341&mt=1647633671&fvip=2&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAJfOcV2cn6lTHXA-9We6nh9_sjhryVJCBx9Ir83ZZdSiAiAZx1xcZjmWPAgFjyXXskiOPWEfec05GDde-LhnhR68Fw%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAMXf01gIhFvELVvB7g3ZB2FG3_8Xjzhfz3HM3h2g41mjAiEAlGtOsY4kqzgNcAHJ9RD5OKq46mWNS4W0CdebW8B_6Sc%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 9 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=qv6SIaWjUkA
[youtube] qv6SIaWjUkA: Downloading webpage
[youtube] qv6SIaWjUkA: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] qv6SIaWjUkA: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr4---sn-apn7en7l.googlevideo.com/videoplayback?expire=1647655567&ei=L-Y0YvWnNrHo1waGm4XwAg&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AFJcQ1gigiVrkCZ1qHXbcbxpvEHNdGbScysXpthHmg6b&itag=251&source=youtube&requiressl=yes&mh=mc&mm=31%2C29&mn=sn-apn7en7l%2Csn-apn7en7e&ms=au%2Crdu&mv=m&mvi=4&pl=45&initcwndbps=1375000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3763625&dur=214.921&lmt=1541498357512888&mt=1647633671&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhALRjT7_E0-jszxLp_g5MTzj-vUdxgqGaq2OYrxtetiegAiBr_zBRgbrI8f8h9BuD4YlVRuVdaSSbi39O6hyBbsSfuA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgQY0f7bFP5O4vxHqYdaR7xar8aap6OX1FRg6bkjOntXQCIQCE_Vj8yPvz7gHkavZA6o_pRR8-Cafkunf8a1ZAE3e7NQ%3D%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 10 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=4LGl-dgt1ps
[youtube] 4LGl-dgt1ps: Downloading webpage
[youtube] 4LGl-dgt1ps: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] 4LGl-dgt1ps: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr2---sn-apn7en7l.googlevideo.com/videoplayback?expire=1647655568&ei=MOY0YvemMbW8mLAP_5e0mAg&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-ALS-jE1tU39R01O0ijlfgaWhUPRKZw6OS_CWgzWmIFbS&itag=251&source=youtube&requiressl=yes&mh=dB&mm=31%2C29&mn=sn-apn7en7l%2Csn-apn7en7e&ms=au%2Crdu&mv=m&mvi=2&pl=45&initcwndbps=1375000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=4600889&dur=252.701&lmt=1575826573694747&mt=1647633671&fvip=2&keepalive=yes&fexp=24001373%2C24007246&beids=23886205&c=ANDROID&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgMeHAUCCqS3W0cuPsqn_0VERqVIHc__BjIZ9PChHnjvICIQDJJbGpjetqe8SvjWy2W7ABnjbo09qzNcGwwvUYqMIkrA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAOJIfyvPmRgbC9Hv6s-wO4cnYnojvFckllowdtWHo0IBAiEA7bGh94U3iZTbi5VN1wIGkfFt9EqFTzwzD6VbQfFxkeY%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 11 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=wBecFU5C3t0
[youtube] wBecFU5C3t0: Downloading webpage
[youtube] wBecFU5C3t0: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] wBecFU5C3t0: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr1---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655569&ei=MeY0YoWpKO68mLAP5re1sAE&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AM4zj_wrvjEF0bzySKYDVrMRLty87KHuHhracGrwoXc9&itag=251&source=youtube&requiressl=yes&mh=ng&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5q7kned&ms=au%2Conr&mv=m&mvi=1&pl=45&initcwndbps=1692500&vprv=1&mime=audio%2Fwebm&gir=yes&clen=986360&dur=61.641&lmt=1483648060009497&mt=1647633671&fvip=1&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAOL56Vp9irnNpAor4Ewq5k1DEhNUYYxg0JrqYtVa8s9lAiBokCTd7Rt0Ze8IFDcmGcP7EoupnQ13UQHPCsXVwRMnmg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgJ-kqGs09xHuUj7rP2pWUmMP8u3PLIYAhiN6gKPwD4t8CIAG3DFIG1ObSNsT0SuzaZ-dRXSKyrgRAZVAgpgGHeXm6"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 12 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=dIzqfsHaRb4
[youtube] dIzqfsHaRb4: Downloading webpage
[youtube] dIzqfsHaRb4: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] dIzqfsHaRb4: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr2---sn-apn7en7l.googlevideo.com/videoplayback?expire=1647655570&ei=MuY0YoCnIt_DmLAPh5qrgAk&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AO34OIcwc2wma8VNIQQ1AwO8_j0SCIpg86w04qzlRQKH&itag=251&source=youtube&requiressl=yes&mh=W_&mm=31%2C29&mn=sn-apn7en7l%2Csn-apn7en7e&ms=au%2Crdu&mv=m&mvi=2&pl=45&initcwndbps=1833750&vprv=1&mime=audio%2Fwebm&gir=yes&clen=4748791&dur=261.501&lmt=1542089997379152&mt=1647633905&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAJJeqWf_PfEtjFTouOT5DSX1dWmep_BpqeDtIY6T8vGcAiEAsSPzz00RBrfjes_9hKp25kZpiZrAwyjT18qoWl-v6BA%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhALTJyD3VbCjQxHbwKo_wInlIcDnTgzEQqIwDNHcUJHe6AiEA3WjnJMlE0ZhdNDS9qYdgMd0l-jZsoyjXCeOdNULfo1A%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 13 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=N9jlvtnBqAY
[youtube] N9jlvtnBqAY: Downloading webpage
[youtube] N9jlvtnBqAY: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] N9jlvtnBqAY: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr2---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655571&ei=M-Y0YvvKH9vDmLAP7ous8A0&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AO0pb3PuJbFzcpFhkBIMzJZ2HVv0RFj4Kw-Eol-MdBAD&itag=251&source=youtube&requiressl=yes&mh=br&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5q7knel&ms=au%2Conr&mv=m&mvi=2&pl=45&initcwndbps=1692500&vprv=1&mime=audio%2Fwebm&gir=yes&clen=4183314&dur=232.701&lmt=1577162040922933&mt=1647633671&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5431432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgLFkDb9TSksWBpYhB1wbDaBvJjChl5laQOXATJ3CPiCsCIQCsB-Wir0diS5DNAgA5CM77xCGwoNIaAoTHrZOY1GN4Ag%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgUE7X646YM1Cmb71w_rFSEAEBtjaZOz4pUDHN6-rJAcECIG4GlRuNPTFbDlxYEkaQqNppgZ6ywgZ4aTKqJqoK446b"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Downloading video 14 of 14
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=EL0b_X9M5vM
[youtube] EL0b_X9M5vM: Downloading webpage
[youtube] EL0b_X9M5vM: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] EL0b_X9M5vM: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr3---sn-apn7en7e.googlevideo.com/videoplayback?expire=1647655572&ei=NOY0YsbpGYrExgK8l5bYAQ&ip=2001%3A818%3Aead8%3Aa500%3Ac72%3A7271%3A5d2a%3A8ff3&id=o-AHn3yqA8kS5jcO44xdlGlzXL7aP5UBNDc3n594lrqVQa&itag=251&source=youtube&requiressl=yes&mh=FI&mm=31%2C26&mn=sn-apn7en7e%2Csn-h5qzen7s&ms=au%2Conr&mv=m&mvi=3&pl=45&initcwndbps=1781250&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3138020&dur=184.161&lmt=1540682609390166&mt=1647633671&fvip=3&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5411222&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAL4TEB4HpFQ81w86coqt7EOxyORhKdkgZOj3McJ5TW1uAiEAvSeuG9YA-yBxmSZ63shT1SwbQ2C81Cb5Hz7u1Zzr2m8%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAKHxxvHlo-xbkWsIp3GLdv4shPK9-JhTUaJS-7n8vvvgAiB4oj9gpb9cANnG_wf3tomx6wFeUi0yKIXdwtSTOzJJYA%3D%3D"
ERROR: unsupported operand type(s) for -: 'NoneType' and 'float'
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1389, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1473, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1529, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2638, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3128, in process_info
  File "yt_dlp\YoutubeDL.py", line 2835, in dl
  File "yt_dlp\downloader\common.py", line 438, in download
  File "random.py", line 417, in uniform
TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'

[download] Finished downloading playlist: Piruka - AClara

Duplicate of https://github.com/yt-dlp/yt-dlp/issues/3012


Modify the reset flow / messaging to minimize accidents.

Updated with comments


Quagga: Add AS-Path Lists and Route-Maps to BGP

Hi,
this PR is for adding as-path ACLs via route-maps to the neighbors.
Example config after adding all:
router bgp 65001
 network <IP_ADDRESS>/24
 neighbor <IP_ADDRESS> remote-as 65333
 neighbor <IP_ADDRESS> update-source em0
 neighbor <IP_ADDRESS> route-map TESTMAP in
 neighbor <IP_ADDRESS> route-map RR out
 neighbor <IP_ADDRESS> remote-as 65334
 neighbor <IP_ADDRESS> update-source em0
 neighbor <IP_ADDRESS> route-map TESTMAP out
!
ip as-path access-list 1 permit _4500$
ip as-path access-list 1 permit 4444
ip as-path access-list 2 permit .$
ip as-path access-list 3 deny 3456
ip as-path access-list 4 permit 23
ip as-path access-list 6 permit 444
!
route-map RR permit 10
 match as-path 1
 set local-preference 300
route-map RR permit 20
 match as-path 2
 set community 4444:33
route-map TESTMAP permit 10
 set local-preference 320

I added large helps to mitigate confusion, hope this is ok.
I think it's quite stable but should stay in devel for some time, so please don't make this a stopper for #155 and #156
And again my thanks to @fabianfrz @fichtner @fraenki and @AdSchellevis for your help and patience 👍

I can approve that the strings are OK. I have not tested the code but it does look like it is OK. It will need a squashed commit as there are more than 100 commits on this branch. I will give this to @fichtner for a (final) review.

@mimugmail can you check what @fichtner wrote. if it is alphanumerically, {11, 120, 13} will be sorted this way and not as expected {11, 13, 120}.

For now I've changed the allowed values to 10-99, since I have to check how to sort first by name and then numeric. Since most people use max 5 entries and learned to start by 10 this should be fine for the moment.
When adding prefix-lists to bgp (ospf would also make sense) I try to fix this.

Also the sort order in the conf has no relevance since it will be reordered correctly by quagga service itself.

Ok, thanks @mimugmail, I merge it as the only real problematic thing cannot happen anymore 👍


Node.cloneNode returns the wrong type

Node.cloneNode should return the type of "this". Therefore this line
https://github.com/Microsoft/TypeScript/blob/93abebc04af5d443a930ad84258cf2d6101d8513/lib/lib.es6.d.ts#L14166
should be
   cloneNode(deep?: boolean): this;

Can I take this up as a starting point?

PRs welcomed. You can find more information about contributing lib.d.ts fixes at https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md#contributing-libdts-fixes.

One thing to note, we do not want to add cloneNode(deep?: boolean): this as this will turn all HTMLElement* interfaces into generic interfaces and increase the cost of checking the standard library. instead we can update the generator to emit a cloneNode for every element to return the right type. see https://github.com/Microsoft/TSJS-lib-generator/pull/166 for guidance.

duplicate of the older ref #283


[Bug] Local browser.api.js is not transformed by Babel

Local browser.api.js is not correctly (?) transformed by Babel, specifically, JSX is not transpiled and running yarn stage (or build I'd assume) fails.
The error received is a SyntaxError:
ERROR in /my-static-site/browser.api.js
Module build failed (from/my-static-site/node_modules/babel-loader/lib/index.js):
SyntaxError: /my-static-site/browser.api.js: Unexpected token (5:11)

  3 | export default () => ({
  4 |   Root: PreviousRoot => ({ children, ...rest }) => {
> 5 |     return
{children}

    |            ^
  6 |   }
  7 | })

Running browser.api.js through Babel first solves the issue. Ideally this would be handled by React Static, as is done so for node.api.js.
Environment
❯ npx envinfo --system --npmPackages 'react*' --binaries --npmGlobalPackages 'react*' --browsers
npx: installed 1 in 1.942s

  System:
    OS: macOS 10.14.4
    CPU: (4) x64 Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz
    Memory: 906.13 MB / 16.00 GB
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 8.14.0 - ~/n/bin/node
    Yarn: 1.15.2 - /usr/local/bin/yarn
    npm: 6.7.0 - /usr/local/bin/npm
  Browsers:
    Chrome: 74.0.3729.131
    Firefox: 64.0
    Safari: 12.1
  npmPackages:
    react: ^16.8.2 => 16.8.6
    react-dom: ^16.8.2 => 16.8.6
    react-static: ^7.0.0 => 7.0.5
    react-static-plugin-reach-router: ^7.0.0 => 7.0.0
    react-static-plugin-sitemap: ^7.0.0 => 7.0.0
    react-static-plugin-source-filesystem: ^7.0.0 => 7.0.

Steps to Reproduce the problem
Base your steps off of any freshly installed react-static template!

$ react-static create # choose the "basic" template
$ cd my-static-site
Add a browser.api.js file to your project root with the following content:

import React from 'react'

export default () => ({
  Root: PreviousRoot => ({ children, ...rest }) => {
    return
{children}

  }
})

$ yarn stage

Expected Behavior
I'd expect local browser.api.js to be correctly transformed, much like a local node.api.js is.
The documentation says only the local plugins directory will be transformed, but I'd expect consistent behavior for both node.api.js and browser.api.js.

This affected me too, its not stale.


Update: 2023-05-16

Duotang update 2023-05-16:
Detailed changes:
Duotang.html

Not merging due to covarrnet conference.


Cross platform tests

Right now, the test source advertises that you need a hardware loopback, which isn't actually the case: it hooks up a Serial instance to a pty slave and talks to it using the corresponding master fd, all very posix-centric voodoo.
The obvious advantage of doing tests through a loopback is that the same test source could test both implementations—either using a hardware peripheral or software loopbacks.
On Windows, the magical com0com driver can provide a pair of virtual serial ports connected up to each other.
On Linux, we actually used to ship with Kingfisher a simple virtual serial program which did the same thing—provided a serial loopback pair.
At least on Linux, it could be automatic: the CMake target which runs the tests would have some pre- and post- rules attached to it which bring up and down the loopback, and then pass the port names/strings into the test via environment variables. It being automatic would allow the tests to run on Travis (which does not presently happen, but probably should).

Windows have these days  CONPTY  devices which are modeled from the traditional Unix PTY devices. This is new stuff with possible rough corners, but looking at the docs it looks like a descent replacement for the Unix PTYs in the test code.


chore: use karma-jspm to run unit tests

It seems like using karma-jspm would be the best option for loading all TS assets in the browser and running the unit tests.

Closed by 95c9f50c6eb533f53c353254ff0522dbef89982f


CRI: Handle ArgsEscaped for new Sb Server by clearing commandline in spec

fixes: https://github.com/containerd/containerd/issues/9037
The PR https://github.com/containerd/containerd/pull/8198 fixed this for CRI but missed clearing the commandline in the forked SB server. This simply adds that back in.

I am going to see if I can add a test that validates this, any pointers to where might be a good place would be helpful.
@kiashok fyi

There is an integration test for this but it was passing.  I am looking into why

Kubernetes e2e's are now passing with this change: https://prow.k8s.io/view/gs/kubernetes-jenkins/pr-logs/pull/kubernetes-sigs_windows-testing/411/pull-e2e-capz-windows-2022-extension/1719799410180755456

There is an integration test for this but it was passing. I am looking into why

this was because the test made sure it would start but didn't exercise the exec code path.  Updated to make sure this code path is run.


[Proposal] Support avro format load

Search before asking

[X] I had searched in the issues and found no similar issues.

Description
In JingDong, many users use routine load data with avro format, we will be prepared to contribute it to the doris community.
Use case
No response
Related issues
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I'd like to do that.

I want support avro format for routine load. Can this be do now?

Already done. But there are still several places can be improved.  I will commit a PR today, could discuss in the PR.

cool! go ahead please

I want support avro format for routine load. Can this be do now?

Already done. But there are still several places can be improved. I will commit a PR today, could discuss in the PR.

Has this work been completed?

I want support avro format for routine load. Can this be do now?

Already done. But there are still several places can be improved. I will commit a PR today, could discuss in the PR.

Has this work been completed?

PR completed, but not reviewed.
If it is important for you, maybe we can reopen the PR.

Hi all,
We have the same use case and need to use routine load with avro format and so I'd like to revive this thread :)
I realize that this discussion as well as the related PR is over a year old and outdated... any chance it could be re-opened? We'd be happy to support in any way we can to help move this forward.

Related (possibly duplicate) #18536.


DRAFT: reordered design tokens structure

Description
This PR provides a draft version of the key sorter for Design tokens and adds a linter for JSON files.

added the key sorter for Design tokens

const DESIGN_TOKEN_KEY_ORDER = [
  '$type',
  '$value',
  '$description',
  'outputReferences',
  'modify',
  'source',
];

added linter for JSON files

https://github.com/user-attachments/assets/9faeb547-3308-4709-8b87-d01358c63204
Merge Checklist

[ ] If your update includes visual changes, have they been reviewed by a designer? Send them a link to the Netlify deploy preview, if applicable.
[ ] Does your change adhere to the documented style conventions?
[ ] Do any prop types have missing descriptions in the Props API tables in the documentation site (check deploy preview)?
[ ] Were your changes tested using all available themes (see theme switcher in the header of the deploy preview, under the "Settings" icon)?
[ ] Were your changes tested in the example app?
[ ] Is there adequate test coverage for your changes?
[ ] Consider whether this change needs to reviewed/QA'ed for accessibility (a11y). If so, please request an a11y review for the PR in the #wg-paragon Open edX Slack channel.

Post-merge Checklist

[ ] Verify your changes were released to NPM at the expected version.
[ ] If you'd like, share your contribution in #show-and-tell.
[ ] 🎉 🙌 Celebrate! Thanks for your contribution.

Thanks for the pull request, @PKulkoRaccoonGang!
What's next?
Please work through the following steps to get your changes ready for engineering review:
:radio_button: Get product approval
If you haven't already, check this list to see if your contribution needs to go through the product review process.

If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.

This process (including the steps you'll need to take) is documented here.

If it doesn't, simply proceed with the next step.

:radio_button: Provide context
To help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:

Dependencies

This PR must be merged before / after / at the same time as ...

Blockers

This PR is waiting for OEP-1234 to be accepted.

Timeline information

This PR must be merged by XX date because ...

Partner information

This is for a course on edx.org.

Supporting documentation
Relevant Open edX discussion forum threads

:radio_button: Get a green build
If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green.
:radio_button: Let us know that your PR is ready for review:
Who will review my changes?
This repository is currently maintained by @openedx/paragon-working-group.  Tag them in a comment and let them know that your changes are ready for review.
Where can I find more information?
If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources:

Overview of Review Process for Community Contributions
Pull Request Status Guide
Making changes to your pull request

When can I expect my changes to be merged?
Our goal is to get community contributions seen and reviewed as efficiently as possible.
However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:

The size and impact of the changes that it introduces
The need for product review
Maintenance status of the parent repository

:bulb: As a result it may take up to several weeks or months to complete a review and merge your PR.

I researched popular tools for linting JSON files, including:

Prettier
eslint-plugin-json-format and eslint-plugin-json-files
eslint-plugin-jsonc
jsonlint

Currently, eslint-plugin-jsonc is used for formatting and syntax checking. For custom sorting of key order in design tokens, a custom Node.js script is utilized, as these tools only support alphabetical sorting or shallow sorting that doesn’t account for deep nesting.

We decided to split the functionality from this PR into several:

liner for JSON files https://github.com/openedx/paragon/pull/3330


Attempting to create a story results in error spam due to null state

Describe the bug
Attempting to create a new story via Story.new() repeatedly spams the error log with errors until the game is closed. The exact error differs every time but all of them stem from setgets being called while state is null
To Reproduce
Create a new story while running inkgd on godot 3.3 stable
Expected behavior
Creating a new story should work instead of crashing the game.
Ink files
N/A
Environment:

OS: Windows 10
Godot version: 3.3 stable, standard
Inklecate version: 0.9.0
inkgd version: 0.2.2

Confirmed, I tried to use inkgd on Godot 3.3.3 stable, standard, and it refuses to work.
In my case the error was in the following line
https://github.com/ephread/inkgd/blob/3127d994106fa00e93430a9153f1b2fa3cc287ae/addons/inkgd/runtime/call_stack.gd#L397
The reason of error was self.current_thread being null

Is this happening only in Windows? I'm not seeing this issue in Linux (Debian 11).
Here's my example for reference:
Godot: 3.3.4.stable.flathub
Inkgd: 0.2.1
extends Control

const InkRuntime = preload("res://addons/inkgd/runtime.gd")
const Story = preload("res://addons/inkgd/runtime/story.gd")

var story : Story

func _ready():
	call_deferred("load_story")

func _input(event):
	if event.is_action_pressed("ui_accept"):
		continue_story()

func continue_story():
	while story.can_continue:
		var text = story.continue()
		print(text)
	if story.current_choices.size() > 0:
		print(story.current_choices)

func load_story():
	_add_runtime()
	_load_story("res://test.ink.json")

func _load_story(ink_story_path):
	var ink_story = File.new()
	ink_story.open(ink_story_path, File.READ)
	var content = ink_story.get_as_text()
	ink_story.close()

	self.story = Story.new(content)

func _exit_tree():
	call_deferred("_remove_runtime")

func _add_runtime():
	InkRuntime.init(get_tree().root)

func _remove_runtime():
	InkRuntime.deinit(get_tree().root)

sorry for the late response- I do indeed have the singleton set up, and yes it has been occurring on windows. I even tested it with the provided example project and ran into the same issue. I haven't tried it with the latest release, so when I get a chance, I'll do that and let you know if it works.

I have the same issue using Godot v3.4.2, and I can't figure it out.
It feels like the plugin refuses to create a story (fails happens once InkStory.new(json_story) is called, inside the InkPlayer), because _story (or sometimes _story._state) is null.
InkPlayer nodes created in editor still work, but I can't change their Stories dynamically (or create new InkPlayer node), which is pretty inconvenient. :/

@Lertsenem 😕
Which version of inkgd? Which OS? Does it happen after an export or while debugging?

@ephread
I'm on Linux (Ubuntu 20.04 LTS), I'm using the last inkgd stable version (0.4.5) cloned as a git submodule for my project, configured to use inklecate v1.0.0 (directly bundled with Mono).
It happens while debugging, I did not try to export my project yet.

I managed to solve my issue !

Still no idea how this resulted in such a weird error though. :D


Popup sizes doesnt reflect current device width

For your context, my app was forced to portrait orientation with android:screenOrientation="portrait".
If user first launch the app from horizontal orientation phone system, the popup size is taking the horizontal orientation as device width despite my app is in portrait orientation.
Below is my usage:
Popup.show({
        type: 'confirm',
        iconEnabled: false,
        title: 'Hello',
        bodyComponent: () => {
          return (
            <View>
              <Text>
                Some title here
              </Text>
              <Text>
                Some text here
              </Text>
            </View>
          );
        },
        buttonText: 'OK',
        confirmText: 'Later',
        bounciness: 0,
        okButtonStyle: { backgroundColor: Colour.Blue },
        confirmButtonStyle: { marginTop: 0 },
        callback: () => {
         //callback
          Popup.hide();
        },
        cancelCallback: () => {
          //cancel callback
          Popup.hide();
        },
      });

Hi, to help us better understand the issue you're experiencing with the popup not adjusting properly in portrait mode, could you please provide a screenshot or a short video? This would help clarify the behavior and make it easier for us to troubleshoot the problem accurately. Thanks!

We may have resolved your issue with this commit, but we’d appreciate it if you could install and test it before the update is released.

@sekizlipenguen thanks for the fix! i'll use patch-package to apply the fix and try it out first.
btw the removeEventListener is deprecated, so i changed to these instead
diff --git a/node_modules/react-native-popup-confirm-toast/src/main/Popup.js b/node_modules/react-native-popup-confirm-toast/src/main/Popup.js
index d021614..54218aa 100644
--- a/node_modules/react-native-popup-confirm-toast/src/main/Popup.js
+++ b/node_modules/react-native-popup-confirm-toast/src/main/Popup.js
@@ -52,6 +52,12 @@ class Popup extends Component {

     this.state = this.defaultState;

+    this.dimensionListener = Dimensions.addEventListener('change', this.updateDimensions);
+
+  }
+
+  componentWillUnmount() {
+    this.dimensionListener?.remove();
   }

   static show({...config}) {
@@ -152,6 +158,17 @@ class Popup extends Component {
     }
   }

+  updateDimensions = () => {
+    setTimeout(() => {
+      const {height, width} = Platform.OS === 'android'
+          ? Dimensions.get('screen')
+          : Dimensions.get('window');
+      this.height = height;
+      this.width = width;
+      this.setState({});
+    }, 100);
+  };
+
   render() {
     const {title, type, textBody, buttonEnabled, buttonText, confirmText, callback, cancelCallback, background, iconEnabled, iconHeaderStyle, start} = this.state;
     const {bodyComponent, containerStyle, modalContainerStyle, positionPopup, positionView, opacity, bodyComponentForce} = this.state;

Yes, you're right, and that's why I've made some updates for improvement. You can check it out at the link below:
https://github.com/sekizlipenguen/react-native-popup-confirm-toast/commit/ef557dd6541537434e91c7cebcb209ab7819b14d
class Popup extends Component {
  constructor(props) {
    super(props);
    this.updateDimensions = this.updateDimensions.bind(this);
  }

  componentDidMount() {
    this.dimensionsSubscription = Dimensions.addEventListener('change', this.updateDimensions);
  }

  componentWillUnmount() {
    this.dimensionsSubscription?.remove();
  }
}

hi @sekizlipenguen i've tried above code but i still couldn't solve the issue. i still facing the same overflow pop up, causing the bottom view on my app not press-able. i've attached image here for ur reference

"I didn’t understand anything from the image you sent. If the issue is the modal being stuck behind other elements, this could be because you didn’t wrap at the very top in app.js. It may help to check the heading titled 'Example Provider.'"

Sorry i couldn't share original image due to company content. Lemme clarify.
The pop up is already at top. The problem that i facing is only when user launch app from horizontal orientation using a tablet. The problem that i suspect is that the Popup component width didn't change dynamically based on on screen size.
Flow:

Device orientation - horizontal
Launch app
App change from horizontal to portrait view due to forced android:screenOrientation="portrait"

But popup is shown using the width from horizontal view. Hence the below screenshot image. The white popup is stretched horizontally and overflow on the right. You can see the popup size from its black overlay.
Hope you understand better now

I suggest running Orientation.lockToPortrait(); within app.js, as it may resolve the issue on the Android side; it seems Android is having trouble detecting the orientation correctly.
import Orientation from 'react-native-orientation-locker';
https://www.npmjs.com/package/react-native-orientation-locker

Unfortunately that didn't work either.


Systemd indepentent

I just found this tool and it seems really simple and may be exactly what I need, however, I don't really like that it requires systemd.
It would  be really nice to make it independent and have config inside the user home directory and just start it up as a shell command. Is it possible to do?

I just found this tool and it seems really simple and may be exactly what I need, however, I don't really like that it requires systemd.

systemd is not strictly required. You can run it as a standalone daemon with -d. You will need udev for device detection, but most systems which don't use systemd ship with eudev as an alternative.

It would be really nice to make it independent and have config inside the user home directory and just start it up as a shell command. Is it possible to do?

This is not as simple as it seems since the user would require system wide access to the input devices and only one instance of the program may be running at a time. See #7 and #45.

It's worth noting that a user with access to the keyd socket (i.e is in group keyd) can modify the keymap at runtime using -e. So you could put something like keyd -e "capslock = overload(control, escape)" your ~/.xinitrc, though these changes will be system wide, so you may want to do a keyd -e reset on logout.

I am closing this for now. Feedback is appreciated from non systemd users, so if you stumble across this don't hesitate to open another issue.

Hey @rvaiya, I would suggest to remove creating sytemd directories on make install and maybe have it as make install-systemd or just have some variable flag in the makefile.

I've added some logic to conditionally install the systemd files if it is present.
@sarmong It's worth noting that udev has been removed as a dependency since the original post. keyd is now fully systemd independent. However I may make logind an optional dependency for multi user support at some point since there isn't a good cross platform way to do session tracking.


Fix lint warnings

526 Theseus OS - fixing warnings
It fixes warnings when I run the clippy lint. This is a submodule of Theseus OS.
There are no test cases. I don't think they are meaningful.
I don't know who can review this.
I don't think I broke anything, but can only test on Theseus OS.

I didn't realize all of kevenaboos's commits would be included. I will close this.


!announce function to make an announcement in a channel

Make an !announce function to have the bot do an announcement in a channel

[x] !announce <channel> <message> -> channel needs to be specified, message in code blocks?
[x] Make sure only managers can call this command

closed in branch iss10


Add failed metrics to notification payload

Coverage increased (+0.8%) to 98.693% when pulling a25234ff5ccf77c6b548e2362416975cc8fb405f on develop into a7e28d70121964dfbe1d1606aaad30c862d875eb on master.


[CROSSDATA-552] Prefix catalogs and Zookeeper configurable paths

Description
Allowing to set a prefix to the catalog stored in Zookeeper/MySQL/PostgreSQL. This allows you to share a catalog between different clusters, and also to have two different clusters working under the same database.
Testing

[x] Unit, integration tests

Documentation

[ ] Changelog update
[ ] Documentation link

+1

+1

Coverage increased (+0.4%) to 57.232% when pulling 9503a6b2d093f8ae2ba12b57a6bc49b87fa4d3f8 on pianista215:feature/zookeeper_and_prefix into f6b8b0e7f9ee7a8fb43c33dfb40000422002ea97 on Stratio:master.


ISPN-12935 CLI use the kube command as the root in kubernetes mode

https://issues.redhat.com/browse/ISPN-12935

integrated! thanks @tristantarrant


Config File missing on Iframe Module

Environment
Docker
Version
No response
Describe the problem
Any URL into the module 404 config file not found.
Logs
Any URL into the module 404 config file not found.
Context

Please tick the boxes

[X] I confirm that I attached the proper logs
[X] I've read the docs
[X] I've checked for duplicate issues
[X] I've tried to debug myself

Hi,
please fill out our issue template.
What version are you running?
What configs are on your file system?
What URL are you trying to request?

Closing because issue is invalid