Support 'default' keyword for request body

Hello,
a schema object featuring the 'default' keyword is not processed properly.
When sending an incomplete object in the request body, i.e. with a missing value that has a default keyword defined, the object is routed to my service as is.
Instead I expect the validator to replace missing values in the object with their default keyword.
The OpenAPI-Spec reads for this:

default - The default value represents what would be assumed by the consumer of the input as the value of the schema if one is not provided. Unlike JSON Schema, the value MUST conform to the defined type for the Schema Object defined at the same level. For example, if type is string, then default can be "foo" but cannot be 1.

A new release that solves this issue has been published (v3.0.2). Please run npm update @oas-tools/core to update OAS Tools core library.


Hide keyboard when tapped on Android; fix for iOS too

Fixes #484

This change is

The keyboard still opens when you close the overlay with cancel or by selecting a value! Also, if you open after closing first, the keyboard opens and closes immediately (feels jumpy).

Comments from Reviewable

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 778 at r1 (raw file):

        if (this.focusElement) {
          // doing this directly on the date-picker results in an infinite event loop.
          this.set('focusElement.readonly', true);

Guys, I need help here. This makes the element work as expected on mobile but, it breaks some required validation tests on mobile (iOS at least) and,  I'm thinking to modify those tests to only include a check to ignore the tests if on mobile. But, if this is really how at least iOS works (needing the component to be !readonly), then my solution wouldn't solve the required issue.
Please, let me know what you think.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 778 at r1 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Guys, I need help here. This makes the element work as expected on mobile but, it breaks some required validation tests on mobile (iOS at least) and,  I'm thinking to modify those tests to only include a check to ignore the tests if on mobile. But, if this is really how at least iOS works (needing the component to be !readonly), then my solution wouldn't solve the required issue.
Please, let me know what you think.

Doesn't seem to break CI. Please chime in anyway.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 778 at r1 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Doesn't seem to break CI. Please chime in anyway.

Ran the tests directly on my iPhone. If this is not an effective way to run these kind of tests, I would like to know.
As far as I know, the only state that can make a component skip validation is the disabled state.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 778 at r1 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Ran the tests directly on my iPhone. If this is not an effective way to run these kind of tests, I would like to know.
As far as I know, the only state that can make a component skip validation is the disabled state.

Done.

Comments from Reviewable

Reviewed 1 of 2 files at r1, 1 of 2 files at r2, 1 of 1 files at r3.
Review status: all files reviewed at latest revision, 3 unresolved discussions.

src/vaadin-date-picker-mixin.html, line 778 at r1 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Done.

Why do you use this.set here? That should not be required. BTW you can shorten like this:
this.focusElement && this.focusElement.readonly = true;

src/vaadin-date-picker-mixin.html, line 337 at r3 (raw file):

        this._mobileReadonly = true;
        // doing this directly on the date-picker results in an infinite event loop.
        this.set('focusElement.readonly', true);

Same as in the comment above, just use
this.focusElement.readonly = true;

src/vaadin-date-picker-mixin.html, line 634 at r3 (raw file):

        if (Vaadin.DatePickerHelper._mobile() && this.focusElement) {
          this._mobileReadonly = true;
          if (readonly) this.focusElement.setAttribute('readonly', true);

Personally, I prefer to avoid using short if syntax even with one-liners because it is less explicit and might break if we add something here. So consider using curly braces like we do in other elements

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 634 at r3 (raw file):
Previously, web-padawan (Sergey Kulikov) wrote…
Personally, I prefer to avoid using short if syntax even with one-liners because it is less explicit and might break if we add something here. So consider using curly braces like we do in other elements

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 778 at r1 (raw file):
Previously, web-padawan (Sergey Kulikov) wrote…
Why do you use this.set here? That should not be required. BTW you can shorten like this:
this.focusElement && this.focusElement.readonly = true;

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 337 at r3 (raw file):
Previously, web-padawan (Sergey Kulikov) wrote…
Same as in the comment above, just use
this.focusElement.readonly = true;

Done.

Comments from Reviewable

Reviewed 1 of 1 files at r4.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

Review status: all files reviewed at latest revision, 4 unresolved discussions, some commit checks pending.

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):

     * Check if this is a mobile browser.
     */
    static _mobile() {

Why new function for this? Shouldn't we use _fullscreen  instead?

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):

     */
    checkValidity(value) {
      const previousReadonly = this._mobileReadonly || this.readonly;

I don't think checkValidity is the right place for this since it can be overridden: https://cdn.vaadin.com/vaadin-date-picker/3.0.0-alpha1/demo/#date-picker-advanced-demos

src/vaadin-date-picker-mixin.html, line 642 at r4 (raw file):

      };

      try {

Why try?

src/vaadin-date-picker-mixin.html, line 802 at r4 (raw file):

    _readonlyChanged(readonly) {
      // on mobile, make sure readonly is always true.
      if (Vaadin.DatePickerHelper._mobile() && this._mobileReadonly && !readonly) {

All dependencies must be defined for observer functions: https://www.polymer-project.org/2.0/docs/devguide/observers#dependencies

Comments from Reviewable

Reviewed 1 of 2 files at r1, 1 of 2 files at r2, 1 of 1 files at r4.
Review status: all files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Why new function for this? Shouldn't we use _fullscreen  instead?

I think it's possible to use _fullscreen observer and set readonly to the input there, so there will be no need in other getters or observers.

Comments from Reviewable

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):
Previously, YuriyVaadin (Yuriy Yevstihnyeyev) wrote…
I think it's possible to use _fullscreen observer and set readonly to the input there, so there will be no need in other getters or observers.

Don't think _fullscreen is adequate for this case as it doesn't actively consider cases where the date-picker isn't showing. This includes when the programmer changes the readonly attribute on the date-picker (the date-picker will most likely not be showing at this point).
Please check the _readonlyChanged function I defined at the bottom of the date-picker-mixin to see what I'm talking about.

Comments from Reviewable

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Don't think _fullscreen is adequate for this case as it doesn't actively consider cases where the date-picker isn't showing. This includes when the programmer changes the readonly attribute on the date-picker (the date-picker will most likely not be showing at this point).
Please check the _readonlyChanged function I defined at the bottom of the date-picker-mixin to see what I'm talking about.

I believe the _fullscreen property is only true (on mobile) when the date-picker is actually showing.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 642 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Why try?

Need to set the readonly attribute to its original state (before validation), hence the finally block (regardless of what happens within this block).

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 642 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Need to set the readonly attribute to its original state (before validation), hence the finally block (regardless of what happens within this block).

Why does setting readonly property to its original state require a try block? If it occasionally throws an exception, then there's a problem in the code and it should be fixed.

Comments from Reviewable

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):

I believe the _fullscreen property is only true (on mobile) when the date-picker is actually showing.

This is not true: https://github.com/vaadin/vaadin-date-picker/blob/cc41839f5ba68f4b1b654899c24fc50f2fbd17e6/src/vaadin-date-picker.html#L111
Note that there's also _noInput property that minds fullscreen, i18n.parseDate function and ios so that's actually preferable over _fullscreen

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 637 at r4 (raw file):

            this.focusElement.readonly = true;
          } else {
            this.focusElement.removeAttribute('readonly');

Why use property setter for setting readonly and removeAttribute for removing it?

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 642 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Why does setting readonly property to its original state require a try block? If it occasionally throws an exception, then there's a problem in the code and it should be fixed.

Whatever you say Hoss.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 637 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Why use property setter for setting readonly and removeAttribute for removing it?

From my experience, just setting an attribute to false doesn't negate its effect/s. But, I've just checked this and the effect is negated. So....

Comments from Reviewable

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…

I believe the _fullscreen property is only true (on mobile) when the date-picker is actually showing.

This is not true: https://github.com/vaadin/vaadin-date-picker/blob/cc41839f5ba68f4b1b654899c24fc50f2fbd17e6/src/vaadin-date-picker.html#L111
Note that there's also _noInput property that minds fullscreen, i18n.parseDate function and ios so that's actually preferable over _fullscreen

It's not obvious at first glance what that does. I can't have assumed _fullscreen will still be true when the date-picker is not visible on mobile (I assume that's what this line suggests).

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 802 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
All dependencies must be defined for observer functions: https://www.polymer-project.org/2.0/docs/devguide/observers#dependencies

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 637 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
From my experience, just setting an attribute to false doesn't negate its effect/s. But, I've just checked this and the effect is negated. So....

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
I don't think checkValidity is the right place for this since it can be overridden: https://cdn.vaadin.com/vaadin-date-picker/3.0.0-alpha1/demo/#date-picker-advanced-demos

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Done.

Moved it to the validate function. It is called when the overlay is closed.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 642 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Whatever you say Hoss.

Done.

Comments from Reviewable

Reviewed 1 of 1 files at r5.
Review status: all files reviewed at latest revision, 5 unresolved discussions, some commit checks failed.

Comments from Reviewable

Review status: all files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

src/vaadin-date-picker-mixin.html, line 802 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Done.

Not done, it still accesses this._mobileReadonly

src/vaadin-date-picker-mixin.html, line 265 at r5 (raw file):

        },

        readonly: {

This pr should not add any new API

src/vaadin-date-picker-mixin.html, line 631 at r5 (raw file):

      value = value !== undefined ? value : this._inputValue;
      const validity = !(this.invalid = !this.checkValidity(value));
      setReadonly(previousReadonly);

Doesn't this set the element's readOnly to true even if only _mobileReadonly was true before validate()?

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 631 at r5 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Doesn't this set the element's readOnly to true even if only _mobileReadonly was true before validate()?

This is to make sure the date-picker isn't set to readonly on a non-mobile device. Setting readonly first to false gives the component the chance to validate before returning its state to whatever it was previously.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 265 at r5 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
This pr should not add any new API

Without this new "private" property _mobileReadonly, we won't be able to make sure the component remains readonly if the developer changes the state to false. This PR depends on the readonly state of the component's focusElement to be true to be termed valid. Already explained that trying to change the readonly property of the date-picker itself results in an infinite event loop.
I don't see any way around it.
If you have any better suggestions, please let me know.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 265 at r5 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Without this new "private" property _mobileReadonly, we won't be able to make sure the component remains readonly if the developer changes the state to false. This PR depends on the readonly state of the component's focusElement to be true to be termed valid. Already explained that trying to change the readonly property of the date-picker itself results in an infinite event loop.
I don't see any way around it.
If you have any better suggestions, please let me know.

Now I understand what you're trying to say. Your previous comment wasn't clear.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 802 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Not done, it still accesses this._mobileReadonly

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 631 at r5 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
This is to make sure the date-picker isn't set to readonly on a non-mobile device. Setting readonly first to false gives the component the chance to validate before returning its state to whatever it was previously.

Yea I see. _mobile() makes sure this isn't executed on a non-mobile device. So using _mobileReadonly has no effect. Fixed.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 631 at r5 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Yea I see. _mobile() makes sure this isn't executed on a non-mobile device. So using _mobileReadonly has no effect. Fixed.

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 265 at r5 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Now I understand what you're trying to say. Your previous comment wasn't clear.

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):

It is called when the overlay is closed

There's _onOverlayClosed that's invoked when the overlay is closed. Would make more sense to use that since this doesn't have anything to do with field validation, right?
That aside, the logic in this PR is getting a bit too complex for the simple purpose it's trying to tackle (dropping focus on overlay open). Since you're already using blur() in this PR, would it be an option to utilize that instead of the input's readonly state? Something like:
this.addEventListener('focus', e => this._noInput && e.target.blur());

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…

It is called when the overlay is closed

There's _onOverlayClosed that's invoked when the overlay is closed. Would make more sense to use that since this doesn't have anything to do with field validation, right?
That aside, the logic in this PR is getting a bit too complex for the simple purpose it's trying to tackle (dropping focus on overlay open). Since you're already using blur() in this PR, would it be an option to utilize that instead of the input's readonly state? Something like:
this.addEventListener('focus', e => this._noInput && e.target.blur());

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
Done.

Still need to:

Hide the caret for iOS:

_onOverlayOpened() {
if (this._noInput && this._inputElement) {
  this._inputElement.blur()
}
...

Update analysis.json

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
Still need to:

Hide the caret for iOS:

_onOverlayOpened() {
if (this._noInput && this._inputElement) {
  this._inputElement.blur()
}
...

Update analysis.json

...and add the tests for all the changes in this PR

Comments from Reviewable

src/vaadin-date-picker-helper.html, line 96 at r4 (raw file):
Previously, vicsstar (Victor Igbokwe) wrote…
It's not obvious at first glance what that does. I can't have assumed _fullscreen will still be true when the date-picker is not visible on mobile (I assume that's what this line suggests).

Done.

Comments from Reviewable

src/vaadin-date-picker-mixin.html, line 630 at r4 (raw file):
Previously, tomivirkki (Tomi Virkki) wrote…
...and add the tests for all the changes in this PR

Done.

Comments from Reviewable

Some tests are breaking on Edge/IE. Other than, that this LGTM

Comments from Reviewable

Reviewed 3 of 4 files at r6.
Review status: all files reviewed at latest revision, 1 unresolved discussion, some commit checks failed.

Comments from Reviewable

Reviewed 3 of 3 files at r7.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Jupyter Hub Elyra Server on OpenShift never starting up

I installed the OpenDataHub operator on my OpenShift cluster and I see the following pods in my elyra namespace.
$ oc get pods -n elyra
NAME                              READY   STATUS      RESTARTS   AGE
jupyterhub-1-deploy               0/1     Completed   0          2d6h
jupyterhub-1-mq5bm                1/1     Running     0          2d6h
jupyterhub-db-1-deploy            0/1     Completed   0          2d6h
jupyterhub-db-1-v7vfz             1/1     Running     0          2d6h
spark-operator-6d6d5cdf8b-64qnv   1/1     Running     0          2d6h

However, when I connect to the JupyterHub pod from from my browser, it is stuck creating a server:

This is the end of the event log:
Event log
Server requested
2020-11-18 20:18:57.303753+00:00 [Warning] pod has unbound immediate PersistentVolumeClaims (repeated 3 times)
2020-11-18 20:20:12.646251+00:00 [Warning] pod has unbound immediate PersistentVolumeClaims (repeated 3 times)
2020-11-18 20:20:24.139369+00:00 [Normal] Successfully assigned elyra/jupyterhub-nb-iam-23tonia-2eelengikal-40ibm-2ecom to <IP_ADDRESS>
2020-11-18 20:21:01+00:00 [Normal] Pulling image "quay.io/thoth-station/s2i-lab-elyra@sha256:3c7bf27fc7c64dbf097009edb404eb2598c7fe38f374265f0d4d47edcfa0131c"
2020-11-18 20:22:08+00:00 [Normal] Successfully pulled image "quay.io/thoth-station/s2i-lab-elyra@sha256:3c7bf27fc7c64dbf097009edb404eb2598c7fe38f374265f0d4d47edcfa0131c"
2020-11-18 20:22:09+00:00 [Normal] Pulling image "quay.io/odh-jupyterhub/nbviewer@sha256:21ce1db27e96305718a06359c86139680b8138966c614b4c94796a788eeac98c"
2020-11-18 20:22:27+00:00 [Normal] Successfully pulled image "quay.io/odh-jupyterhub/nbviewer@sha256:21ce1db27e96305718a06359c86139680b8138966c614b4c94796a788eeac98c"
2020-11-18 20:22:28+00:00 [Normal] Created container nbviewer
2020-11-18 20:22:28+00:00 [Normal] Started container nbviewer
2020-11-18 20:23:05+00:00 [Normal] Container image "quay.io/thoth-station/s2i-lab-elyra@sha256:3c7bf27fc7c64dbf097009edb404eb2598c7fe38f374265f0d4d47edcfa0131c" already present on machine
2020-11-18 20:23:06+00:00 [Normal] Created container notebook
2020-11-18 20:23:06+00:00 [Normal] Started container notebook
2020-11-18 20:26:03+00:00 [Warning] Back-off restarting failed container

These are the spawner settings I used:

Any ideas on how to resolve this?

Hi @eletonia, what version of the ODH operator / manifests are you using? The 0.0.2 version of the s2i-lab-elyra image had a few bugs.
Suggestion - update to the latest operator (v0.9) in the operator marketplace and use the latest manifest version here: https://github.com/opendatahub-io/odh-manifests/tree/v0.9.0

Thanks @akchinSTC
I'm using the latest ODH operator version 0.9 and the manifest indicated in the Elyra documentation
It looks like it's using 0.8 in the yaml. I will try with the latest manifest.

@akchinSTC I tried the latest manifest here and redeployed the Open Data Hub instance but I can't access the Jupyter Hub landing page after signing in with OpenShift now:

Do you know what could cause this?

@eletonia - I think I've seen this before, its a bug where you have to sign in twice. Will link the upstream issue here when I find it in the main repo. In the meantime, the workaround is to click on the Jupyter logo in the upper left corner again when you see this message and then click on sign in again and it should get you into the main notebook spawner page.

@akchinSTC That worked! I can access the Jupyter Hub page with Elyra now, thanks!


IDEA: Add Numerical Transform Option

Editing the Orientation can still be a pain if your panorama is already perfect in one or two directions.
(e.g. the horizon is perfect already, but you want to yaw it 90 degrees)
Adding a Numerical Transform (similar to the one in PTGui) would certainly help a lot!

You could show the numerical values for yaw/pitch/roll in the Stabilization & Orientation pane in editable text fields, over the button to "Adjust on current frame". The current button would have to be renamed to reflect that it should be pressed to change the orientation through mouse-dragging, while you could change it numerically with the new text fields.


ROX-12543: Policies step 4 exclusion deployment names are sorted and unique

Description

Add restSort option
Filter to remove adjacent non-unique names.

Residue

Possibly move filtered request down into exclusions card so it can filter by cluster or namespace, or both if specified.
Possibly change to autocomplete request because only name is needed.
Select element can allow so-called creatable deployment names which do not yet exist.

Checklist

[ ] Investigated and inspected CI test results
[x] ~Unit test and regression tests added~

Testing Performed
Manual testing

unsorted without these changes

sorted with these changes (I also tested unique by temporarily mangling to code to duplicate the first deployment)

/retest


RP4 Pro - cannot load app after reinstall

Steps to reproduce:
1)install the app on rp4pro
2)uninstall the app
3)install the app again
4)attempt to run the app to pull up its front-end
Observer result:
Application is not being displayed. It seems to be running in the background as there are settings from odin tools available in the pull down menu.

Hello and thank you for your report.
The latest version 1.2.1 introduces a fix for the app not launching in RP4/P devices, which seems to be the issue you're facing. Could you double-check you're running the latest version? See: https://github.com/langerhans/OdinTools/releases/tag/1.2.1
Please report back with any findings!

Tested  build version 1.2.1 and can confirm bug is fixed. You're really nailing it with this app dude! Many thanks!


[Posted] Report database name as schema instead of catalog to resolve compatibility issues with Tableau

report database name as schema instead of catalog
Description

Summary

report database name as schema instead of catalog in getTables and getColumns
implement getSchemas() and getSchemas(string, string) to return list of database names
implement getCatalogs to return empty list
tests update
bump JDBC version from 1.0.2 to 2.0.0, the next major version
documentation for setting up the driver with Tableau and other BI tools will be in separate PRs

Note that as a result of this change, applications using the Timestream JDBC driver programmatically may break, so the version of the driver is bumped to the next major version, 2.0.0.
Previously, databases are reported as catalogs. This PR changes the driver to report databases as schemas instead. This change allows Tableau to generate correct SQL queries to the driver.
How getSchemas and getCatalogs function before changes in this PR
graph TD
    A[getSchemas] --> |returns| G
    G[empty result set]
    G --> H[TABLE_SCHEM -> null]
    G --> I[TABLE_CATALOG -> null]

    B[getCatalogs] --> |returns| E[database result set]
    E --> J[TABLE_CAT database name]

How getSchemas and getCatalogs function after changes in this PR
graph TD
    A[getSchemas] --> |returns| G
    G[database result set]
    G --> H[TABLE_SCHEM -> database name]
    G --> I[TABLE_CATALOG -> null]

    B[getCatalogs] --> |returns| E[empty result set]
    E --> J[TABLE_CAT -> null]

How table metadata is changed
Before:
graph TD
    A[getTables] --> |returns| G
    G[tables result set]
    G --> H[TABLE_CAT -> database name]
    G --> I[TABLE_SCHEM -> null]
    G --> K[other return values unchanged]

After:
graph TD
    A[getTables] --> |returns| G
    G[tables result set]
    G --> H[TABLE_CAT -> null]
    G --> I[TABLE_SCHEM -> database name]
    G --> K[other return values unchanged]

How column metadata is changed
Before:
graph TD
    A[getColumns] --> |returns| G
    G[columns result set]
    G --> H[TABLE_CAT -> database name]
    G --> I[TABLE_SCHEM -> null]
    G --> K[other return values unchanged]

After:
graph TD
    A[getColumns] --> |returns| G
    G[columns result set]
    G --> H[TABLE_CAT -> null]
    G --> I[TABLE_SCHEM -> database name]
    G --> K[other return values unchanged]

Test Results
With changes in this PR, tdvt had a 10 times increase of success rate, and Tableau is able to generate correct SQL queries to the driver.
Results from running existing JDBC driver:
Test Count: 863 tests
        Passed tests: 10
        Failed tests: 853
        Tests run: 863
        Disabled tests: 0
        Skipped tests: 0

Other information:
        Smoke test time: 37.8 seconds
        Main test time: 1175.82 seconds
        Total time: 1213.62 seconds

Results from running JDBC driver on this branch:
Test Count: 863 tests
        Passed tests: 100
        Failed tests: 763
        Tests run: 863
        Disabled tests: 0
        Skipped tests: 0

Other information:
        Smoke test time: 18.45 seconds
        Main test time: 432.35 seconds
        Total time: 450.8 seconds

Summary of Tableau manual testing results

Test Case
Status / Comments / Cause of Failure
Generated SQL Query (if known)

Test Case 1. Validate Schema is displayed properly (all database names are displayed)
PASSED  Database names containing “_”, digit, lower case and upper case can display correctly

Test Case 2. Tables are displayed correctly when its database is chosen as Schema
PASSED  Tables with names including digits, dash, period, or underscore are displayed correctly. No table is shown for the empty database, which is correct.

Test Case 3. Autogenerated SQL queries are correct
CONDITIONALLY PASSED. Colons (":") are not supported by Timestream  in AS statements. The workaround is to manually correct the generated SQL query to remove the colons (":") in AS statements.
Auto-generated query for retrieving meta_queries_test_db.DevOpsMulti:   SELECT "DevOpsMulti"."az" AS "az", "DevOpsMulti"."cpu_utilization" AS "cpu_utilization","DevOpsMulti"."hostname" AS "hostname","DevOpsMulti"."measure_name" AS "measure_name","DevOpsMulti"."memory_utilization" AS "memory_utilization", "DevOpsMulti"."region" AS "region", "DevOpsMulti"."time" AS "time" FROM "meta_queries_test_db"."DevOpsMulti" "DevOpsMulti" LIMIT 10000  This query works and runs successfully. Auto-generated query for retrieving data_queries_test_db.TestComplexTypes: SELECT "TestComplexTypes"."az" AS "az",     "TestComplexTypes"."instance_id" AS "instance_id",    "TestComplexTypes"."measure_name" AS "measure_name",    "TestComplexTypes"."measure_value::double" AS "measure_value::double",      "TestComplexTypes"."region" AS "region",      "TestComplexTypes"."time" AS "time",    "TestComplexTypes"."vpc" AS "vpc"   FROM "data_queries_test_db"."TestComplexTypes" "TestComplexTypes"  LIMIT 10000 This query does not work because Timestream server does not support queries with colons(:) in AS statements, it is not due to the driver, and server-side change is needed to make it work.

Test Case 4. Join 2 tables from the same database
PASSED - Able to join meta_queries_test_db.TestColumnsMetadata1 with meta_queries_test_db.Test.ColumnsMetadata

Test Case 5. Join 2 tables with the different names from different databases
PASSED - Able to join tables with names including digits, dash, period, or underscore.

Test Case 6 a. Join 2 large tables with the same name from different databases
FAILED. Tableau may generate colons (":") in the AS statement, causing query to fail on the server-side, especially when loading large tables.
The initial query that Tableau generated, which works:  SELECT "DevOpsMulti"."az" AS "az", "DevOpsMulti1"."az" AS "az (DevOpsMulti1)",   "DevOpsMulti"."cpu_utilization" AS "cpu_utilization", "DevOpsMulti1"."cpu_utilization" AS "cpu_utilization (DevOpsMulti1)",    "DevOpsMulti"."hostname" AS "hostname", "DevOpsMulti1"."hostname" AS "hostname (DevOpsMulti1)", "DevOpsMulti"."measure_name" AS "measure_name", "DevOpsMulti1"."measure_name" AS "measure_name (DevOpsMulti1)",  "DevOpsMulti"."memory_utilization" AS "memory_utilization", "DevOpsMulti1"."memory_utilization" AS "memory_utilization (DevOpsMulti1)", "DevOpsMulti"."region" AS "region", "DevOpsMulti1"."region" AS "region (DevOpsMulti1)", "DevOpsMulti"."time" AS "time", "DevOpsMulti1"."time" AS "time (DevOpsMulti1)" FROM "sampleDB_2"."DevOpsMulti" "DevOpsMulti" INNER JOIN "meta_queries_test_db"."DevOpsMulti" "DevOpsMulti1" ON (("DevOpsMulti"."az" = "DevOpsMulti1"."az") AND ("DevOpsMulti"."hostname" = "DevOpsMulti1"."hostname") AND ("DevOpsMulti"."region" = "DevOpsMulti1"."region") AND ("DevOpsMulti"."measure_name" = "DevOpsMulti1"."measure_name"))  LIMIT 100 The subsequent query that Tableau generated and sent to the JDBC driver, which does not work: SELECT SUM(1) AS "cnt:DevOpsMulti_E34B84972C4C458CB4D4BB86AD06DE0B:ok" FROM "sampleDB_2"."DevOpsMulti" "DevOpsMulti" INNER JOIN "meta_queries_test_db"."DevOpsMulti" "DevOpsMulti1" ON (("DevOpsMulti"."az" = "DevOpsMulti1"."az") AND ("DevOpsMulti"."hostname" = "DevOpsMulti1"."hostname") AND ("DevOpsMulti"."region" = "DevOpsMulti1"."region") AND ("DevOpsMulti"."measure_name" = "DevOpsMulti1"."measure_name")) HAVING (COUNT(1) > 0) Tableau tried several times to re-run the query above, but all met with failure due to server not supporting queries including colons (“:“) in the AS statement

Test Case 6 b. Join 2 tables with the same name from different databases
PASSED - Able to join data_queries_test_db.TestScalarTypes and meta_queries_test_db.TestScalarTypes.  This test case worked because the tables contain only 4 rows and Tableau did not generate queries including colons in the AS statement.
SELECT "TestScalarTypes"."device_id" AS "device_id", "TestScalarTypes1"."device_id" AS "device_id (TestScalarTypes1)", "TestScalarTypes"."device_type" AS "device_type", "TestScalarTypes1"."device_type" AS "device_type (TestScalarTypes1)", "TestScalarTypes"."flag" AS "flag", "TestScalarTypes1"."flag" AS "flag (TestScalarTypes1)",  "TestScalarTypes"."measure_name" AS "measure_name", "TestScalarTypes1"."measure_name" AS "measure_name (TestScalarTypes1)", "TestScalarTypes"."os_version" AS "os_version", "TestScalarTypes1"."os_version" AS "os_version (TestScalarTypes1)", "TestScalarTypes"."rebuffering_ratio" AS "rebuffering_ratio",  "TestScalarTypes1"."rebuffering_ratio" AS "rebuffering_ratio (TestScalarTypes1)",  "TestScalarTypes"."region" AS "region",  "TestScalarTypes1"."region" AS "region (TestScalarTypes1)",  "TestScalarTypes"."time" AS "time",  "TestScalarTypes1"."time" AS "time (TestScalarTypes1)", "TestScalarTypes"."video_startup_time" AS "video_startup_time", "TestScalarTypes1"."video_startup_time" AS "video_startup_time (TestScalarTypes1)" FROM "meta_queries_test_db"."TestScalarTypes" "TestScalarTypes"  INNER JOIN "data_queries_test_db"."TestScalarTypes" "TestScalarTypes1" ON ("TestScalarTypes"."device_id" = "TestScalarTypes1"."device_id") LIMIT 100

Test Case 7. Columns names and data types are displayed properly for each table
PASSED - Unicode column name displays correctly. Data types varchar, timestamp, boolean, double, and bigint display correctly.

Test Case 8. Filter tables using table name sub-strings
PASSED - Able to filter table names using “.”, “-”, “_”, and text (“Multi“).

For details of Tableau manual testing results, please refer to Tableau Manual Testing Documentation.pdf.
Additional Reviewers
@affonsoBQ
@alexey-temnikov
@alinaliBQ
@andiem-bq
@birschick-bq
@mitchell-elholm
@RoyZhang2022

Let's populate a proper PR description, with the design, summarizing what changes were performed, and providing a summary of what tests are performed.

@alexey-temnikov  Done. Please let me know if you have additional comments

Test Case 3. Can not be failed and passed at the same time. Perhaps just marking it as a fail? as it is not clear from the description what passed.  For both Failures, we need to clearly articulate that failure is not caused by the changes in the JDBC driver, or the driver itself, and service side change is needed to make it work.

As the change is potentially breaking (if the driver is used programmatically), let's articulate that the version number is also increased to 2.0.0 (the next major version).

closing this PR as relating AWS PRs are posted and merged.


Set service.instance.id to k8s.pod.uid if it is not already set

Fixes #612

I think there is 2 bugs, I suggested changes on a few statements but not all of them as there are so many lines that look the same:

It's k8s.pod.uid rather than k8s.pod.id. See K8s Resource PRocessor and specs
It's set(attributes["service.instance.id"], attributes["k8s.pod.uid"]) instead of set(attributes["service.instance.id"], "k8s.pod.uid")

cc @zeitlinger

Thanks Cyrille! You caught my late-night PR bugs. I merged in the changes and re-running tests.

@cyrille-leclerc , I'm going to extract your comments into a future improvement so it doesn't hold up this PR and release.
We'd want to make sure to remove those when using the OTLP gateway, but include them if we're not using them. This should be improved in Helm chart 2.0 anyway.


Support Casbin as the authorization mechanism

Hi, Casbin is an authorization library that supports models like ACL, RBAC, ABAC.
Related to RBAC, Casbin has several advantages:

roles can be cascaded, aka roles can have roles.
support resource roles, so users have their roles and resource have their roles too. role = group here.
the permission assignments (or policy in Casbin's language) can be persisted in files or database (Gorm or Xorm or any popular DBs).

And you can even customize your own access control model, for example, mix RBAC and ABAC together by using roles and attributes at the same time. It's very flexible.
Casbin can provide more flexibility and security than the current way. I saw there's a Allowed method checks the URL with the regex in rule. This kind of matches is already supported by Casbin (see here). So you can directly use them instead of implementing them on your own. I can provide help on porting to Casbin. Let me know if there's any question:) Thanks.
Btw: Casbin is also the authz middleware for Caddyserver (see: https://caddyserver.com/docs/http.authz). But that plugin primarily mediates the access on HTTP path (RESTful). I'm not sure if it fits for the file path in this project.

Hello @hsluoyz
I thank for the suggestion, but how could it be useful in for File Manager's use case?

Hi @hacdias ,

Casbin can replace the Rule and Regexp structs.  Casbin will manage and store the rules for you. You can use the built-in regexMatch() function to implement the regex match. See the RESTful example here: https://github.com/casbin/casbin#examples

AllowNew, AllowEdit, AllowCommands boolean values in User can also be expressed by Casbin rules as action. There are a lot of checkings like this:

if !c.User.AllowNew && r.Method == http.MethodPost {
	return http.StatusForbidden, nil
}

if !c.User.AllowEdit && r.Method == http.MethodPut {
	return http.StatusForbidden, nil
}

With Casbin, you don't need to write this kind of checkings in every function. Just need to put Casbin into a filter that filters all requests (Casbin's middelware for web frameworks all work like this). Then pass in user, URL path and r.Method into casbin.Enforcer.enforce(). Casbin will determine whether to allow the access. So you don't need to write security checks in such many places.

I don't know why the above regex rule and AllowXXX permission are diverged in filemanager, but in Casbin, they can be in the same form of Casbin policy rules. For example, you can use a Casbin model like this:

[request_definition]
r = user, path, action

[policy_definition]
p = user, path, action

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = r.user == p.user && regexMatch(r.path, p.path) && regexMatch(r.action, p.action)

The path is the original regex rule matching. And the action is the permission strings like AllowNew, AllowEdit, AllowCommands. We also use regexMatch() here so you can use a grammar like (AllowNew|AllowEdit) to express multiple permissions. I think it's better than Permissions   map[string]bool.


[V8] make page_selector attribute searchable

It seems that the page selector attribute is not included in CollectionSearchIndexAttributes table because it is missing the $searchIndexFieldDefinition

I tried and it works as it should.


Captcha Solver Integration

I'd like to request integration or inclusion in SERPoscope software the following captcha solving services:

https://www.captchasolutions.com/ - API https://www.captchasolutions.com/document/
https://www.solvecaptchas.com/ - API https://www.solvecaptchas.com/api_document.php

Glenn

Any updates?

captchasolutions : maybe later
solvecaptchas : no (doesn't support recaptcha solving via site key)

Here is another greate website https://www.solverecaptcha.com/ with API documented at https://www.solverecaptcha.com/apidoc/


Subscribe in redux-thunk action creator

I'd to keep the my Meteor interactions in a redux action creator using redux-thunk. Using Meteor.ddp.on("added"..., I can see that the data is being retrieved but the Meteor.collection('keys').find() returns null.
I suspect this is because the call is not wrapped in createContainer but I don't want to do the updates in a React component. Is it possible to maintain a redux store with Meteor data in this way?
export const getKeys = () => {
    const keysSubscription = Meteor.subscribe('keys');
    Meteor.subscribe("keys", {
        onReady: function () {
            console.log('Meteor subscribe ready!');
            const keys = Meteor.collection('keys').find();
            console.log('Meteor keys: ', keys);
            return (dispatch, getState) => {
                dispatch({
                    type: 'GET_KEYS',
                    keys: keys
                });
            }
        },
        onStop: function () {
            console.log("Meteor onStop: ", arguments);
        }
    });
}

I've since tried this via the recommended createContainer and still have the issue where ddp shows my find is working, data is retrieved from Meteor, but collection records are not assigned to the local object.
const MeteorContainer = createContainer(() => {
  const keysSubscription = Meteor.subscribe('keys');
  return {
    meteorUser: Meteor.user(),
    meteorStatus: Meteor.status(),
    loggingIn: Meteor.loggingIn(),
    keysReady: keysSubscription.ready(),
    keys: Meteor.collection('keys').find()
  };
}, Keys);

export default connect(mapStateToProps, mapDispatchToProps)(MeteorContainer);

There was a problem with the server publication.


Adding CI groovy scripts

We are moving the CI groovy scripts here to keep the maintenance up-to-date.
https://adc.luxoft.com/jira/browse/FORDTCN-11160

Let's create a separate folder for all these scripts, e.g. jenkins_utils

Cancel and Delete works fine

Clone doesn't save custom parameter values


Rename doesn't work with files that don't have a .py extension

Describe the bug
Attempting to rename a variable in a file that doesn't end with a .py extension doesn't seem to do anything, the issue seems to occur only with renaming, where other features such as go to definition, references, etc.. seem to work properly.
To Reproduce
Create an extensionless file with a shebang (so it is is detected as a Python file), then try to rename a variable.
Expected behavior
It should be possible to change variable names in files identified as Python which don't have an extension.

@muhzii does that happen even if you open the file as standalone? or only if you open it inside of workspace folder?

@heejaechang I performed the above steps on a file created inside my home directory, and it works. I think it happens only if the file belongs to a project root, in my case it is a git repo directory.

@muhzii thank you for the reply!. can I ask 2 more questions.

does the file under project root use something from the project root? (such as venv), in another word, must it exist under the project root to run properly?

if you put the file in "include" (https://github.com/microsoft/pyright/blob/main/docs/configuration.md), does it work?

I am asking to determine whether 1. there is a workaround 2. fix to put the file under standalone mode is enough.

It's not actually a Python project, just scripts that exist under a project root, so there is no venv etc.. just uses the system's interpreter/ libs.
Tried that but it doesn't seem to work.

As per the issue encountered on my end, it would seem that putting the file in "standalone mode" would suffice, but there might also be use-cases where such files have dependencies from the project itself, in which case I think suggestion no. 2 would not work then?

@muhzii 2 might not be working due to the file extension since we have some code path that checks file extension to be py and pyi. for now, my thinking is if rename is happened on an open file for local symbol, allow renaming.

@heejaechang So, basically, with such allowance in place, renames on symbols that are shared between more than one file in the same project (where the rename action is performed from the extensionless file) will just not work?
Hm, sorry if I ask, but I don't understand how it works right now, can't such check simply be extended so it is wired with shebang detection? i.e. the same way the other features do it.

@muhzii so, figuring out what files depend on other files requires building dependency graph which require parsing/binding and etc which are expensive. that is why there are scoping to limit how much files we process such as checking file extensions or project root.
if we just allow any files under project root, then we need to read every files under the root and try to parse for any rename. so it will be making 99% slower to make 1% work.

can't such check simply be extended so it is wired with shebang detection? i.e. the same way the other features do it.

I am not sure what you mean. can you provide a bit more explanation?
thank you.

@heejaechang, the problem here is that the file in question is not considered part of the project. IMO, we shouldn't prevent rename in such files. We should simply do a local (single-file) rename in this case since we don't know what other files might be associated with it. Currently, the logic refuses to do perform even a local (single-file) rename if the file isn't part of the project. I suspect this is the root of most of the rename bugs that have been filed — including those related to notebooks.

@erictraut ya, that is the fix I am making. @muhzii is asking what about dependent files.

if we just allow any files under project root, then we need to read every files under the root and try to parse for any rename.

I'm not suggesting to blanket allow all the files in a project, although e.g. if a file starts with a #!/usr/bin/env python3 then it should probably behave just the same as other files that has a .py extension, and as such allow it to do project-wide renames which take effect in the relevant files in a project etc..
My suggestion, basically, was to extend the allowance for the renaming action beyond that for files with .py/ .pyi extensions to also detect Python shebangs.. I think such thing would be sensible to do seeing as how other features like resolving definitions and symbol usages already work across different files currently regardless of the extension limitation.

As @heejaechang mentioned, that would be incredibly expensive because we'd need to open and read every file to look for the shebangs. Your use case (where you're using Python files without ".py" suffixes) is very atypical. We wouldn't want to impose such a large overhead on the millions of other pyright and pylance users to accommodate this very unusual case. Out of curiosity, why do your python source files not end in ".py"?

@erictraut Totally agree! Looking for symbols in other extensionless files to rename is certainly not desirable (sorry for not clarifying on this). However, It should probably allow renames in other .py files in the project. Specifically, it would be desirable to have this shebang-based thingy work on the currently open file for renames that is.

Out of curiosity, why do your python source files not end in ".py"?
I only use it for convenient scripts, which could also wrap other functionalities provided by the project etc.

@muhzii are you saying

if you are importing symbols from "*.py" file in the project root (ex, from foo import bar) in shebang-based file under the same project root.
and rename "bar" from file "foo",
we should check the shebang-based file (if it is opened in the editor) whether it is using "bar" from the "foo" and do rename?

I think that scenario, we should open a new issue and gather some feedbacks before adding support.

We determine which files are part of the project at the time the language server starts. This is done by scanning the file system. Dynamically adding files to the project based on shebangs discovered at the time that a file is open would add a bunch of complexity and would lead to inconsistent behaviors, so I think we'd be pretty reluctant to do this.
If you want multi-file rename to work in this case, I recommend that you rename your scripts to end in ".py". Your use case is highly atypical.

the original scenario should be fixed in the next release.

@heejaechang Thanks, yes, that is correct. Such scenario would merely be a nice-to-have here, though.
@erictraut I understand, thanks for your clarification. Well, this is not really a huge annoyance, albeit something that seemed simply odd compared to how everything else works nicely.

This issue has been fixed in version 2022.3.2, which we've just released. You can find the changelog here: CHANGELOG.md


Bug in pusher: Object gets inside the agent

Hello,
I am using this codebase for my project and when I run experiment on the pusher_easy environment the object gets inside the agent and the agent can not grasp it anymore.

@FaisalAhmed0 , thank you for bringing this up. Which Brax version are you currently using? We haven't seen such behavior in Brax 0.10.5


network local ratelimit set URX response flag

Signed-off-by: wangkai19<EMAIL_ADDRESS>Commit Message: network local ratelimit set URX response flag
Additional Description: N/A
Risk Level: low
Testing: ut
Docs Changes: N/A
Release Notes: N/A

Assigning @wbpcode as extension owner for a first pass.
/assign @wbpcode

cc @mattklein123


IP bucketing

Description

bucket visualization based on IP Class
added sort to processed packet data based on destination IP address
added condensing functionality for files containing more than 50 unique connections: grouping together based on value of first byte of address
added prefix finder to find the longest common prefix for addresses in buckets

Checklist:

[ ] Code follows the style guidelines
[x] Code commented in relevant places
[x] Changes to necessary documentation made
[ ] Has test cases for code.

Tests Performed:

[x] Upload data to Datastore
[x] Retreive data from Datastore
[x] Map Visualization
[x] Network Map Visualization
[ ] List other manual test cases performed

Added bucket visualization based on packet protocols and IP classes:

Added visualization based on IP prefixes for more granular distribution (in addition to above visualization):


Feature Request: I'd like to see a way to publish various collections on the home screen for a set number of days.

Is your feature request related to a problem? Please describe.
Similar to how Netflix has lists you can scroll through, I'd like to do this with Plex so users might be presented with an option they hadn't considered before.
Describe the solution you'd like
I'd like to be able to either have a random collection assigned to the screen for a set period of time, or a list of collections that could change on a rotating basis
Describe alternatives you've considered
I can make it work on a limited basis using a method similar to the holiday collections that are able to be pinned to the home screen. I have a list of collections and gave them all a date range. My biggest issues are how they are ordered since you can only use custom sorting on one collection, and how to have them change out. Currently I have dates ranges attached to each one.

isn't this already possible?
  some-template-name:
    smart_label: title.asc
    sort_title: ++0_<<collection_name>>
    schedule: range(<<start_date>>-<<end_date>>)
    delete_not_scheduled: true
    visible_home: true
    visible_shared: true
    visible_library: true

He wants to be able to choose a set of collections and have PMM randomly pick some to put on the Home Screen for a certain period

#717 addition from @kstanleyadams

Problem: Too many collections to display on home screen. Can be slow and less interesting to see the same all the time.
Solution: Create the ability to add collections to a “random sets” to control their visibility as a randomly chosen subset of a group.
e.g.
For a given collection, define:
visible_library: random0
visible_home: random0
visible_shared: random0

And to define random sets:
random_sets:
    random0:
         max_size: 10
    random1:
        max_size: 5

For each random set, aggregate all collections assigned to the random set, and only set the visibility to true for each visible_x attribute for up to max_size number of collections. If the number of collections assigned to the random set is larger than max_size, then a subset should be chosen at random.
This would speed up the home screen a bit, and also allow for the home screen to be freshened up each day or whichever frequency the script is run.

Feature Requests have been moved to https://features.metamanager.wiki.
This Request


Says Ruby version is installed but I can't see it

The cookbook seems to be saying that this system ruby is up-to-date but it doesn't seem to be installed. I am running on Ubuntu.
I have this in my recipe:
rbenv_ruby node['kibana']['ruby_version'] do
  action :install
  root_path node['rbenv']['root_path']
end

rbenv_global node['kibana']['ruby_version'] do
  root_path node['rbenv']['root_path']
end

and I see this message:
  * rbenv_ruby[1.9.3-p125] (system) action install (up to date)
  * rbenv_global[1.9.3-p125] (system) action createRecipe: <Dynamically Defined Resource>
  * rbenv_script[rbenv global 1.9.3-p125 (system)] action run

  * rbenv_script[rbenv global 1.9.3-p125 (system)] action nothing (up to date)
  * script[rbenv global 1.9.3-p125 (system)] action run
================================================================================
Error executing action `run` on resource 'script[rbenv global 1.9.3-p125 (system)]'
================================================================================

Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of "bash"  "/tmp/chef-script20130219-24765-czoav7" ----
STDOUT:
STDERR: rbenv: version `global' not installed
rbenv: version `1.9.3-p125' not installed

Should be fixed on master


Fix deprecation for Python 3.8

dotted/collection.py:254: DeprecationWarning:
    Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated,
    and in 3.8 it will stop working

    class DottedDict(DottedCollection, collections.MutableMapping): [...]

Because this went unaddressed, this library no longer works in Python 3.10+ as collections.abc has been removed.


JAMES-3432 Upload routes test was unstable

One time out of 25 the uploaded content was altered (Different SHA 256 in
the data store). Several Apache CI builds had been failing because of this.
Investigating this, I found that a piped input stream strategy was not
hitting this pitfall (RectorUtils::toInputStream). I thus incriminate
some weird data races on the Reactor side...
Other areas of the code are likely affected as both the Cassandra and the
S3 blobStores relies on those for streaming (only relied upon for
attachment upload).
Changing the BlobStore API should likely be considered:
public interface BlobStore {
    // ...
    Flux<ByteBuffer> read(BucketName bucketName, BlobId blobId);
}

Why:

Supported by both implementation (Cassandra S3)
Avoids intermediate transformations requiring blocking
operations/dedicated thread resources
We convert a Flux[ByteBuffer] => InputStream (to conform to BlobStore API) => Flux[ByteBuffer] (reactor-netty layer)

See https://issues.apache.org/jira/browse/JAMES-3555

https://github.com/linagora/james-project/issues/3896 I believe is related

Sending 2 images as attachments on Mobile, on the recipient's side, one of them displays lossy.

Performance tests shall be conducted...

There is an issue with my proposal: it do not handle exception propagation with the piped stream.

As weird as it sounds https://github.com/apache/james-project/pull/374 seems to be enough


Improve the nper function

Hi guys,
As suggested on issue #13 would be nice to raise a more descriptive message when the provided payment amount is lower than the interest amount.
Please, check it out. Thanks!

@etagwerker thanks for your review. I changed the nper function to calculate the interest amount and use both values at the error message.
Please check it out. Thanks.

@rizidoro Can we have your review in this PR, please? Thanks.

@rizidoro Why should we remove the * 12? If we do that all the tests in spec/financial_spec.rb starts to fail.
Also I don't follow what you mean by maintain the same Excel behavior. Does it mean we should not raise an exception with the message?

Thanks @cleicar!
Running into the same issue.
@rizidoro Any reason why this never made it to master branch? Any concerns about having this extra check?
Thanks in advance.

Hi @grzuy I'm no longer the maintainer of this package.
@PauloHerrera can you review this PR?
Thanks.


Adds tests for random and clustered population types using layers.

NOTE: the interesting test would be something with multiple layers, but not sure how to get that to work here.
You can see the place where I'd use synthpops, and add the layers ['h','s','w','c']

@CWiswell-IDM only comment is to be sure to merge before you make a PR. in this case, master was updated with 30 new commits a full 18 minutes before you made this PR :laughing:
finzi:~/idm/covasim/tests> gits
## CWiswell-IDM_unittest_intervention_change_beta_layers...CWiswell-IDM/unittest_intervention_change_beta_layers [ahead 30]

Arg! Always, always rebase first. :)

PS: The interesting test I hoped to do in here was to shut down layers one at a time (with some days in between) and see that when I'd gone through all of them, there was no more transmission, but I think the only poptype where that is interesting is synthpops?

no that applies to hybrid too


The embedded terminal slows down over time

Windows:
Version: 1.28.2 (system setup)
Commit: 7f3ce96ff4729c91352ae6def877e59c561f4850
Date: 2018-10-17T00:23:51.859Z
Electron: 2.0.9
Chrome: 61.0.3163.100
Node.js: 8.9.3
V8: 6.1.534.41
Architecture: x64
linux (Ubuntu):
Version: 1.28.2
Commit: 7f3ce96ff4729c91352ae6def877e59c561f4850
Date: 2018-10-17T00:20:56.183Z
Electron: 2.0.9
Chrome: 61.0.3163.100
Node.js: 8.9.3
V8: 6.1.534.41
Architecture: x64
So far I experienced this on windows & linux. More significantly on windows.
Steps to Reproduce:

just use the terminal throughout the day
eventually typing becomes laggy and the only fix is to restart vs code

Does this issue occur when all extensions are disabled?: I haven't tried but no new extensions since the last update.
I stopped debugging my app and terminal resumed speed. Maybe it's my app lol. My app uses 100% CPU, and vs terminal is significantly effected, other apps I use. I tried running my app outside of vs code and vs code terminal became laggy instantly. Other apps are not so laggy while my app I'm building is running. Sometimes each keystroke takes more than a second.
Scrolling on linux is slow for some reason regardless of my app running or not. Restarting doesn't help. On linux it doesn't get super laggy like it does on windows.
When doing man rsync or anything scrolling is very slow. I'm pretty certain there is an issue with the terminal now being too slow.

(this is a "me-too" bump)
Me and two other colleagues experience the same thing since a few days also (we keep vscode up to date). I personally experience on both my work laptop (ubuntu 18.04) and personal laptop (arch linux):
Version: 1.28.2
Commit: 7f3ce96ff4729c91352ae6def877e59c561f4850
Date: 2018-10-17T00:20:56.183Z
Electron: 2.0.9
Chrome: 61.0.3163.100
Node.js: 8.9.3
V8: 6.1.534.41
Architecture: x64

Colleague 1: uses ubuntu 18.04 (updates regularly, but have to verify version)
Colelague 2: uses Windows 7 (updates regularly, but have to verify version)

What's in your settings.json? Have you you tried changing the rendererType setting?

{
    "files.autoSave": "onFocusChange",
    "files.eol": "\n",
    "C_Cpp.errorSquiggles": "Disabled",
    "keyboard.dispatch": "keyCode",
    "editor.rulers": [
        80,
        100,
        120
    ],
    "editor.smoothScrolling": true,
    "editor.minimap.enabled": false,
    "editor.minimap.maxColumn": 80,
    "window.titleBarStyle": "custom",
    "window.restoreWindows": "none",
    "editor.folding": false,
    "window.zoomLevel": -1,
    "window.menuBarVisibility": "default",
    "workbench.activityBar.visible": true,
    "C_Cpp.commentContinuationPatterns": [
    ],
    "breadcrumbs.enabled": true,
    "workbench.iconTheme": "file-icons",
    "editor.fontWeight": "bold",
    "editor.quickSuggestions": {
        "other": true,
        "comments": true,
        "strings": true
    },
    "typescript.tsc.autoDetect": "off",
    "npm.autoDetect": "off",
    "jake.autoDetect": "off",
    "gulp.autoDetect": "off",
    "grunt.autoDetect": "off",
    "cmake.configureOnOpen": false,
    "extensions.ignoreRecommendations": true
}

that's on my linux machine.

This is just a duplicate of https://github.com/Microsoft/vscode/issues/56517 changing the rendertype canvas/dom for me it's both slow.


docs: update examples of good commit summaries

Aligns examples with preferences observed by current maintainers.

[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 typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

Aligns examples with preferences observed by current maintainers.
brew typecheck on arm64 led me to this bug https://github.com/sorbet/sorbet/issues/6778.

Thanks @toobuntu!


⚠ API has degraded performance

In 891f0c5, API ($ZESTY_API) experienced degraded performance:

HTTP code: 403
Response time: 1244 ms

Resolved: API performance has improved in 2855dec.


iOS pwa push notification issues

Figured we should just create persistent issue for this given they're numerous and hard to pin down:

push notifications continue to be lost #411
notification reply counts and mention counts and subscribe to stacker counts are wacky

https://github.com/stackernews/stacker.news/assets/34140557/d321e3ba-fe1d-48b3-8354-ac78ff870adb

when I click on notification replies I get sent to really old threads
sat stacking notifications aren't replaced

My deposit notifications are also weird now on Android. I got a "4 sats were deposited in your account" notification but only 1 sat was deposited.
I looked at the logs and they didn't fully explain what was going on. I noticed the bug that is fixed in #751 though.
I didn't change the Android code though. So I am confused. I also wasn't able to reproduce the issue locally. Seems to only affect deposit notifications.

Apple is pulling PWAs for their European users in iOS 17.4:

To comply with the Digital Markets Act, Apple has done an enormous amount of engineering work to add new functionality and capabilities for developers and users in the European Union — including more than 600 new APIs and a wide range of developer tools.
The iOS system has traditionally provided support for Home Screen web apps by building directly on WebKit and its security architecture. That integration means Home Screen web apps are managed to align with the security and privacy model for native apps on iOS, including isolation of storage and enforcement of system prompts to access privacy impacting capabilities on a per-site basis.
Without this type of isolation and enforcement, malicious web apps could read data from other web apps and recapture their permissions to gain access to a user’s camera, microphone or location without a user’s consent. Browsers also could install web apps on the system without a user’s awareness and consent. Addressing the complex security and privacy concerns associated with web apps using alternative browser engines would require building an entirely new integration architecture that does not currently exist in iOS and was not practical to undertake given the other demands of the DMA and the very low user adoption of Home Screen web apps. And so, to comply with the DMA’s requirements, we had to remove the Home Screen web apps feature in the EU.
EU users will be able to continue accessing websites directly from their Home Screen through a bookmark with minimal impact to their functionality. We expect this change to affect a small number of users. Still, we regret any impact this change — that was made as part of the work to comply with the DMA — may have on developers of Home Screen web apps and our users.

Even though this only should affect EU users ("a small number of users"), I guess this makes their lack of priority regarding this more clear.
So I believe we have come to a point where we seriously need to consider writing separate code just for Safari to use Safari push notifications

If you’re already sending push notifications to users in Safari 15 or earlier using Safari Push Notifications, continue sending push notifications to those users. Update your webpage with feature detection to use Push API code if it’s available, or Safari Push Notifications code if it isn’t. For more information about best practices while sending a push notification with APNs, see Sending notification requests to APNs.

-- https://developer.apple.com/documentation/usernotifications/sending_web_push_notifications_in_web_apps_and_browsers
I don't like this but I also want to get rid of this bug since it affects the ~20% of stackers that use iOS.

Seems the way to go unless we want to roll out an iOS app and I'd guess their special push notifications are less buggy.

Someone sent me this when. They tried to turn on push notifications on iOS.

There is some service worker weirdness where it's not active on first render since it goes through some stages iirc, so refreshing the page should fix it.
But I'm also having problems on iOS enabling push notifications again after they were enabled before. Not sure if they turned off by themselves or if I turned them off. I currently get InvalidStateError: Push service initialization failed.

I think we lose the push subscription because the pushsubscriptionchange event has bad browser support (which was already known) but we still need to refresh the subscription regularly (which pushsubscriptionchange was meant for).
This article recommends to resubscribe on every notification:

When subscribing to push notifications, you often receive a PushSubscription.expirationTime of null. In theory, this means that the subscription never expires (in contrast to when you receive a DOMHighResTimeStamp, which tells you the exact point in time when the subscription expires). In practice, however, it's common for browsers to still let subscriptions expire, for example, if no push notifications were received for a longer time, or if the browser detects the user isn't using an app that has the push notifications permission. One pattern to prevent this is to resubscribe the user upon each received notification, as shown in the following snippet. This requires you to send notifications frequently enough for the browser to not have auto-expired the subscription, and you should very carefully weigh the advantages and disadvantages of legitimate notification needs against involuntarily spamming the user just so the subscription doesn't expire. In the end, you shouldn't try to fight the browser in its efforts to protect the user from long forgotten notification subscriptions.

We could try this with some checks that avoid too many resubscriptions.

This is definitely worth a revisit. My autowithdraw notifications now tell me > 1BTC is being withdrawn even when it's one sat.

I am not sure we can fix merging notifications for proper counts on iOS

I know it's unrelated to your comment. I just wanted to confirm that merging remains an issue.

Pretty nutty.


Some comments on the Scraper

First of all, congratulations on an excellent piece of work!
Three things about the Scraper and how it deals with things. I have experienced the situations with MAME and I am sure it goes with every other system

If no gamelist.xml is present, ES knows very well the long names of the games. Instead of pulling the alternate game names from thegamesdb or elsewhere, Scraper should use the original name.
SYMPTOM : Try throwing the four Samurai Shodowns in the roms dir, scrape, and you end up having 4 entries of "Samurai Shodown IV". All with the same image.
SOLUTION : Better leave the original name of the game

If SKIP is pressed during the very painful manual selection of a game, gamelist.xml is not updated and the game has no entry in it at all.
SYMPTOM : Due to that, even if there is a screenshot in the relevant dir, it won't show up.
SOLUTION : When skipped, have Scraper create a default xml entry with unknowns and the screenshot name that should be there.

If I already have an image in the screenshots folder, it is there because I have placed it myself. There is no point in the Scraper replacing that image. If I want to renew, I will delete the screenshot and start over.
SYMPTOM : Scrape when images are present, and the scraper deletes them and places others.
SOLUTION : If screenshot is present, leave it be.

I would go on indicating that most of us use MAME snaps, with names identical to the rom names, so that "-image.jpg" extension is kinda awkward, plus that those are .png, but those problems are easily solved with any decent file renaming and image conversion tool :)
Thank you for taking the time reading this. Again, congratulations.

Hi, It would be great if there was an option to see file names instead of titles or both at the same time.
Also, I think there should be some kind of tolerance when the scraper decides on a game. If a game doesn't meet that tolerance than a manual menu pops up or its skipped.


no details about npm installing packages when doing ng new or ng init

Please provide us with the following information:

OS?

Mac OSX Yosemite

Versions.
angular-cli: 1.0.0-beta.17
node: 5.7.1
os: darwin x64
Repro steps.
on the fresh directory I run ng new dataset-browser
after answering the question of the application I end up looking at the following:
Installing packages for tooling via npm.
Installed packages for tooling via npm.

no details are given even if I run it with -v flag.

This is as verbose as the CLI gets about installing packages right now. A couple of the dependencies are large packages, and the tree to display them all scrolls for days if you run npm install yourself.
Now for my thoughts: Yes, I'd love to see how far in my installation is. That said, the maintainers have some major features which they should and are focusing on. This leads me to believe we're unlikely to see cosmetic work like this until someone with a little weight behind their decisions wants to see it done, the Final release has come and gone, or someone puts in a PR.

A blinking cursor or some sort would do wonders, just my 2 cents.

Progress is now displayed in the latest version.


Add heading support

Change the previous heading API to course to match what's returned from native location
Add real heading support, including listeners
Update docs with heading usage and methods

This includes the commit from #9 but I think it should be squashed once that's merged.

Thank you!


Avoid pushing an error because reserve is decreasing the default HashMap capacity

…ap capacity
This commit makes the reserve size passed as constructor argument, not doing this way has 2 undesired side effects when creating small convex shapes from an array of vertexes:

hash map will allocate more memory than really needed
Godot will print an error every time the reserve call is hit, the error looks like this:

ERROR: Condition "p_new_capacity < capacity" is true.
   at: reserve (./core/templates/oa_hash_map.h:305)

This PR is sponsored by Prehensile Tales and Astera organization

Thanks!


Bare bones DM

[ ] Can see RUP(s)
[ ] Can see recommendation/attachments
[ ] Help text to be determined during UI dev of file attachments
[ ] Can capture decision by moving buttons over to DM from staff
[ ] Add conditions text area that only they can edit to the RUP.  @LisaMoore1 to write description/help text

I think this is related to web #865 and #877.

DM unable to view attachments sent to visible to all staff.

DM unable to edit the conditions field (note that staff also unable to edit their field during any status that I can find)

@LisaMoore1 Both of these issues should be fixed now.

Attachments good but DM still not able to edit the conditions field.  I’ll make another issue to indicate that staff are also unable to edit the conditions field in any status.

@calebissharp Curious how much work/effort it would be to give the DMs the same screen AHs get when they submit for decision (the one that requires them to select the checkbox before OK to officially sign) rather than just a change status message box?  I’m worried there may be legal implications of not notifying DMs they are making a legally binding signature when they “change status”.

@LisaMoore1 Hmm, I'm not sure. I don't think it would be simple though.
Can prioritize if this is a legal requirement though.

@calebissharp Let’s leave the signature screen for now (I’m making a note of this issue number so I can find it again if needed). Closing this because the other elements are resolved.  Thanks!

That works for me!


m_sentPackets sequence fix & some other minor changes

Fix the assert that triggers if you only intermittently send reliable messages
Clean up the acked field which isn't being used

Not sure why this is failing on macOS, I'll investigate.

Huh. It ran fine when it was re-run, and I wasn't able to reproduce.

@gafferongames whenever you have time I'd love to hear your thoughts on this PR. It looks like a great fix to get rid of having to send dummy reliable packets to avoid the issue, but was curious as to what you think.

I'm concerned around the heisenbug on tests. Please run locally on MacOS and loop the tests (while true). If it's an intermittent timing related test failure, then this approach usually catches it.

I believe this has been fixed in another PR. If I'm wrong, please let me know.


Bonfire: Mutations. A solution that shouldn't have passed

Challenge Bonfire: Mutations has an issue.
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36.
I don't think that was the supposed solution and still it passed :D.
My code:
function mutation(arr) {
  return arr[1].toString() !== "hey" && arr[1].toString() !== "neo";
}

mutation(["hello", "hey"]);

It has always been possible to "game" the tests.  It will likely remain so forever.  Imagine for a moment that we put some code in to check for the strings "hey" and "neo" - then you could encode the strings as ASCII characters, etc.  We deliberately leave the solutions open ended to allow creative problem solving.
Ultimately, the only ones who will be "cheated" are those who don't complete the challenges. Also, if they want this sort of code publicly available on their profiles . . more power to them.

You are absolutely right I just made it as a joke :D.


Start-Process doesn't put process in same job group on Windows

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.
[X] Refer to the FAQ.
[X] Refer to Differences between Windows PowerShell 5.1 and PowerShell.

Steps to reproduce
Maybe this isn't a bug but I cannot find any way to actually do this and it feels wrong.
$job = Start-Job -ScriptBlock { start notepad.exe -Wait }
$job

Wait-Job $job -Timeout 10

Stop-Job $job

What I expect to happen here is that notepad will close when the job is stopped but this doesn't happen because somehow the Start-Process has been called in a way that makes it break away from the win32 process job group.

Also, there's this little tidbit. Why does it default to shell execute, that could be the issue...
https://github.com/PowerShell/PowerShell/blob/31b70ecd9fa2a245768f267eae2fb96a0a5ab92d/src/Microsoft.PowerShell.Commands.Management/commands/management/Process.cs#L1892-L1894
Futher down there's this
https://github.com/PowerShell/PowerShell/blob/31b70ecd9fa2a245768f267eae2fb96a0a5ab92d/src/Microsoft.PowerShell.Commands.Management/commands/management/Process.cs#L1949-L1952
But when I look at the processes in process explorer they haven't been created in the same job group which is what I think should happen unless create process is used with creation flags, like breakaway or new process group which I believe is not the case.
This is creating headaches for me because I need to cleanup the process tree when the job i stopped, the job is stopped because it's taking to long and this is creating more problems. I need the process tree to die when I stop jobs forcefully.
Expected behavior
I would have expected all processes to end up in the same Win32 job and that notepad was killed when I stopped the job.

Actual behavior
Notepad keeps running even after job is stopped.

Error details
No response
Environment data
Name                           Value
----                           -----
PSVersion                      7.4.6
PSEdition                      Core
GitCommitId                    7.4.6
OS                             Microsoft Windows 10.0.26100
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Visuals
No response

This works the same way as with cmd.exe - if we start Notepad.exe from cmd.exe and then stop the cmd.exe this will not stop the Notepad process.

That is true but cmd.exe is not running inside a Job, if we use Process Explorer to investigate the job tab, we see no job is associated with cmd.exe but if you go back to my earlier screenshot from powershell, we can see that powershell is running in a job group and that it has a job group. Maybe this job group is created by Windows Terminal but I don't understand how it manages to break away from the job group. This is not the default behavior... but I cannot find the root cause of it.

pwsh works as cmd.exe - it never terminates GUI applications, only console applications.

This is specifically about jobs, and how jobs should operate, they should not allow processes to escape job. The whole point of a job group is to keep the processes together. Otherwise you end up having to write a lot of cleanup code which isn't really helpful when you already have process jobs for this.

Lets look at what a Console Process Grouip is.

The signal is only received by those processes in the group that are attached to the same console as the process that called GenerateConsoleCtrlEvent.

I suggest trying with a SUBSYSTEM=CONSOLE rather than SUBSYSTEM=WINDOWS program.
Windows programs don't inherit the parent's console and don't use console events to manage lifecycle. They use typically use GetMessage and WM_QUIT.

With GUI-subsystem applications,  you're fundamentally out of luck, for the reasons explained in @rhubarb-geek-nz's comment.
With console-subsystem applications, be sure to invoke them directly rather than via Start-Process, then you'll get the desired behavior.

A background job in PowerShell is just a hidden PowerShell process and, like regular PowerShell sessions, does not  use Windows Jobs  to keep track of processes it launches - however, a synchronously launched, still-running console application is terminated if you use Stop-Job or Remove-Job -Force (but not if you kill the hidden process running the job).
However, in the context of remoting, Windows Jobs are used, which means that even Start-Process-launched processes are terminated along with the remote session; see:

#16001

Okay, notepad was a bad choice. I think I can get this to work now. Thanks for clearing things up.


adata.write() -> cannot save

...Trying to use adata.write() to save a results file - running into the same issue over and over. I tried uninstalling and reinstall both scanpy as well as h5py.

results_file = 'NG2019_MCF10A2.h5ad'
adata.write(results_file)

OSError: Unable to create link (name already exists)

Above error raised while writing key 'genes' of <class 'h5py._hl.group.Group'> from /.

Above error raised while writing key 'genes' of <class 'h5py._hl.group.Group'> from /.

Above error raised while writing key 'raw/var' of <class 'h5py._hl.files.File'> from /.
...

Versions:

...

Could you report your version numbers? Could you also show us the repr of your anndata object?

Oh, by version numbers I meant not just anndata but the dependencies as well. I'm wondering in particular about the version of h5py. The output of something like sinfo(dependencies=True) would be great
If you try writing to a different path, are you able too? It kind of looks like you're writing to a file that already exists, though that should just overwrite the file.

I am not sure what was causing this error, but it must be somewhat idiosyncratic as the issue is resolved in a fresh env. Thanks! Closing this.

I am not sure what was causing this error, but it must be somewhat idiosyncratic as the issue is resolved in a fresh env. Thanks! Closing this.
Hi, I met same problem, how did you solve it?

Hi @GouQiao - it's been a while since this specific incident so I don't 100% remember / have the code anymore. However, I have run into this problem in general when using AnnData and it's usually resolved by one of two paths:

Check the version of h5py that you have installed and perhaps it is too new and an older version resolves the issue.
Some components of AnnData are not implemented in the function, .write_h5ad(). One example that comes to mind is the umap or pca transformer. These objects are not handled well by .h5py (at least natively in my experience) and are better off saved independently as dictionaries using pickle. That being said, I think there is probably a more robust solution I am not aware of - I know in several instances transformers are able to be saved (e.g., the Scanpy tutorials).

Does this help at all? Happy to be of further assistance if possible.

HI everyone,
Going through the exact same issue, BUT what you suggested does not work for me :

h5py version I have allows me to save a different integrated dataset  in the same environment with the h5py==3.6.0
When comparing the Anndata structure / content of the 2 objects I am working on (the one i am failing to save vs. the one I have saved successfully) "pca" and "umap" are in both as you can tell from the screenshots.

@GouQiao did you find a way to solve this ?
Thank you @mvinyard for sharing your solution tho !

1st screen (52844 x 1340) is the one for which the writing does not work...


Compiled xgboost does not do proper resource cleanup

Latest Nuitka, standalone
src
import multiprocessing

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import GridSearchCV

import xgboost as xgb

if __name__ == "__main__":
    print("Parallel Parameter optimization")
    X, y = fetch_california_housing(return_X_y=True)
    xgb_model = xgb.XGBRegressor(n_jobs=multiprocessing.cpu_count() // 2, tree_method="hist")
    clf = GridSearchCV(
        xgb_model,
        {"max_depth": [2, 4, 6], "n_estimators": [50, 100, 200]},
        verbose=1,
        n_jobs=2,
    )
    clf.fit(X, y)
    print(clf.best_score_)
    print(clf.best_params_)

once compiled and ran, it gives this error at the end
Nuitka: Launching 'main.dist\main.exe'.
Parallel Parameter optimization
Fitting 5 folds for each of 9 candidates, totalling 45 fits
0.688555675183378
{'max_depth': 4, 'n_estimators': 50}
Exception ignored in: <compiled_function Booster.__del__ at 0x0000019D3FFEEC40>
Traceback (most recent call last):
  File "C:\Users\Divine\Desktop\OSSCON~1\NUB9E3~1\MAIN~1.DIS\xgboost\core.py", line 1753, in __del__
AttributeError: 'NoneType' object has no attribute 'XGBoosterFree'

    def __del__(self) -> None:
        if hasattr(self, "handle") and self.handle is not None:
            _check_call(_LIB.XGBoosterFree(self.handle))
            self.handle = None

this is where the issue is rased from

There is sort of a know issue with how Python shuts down code.
For some modules, the globals are released and set to None, and then this can happen. I think this is a duplicate of some sorts in this regard. And I think, Python shutdown treats compile code differently there.


drop python 3.6 support and fix build failures

The interpret-community gated builds started failing recently with the pytorch 2.0.0 update.  Trying to get packages working on python 3.6 has become quite difficult recently and involves a lot of pinning due to so many other OSS packages dropping python 3.6 support.  Hence, this PR tries to:
1.) Drop python 3.6 support.  Now we will primarily test on python 3.7, 3.8 and 3.9
2.) Fix the build failures currently occurring on main

