[QUESTION] docker hub image tags

Hi ,
I am confuse what is the difference of this tags , and which one should I pull to use in my dockerfile ?

dunglas/frankenphp:static-builder-sha-73e9b64

dunglas/frankenphp:sha-469070c-builder-php8.3-alpine

dunglas/frankenphp:sha-e7e0dbf-php8.3-bookworm

Thank you in advance

Maybe we should update the readme in Docker hub explaining the tag formulas?

We definitely need to improve the docs.
The main images (no specific variant) are FrankenPHP itself.
"builder" variants are for building FrankenPHP with custom Caddy modules: https://frankenphp.dev/docs/docker/#how-to-install-more-caddy-modules
"static-builder" variants are for creating statically compiled builds of FrankenPHP as well as embedding PHP apps in the binary itself: https://frankenphp.dev/docs/static/#linux

Please improve the tag name resolution; it's difficult to understand. I am in the process of formalizing all the tags in my Dockerfile.

This is ongoing. Closing in favor of https://github.com/dunglas/frankenphp/issues/776, which tracks the progress on this topic.


Add API project to consume and run validation packages

A hard requirement for v2 is the consumption and execution of validation packages from the validation package index.
Basically, it has to perform 2 functions:

Download a package by querying the package index and keeping it up to date.
Execute the package. packages are just F# scripts, so we should be fine by just calling dotnet fsi programmatically.

This API should then subsequently added as commands for the cli tool.

API implemented #45

CLI will be implemented in #48


ILI9341 Display Issue with X and Y Axis Inversion ?

I'm experiencing an issue with my ILI9341 TFT LCD display when interfacing with an ESP32 using ESPHome. The display's orientation seems to be incorrect, and the rotation configuration parameter appears to have no effect on correcting the issue. It seems as if the X and Y axes are swapped.
(with factory settings there was no problem)
(Used the code example from here)

I have attached an image showing the problem. As you can see, the display renders with a section of static at the bottom, while the rest of the content appears to be laid out for a wider aspect ratio than what's being displayed.
Adjusting the rotation property from 0 to 90, 180, or 270 doesn't resolve the problem, leading me to suspect that there might be a deeper configuration issue at play, possibly with the axis settings.
Has anyone encountered this before and found a solution? Any help would be greatly appreciated.
Thank you!

found it :)
display:

platform: ili9xxx
model: ILI9341
spi_id: lcd
cs_pin: 15
dc_pin: 2
rotation: 0
dimensions: 320x240


Start a Release Review

Passing Release Review is a required step before making a first public release. Deadline for passing the review is Nov 30th, 2018. Release review takes some time to complete, so it makes sense initiating it as soon as possible.

[ ] Start Release Review
[ ] Update Release Review Tracker

Additional information:

How to submit a release review
Eclipse Handbook

https://projects.eclipse.org/projects/ee4j.jaxb/reviews/2.3.2-release-review


can't reproduce hotelMode + bookedDays behavior on v2.0.11

I'm porting my code from v1.5.7 to v2.0.11.
I'm trying to get the same behavior as previously with "hotelMode" + "bookedDays", for the selection of a date range.
So now without hotelMode and with lockDays.
-> I can't get it to work the same.
-> See jsfiddle example : https://jsfiddle.net/wzjL4uhy/
on this example, lockDays is : [ ['2021-04-08','2021-04-10'] , '2021-04-15']
-> So I want to get the following behavior :
A- NONE of these days should be valid for selection as start date
B- the days '2021-04-08' and '2021-04-15' should BE valid for selection as end date
-> For example,
A- I should NOT be able to select the following start dates :
'2021-04-08'
'2021-04-15'
B- I should BE able to select the following date ranges :
['2021-04-07','2021-04-08']
['2021-04-14','2021-04-15']
-> In addition the the lockDays setting above, I have set the following settings :
singleMode: false,
minDays: 2,
disallowLockDaysInRange: true,
selectForward: true,

and I've played with all possible values for setting lockDaysInclusivity,
but I can't get both A- and B- to work.
-> What would you suggest ?
Note 1 : My asumption for simplifying things is that now with v2.0.11, the checkout dates must not be saved as lockDays.
So in the lockDays taken as example :
[ ['2021-04-08','2021-04-10'] , '2021-04-15']
this actually means that the date ranges which have been selected by the users were :
[ ['2021-04-08','2021-04-11'] , ['2021-04-15','2021-04-16'] ]
This asumption is supposed to simplify things, but yet, I can't get it to work.
Note 2 : Precisely, the (perfect) behavior of v1.5.7 was the following :
A- date '2021-04-08' was NOT selectable as a start date
B- but as soon as you selected date '2021-04-07' as start date, then date '2021-04-08' was becoming selectable as end date.
This is what we should be able to reproduce in v2.0.
-> I also created a fiddle for illustrating this, on v1.5.7 : https://jsfiddle.net/es0gvbuk/1/
Thanks for your views (and for your amazing tool :-)

After struggling many hours on this, I think I found a quite acceptable solution:
            const {{booking.roomId}} = new Litepicker({
                element: document.getElementById('{{booking.roomId}}'),
                inlineMode: true,
                singleMode: false,
                numberOfColumns: 2,
                numberOfMonths: 2,
                switchingMonths: 1,
                selectForward: true,  // Otherwise it more tricky to manage
                lockDays: {{booking.lockDays|safe}},
                disallowLockDaysInRange: true,
                lockDaysInclusivity: "[)",
                setup: (picker) => {
                    picker.on('before:click', (target) => {
                        picker.setOptions({lockDaysInclusivity: "()"});  //Starting to select range
                    });
                    picker.on('selected', (date1, date2) => {
                        if (date2 != null) {
                            picker.setOptions({lockDaysInclusivity: "[)"});  //After end date is selected
                        }
                    });
                    picker.on('error:range', () => {
                        picker.setOptions({lockDaysInclusivity: "[)"});  //In case a wrong range is selected
                    });
                },
                tooltipNumber: (totalDays) => {
                    return totalDays - 1;
                },
                tooltipText: {"one":"nuit","other":"nuits"},
                startDate: "{{booking.startDate|safe}}",
                endDate: "{{booking.endDate|safe}}"
            });

If there is a nicer/better/simpler solution please advice.

After struggling many hours on this, I think I found a quite acceptable solution:
            const {{booking.roomId}} = new Litepicker({
                element: document.getElementById('{{booking.roomId}}'),
                inlineMode: true,
                singleMode: false,
                numberOfColumns: 2,
                numberOfMonths: 2,
                switchingMonths: 1,
                selectForward: true,  // Otherwise it is more tricky to manage
                lockDays: {{booking.lockDays|safe}},
                disallowLockDaysInRange: true,
                lockDaysInclusivity: "[)",
                setup: (picker) => {
                    picker.on('before:click', (target) => {
                        picker.setOptions({lockDaysInclusivity: "()"});  //Starting to select range
                    });
                    picker.on('selected', (date1, date2) => {
                        if (date2 != null) {
                            picker.setOptions({lockDaysInclusivity: "[)"});  //After end date is selected
                        }
                    });
                    picker.on('error:range', () => {
                        picker.setOptions({lockDaysInclusivity: "[)"});  //In case a wrong range is selected
                    });
                },
                tooltipNumber: (totalDays) => {
                    return totalDays - 1;
                },
                tooltipText: {"one":"nuit","other":"nuits"},
                startDate: "{{booking.startDate|safe}}",
                endDate: "{{booking.endDate|safe}}"
            });

If there is a nicer/better/simpler solution please advice.

Hi, thanks for sharing your experiments, I agree that this approach (= event driven changes to the inclusivity setting) seems fully valid.
On my side, now I've got a solution which works nicely. It is based on the same approach , but I use different events & different inclusivity "states". Here it is :
(note that by convention, my lockDays do not include the checkout days)
let picker = new Litepicker({
                element: document.getElementById('datepicker'),
                singleMode: false,
                minDays: 2,
                lockDays: [['2021-04-08','2021-04-10'], ['2021-04-15', '2021-04-15']],  // example booked : 3 nights, 1 night
                disallowLockDaysInRange: true,
                selectForward: true,
                autoApply: true,  // mandatory (constraint/limitation), otherwise rendering of lockdays would not refresh when start date + end date are selected but not applied yet
                lockDaysInclusivity: "[]",  // default : all lockDays are treated as locked
                setup: (picker) => {
                    picker.on('preselect', (date1, date2) => {
                        if ((date1 !== undefined) && (date2 === undefined)) {
                          // if start date (only) is selected, we "open" the ability to select end date on a lockDay-start
                            picker.setOptions({lockDaysInclusivity: "(]"});
                            picker.gotoDate(date1);  // need to force that, for proper calendar rendering during this preselect - without that, due to setOptions() dates reset, selecting a start date in a not-current month would provoke a jump back to current month
                        }
                    });
                    picker.on('selected', (date1, date2) => {
                            // when selection if done, we revert to the default (all lockDays are treated as locked)
                            picker.setOptions({lockDaysInclusivity: "[]"});
                    });
                    picker.on('error:range', (dateRange) => {
                            // if selection error, we revert to the default (all lockDays are treated as locked)
                            picker.setOptions({lockDaysInclusivity: "[]"});
                            picker.gotoDate(dateRange[0]);
                    });
                },
                tooltipNumber: (totalDays) => {
                    return totalDays - 1;
                },
            });

