Accessing Wrapped Delayed Function

Hi,
I'd like to be able to get back to the function which has been wrapped in a delayed for later use in my application. One use-case would be inspecting the return type annotation to avoid needless computation.
For example I might have a something like this:
@delayed
def heavy_work() -> int
    return 5

delayed_work = heavy_work()

# application loses context of how delayed_work was made.

if isinstance(delayed_work.fn.__annotations__['return'], int):
    # know the return type looks like what I'm after so do computation
    value = compute(work)
    print(value)
else:
    # early error without computation
    raise TypeError('wrong type, expected int')

Is it possible to get to the wrapped function in dask, or am I able to subclass a dask.delayed.Delayed to achieve this?
Thanks.

For a wrapped function object you can do the following:
In [1]: import dask

In [2]: f = lambda: None

In [3]: d = dask.delayed(f)

In [4]: d.__dask_graph__()[d.key]
Out[4]: <function __main__.<lambda>>

In [5]: _4 is f
Out[5]: True

However once you've called that function on an object you'll have to do some digging within the graph.  I recommend investigating dict(obj.__dask_graph__()).

Ah that looks spot-on, thank you @mrocklin, I'll take a look at the graph


Can't switch between languages when sync is on

I just upgraded to Umbraco 7.3. When the sync is on and I click on another language in the tab nothing happens. Only after disabling the sync checkbox I can switch between languages.

After removing all the cookies it worked again :).


How to handle refresh tokens?

I assume you're talking about oauth refresh tokens.
Individual token types are out of scope for this library.  This library is focused on the creation, parsing, and validation of JWT tokens.  OAuth is just one system that uses JWT tokens.


[WIP] owncloud provider

:construction:  DON'T MERGE, still under construction :construction:

[x] Basic authentication
[x] File metadata
[x] Folder metadata
[x] Download
[x] Upload
[x] Delete
[ ] Unit tests

@chrisseto @sloria  This is a very early draft. Please provide some feedback before I implement the rest.
I am cc'ing @PVince81 from ownCloud, the author of https://github.com/owncloud/pyocclient.
(Vincent: In some sense, this is a port of your library which uses aiohttp instead of Requests)
Here is a test file: https://gist.github.com/cosenal/817ac522e2fd6ebe22a8
In order to test it, you need a local instance of owncloud, with user test:test

This PR has been superseded by #168.  Marking as closed.  Thanks for your hard work on this, @cosenal!  This was a huge help in getting the owncloud provider finished.  We'll start testing it soon, and we're hoping it'll go in shortly!
Cheers,
@felliott

Great to hear that progress has been made on this!


Add Parse_Headers Method Back

Adding parse_headers back from ESP32SPI_Requests.
Re, issue: https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/issues/62
Code Output
code.py output:
ESP32 SPI simple web server test!
soft reboot

Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
ESP32 SPI simple web server test!
open this IP in your browser:  <IP_ADDRESS>

@siddacious  Does this work for you with the WSGI Server Example?

FYI -- just tried the wsgiserver demo on a metro_m4_airlift with this PR -- it works for me!

thanks @brentru


Add Exec and Query methods to FakePDO

Adds other public methods (rather than just prepare() to FakePdo)
The current master branch state of Psalm surfaces the following fails:
ERROR: ArgumentTypeCoercion - src/Parser/SQLLexer.php:24:13 - Argument 4 of preg_split expects int(0)|int(1)|int(2)|int(3)|int(4)|int(5)|int(6)|int(7), parent type positive-int provided (see https://psalm.dev/193)
            \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_OFFSET_CAPTURE

ERROR: InvalidArgument - src/Parser/SQLLexer.php:32:44 - Argument 1 of Vimeo\MysqlEngine\Parser\SQLLexer::groupComments expects list<array{string, int}>, list<array{string, int}|string> provided (see https://psalm.dev/004)
            $tokens = $this->groupComments($tokens);

ERROR: InvalidArgument - src/Parser/SQLLexer.php:35:51 - Argument 1 of Vimeo\MysqlEngine\Parser\SQLLexer::groupEscapeSequences expects list<array{string, int}>, list<array{string, int}|string> provided (see https://psalm.dev/004)
            $tokens = $this->groupEscapeSequences($tokens);

ERROR: InvalidArgument - src/Parser/SQLLexer.php:37:41 - Argument 1 of Vimeo\MysqlEngine\Parser\SQLLexer::groupQuotedTokens expects list<array{string, int}>, list<array{string, int}|string> provided (see https://psalm.dev/004)
        return $this->groupQuotedTokens($tokens);

This branch does not resolve these, but also does not add new fails.

So the fail on the build is coming from the query declaration where I've declared:
query($statement, $mode = PDO::ATTR_DEFAULT_FETCH_MODE, $arg3 = null, array $ctorargs = [])

Whereas the tests run on PHP 8 which requires this to be typed as
query(string $statement, ?int $mode = null, mixed ...$fetchModeArgs)

But if we do that it will break on anything <PHP8. I wonder if this requires the tests to be run on the min supported version (PHP 7.1 according to composer.json)?

Thanks!
Please merge/rebase master! I've introduced separate FakePdo classes for PHP 7 & 8, allowing you to use the different APIs without breaking everything.

So the last Psalm build on actions failed due to a Docker error... to make it build again I pushed some new .gitignore lines - they are relevant but obviously not directly to this PR so I can remove them if needed.
But on the plus side, all checks now pass with the split out PHP7/8 classes!
I'll update the Codeception branch at https://github.com/Codeception/module-db/pull/20 to use a specific class too.

Thanks!


Register converters for shared_ptrs of solver classes

This PR should solve the request in #859.
@edantec could you test it from your side?

I will merge this PR, but it would be still useful if this fixes your issue @edantec.

I'll test it as soon as possible, thank you

It solves my problem and I can now use FDDP with python bindings, thank!

It solves my problem and I can now use FDDP with python bindings, thank!

Happy for that :)


The cert dname extraction logic fails on systems using Java keytool on a non-English language system

Hi,
Facing issues with backdoor-apk, using Kali Linux 2.0 (lib32z1, lib32ncurses5 and lib32stdc++6 are installed and up to date, so as apktool), when it comes to Signing recompiled APK
[*] Recompiling original project with backdoor...done.
[*] Generating RSA key for signing...done.
[*] Signing recompiled APK...done.
[!] Failed to sign recompiled APK

Here is the intersting part of the log file
I: Using Apktool 2.2.0
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Copying libs... (/lib)
I: Building apk file...
I: Copying unknown files/dir...
dname value:
jarsigner error: java.lang.RuntimeException: certificate exception: Empty issuer DN not allowed in X509Certificates
Forcing cleanup due to a failure or error state!

I can provide you logs & can try out what you want
Thanks a lot

Just did unzip -p myapk.apk META-INF/CERT.RSA |keytool -printcert on the apk i wanted to use, and as i am running Kali in French it's "Propriétaire : " for "Owner".
Changed the script from this : dname=$UNZIP -p $ORIG_APK_FILE $orig_rsa_cert |$KEYTOOL -printcert |grep "Owner:" |sed 's/Owner: //g' to this : `dname=`$UNZIP -p $ORIG_APK_FILE $orig_rsa_cert |$KEYTOOL -printcert |grep "Propriétaire :" |sed 's/Propriétaire : //g'
And now it's working fine :)
Maybe you could integrate an option that regexs the right string (Propriétaire :, Owner:) from the keytool princert command :)

@Emilien942702 Apologies. This is a known issue for systems using a native language other than English. This is a duplicate of issue #17 and I haven't spent time working on a better solution. I'll leave this issue open as a bug and will queue it up to be addressed.

@Emilien942702 Can you try running the script out of the "cert_dname_fix" branch? I made a small change on that branch that I think will solve the problem.

@dana-at-cp Just tried, got
dname value: Propriétaire : CN=Flynn Macfarlane, OU=Mobile Development, O=General Adaptive Apps Pty Ltd, L=Brisbane, ST=Queensland, C=AU
erreur keytool : java.io.IOException: Invalid keyword "PROPRIÉTAIRE : CN"
Forcing cleanup due to a failure or error state!

Think the extraction is right, expect that you need to filter the first strings :)

@Emilien942702 Thanks for testing. It seems that the "[[:alpha:]]" in the regex doesn't account for different languages. :)
dname=`$UNZIP -p $ORIG_APK_FILE $orig_rsa_cert |$KEYTOOL -printcert |head -n 1 |sed 's/^[[:alpha:]]\+: //g'`
``

I'll work out another way to do this via regex.

@Emilien942702 There is a new change on the "cert_dname_fix" branch. Can you try it out when you have a few minutes?

@dana-at-cp just tried, signing apk is OK but now i get
[*] Signing recompiled APK...done.
[*] Verifying signed artifacts...done.
[*] Aligning recompiled APK...done.
[!] Failed to align recompiled APK

And here is the log : (checked, zipalign is in the right folder and to be sure i cloned the whole folder back again from cert_dname_fix branch and relaunched it,  gave the same results)

jar signed.
Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2044-02-23) or after any future revocation date.
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2044-02-23) or after any future revocation date.
Re-run with the -verbose and -certs options for more details.
./backdoor-apk.sh: ligne 512: third-party/android-sdk-linux/build-tools/23.0.3/zipalign: Aucun fichier ou dossier de ce type
Forcing cleanup due to a failure or error state!

@Emilien942702 Sounds like you are missing a library that will allow you to run the zipalign 32-bit binary on 64-bit Linux. :)
Try this stackoverflow thread to get an idea of what you might be missing or how to troubleshoot further:
http://stackoverflow.com/questions/2716702/no-such-file-or-directory-error-when-executing-a-binary

@Emilien942702 I think the original issue is resolved with the changes on the "cert_dname_fix" branch.

@Emilien942702 The fix is now on the master branch. Merged #46 earlier today.