Codecov Report
Patch coverage has no change and project coverage change: -0.18 :warning:

Comparison is base (964087c) 87.83% compared to head (da3d821) 87.66%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #557      +/-   ##
==========================================
- Coverage   87.83%   87.66%   -0.18%
==========================================
  Files          62       62
  Lines        4094     4094
==========================================
- Hits         3596     3589       -7
- Misses        498      505       +7

Flag
Coverage Δ

unittests
87.66% <ø> (-0.18%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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


Non-resolvable parent POM

When trying to build this project from a clone I got the error "Non-resolvable parent POM: Could not find artifact org.springframework.cloud:spring-cloud-build:pom:1.0.0.BUILD-SNAPSHOT".
I Googled and found the comment on issue #13 of spring-cloud/spring-cloud-config about using mvn --settings .settings.xml compile to fix this.
I can create a pull request for the readme to add this between points 3 & 4 if that works for you.

sure

N.B. all the other projects have an auto-generated README.adoc which includes generic instructions for building etc. Might be a good opportunity to move this project to the same pattern?


Define an inbox endpoint

This is the actor's inbox, which is an ordered collection of activities addressed to the user as defined here: https://www.w3.org/TR/activitypub/#inbox. This will use the /actor/{actor_ID}/inbox syntax. This should also support the sharedInbox specification as described here: https://www.w3.org/TR/activitypub/#actor-objects

 Implement the Inbox endpoint


Configure Status

Currently status of a user appears to be determined based on if you're active in that tab or not. I can see it also being useful to be able to set your status to a particular state (e.g Do-Not-Disturb) and include a status message (e.g "will be back in 30 min"). Is this enhancement possible?

I think a feature in this direction probably makes sense, but I'm not sure what the best form for it is.
We'd need to do some careful thinking about the UX details of things like "do they expire after X time" and "does something happen if you message someone who's away" and "what are the valid states?".  E.g. the do-not-disturb functionality might be best implemented by closing the Zulip window entirely (or having a button that also disables desktop notifications during the period).

I can see the status UX indicating two pieces of information:

Zulip presence (icon): tells you whether a user is active, away, offline, DND, etc; basically how readily you can contact them with Zulip; this is set and cleared automatically, except for DND which is manually set and overrides other states until you manually clear it
state (text): tell if there's something special going on with the user, e.g working from home; this is manually set and stays set until you manually clear it

I don't think anything special needs to happen if you message a user who is away or DND - it's basically an honor system that others can choose to obey or ignore. In addition to setting the status, you could offer a quick button to toggle desktop notifications - that way if someone wants to go DND and get no interruptions, they can do so.
How does the active/away functionality work now? Is it just based on whether or not the browser window is currently in focus? If so, is it possible to make it detect if the user is currently at the computer (I imagine that functionality may not be exposed to the browser)?

The active/idle info is based on the time since the user last focused the window.  "away" means the user doesn't have an active connection to the server at all (e.g. they don't have a window open or their computer is suspended).