jsfiddle for it : https://jsfiddle.net/c4wshqv0/5/
Important note : I think I found a bug in litepicker's method rangeIsLocked().
This needs to be fixed in order for my above code to work as intended.
-> the jsfiddle above is boasting a (quick & dirty) version of litepicker which has a fix.
I have just opened a new/separate issue for this bug : #242
So in the end, I guess that we would need from wakirin :

is it confirmed that #242 is a bug ?
regarding "how to implement hotelMode", is the above approach acknowledged as valid & optimal ?
-> then maybe add a recipe / example in litepicker documentation, so that in the future other users won't have to struggle as we did :-)

how to set predefined array of selected days in simple format like picker.multipleDays=['2021-11-05', '2021-11-13', '2021-11-23']?

Just noticed that my calendar is stuck one month backward and one month forward, any idea what could be wrong ?

For my work project we've used your snippet and it works amazing, but we're facing the same issue with the navigation between months; it's currently august '22 and when we skip to september '22...

we're not able to skip to october '22 and further
we can click the "previous month"-button, but that makes us jump back to july '22 (so, the month before august '22)

When we disable the picker.setOptions({lockDaysInclusivity: "()"});  //Starting to select range-line navigating works splendid again but then the hotelMode doesn't.
@godestalbin or someone else involved, does anyone have the holy grail for this? 🙏🏽


feat: main processing pipeline

Summary by Sourcery
Implement a main processing pipeline for automated interview filtering, including emotion recognition, resume parsing, and interview evaluation. Add new dependencies and update emotion types. Provide documentation for environment setup.
New Features:

Introduce a new emotion recognition service that detects and processes facial emotions using the DeepFace model.
Add a utility module for extracting audio from video, converting audio to text, sampling video frames, and parsing YAML strings.
Implement a resume parser that converts resumes into markdown format using LlamaParse.
Create a grading prompt template for evaluating interview performance based on various factors.
Develop a ranking and feedback prompt template for assessing interviewee suitability for a role.

Enhancements:

Update emotion types in the EmotionType enum to include 'fear' and 'disgust', and modify the positive and negative emotion categorization.

Build:

Add new dependencies to requirements.txt, including PyYAML, tf-keras, deepface, python-docx, llama-index, opencv-python, SpeechRecognition, and moviepy.

Documentation:

Add ENV_SETUP.md to guide setting up the environment, including creating a conda environment and installing dependencies.

@sourcery-ai review


update market to<EMAIL_ADDRESS>

Fixes #1643 .

Changes proposed in this PR:

update ocean.js to v2.0.0-next
refactor market code for<EMAIL_ADDRESS>

Looks ok, we can merge this when we have a release


SecretImporter may require secrets-manager to run finalizer.

Describe the bug
For the SecretImporter resource, the secrets-manager operator doesn't define:
@kopf.on.delete(
    f"secrets.{OPERATOR_API_GROUP}", "v1beta1", "secretiimporters", optional=True
)
def secretimporter_delete(**_):
    pass

and thus the operator has to acknowledge deletion of a resource of this type even if not doing anything and delete call not optional.
Technically this means could have a problem where if training platform was deleted and secrets manager was deleted before the SecretImporter resource was deleted, that could block training platform being delete.
Additional information
No response

This issue may be invalid since for SecretImporter only tracking events and not create etc, thus not doing anything where finalizer would be added.
Also note that there is a requirement in kopf that if use kopf.timer or kopf.daemon that it overrides requirement for finalizer and makes it mandatory. Thus whether set optional=True in kopf.on.delete makes no difference. For the case of SecretCopier, SecretExporter and SecretInjector this means finalizers is being applied even though had attempted to avoid that. So the original concern about not being able to delete operator when instances of those other resources exists will occur.


evcc shows charge power at loadpoint even car isn't connected anymore

Describe the bug
evcc is showing a charge power value at the loadpoint, even the car isn't actually attached to my easee home wallbox.
The issue started when evcc was initiating to load the car by 100% power even there was not enough PV power. I just want to load my cars battery when PV power is available and neither use my home battery nor net consumption.
I've restarted evcc and my easee wallbox mutltiple times, and additional let my wallbox powered down (fuse shut off) several hours yesterday as I had mutliple sync issues with easee.

Everytime I start/restart evcc, the charge power value is still at max level (3,6 Kw).

Steps to reproduce

Disconnect Car
Restart easee wallbox
Restart evcc
Open Web UI

Configuration details
# open evcc at http://evcc.local:7070
network:
  schema: http
  host: evcc.local # .local suffix announces the hostname on MDNS
  port: 7070

log: debug
#levels:
#  cache: error

# unique installation id
plant: xxxxxxxxxxxxxxxxxxxxxx

interval: 30s # control cycle interval

sponsortoken: xxxxxxxxxxxxxxxxxxxxxxx
# sponsors can set telemetry: true to enable anonymous data aggregation
# see https://github.com/evcc-io/evcc/discussions/4554
telemetry: false

influx:
  url: http://<IP_ADDRESS>:8086
  database: evcc
  user: evcc
  password: xxxxxxxxxxxxxxxxxxxxx

meters:
- type: template
  template: sma-home-manager
  usage: grid
  host: <IP_ADDRESS>
  name: grid1
- type: template
  template: sma-inverter
  usage: pv
  host: <IP_ADDRESS>
  password: xxxxxxxxxxxxxxxx
  name: pv2
- type: template
  template: sma-inverter
  usage: battery
  host: <IP_ADDRESS>
  password: xxxxxxxxxxxxxxxxxx
  name: battery3

vehicles:
- name: Tiguan
  type: vw
  title: Tiguan
  capacity: 11
  phases: 1
  user: xxxxxxxxxxxxxxx
  password: xxxxxxxxxxxxxxxxxx
  onIdentify:
    mode: pv

chargers:
- type: template
  template: easee
  user: xxxxxxxxxxxxxxxxx
  password: xxxxxxxxxxxxxxxxx
  charger: xxxxxxxxxxxxxx
  name: wallbox4

loadpoints:
- title: Garage
  charger: wallbox4
  mode: off
  phases: 3
  mincurrent: 6
  maxcurrent: 16
  resetOnDisconnect: true

site:
  title: A24
  prioritySoc: 90
  bufferSoc: 95
  residualPower: 100
  meters:
    grid: grid1
    pv:
    - pv2
    battery:
    - battery3

mqtt:
  broker: <IP_ADDRESS>:1883
  user: xxxxxxx
  password: xxxxxxx

tariffs:
  currency: EUR # (default EUR)
  grid:
    # static grid price
    type: fixed
    price: 0.36 # [currency]/kWh

  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: fixed
    price: 0.06 # [currency]/kWh

Log details
[main  ] INFO 2023/10/09 11:31:12 evcc 0.120.3
[main  ] INFO 2023/10/09 11:31:12 using config file: /etc/evcc.yaml
[main  ] INFO 2023/10/09 11:31:12 starting ui and api at :7070
[db    ] INFO 2023/10/09 11:31:12 using sqlite database: /root/.evcc/evcc.db
[mqtt  ] INFO 2023/10/09 11:31:12 connecting evcc-560867260 at tcp://<IP_ADDRESS>:1883
[mqtt  ] DEBUG 2023/10/09 11:31:12 tcp://<IP_ADDRESS>:1883 connected
[lp-1  ] WARN 2023/10/09 11:31:18 locking phase config to 3p for switchable charger
[site  ] INFO 2023/10/09 11:31:18 site config:
[site  ] INFO 2023/10/09 11:31:18   meters:      grid ✓ pv ✓ battery ✓
[site  ] INFO 2023/10/09 11:31:18     grid:      power ✓ energy ✓ currents ✓
[site  ] INFO 2023/10/09 11:31:18     pv 1:      power ✓ energy ✓ currents ✓
[site  ] INFO 2023/10/09 11:31:18     battery 1: power ✓ energy ✓ currents ✓ soc ✓ capacity ✗
[site  ] INFO 2023/10/09 11:31:18   vehicles:
[site  ] INFO 2023/10/09 11:31:18     vehicle 1: range ✓ finish ✓ status ✓ climate ✓ wakeup ✗
[lp-1  ] INFO 2023/10/09 11:31:18 loadpoint 1:
[lp-1  ] INFO 2023/10/09 11:31:18   mode:        off
[lp-1  ] INFO 2023/10/09 11:31:18   charger:     power ✓ energy ✓ currents ✓ phases ✓ wakeup ✗
[lp-1  ] INFO 2023/10/09 11:31:18   meters:      charge ✓
[lp-1  ] INFO 2023/10/09 11:31:18     charge:    power ✓ energy ✓ currents ✓
[lp-1  ] DEBUG 2023/10/09 11:31:18 phase timer inactive
[lp-1  ] DEBUG 2023/10/09 11:31:18 pv timer inactive
[lp-1  ] DEBUG 2023/10/09 11:31:18 guard timer inactive
[site  ] DEBUG 2023/10/09 11:31:18 ----
[lp-1  ] DEBUG 2023/10/09 11:31:18 charge power: 3618W
[site  ] DEBUG 2023/10/09 11:31:18 pv power: 2855W
[site  ] DEBUG 2023/10/09 11:31:18 battery soc: 23%
[site  ] DEBUG 2023/10/09 11:31:18 battery power: -2131W
[site  ] DEBUG 2023/10/09 11:31:18 grid power: -10W
[site  ] DEBUG 2023/10/09 11:31:18 grid powers: [1599 -873 -736]W
[site  ] DEBUG 2023/10/09 11:31:18 grid currents: [7.1 -3.79 -3.41]A
[site  ] DEBUG 2023/10/09 11:31:18 giving priority to battery charging at soc: 23%
[site  ] DEBUG 2023/10/09 11:31:18 site power: 90W
[lp-1  ] DEBUG 2023/10/09 11:31:18 charge currents: [15.5 0.017 0.009]A
[lp-1  ] DEBUG 2023/10/09 11:31:18 charge total import: 897.824kWh
[lp-1  ] DEBUG 2023/10/09 11:31:18 charger status: A
[lp-1  ] INFO 2023/10/09 11:31:18 car disconnected
[lp-1  ] DEBUG 2023/10/09 11:31:18 set charge mode: off
[lp-1  ] DEBUG 2023/10/09 11:31:18 set min current: 6
[lp-1  ] DEBUG 2023/10/09 11:31:18 set max current: 16
[lp-1  ] DEBUG 2023/10/09 11:31:18 set priority: 0