Fix 500 error caused by deleted users on issues (#3675)

This PR will resolve 500s caused by deleted users.

LGTM

hihi, I think one should not LGTM himself's PR.

Needs to be rebased, otherwise LGTM

Please reopen against master.

@tboerger you can do that by editing the PR :wink: (found that out today actually :laughing: https://github.com/blog/2224-change-the-base-branch-of-a-pull-request )

Current coverage is 2.18% (diff: 0.00%)

No coverage report found for master at 5c54243.

Powered by Codecov. Last update 5c54243...1b59e6f

An automated test would be great here

@lunny can't lgtm check for self-lgtm ? (and I think your comment also counted)

lgtm can check but not the default. I have configed it correctly but the problem is lgtm don't know not LGTM.

@bkcsoft Would this work?

It seems it's no need this PR via Files changed.

Having an automated test and instructions on how to reproduce the bug would help evaluating the need for change.

Yes

This is in reference to https://github.com/gogits/gogs/issues/3675

I've just tried reproducing with these steps:

Create a user X
Have user X file issue on project Y
Delete user X
Visit issues of project Y
Got the 505 internal error, before and after applying this patch.

Logs say:
2016/11/06 19:53:59 [...outers/repo/issue.go:188 Issues()] [E] Issues: LoadAttributes [42705]: user does not exist [uid: 3, name: ]
2016/11/06 19:53:59 [D] Template: status/500

I tried this but it doesn't fix the error.

Current coverage is 3.14% (diff: 0.00%)

No coverage report found for master at 5c54243.

Powered by Codecov. Last update 5c54243...a6c487f

@andreynering @strk
Sorry, took me awhile but this should fix the error completely, as I forgot to reset the err variable.

The lgtm service is somewhat lame in that it doesn't reset upon pushing new commits.
@LefsFlarey: an automated test would still be great here, would you consider giving it a try ?

Tested, now works, but the link to the ghost author is a 404 (maybe should be a page explaining what "Gost" is ? Or not be a link at all ?)

Also, the "Ghost" user avatar seems to be the default avatar, maybe we want a Ghost-ed gopher ? :)

btw, I noticed the user does not turn into a link while in the Issue page, so it's only in the "Issues List" page that it needs be fixed.
(OT: the urls to user profile should really be changed IMHO - but it's for another discussion)

LGTM


Fix first file detection in installation script

This PR ensures that the first configuration file is located from within the /host/etc/cni/net.d/ directory, and that it also ignores any files containing istio-cni-kubeconfig in their name.
Fixes #12.
Signed-off-by: Venil Noronha<EMAIL_ADDRESS>

Closing in favor of #15.

Hi Venil, I added you to contributors so you should be able to assign issues to yourself now.
For this issue, I had some diffs that do what I was thinking and I just opened a PR to replace.  See this other PR #15

Sure, thanks @tiswanso!


Unread articles disappearing

I have some older articles I was keeping marked as unread for when I had time to sit down and watch them more thoroughly (they're from my youtube rss feed), but they seem to have disappeared, I guess because the articles are old?
In theory, if the articles are being stored locally, these should not disappear even though they're too old to show in the RSS feed, no?

Sort of tangential to this: I found it confusing that many of my feeds, which have not been updated in months or years sometimes, show zero articles instead of showing me the latest from way back when.

NetNewsWire doesn’t keep articles forever. Even unread articles.
Part of this is so that unread counts don’t turn astronomical.
Another part is so that the database of articles doesn’t get to a size where it takes substantial disk space — and app performance suffers.
(NetNewsWire isn’t alone in this: it’s pretty normal. For instance, Google Reader used to stop tracking read/unread status after 30 days.)
Another way of looking at it: NetNewsWire is not meant as as permanent archive of articles. It really is for recent news.

I would like to add my two cents. This caught me by surprise since there's no mention of this behaviour anywhere in the app, and I also find the fact that it does this painful.
I am using this as a reading list for my RSS feeds and I tend to cycle through which of my different feeds I am currently reading from. When this ends up meaning is that I am now forced to stay ontop of articles and keep adding them to Safari's reading list when I can see that they're getting close to top of the list in the app.
Having to manually save the articles to my safari reading list defeats half the purpose that I had for using the app in the first place, I started with safari and wanted some better organization.

Here is our policy for future reference.
https://github.com/Ranchero-Software/NetNewsWire/blob/main/Technotes/RetentionPolicy.markdown


bug(COMPONENT): how to make mat-label to come in next line if mat-label is too lengthy in mat-form-filed(angular)

Is this a regression?

[ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
No response
Description
Mat-label length is too long so its getting cut in mat-form-field.
But we want tht mat-label to come in next line if length is too long in angular
Reproduction
Steps to reproduce:
1.
2.
Expected Behavior
we want mat-label to come in next line if length is too long using mat-form-field in angular.
Actual Behavior
Mat-label is getting cut since mat-label length is too long.
Environment

Angular:
CDK/Material:
Browser(s):
Operating System (e.g. Windows, macOS, Ubuntu):

You have a few options here. More text tends to fit on a floating label so that might be a better option. You can change the input to a text area if the label is non floating and if that makes sense in the context of your application since that would fit more text. By default the label text gets truncated if it doesn't fit in the mat-form-field.


Require Python 3.7 or higher

This PR drops support for Python 2.7 and 3.6, and in turn, adds support for 3.10 and 3.11.
The changes in particular:

Use Python-3 style syntax, remove six.
Add type annotations.
Add test matrix to CI covering multiple tf versions.
Updated docker image setup.
Improve formatting.

Ok thanks a lot  Marcel


panic handler behavior

I wrote this simple snippet to test the panic_handler
use ndarray::{Array2, Array3, ArrayView2, Axis};
use rayon::ThreadPoolBuilder;
let panic_handler = |_| {
    println!("############ Test ############");
};
ThreadPoolBuilder::new().num_threads(4).panic_handler(panic_handler).build_global().unwrap();

let data = Array3::zeros((100, 100, 100));
Zip::from(data.axis_iter(Axis(2))).par_apply(|slice: ArrayView2<f32>| {
    panic!("Hola");
});

The threads do panic. I see several errors messages that look like
thread 'thread 'thread 'thread '<unnamed><unnamed><unnamed><unnamed>' panicked at '' panicked at '' panicked at '' panicked at 'HolaHolaHolaHola', ', ', ', test.rstest.rstest.rstest.rs::::10101010::::9999
idem
...

However, I never see my panic_handler message. Why? Isn't this exactly the goal of a panic_handler?
Moreover, why do I see that many error messages? I understand that each thread must end or panic before quitting, but it looks like rayon is trying and trying again to run what I asked in Zip::from. Can I ask rayon to never retry? To leave as soon as there an error?

In most cases, we propagate panics back to the caller, and rayon threads stay alive to run whatever job is next. You could catch such a panic and recover, so we want the pool to still be in a usable state. We can't propagate panics in detached calls though, namely unscoped spawn, so those go to the panic handler, which aborts by default.
For scoped calls, like join and Scope::spawn, we have to make sure that we don't return until all jobs in that borrowed scope have completed. If one half of a join panics, we still must let the other half finish before we continue unwinding, otherwise that other half (which may be on a different thread) could be left with dangling references.
Most of the parallel iterators are implemented with nested join calls, so that's why you'll see a lot more attempts to run, for parts that were already split from the first thing that panicked. We don't have any cancellation flags in general, but there is the panic_fuse() method on iterator chains to make them stop more aggressively. But par_apply comes from ndarray, so you'd have to ask them to implement something similar.

Ok, thank you, I understand why there are so many error messages. I'm still unsure about the panic handler though.

We can't propagate panics in detached calls though, namely unscoped spawn, so those go to the panic handler, which aborts by default.

If I understand correctly, Zip::par_apply is a "detached call" and thus a panic is propagated to a hardcoded panic handler? My toy panic_handler would work only with join and Scope::spawn?

No, par_apply is still a blocking call, built on regular parallel iterators underneath, and join blocks as well. Scope::spawn doesn't immediately block, but it will at the end of that scope, so panics can propagate there.
By contrast, the global spawn queues work without waiting for it, so we don't have any caller to propagate to if it does panic when that finally runs. That's what I meant by "detached", and this is the case that uses your panic handler. I think the global spawn, spawn_fifo, and their ThreadPool equivalents are the only such calls.
Maybe you would like the standard hook to get all panics?
https://doc.rust-lang.org/std/panic/fn.set_hook.html

Oh, ok, it's clearer now :) Thank you!


Fix deprecation warning caused by using Faraday::Connection#authorization

Since https://github.com/lostisland/faraday/releases/tag/v1.7.1 , Faraday::Connection#authorization is marked as deprecated.
See also: https://github.com/lostisland/faraday/pull/1306
When running the tests which uses Faraday 1.10.1, I found that the following deprecation warning is shown in log.

WARNING: Faraday::Connection#authorization is deprecated; it will be removed in version 2.0.
While initializing your connection, use #request(:authorization, ...) instead.
See https://lostisland.github.io/faraday/middleware/authentication for more usage info.

This PR aims to avoid using Faraday::Connection#authorization to fix the deprecation warning.

I can confirmed that all CI are passed and the WARNING is resolved.
please review it.


Cloud tag

Inspiration : https://web.archive.org/web/20210908042019/https://github.com/monkeyWzr/hugo-theme-cactus/blob/main/layouts/_default/terms.html

Sample: cactus - https://www.takuzen.me/hugo-theme-cactus/tags/


Enum based discriminator generates incorrect OpenAPI code

It seems to me that OpenAPI code generated for enum based discriminator is incorrect. Here is link to an example from the TypeSpec documentation and the generated code:
Playground Link
The problem is that property 'kind' is generated directly inside the Dog and Cat objects and also inhereted from Pet schema due to the declaration: "allOf: - $ref: '#/components/schemas/Pet'".
There is very similar example in the OpenAPI specification in the paragraph: https://spec.openapis.org/oas/latest.html#fixed-fields-20, see part "For example:".  That example does not repeat discriminator in each object. The current solution causes a problem when generating code from OpenAPI. The enum is generated twice - first time from the abstract class with all items, and then as inner class for each enum nested insided the Dog and Cat types.
My conlucision: Extended models (Cat, Dog) should not contained repeated declarations of discriminator because it is automatically included due to the  allOf operator while including the base model (Pet).

@skywing918 for awareness

I am not sure this is incorrect openapi code. I think we are describing things correctly. The kind property is not exactly the same as what the parent is. OpenAPI3 doesn't require you to redefine it because it has the discriminator implicitly defining the value and use allOf to inherit the property but I think the way we have it is also valid

I am not sure this is incorrect openapi code. I think we are describing things correctly. The kind property is not exactly the same as what the parent is. OpenAPI3 doesn't require you to redefine it because it has the discriminator implicitly defining the value and use allOf to inherit the property but I think the way we have it is also valid

Hi @PetrPytelka , what do you think about timotheeguerin's comment.
Looks like it's correct.

Spell check and correct following text as native speaker. Text is reponse on the discussion on github (Enum based discriminator generates incorrect OpenAPI code · Issue #4707 · microsoft/typespechttps://github.com/microsoft/typespec/issues/4707). Text to check: I think that for this discussion we would need some person from OpenAPI Specification team who should help us decide how the OpenAPI specification was meant for this case. My reality is that code generated by OpenAPI emitter cannot be directly used and has to be manually edited. I do not understand what is the benefit of the more complicated OpenAPI code instead of generating shorter code with no such obstacles.
I would like to ask:
What is the motivation of emitting code different ways for disciminators?
Is it possible to generate same code for both of them?
If we will have such answers we might ask somebody from OpenAPI Specification team or on the other hand try to simplifiie implementation in TypeSpec and generate same code for both cases.

Od: microsoft-github-policy-service[bot] @.>
Odesláno: pondělí 4. listopadu 2024 16:51
Komu: microsoft/typespec @.>
Kopie: Petr Pytelka @.>; Assign @.>
Předmět: Re: [microsoft/typespec] Enum based discriminator generates incorrect OpenAPI code (Issue #4707)
Assigned #4707https://github.com/microsoft/typespec/issues/4707 to @PetrPytelkahttps://github.com/PetrPytelka.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/typespec/issues/4707#event-15106287942, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AA3VU6GMZLPNBH3NX6RGZ2DZ66JW5AVCNFSM6AAAAABPZYLEM2VHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJVGEYDMMRYG44TIMQ.
You are receiving this because you were assigned.Message ID: @.***>

I think we might need input from someone on the OpenAPI Specification team to help us determine the intended use of the OpenAPI specification in this case. Currently, the code generated by the OpenAPI emitter cannot be used directly and requires manual editing. I don’t understand the benefit of generating more complex OpenAPI code when shorter, obstacle-free code could be produced.
I have a few questions:
What is the motivation behind emitting code in different ways for discriminators?
Is it possible to generate the same code for both cases?
With answers to these questions, we could either consult the OpenAPI Specification team or consider simplifying the implementation in TypeSpec to generate the same code for both cases.


Let connectionpool dispose themselves

As mentioned in this stackoverflow post, there's an issue with the current PoolManager API which can close ConnectionPool objects before they are even used.
I don't think this is easily fixed at the PoolManager level because the API  doesn't give rooms for a way to notify that a ConnectionPool is being used (or is to be released). As such I propose adding a different set of data structures with different APIs to fix this.
I would like some review/discussion in terms of direction before I move on to writing tests and making final adjustments.
@Lukasa @shazow

Hrm, I'm not sure how I feel about this approach. I think a better idea is going to be to reference count the underlying connectionpool objects: if they're being used, they must not be cleared. Is there a reason not to choose to use that approach instead of adding this extra complexity?

I actually kind of considered that, didn't feel confident enough to take it on.
I'll redo this later today using that.

@Lukasa how about now

Codecov Report

Merging #1237 into master will decrease coverage by 2.66%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1237      +/-   ##
==========================================
- Coverage     100%   97.33%   -2.67%
==========================================
  Files          21       21
  Lines        1985     1991       +6
==========================================
- Hits         1985     1938      -47
- Misses          0       53      +53

Impacted Files
Coverage Δ

urllib3/connectionpool.py
100% <100%> (ø)
:arrow_up:

urllib3/poolmanager.py
100% <100%> (ø)
:arrow_up:

urllib3/util/selectors.py
83.64% <0%> (-16.36%)
:arrow_down:

Continue to review full report at Codecov.

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

How so? PoolManager can no longer close ConnectionPool objects since the dispose_func isn't passed to the container anymore. Each ConnectionPool manages its own closure when the last reference to it disappears.

That's true, but we are now in a position where it's not possible to do eager closure of the pools: if you try to clear a poolmanager your outstanding sockets will get non-deterministically cleaned up. I think we need to maintain an actual reference count ourselves.

That leads to another question however: eviction should block until the evicted victim cleans up, shouldn't it? Otherwise, as it is right now, they simply "float" somewhere (we don't keep track of them). If the goal of closure is to ensure that all connections are cleaned up, it would be necessary to prevent these floating connections too, which requires us to block during eviction.
Another question: My previous implementation has some refcounting/blocking mechanisms but you did say that it was too complex. Did I misunderstand this? (by "complexity" did you mean the API change? The refcount/blocking code? I suppose we can do without changing the API change)

That leads to another question however: eviction should block until the evicted victim cleans up, shouldn't it?

Not necessarily, no. So long as we attempt to close things whenever we use them, it's fine.
But you've somewhat convinced me to reconsider the context manager based approach. I think we can make that work more simply though: want to push it back up and we can take another look at it?

Pushed.
One thing I haven't mentioned about this implementation is that it doesn't allow easy clear() either.
If concurrent threads perform additional acquire() while another is doing a clear(), it can keep blocking forever.
I considered making another class that wraps this BlockingRecentlyUsedContainer. When clear() is called we swap it out for a new container, so subsequent acquire() will go to the new container and doesn't prevent the old container from draining. But context managers belonging to the old container calls release() on the new container, it's a source for error.
I just decided not to make the clear() method in that case.

Github is lagging and refusing to let me reply ...
The common case here is that most connectionpools are only acquired and released shortly after. The _freelist should almost always be populated.
The condition variable is only there to solve the rare scenario where all the poolmanager are being used. This most likely be because they configured the number of pools to be too low. This ensures that what the user configured (number of pools, size of each pool) is honored. We can also tune the overcommit ... but honestly I don't see the point, the user can reconfigure their parameter if they see this rare case appearing too often.

The condition variable is only there to solve the rare scenario where all the poolmanager are being used.

Sure, I get that, but that's part of why I don't think it's worth having it. It exists to provide blocking behaviour in an uncommon case. My suggestion is to say that in that uncommon case we should just keep making forward progress, and then throw connection pools away when they're returned later on. It saves us a bunch of book-keeping overhead, avoids a few confusing branches of code, and generally makes everyone's life easier.

What about the bit about predictability? If a user configures 5 pools with 5 connections per pool personally I'd expect the library not create more than 25 connections.
If the connections don't return sufficiently quickly, theoretically there isn't an upper bound.

If a user configures 5 pools with 5 connections per pool personally I'd expect the library not create more than 25 connections.

Then urllib3 will surprise you, because by default ConnectionPool objects are leaky: that is, they allow you to create more than the pool size of connections. They only store up to the pool size.
In this instance I don't think any particular expectation is more appropriate than the other: they're just both an assumption that needs to be validated by looking at the code. In general most users assume that if they call PoolManager.urlopen that we're going to service that request as swiftly as possible. Users that do not want that are likely to look at the documentation and code, at which point they'll discover the block parameter to the ConnectionPool and handle it appropriately.
I am open to adding blocking behaviour to the PoolManager, but I think I'd need to see some argument that it's actually necessary. We've never received a formal feature request for it, so to begin with I think we should take the simplest route to correctness, and then worry about whether we need to extend the approach to handle the additional features.

Perhaps our expectations are different here. I'm used to seeing other connection pools block on get(), example:

HikariCP
ActiveRecord connectionpool (they don't use the word "block" but I suppose the "timeout" parameter is a hint enough, you can also verify at the source)
another ruby connection_pool gem

As for why I prefer that ConnectionPool does the book keeping for me (ensuring that the number of connections stay under a limit) is because it makes managing resources simpler. If server A is talking to server B using a connection pool with a 1000 connection limit makes for an easy calculation. This means if I spawn 9 more copies of server A, I know that B can't have more than 10K connections from As at any time.
If B is sufficiently slow, connections can linger for quite a long time before dying, so the max number of concurrent connections from A to B becomes harder to analyse. I'll have to set the sizes much lower, but even then it doesn't provide any sort of guarantee to me under different loads. Having a hard upper bound helps, which is why I trust that a ConnectionPool offer me this sort of hard guarantee.
I wouldn't mind if it does leak a few connections, but if the number of leaked connections scale with the latency of the destination host and the number of threads using the pool, it can be very tricky.

Perhaps our expectations are different here.

They are indeed. That's why I said "In this instance I don't think any particular expectation is more appropriate than the other: they're just both an assumption that needs to be validated by looking at the code." :smile:

As for why I prefer that ConnectionPool does the book keeping for me (ensuring that the number of connections stay under a limit) is because it makes managing resources simpler.

So I understand that. In fact, ConnectionPool does enable this behaviour, for exactly this reason: managing the number of TCP connections between two hosts is useful. You can set the block parameter to True and get the behaviour you want.
But we're not talking about ConnectionPool, we're talking about PoolManager, which is a pool of pools. This makes the situation trickier. If you set a PoolManager with size 10, made up of connection pools of size 10, all of which block, how many connections can you have open at once? The answer is "unclear, somewhere between 10 and 100". If you only ever contact 10 hosts, then you'll trend towards 100 connections. If you contact lots of hosts, you'll trend towards 10 connections.
This means that a PoolManager size sets a hard cap on resource usage, but does not necessarily allow your code to actually reach that hard cap in regular usage. In many cases it won't even get close, e.g. if you're only using a few threads it's unlikely you'll ever maximally use a ConnectionPool so you'll end up much closer to the PoolManager limit than the limit PoolManager x ConnectionPool.
If we swap PoolManager to block by default when there are many connection pools in use, in practice this means blocks will be entirely unpredictable and will be predicated entirely on the usage model. Making many connections to few hosts will rarely block: making the same number of connections to many hosts will frequently block. This is a completely non-intuitive behaviour that is hard to reason about.
The reality is that there is no one perfect connection pooling strategy. There are many possible strategies, each of which at least one programmer thinks of as the "obvious" strategy, but in reality we need to accept trade-offs here. We definitely need to fix the issue where a ConnectionPool is closed while in use: that's a bug. Beyond that, we should only add support for what our users actually need, and right now I still don't see anyone complaining that they need a blocking PoolManager. If they need it, we can come back and add it, but for now we should aim to do the simplest thing that resolves the issue and maintains the previous behaviour.

Alright. I was expecting the PoolManager to compose the underlying pools into another pool-like construct, giving me the same set of guarantee (connection limit).
As of now it's a bit tough to use it properly.

Alright. I was expecting the PoolManager to compose the underlying pools into another pool-like construct, giving me the same set of guarantee (connection limit).

Yup, that's an understandable desire. Unfortunately it's just not the way urllib3 works today. If we were going to rewrite urllib3 from the start today the distinction between PoolManager and ConnectionPool would want to be rethought, but as it stands they work the way they do.
Sorry that we couldn't get closer to what you were looking for here. =(

No problem, I appreciate this conversation.
but I have a few questions/feature requests if you don't mind. If changing the PoolManager (or creating an equivalent class) isn't desirable, because the class in itself wasn't meant to be a pool, how about we create a new ConnectionPool object that has built in hostname/context based connection multiplexing? I like this feature from PoolManager, but since it isn't completely composable with ConnectionPool objects, how about we bring it to the ConnectionPool objects themselves?
This pool would provide a strong upper bound on the number of connections. It can also adapt better to different workload. Say, if we we set the max num of connections to 1000, we can expect the pool to shift all connections from host A to host B depending on the workload at time. This can be more resource-wise than, say, a PoolManager of 100 pools, each hostname limited to 10 connections. It could also have parameters to fine-tune the limit, in case hammering any host at any time isn't a good idea.
Not related, but also a feature request: can there be an optional parameter for the PoolManager to resolve the hostname before converting to a key? At the moment if the set of destinations consist of many domains pointing to the same IP address (i.e. the domain has a lot of subdomains) the connections are not as freely reusable as they might be.
I'm willing to submit patches if you find either idea feasible.

If changing the PoolManager (or creating an equivalent class) isn't desirable, because the class in itself wasn't meant to be a pool, how about we create a new ConnectionPool object that has built in hostname/context based connection multiplexing?

So I'm definitely open to this, but I think I need to stress how substantial a chunk of work this is. If we were going to do it it would amount to nothing short of a majority rewrite of the codebase: more than 50% of the code relies on the abstraction layer between PoolManager and ConnectionPool, and changing it would basically require redesigning the architecture of the library.
That is not a "we don't want this": I think having different connection pool logic would likely be a good thing, and would certainly be a refactor worth investigating. But it'd be a big breaking change that would require a lot of work, and I think we'd need to see the whole patch before we decided to go forward on it.

an there be an optional parameter for the PoolManager to resolve the hostname before converting to a key? At the moment if the set of destinations consist of many domains pointing to the same IP address (i.e. the domain has a lot of subdomains) the connections are not as freely reusable as they might be.

Do you mind clarifying why exactly this is a problem? What is it about the DNS-based load balancing that interacts poorly with the host based pooling? Because it seems to me that pooling based on hostname should be completely legitimate.

Alright I'll make an attempt at the first idea.
About the second problem, I have a use case where I pool a lot of connections to various subdomains of a single website. All subdomains have the same IP address, so I suppose any TCP connections pointing to a subdomain is reusable by another. But without option to resolve the IP address first, the PoolManager will create different connectionpool objects for each subdomain, reducing the reusability of the connections in each pool.

But without option to resolve the IP address first, the PoolManager will create different connectionpool objects for each subdomain, reducing the reusability of the connections in each pool.

Ah, so this raises a really interesting question: is it acceptable to pool connections across different hostnames to the same IP address?
The answer here depends on your use-case. Famously browsers do not do this unconditionally for a number of reasons mostly relating to what's known as "ambient authority". It's also a bit difficult because it interacts awkwardly with TLS, e.g. you may be served a TLS cert valid for only one of the hostnames that resolve to a given IP, so it's not acceptable to coalesce them.
Generally speaking browsers treat hostnames as defining trust boundaries, and resources like connections should not be shared across these trust boundaries. I'm inclined to do the same here: the subtle risks of sharing connections to different hostnames is sufficiently risky that it seems generally unwise.
However, you may be able to achieve the effect you want by using hostnames in your URLs directly and setting host headers. Does that get you to where you want to go?

I probably should have considered TLS playing a role in this.
You're right setting the headers manually will solve my issue. I was wondering if it's better if the library does it for me, but considering what you mentioned it's probably better left to the user of the library.


fix: test curriculum challenges

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX
tests only challenges for the English language

I am going to pull this down to test on my fork for the CI. Other than that we are good to go.

@ValeraS looks like this is great.
https://github.com/raisedadead/freeCodeCamp/pull/19

The build seems to have caught all that is required @Bouncey
@ValeraS
IDK, and this not a concern of your PR per say, but can we get rid of the stack somehow:
https://travis-ci.org/raisedadead/freeCodeCamp/builds/444145777#L5144-L5156
@RandellDawson @scissorsneedfoodtoo @beaucarnes
We would need to go thru the build and fix the linting in challenge tests.
/cc @tchaffee

Everything LGTM! Awesome job, @ValeraS. Just ran the test locally and everything passes without a hitch.


Fixed list in README.me

Used markdown formatting for unordered list for better
display in GitHub

Opened against fork instead


Build failure: glibc (cross-compiled from Darwin)

Steps To Reproduce
Steps to reproduce the behavior:

On aarch64-darwin, nix build --no-link --print-out-paths nixpkgs#pkgsCross.gnu64.stdenv.cc

Build log
@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
unpacking source archive /nix/store/w59si7lz6lm7fimhvgj5p0m9bq4n0xdl-glibc-2.39.tar.xz
source root is glibc-2.39
setting SOURCE_DATE_EPOCH to timestamp<PHONE_NUMBER> of file glibc-2.39/wctype/wctype_l.c
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
applying patch /nix/store/qy2djzi4v1hxgqdmrhj2pa5a86l3bhd3-2.39-master.patch
File ADVISORIES is not a regular file -- refusing to patch
1 out of 1 hunk ignored -- saving rejects to file ADVISORIES.rej
patching file advisories/GLIBC-SA-2023-0001
patching file advisories/GLIBC-SA-2023-0002
patching file advisories/GLIBC-SA-2023-0003
patching file advisories/GLIBC-SA-2023-0004
patching file advisories/GLIBC-SA-2023-0005
patching file advisories/GLIBC-SA-2024-0001
patching file advisories/GLIBC-SA-2024-0002
patching file advisories/GLIBC-SA-2024-0003
patching file advisories/README
patching file sysdeps/arm/dl-machine.h
patching file sysdeps/unix/sysv/linux/mips/clone3.S
patching file sysdeps/mips/mips64/libm-test-ulps
patching file sysdeps/unix/sysv/linux/s390/s390-32/clone.S
patching file sysdeps/unix/sysv/linux/s390/s390-64/clone.S
patching file sysdeps/unix/sysv/linux/tst-clone.c

Additional context
#287594 broke the use of pkgsCross.gnu64.stdenv.cc on Darwin. The new 2.39-master.patch tries to create a file named ADVISORIES and a directory named advisories, which conflict on a case-insensitive filesystem. The old 2.38-master.patch.gz appears to have not created the file ADVISORIES, so it didn't have this problem.
Notify maintainers

@edolstra @Ma27 @ConnorBaker
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-darwin"`
 - host os: `Darwin 23.4.0, macOS 14.4.1`
 - multi-user?: `yes`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.15.0`
 - nixpkgs: `/nix/store/hz0r29d5dbmzrdw5zj56cf2dnm4h1m38-source`

Add a :+1: reaction to issues you find important.

Well... upstream did this commit during 2.39 patches:
https://sourceware.org/git/?p=glibc.git;a=commit;h=6d1e3fb07b45e2e31e469b16cf21b24bccf8914c
I suppose we could work around it in some way, but it feels painful.

APFS can do case-sensitive volumes, so I'll probably file a bug for the two relevant Nix installers to consider doing that (credits to @lheckemann for bringing this up)
we'll probably don't need the ADVISORIES file anyways, so we can probably mess around with some fetchpatch-like construct. Will try to do so soonish.

fetchpatch?  We just have the patch in nixpkgs as plain file.  So we could drop that commit easily from the patch, though there might be conflicts if they fix further CVEs, so it might become painful to maintain.
Or maybe you meant some construct run by only the people who update the glibc expression... yes that might work.

Maybe the best approach will be to simply split the commit?  First remove the old stuff and only after that add the new one?  That way I don't think the two would ever exist at once.

Sorry, I wasn't quite clear: with fetchpatch you could do excludes = [ "ADVISORIES" ]; which is probably what we want because then, applying the patch won't fail. I fully agree that we don't want to fetch the patch though, but keep it in our repo given how we generate it. I don't know the exact implementation off the top of my head, so we'll probably won't be able to reuse the function itself though.

Maybe the best approach will be to simply split the commit? First remove the old stuff and only after that add the new one? That way I don't think the two would ever exist at once.

Yeah, if my suggestion isn't trivially doable, that's a reasonable approach as well.
Though I think it might further complicate updating the patchset.

I'd update the patchset in the way that you regenerate as usual but then you do git add -p with skipping the initial change and accepting all the rest.

PoC: https://github.com/NixOS/nixpkgs/commit/fcd895ca8982161bf9dbf0c58f1189e38f5b91c6

Will check it out on my work laptop (also a mac). Slightly hacky, but I can live with that (will disappear anyways when we go to 2.40).

I suspect it would even suffice to just order the file deletions before additions, instead of splitting up the patch.

fwiw this still breaks:
error: builder for '/nix/store/iaqdphfr73cwkrqvm8ba1gr0xrclq9s8-glibc-nolibgcc-x86_64-unknown-linux-gnu-2.39-5.drv' failed with exit code 1;
       last 10 log lines:
       > patching file advisories/GLIBC-SA-2024-0003
       > patching file advisories/README
       > File ADVISORIES is not a regular file -- refusing to patch
       > 1 out of 1 hunk ignored -- saving rejects to file ADVISORIES.rej
       > patching file sysdeps/arm/dl-machine.h
       > patching file sysdeps/unix/sysv/linux/mips/clone3.S
       > patching file sysdeps/mips/mips64/libm-test-ulps
       > patching file sysdeps/unix/sysv/linux/s390/s390-32/clone.S
       > patching file sysdeps/unix/sysv/linux/s390/s390-64/clone.S
       > patching file sysdeps/unix/sysv/linux/tst-clone.c
       For full logs, run 'nix log /nix/store/iaqdphfr73cwkrqvm8ba1gr0xrclq9s8-glibc-nolibgcc-x86_64-unknown-linux-gnu-2.39-5.drv'.

I don't think we even do something with the advisories stuff. Perhaps we should just drop the commits from the patchset?
That said, the filterdiff idea I had before won't work out anyways for the same reason we can't use fetchpatch here.

That's weird.  On x86_64 NixOS it built just fine :-/

Anyway, I don't see those files as useful in our build, so I certainly don't oppose dropping changes around them if it avoids some complications.

Did you test it with a case-insensitive file-system there? But even then, perhaps that's APFS-specific 🤔

I certainly don't oppose dropping changes around them if it avoids some complications.

OK, good.
Do you want to file a change for that or shall I? :)

I've only tested with normal NixOS (case-sensitive FS), just to verify that I haven't messed up the patch.

APFS can do case-sensitive volumes, so I'll probably file a bug for the two relevant Nix installers to consider doing that (credits to @lheckemann for bringing this up)
we'll probably don't need the ADVISORIES file anyways, so we can probably mess around with some fetchpatch-like construct. Will try to do so soonish.

https://github.com/NixOS/nix/issues/2415 claims that a case-sensitive filesystem will still not allow two files that differ only by case. I haven't tested it myself. (Regardless, AFAIK it's not possible to switch without erasing the volume, so this could only potentially help new installs.)


Swap 'Unconfirmed Transactions Endpoint' and 'Transaction Hash Endpoint' sections

Anytime I look at it, it throws me off that the simple transaction lookup isn't first. So I'm guessing most others would be the same :)

Ahh yes that makes a ton of sense (Not sure why I followed that order, was probably in a haze of doc-writing)


feat: enable emoji picker in OSS-GPT chat widget

Brief Information
This pull request is in the type of (more info about types):

[ ] build
[ ] ci
[ ] docs
[x] feat
[ ] fix
[ ] perf
[ ] refactor
[ ] test

Related issues (all available keywords):

feature #613

Details

Enable the emoji panel in rcw.
The style of the emoji picker should be fine tuned for both themes.
Adjusting the length of rcw and the width of the user chat box

Example：

Light theme：

Dark theme：

Checklist

[x] I have read the CONTRIBUTING doc
[x] I have signed the CLA

Others

I found a bug: Clicking on emoji icons in light mode gets stuck. SO I added an if statement.


runtime/pprof: TestCPUProfileMultithreaded is flaky in android/arm

Note that the number of samples the test observed is small small (18 samples) compared to the test execution time (0.49s). The expected CPU sampling rate is 100Hz.

http://build.golang.org/log/790f12ebfd076cb47d01055b7ee138b6d40be2b1
go_android_exec: adb shell mkdir -p /data/local/tmp/pprof.test-23878
go_android_exec: adb push /tmp/go-build624543768/runtime/pprof/_test/pprof.test /data/local/tmp/pprof.test-23878/pprof.test-23878-tmp
217 KB/s (3129500 bytes in 14.033s)
go_android_exec: adb shell cp '/data/local/tmp/pprof.test-23878/pprof.test-23878-tmp' '/data/local/tmp/pprof.test-23878/pprof.test-23878'
go_android_exec: adb shell rm '/data/local/tmp/pprof.test-23878/pprof.test-23878-tmp'
go_android_exec: adb shell export TMPDIR="/data/local/tmp/pprof.test-23878"; export GOROOT="/data/local/tmp/goroot"; export GOPATH="/data/local/tmp/gopath"; cd "/data/local/tmp/goroot/src/runtime/pprof"; '/data/local/tmp/pprof.test-23878/pprof.test-23878' -test.short=true -test.timeout=4m0s; echo -n exitcode=$?
--- FAIL: TestCPUProfileMultithreaded (0.49s)
pprof_test.go:161: total 18 CPU profile samples collected
pprof_test.go:170: runtime/pprof_test.cpuHog1: 0
pprof_test.go:170: runtime/pprof_test.cpuHog2: 18
pprof_test.go:184: runtime/pprof_test.cpuHog1 has 0 samples out of 18, want at least 1, ideally 9
FAIL
exitcode=1go_android_exec: adb shell rm -rf /data/local/tmp/pprof.test-23878

duplicate of #9605.


Update Helm docs to use submariner-operator chart

Update the Helm deployment docs use the new submariner-operator Helm
chart that deploys the operator to in turn deploy and manage Submariner.
Also minor re-ordering of variables to be alphabetical.
Closes: #440
Signed-off-by: Daniel Farrell<EMAIL_ADDRESS>

@skitt can you please review this?

There’s still an issue with Globalnet (IIRC) on the operator-based Helm chart, which is why it’s not used by default in Shipyard. Until we fix that, I’m wary of encouraging end-users to use it...

@skitt @dfarrell07 a lot has changed in this area with 0.9.0-m1. Is it OK to merge it now? If not, can you link specific Issues/PRs we are waiting for?


BatchBuffer.vertices => ViewableBuffer.rawBinaryData

#5879 solved.

Codecov Report

Merging #5881 into dev will not change coverage.
The diff coverage is 0%.

@@           Coverage Diff           @@
##              dev    #5881   +/-   ##
=======================================
  Coverage   70.38%   70.38%
=======================================
  Files         206      206
  Lines       10454    10454
=======================================
  Hits         7358     7358
  Misses       3096     3096

Impacted Files
Coverage Δ

packages/core/src/batch/BatchRenderer.js
30.38% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Oops!
Yes, it works: https://pixijs.io/examples/?v=refactor-dev#/demos-basic/container.js

Thank you for the quick PR @SukantPal!


[WIP] Add concept exercise conditionals

Addresses https://github.com/exercism/javascript/issues/989

Exciting stuff!
Once you undraft this and fix the conflicts and still run into prettier, you can add a comment /format as the only content of that comment to trigger prettier here:
/format

The same goes for integrity issues. If the precheck fails and complains that the files are not in sync, you can use /sync as the only content of a comment to have a GitHub Action sync all the exercises:
/sync

Okaaaaay. It wasn't supposed to trigger it, but 🤷🏽 . Luckily everything was already up to date, so nothing happened 🌠

Open questions:

Scope: Currently the ternary operator is out of scope for this exercise. It think it is better to teach it somewhat later because otherwise students might overuse it and create code that is hard to read but makes them feel clever. Should we keep it like it is or include the ternary operator?
Concept naming: Currently the concept for the if statement is called conditionals. Since there will also be conditionals-switch and conditionals-ternary later on, conditionals-if would be a more consistent name. Should I stick with conditionals nevertheless?
About.md content: I included some parts (e.g. on how to write the condition) that are more "general good practice" than JavaScript specifics. I am of course open to removing some or all of those if they are unwanted. Just let me know.
Enforcing if/else if/else: In these simple functions we are dealing with in the tasks you could always also use early returns instead of practicing how to write else if and else what is the goal of the exercise. I have dealt with that by tweaking the exercise such that not using early returns avoids some duplication and by explicitly mentioning what should be used in case of task 3. Additionally I understand our analysis tooling can also help here. Any other thoughts on how to deal with this issue?

I moved it so you could decide :)

Scope: Currently the ternary operator is out of scope for this exercise. It think it is better to teach it somewhat later because otherwise students might overuse it and create code that is hard to read but makes them feel clever. Should we keep it like it is or include the ternary operator?

I would even suggest that it's okay if we don't explicitly teach the ternary operator. Its use is often not necessarily more idiomatic, but a stylistic choice. I feel very (positively) strongly about using it, but I know that various style guides discourage or even ban it altogether. Does that mean we should skip it? No, but it does mean its not a worthy concept to put our time in right now ;).
I think it's a good idea to leave it out of this exercise and revisit it some time in the future when we've covered the other bases.

Concept naming: Currently the concept for the if statement is called conditionals. Since there will also be conditionals-switch and conditionals-ternary later on, conditionals-if would be a more consistent name. Should I stick with conditionals nevertheless?

Eh. Yes. I agree with you, but we have made the choice that the "basics of x" / "x 101" / "introduction to x" is named "x", and not "x-something". I think this is a great exercise to teach people how to do the majority of conditionals, and thus I think conditionals is aptly named. In fact, any exercise that potentially expects a ternary or switch can probably be solved by someone who has only done this exercise. My vote would be conditionals for cross-track consistency.

About.md content: I included some parts (e.g. on how to write the condition) that are more "general good practice" than JavaScript specifics. I am of course open to removing some or all of those if they are unwanted. Just let me know.

I like this. Let's keep it.

Enforcing if/else if/else: In these simple functions we are dealing with in the tasks you could always also use early returns instead of practicing how to write else if and else what is the goal of the exercise. I have dealt with that by tweaking the exercise such that not using early returns avoids some duplication and by explicitly mentioning what should be used in case of task 3. Additionally I understand our analysis tooling can also help here. Any other thoughts on how to deal with this issue?

I often would write early returns. We can definitely have the Analyzer check for lack of else statements and then print out something along the lines of:
Nice. That's an _early return_. For the purpose of the Concept that this exercise aims to teach, try solving this using an `else` statement.

If you'd like something like this (you can suggest the copy), can you add it to design.md at the bottom? See lasagna if you want to know what I mean. I can then point you / aid you / do this for you in the Analyzer. Let me know.

@SleeplessByte
I added the note regarding the Analyzer feedback to the design.md file.

Feel free to apply which you like, and then self squash merge.

I fixed all the things mentioned in the review but I don't have rights to merge myself.

🎆🔥 🚒 🧯


Lane

Thanks for your model, We noticed that KITTI has lane label, but you don't use it as a result in your model. Is it easy to use radar data for semantic segmentation of lane lines?

Radar or LiDAR?  For LiDAR, it can be used for the lane detection according to the intensity or reflectivity, while for Radar, I suppose it is limited due to its sparsity and noise.


Move can_be_function_wrapped to Pluto

This heuristics seem a bit too Pluto specific to be useful for ExEx users?

Yess


(#213) New Version update

#213. Generally, there is a need to update factory method in the notification as well as messages. So this pr will be available to eventually check up the provided changes in the cloud environment.

@olegkiprik @zniwiarzxxx This PR Will be merged after the tests update to resolve this inacceptance:
https://github.com/SaintAngeLs/distributed_minispace/pull/238/checks?check_run_id=25691618504
https://github.com/SaintAngeLs/distributed_minispace/pull/238/checks?check_run_id=25691619937

Statistics to posts is horrific. @olegkiprik @zniwiarzxxx please resolve this issue:
https://app.codecov.io/gh/SaintAngeLs/distributed_minispace


Quick open / suggest foreground color messes up 3rd party themes

Probably broken by https://github.com/microsoft/vscode/pull/122893
My GitHub Sharp theme now looks like this:

This is stable:

Does the change from the PR requires all 3rd party themes to adopt something?

Same in suggest:

So we did introduce a couple of new color themes:

list.focusHighlightForeground which defaults to the current highlight color
quickInputList.focusForeground which defaults to list.activeSelectionForeground
editorSuggestWidget.selectedForeground which also defaults to list.activeSelectionForeground

I tested this in all of the top 50 themes and didn't see any clashes as most themes only theme the list widget colors (which is what the quick pick inherits from now). So in your theme because you have set colors for the quick pick & suggest widget you'll need to add a new color for quickInputList.focusForeground and editorSuggestWidget.selectedForeground.
As an alternative, you can remove the quickInput.list.focusBackground and editorSuggestWidget.selectedBackground so that it will look just like the list focus state:

Let me know if that helps out.

Thanks for double checking! I have updated GH Sharp.


K8s multi node tests

there are some changes that needs to be done in the kubeadm itself to support IPv6, for now it's only possible to test IPv4 tests


Database connection unreliable

It seems if the database if left idle for a matter of hours and a new API request is made, nothing is returned sometimes. However, making the request again one to three times will get the correct response. This can also be found when restarting the database service, the first request normally misses. This problem is worsened when a server caches results returned because missed results are cached too.
From the debugging done so far, it does not look like the request ever gets to the database server when they are missed. The requests are also not very consistent (e.g. could work first try or third) which is suggesting networking issues.

In initial testing using pool_pre_ping has been shown to not miss shortly after a database service restart and after idling over the weekend:
https://docs.sqlalchemy.org/en/latest/core/pooling.html#pool-disconnects-pessimistic


[Every game should have a footer(Plateform Name not provided)]:

Is your enhancement request related to a problem? Please describe.➕
By adding a footer to every game present it will be known that this game belongs to the current web page provider and there are some more advancements which should be done to fitting every game to the fixed window size whether scrolled down

Describe the solution you'd like
Solution steps
Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @shuddhi-jain! 🙂
It seems like you are not following proper guidelines !! 👀
Read documentation properly !!🙏
If you have any queries reach out to us on Discord🕹 .

Hey @shuddhi-jain !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

Hey @shuddhi-jain ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇

Okay Thankyou @kunjgit


Project 📃: CSS Art Gallery

WebMasterLog Repository (Proposing new issue)
:red_circle: Project Title : CSS Art Gallery
:red_circle: Aim : Create a page which combines all the art created by different artists using HTML and CSS and code can also be accessed
:red_circle: Tech Stack Used : HTML, CSS, JS
:red_circle: Category : Vanilla-JS-Projects
Screenshots 📷

N/A

:white_check_mark: To be Mentioned while taking the issue :

Full name :  Amruta Jayanti
GitHub Profile Link : AmrutJayanti
What is your participant role? GSSOC

Happy Contributing 🚀
All the best. Enjoy your open source journey ahead. 😎

@AmrutaJayanti go ahead.


SRS review 2

@karolserkis
Your figure caption for figure 1 says the following:
A simple gravity double pendulum (model assumes no friction or air resistance)[1]

I am not sure if you need to write "model assumes no ....". This should go in assumptions
[1] is not a reference. If you are trying to number the figures, that is not necessary as latex takes care of it. If you have a reason for this caption to be this way, please don't bother.

@Malavika-Srinivasan @smiths
Thanks!


Document scoping - allow an array of controllers

controllers_path is a string, do we have any alternative to support multiple controllers? For example I want to have list of controllers (which is not so easy to extract in a single regex string) to be documented and not all controllers in the app.
config.controllers_path = "#{Rails.root}/app/controllers/api/**/*.rb"

Hi, we could add include and exclude filters or even support path as an array also.
I'm open to hearing what you think it would be a good option @cliren


Only shows ping

Just installed and it only shows a ping (always the same) and up&down are N/A

Hey! Thank you for opening an issue.
I'll look into it!

Same here. Would love to have this plugin working!


Configurable duration

Added configurable clip duration via the time option.
Allowing for sub-second clip durations (for reduced latency) meant needing to change the output file names, which were previously in epoch time. Adjusting those file names required a new version of FFmpeg, hence the major version.

Fixes #15.


[autoheight grid] Disable vertical scrolling

Is there no option for disabling vertical scrolling i.e. just displaying the table's contents as-is?
As far as I can tell all that is needed is to remove this line, but I am not sure if that will have unwanted repercussions?

there is no option for this.
some people use 'forPrint', this does something similar.
it's my plan to implement 'auto row height' but it's not done yet.

Okay, but for forPrint will disable horizontal scroll, yes?
In estimation, do you see any issue with outcommenting this line ?
Then we could just make a setting. Something a long these lines
if (!this.options['auto_height']) {
   this.eCenterRow.style.height = centerHeight + 'px';
}

Okay, but for forPrint will disable horizontal scroll, yes? -> yes
In estimation, do you see any issue with outcommenting this line ? -> no, seems fine
your right, the grid is very close to having an auto-height feature, would be small code required on my side to get it in

I will open a PR, if you are busy?

sure you can open a PR. i spent 20min just now looking at implementing 'auto height', but it's a tricky bugger, i'll need to give it a good two hours on undistracted time - so had to back out (i'm on client site currently, so not as much time to do larger items). if you can do a PR then i will take a look. i will do full review of the PR (make sure i understand it) before merging, so please be patient after you create the PR.

This feature is for us as well critical. We use aggrid with bootstrap and as a tablet version. It's unusable if you have two scrollbars on a tablet version. The height is taken by ag grid, but there's always 1-2 rows which are invisible and thats why the scrollbar is shown. When do you guys is that feature available. It is really critical for our application.

When do you guess is that feature available I have a lot of other work that I am doing at the moment, so won't be spending time on this in the next two weeks. Maybe after that.

Would love to have this feature, currently we are setting the grid height to be the total of all rows plus some paddings to remove the vertical scroll bar in mobile view. But the code is not that clean due to the resize sensor logic.

+1 Is there any progress?

tracked by https://ag-grid.atlassian.net/browse/AG-114

For those who are still searching for an answer for this, this could be an emergency solution, hope this helps. I guess I solved this using only css. Obviosly some features lose sense without vertical scroll (floating top and bottom rows).
I did not tested all features, but i guess this works in a lot of cases.
.ag-scrolls {
    height: auto !important;
}

.ag-body {
    position: relative !important;
    top: auto !important;
    height: auto !important;
}

.ag-header {
    position: relative !important;
}

.ag-floating-top {
    position: relative !important;
    top: auto !important;
}

.ag-floating-bottom {
    position: relative !important;
    top: auto !important;
}

& > div,
.ag-bl-normal-east,
.ag-bl-normal,
.ag-bl-normal-center,
.ag-bl-normal-center-row,
.ag-bl-full-height,
.ag-bl-full-height-center,
.ag-pinned-left-cols-viewport,
.ag-pinned-right-cols-viewport,
.ag-body-viewport-wrapper,
.ag-body-viewport {
    height: auto !important;
}

We have a need for this feature as well.
We are currently implementing a workaround where we calculate the height each time it is changed, apply that height to the gridOptions containing div, and then call doLayout() (forPrint seems almost identical).
A concerning negative side effect to setting the height to fit all containing rows is that the rendering time in IE is quite awful. We are seeing this lag when setting the data source on page load and anytime we change column visibility to true.  I assume this is related to row virtualization and IE managing memory and drawing DOM elements quite poorly.
Example: With about 320 rows (height: 7000px) and ~20 columns the below calls takes about 2seconds to execute and an additional 3-6seconds for IE to stop drawing and give control back to the user.
$scope.gridOptions.columnApi.setColumnsVisible(['streetAddress', 'district', 'city', 'region', 'country', 'latitude', 'longitude', 'collapseAddressDetail'], true);
This is not scalable. With a test of 1000s of records we've seen nearly exponential slowness in IE; Chrome works great :)
It would ideal if the implemented solution was able to maintain the row virtualization when vertical scrolling is disabled. I believe this would eliminate slowness in IE, like when the grid has a reasonable height set.
Thanks!

This is an issue for our use-case as-well.  Essentially, we'd like the ability to toggle the grid's vertical scrolling on or off at-will.  The specific use-case is that we need the ability to scroll the page that the grid lives in up until the grid reaches the top of the browser window, then "sticky" the grid at the top so that we're using the full browser window for displaying our grid.
As mentioned by @rymk, we can achieve this behavior by setting the height of the outer div to a height greater than the height necessary to present our data in the grid, but this definitely impacts performance.
API access to enable or disable vertical scrolling of the grid's viewport would seem to solve this.

We also need this feature.
Also ag-grid should maintain the row virtualization when using the <html> element's (or any specified container element's) scrollbar.
Checkout react-virtualized's WindowScroller example
https://bvaughn.github.io/react-virtualized/#/components/WindowScroller

If we can have height as a property instead of defining it in css, it can be resolved by calculating it as gridHeight = headerHeight + (rows.length * rowHeight)

Hi,
Just to le you know that as of 10.1.0 this is available.
Please check the changelog
Thanks

@makinggoodsoftware , not sure how we have auto height. Can you please provide us an example for that or redirect to a link if that's updated in your documentation.

Changelog
Auto height grid

@makinggoodsoftware
I see the auto-height feature, but it does not appear to virtualize the rows like @6220119 brought up. Is this in the works, or just not a supported use case?

+1, I tried setting the height to 100vh - 100px but it's not working

@joincamp did you find a solution for this? Dealing with same issue

@hallids do you know if there is a way to solve this using CSS? I've been looking into the ag-grid link you provided however haven't found a solution yet.

Just add  in corresponding theme (in my case is balham);
.ag-theme-balham {     --ag-list-item-height: 20px;   height: 1200px  !important;   overflow: hidden  !important; }


Error on vim :Files invocation on remote machine

Hi I am running into an error when trying to use fzf in tmux+vim on an ssh session on a remote linux vm.
From within vim, I get the error:
Error running "fzf"  -m  --prompt ./working-directory --expect=ctrl-v,ctrl-x,ctrl-t --height=31 > /tmp/vsCQUfm/16

I have mapped
nmap <C-P> :Files<CR>
nmap <leader>b :Buffers<CR>

In my vimrc, which might be pertinent, but it works locally (OSX) and I get the same error running :Files directly. Happens in and outside of tmux.
Please lmk if you have any advice here, happy to look into this myself if you can point me to a place to start or an existing issue.
Love the program it's really improved my workflow dramatically working within a large tree. Thanks!

Category

[x] fzf binary
[x] fzf-tmux script
[ ] Key bindings
[ ] Completion
[x] Vim
[ ] Neovim
[ ] Etc.

OS

[x] Linux
[ ] Mac OS X
[ ] Windows
[ ] Windows Subsystem for Linux
[ ] Etc.

Shell

[x] bash
[ ] zsh
[ ] fish

Make sure that the command shown in the error message works correctly on your shell. I mean this one:
 "fzf"  -m  --prompt ./working-directory --expect=ctrl-v,ctrl-x,ctrl-t --height=31

aha
[~]> fzf  -m  --prompt ./working-directory --expect=ctrl-v,ctrl-x,ctrl-t --height=31
unknown option: --height=31

You know what,
I have an outdated binary on my vm.
Updating that fixed it, thanks! I just overlooked it when updating the plugin.

Yeah, so it's probably a good idea to run the install script whenever the repo is updated.
Plug 'junegunn/fzf', { 'do': './install --bin' }


6.x dropdown widget doesn't scroll with page

Notice that scrolling the page when the dropdown is open shows the dropdown does not scroll with the page. Presumably this is from absolutely positioning the dropdown, rather than inserting it into the dom and relatively positioning it.

CC @afshin

Fixed in #524


unable to upload a media content on deployed version

For some reason there is an error when uploading a media content https://sparkednext.app/admin/media-content and it also seems there's a lot of calls made to the server when we do this, we should minimise those calls and also have thumbnail as optional, we should not require it.

@OlivierJM  which are the multiple calls being made? Because for me it's only performing one call

@OlivierJM  Is this still the case for you?


Question Shift-Attack

Hey!
First of all great project!
I'm currently struggling to figure out (1) why the shuffling of the section content frees additional space and (2) which gradient descent method is used for crafting the actual payload (which is later inserted into the additional space).
Thank you for your efforts!
Cheers

Thank you very much for the quick answer!
Am I right in assuming that this space is generated the same way as in the extend-attack (by moving the offset which points to the section backwards and inserting the payload to keep the file structure intact)?

Thank you a lot for your help!!


UnicodeDecodeError when running wut

Hi,
I have installed it, set my Open API key and started a screen session. When i run wut i get UnicodeDecodeError:
> wut
Traceback (most recent call last):
  File "/home/jen/.local/bin/wut", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/home/jen/.local/lib/python3.13/site-packages/wut/wut.py", line 62, in main
    terminal_context = get_terminal_context(shell)
  File "/home/jen/.local/lib/python3.13/site-packages/wut/utils.py", line 290, in get_terminal_context
    pane_output = get_pane_output()
  File "/home/jen/.local/lib/python3.13/site-packages/wut/utils.py", line 139, in get_pane_output
    output = f.read()
  File "<frozen codecs>", line 325, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 37: invalid start byte

Thanks for pointing this out. Just pushed a fix. Try upgrading the package and let me know if it works now:
> pipx upgrade wut-cli

Wow that is fast :)
Works like a charm.
love the idea of this tool.


Allow custom Firewall rules before auto generated rules

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[x] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Describe the bug
Allow creating rules that apply before the automatically generated rules apply to e.g. drop something specific without logging, or make exceptions to the bogon rule.
To Reproduce
Steps to reproduce the behavior:

Enable filtering bogons on WAN
Have WAN configured to get its IP using DHCP.
Look into Live View and see that the firewall logs all DHCP packages on WAN as bogon.
Try to create a block rule for it with disabled logging.
Look into Live View again and see that it does not apply, as it is listed after the bogon rule.

Expected behavior
Ability to create rules before the automatically generated rules.
Describe alternatives you considered
Disabling the generation of the auto rule (depending on case it may not be easy/possible). And recreate it manually.
Screenshots

Environment
Software version used and hardware type, if relevant, e.g.:
OPNsense 23.1.5_4-amd64
FreeBSD 13.1-RELEASE-p7
OpenSSL 1.1.1t 7 Feb 2023
AMD Ryzen 7 3800X 8-Core Processor

System: Settings: Logging -> Log packets blocked by 'Block Bogon Networks' rules checkbox?

Disabling the generation of the auto rule

Block bogon networks checkbox on Interface settings?

yes, in this case I could (and ended up doing for now) disable the block bogon networks checkbox. But I'd prefer to keep that one and just add "an overwrite" before it.

yes, in this case I could (and ended up doing for now) disable the block bogon networks checkbox. But I'd prefer to keep that one and just add "an overwrite" before it.

Not going to happen, in most cases these rules belong to options set elsewhere (traceable with the "magnifier"), when rules need to be disabled for any reason, it should happen there. Preventing log spam is rather easy by not logging the default rules and adding your own on top.

to keep that one and just add "an overwrite" before it

IMHO, allowing this (adding user rules with highest prio) in the GUI can(will) lead to users self-locking or other bad things.

lead to users self-locking or other bad things.

I'd also be fine with enabling this capability in the advanced section, similar to how disabling the anti-lockout rule works.

Tbh, I'd also settle for only being able to create log/no-log rules before it. I mainly want to be able to fine-tweak the logging behavior without disabling it entirely.


Adding CSS for the adoc files

I've added CSS to the custom.css file  to make the adoc files look OK.

Added asciidoc configuration to hugo:  use rouge, use icons for callouts/admon, add anchors to titles
Also allowed hugo to use the $GEM_PATH env variable if needed. Without this asciidoctor didn't work fine locally for me, but I can take it out if needed.
Added CSS for tables, admonitions, headers, callouts, rouge highlighting, etc, etc.
Corrected some style issues on some of the adoc files.
Commented the intro of the assembly.

Note: Some of the CSS is still using Patternfly variables. I was not sure if we wanted them or not.  I'd like to discuss this on our meeting.
Note 2:  The colour scheme isn't exactly the same that we have on markdown (eg, the code blocks aren't black) but I suspect that is OK since we're converting those files.
Note 3:  We need to add the rouge gem to the build machines, and remove asciidoctor config from the git pipeline.
Note 4:  I'll make another PR for the footer and the sticky navigation, though the CSS is already in this change. We should get clarity about what needs to be on the footer (terms and conditions, etc, legal...)

Had a look at the output. It looks great! Consider this LGTM.

@danmacpherson  I don't have write permissions to the repo-- do you mind merging this for me please? Thank you :D !


Cleaning up artifacts folder failing with System.OperationCanceledException exception

Agent Version and Platform
Version of your agent? 2.136.1
OS of the machine running the agent? Windows
VSTS Type and Version
VisualStudio.com
If VisualStudio.com, what is your account name? https://marketingops.vssps.visualstudio.com/
What's not working?
Cleaning up artifacts directory is failing with "System.OperationCanceledException: The operation was canceled" exception. This exception is not being retried currently.
Here's the failure stack:
[2018-07-24 14:03:42Z ERR  DeploymentJobExtension] Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.ArtifactDirectoryCreationFailedException: Failed to create Release artifact directory 'C:\VSTSAgent_work\r1\a'. ---> System.OperationCanceledException: The operation was canceled.
at System.Linq.Parallel.QueryOperator1.GetOpenedEnumerator(Nullable1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings)
at System.Linq.Parallel.ForAllOperator1.RunSynchronously()    at System.Linq.ParallelEnumerable.ForAll[TSource](ParallelQuery1 source, Action`1 action)
at Microsoft.VisualStudio.Services.Agent.Util.IOUtil.DeleteDirectory(String path, Boolean contentsOnly, Boolean continueOnContentDeleteError, CancellationToken cancellationToken)
at Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(String directoryPath, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(String directoryPath, CancellationToken cancellationToken)
at Microsoft.VisualStudio.Services.Agent.Worker.Release.RetryExecutor.Execute(Action action)

@ericsciple / @TingluoHuang - is IOUtil.DeleteDirectory supposed to throw System.OperationCanceledException?

@GitHubSriramB - I think it can if the job is cancelled and there's a cancellation token.
https://msdn.microsoft.com/en-us/library/system.operationcanceledexception(v=vs.110).aspx
"The exception that is thrown in a thread upon cancellation of an operation that the thread was executing."
Ting can confirm.

@GitHubSriramB if your build/release is canceled, we fire all cancellation tokens in the worker process tree to stop running threads/tasks ASAP, i assume that is when the OperationCancel exception will throw.

@GitHubSriramB i don't think we want to retry IO operation on cancellation, the worker process has a limited time to exit after receive cancellation message, if the IO operation's retry takes longer then that, the agent will just force kill the worker process.


Docker build triggered every time

Hi everyone and thanks for your work,
So we are using a custom docker registry, running on the same network. Every time I launch the same repository, a build is triggered on the k8s node, even if it was already built before.
Given the documentation, if the github repository hash is the same, binderhub should not trigger a new build on the k8s node. It seems like the built image is never found by jupyter hub.
Any thoughts ?
k8s version : 1.17.0
binderhub version : v0.2.0-n121.h6d936d7
config.yaml
# BinderHub config
config:
  BinderHub:
    hub_url: https://*/jupyter
    use_registry: true
    image_prefix: my-registry.com/${binder-url}-

It sounds like your BinderHub can't find the image in the registry it is configured to use.
Are there (error) messages in the binder pod logs?
Which steps of https://binderhub.readthedocs.io/en/latest/setup-binderhub.html#preparing-to-install did you follow when you setup your registry?

Thank you,
So I followed this.
My secrets.yaml has :
jupyterhub:
  hub:
    services:
      binder:
        apiToken: *
  proxy:
    secretToken: *
registry:
  url: "my_registry.com"
  username: "*"
  password: "*"

Here are the logs from the binder pod. As you can see, the reference from my repo is indeed cached, but just after a build is triggered..
[I 200309 15:27:31 repoproviders:778] Using cached ref for https://api.github.com/repos/ltetrel/binder-tuto/commits/master: dc5e69664f99e22133a6e8dfc247202af5653dd2
[I 200309 15:27:31 build:296] Started build build-ltetrel-2dbinder-2dtuto-f9e17d-dc5e69
[I 200309 15:27:31 build:298] Watching build pod build-ltetrel-2dbinder-2dtuto-f9e17d-dc5e69
[I 200309 15:27:35 build:329] Watching logs of build-ltetrel-2dbinder-2dtuto-f9e17d-dc5e69
[I 200309 15:27:46 builder:496] Launching pod for https://github.com/ltetrel/binder-tuto: 1 other pods running this repo (3 total)
[I 200309 15:27:46 launcher:162] Creating user ltetrel-binder-tuto-nstlp0ew for image binder-registry.conp.cloud/binder.conp.cloud-ltetrel-2dbinder-2dtuto-f9e17d:dc5e69664f99e22133a6e8dfc247202af5653dd2
[I 200309 15:27:46 build:357] Finished streaming logs of build-ltetrel-2dbinder-2dtuto-f9e17d-dc5e69
[I 200309 15:27:47 launcher:209] Starting server for user ltetrel-binder-tuto-nstlp0ew with image binder-registry.conp.cloud/binder.conp.cloud-ltetrel-2dbinder-2dtuto-f9e17d:dc5e69664f99e22133a6e8dfc247202af5653dd2

Ok I found what happened, I was wrong with the image-prefix.
Instead of putting image-prefix: my-registry.com/<some-project-name>/<prefix>- as descripted in the important note here, I had image-prefix: my-registry.com/<prefix>-.
It is now working fine, :+1:


Worker R2 example not working as expected in Chrome with range request

Example URL(s)
https://developers.cloudflare.com/r2/examples/demo-worker/
https://distmp4.armserial.workers.dev/out.mp4
Actual Behavior
return error 500
curl 'https://distmp4.armserial.workers.dev/out.mp4' \
  -H 'authority: distmp4.armserial.workers.dev' \
  -H 'accept: */*' \
  -H 'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' \
  -H 'cache-control: no-cache' \
  -H 'pragma: no-cache' \
  -H 'range: bytes=1-' \
  -H 'referer: https://distmp4.armserial.workers.dev/out.mp4' \
  -H 'sec-ch-ua: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -H 'sec-fetch-dest: video' \
  -H 'sec-fetch-mode: no-cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36' \
  --compressed

Expected Behavior
return 206 and file content
Additional information
{
  "outcome": "exception",
  "scriptName": "distmp4",
  "exceptions": [
    {
      "name": "Error",
      "message": "get: The requested range is not satisfiable (10039)",
      "timestamp":<PHONE_NUMBER>348
    }
  ],
  "logs": [
    {
      "message": [
        "GET object out.mp4: https://distmp4.armserial.workers.dev/out.mp4"
      ],
      "level": "log",
      "timestamp":<PHONE_NUMBER>256
    }
  ],
  "eventTimestamp":<PHONE_NUMBER>254,
  "event": {
    "request": {
      "url": "https://distmp4.armserial.workers.dev/out.mp4",
      "method": "GET",
      "headers": {
        "accept": "*/*",
        "accept-encoding": "gzip",
        "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
        "authority": "REDACTED",
        "cache-control": "no-cache",
        "cf-connecting-ip": "<IP_ADDRESS>",
        "cf-ipcountry": "UA",
        "cf-ray": "769e9305dc6777bc",
        "cf-visitor": "{\"scheme\":\"https\"}",
        "connection": "Keep-Alive",
        "host": "distmp4.armserial.workers.dev",
        "pragma": "no-cache",
        "range": "bytes=1-",
        "referer": "https://distmp4.armserial.workers.dev/out.mp4",
        "sec-ch-ua": "\"Google Chrome\";v=\"107\", \"Chromium\";v=\"107\", \"Not=A?Brand\";v=\"24\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"macOS\"",
        "sec-fetch-dest": "video",
        "sec-fetch-mode": "no-cors",
        "sec-fetch-site": "same-origin",
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36",
        "x-forwarded-proto": "https",
        "x-real-ip": "<IP_ADDRESS>"
      },
      "cf": {
        "longitude": "30.74740",
        "latitude": "46.48880",
        "tlsCipher": "AEAD-CHACHA20-POLY1305-SHA256",
        "continent": "EU",
        "asn": 13335,
        "clientAcceptEncoding": "deflate, gzip",
        "country": "UA",
        "tlsClientAuth": {
          "certIssuerDNLegacy": "",
          "certIssuerSKI": "",
          "certSubjectDNRFC2253": "",
          "certSubjectDNLegacy": "",
          "certFingerprintSHA256": "",
          "certNotBefore": "",
          "certSKI": "",
          "certSerial": "",
          "certIssuerDN": "",
          "certVerified": "NONE",
          "certNotAfter": "",
          "certSubjectDN": "",
          "certPresented": "0",
          "certRevoked": "0",
          "certIssuerSerial": "",
          "certIssuerDNRFC2253": "",
          "certFingerprintSHA1": ""
        },
        "tlsExportedAuthenticator": {
          "clientFinished": "98e0bbd779eb1c364beb01a69808bf4c7de5c448e3bf31784c8f8affe2747fed",
          "clientHandshake": "10ca631b5d30b3cf48884a5b40369cdedba78b8a92e45e7f0d4eb7fd3d8863d4",
          "serverHandshake": "40797941847616ef0a73a161747fc1cd0b50b91b1d8bdfd45841d084c5481cd7",
          "serverFinished": "b6e5eb2c7aaed225c2a5b6119b6096458829ab8b94f7f2206cb65dabf92a2616"
        },
        "tlsVersion": "TLSv1.3",
        "colo": "KBP",
        "timezone": "Europe/Kyiv",
        "city": "Odesa",
        "edgeRequestKeepAliveStatus": 1,
        "requestPriority": "weight=16;exclusive=0;group=0;group-weight=0",
        "httpProtocol": "HTTP/2",
        "region": "Odessa",
        "regionCode": "51",
        "asOrganization": "Cloudflare",
        "postalCode": "65066"
      }
    },
    "response": {
      "status": 500
    }
  },
  "id": 0
}

probably related to how chrome sends range requests. Safari is ok.

We were unable to reproduce this. Apologies for the delayed response. Closing this!

Some more context, there was an issue in the bindings with accepting ranged headers, and  this was fixed in december 2022.


Merge commits from v0.7.2 + minor edits in pyproject.toml

Hi Christopher, this is a (1) merge of changes from master branch ahead and (2) minor edits in pyproject.toml:

I added your name there. Please change the email address if that's not the preferred one you want to use.
The required python version is set to 3.10 (to align with MDTF requirement to avoid installation conflicts on their side)

Codecov Report
All modified lines are covered by tests :white_check_mark:
:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
:loudspeaker: Thoughts on this report? Let us know!.

Hi Clare! That's the right email. I should have that account for at least another year.
If you don't mind though, I'd rather rebase #73 onto master and cherry pick your change to the toml file instead of merging master into the branch to get it up to date and then merging the branch back into master.

@chpolste Rebase works too! In that case, I will close this pull request and let you take care of it then! Thanks!


Update AWS Cloud Provider docs re: downtime

Related Issues

Summary
From Slack:

AWS cloud provider docs are definitely looking better than the state I left them in so I thank you for that, I do have a suggestion though. On https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/kubernetes-clusters-in[…]-of-tree-cloud-provider/migrate-to-out-of-tree-amazon, the following line:

If it's acceptable to have some downtime, you can switch to an external cloud provider, which removes in-tree components and then deploy charts to install the AWS cloud controller manager.

reads like it's optional. I think I wrote it initially but now that I'm looking at it with fresh eyes, it doesn't really make sense. The link is for setting up the external cloud-provider on a fresh cluster, so I feel like the sentence should read something like:

If it's acceptable to have some downtime during migration, you can follow the cluster external amazon cloud provider documentation which outlines how to configure the out of tree provider for a newly provisioned cluster. There will be a period where specific cloud-provider functionality is unavailable within your cluster, as there will effectively be no cloud-provider running until the out of tree provider is functional.

Or something to that effect.
In addition, it kind of makes it seem like the only thing needed is to enable leader-migration, but that doesn't really make sense in this context because one would still need to follow all the RKE2 steps from https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/kubernetes-clusters-in-rancher-setup/set-up-cloud-providers/amazon#usin[…]ider. Not suggesting anything specifically, I'm fine if we just duplicate the docs to the migration page or if we link and say "here is what must be done before", then link to the steps, and then "here is what must be done afterwards" or something. WDYT?

Closing as we still have an open related issue


Added an option to disable scrolling on the body.

I wanted to disable the body scroll bounce when the export is viewed on an iPad.
This pull request adds an option to do that. The setting defaults to the old behavior (scroll bounce enabled). I tested the code with the "fixed_scrolling.sketch" test file: the body does not scroll, the artboard contents still do.
Thank you for considering this pull request and thanks for this great plug-in.

Pardon my ignorance, but would overscroll-behavior: none (details) solve this?

That is a good point—based on the description, this seems to be the clean solution!
Unfortunately, iOS (12.3.1) does not respect this css-rule (Can I Use). I tried this a moment ago as a property on body and can confirm, that it does not solve (my) problem.

Sorry for the huge delay... since the only difference is position: fixed on .prototype-container i think this is safe for ALL exports, hence no need for the checkbox. i'm also including some more improvements for iOS exports (full-bleed exports) that hopefully should make prototypes look great on iPhone X and similar devices

Just got a chance to test drive—looking good!


Correcting build status indentation

It seems like these are your first steps on GitHub, so I‘m gonna merge this although it’s kinda tiny.
Thanks for the contribution and welcome on board!


Bug fix for path save

Coverage increased (+0.02%) to 90.094% when pulling 1b5d27ead98eccf74ef04cc397782f33e6092f27 on jaivigneshvenugopal:bug_fix_for_path_save into 970674fa0ea13ccc15e5fff8b7102a05ccf745ee on CS2103AUG2017-T17-B1:master.


Update Hero component with new features

allow user to align the content, left, center or right
allow users to set curved edges to the Hero

to match this design please
https://www.figma.com/file/U8bUpFlNkqVyCmoB701Y3u/[Developer]Moralis-Dashboard-Design?node-id=7%3A1779056

solution here