Thanks for the clarification!

Also is the active/idle detection enhanced at all with the desktop client (e.g to detect when the account is unlocked/in use verses locked)?

I don't believe the desktop client does anything different, though obviously it could.

Ok, I've created a separate ticket for that feature in https://github.com/zulip/zulip-desktop/issues/26

As far as the UX, what do you think about making this an option under the gear menu? You could select from one of these states:

normal
do not disturb
working remotely

All this would do is change the user's icon color in the list of users. It would still be an honor system for whether or not someone decides to message you while you're DND, however hopefully most people will think twice if they see your icon color is the color for DND. Thoughts?

Hmm, yeah, I think something soft like that which just changes display is probably a good place to start.
I think probably the best place to put controls for your status would be above the user list, rather than the gear menu, so that it's naturally next to where you see other people's status...
@wdaher what do you think?

That's a good idea keeping it close to the user list
On January 31, 2016, at 10:40 PM, Tim Abbott<EMAIL_ADDRESS>wrote:
Hmm, yeah, I think something soft like that which just changes display is probably a good place to start.
I think probably the best place to put controls for your status would be above the user list, rather than the gear menu, so that it's naturally next to where you see other people's status...
@wdaher what do you think?
—
Reply to this email directly or view it on GitHub.￼

Sorry for the delay. Truthfully, I recommend against adding a user-configurable status — in my experience, users just forget to set (or un-set) it and it rapidly becomes pretty useless.
Having said that, +1 on trying to put this configuration close to the user list, though.
(I guess this might require always showing your own name there?)

