Non-Compliant CloudFront Distribution Using Default Domain Name

Hi,
When I instantiate a default CloudFront distribution using the default domain name I see the error: [Error at /ss-stickb/ui/NextSite/Distribution/Distribution/Resource] AwsSolutions-CFR4: The CloudFront distribution allows for SSLv3 or TLSv1 for HTTPS viewer connections.. This is happening because of the line below:
https://github.com/cdklabs/cdk-nag/blob/16dacb9ee29ca5ff91d785bbd57a04c87d5316b9/src/rules/cloudfront/CloudFrontDistributionHttpsViewerNoOutdatedSSL.ts#L23
Is this intended behavior? I would expect it to be secure behavior to use default CloudFront domain.

Yes. The extended explanation on that rule has more information

Vulnerabilities have been and continue to be discovered in the deprecated SSL and TLS protocols. Help protect viewer connections by specifying a viewer certificate that enforces a minimum of TLSv1.1 or TLSv1.2 in the security policy. Distributions that use the default CloudFront viewer certificate or use 'vip' for the SslSupportMethod are non-compliant with this rule, as the minimum security policy is set to TLSv1 regardless of the specified MinimumProtocolVersion

@dontirun, thank you for explaining. Where is the extended explanation?

Enabling the verbose flag will show the extended explanations for all rules. They're also all listed on the
RULES file
Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));


Set() ignores SetOptions.PrevExist with SetOptions.Dir = true

Trying to ensure, idempotently, that a directory exists with this:
package main

import (
    "log"
    "time"

    "github.com/coreos/etcd/Godeps/_workspace/src/golang.org/x/net/context"
    "github.com/coreos/etcd/client"
)

func main() {
    cfg := client.Config{
        Endpoints:               []string{"http://<IP_ADDRESS>:2379"},
        Transport:               client.DefaultTransport,
        // set timeout per request to fail fast when the target endpoint is unavailable
        HeaderTimeoutPerRequest: time.Second,
    }
    c, err := client.New(cfg)
    if err != nil {
        log.Fatal(err)
    }

    kapi := client.NewKeysAPI(c)

    // build cidrd branch, if it doesn't already exist
    opts := client.SetOptions{Dir: true, PrevExist: client.PrevIngore}
    resp, err := kapi.Set(context.Background(), "cidrdy", "", &opts)

    if err != nil {
        log.Fatal(err)
    } else {
        log.Print(resp)
    }
}

If the directory doesn't exist, the directory is created:
Bryans-MBP:etcplayground bryan$ go run play.go
2015/09/21 16:11:55 &{set {Key: /cidrdy, CreatedIndex: 57, ModifiedIndex: 57, TTL: 0} <nil> 57}

On the next run, the directory exists, but the Set() function throws an error:
Bryans-MBP:etcplayground bryan$ go run play.go
2015/09/21 16:12:00 102: Not a file (/cidrdy) [57]
exit status 1

I expect when PrevExist==client.PrevIngore, the Set() function should not fail when I try to Set() an existing directory.

This appears to only affect root-level nodes...
For example, trying to ensure the "/cidrdy" directory exists fails with the above message.
However, if "/cidrdy" exists, and I then try to ensure a "/cidrdy/classes" directory exists, the Set() function seems to honor PrevExist==client.PrevIgnore

I believe this is expected behavior, you cannot update an existing directory (other than changing the TTL). If you want to ensure that a directory exists as a single command (Create or NOOP) you could get close by performing a SET on a short lived key underneath the directory you want to ensure is created.
# Ensures that cidrdy exists as a directory
curl -L http://<IP_ADDRESS>:4001/v2/keys/cidrdy/auto_expire -XPUT -d ttl=0

Thanks for the feedback @cchamplin
The purist in me is frustrated by the lack of "elegance" in this. :)  It's strange to think that I have to perform another SET just to prove the directory exists...not to mention, what if my subsequent SET call fails for some reason NOT related to the directory's existence...my code would falsely assume the directory doesn't exist, even though it might.  Ugh!
Anyway, thank you for the recommendation.  I'll work with it, but I suggest we (the etcd community!) come up with a better solution for idempotent directory creation.

@stensonb
As @cchamplin mentioned, this works as intended.
Set means delete and then create a new one. So set a key means to delete the old key and create a new one.
Set does not work with directory since you cannot simply remove a non-empty directory. That is dangerous.
This is probably not going to change for v2 api. In v3 api, we do not have a concept of directory.


adding tooltips to display full project names

Fixes #
Describe the changes you have made in this PR -
Screenshots of the changes (If any) -
before::
problem1:

hidden words are getting partially displayed
problem2:
there is no way to see full project name , overflow is hidden
After:
fix1:making height of the div containing text upto end fo card so that partial displaying is eliminated and overflown words are completely hidden

fix2: adding tooltips to show full project name

Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

@pavanjoshi914 no matter to what extent we increase the card height, there will still be circuit names which would exceed it. A better fix can be tooltip on hover which shows the complete circuit name.
As for the Buttons on About Page, keeping them left aligned was intentional. No change required.

I agree with Aayush. We can show "..." for longer names and on hovering, the tooltip displaying the full name would be a better solution.
Problem 2: Yes they are kept at left intentially because they aren't action buttons requiring primary focus but infact the supporting docs.

@aayush-05 @nitin10s
because of small size of block  overflowed words are getting partially displayed which are polluting flow and cleanness of UI
so I just increased height of block  upto to the end of card so that overflowed words gets completely hidden and partial displaying is avoided

due to increased size of block overflowed words will be completely hidden and there will be cleanness

@aayush-05  To display fullname using tooltip is a good idea I would like to implement it in website

Also in detailed view of projects, there is overflow restriction

should we allow to display the full name of project like below ?

Also, add this tooltip to user circuit cards (visible on dashboard). Great work so far

Thanks @aayush-05

@aayush-05  circuit cards paragraph visible at dashboard are wrapped in users-card-name , i was thinking of wrapping them in circuit-card-name as applying tooltip there we will end with almost similiar like circuit card name class , this will also  avoid lot of duplication of code also we can remove users-card-name class styles to make user.scss more lighter

Not a good idea (they have differing width/heights and locations). Let us keep those components separate.
To avoid duplication, extract tooltiptext class separately in components.scss and use that same class with users-card as well. Then only duplication will be for :hover selector (not a huge deal with only 2 lines of code).
Also, make sure you are using Sass pseudo selectors

Please, add updated screenshots too after making changes

Add a little padding to left and right of tooltip. Also, maybe having a black/dark grey background for tooltip would look more good.

Not a good idea (they have differing width/heights and locations). Let us keep those components separate.
To avoid duplication, extract tooltiptext class separately in components.scss and use that same class with users-card as well. Then only duplication will be for :hover selector (not a huge deal with only 2 lines of code).
Also, make sure you are using Sass pseudo selectors

sounds good !! I will do it  this way

@aayush-05 is this PR ready to merge?

@pavanjoshi914 have you deleted this branch?

@pavanjoshi914 have you deleted this branch?

Actually due to some reasons I reforked the repo few days ago sorry for the inconveniences...
Shall I make new PR for this to continue the review....

Yes, please. I don't think we can merge code from this PR (since the branch doesn't exist now)

Yes, please. I don't think we can merge code from this PR (since the branch doesn't exist now)

we can merge this PR. Should I merge it?
Also @pavanjoshi914 if you want to make a new PR, you can do this
git checkout -b pavanjoshi914-some-UI-updates master
curl -L https://github.com/CircuitVerse/CircuitVerse/pull/1681.patch | git am -3

Yes, please. I don't think we can merge code from this PR (since the branch doesn't exist now)

we can merge this PR. Should I merge it?
Also @pavanjoshi914 if you want to make a new PR, you can do this
git checkout -b pavanjoshi914-some-UI-updates master
curl -L https://github.com/CircuitVerse/CircuitVerse/pull/1681.patch | git am -3

I think I have completed the desired work.. @aayush-05 please review if any improvements needed I will make new PR and new commits from it..

we can merge this PR. Should I merge it?

Code looks fine. I am unable to look at how it looks since gitpod is unable to setup this PR (because the branch is not there).
I think we can merge this. Can add fixes separately if required @satu0king


assert fail when build a 9-patch png file.

Information

Apktool Version (apktool -version) - 2.40
Operating System (Mac, Linux, Windows) - win10
APK From? (Playstore, ROM, Other) -  playstore