API State: ("chargePower":3618.000030517578)

{"result":{"auth":{"vehicles":{}},"battery":[{"power":-2028,"energy":1371.621,"soc":27,"capacity":0}],"batteryCapacity":0,"batteryConfigured":true,"batteryEnergy":1371.621,"batteryPower":-2028,"batterySoc":27,"bufferSoc":95,"bufferStartSoc":0,"currency":"EUR","greenShareHome":1,"greenShareLoadpoints":0.7929795400221628,"gridConfigured":true,"gridCurrents":[6.646,-3.426,-3.354],"gridEnergy":3746.6891,"gridPower":-15.5,"gridPowers":[1495.6000000000001,-787.8000000000001,-723.3000000000001],"homePower":0,"loadpoints":[{"chargeCurrent":0,"chargeCurrents":[15.484999656677246,0.017000000923871994,0.008999999612569809],"chargeDuration":0,"chargePower":3618.000030517578,"chargeTotalImport":897.8244147222202,"chargedEnergy":1193.0830478668213,"chargerFeatureHeating":false,"chargerFeatureIntegratedDevice":false,"chargerIcon":null,"charging":false,"connected":false,"connectedDuration":9223372036854775807,"enabled":false,"guardAction":"inactive","guardRemaining":0,"maxCurrent":16,"minCurrent":6,"minSoc":0,"mode":"off","phaseAction":"inactive","phaseRemaining":0,"phasesActive":3,"phasesConfigured":3,"phasesEnabled":0,"planActive":false,"priority":0,"pvAction":"inactive","pvRemaining":0,"sessionCo2PerKWh":null,"sessionEnergy":1193.0830478668213,"sessionPrice":0.14568276328035407,"sessionPricePerKWh":0.12210613799335115,"sessionSolarPercentage":79.29795400221627,"targetSoc":100,"targetTime":"0001-01-01T00:00:00Z","title":"Garage","vehicleDetectionActive":false}],"prioritySoc":95,"pv":[{"power":2869,"energy":27006.133}],"pvConfigured":true,"pvEnergy":27006.133,"pvPower":2869,"residualPower":100,"savingsAmount":260.9032730322304,"savingsEffectivePrice":0.0708266611922402,"savingsGridCharged":30.342507158797112,"savingsSelfConsumptionCharged":880.0605713022704,"savingsSelfConsumptionPercent":96.66713482449029,"savingsSince":"2022-12-24T10:57:00Z","savingsTotalCharged":910.4030784610676,"siteTitle":"A24","smartCostLimit":0,"smartCostType":"pricestatic","sponsor":"irqnet","sponsorTokenExpires":0,"tariffFeedIn":0.06,"tariffGrid":0.36,"tariffPriceHome":0.06,"tariffPriceLoadpoints":0.12210613799335117,"vehicles":["Tiguan"],"version":"0.120.3"}}

What type of operating system are you running?
Linux
Version
0.120.3

sorry, just found the referring post
https://github.com/evcc-io/evcc/issues/10175


👷♂ Change evm_version to cancun?

The evm_version is still on paris.
It would be good to update to cancun to make the library more optimized by using features like transient storage.

We have soledge for that.

Ah, I see it's this repo. I've checked it.


Cookbook: the deleted → be deleted

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[ ] Have you successfully run brew style with your changes locally?
[ ] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

N/A

This fixes what seems like a typo in the cask cookbook.

Thanks for the typo fix @aaronliu0130!


Add CVE-2021-45046 to the README

log4j-finder already checks for CVE-2021-45046 as part of commit bbfdb8bb54c54d3dd3f5e6440449ff39c394210d however there is no record of this on the README.
I nearly skipped over the project thinking it didn't check both vulnerabilities but thankfully read through the source and commit history first. So probably worth being explicit in the README in case anyone else dismisses this prematurely.

Thanks, merged! Have also added CVE-2021-45046 to the GitHub topics.


History is messy due to merge commits

Merge commits cause the history to be messy.
I think the repository should be configured in such a way that a rebase is performed when merging a pull request.

Not sure how to change these settings in github. Will try the next time

@jryannel select settings on the top menu of your repository and there will be a selection list regarding PRs under the "Merge button" heading:

Allow merge commits
Allow squash merging
Allow rebase merging

The merge commits can be explicitly turned off to prevent further situations like this.

The merge commits are turned off

Maybe it was because I manually merged the commit and then pushed it. Instead of using github. I wanted to make changes on Jacques pull request but was not able todo so it seems.

Checked


Derive macro for raw prost structures

There is other issue which same for all our macroses. We can't use them in gears 'cause we use absolute path's


PrepareStatement got incorrect paramsCount in response packet from mock mysql server.

I use this lib to write some tests with<EMAIL_ADDRESS>and<EMAIL_ADDRESS>A panic "sql: expected 0 arguments, got 1" occurred in  grom's AutoMigrate func.
But there is no problem when I changed to a real<EMAIL_ADDRESS>started by docker.
After comparison, it is found that the paramsCount returned by the server is inconsistent.
// Param count [16 bit uint]
stmt.paramCount = int(binary.LittleEndian.Uint16(data[7:9]))

The SQL is:
SHOW TABLES FROM `gotest` WHERE `Tables_in_gotest` = ?

I write a test based on the code in dolthub/vitess：
https://github.com/dolthub/vitess/blob/73e284f11fe80760f9ef4e6afaddc00ddeaaefa5/go/mysql/conn.go#L1116
func TestStmtPrepare(t *testing.T) {
	statement, err := sqlparser.Parse("SHOW TABLES FROM `gotest` WHERE `Tables_in_gotest` = ?")
	require.NoError(t, err)
	paramsCount := uint16(0)
	_ = sqlparser.Walk(func(node sqlparser.SQLNode) (bool, error) {
		switch node := node.(type) {
		case *sqlparser.SQLVal:
			if strings.HasPrefix(string(node.Val), ":v") {
				paramsCount++
			}
		}
		return true, nil
	}, statement)
	assert.Equal(t, uint16(1), paramsCount)
}

Got unexpected output:
        	Error:      	Not equal:
        	            	expected: 0x1
        	            	actual  : 0x0

This is a good bug and repro. We've seen some bugs with native prepared implementation in Dolt so this may be the cause. We will fix.

@jfontan
Thanks for your work, this SQL is indeed not a very common case.
I temporarily solved the problem with go-mysql-driver's “interpolateParams=true” parameter.

Hey @win5do, thanks for opening this issue and for providing the nice repro case. I debugged through this and you're absolutely right that the param count is being calculated in the vitess layer by looking for types of sqlparser.SQLVal; unfortunately the grammar we use doesn't consistently use sqlparser.SQLVal in every place where a prepared param value is valid, so that's why the go-mysql-server layer is detecting 1 param and the Vitess layer is detecting 0 params.
I'm going to try out a few ideas to fix this...

One idea is updating our grammar to consistently use sqlparser.SQLVal in every spot where a prepared parameter is valid. This feels like it'll be tricky to get 100% correct and to enforce as we continue to grow the grammar.
A second idea is changing the interface between GMS and Vitess so that GMS can just tell Vitess how many prepared params it found, instead of having code in Vitess and GMS that calculates the param count differently. This feels like a more invasive change, but also seems like a faster path to having this calculation be correct and stay correct over time.

Either way, we'll get this prepared query working correctly. Glad to hear you have a good workaround with interpolateParams=true in the meantime.

I debugged through this a little deeper and realized that we actually do have the right sqlparser.SQLVal instances in the parsed statement, but... our code to recursively walk the SHOW TABLES statement wasn't following those struct members, so that's why the code in conn.go never found those params.
I've got a fix for this statement coded up locally and passing the repro test you provided. I'm going to tidy it up a little bit, do another round of debugging and testing to make sure I didn't miss anything, and then get the fix out for review.
Thanks again for taking the time to report this so we could fix it! 🙏

@win5do – the fix for this issue is now available in main for go-mysql-server. Thank you for taking the time to report this and for providing such an easy repro case! 🙏  Let us know if you hit any other snags with go-mysql-server and we'll be happy to investigate.


Getting unbound values

 Issue by Poltuu
Thursday Dec 31, 2015 at 15:14 GMT
Originally opened as https://github.com/gsscoder/commandline/issues/275

Hi, i'm trying to support the following syntaxes using CommandLine:
keyword -f -h variable and  keyword -f variable
with -h, text, required and -f boolean, optional.
In my scenario, this is equivocal, as h is the only text argument.
Supporting the first is native using Commandline so no problem.
Supporting the second one as well I find challenging as, as far as I know, the default parser fails without giving me a partial response or giving me the unbound values.
Would you have any idea how to use the tool in this manner ?

 Comment by Poltuu