The ability for users to set their status (Online, Away, Busy, Invisible) is an absolutely vital feature (invisible especially so).  See Skype and rocket.chat for examples of how this works well.
Rocket.Chat

Skype

In reply to @timabbott questions:

do they expire after X time - not necessary, but would be cool if you could set a user expiry time (such as expire in 24 hours).

does something happen if you message someone who's away - I would say no - this is more about signalling

what are the valid states? - in t he first instance make it user configurable - a short text field which can have text "I'm in a meeting" or "Working from home", or "Do not disturb".

I don't like the idea that if you minimise your zuplip window that automatically triggers a DND status - that would penalise people who like to reduce clutter on their desktops.

This a great and must feature to have. I would personally love to have this. In v1 I think we could just go with the following status -

Online
Away
Busy
Invisible

cc - @timabbott, @rishig, @showell can we increase the priority for this feature?

A note for others until this feature is added: I just changed my name under Settings/Full name to "away until July 1 -- Alec". This means any other user who sends me a PM or looks for me in the user list will see I'm not around. Worked for my specific case of "I will be absent from my computer until some date"..

I haven't read the thread carefully, but I believe much of this has been resolved in https://zulipchat.com/help/status-and-availability.
One thing that's being actively worked on is showing users' statuses more prominently.

Closing as resolved.


Android: Don't show "Saved Stories 0"

While the feed list is loading, there's a blue 0 unread count on Saved Stories. If the number is 0 (or below), just hide the counter.

fixed in #938


Adjustment for compose preview config

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#586  👈 (View in Graphite)
#585
#584
#582
#579
#578
takahirom/refactor-plugable/2024-12-01

This stack of pull requests is managed by Graphite. Learn more about stacking.

@sergio-sastre I think I'm ready to release this. Do you have any concerns?

@sergio-sastre Thanks as always. I think I'm ready to release this. Do you have any concerns?

Codewise looks good to me. 😊

Merge activity

Dec 5, 2:22 AM EST: A user started a stack merge that includes this pull request via Graphite.