Stacktrace/Logcat
W: Program: C:\Users\Erik\AppData\Local\Temp\brut_util_Jar_10176546015605450442.tmp
W: File: E:\test\aapt\aapt-3-master\aapt-v24\src\Images.cpp, Line 811
W:
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 3)): [C:\Users\Erik\AppData\Local\Temp\brut_util_Jar_10176546015605450442.tmp, p, --forced-package-id, 127, --min-sdk-version, 16, --target-sdk-version, 28, --version-code, 815, --version-name, 3.37.0, --no-version-vectors, -F, C:\Users\Erik\AppData\Local\Temp\APKTOOL11594291946795145807.tmp, -0, arsc, -0, res/drawable/var_bg_black.9.png, -0, res/drawable/var_bg_panel_side_shadow.9.png, -0, res/drawable/var_bg_white.9.png, -0, res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png, -0, png, -0, ........
I build a aapt.exe use the code from https://github.com/iBotPeaches/platform_frameworks_base .
I build sucess after I comment the line checkNinePatchSerialization(&imageInfo.info9Patch, unknowns[p_index].data); at line 1253 in file Images.cpp
My aapt version code base: https://github.com/eriklu/aapt-apktool_v28
the 9-patch file looks normal in android studio.

I changed the exp
Include stacktrace here

Steps to Reproduce

apktool

Frameworks
If this APK is from an OEM ROM (Samsung, HTC, LG). Please attach framework files
(.apks that live in /system/framework or /system/priv-app)
APK
If this APK can be freely shared, please upload/attach a link to it.
Locus Map has a free version can be download from play studio or amazon .
The download url is：https://www.locusmap.eu/download/
Questions to ask before submission

Have you tried apktool d, apktool b without changing anything? Yes
If you are trying to install a modified apk, did you resign it?  build fail
Are you using the latest apktool version?  Yes

I patched the aapt.exe straightly, and it is built successful. I think I have done something wrong when I built aapt.exe from source. I have a biginer with compiling android source code. Maybe misused or ingored a important DEFINE. I don't know.


[cluster-test] increase compat test deadline for wait_json_rpc only

Motivation
Increase the deadline for compat test's batch update. Also move it so that it's only measuring time for wait_json_rpc
Have you read the Contributing Guidelines on pull requests?
(Write your answer here.)
Test Plan
(Share your test plan here. If you changed code, please provide us with clear instructions for verifying that your changes work.)
Related PRs
(If this PR adds or changes functionality, please take some time to update the docs at https://github.com/libra/website, and link to your PR here.)

@bors-libra r=andll

:pushpin: Commit d38b49e has been approved by andll

:hourglass: Testing commit d38b49e6a92a38dd7acf6f5578f39b9ad4fd6a61 with merge 39f786ebe818f1c0f19707adc82a18b80daf5466...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: andll
Pushing 39f786ebe818f1c0f19707adc82a18b80daf5466 to master...


Update MeasureTest.java

Changed test function name from "max" to "measure". I reckon it's more straightforward and less misleading considering that in the "Measure" class we already have a function called "max".

OK. Makes sense!


Remove StoredCodeCommitment wrapper

Context
Now that the jmt supports arbitrary serialization we can remove the StoredCodeCommitment wrapper from the state machine.

Closed by #838


Fix appveyor's cache

https://ci.appveyor.com/project/ozkriff/zemeroth/build/1.0.28/job/8cndcdxka0xpbprs#L104
Updating build cache...
Cache 'target' - Uploading (73,418,064 bytes)...100%Error uploading cache entry to the cache storage: The maximum cache size of 1,000 MB will be exceeded.
Cache 'C:\Users\appveyor\.cargo\registry' - Up to date
Build success

See https://www.appveyor.com/docs/build-cache/#cleaning-up-cache (?)

Attempted to re-enable the cache in https://github.com/ozkriff/zemeroth/pull/125

Nnnope, still getting "The given key was not present in the dictionary." errors: https://ci.appveyor.com/project/ozkriff/zemeroth/build/1.0.199/job/ibjchxplb3f6x78m
:(

http://help.appveyor.com/discussions/problems/8572-cache-is-broken

\o/

Feodor Fitsner: Cache size is limited per account, not individual project, so probably cache is taken by other projects under your account?

Yay, deleting old projects caches fixed zemeroth's caching!


Add option to customize continuous silence/next sentence time?

From the README:
...
// [Default: false] Continuous recognition.
  // If false:
  //    - on iOS 17-, recognition will run until no speech is detected for 3 seconds.
  //    - on iOS 18+ and Android, recognition will run until a final result is received.
  // Not supported on Android 12 and below.
  continuous: true,
...

Would it be possible to variabilze this into milliseconds, so that it could be set? In some tests, I've found that fast speakers that don't pause very much during speech cause a very long sentence to be synthesized and/or it the results event isn't fired for a long time.
It would be helpful to be able to either statically set a max results time (like 10 seconds) and also set the max silence between next sentence time.

Hi @elongstreet88
Yep, that's on the cards to implement however I'm on the fence whether this should also modify the Android-equivalent timers (which they don't recommend you change). Right now I'm intending to implement two options for timer configs:

minimum input length time (which corresponds to Android's EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS)
max time to wait for no speech detection before stopping (which corresponds to Android's EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS)

I'll also have to research what defaults these are at least on Android com.google.android.tts / com.google.android.as so that it behaves similar on iOS, but I don't think this is documented anywhere so it'll have to be a guess.


[ML] Fix docstring typo

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-ai-ml


Implement Roslyn naming rules

Warning: This PR is a bit large.
I suggest going through commit-by-commit as each one is an individual category of change, and I've flagged when the commit was done with the fixer rather than me actually typing.
This is really just a thinly-veiled attempt at getting my name higher up the contributor list. I'm coming for you Nowak!

One piece I don't 100% agree on is internal fields being pascal cased because more often than not an internal fields is only internal for testing purposes and wouldn't want to encourage user off those fields otherwise

So I think this is one of the benefits of this naming scheme: It's supposed to make you not agree with it. Yes it should be only test code that accesses the internal fields, but there is no guarantee that's the case, so when you see a PascalCase field you know you have to be careful. The solution to this, IMO, is not to change the naming rules but rather to create explicit internal test accessors and not use internal fields.

explicit internal test accessors and not use internal fields.

Totally fair!


problems with text in the latest release

metro:
    data: { source: mapzen, layer: pois}
    filter: { $zoom: { min: 11} }
    ufterzoomfilter:
        filter:
            is_subway: 'true'
            kind: station
        draw:
            icons2:
                priority: 2
                size: 16px
                interactive: true
                visible: true
                sprite: metro
        labels:
            filter: {  $zoom: { min: 12 } }
            draw:
                text-blend:
                    visible: true
                    text_wrap: false
                    move_into_tile: false
                    anchor: [bottom]
                    offset: [0, 17px]
                    priority: 3
                    font:
                        family: Helvetica
                        size: 10px
                        fill: blue
                        stroke: { color: white, width: 3 }

I have such style and it works perfectly in 0.5.1! but in 0.6.0 I don't see text

With recent Tangram versions it’s better to “nest” or “attach” the text
directly to the point renderer – for you this would mean something like:
icons2:
…
text:
…
On Mon, Apr 17, 2017 at 3:29 AM, ivangorelow<EMAIL_ADDRESS>wrote:

metro:
data: { source: mapzen, layer: pois}
filter: { $zoom: { min: 11} }
ufterzoomfilter:
filter:
is_subway: 'true'
kind: station
draw:
icons2:
priority: 2
size: 16px
interactive: true
visible: true
sprite: metro
labels:
filter: {  $zoom: { min: 12 } }
draw:
text-blend:
visible: true
text_wrap: false
move_into_tile: false
anchor: [bottom]
offset: [0, 17px]
priority: 3
font:
family: Helvetica
size: 10px
fill: blue
stroke: { color: white, width: 3 }
I have such style and it works perfectly in 0.5.1? but in 0.6.0 I don't
see text
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tangrams/tangram-es/issues/1457, or mute the thread
https://github.com/notifications/unsubscribe-auth/AA0EOwvl62p1d2IBAMSSJioOH2t0H6JNks5rwz7tgaJpZM4M_C4f
.

The first filter should read is_subway: true (without quotes). The value for the is_subway tag in the tile data is a Boolean value, not a string. Tangram-es used to incorrectly treat these as the same type of data.


look into whether it would make any sense to support ads

I've never used the Roblox ads feature, so I don't know if this makes any sense or not, but it's worth looking into.

Lumping the "sponsoring" feature in with this question


Some fixups.

Untested yet, as I had to cut&paste from some virtual windows vnc console. Feel free to review und improve!

Added also some README fixups.


Implemented string functions, apply and group by parsing and processi…

Dear Developers!
Basic functionalities for groupBy inside an apply function, this follows the standards of odata v4.
startswith, endswith, contains string functions are also working now.
In case of any remarks please contact my college:
<EMAIL_ADDRESS>Best regards,
Gergo Pali

Great to see the contributed functionality. We have two points:

On a lot of lines of code there is a copyright statement 'Copyright (c) 2016 All rights reserved by Siemens AG' which is in conflict with the existing copyright, please remove these.
There is currently a compilation failure on the code, can this be resolved with latest code from master?

It is a pitty that text filtering options are not working. What can be done to get the changes proposed by Gerdo Pali through?

First of all sorry for the bad code quality and the lot of copyright text.
This development was a part of my former company's ongoing project, where
we decided to choose your library.

We was waiting for their approval for 2 months, by the time they finally
gave a yay on the pull request the master branch has already contained a
lot of change.
Therefore we again had to merge the code and send it to the OSS department
for approvement, and we choosed not to start the whole circus again.
In any further questions please contact my ex-colleague:
<EMAIL_ADDRESS>2016-12-22 22:14 GMT+01:00 ValdisProdnieks<EMAIL_ADDRESS>
It is a pitty that text filtering options are not working. What can be
done to get the changes proposed by Gerdo Pali through?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/sdl/odata/pull/60#issuecomment-268891843, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AUFJBJanGh8m7omG5-xoKw61MbemRr1Qks5rKugrgaJpZM4K1ba7
.

Hi Gergo Pali,
Can you please let us know how you are planning to proceed on this PR ? Are you planning to resolve the conflicts and other PR comments or want any other contributor to pickup from here and complete the changes ?
Regards,
Vinay

Please pickup, we don't have the necessary resources to continue the
development.
2016-12-23 10:29 GMT+01:00 vinayknl<EMAIL_ADDRESS>
Hi Gergo Pali,
Can you please let us know how you are planning to proceed on this PR ?
Are you planning to resolve the conflicts and other PR comments or want any
other contributor to pickup from here and complete the changes ?
Regards,
Vinay
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/sdl/odata/pull/60#issuecomment-268962639, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AUFJBFGWwhZfepahMwsbEXmDuO2U0_bnks5rK5RggaJpZM4K1ba7
.


remove placeholders from introduction doc

Those aren't placeholders. It is intentional content. I believe they are meant to be a lighthearted way of indicating that 'Context' is the only term that needs introducing.

This is a least the fourth time I've seen someone asking about this. Should we make a note or use a sarcasm font or something? :) It's funny, but seems to be confusing new folks.

We could pull the entries and add "That's it!" after the list.

IMHO the humor doesn’t work here. It comes across as condescending. It’s definitely not helpful.

A few years ago, Rich Bowen gave a talk @ ApacheCon about documentation and communities. He used Python as an example of a community where the Monty Python jokes are so pervasive, it appears that they have become the focus of the documentation instead of the actual subject (the code, etc.).
He suggested that humor, while intended to be fun, lighthearted, etc. often comes across as mean-spirited or condescending, and/or introduces confusion especially to those who do not understand (a) the language (e.g. English), (b) that they are in fact jokes or (c) the content of the jokes (e.g. unfamiliar with Monty Python).
Basically, this kind of thing doesn't have a place in high-quality documentation.
This example is relatively benign, but there are probably other places where the humor is at least distracting if not worse.

References:
https://apacheconna2015.sched.com/event/2P6d/rtfm-write-a-better-fm-rich-bowen-apache-software-foundation
http://feathercast.apache.org/podcasts/ApacheConNA2015/Monday/Community/Monday_Community_04 - Rich Bowen - RTFM - Write a Better FM.mp3
http://drbacchus.com/rtfm-write-a-better-fm-recording/


Run winget upgrade at user logon and prompt user for action to run winget upgrade -all or not

Run winget upgrade at user logon
Display only winget found new packages to upgrade
Ask user yes/no to run winget upgrade -all with administration privileges.

I’m not sure what the ask is here. Are you adking that this be a feature added to winget? If so, can you provide more clarity around what functionality is missing that you would like to see added?

Running a command at logon isn’t part of winget, it is handled through the Windows Task Scheduler, and you can select a command or program to run at user logon.
To display just the message “Winget found new packages to upgrade” would require checking the length of the output from winget upgrade, or possibly the text. I believe this can be done fairly easily in a batch script
As for the prompt, I could see a request to prompt if a user wishes to upgrade all packages after running winget upgrade but I’m not sure how I would feel about that being the default behavior, especially for scripted / non-interactive scenarios. Again, this seems very easy to do with a custom batch script though.
If my interpretation is accurate, and your post is simply describing something you would like to use winget to do, I think the best recommendation I can give is to create a simple batch script that -

Runs winget upgrade and stores the output to a variable
Checks to see if that variable matches specific text indicating upgrades were found
Use an if statement to determine whether or not user input is required

and then set the batch script to be run on user logon

Even if this feature is to be implemented, there is https://github.com/Romanitho/Winget-AutoUpdate


refactor: prefer promisify to pify

Since this only works for nodejs 8 and up, we can drop pify and just use util.promisify.

Codecov Report

Merging #81 into master will decrease coverage by 0.08%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #81      +/-   ##
==========================================
- Coverage   78.57%   78.49%   -0.09%
==========================================
  Files           4        4
  Lines         266      265       -1
  Branches       41       41
==========================================
- Hits          209      208       -1
  Misses         57       57

Impacted Files
Coverage Δ

src/checker.ts
72.9% <100%> (-0.18%)
:arrow_down:

src/config.ts
100% <100%> (ø)
: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 d15b876...5e51e74. Read the comment docs.


Some crates.io hashes cannot be found in Cargo.lock

I'm running into this:
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/qc74kg08frlgdjb5fjmwgvb0snpf45lx-unarchiver
source root is unarchiver
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
++ crate2nix generate -f ./Cargo.toml -o Cargo-generated.nix -h /nix/store/2mwh4sn153gar2r2ay6x43l7752pr3v3-rustnix-crate2nix/crate-hashes.json
Did not find all crates.io hashes in Cargo.lock. Hashes for e.g. addr2line 0.24.2, adler 1.0.2, adler2 2.0.0, aho-corasick 1.1.3, android-tzdata 0.1.1, android_system_properties 0.1.5, async-channel 2.3.1, async-stream 0.3.6, async-stream-impl 0.3.6, async-trait 0.1.83 are missing.
This is probably a bug.
Prefetching    1/379: https://static.crates.io/crates/encoding_rs/encoding_rs-0.8.35.crate
Error: while prefetching crates for calculating sha256: While spawning 'nix-prefetch-url https://static.crates.io/crates/encoding_rs/encoding_rs-0.8.35.crate --name encoding_rs-0.8.35': No such file or directory (os error 2)
crate2nix failed.

It's difficult to make a minimal reproduction but just in case is it a known error? I tried running cargo update but that doesn't change anything.

@danieldk Thanks! I'll try that. I suppose then that I should re-run crate2nix manually everytime a git-provided crate has to change?
I'm not sure it's part of crate2nix documentation, could it be added? I think notable here: https://nix-community.github.io/crate2nix/00_guides/31_auto_generating/


Added README file to forked repo

Creating this pull request for demo purpose

Closing this PR as this doesn't have any updates.


[PRM-2934] Added test-only endpoint to count records in mongo

Could you address this, please?
uk.gov.hmrc.sbt-auto-build can be updated to 3.14.0 in [project/plugins.sbt](https://github.com/hmrc/penalties-file-notification-orchestrator/blob/PRM-2934/project/plugins.sbt#L5)


awareness for Dockerfile.dockerignore files

Is your feature request related to a problem?
"DevSpace should use the current docker behavior for dockerignore:
Dockerfile  + .dockerignore
Dockerfile + Dockerfile.dockerignore
Dockerfile.frontend + Dockerfile.frontend.dockerignore
"
Which solution do you suggest?
Delegating the dockerignore file search to Docker if possible, otherwise copying the behavior as best as possible.
Which alternative solutions exist?
Additional context
Credits to @korbin for suggesting this via Slack.

/kind feature

https://www.qeeq.com/a/mcs18596

nice
https://bit.ly/2SI9WR1

![62C7784C-F5D1-4717-93B3-552E31808AD7](https://user-imag#1091 s.githubusercontent.com/65050497/81460327-e353da00-9161-11ea-9a5a-29a1e332a6c6.png)


⭐ Add example code for Stable Diffusion(1.5)

There is no documentation for Stable Diffusion(1.5). I have added an example code for this. Is there anything else you would like me to add?

How do I solve this error?
pip install pyright
rye run pyright

Error Message:
error: invalid or unknown script 'pyright'

I ran this code and there was no change. Can you review it again?
rye run pyright

@kadirnar Can you squash all the commits into the first one?
I'd do it but with the way this repository is configured I cannot for external PRs like this one (because the main branch is protected and squash in the Git UI is disabled).
One way to do it is with interactive rebase, i.e. run git rebase -i HEAD~10 and turn the last 5 commits into fixups like in the screenshot below, then force push to the branch.

I rolled back the previous commits and fixed them manually. Can you check?

It's merged, thanks!


remove upgradeability from the hatvaults contract

In the end, we decided against making the contracts upgradeable.

@ben-kaufman I looked at the upgrade procedure we are going to use from v1 to v2 and see no objections, but I vaguely remember that this upgrade process would not be possible from v2...

I'm wondering if we should make the reward controller upgradeable though. It is replaceable anyway and I think preserving the storage could probably be quite beneficial in some cases where we want to upgrade it, what do you think?

Ah ok that is a good point, for security it is the same so I guess the answer must be yes. But let's finish the PR first, bc I also left a comment there suggesting we could also not store the shares logic there.


If Letter grade type (3) previous set, stack trace on settings

Relates to #2730. Previous version of GB allowed a letter grade type which GBNG doesn't support. From what I can tell, if this value is set in the database gb_gradebook_t->grade_type (3) then neither of the radio buttons on the settings page are selected. If the instructor changes any other option here and clicks save they are presented with a stacktrace. (Cut for brevity since it's relatively easy to reproduce by changing value in GB)
I can think of a few possible fixes.

Change GradebookInformation to use Integer instead of int values so that a null is applicable here. A null would probably need to map to some value though so maybe not a great solution.
Have a validator that won't let you save without a radio selected (even if LETTER was previously selected)
Have a disabled radio that still shows letter as a value but is not normally selectable and if selected presents the user with a warning that they need to change it?

Maybe you have some other ideas to let through unsupported values. I don't think this is a big deal as only a few schools with old courses would encounter this, but it has come up a few times for some that are still using both GB2 and GBNG and don't want to convert this type over.
org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at [Form [Component id = form]] on component [Form [Component id = form]] threw an exception
	at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:268)
...
Caused by: org.apache.wicket.util.convert.ConversionException: Method [public int org.sakaiproject.service.gradebook.shared.GradebookInformation.getGradeType()]. Can't convert null value to a primitive class: int for setting it on org.sakaiproject.service.gradebook.shared.GradebookInformation@aedfd65[
  selectedGradingScaleUid=PassNotPassMapping

I think if an out of range value is given then it should just default to something or at least validate that nothing was selected.

Yeah, I think it would be fine if it defaulted, as long as it put up a notice to the user that their grading scheme was changed. They could change it back again, but we have a lot of schools still using GB1/GB2 because there are a few features they can't give up, like grade export and letter grading.


NuGet restore failing on .NET 5 for Debian-based OSes

NuGet restore failing on .NET 5 for Debian-based OSes
.NET 5 restore is broken for Debian-based operating systems including Docker thus resulting in error messages like:
error NU3037: Package 'System.Memory 4.5.3' from source 'https://api.nuget.org/v3/index.json': The author primary signature validity period has expired.

Please follow the NuGet Announcement for the latest details on the issue.

We have published new images that mitigate these issues by using a pre-release version of the Debian ca-certificates package. Please see the NuGet announcement for more details.

We have published new images that mitigate these issues by using a pre-release version of the Debian ca-certificates package. Please see the NuGet announcement for more details.

A new version of the Debian ca-certificates package has been published which fixes the certificates issue. The .NET Docker images have been republished with the updated package. Please see the NuGet announcement for more details.

A new version of the Debian ca-certificates package has been published which fixes the certificates issue. The .NET Docker images have been republished with the updated package. Please see the NuGet announcement for more details.


Updated Planner

Throttled rate at which planner runs analysis.
Added new resource analysis system to replace supply analysis/data. Provides more accurate resource usage rates and lifetimes, and should cover several contingencies that were not covered in the old system (looping production/consumption on resources from multiple rules/scrubbers, for example).
Fixed a bug in the EC calculations. (The power draw from recyclers was being evaluated as if they were always running.)

Some of the features have been merged manually for next version. The others are being refactored and will be included at a later date.


Versionize stopped working in Ubuntu 18.04

Versionize stopped working in Ubuntu 18.04, I'm getting the following error when I try to create changelog:
free(): invalid pointer
/home/vsts/work/_temp/513c9359-e347-4729-819c-0b31e4782f8d.sh: line 1:  3328 Aborted
Example command:
/home/vsts/work/versionize -w "health-reimbursement-ms/" -r 0.3.3 --skip-dirty --skip-commit -i
This is happening with 1.6.2,1.6.1 and 1.6.0

Exact same issue on my side.
We use versionize in a Docker image based on mcr.microsoft.com/dotnet/sdk:5.0 (Debian 10)

Took a look today and perhaps a --skip-commit could help

hey @saintedlama I work with lungosta and we are still having problems running versionize. don't know what happened but we get an error like: "free(): invalid pointer"
when running the command versionize --skip-dirty --skip-commit -i

@saintedlama have you been able to have a look at this?

There was a change in the newest .NET 5 SDK which causes an error with marshalling in the gitlib2. This is fixed with a preview.
https://github.com/libgit2/libgit2sharp/pull/1890

Had a look at that issue and the root of all evil is buried somewhere in libgit2sharp. Tried to downgrade/upgrade but no luck yet.

"0.27.0-preview-0102 includes the fix."
https://github.com/libgit2/libgit2sharp/issues/1885

we did a test on versionize --version 1.5.1 on Ubuntu 18.04 and is working, at least we could use this until its fixed for newer version

Should be fixed in v1.7.0

Closing this issue since there haven't been any more reports. Feel free to open a new issue if you find otherwise.


Convert #[allow] to #[expect]

Ideally we'd like to turn on clippy::allow_attributes globally, as the expect attribute provides better clarity, but a number of our current allows likely need updates or tweaks to make this possible.

We may also want to enable allow_attributes_without_reason


Create 'responsive' container

The property fillToContainer should create a responsive container:
width should be 100%
height should be the correct aspect ratio (according to  <video width=... height=....>)
This example shows the effect (resize the browser window):
http://doppelbauer.name/fluid-responsive.html

After reviewing the issue I am not entirely sure what the issue here is. When fillToContainer is set, the video and it's container are 100% height and 100% width (as they are supposed to be). I initially thought that resizing the container does not resize the video, but that is not the case - you can see a test case for that on branch responsive-test-case.
Can you provide more details as to what the actual issue is?

The responsive-test-case wraps a display: inline-block container. Which may work for quite a few scenarios (but in mine).
Is there a chance to add a flexible container (display: block; width: 100%; height:*aspect-ratio) in the core?
https://www.w3schools.com/howto/howto_css_aspect_ratio.asp
Which should be quite simple to implement.

This is a case you need to handle in the container as part of your website - we can't assume or even know what aspect ratio each player will have, what video content they can have and similar, 16:9, 4:3, 16:10, etc etc. This is why the wrapper container in the core is 100% height and width - so you can control the aspect however you want just by wrapping the player and it's container in a custom container that fits your need.

What about extending the configuration possibilities, e.g. explicit setting of the aspect ratio:
fillToContainer:  16.0 / 9.0,

I am sorry but doing that would introduce more issues than it would solve - how about the cases where parent container can not contain one of the aspects of the player? For example, if the height of the parent container is less than the player aspect?
As I mentioned, you can wrap the player and handle aspect that way. You can even use the same technique I used in the demo.

Dear Matīss,
Is your decision final?
My biggest issue: The whole player behaves display: inline-block (which of course is the default of video-elements but unusual for html5-players).
A solution would be quite simple, e.g.:
layoutControls: {
    fillToContainer: 16.0/9.0,
}

And this patch:
*** src/fluidplayer.js.old      2020-06-23 16:38:43.953183214 +0200
--- src/fluidplayer.js  2020-06-23 16:51:46.618564690 +0200
*************** const fluidPlayerClass = function () {
*** 1925,1931 ****
              : 'fluid_video_wrapper';

          //Assign the height/width dimensions to the wrapper
!         if (self.displayOptions.layoutControls.fillToContainer) {
              wrapper.style.width = '100%';
              wrapper.style.height = '100%';
          } else {
--- 1925,1944 ----
              : 'fluid_video_wrapper';

          //Assign the height/width dimensions to the wrapper
!         const fillToContainer = self.displayOptions.layoutControls.fillToContainer;
!         if( typeof(fillToContainer) == 'number' ) {
!             //Responsive wrapper: width=100%,height=aspect-ratio according to fillToContainer
!             const aspectRatio = document.createElement('div');
!             aspectRatio.style.paddingTop = (100.0 / fillToContainer) + '%';
!             wrapper.appendChild(aspectRatio);
!             wrapper.style.display = 'block';
!             wrapper.style.width = '100%';
!             self.domRef.player.style.position = 'absolute';
!             self.domRef.player.style.top = 0;
!             self.domRef.player.style.right = 0;
!             self.domRef.player.style.bottom = 0;
!             self.domRef.player.style.left = 0;
!         } else if (fillToContainer) {
              wrapper.style.width = '100%';
              wrapper.style.height = '100%';
          } else {

Yes, sorry, because a valid and fairly simple workaround exists for what you want to achieve, and this really feels like a edge case.
You can use the above code or the css-only version from the test I referenced before, so for me it does not make any sense to implement this in the player itself.

This is indeed a huge problem.
There's no proper way to make this player responsive nor maintaining the aspect ratio without it adding huge paddings to top and bottom.
Please provide a working simple solution for this or proper examples, I can see you have refused to offer a solution for this and have just refferred to css without offering solution.
Just trying to be helpful, I am sure many are turned off from flowplayer due to it being so horrible when it comes to responsive designs / mobile layouts, it just does not play ball at all.

@Luppakorva the player already is responsive, and has been for years, and you are in full control over the aspect ratio of the player element, as you would be with any other HTML component. What is the issue exactly?

@Addvilz thanks for getting back to me about this. If you do change the landscape to portrait mode, the player will not scale correctly, that's not however the biggest issue.
I personally cannot get it to play ball with the aspect ratio, with padding top the video will leave padding on top, yet the video itself is below that no matter what I try csswise.
On mobiles in portrait mode the video's background's height gets insane (Safari and Chrome at least on iOS), even when video is 16:9, this results the video unit height to be insane (example: 450x1270). See: https://imgur.com/a/A11tZ6k
This on fillToContainer true.  If I force the wrapping div height to  500px for example, this is not respected, the controls will be hidden and overlapping the containing div.
If I remove the fillToContainer true or make it false, I can get the result you have on front page https://www.fluidplayer.com/) with width:100% on mobile. Mimicking how you have set it up. This does not scale however, if it's switched from portrait to landscape / viceversa, video width is fixed (I guess calculated and set on load)
With desktops: as I have two column layout, fill to container in turn does not respect the column div's width on larger screens but instead again overlaps, this time the right column (video being in left column). Video takes whole 100% of the full page's width.
Behaviour seems to change quite a lot between different browsers.
I love it what you guys have done here but these issues make it impossible for me to use it in production.

@Addvilz so no action taken then? Leaving it broken?

@Luppakorva what you described sounds like an issue with the styling of your website, not the player itself - any chance you are using some kind of front-end framework and there is inherited styling affecting the video element and other player elements? For example, the screenshot you provided from mobile - I have seen this before and it was due to positioning of the video element forced by a front-end framework. Please check the effective CSS in your browser to eliminate this.
Are you able to consistently reproduce this behavior in a clean-room environment? Are you able to reproduce this with our tests? If so, please provide a way to reproduce these issues, and I may look into it when time allows, or if it is indeed reproducible - you can also submit a pull request with a fix.
Unrelated to above, please consider a change of tone in your next comments. This is a free and open-source software, provided to you, again, for free. Consider that answering you might not always be our top priority above everything. If for that you feel like you should consider alternative projects to this - you are free to do so. This being an open source project, you are also free to fork and provide fixes for the issues you encounter.

@Addvilz
I'll test, thanks for the reply again. However I cannot seem to find anything on css causing this. I can't find a test neither which is online anymore, there seems to have been "responsive" branch for testing it, but it's deleted.  I can only produce it on Safari on mobile, Chrome etc are fine. I just can't find the cause but I'll keep looking.
Regarding the rest. I'm bit puzzled by your answer about my "tone"?
My goal is to give you direct feedback, I believe my messages have been friendly and to the point. I'm thanking you for your reply, try to explain the issue to my best ability and as it went ignored, simply said asked is it going to get any attention since I am looking this for production project. If you felt it was somehow an attack towards you or an aggressive / lecturing stance, my apologies, did not mean it in  such ways as all. Perhaps if you re-read you notice that as well, I understand text sometimes shows things and stance in completely wrong light.
Also you being also linked with exoclick and heavily promoted by them does make me believe you'd want direct feedback where things are not working as supposed to, however if you just ignore an reply, yes. I will ask do you do so for a reason or not, but again point was not meant to critize but just to ask since I'm again, waiting for the reply for the production environment :).

@Luppakorva the test case is part of the source tree (I merged it) and is available here in file test/html/vod_reponsive.tpl.html. You should try to reproduce the issue with no external CSS in a clean and empty page, and try to see if there are any extra CSS rules applied to the video element in developer tools of your browser.
About the other thing - your previous comments are quite aggressive - intentionally so or not. Your feedback is welcome, and we appreciate it, and would never ignore what our users have to say about the project. However, the time we have to work on this is limited, and I ask you to be considerate about that - for this, and open source projects as a whole. It could take days, often weeks to get to answer to each individual request, if at all, simply because there is only so much time in a day, and we might have other priorities set that we have might or might not have control over - as illustrated by me responding to you on a holiday, at 9PM.
If this issue is critical for you, you are always welcome to invest some time in fixing it, both for this project, and other open source software out there - it will serve only to foster open source and strengthen the community as a whole.
Thanks.

@Addvilz I really fail to see how you find them aggressive :). Sorry if you do so, not my intention at all. But thank you for the help!


Staging - Time is lost when switching projects.

Repro steps

Do the request, set session to timby, do the request again one minute later
Wait 3 minutes.
Change Project => /project ifan
Do the request again one minute later.

Expected Result
4 minutes on timby ( 1 + 3 )
1 minute on ifan
Actual Result
The 3 minutes are lost

System Info

Fixed
Updates current session before switching project


sdcc: 4.2.0 -> 4.3.0

Description of changes
Required a patch to build, but since I had to hack that up myself it's only here.
After the next release, it will be fixed.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Yikes!
Result of nixpkgs-review pr 265651 run on x86_64-linux 1

13 packages failed to build:

collectd
glasgow
glasgow.dist
libfx2 (python311Packages.fx2)
libfx2.dist (python311Packages.fx2.dist)
libsigrok
pulseview
python310Packages.fx2
python310Packages.fx2.dist
python310Packages.sigrok
python311Packages.sigrok
sigrok-cli
sigrok-firmware-fx2lafw

1 package built:

sdcc

Ok, so there is a bunch blocking this:

https://github.com/whitequark/libfx2/issues/11 (libfx2, fx2 python package, glasgow)
sigrok-firmware-fx2lafw

Needed fixes to fx2lib (https://github.com/djmuhlestein/fx2lib/pull/36) and to actual source code.
I am not sure how likely it is that sigrok-firmware-fx2lafw will get a new release anytime soon.
There is still my PR #259629 which contains the fixes.

See also: https://sourceforge.net/p/sdcc/mailman/sdcc-devel/thread/CAGjSPUDLCihL71_fv0Px4Ws_sa4E21Pq6yF0%2B6MSsecUFf-c1g%40mail.gmail.com/#msg37851015

Once https://github.com/whitequark/libfx2/pull/13 is merged, I can bump that.
When that happens and the sigrok changes get merged, this can be merged.

@vifino how's this doing? I'm not sure if libfx2 is compatible now

I'm not entirely sure what to do with libfx2, I would have to dedicate some time to understanding the differences in detail, and this always takes a while to investigate. Happy to discuss it on the Glasgow Interface Explorer channel anytime, though.

Hey @yorickvP! It's been a while.
libfx2 got one of two changes - but my simple fix for the second issue (sdcc dropping pre-GCC 3.0 preprocessor syntax) was not to upstream standards.
I couldn't work out how to rewrite the makefiles to make it more compatible or less hacky.

Thanks to @carlossless, libfx2 got a proper fix.
I've bumped the version here and it'll build now.
However, we still need #259629 to be merged in order to make all dependants build.

Hey @vifino, now that https://github.com/NixOS/nixpkgs/pull/259629 is merged, what do you think about opening up this one for review?
As a side-note, sdcc 4.4.0 was recently released

Hey @carlossless, thanks for reminding me.
Updated to sdcc 4.4.0.
Result of nixpkgs-review run on x86_64-linux 1

17 packages built:

collectd
glasgow
glasgow.dist
libfx2 (python311Packages.fx2)
libfx2.dist (python311Packages.fx2.dist)
libsigrok
pulseview
python311Packages.sigrok
python312Packages.fx2
python312Packages.fx2.dist
python312Packages.sigrok
sdcc
sdcc.doc
sdcc.man
sigrok-cli
sigrok-firmware-fx2lafw
smuview


Master

I just did, thank you!
On Fri, 17 Aug. 2018, 01:22 Mathias Bynens<EMAIL_ADDRESS>wrote:

@mathiasbynens commented on this pull request.
In git-ssh-key
https://github.com/mathiasbynens/dotfiles/pull/841#discussion_r210824405
:

@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn/1i/UHUTXUY0DRjNf4kqE917mJnOgqR2OC/U1Bk4UPhO0PK5JmVqH1qwAdLc2MntmVofkSmbeiKjFATog8bActtKiEtCDExulOUe3gMhdE1znuYBKT20ap7jRxp/s5B5rLXvFqTdw7NFpEtNJIGnC6JMGhvbPWQwhjGsr1Mpi2gInIPyZoEIn+5LjffTzMcLRL60cgvzBD8JudYFca3eVR7pnBnY5JXF16TYWo8/V7j/9uDwij26rTWYhVwbzssiZ2nWv9PSu4FCZCfRcv2zVODu5B6htTCCAE9r5iJuw9E0ShUbqk38absa/hcp87TrN9P7CpJWw5EKk8cHZhSF<EMAIL_ADDRESS>
I hope you invalidated this key…
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/mathiasbynens/dotfiles/pull/841#pullrequestreview-147120902,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AmuZGXxV3wSpjmxAQcYFxFbPsFPFAZTzks5uRm83gaJpZM4WAhkL
.


ipa fixed --> IPA V2

This PR fixes the "ingress" library to provide ingress-per-app instead of ingress-per-leader, under the same name "ingress".
Ingress-per-leader functionality is thereby REMOVED.
A separate pr will introduce back the ingress-per-leader functionality under the name "ingress-per-leader"
Given the non-backwards-compatible nature of the changes, this means releasing a new ingress v2 lib

Something's odd in the diff here:

There seem to be too many conflicting files
There seem to be too many files changed

was missing a rebase on main. @sed-i should be ready now

@sed-i your comments on the typeddicts prompted me to ditch jsonschema and go full on pydantic.
It looks a lot better now, and I think that that DatabagIOMixin I added could be reusable in a bunch of places

todo (for me): test against https://github.com/canonical/charm-relation-interfaces/pull/85


engine: redact secrets from the log

Hello @landism,
Please review the following commits I made in branch nicks/ch3434/secrets:
c20a75171cb0e71009d56c25edc767c821c60a1a (2019-09-24 12:56:23 -0400)
engine: redact secrets from the log
a0f815816a3ffdcc8b8ab9b84bf1ea1b8617a7d0 (2019-09-23 17:51:09 -0400)
engine: load secrets into the engine state

note that this builds on https://github.com/windmilleng/tilt/pull/2246


Can't use different tables like platforms instead websites

Description
I would like to change websites table name to any other name! But the website repository class doesn't listen my custom table. Before save  on database, this repository validate if is unique uuid, but verify always on websites table.

Information

hyn/multi-tenant version: 5.2.6
laravel version: 5.6.*
database driver and version: 5.7
php version: 7.2

tenancy.php config
<?php

/*
 * This file is part of the hyn/multi-tenant package.
 *
 * (c) Daniël Klabbers<EMAIL_ADDRESS> *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @see https://laravel-tenancy.com
 * @see https://github.com/hyn/multi-tenant
 */

use App\Models\System\Hostname;
use App\Models\System\Platform;
use Hyn\Tenancy\Database\Connection;

return [
    'models' => [
        /**
         * Specify different models to be used for the global, system database
         * connection. These are also used in their relationships. Models
         * used have to implement their respective contracts and
         * either extend the SystemModel or use the trait
         * UsesSystemConnection.
         */

        // Must implement \Hyn\Tenancy\Contracts\Hostname
        'hostname' => Hostname::class,

        // Must implement \Hyn\Tenancy\Contracts\Website
        'website' => Platform::class
    ],
    'website' => [
        /**
         * Each website has a short random hash that identifies this entity
         * to the application. By default this id is randomized and fully
         * auto-generated. In case you want to force your own logic for
         * when you need to have a better overview of the complete
         * tenant folder structure, disable this and implement
         * your own id generation logic.
         */
        'disable-random-id' => false,

        /**
         * The random Id generator is responsible for creating the hash as mentioned
         * above. You can override what generator to use by modifying this value
         * in the configuration.
         *
         * @warn This won't work if disable-random-id is true.
         */
        'random-id-generator' => Hyn\Tenancy\Generators\Uuid\ShaGenerator::class,

        /**
         * Enable this flag in case you're using a driver that does not support
         * database username or database name with a length of more than 32 characters.
         *
         * This should be enabled for MySQL, but not for MariaDB and PostgreSQL.
         */
        'uuid-limit-length-to-32' => env('LIMIT_UUID_LENGTH_32', true),

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant specific files, including media, packages, routes and other
         * files for this particular website.
         *
         * @info If not set, will revert to the default filesystem.
         * @info If set to false will disable all tenant specific filesystem auto magic
         *       like the config, vendor overrides.
         */
        'disk' => null,

        /**
         * Automatically generate a tenant directory based on the random id of the
         * website. Uses the above disk to store files to override system-wide
         * files.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-directory' => true,

        /**
         * Automatically rename the tenant directory when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move files accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-directory' => true,

        /**
         * Automatically deletes the tenant specific directory and all files
         * contained within.
         *
         * @see
         * @info set to true to enable.
         */
        'auto-delete-tenant-directory' => true,

        /**
         * Time to cache websites in minutes. Set to false to disable.
         */
        'cache' => 10,
    ],
    'hostname' => [
        /**
         * If you want the multi tenant application to fall back to a default
         * hostname/website in case the requested hostname was not found
         * in the database, complete in detail the default hostname.
         *
         * @warn this must be a FQDN, these have no protocol or path!
         */
        'default' => env('TENANCY_DEFAULT_HOSTNAME', "www.".config('app.base_url')),
        /**
         * The package is able to identify the requested hostname by itself,
         * disable to get full control (and responsibility) over hostname
         * identification. The hostname identification is needed to
         * set a specific website as currently active.
         *
         * @see src/Jobs/HostnameIdentification.php
         */
        'auto-identification' => env('TENANCY_AUTO_HOSTNAME_IDENTIFICATION', true),

        /**
         * In case you want to have the tenancy environment set up early,
         * enable this flag. This will run the tenant identification
         * inside a middleware. This will eager load tenancy.
         *
         * A good use case is when you have set "tenant" as the default
         * database connection.
         */
        'early-identification' => env('TENANCY_EARLY_IDENTIFICATION', true),

        /**
         * Abort application execution in case no hostname was identified. This will throw a
         * 404 not found in case the tenant hostname was not resolved.
         */
        'abort-without-identified-hostname' => true,

        /**
         * Time to cache hostnames in minutes. Set to false to disable.
         */
        'cache' => false,

        /**
         * Automatically update the app.url configured inside Laravel to match
         * the tenant FQDN whenever a hostname/tenant was identified.
         *
         * This will resolve issues with password reset mails etc using the
         * correct domain.
         */
        'update-app-url' => true,
    ],
    'db' => [
        /**
         * The default connection to use; this overrules the Laravel database.default
         * configuration setting. In Laravel this is normally configured to 'mysql'.
         * You can set a environment variable to override the default database
         * connection to - for instance - the tenant connection 'tenant'.
         */
        'default' => env('TENANCY_DEFAULT_CONNECTION'),
        /**
         * Used to give names to the system and tenant database connections. By
         * default we configure 'system' and 'tenant'. The tenant connection
         * is set up automatically by this package.
         *
         * @see src/Database/Connection.php
         * @var system-connection-name The database connection name to use for the global/system database.
         * @var tenant-connection-name The database connection name to use for the tenant database.
         */
        'system-connection-name' => env('TENANCY_SYSTEM_CONNECTION_NAME', Connection::DEFAULT_SYSTEM_NAME),
        'tenant-connection-name' => env('TENANCY_TENANT_CONNECTION_NAME', Connection::DEFAULT_TENANT_NAME),

        /**
         * The tenant division mode specifies to what database websites will be
         * connecting. The default setup is to use a new database per tenant.
         * In case you prefer to use the same database with a table prefix,
         * set the mode to 'prefix'.
         *
         * @see src/Database/Connection.php
         */
        'tenant-division-mode' => env('TENANCY_DATABASE_DIVISION_MODE', 'database'),

        /**
         * The database password generator takes care of creating a valid hashed
         * string used for tenants to connect to the specific database. Do
         * note that this will only work in 'division modes' that set up
         * a connection to a separate database.
         */
        'password-generator' => Hyn\Tenancy\Generators\Database\DefaultPasswordGenerator::class,

        /**
         * The tenant migrations to be run during creation of a tenant. Specify a directory
         * to run the migrations from. If specified these migrations will be executed
         * whenever a new tenant is created.
         *
         * @info set to false to disable auto migrating.
         *
         * @warn this has to be an absolute path, feel free to use helper methods like
         * base_path() or database_path() to set this up.
         */
        'tenant-migrations-path' => database_path('migrations/tenant'),

        /**
         * The default Seeder class used on newly created databases and while
         * running artisan commands that fire seeding.
         *
         * @info requires tenant-migrations-path in order to seed newly created websites.
         *
         * @warn specify a valid fully qualified class name.
         */
        'tenant-seed-class' => false,
//      eg an admin seeder under `app/Seeders/AdminSeeder.php`:
//        'tenant-seed-class' => App\Seeders\AdminSeeder::class,

        /**
         * Automatically generate a tenant database based on the random id of the
         * website.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database' => true,

        /**
         * Automatically generate the user needed to access the database.
         *
         * @info Useful in case you use root or another predefined user to access the
         *       tenant database.
         * @info Only creates in case tenant databases are set to be created.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database-user' => true,

        /**
         * Automatically rename the tenant database when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move databases accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-database' => true,

        /**
         * Automatically deletes the tenant specific database and all data
         * contained within.
         *
         * @info set to true to enable.
         */
        'auto-delete-tenant-database' => env('TENANCY_DATABASE_AUTO_DELETE', true),

        /**
         * Automatically delete the user needed to access the tenant database.
         *
         * @info Set to false to disable.
         * @info Only deletes in case tenant database is set to be deleted.
         */
        'auto-delete-tenant-database-user' => env('TENANCY_DATABASE_AUTO_DELETE_USER', true),

        /**
         * Define a list of classes that you wish to force onto the tenant or system connection.
         * The connection will be forced when the Model has booted.
         *
         * @info Useful for overriding the connection of third party packages.
         */
        'force-tenant-connection-of-models' => [
//            App\User::class
        ],
        'force-system-connection-of-models' => [
//            App\User::class
        ],
    ],

    /**
     * Global tenant specific routes.
     * Making it easier to distinguish between landing and tenant routing.
     *
     * @info only works with `tenancy.hostname.auto-identification` or identification happening
     *       before the application is booted (eg inside middleware or the register method of
     *       service providers).
     */
    'routes' => [
        /**
         * Routes file to load whenever a tenant was identified.
         *
         * @info Set to false or null to disable.
         */
        'path' => base_path('routes/tenants.php'),

        /**
         * Set to true to flush all global routes before setting the routes from the
         * tenants.php routes file.
         */
        'replace-global' => false,
    ],

    /**
     * Folders configuration specific per tenant.
     * The following section relates to configuration to files inside the tenancy/<uuid>
     * tenant directory.
     */
    'folders' => [
        'config' => [
            /**
             * Merge configuration files from the config directory
             * inside the tenant directory with the global configuration files.
             */
            'enabled' => true,

            /**
             * List of configuration files to ignore, preventing override of crucial
             * application configurations.
             */
            'blacklist' => ['database', 'tenancy', 'webserver'],
        ],
        'routes' => [
            /**
             * Allows adding and overriding URL routes inside the tenant directory.
             */
            'enabled' => true,

            /**
             * Prefix all tenant routes.
             */
            'prefix' => null,
        ],
        'trans' => [
            /**
             * Allows reading translation files from a trans directory inside
             * the tenant directory.
             */
            'enabled' => true,

            /**
             * Will override the global translations with the tenant translations.
             * This is done by overriding the laravel default translator with the new path.
             */
            'override-global' => true,

            /**
             * In case you disabled global override, specify a namespace here to load the
             * tenant translation files with.
             */
            'namespace' => 'tenant',
        ],
        'vendor' => [
            /**
             * Allows using a custom vendor (composer driven) folder inside
             * the tenant directory.
             */
            'enabled' => true,
        ],
        'media' => [
            /**
             * Mounts the assets directory with (static) files for public use.
             */
            'enabled' => true,
        ],
        'views' => [
            /**
             * Adds the vendor directory of the tenant inside the application.
             */
            'enabled' => true,

            /**
             * Specify a namespace to use with which to load the views.
             *
             * @eg setting `tenant` will allow you to use `tenant::some.blade.php`
             * @info set to null to add to the global namespace.
             */
            'namespace' => null,

            /**
             * If `namespace` is set to null (thus using the global namespace)
             * make it override the global views. Disable to
             */
            'override-global' => true,
        ]
    ]
];

Error log
SQLSTATE[HY000]: General error: 1 no such table: websites (SQL: select count(*) as aggregate from "websites" where "uuid" = client-two)

See #563 which proposes a way forward.

I am a bit confused as to how to change the table name, could anyone give me some direction? I assumed you could just set a $table property but that does nothing and I can't find any sort of documentation about it. Here is my model, attempting to turn Website into Organization
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Hyn\Tenancy\Contracts\Website as Contract;

class Organization extends Model implements Contract
{

  protected $table = 'Organization';

}

I may have found the problem, it looks like everything is automatically converted to a lowercase string for table names. Unfortunately capitalized singular-case table names are a requirement for my project... any advice on how I should approach this?

I tried implementing that method and had issues when trying to generate new tenants using app(WebsiteRepository::class)->create($organization);. It doesn't seem to recognize the change in the table name. This is the error I get...
Base table or view not found: 1146 Table 'local.websites' doesn't exist
its still looking for the websites table.

It's happening because WebsiteRespository use laravel validator and validate if is unique, but it only validate in websites table.
See more in pull request #602


bgp: Announce LoadBalancer services via BGP Control Plane

This PR builds on the initial modularization done in #22183 to provide a better path for wiring the additional resources needed for the reconciliation of services.
This PR changes pure-function reconciles into cells which adhere to a interface. This allows the new reconcile to request the service resource (via the DiffStore) without forcing other reconciles to also take these via their function parameters. Something that I plan to bring to other reconciles in the future.
Since the amount of services in clusters we have seen in the wild can exceed 750k, we have to engineer for scale. Because of this scaling issue, performing full reconciliation of the service related config is unrealistic. To curb the potential scaling issue, this PR introduces the concept of a DiffStore which wraps the resource.Store provided to use via resources and records which objects have changed or have been deleted since the last time we looked at this store. This allows us to apply partial updates within the existing full-reconciliation architecture for changes to service objects. The DiffStore works together with the Signaler and will trigger a reconciliation signal for services changes, but only after the initial synchronization to prevent unnecessary reconciliation stress during startup.
Added capability to announce LoadBalancer services via BGP Control Plane

/test

/test

/test

Could you describe briefly the background to the -24K LoC change, how the usage of underlying libraries changes in this PR and any risks you see for feature stability with this PR? I'm not sure I fully understand the relationship between the new DiffStore logic and the upstream libraries.

/test

Alright, all tests green accept for test-1.26-net-next. I dug into the sysdumps and found the root cause the be related to badly set-up permissions. I have created the following issue since this appears to be a new flake #22596. It looks like other PRs are also having trouble this this flake: #22341.
Marking ready-to-merge, assuming @joestringer is satisfied with the context around the LoC change.

I don't think we can skip all those review requests. The changes for vendor are clearly not trivial as pointed out by Joe and I'd like to see someone from api or k8s review given the changes there. We usually skip reviews when the changes are trivial (code comments, typos, updating a constant without side effects, etc.) or when the people who already reviewed are familiar enough with the code to also validate some teams they don't belong to (e.g., I'm familiar with the host endpoint specifically, but not part of the endpoint team).
If people are too slow to review here, don't hesitate to ping them on Slack. Clarifying the expected scope of their review can help.

hey @dylandreimerink
since this hasn't been part of a tagged release yet I figured I might as well put this report in this PR.
I've been testing this out and the documentation (in db1c3a7148e5d8926f29ddfd563bf5db921aa452) suggests that the following matchExpressions can be used to announce all services:
serviceSelector:
  matchExpressions:
  - {key: somekey, operator: NotIn, values: []}

however, when it's set like this I can observe:
level=error msg="Encountered error reconciling virtual router with local ASN 64512, shutting down this server" component=gobgp.RouterManager.reconcile error="reconciliation of virtual router with l
ocal ASN 64512 failed: svc Diff reconciliation: reconcile service: svcDesiredRoutes(): labelSelectorAsSelector: values: Invalid value: []string(nil): for 'in', 'notin' operators, values set can't be empty" subsys=bgp-control-plane

So instead I changed the matchExpression to:
serviceSelector:
  matchExpressions:
  - key: someKeyThatDoesNotExist
    operator: DoesNotExist

and after that it properly announced my Service LoadBalancer IP:
level=info msg="Reconciling peers for virtual router with local ASN 64512" component=gobgp.neighborReconciler subsys=bgp-control-plane
level=info msg="Adding peer <IP_ADDRESS>/32 64512 to local ASN 64512" component=gobgp.neighborReconciler subsys=bgp-control-plane
level=info msg="Done reconciling peers for virtual router with local ASN 64512" component=gobgp.neighborReconciler subsys=bgp-control-plane

I don't know if the best solution is to update the documentation, or the code parsing the expression.
Thanks for implementing this feature by the way 🎉

@eripa Thank you for the report. I think I should update the docs since the selector logic is shared with loads of other features which may rely on the restriction.

I have started testing this new solution and so far seems to be working pretty well however I am not sure how to set the externalTrafficPolicy to Local
I have a 3 node K8s clusters and I am exposing a service backed by a single pod via type LoadBalancer, I am expecting to have only 1 node advertise the LB IP via BGP however all 3 nodes are:
apiVersion: v1
kind: Service
metadata:
  name: vkaci
  namespace: default
spec:
  allocateLoadBalancerNodePorts: true
  clusterIP: <IP_ADDRESS>
  clusterIPs:
  - <IP_ADDRESS>
  externalTrafficPolicy: Local
  healthCheckNodePort: 32528
  internalTrafficPolicy: Local
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  loadBalancerIP: <IP_ADDRESS>
  ports:
  - nodePort: 30000
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: vkaci
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: <IP_ADDRESS>

cisco@cilium-master-1:~$ kubectl  describe svc vkaci
Name:                     vkaci
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=vkaci
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       <IP_ADDRESS>
IPs:                      <IP_ADDRESS>
IP:                       <IP_ADDRESS>
LoadBalancer Ingress:     <IP_ADDRESS>
Port:                     <unset>  80/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  30000/TCP
Endpoints:                <IP_ADDRESS>:8080 <== Only 1 POD
Session Affinity:         None
External Traffic Policy:  Local
HealthCheck NodePort:     32528

cisco@cilium-master-1:~$ kubectl  get pod -o wide -l app=vkaci
NAME                     READY   STATUS    RESTARTS        AGE   IP              NODE              NOMINATED NODE   READINESS GATES
vkaci-68749db758-ps8lv   1/1     Running   3 (6m53s ago)   13m   <IP_ADDRESS>   cilium-master-1   <none>           <none>

But then on BGP I am getting 3 ECMP paths:
<IP_ADDRESS>/32, ubest/mbest: 3/0
    *via <IP_ADDRESS>%Cilium:Cilium, [20/0], 00:00:03, bgp-65002, external, tag 65003
    *via <IP_ADDRESS>%Cilium:Cilium, [20/0], 00:00:03, bgp-65002, external, tag 65003
    *via <IP_ADDRESS>%Cilium:Cilium, [20/0], 00:00:03, bgp-65002, external, tag 65003


Update mov run

@acordonez would you be able to help verifying this PR won't break the MoV demo?

@lee1043  I'm getting a segmentation fault when I run the first example. This looks like the issue I saw with my changes in the variability_across_timescales driver, where importing shapely after importing cdat libraries causes a segmentation fault. I can get the driver to run normally if I put an "import shapely" statement at the top of variability_modes_driver.py, but the pre-commit hooks don't like that. If you have a better fix I can also use that in variability_across_timescales.
Here's the full text:
Fatal Python error: Segmentation fault

Current thread 0x00007f66ad834740 (most recent call first):
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/predicates.py", line 69 in has_z
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/decorators.py", line 77 in wrapped
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/geometry/base.py", line 607 in has_z
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/geometry/base.py", line 206 in coords
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/geometry/linestring.py", line 119 in xy
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/patch.py", line 54 in geos_to_path
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 1542 in _boundary
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 583 in __clear
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 596 in clear
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/matplotlib/axes/_base.py", line 683 in __init__
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 416 in __init__
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/matplotlib/figure.py", line 768 in add_subplot
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/matplotlib/pyplot.py", line 1122 in axes
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/pcmdi_metrics/variability_mode/lib/plot_map.py", line 203 in plot_map_cartopy
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/pcmdi_metrics/variability_mode/lib/plot_map.py", line 104 in plot_map
  File "/home/ordonez4/miniconda3/envs/pmp_dev/bin/variability_modes_driver.py", line 446 in <module>

Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, cdtime._cdtime, lazy_object_proxy.cext, cdms2.Cdunif, regrid2._regrid, regrid2._scrip, cdms2._bindex, yaml._yaml, cytoolz.utils, cytoolz.itertoolz, cytoolz.functoolz, cytoolz.dicttoolz, cytoolz.recipes, psutil._psutil_linux, psutil._psutil_posix, markupsafe._speedups, tornado.speedups, msgpack._cmsgpack, lz4._version, lz4.block._block, genutil.array_indexing, genutil.udunits_wrap, _brotli, shapely.lib, shapely._geos, shapely._geometry_helpers, pyarrow.lib, pyarrow._hdfsio, pandas._libs.tslibs.np_datetime, pandas._libs.tslibs.dtypes, pandas._libs.tslibs.base, pandas._libs.tslibs.nattype, pandas._libs.tslibs.timezones, pandas._libs.tslibs.ccalendar, pandas._libs.tslibs.fields, pandas._libs.tslibs.timedeltas, pandas._libs.tslibs.tzconversion, pandas._libs.tslibs.timestamps, pandas._libs.properties, pandas._libs.tslibs.offsets, pandas._libs.tslibs.strptime, pandas._libs.tslibs.parsing, pandas._libs.tslibs.conversion, pandas._libs.tslibs.period, pandas._libs.tslibs.vectorized, pandas._libs.ops_dispatch, pandas._libs.missing, pandas._libs.hashtable, pandas._libs.algos, pandas._libs.interval, pandas._libs.lib, pandas._libs.ops, pyarrow._compute, pandas._libs.arrays, pandas._libs.tslib, pandas._libs.sparse, pandas._libs.indexing, pandas._libs.index, pandas._libs.internals, pandas._libs.join, pandas._libs.writers, pandas._libs.window.aggregations, pandas._libs.window.indexers, pandas._libs.reshape, pandas._libs.groupby, pandas._libs.json, pandas._libs.parsers, pandas._libs.testing, cftime._cftime, scipy._lib._ccallback_c, numba.core.typeconv._typeconv, numba._helperlib, numba._dynfunc, numba._dispatcher, numba.core.runtime._nrt_python, numba.np.ufunc._internal, numba.experimental.jitclass._box, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._isolve._iterative, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_blas, scipy.linalg._matfuncs_expm, scipy.linalg._decomp_update, scipy.linalg._flinalg, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy._lib._uarray._uarray, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.special._ellip_harm_2, scipy.fftpack.convolve, lxml._elementpath, lxml.etree, numpy.linalg.lapack_lite, lz4.frame._frame, pyproj._compat, pyproj._datadir, pyproj._network, pyproj._geod, pyproj.list, pyproj._crs, pyproj.database, pyproj._transformer, pyproj._sync, cartopy.trace, fiona._err, fiona._env, fiona.crs, fiona._geometry, fiona.schema, fiona.ogrext, matplotlib._c_internal_utils, PIL._imaging, matplotlib._path, kiwisolver._cext, matplotlib._image (total: 145)

put an "import shapely" statement at the top of variability_modes_driver.py

@acordonez it is interesting to know this would prevent the error. What about if "import shapely" is added at the top of lib/plot_map.py? Could you please check if this would work? I am studying pre-commit settings to see if there is any way to make it an exception.

@acordonez I guess this might be related to the version of shapely, which we couldn't update to the latest because of the limit in the Python version that is tied with the CDAT...

put an "import shapely" statement at the top of variability_modes_driver.py

@acordonez it is interesting to know this would prevent the error. What about if "import shapely" is added at the top of lib/plot_map.py? Could you please check if this would work? I am studying pre-commit settings to see if there is any way to make it an exception.

@lee1043 When I saw this problem before, shapely has to be called before any cdat packages in the entire run. So if the driver script imports cdat before shapely, even if shapely is called in another script, it causes the segmentation fault.

put an "import shapely" statement at the top of variability_modes_driver.py

@acordonez it is interesting to know this would prevent the error. What about if "import shapely" is added at the top of lib/plot_map.py? Could you please check if this would work? I am studying pre-commit settings to see if there is any way to make it an exception.

@lee1043 I tried a few different versions of shapely, even old ones, with variability_across_timescales and couldn't find one that would work. It might be something to do with underlying C packages that get called by both shapely and cdat, but I didn't investigate the underlying cause that deeply.

@acordonez I guess this might be related to the version of shapely, which we couldn't update to the latest because of the limit in the Python version that is tied with the CDAT...

@lee1043 I tried a few different versions of shapely, even old ones, with variability_across_timescales and couldn't find one that would work. It might be something to do with underlying C packages that get called by both shapely and cdat, but I didn't investigate the underlying cause that deeply.

@acordonez thank you for the comments, very helpful! I revised the driver script to import shapely at the top and added # noqa tag (indicating "NO-QA", NO Quality Assurance) and adjusted pre-commit setting in .pre-commit-config.yaml to allow pre-commit skipping checks for lines with the tag. Could you please check if this address the segmentation fault issue?

@lee1043 The segmentation fault is gone!
I'm getting another error in section 3.2.1 (and seeing a similar error in 3.3.1):
%%bash
variability_modes_driver.py -p basic_mov_param_sst.py --case_id "PDO" --msyear 1900 --meyear 2005

mip: cmip5
exp: historical
fq: mo
realm: atm
EofScaling: False
RmDomainMean: True
LandMask: True
nc_out_obs, plot_obs: True True
nc_out_model, plot_model: True True
CMEC:False
mode: PDO
seasons: ['monthly']
models: ['ACCESS1-0']
number of models: 1
realization:  r1i1p1
parallel: False
demo_output/PDO
demo_output/PDO
demo_output/PDO
Estimate landmask

Traceback (most recent call last):
  File "/home/ordonez4/miniconda3/envs/pmp_dev/bin/variability_modes_driver.py", line 444, in <module>
    plot_map(
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/pcmdi_metrics/variability_mode/lib/plot_map.py", line 103, in plot_map
    plot_map_cartopy(
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/pcmdi_metrics/variability_mode/lib/plot_map.py", line 204, in plot_map_cartopy
    im = ax.contourf(
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 315, in wrapper
    return func(self, *args, **kwargs)
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 359, in wrapper
    return func(self, *args, **kwargs)
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 1659, in contourf
    bboxes = [col.get_datalim(self.transData)
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 1659, in <listcomp>
    bboxes = [col.get_datalim(self.transData)
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/matplotlib/collections.py", line 266, in get_datalim
    paths = [transform.transform_path_non_affine(p) for p in paths]
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/matplotlib/collections.py", line 266, in <listcomp>
    paths = [transform.transform_path_non_affine(p) for p in paths]
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/matplotlib/transforms.py", line 2439, in transform_path_non_affine
    return self._a.transform_path_non_affine(path)
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py", line 182, in transform_path_non_affine
    geoms = cpatch.path_to_geos(src_path,
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/cartopy/mpl/patch.py", line 180, in path_to_geos
    collection[-1][0].contains(geom.exterior)):
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/geometry/base.py", line 658, in contains
    return _maybe_unpack(shapely.contains(self, other))
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/decorators.py", line 77, in wrapped
    return func(*args, **kwargs)
  File "/home/ordonez4/miniconda3/envs/pmp_dev/lib/python3.10/site-packages/shapely/predicates.py", line 540, in contains
    return lib.contains(a, b, **kwargs)
shapely.errors.GEOSException: TopologyException: side location conflict at 257.5 68.5. This can occur if the input geometry is invalid.
[WARNING] yaksa: 10 leaked handle pool objects

@acordonez thank you for checking this. I think the error was caused by combinations of multiple factors -- cdms variable with cartopy, 1e20 being used for fill value that was not appreciated by xarray. I add workarounds and confirmed that demo notebook is working without any issue. Could you please double check if this is true on your end as well?

@lee1043 The notebook ran perfectly this time

@lee1043 Should I merge this?

@acordonez Excellent, thank you for double checking!

@lee1043 Should I merge this?

@acordonez let me clean up a few more things and will merge it.


Publish 3.0.5 to RubyGems

Only 3.0.4 is currently published int here, might as well release 3.0.5.

@lowjoel Any plans for releasing 3.0.5 on rubygems?


Split jest into smaller modules

Can you split jest into smaller npm modules so others can use just the parts they need/want?
There are some parts of jest I would like to use in other tools, but the way its built at the moment make it a basically all or nothing solution. For example, package.json:main points at the binary instead of the jest library so you can require('jest'); (https://www.npmjs.org/doc/files/package.json.html#main)
AFAICT there are a few subcomponents that can be extracted:
(1) mocking utilities (the parts that when given a javascript object, analyze it and return a mocked object)
(2) the loader (jest's require() and extensions to require())
(3) mock timers
(4) the runner
(5) coverage stuff
(6) sugary stuff
I'm mainly interested in 1, 2 and 3, but do not want 4, 5 or 6 and definitely don't want anything that injects globals ever.

To be parking 1,2,3 would make it simpler to maintain for Facebook peuple.
It would c'est issue about updating Jasmine version.
Plus it will be usefull for everybody

@tomocchino This is the PR I mentioned about splitting things out.

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

This is, at last, happening. We are filling up the new /packages/ folder: https://github.com/facebook/jest/tree/master/packages
Next up is the mocking feature, which will be launched as jest-mock, cc @abramovdmitrii
Alex Juarez has started refactoring Jest itself, which will make further work here easier as well.

Highly recommend sinon for most mocking needs. It's an excellent library.

We have now split off jest-mock and the test assertion library plugins jest-jasmine1 and jest-jasmine2. We will continue making Jest more modular, which helps us rethink the boundaries of Jest and will eventually allow us to build cleaner APIs. While we haven't made everything modular, I think the original intent of this issue has been achieved and further work will be done in smaller internal/external tasks that are tracked individually. I'll close this issue but feel free to open new ones about things you'd like to be more abstract.


fix: MD029/ol-prefix

Ordered list item prefix

Thanks again @nschonni This looks great.
I reviewed all the changes, and I'm happy with it.
Ping @mairaw for the tab names. Should these be white-listed, or should they change?  /cc @meganbradley

We need to whitelist them. You can merge as-is for now.


Ref errors on null

PROBLEM
If you try to access a ref that doesn't exist, this code will error and crash.
SOLUTION
Add a null check for ref before trying to access properties on it.
TESTING

Create a component.
Try to access a ref that doesn't exist on the component.
Verify that there is no error and you get null back.

@dominicfrost-wf isn't it good that you get error when accessing bad ref? I mean, program should rather crash than silently not working, doesn't it?

It will still crash, just in the consumers application instead of this library. If someone wants a ref, they are going to use it for something. And if it's null they will know something is wrong. I have since fixed this another way in our application, but I think it's still a good practice to null check objects that could potentially be null before trying to access and of their properties.

@dominicfrost-wf I am ok with the null check, I just think the method should throw descriptive exception instead of returning null.

Reactjs will return undefined if you try to access a ref that doesn't exist. It seems weird to change that behavior in the dart wrapper to me. But if you would rather throw an error that is fine by me, since we have solved the issue another way.

@hleumas Using this library, I generally expect consistency with ReactJS behavior. I've run into this issue a few times, and would rather have a null return value than an exception.

@dominicfrost-wf @clairesarsam-wf Do you have valid use case for returning null instead of throwing an exception? By valid use case I mean a situation when you want to access undefined ref and it is not just bug in your program. If there are valid use cases for this, than I am open to discussion.

fixed in https://github.com/cleandart/react-dart/pull/50


Dash Plugin Error with Velocity

I installed the 3.2.2 version of the plugin in PyCharm 4.0.4 (Windows 8.1 x64), no issues or errors.  When I try to "Search in Velocity" I get the following error:
Dash Plugin Error
           Failed to open dash-plugin://keys=python3,python,django,twisted,sphinx,flask,tornado,sqlalchemy,numpy,scipy,salt,cvp&query=getLogger. Error message: A device attached to the system is not functioning.

I have Velocity 1.0.5 installed (licensed).  I've tried uninstalling and reinstalling Velocity and also removing and adding the Dash plugin again.  Both didn't work.  I'm not sure what else to try.

can you please try the url from a browser and/or the open with dialog
dash-plugin://keys=python3,python,django,twisted,sphinx,flask,tornado,sqlalchemy,numpy,scipy,salt,cvp&query=getLogger
please also try:
dash-plugin://keys=python3&query=getLogger

I'm getting "Application not found" for both suggestions.  Doesn't work in the browser either (Chrome or IE).  Should the install of Velocity have created a registry entry or something for 'dash-plugin://' protocol so that it knows to launch Velocity?

yes it should have. although i don't know if modern windows versions allow to open the protocols from browsers or the open dialog. but i suspect that the protocol is not registered correctly from the plugin error.
maybe you can try to register it manually. here is a description for how zeal would have registered it.

I'm all set.  The author of Velocity sent me a couple reg files to create the necessary registry entries and everything is launching fine from PyCharm via the plugin.  Thanks.

Would be cool if someone share the reg files instead of closing the issue

Email the author.  He's more than willing to help.

@kanytu this is a velocity issue, therefore it is closed on the plugin's bugtracker. but you can gladly share the regfiles for any other who might be looking for them.

@drohm if you can share the reg files, that will be nice.

The author sent me two registry files to run:
dash-plugin
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\dash-plugin]
@="Velocity Search (Dash Plugin Protocol)"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\dash-plugin\DefaultIcon]
@="C:\\Program Files (x86)\\Silverlake Software LLC\\Velocity\\Velocity.exe,1"

[HKEY_CLASSES_ROOT\dash-plugin\shell]

[HKEY_CLASSES_ROOT\dash-plugin\shell\open]

[HKEY_CLASSES_ROOT\dash-plugin\shell\open\command]
@="\"C:\\Program Files (x86)\\Silverlake Software LLC\\Velocity\\Velocity.exe\" -url \"%1\""

dash
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\dash]
@="Velocity Search (Dash Protocol)"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\dash\DefaultIcon]
@="C:\\Program Files (x86)\\Silverlake Software LLC\\Velocity\\Velocity.exe,1"

[HKEY_CLASSES_ROOT\dash\shell]

[HKEY_CLASSES_ROOT\dash\shell\open]

[HKEY_CLASSES_ROOT\dash\shell\open\command]
@="\"C:\\Program Files (x86)\\Silverlake Software LLC\\Velocity\\Velocity.exe\" -url \"%1\""

Save these to .reg files and run them.  These worked for me.

@drohm Thx. I also had this trouble.
@gdelmas It might have been convenient to display this at last on project main page.

@drohm  Thx!

Is there a reason why this is closed ? ~ Bug still occurs as of today

@etiennejcharles this seems to be a velocity bug.
please see: https://github.com/gdelmas/IntelliJDashPlugin/issues/39#issuecomment-164648562

this is a velocity issue because velocity needs to register some url handlers to be available to third party integrations like this plugin.

i assume velocity usually registers the above mentioned url handlers for third party integrations to work. maybe there is some issue with that?
what do you think, @jdasilva

As far as I know Velocity does what it should according to the Windows guidelines.  In the handful of cases where I got more information Zeal was installed prior to Velocity.  If someone has had this problem under different circumstances, please let me know because then I'm missing something!
I will look into if there is more I can for detecting and correcting this.


Auto Deployment with Main branch

Have to check the auto deployment with the main branch

Fixes here https://github.com/hidaytrahman/chepo/commit/9c6456d1c7a1e142a0727f77a543256cc1170207