Sunday Jan 03, 2016 at 14:09 GMT

My optimal would be:

keeping the argument -h required
allowing to prefix my required text variable with -h or not, as it is the only text variable in this scenario and is equivocal that it is the -h variable in this specific scenario

My suboptimal would be:

keeping the argument -h required
let the parser fail with indications of why (namely, required option -h was not provided), and keep the partial response (namely with the correct -f value)
manually retrive the unbound value and manually allocating it to the -h parameter of the partial response

So I guess my response is yes.
My workaround so far:

mark -h as optional
let the parser succeed
parse the text manually if the text is empty.
This approach seems unsafe.

 Comment by nemec
Friday Jan 01, 2016 at 00:17 GMT

So, in the second command, you want some way to know "required option -h was not provided"?

 Comment by Mizipzor
Friday Jan 29, 2016 at 22:01 GMT

Is the problem solved? Can this issue be closed?
If not, post your options class and we continue the discussion.

 Comment by Poltuu
Monday Feb 01, 2016 at 08:39 GMT

Well, I'm afraid I don't have an answer yet. I really do not like my workaround, which basically short-circuit the whole library.

 Comment by Mizipzor
Monday Feb 01, 2016 at 10:09 GMT

The core issue here is that the below are two entirely different things:

keyword -f -h variable
keyword -f variable

The first has a -h text option, the second has a ValueList with one entry. The correct thing to do here is choose one and go with it. Unless you have a really, really good reason for wanting this I would advise against it.
But it's not something the library should support.
If you still want help, maybe describe what your program actually does or rather what options it has. Maybe we can figure out the commandline design together.


IOS，the border of the view will cover the absolutely positioned text

IOS, a line to draw the view and absolutely positioned text, the border of the view will cover the text
The reactnative 0.61 has also been tried. the same problem.
React Native version:
react: 16.8.6 => 16.8.6
react-native: 0.60.4 => 0.60.4

The reactnative 0.61 has also been tried. the same problem.


[Bug]: Not showing up in discord canary

What happened?
The plugin only seems to work about 25% of the time; any other time, it does not and shows this.

Is there a way to see the console output so that I can look for a more direct error?
IDE version
2023.3.3
Plugin version
2.0.8
What operating system are you using?
Windows
Relevant log output
No response

Can you send me your logs file via Discord, you can DM me @azn9 or via email at<EMAIL_ADDRESS>You can get them via the "Help" menu > "Show log in explorer" then send the "idea.log" file.

Ok, I have sent the log file to you over on discord, after look in the log file a bit it seem to me that it might be related to this
2024-03-10 20:38:57,412 [  14514]   WARN - Discord - Error connecting to ipc
dev.cbyrne.kdiscordipc.core.error.ConnectionError$NoIPCFile: Failed to find an IPC file. Is Discord open? Is this application allowed to access temporary files?
	at dev.cbyrne.kdiscordipc.core.error.ConnectionError$NoIPCFile.<clinit>(ConnectionError.kt)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:131)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.findIPCFile(SocketHandler.kt:135)
	at dev.cbyrne.kdiscordipc.core.socket.handler.SocketHandler.connect(SocketHandler.kt:89)
	at dev.cbyrne.kdiscordipc.KDiscordIPC.connect(KDiscordIPC.kt:87)
	at dev.cbyrne.kdiscordipc.KDiscordIPC.connect$default(KDiscordIPC.kt:80)
	at dev.azn9.plugins.discord.rpc.connection.DiscordIpcConnection$connect$2$1.invokeSuspend(DiscordIpcConnection.kt:66)
	at dev.azn9.plugins.discord.rpc.connection.DiscordIpcConnection$connect$2$1.invoke(DiscordIpcConnection.kt)
	at dev.azn9.plugins.discord.rpc.connection.DiscordIpcConnection$connect$2$1.invoke(DiscordIpcConnection.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturnIgnoreTimeout(Undispatched.kt:89)
	at kotlinx.coroutines.TimeoutKt.setupTimeout(Timeout.kt:151)
	at kotlinx.coroutines.TimeoutKt.withTimeoutOrNull(Timeout.kt:107)
	at dev.azn9.plugins.discord.rpc.connection.DiscordIpcConnection$connect$2.invokeSuspend(DiscordIpcConnection.kt:65)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)```

Do you run your Discord as admin?

(We talked about it in PM)
It appears that the plugin "Discord Volume Mixer" by Danol for StreamDeck overrides the IPC connection and prevent access to it. I've not found anything relevant in their source code, and I cannot detect this and prevent it on my end. I'd suggest opening an issue on their repo instead.


Block edge 4.3.40

4.3.40 needs to be disabled:
2 clusters currently failing (15%),  2 gone (15%),and  7 successful (54%), out of 13 who attempted the update over 7d
Currently failing classification:
* Down nodes: 1
* Node pressure: 1
* SDN issue: 1
* Untriaged: 1
* Version retarget: 1
* volumesnapshots v1alpha1: 1

4.3.40 needs to be disabled:
2 clusters currently failing (11%),  6 gone (33%),and  9 successful (50%), out of 18 who attempted the update over 7d
Currently failing classification:
* Single master: 1
* Untriaged: 1
* Version retarget: 1
* volumesnapshots v1alpha1: 1

4.3.40 needs to be disabled:
2 clusters currently failing (11%),  6 gone (33%),and  9 successful (50%), out of 18 who attempted the update over 7d
Currently failing classification:
* Single master: 1
* Untriaged: 1
* Version retarget: 1
* volumesnapshots v1alpha1: 1

4.3.40 can be enabled again:
0 clusters currently failing ( 0%),  5 gone (50%),and  5 successful (50%), out of 10 who attempted the update over 7d
Currently failing classification:

4.3.40 can be enabled again:
0 clusters currently failing ( 0%),  5 gone (50%),and  5 successful (50%), out of 10 who attempted the update over 7d
Currently failing classification:


Possible bug with parsing Token Studio file

I have loaded up the example Token Studio file that is included in the plugin (also on their repo here), however I'm getting some errors, which I'm guessing is likely due to the way the object is nested? The error is scale: missing $type
Is this a bug?

Ah hm. The auto-detection of Tokens Studio format kicks in whenever there’s a $theme and $metadata top-level entry in the JSON file. Because that was in the exported files I tested, and assumed it would always be there. But that may not be the case!
There might need to be some other way to detect a Tokens Studio format file from DTFM, because it’s still important that DTFM errors are validated and thrown (which is the error you’re seeing now—it’s trying to say it’s invalid DTFM).
So ideally we have one of the following solutions:

Find some other way to auto-detect a Tokens Studio file (which, given your example, nothing else jumps out to me as a thing that only a Tokens Studio file would have and not, say, Style Dictionary)
Add a tokens.config.js setting, e.g. format: 'tokensStudio'
Add a CLI flag, e.g. --format=tokensStudio (or perhaps in tandem with #2)

I checked my file for $metadata but was unable to find it, so I opened Token Studio and did a full export from their example file which added it. However, now I'm getting other errors saying that it's looking for other values that don't exist in the tokens.json file such as core.spacing.multi-valueRight: can't find {dimension.xl}. I put the file up in a gist if you want to test.

But I still think you should update with one of the proposed solutions to force reading the json as a token studio file. I noticed that if you don't check the "All token sets" option on export, it doesn't export the $metadata entry.

That’s great insight, thank you! Admittedly, I don’t have access to a really robust Tokens Studio project; I’ve just been testing it on more “examples.” And sorry you had to run into a rough edge, but that’s helpful info not only for docs, but parsing as well.
After thinking about it a bit, I’m still not sure how I want to solve the syntax warning here. Perhaps the error message should change to something along the lines of:
[error message]

Parsing as DTCG format. If this is in a different format, configure the `format` option in `tokens.config.mjs` [link]

There’s another entire possibility I’m considering where Cobalt has more configurable/pluggable parsers, but that would be a different direction for this library, and is beside the point of this issue. Bare-minimum, I am interested in supporting Tokens Studio well in the core library. And short-term am committed to the DTCG format. But will keep an open mind when it comes to how people are using/consuming design tokens as more and more people jump on this bandwagon.

Improved parsing of Tokens Studio files, but I’m still a bit hesitant to add the format option to the CLI, especially after thinking about upcoming changes for 2.0 (#201). Ideally, I would like to just have Tokens Studio standardize on a consistent output (codify their specification) and have Cobalt just parse it correctly, automatically. I think opening up the can of worms to just have Cobalt parse anything is getting outside the bounds of what I would like to set for this project (Tokens Studio basically just gets “special” treatment because I’m a fan of their work, they are a widely-used tool, and are active contributors to the DTCG spec even if their output format doesn’t adhere strictly to it).


feat: port Order.Category.HeytAlgCat

[ ] depends on: #5015

This PR/issue depends on:

leanprover-community/mathlib4#5015
By Dependent Issues (🤖). Happy coding!

bors d+
Please wait until after resolving the comments above, and dependent PRs have merged.

bors r+


Leaking content::WebContents

We're leaking the content::WebContents we put in the main window. We should delete it when the window closes.

I'm not sure that it's right place but it worked  https://github.com/ralder/brightray_example/commit/4778d0bd8eb4599be14cc400414b532d8d3fe467


Cannot fit name [.../sbt-load.sock] in maximum unix domain socket length

steps

create an sbt build with a medium deeply-nested folder structure
try to run a simple command with java.io.tmpdir set to the base folder of the build

In our case it ends up being something like
sbt -Djava.io.tmpdir=/var/lib/jenkins/workspace/some-very-long-branch-name/target/tmp clean

problem
The above command produces the following error message:

sbt thinks that server is already booting because of this exception:
sbt.internal.ServerAlreadyBootingException: java.io.IOException: org.scalasbt.ipcsocket.NativeErrorException: Cannot fit name [/var/lib/jenkins/workspace/some-very-long-branch-name/target/tmp/.sbt/sbt-socket8737049473820614565/sbt-load.sock] in maximum unix domain socket length

I think the issue is caused by #6887 - although we don't set XDG_RUNTIME_DIR explicitly, I wonder if the code is somehow falling back to java.io.tmpdir.
There is a secondary issue that the error message is slightly misleading ("sbt thinks that the server is already booting") - would it be possible to separate out "the lock file already exists" from other cases such as this one? (I guess the same issue would happen if e.g. the current user didn't have permission to create the lock file in the given location).
expectation
Not sure what the expected behaviour is here. I see there's some discussion on #7013 about always (?) using /tmp instead, which would be preferable since the socket name is then guaranteed to always be short enough.
Alternatively sbt could pre-check the proposed socket name length (or catch the exception?) and handle it gracefully - either by falling back to /tmp or else giving a helpful error message?
notes
We can work around the issue by also explicitly setting XDG_RUNTIME_DIR to something shorter (e.g. a known folder under /tmp) but this is mildly annoying since we'd ideally like to have a single temp directory under our build Jenkins workspace folder.

I am also having the same issue when I run sbt on latest main for lampepfl/dotty

same happens under mac os in a random private repo
Caused by: org.scalasbt.ipcsocket.NativeErrorException: Cannot fit name [/var/folders/81/ywjxp5tx3n3gfpf4j77p_vqc0000gn/T/com.apple.WorkflowKit.BackgroundShortcutRunner/.sbt/sbt-socket-5748008024832622463/sbt-load.sock] in maximum unix domain socket length

this was caused by https://github.com/sbt/sbt/pull/6935 which sets the socket directory to a temp directory - such as you see in the issue description


[Feat]: Missing Loader(Loading Spinner) on page transitions and Footer not responsive

Feature Description
there should be svg loader while page transition and form submission.
Provide a detailed description of the feature
During page transitions, there is no loader SVG displayed, which negatively impacts the user experience by not providing visual feedback. A smooth transition with a loading indicator is crucial for keeping users engaged while waiting for the content to load.
To resolve this:
Implement a loader SVG that appears during page transitions.
Ensure the loader provides smooth animation and disappears once the content is fully loaded.
Optimize the loader for responsiveness, ensuring it displays correctly on all screen sizes.
Additionally, the footer's responsiveness should also be addressed to ensure it displays correctly on smaller devices.
Kinldly assign this issue to me , I am willing to contribute.
Put here any screenshots or videos (optional)

By submitting this issue, you agree to

[X] I agree to follow this project's Code of Conduct
[X] I’ve read all the issues in the issue section, and this feature has not been proposed yet.

Other Information

[X] I'm a GSSoC '24 Extended contributor
[X] I'm a Hacktoberfest '24 contributor
[X] I am willing to work on this feature (optional)

@Hemant9808 It is not required right now.


Issues with deploying endpoint on sagemaker

Two questions?

setfitTrainer  class generate model.safetensors instead of pytorch mode , does anyone know why??

2)Until last month i was able deploy my model from s3 bucket to sagemaker endpoint with customer inference.py/
i didn't change anything just retrained the model and deployed the new endpoint now it throws error.
 ValueError: ("You need to define one of the following ['audio-classification', 'automatic-speech-recognition', 'feature-extraction', 'text-classification', 'token-classification', 'question-answering', 'table-question-answering', 'fill-mask', 'summarization', 'translation', 'text2text-generation', 'text-generation', 'zero-shot-classification', 'conversational', 'image-classification', 'image-segmentation', 'object-detection'] as env 'HF_TASK'.", 403)
i will greatly appreciate if someone can help here.

Hi @tomaarsen, Many thanks for your prompt reply
i tried two different ways.

While saving model, passed a argument safe_serialization=False, which throws error .
Tried downgrading Transformer version to  transformers[sentencepiece,optuna]==4.20.0  but it still outputs model.safetensors

it's partially solved. i was able deploy endpoint on Hugging face
Downgrading transformer==4.33.2
which solved error with other class too e.g. trainer.evaluate (when using custom_metric) and trainer.push_to_hub
Runs switfly
But deploying endpoint on  sagemaker it's still an issue.
i will close this issue as it's sagemaker related.
Many thanks @tomaarsen

@miteshkotak  - Were you able to resolve this SageMaker related issue?
@tomaarsen  - Do you have any guidance, whats the best way to deploy SetFit model on SageMaker?
Thanks for your help!!

@miteshkotak - Were you able to resolve this SageMaker related issue? @tomaarsen - Do you have any guidance, whats the best way to deploy SetFit model on SageMaker?
Thanks for your help!!

@Overfitter  in order to deploy custom inference handler on sagemaker ,
you need to create folder named code
Add following two files within this folder

inference.py with custom code for predicting label
requirements.txt with dependency as "setfit==1.0.3"

keep the setfit version accordingly


refactor: remove is_incremental=true for ImageLayers footgun

Accidentially giving is_incremental=true for ImageLayers costs a lot of debugging time. Removes all API which would allow to do that. They can easily be restored later when needed.
Has a bonus into_iter call removal and Arc::clone avoidance.
Split off from #4938, builds upon #5059 for no obvious reason, could be separated.

This has a boring clippy, I will fix it after remove_remote_layer_6 has been merged.

There are still more references to "incremental" throughout the gc & layer map code that might better be using is_delta. But, let's keep this PR as it is, it's already an improvement.

Yeah I don't feel like I have much insight into removing more, except for this infuriating api removed here.


Equation of Line perpendicular bug fixed

fix #1985

@sairish2001 I have created a new PR #2461
So I'm closing this


pylint produces no output

Environment data

VS Code version: 1.36
Extension version: 209.6.24221
OS and version: Windows_NT x64 10.0.17763
Python version: Python 3.6.8 64-bit Miniconda
Type of virtual environment used: conda inside pyenv
Relevant/affected Python packages and their versions: pylint
Jedi or Language Server?: jedi

Expected behaviour
ctrl+shift+P: > Python: Run Linting
should produce output similar to the following:
##########Linting Output - pylint##########
************* Module mmciad.utils.callbacks
src/mmciad/utils/callbacks.py:171:0: C0301: Line too long (113/88) (line-too-long)
src/mmciad/utils/callbacks.py:189:0: C0301: Line too long (105/88) (line-too-long)
src/mmciad/utils/callbacks.py:22:14: E0602: Undefined variable 'write_log' (undefined-variable)
src/mmciad/utils/callbacks.py:40:12: W1201: Specify string format arguments as logging function parameters (logging-not-lazy)
src/mmciad/utils/callbacks.py:53:12: E0602: Undefined variable 'logger' (undefined-variable)
src/mmciad/utils/callbacks.py:61:0: R0902: Too many instance attributes (10/7) (too-many-instance-attributes)
src/mmciad/utils/callbacks.py:90:4: R0913: Too many arguments (8/5) (too-many-arguments)
src/mmciad/utils/callbacks.py:109:12: W1201: Specify string format arguments as logging function parameters (logging-not-lazy)
src/mmciad/utils/callbacks.py:142:20: W1201: Specify string format arguments as logging function parameters (logging-not-lazy)
src/mmciad/utils/callbacks.py:155:24: W1201: Specify string format arguments as logging function parameters (logging-not-lazy)
src/mmciad/utils/callbacks.py:170:35: W0703: Catching too general exception Exception (broad-except)
src/mmciad/utils/callbacks.py:132:8: R1702: Too many nested blocks (7/5) (too-many-nested-blocks)
src/mmciad/utils/callbacks.py:188:27: W0703: Catching too general exception Exception (broad-except)
src/mmciad/utils/callbacks.py:129:4: R0912: Too many branches (16/12) (too-many-branches)

------------------------------------------------------------------
Your code has been rated at 7.73/10 (previous run: 5.46/10, +2.27)

Actual behaviour
ctrl+shift+P: > Python: Run Linting
gives simply:
##########Linting Output - pylint##########
Steps to reproduce:

Select linter: pylint
enable linting
run linting

Logs
##########Linting Output - pylint##########
##########Linting Output - pylint##########
##########Linting Output - pylint##########
##########Linting Output - pylint##########
##########Linting Output - pylint##########

console.ts:134 [Extension Host] Info Python Extension: 2019-07-17 12:31:21: Cached data exists getEnvironmentVariables, /home/bjarne/myapps/mmciad
console.ts:134 [Extension Host] Info Python Extension: 2019-07-17 12:31:23: Cached data exists getEnvironmentVariables, /home/bjarne/myapps/mmciad/src/mmciad/utils/callbacks.py
console.ts:134 [Extension Host] Info Python Extension: 2019-07-17 12:31:23: Cached data exists getEnvironmentVariables, /home/bjarne/myapps/mmciad/src/mmciad/utils/hyper.py
console.ts:134 [Extension Host] Info Python Extension: 2019-07-17 12:31:23: Cached data exists getEnvironmentVariables, /home/bjarne/myapps/mmciad/src/mmciad/utils/u_net.py
console.ts:134 [Extension Host] Info Python Extension: 2019-07-17 12:31:23: Cached data exists getEnvironmentVariables, /home/bjarne/myapps/mmciad/src/mmciad/utils/u_resnet.py
console.ts:134 [Extension Host] Info Python Extension: 2019-07-17 12:31:23: Cached data exists getEnvironmentVariables, /home/bjarne/myapps/mmciad/src/mmciad/utils/aux_tools.py

Hi @bjtho08 , thank you for reaching out 👋  Does it happen consistently across different workspaces? Does linting work if you run it manually in the terminal from your workspace directory (python -m pylint myfile.py)?
Could you also provide the following so that I can try to replicate your issue:

sample repo/the file that you're trying to lint (+ a requirements.txt to know which packages you have installed in your virtual environment)
the .vscode/setings.json file in your workspace directory

Thanks!

Thanks for the reply! Yes, it is both on the remote system (using the ssh extension) and on my local system. Running it manually in the terminal does work, however. I've made a small test file to showcase the issue.  I've also attached a requirements.txt. The below code snippet should return 8 issues with pylint:
import logging
import os
import numpy as np

def WrongNamingConv(in_, mul):
    out = in_ * mul
  # blank space on empty line
    return out
    mod_out = out // mul
    return mod_out

requirements.txt
local settings.json
{
    "python.linting.enabled": true,
    "python.pythonPath": "C:\\Users\\bjarnet\\AppData\\Local\\Programs\\Python\\Python36\\python.exe",
    "python.formatting.autopep8Args": [
        "--max-line-length",
        "79",
        "--experimental"
    ],
    "python.sortImports.args": [
        "-rc",
        "--atomic"
    ],
    "terminal.integrated.shell.windows": "C:\\windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "python.linting.pylintArgs": ["--generate-members"],
    "python.linting.pylintUseMinimalCheckers": false,
    "python.linting.pep8Enabled": false,
    "python.linting.pylintEnabled": true,
    "window.zoomLevel": 0,
    "git.autofetch": true,
    "git.confirmSync": false,
    "workbench.iconTheme": "vscode-icons",
    "editor.multiCursorModifier": "ctrlCmd",
    "python.formatting.provider": "black",
    "[python]": {
        "editor.defaultFormatter": "ms-python.python"
    },
    "autoDocstring.docstringFormat": "sphinx",
    "workbench.tree.renderIndentGuides": "always",
    "python.autoComplete.addBrackets": true,
    "python.dataScience.sendSelectionToInteractiveWindow": false
}

remote settings.json
{
    "python.linting.pylintArgs": ["--generate-members",],
    "python.formatting.provider": "black",
    "python.pythonPath": "/home/bjarne/.pyenv/versions/miniconda3-4.3.30/envs/tf_gpu/bin/python",
    "python.linting.enabled": true,
    "python.linting.pep8Enabled": false,
    "python.linting.pylintEnabled": true,
    "python.linting.pylintUseMinimalCheckers": false
}

Thank you for providing that!
👉 It turns out there's a typo with your arguments, it should be --generated-arguments (and it should take a value as well), see the Pylint documentation. This caused the command being run to fail silently (path/to/python3 -m pylint --generate-members ~/path/to/file.py). If you remove that argument linting errors are being displayed as expected.

Yes! That was the culprit! Such a subtle mistake. I added the argument because of issues with false positives for numpy and since they were the only warnings back then, I just assumed it had worked when they disappeared 😆


DocumentFragment->innerHTML missing PHPDoc

A DocumentFragment object exposes its innerHTML property, just like other Element objects do. This isn't a feature of the native DOMDocument, so it has to be exposed to IDEs using PHPDoc. Currently, accessing the innerHTML property works fine, but IDEs do not recognise the property.

Did you mean adding @property string $innerHTML Gets or sets the HTML syntax describing the element's descendants to the class phpdoc comment ? If so, I guess the other properties of Element class such as outerHTML, innerText etc. should be documented too ?

To test the innerHTML property and to get to know the PhpGt/Dom library, I created the following:
  use Gt\Dom\HTMLDocument;

  require("../vendor/autoload.php");

  $document = new HTMLDocument('<title>Fragment Test</title>');
  $frag = $document->createDocumentFragment();
  $div = $document->createElement('div');
  $div->classList->add('toggler');
  $p = $document->createElement('p');
  $p->appendChild($document->createTextNode('bla bla bla'));
  $div->appendChild($p);
  $frag->appendChild($div);

  // bla bla bla
  var_dump($frag->innerText);
  // null
  var_dump($frag->innerHTML);

  $document->body->appendChild($frag);
  //

bla bla bla

  var_dump($div->outerHTML);

It seems the innerHTML is null ?

That's interesting, @speich as you've found an extra bug caused by the reliance on DOMDocument's existing functionality.
The original issue was tracking the fact that IDEs didn't "know" about the innerHTML property. The Element describes its property, but DocumentFragment does not. See here:

You can see that my IDE understands that there are "children" and "childElementCount" properties, even though these are added using PHPDoc, but in this next screenshot there is no mention of innerHTML - also note that I'm getting wiggly underlined lines under the use of the property, indicating that it's being accessed by a magic method, rather than a documented or concrete function.

What you've inadvertantly found out with your test is that the innerHTML property doesn't actually provide the fragment's content until after it's been attached to the DOM.
To circumvent the strange hierarchy of PHP's native DOMDocument, this repo uses what I've called "live properties" for properties that represent live/changing data. If you look in the Element's implementation, you see an innerHTML getter method, but the same can't be said for the DocumentFragment class.
I think you should be able to copy the innerHTML getter/setter over from Element, although be aware that the DocumentFragment is a strange one, as it doesn't have any parent node until it's attached to the document.

If you'd like to help fix this, the unit test will be really easy to write so that it proves failure - on the DocumentFragmentTest class, you could create a new document fragment (shown in existing tests), then importHTML (also shown in existing tests) and check its innerHTML is not null. This will fail, which is a good starting point to get to before fixing.

What you've inadvertantly found out with your test is that the innerHTML property doesn't actually provide the fragment's content until after it's been attached to the DOM.

Actually,  if I call innerHTML after appending the fragment to the body, it is also null:
$document->body->appendChild($frag);
// null
var_dump($frag->innerHTML);

which according to MDN is the correct behavior:

Doing this moves the fragment's nodes into the DOM, leaving behind an empty DocumentFragment.

I'll give it a try. Do you agree, that the test should check that the property innerHTML is not null before attaching it to the DOM and that it is null after and should that be one or two tests?

I was going to say yes to your first question, but then I thought it would be best to check what the behaviour is in JavaScript and try to match that. Weirdly, a new document fragment does have a null innerHTML before it is set (rather than an empty string).

It's always a good idea to check JavaScript behaviour when implementing any functionality in this repo.
Personally, I don't get caught up about putting two similar assertions within the same test. If you're testing for the same thing, I think it's fine to bundle them up into the same test. Rule of thumb: if your test's name has to use the word "and" or "or" or "if", then it probably should be another test (thanks to Uncle Bob for that one).

Closing after checking MDN (https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment) to confirm there should be no innerHTML property of a fragment.


how do I make recognition.start without button?

I dont want to use button in my apps, I want when this app load, recognition will start automaticlly, without click a button first. thanks

You can call the start wherever you want.
If you want to call it when the app load, put the code on the device ready event callback


Remove non idiomatic DataFusionError::into_arrow_external_error in favor of From conversion

Builds on https://github.com/apache/arrow-datafusion/pull/1643, so draft until that is merged
Which issue does this PR close?
closes https://github.com/apache/arrow-datafusion/issues/1644
Rationale for this change
The way to convert DataFusionError into an ArrowError is confusing for Rust programmers coming to the DataFusion codebase and makes our codebase a bit of a mess
DataFusionError::into_arrow_external_error

They typically expect a impl From<..> conversion trait
What changes are included in this PR?

remove DataFusionError::into_arrow_external_error
Update code to use From impl instead

Are there any user-facing changes?
Nicer error handling, but removal of into_arrow_external_error

We can probably remove any instances of code like
                    .map_err(DataFusionError::ArrowError)

as well 🤔


Require Destination Tags code sample

High Level Overview of Change
Enables Require Destination Tags setting on an Account
This is work for a XRPL Bounty @ XRPLBounties/Proposals for Milestone 2

Context of Change

Type of Change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactor (non-breaking change that only restructures code)
[ ] Tests (You added tests for code that already exists, or your new feature included in this PR)
[X] Documentation Updates
[ ] Release

Test Plan

I think we want these on the docs site now.  @jonathanlei Is this correct?

I'm going to close this and transfer this to xrpl.org @JST5000

This seems to be correct, I don't know where to submit my work, it's either this repo or xrpl.org. @JST5000

Ah, sorry for the confusion. Please continue to submit this work in this repo (xrpl-py).
When we originally created the Python Code Samples bounty we were thinking that client library samples should just be runnable with minimal tweaks, while xrpl.org samples should be more teachable. (Optimizing for showing best practices vs optimizing for helping people understand by playing with it) - Later on though, we realized that the difference between them is actually pretty minimal, and so it's better to just have them all in one spot (then link to it everywhere) so we updated the bounty description to just be "add it to xrpl-dev-portal".
Unfortunately when did that we didn't realize that there were some snippets which were already there - so that's the source of the confusion. Sorry about that.

Will review on Monday

Hey @wojake, just talked with the original author of the bounty, and realized that I was mistaken about what this bounty in particular was asking for. He said that the destination tag bounty was to add python snippets to this tutorial: https://xrpl.org/require-destination-tags.html#require-destination-tags (It's linked in the milestone description here, but the description could be more clear since it's the only one if it's kind in the list).
You can probably re-use most of this code for that, but the ask would be to have a "tab" for Python for the steps of the tutorial.  Sorry I had the wrong idea about what the bounty was for.
I'm going to close this PR since this isn't where the code should go and I'll update the milestone description to be more clear.


Github sign in button added and updated readme

Thanks for submitting this. Where did you find the style guidelines for the button? Has GitHub published anything on that topic?

I couldn't find any style guidelines for Github buttons.

Thanks for your pull request. I'm afraid I'm stopping work on this project as I no longer have time to maintain it.


[SPARK-11328] [SQL] Improve error message when hitting this issue

The issue is that the output commiter is not idempotent and retry attempts will
fail because the output file already exists. It is not safe to clean up the file
as this output committer is by design not retryable. Currently, the job fails
with a confusing file exists error. This patch is a stop gap to tell the user
to look at the top of the error log for the proper message.
This is difficult to test locally as Spark is hardcoded not to retry. Manually
verified by upping the retry attempts.

https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/46989/consoleFull is the test. The originally pr (https://github.com/apache/spark/pull/9942) was somehow automatically closed...

Test build #47011 has started for PR 10080 at commit c4375ec.

https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/46989/consoleFull is good. I am merging it to master and branch 1.6.

Also merged into branch 1.5.

Test build #47011 has finished for PR 10080 at commit c4375ec.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/47011/
Test PASSed.

Merged build finished. Test PASSed.


HW1-Part1-A

Q1
High kurtosis.
Q2
QQ-plots show high kurtosis. Mean

[ ] More interpretation on QQs?
[ ] Maybe make QQ-plot look nicer

Q3
P-value gives probability of getting observation given null hyp. is true. Low p => unlikely observation.

[ ] Make table of test-statistics and p-values
[ ]  Maybe loop through df's

Q4
Optim minimizes Chi-square test statistic. Want to get highest p-val possibe.

[x] Ask Kai why we get low p-values

figure out which degrees of freedom for the t distribution in Part 1 A Q. 2b)


feat: added input and output (#581)

1. Description

1.1. Checklist

[ ] The title of my PR starts with a Conventional Commit prefix (fix:, feat:, docs: etc).
[ ] I have read the Contributor Guide and followed the process outlined for submitting PRs.
[ ] I have updated/added tests for ALL new/updated/fixed functionality.
[ ] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[ ] I have updated/added relevant examples in examples.

1.2. Breaking Change

[ ] Yes, this is a breaking change.
[ ] No, this is not a breaking change.

1.3. Related Issues

Codecov Report

Merging #582 (74dd590) into main (a3caf44) will increase coverage by 8.05%.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main     #582      +/-   ##
==========================================
+ Coverage   69.45%   77.50%   +8.05%
==========================================
  Files         213       30     -183
  Lines        2249      529    -1720
==========================================
- Hits         1562      410    -1152
+ Misses        687      119     -568

see 183 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


k8s reporter, sriov: Remove dumping of /dev/vfio

What this PR does / why we need it:
Dumping /dev/vfio is not helpful.
Those are character device descriptors, without additional information.
In case the cluster doesn't have SR-IOV,
annoying errors appear as well.
Hence remove it.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:
None

Dumping /dev/vfio is not helpful.

I agree. However, I think it is worth explaining why it is not useful.

Those are character device descriptors, without additional information.

Added to PR desc
"Those are character device descriptors, without additional information."

but the dropped code does have additional info (about permissions, etc) ls -lsh -Z -St /dev/vfio, not plain ls.

but the dropped code does have additional info (about permissions, etc) ls -lsh -Z -St /dev/vfio, not plain ls.

kind providers what we are using U/S and where we introduce it,
If ad hoc there is a problem we are fixing it, the fact that is verbose doesn't mean we actually need it again and again.

Added to PR desc
"Those are character device descriptors, without additional information."

Can you please duplicate it to the commit message?

but the dropped code does have additional info (about permissions, etc) ls -lsh -Z -St /dev/vfio, not plain ls.

I have not seen any usefulness in the FD/s. It is not something we can correlate between guest/pod/node.
But if there is something useful about it, I would like to learn and use.

Can you please duplicate it to the commit message?

Sure, done

https://explainshell.com/explain?cmd=ls+-lsh+-Z+-St+
Here what we are dropping, mostly selinux, beside that its just cosmetics

We dump this info following #6771, though we didnt saw it happen for long time now.
I think its still worth to have it in case we will tackle it again, consider it as auditing (once you have it you can mitigate issues).
WDYT?

Nevertheless, Kubevirt tests reporter should be changed in a way it can distinct between VM and containerized cluster node,
it will reduce such noise as described and make it easier to maintain.

Nevertheless, Kubevirt tests reporter should be changed in a way it can distinct between VM and containerized cluster node, it will reduce such noise as described and make it easier to maintain.

Note that one can argue kubevirt can run also on external provider, which does have SR-IOV
We can distinct if there is SR-IOV according the yaml instead as well.

We dump this info following #6771, though we didnt saw it happen for long time now. I think its still worth to have it in case we will tackle it again, consider it as auditing (once you have it you can mitigate issues). WDYT?

Imo better to remove it, if we need it in the future we will add it,
Once we do, we might already have better mechanisms to reduce prints, detect if we have SR-IOV / detect cluster type,
or even have the k8s reporter as part of the must-gather (there is a potential plan to do that).

/approve

Imo better to remove it, if we need it in the future we will add it, Once we do, we might already have (or introduce upon need) better mechanisms to reduce prints, detect if we have SR-IOV / detect cluster type, or even have the k8s reporter as part of the must-gather (there is a potential plan to do that, less relevant atm).

@oshoval Sorry for responding in such a delay.
The problem #6771 describes,
VMs wont start due to missing permissions of vfio devices,
did not reproduce on lab setup only on CI, the root cause is still not clear to us.
Even though it was transient (lucky us?), I think there is value in having this info (/dev/vfio/vfio permissions), in case it surface again we will have the information needed to debug it.
Instead of losing time in waiting for bringing those changes and start with debugging.

I have not seen any usefulness in the FD/s. It is not something we can correlate between guest/pod/node. But if there is something useful about it, I would like to learn and use it.

@EdDev it's possible to correlate between the vfio devices on the pod and nodes, we dump their state on both "layers".
Together with the audit log, it enables realizing who is the user and which permissions it has when trying to access the vfio devices.
I am placing a hold, I would like to see what you think
/hold

Note that it didn't happen for around 1/2 year ?
anyhow lets see what others think
if needed lets close this PR and once someone has time we can detect existance of sriov by one of the mentioned methods above and dump only if sriov present

I think we can still collect this in AfterEach for SRIOV jobs... Reducing the noise at the same time.

@oshoval Sorry for responding in such a delay. The problem #6771 describes, VMs wont start due to missing permissions to vfio devices, did not reproduce on lab setup only on CI, the root cause is still not clear to us. Even though it was transient (lucky us?), I think there is value in having this info (/dev/vfio/vfio permissions), in case it surface again we will have the information needed to debug it. Instead of losing time in waiting for bringing those changes and start with debugging.

If there is a risk that this will happen again, I suggest a check is performed to this specific case, or to dump this info only if a permission problem is detected.
At the moment it looks like noise.
You can report these on deployment like the other details we print out. If there is a permission problem, I would expect to see it there already.
It is also reasonable to add it when troubleshooting, and not overload the report with things that are not useful 99% of the time.

@EdDev it's possible to correlate between the vfio devices on the pod and nodes, we dump their state on both "layers". Together with the audit log, it enables realizing who is the user and which permissions it has when trying to access the vfio devices.
I am placing a hold, I would like to hear what you think /hold

Per what I managed to see, we report all available vfio FD/s, we are not filtering it per pod.
Therefore, this information is not different then the one you can report on deployment/setup.
Isn't that the case?
When we report something that is not useful in most cases, but only in a very narrow case, it confuses the one who attempts to read the debug data.

I think we can still collect this in AfterEach for SRIOV jobs... Reducing the noise at the same time.

The collection is done now in JustAfterEach, at AfterEach it may be too late, depending on how the test was written.
But the idea itself makes sense to me.
Report common data for all, and specific data only by the ones that need it (e.g. SR-IOV tests should add a specialized reporter for the things it needs). For the long run, this will also scale better and keep report ownership closer to the relevant SIG.

Added a conditional dump (please see the diff itself, not the latest push which include a rebase)
/approve cancel
/hold cancel

didnt manage to remove the approve, so returning the hold
/hold

Added a const for the command which repeats

/lgtm
I think this will be much better

Removing the hold as it seems we have agreement, thanks
/hold cancel

btw fwiw on the cluster-up phase we already print twice ls -la -Z /dev/vfio per node


[libwebsockets] Extend LWS build params with gencrypto & tls options

I propose to extend LWS build options list with LWS_WITH_GENCRYPTO=ON and LWS_WITH_TLS=ON
This extension does not require any additional libraries or fixes but extends LWS functionality with useful stuff.
Thanks in advance.

Added. Please, have a look :-)

/azp run

Thanks for your contribution!


Fix imagePullPolicy schema

What this PR does / why we need it:
Currently imagePullPolicy is marked as an object. It should be a string.
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] helm-docs are updated
[x] Helm chart is tested
[ ] Update artifacthub.io/changes in Chart.yaml
[x] Run make reviewable

@tamalsaha can you please add re-use to the codespell ignore list in the workflow?


[SPARK-50669][SQL] Change the signature of TimestampAdd expression

What changes were proposed in this pull request?
In this PR the signature of TimestampAdd function was changed from IntegerType to LongType for quantity parameter.
Why are the changes needed?
To allow long types to be passed to timestamp_add function. Currently passing anything larger then Int32.MaxValue will cause a cast overflow exception. There is no need to restrict this method to only in32 values.
Does this PR introduce any user-facing change?
Yes, the following query passes:
select
  timestampadd(
    millisecond,
<PHONE_NUMBER>403,
    timestamp '1970-01-01T00:00:00.000Z'
  )

Above query now returns 2024-12-01T00:00:27.000+00:00 instead of throwing a cast exception.
How was this patch tested?
New tests in this PR.
Was this patch authored or co-authored using generative AI tooling?
No

Some tests need to be updated.

Some tests need to be updated.

Updated golden files & scalastyle.

Tests passed. cc @cloud-fan

Merged to master.


Fix IR Drop

Add variable VSRC_LOC_FILE for PSM voltage source location files
~ Add missing global_connect call in set_global_connections
~ Overhaul irdrop script, add missing read_spef

Waiting for a loc file for caravel upw from @mo-hosni.


Make sure all Spring-Data features work when using Blaze-Persistence

It seems native queries and/or named queries with projections don't work. We should add tests for that and ensure everything still works as intended.

@beikov I cannot reproduce this. See the PR with added test cases. They all suceed - tested Spring-Data 1.11.x and 2.0.x

@beikov I have tried with the test app you sent me, everything seems to work there (no exceptions). So I think we can merge the additional tests I have created and close this issue.

You wouldn't see exceptions but see that a wrong query is executed that then triggers lazy loading

I don't see any lazy loading issues. But I see some other problems. Here is the relevant log output:
2020-11-29 17:15:02.790  INFO 14392 --- [           main] com.modernsql.DemoRunner                 :  = = = Hierarchy (UP) = = =

2020-11-29 17:15:02.792 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.797 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.798 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.798 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.799  INFO 14392 --- [           main] com.modernsql.DemoService                : jpaTraverseTreeUp took 8.2971ms in 4 iterations
2020-11-29 17:15:02.803 DEBUG 14392 --- [           main] org.hibernate.SQL                        : WITH RECURSIVE prev (id, parent) AS (SELECT * FROM hierarchy WHERE id = ? UNION ALL SELECT h.* FROM hierarchy h JOIN prev p ON (p.parent = h.id)) SELECT * FROM prev
2020-11-29 17:15:02.811  INFO 14392 --- [           main] com.modernsql.DemoService                : jpaTraverseTreeUpPreloaded took 11.6631ms
2020-11-29 17:15:02.812 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.813 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.814 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.814 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.814  INFO 14392 --- [           main] com.modernsql.DemoService                : jpaTraverseTreeUp took 2.082ms in 4 iterations
2020-11-29 17:15:02.816 DEBUG 14392 --- [           main] org.hibernate.SQL                        : WITH RECURSIVE prev (id, parent) AS (SELECT * FROM hierarchy WHERE id = ? UNION ALL SELECT h.* FROM hierarchy h JOIN prev p ON (p.parent = h.id)) SELECT * FROM prev
2020-11-29 17:15:02.819  INFO 14392 --- [           main] com.modernsql.DemoService                : jpaTraverseTreeUpPreloaded took 3.4718ms
2020-11-29 17:15:02.877  INFO 14392 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: com.blazebit.persistence.integration.hibernate.Hibernate53LimitHandlingDialect
2020-11-29 17:15:02.883 DEBUG 14392 --- [           main] org.hibernate.SQL                        : with recursive HierarchyCte(id) AS( select hierarchy0_.id as col_0_0_ from hierarchy hierarchy0_ where hierarchy0_.id=? UNION ALL select hierarchy1_.parent as col_0_0_ from HierarchyCte hierarchyc0_ inner join hierarchy hierarchy1_ on (hierarchy1_.id=hierarchyc0_.id) ) select hierarchy0_.id as id1_1_, hierarchy0_.parent as parent2_1_ from hierarchy hierarchy0_ where hierarchy0_.id in (select hierarchyc1_.id from HierarchyCte hierarchyc1_)
2020-11-29 17:15:02.889  INFO 14392 --- [           main] com.modernsql.DemoService                : blazePersistenceTraverseTreeUp took 68.7885ms
2020-11-29 17:15:02.895 DEBUG 14392 --- [           main] org.hibernate.SQL                        : with recursive HierarchyCte(id) AS( select hierarchy0_.id as col_0_0_ from hierarchy hierarchy0_ where hierarchy0_.id=? UNION ALL select hierarchy1_.parent as col_0_0_ from HierarchyCte hierarchyc0_ inner join hierarchy hierarchy1_ on (hierarchy1_.id=hierarchyc0_.id) ) select hierarchy0_.id as id1_1_, hierarchy0_.parent as parent2_1_ from hierarchy hierarchy0_ where hierarchy0_.id in (select hierarchyc1_.id from HierarchyCte hierarchyc1_)
2020-11-29 17:15:02.899  INFO 14392 --- [           main] com.modernsql.DemoService                : blazePersistenceTraverseTreeUp took 8.7944ms

2020-11-29 17:15:02.900  INFO 14392 --- [           main] com.modernsql.DemoRunner                 :  = = = Hierarchy (DOWN) = = =

2020-11-29 17:15:02.900 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select hierarchy0_.id as id1_1_0_, hierarchy0_.parent as parent2_1_0_ from hierarchy hierarchy0_ where hierarchy0_.id=?
2020-11-29 17:15:02.903 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.909 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.909 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.910 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.911 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.911 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.912 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.912  INFO 14392 --- [           main] com.modernsql.DemoService                : jpaTraverseTreeDown took 11.9777ms
2020-11-29 17:15:02.914 DEBUG 14392 --- [           main] org.hibernate.SQL                        : WITH RECURSIVE prev (id, parent) AS (SELECT * FROM hierarchy WHERE id = ? UNION ALL SELECT h.* FROM hierarchy h JOIN prev p ON (h.parent = p.id)) SELECT * FROM prev
2020-11-29 17:15:02.917 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.918 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.918 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.919 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.919 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.919 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.919 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.920  INFO 14392 --- [           main] com.modernsql.DemoService                : jpaTraverseTreeDownPreloaded took 6.3104ms
2020-11-29 17:15:02.929  INFO 14392 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: com.blazebit.persistence.integration.hibernate.Hibernate53LimitHandlingDialect
2020-11-29 17:15:02.930 DEBUG 14392 --- [           main] org.hibernate.SQL                        : with recursive HierarchyCte(id) AS( select hierarchy0_.id as col_0_0_ from hierarchy hierarchy0_ where hierarchy0_.id=? UNION ALL select hierarchy1_.id as col_0_0_ from HierarchyCte hierarchyc0_ inner join hierarchy hierarchy1_ on (hierarchy1_.parent=hierarchyc0_.id) ) select hierarchy0_.id as id1_1_, hierarchy0_.parent as parent2_1_ from hierarchy hierarchy0_ where hierarchy0_.id in (select hierarchyc1_.id from HierarchyCte hierarchyc1_)
2020-11-29 17:15:02.937 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.938 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.938 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.939 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.939 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.939 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.939 DEBUG 14392 --- [           main] org.hibernate.SQL                        : select children0_.parent as parent2_1_0_, children0_.id as id1_1_0_, children0_.id as id1_1_1_, children0_.parent as parent2_1_1_ from hierarchy children0_ where children0_.parent=?
2020-11-29 17:15:02.940  INFO 14392 --- [           main] com.modernsql.DemoService                : blazePersistenceTraverseTreeDown took 18.2623ms

The first invocation of blazePersistenceTraverseTreeUp takes a crazy 68.7885ms compared to the first invocation of jpaTraverseTreeUpPreloaded (11.6631ms). The second invocation of blazePersistenceTraverseTreeUp is when caching should kick in but it still takes more than twice as long as the second invocation of jpaTraverseTreeUpPreloaded (3.4718ms vs 8.7944ms).
A similar pattern can be seen when looking at the down traversals, though the differences are not that high.


Update SSO Canvas sample

Can only be merged after https://learn.microsoft.com/en-us/power-virtual-agents/configure-sso is updated to reflect the new sample.
Microsoft employees can test the new sample via https://blue-beach-0319d6403.2.azurestaticapps.net.
Changes:

Dependencies: MSAL updated from 1.2.0 to 2.32.0 (latest supported version)
Fix: Chat canvas will be reloaded after login
Fix: Interface will reflect if user is logged in
Enhancement: Add log out button
Enhancement: Improved user interface

TODO:

Verify by the product group

See if we can implement real SSO via MSAL.js, or at least add an example.

Documentation changes:

Change required appliaction type in AAD from WebApp to SPA
Reflect recent changes to PVA UI, mobile app now has a token URL not just an ID
Add a note on what is actually required to implement SSO, this sample is just for demonstration purposes
Do you still need 2 app registrations, it works with one as well? (is this a best practice?).
Update small code snippets (and include the script tags for MSAL).

https://learn.microsoft.com/en-us/power-virtual-agents/configure-sso
https://learn.microsoft.com/en-us/power-virtual-agents/preview/configure-web-sso

Adding @Kaiqb as reviewer of this PR.

Just a note for everyone.
In REAL life scenarios, the PVA chat window should NOT be displayed before you authenticate inside the "parent" website.
Once you log in against the "parent" website, then you can display the PVA chat window, as you will get authenticated automatically inside Web Chat client.