net/http: Content-Length values are not validated when Transfer-Encoding: chunked is present

Go version
go version devel go1.23-b8ac61e6e6 Fri Feb 2 23:14:07 2024 +0000 linux/amd64
Output of go env in your module/workspace:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/root/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/root/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/app/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/app/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='devel go1.23-b8ac61e6e6 Fri Feb 2 23:14:07 2024 +0000'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1902103395=/tmp/go-build -gno-record-gcc-switches'

What did you do?
Started a web server using net/http, and sent a request with an invalid Content-Length header, as well as a Transfer-Encoding: chunked header. (e.g. GET / HTTP/1.1\r\nHost: a\r\nContent-Length: blahblahblah\r\nTransfer-Encoding: chunked\r\n\r\n0\r\n\r\n)
What did you see happen?
I received a 200 response, as though the invalid Content-Length value were not sent.
What did you expect to see?
I expected to see a 400 response because the Content-Length value was invalid.

This discrepancy was found using the HTTP Garden.

According to https://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.4.4.p.5, if the message does include a non-identity transfer-coding, the Content-Length must be ignored.

This is the expected behavior, please check out:
https://github.com/golang/go/blob/b8ac61e6e64c92f23d8cf868a92a70d13e20a124/src/net/http/transfer.go#L630-L666

RFC 9110 is clear that gateway servers must reject messages that contain an invalid Content-Length value:

Likewise, a sender MUST NOT forward a message with a Content-Length header field value that does not match the ABNF above, with one exception: a recipient of a Content-Length header field value consisting of the same decimal value repeated as a comma-separated list (e.g, "Content-Length: 42, 42") MAY either reject the message as invalid or replace that invalid field value with a single instance of the decimal value, since this likely indicates that a duplicate was generated or combined by an upstream message processor.

A gateway server that is implemented on top of net/http has no way of conforming to this rule. Caddy's reverse proxy violates the above rule for this reason.

To be clear, I'm not saying that valid Content-Length values should be interpreted when a Transfer-Encoding header is present. They should definitely be ignored. What I'm saying is that invalid Content-Length headers should invalidate the request regardless of the presence of a Transfer-Encoding header.
This is what nearly all other HTTP implementations do, including AIOHTTP, Apache httpd, Bun, cherrypy, daphne, Deno, fasthttp, Gunicorn, Hyper, Hypercorn, Jetty, Lighttpd, Mongoose, Nginx, Node.js, LiteSpeed, Passenger, Apache Tomcat, Tornado, OpenWrt uhttpd, Unicorn, Uvicorn, WEBrick, HAProxy, Pound, and Varnish.

According to https://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.4.4.p.5, if the message does include a non-identity transfer-coding, the Content-Length must be ignored.

RFC 2616 is obsoleted by RFC 7230, which is itself obsoleted by RFC 9112.
The current version of the text that you're referencing is this:

If a message is received with both a Transfer-Encoding and a Content-Length header field, the Transfer-Encoding overrides the Content-Length. Such a message might indicate an attempt to perform request smuggling (Section 11.2) or response splitting (Section 11.1) and ought to be handled as an error. An intermediary that chooses to forward the message MUST first remove the received Content-Length field and process the Transfer-Encoding (as described below) prior to forwarding the message downstream.

Note that it does not say to ignore the Content-Length header; it instead says that an intermediary that chooses to forward a message containing both Content-Length and Transfer-Encoding must remove the Content-Length header. Since it also says that an intermediary MUST not forward requests with invalid Content-Length headers, my original point stands.

It is a bit confusing about the statements of Content-Length across these RFCs, the the statement from the latest RFC 9112 still looks ambiguous to me.

Note that it does not say to ignore the Content-Length header; it instead says that an intermediary that chooses to forward a message containing both Content-Length and Transfer-Encoding must remove the Content-Length header. Since it also says that an intermediary MUST not forward requests with invalid Content-Length headers, my original point stands.

In my opinion, an intermediary only removes the Content-Length header and does't check the value of header is valid or not .

After reading through the sections of Content-Length in RFC 9110 and 9112, along with browsing the source code in net/http, I find that rejecting requests with invalid Content-Length headers regardless of the presence of a Transfer-Encoding header seems like more rational than ignoring them if that's also how other mainstream HTTP implementations do.
I'll send a CL for this, but I need opinions from @neild before we submit it.

In my opinion, an intermediary only removes the Content-Length header rather than checks the value of header is valid or not prior to remove it .

I agree that the RFCs could be a little clearer about this, but I think the text really doesn't support your claim.
From RFC 9110, section 8.6:

Likewise, a sender MUST NOT forward a message with a Content-Length header field value that does not match the ABNF above, ...

It's not clear from this text alone whether it's saying that the forwarded version of the message must not contain an invalid Content-Length header, or that messages containing invalid Content-Length headers must not be forwarded in any form.
But the rest of the sentence clears up that ambiguity:

... with one exception: a recipient of a Content-Length header field value consisting of the same decimal value repeated as a comma-separated list (e.g, "Content-Length: 42, 42") MAY either reject the message as invalid or replace that invalid field value with a single instance of the decimal value, since this likely indicates that a duplicate was generated or combined by an upstream message processor.

Given that they're making a point to explicitly say that normalization is acceptable when the Content-Length is a comma-separated list of equal values, this implies that normalization is not acceptable when the Content-Length is otherwise invalid.
This is further supported by RFC 9112, section 6.3:

If a message is received with both a Transfer-Encoding and a Content-Length header field, the Transfer-Encoding overrides the Content-Length. Such a message might indicate an attempt to perform request smuggling (Section 11.2) or response splitting (Section 11.1) and ought to be handled as an error. An intermediary that chooses to forward the message MUST first remove the received Content-Length field and process the Transfer-Encoding (as described below) prior to forwarding the message downstream.

(emphasis mine)
This implies that the intermediary must choose to forward the message before before removing the Content-Length field. Since an intermediary MUST NOT forward a message with an invalid Content-Length header, it must be that invalid Content-Length headers invalidate the message, regardless of the presence of the Transfer-Encoding header.

On second thought, I think the current behavior is fine. I was misinterpreting the RFC.


Expose native imperative API

Feature Request
Expose .play, .pause and other native player functionalities
Why it is needed
Changing play/pause state by updating a prop is slow.... it can be in the order of 30ms in a typical app and considerably more if the JS is doing some heavy work. This makes fine control of the player using React not really an option. (Notwithstanding Android's abysmal codec startup time but that's another story! Not much we can do about that)
By exposing play/pause methods the player state can be changed with millisecond response times. (From experience the round-trip time of JS calling a native method which then calls a JS callback is <6ms in total even in a bad case so it's much faster)
Possible implementation
Needs methods added to the native and JS code along with the type declarations. Might have to update Java to keep some MediaPlayer state information around to handle .play and .pause being called on a MediaPlayer instance that's in a state that doesn't allow it. For instance, from memory calling .pause on a media player that PlaybackStopped state throws an exception.
I'm working on a fork shortly so might be able to contribute back if it's agreed other people would like this feature too.

is this completed? I can't find any method for this.


EXR export - Feature enhancement

Would it be at all possible to export EXRs (and alphas) when dealing with 32bit files. This would be a great addition.
Thanks so much for your time.

No, sorry. That looks to be an unsupported filetype for photoshop, natively, so we would be unable to support that, as far as I know.


Improve lib.py.

Several of the BaseLib methods document list of str items as the only acceptable type for dict values. Since at least fontshell allows value to be of any type, I've changed the docs to reflect Any.

Remaining errors after ae7328f to be collected in https://github.com/robotools/fontParts/issues/775:
lib.py:34: error: Signature of "_reprContents" incompatible with supertype "BaseObject"  [override]
lib.py:34: note:      Superclass:
lib.py:34: note:          @classmethod
lib.py:34: note:          def _reprContents(cls) -> List[str]
lib.py:34: note:      Subclass:
lib.py:34: note:          def _reprContents(self) -> List[str]
lib.py:75: error: "BaseGlyph" not callable  [operator]
lib.py:80: error: "BaseGlyph" not callable  [operator]
lib.py:83: error: Incompatible types in assignment (expression has type "Callable[[], Any]", variable has type "Optional[BaseGlyph]")  [assignment]
lib.py:83: error: Argument 1 to "reference" has incompatible type "BaseGlyph"; expected "Callable[[], Any]"  [arg-type]
lib.py:112: error: "BaseFont" not callable  [operator]
lib.py:118: error: "BaseFont" not callable  [operator]
lib.py:123: error: Incompatible types in assignment (expression has type "Callable[[], Any]", variable has type "Optional[BaseFont]")  [assignment]
lib.py:123: error: Argument 1 to "reference" has incompatible type "BaseFont"; expected "Callable[[], Any]"  [arg-type]

@typesupply are you ok with relaxing the value to be any type?

normalizeLibValue also allows any type except None, btw.

The value limitations in methods like __setitem__ are incorrect. The lib is constrained by the property list requirements. Keys must be strings. Values can be any type that can be written into a property list value. I recall that normalizing values was incredibly hard because determining if something can be converted to property list from the Python representation requires a ton of code. Property lists have no concept of "nothing", so None is always rejected.

From plistlib:

Values can be strings, integers, floats, booleans, tuples, lists, dictionaries (but only with string keys), bytes, bytearray or datetime.datetime objects.

Maybe we could just point to the plistlib doc instead of enumerating everything ourselves. Or we could do what the UFO spec does and point to Apple's DTD.

For the sake of clarity and explicitness, I suggest extending normalizeLibValue to accommodate/reject the types specified in the plistlib docs, and annotate BaseLib to reflect these changes, e.g., with LibValueType or similarly appropriate alias. Unless I'm misunderstanding, I don't see why this would require tons more code. The isinstance in the normalizer just has to evaluate a list of several types instead of just None.

My concern back then with using isinstance was that there are many situations where the incoming object isn't an instance of the standard Python types, but behaves like one. My concern was primarily focused on environments that use Apple's AppKit (notably RoboFont). The values there returned by controls aren't automatically converted from the AppKit types (NSInteger, NSString, etc.) to their Python equivalents. I was worried about plistlib choking on these. (My memory is hazy, but I seem to recall this happening sometimes. It looks like PyObjC now handles isinstance for at least strings. Dictionaries still fail, but they would fail in plistlib so that's not a concern.) My plan way back in the day was to do the conversions manually inside of normalizeLibValue but that was a huge amount of work and I let plistlib do the validation on UFO write.
I just looked at the plistlib code and it does something similar to what you suggest: a sequence of isinstance tests. We could make LibValueType all of the types that plistlib tests for and use that in normalizeLibValue as you suggest.
Thanks for pressing on this!

Yes, I agree with Tal; changing the validator to test for the accepted types (and recursively for dictionaries) is the thing to do here. Thank you @knutnergaard for pushing on this!

My pressure!
Since I'm already working on BasLib, I can take a crack at the normalization and annotation improvements.

@benkiel @typesupply I ended up referencing a new common value type type-lib-value in the documentation, rather than listing all the possible types. The TypeError in the normalizer does list all the types, though.

@knutnergaard thank you for this!


preserve the stable webhook logger names we had before

I dropped the queue name being added to the logger in https://github.com/knative/pkg/pull/1991 but forgot to keep the webhook logger names stable
/assign @vagababov

/retest

/retest

blah TestMetricsExport
/retest

blah TestMetricsExport
/retest


Prefer block version of File.open to ensure file handle gets automatically closed

I'm not sure what ruby 2.4.x is complaining about. Maybe adding an ensure instead of using the block form will make it happy. It might be a little more readable in this case, too.

@chessbyte can you rebase?  #19414 was merged so we won't be testing ruby 2.4 anymore on master.  2.5 and 2.6.

@jrafanie Ah, I hadn't realized that was merged. You can probably disregard my comment then. :)

@jrafanie Ah, I hadn't realized that was merged. You can probably disregard my comment then. :)

yeah, it was pretty uncontroversial since you can still bundle with 2.4.  We only test in travis on 2.5 and 2.6 now.

I reverted this PR because we're giving devs 2 weeks to get off of ruby 2.4.  See #19427


feat: support oneof on inputs for the generated client

Motivation and Context

OpenApiV2 backend now supports input unions, we need to reflect that in the generated client
Marketing Changelog
Add support of input unions into generated operations client

Checklist

[ ] run make test
[ ] PR title must follow conventional-commit-standard
[ ] tests and/or benchmarks are included
[ ] documentation is changed or added
[ ] commit message and code follows the Code of conduct

@devsergiy we should add a test to the testsuite
q: will this work with the ORM or do we need to update it so that the oneOf directive is supported?
q: draft or review?


Allow for the Management of Users

Hey, @b-per - me again 😁.  I'd love the flexibility to be able to create & remove users via this Terraform provider. I am not seeing a pre-existing user-related endpoint to allow for this. Is this something that you can support?
Example from Fivetran Terraform provider: https://registry.terraform.io/providers/fivetran/fivetran/latest/docs/resources/user

There are endpoints but they are not extremelly documented.
One of the key differences as well with other configs is that we don't create a user but we invite her/him (e.g. it requires some action on the user side to accept the invite). From a quick look this seems to be the way Fivetran works as well so this scenario should still work in the Terraform way of handling config.
I might have a look in the future to try to add the capability but I won't be able to work most likely until after Coalesce.

Also @anaghshineh to add additional info to what @b-per said, currently, users are only "deactivated" in our systems (soft-deleted) rather than fully removed, including separate records for licenses that also need to be provisioned. i.e -> It's not as simple as some things.
Full SCIM capabilities (via the dbt Cloud Rest API) are currently in development, which should reduce the amount of complexity necessary to remove users.
That being said, I agree it would be amazing to have via Terraform. I'm a big fan, and look forward to helping Benoit where I can on this.

Thanks, @b-per! I was actually having a similar conversation with @Stevedow99, and he mentioned the invites as well. That makes sense.
He pointed me to these two endpoints:
List Invites
Retrieve Invite
A few questions:

Do invites expire?
Looks like invited users are not included in results from hitting the users endpoints. Will the id associated with an invited user be the same as the id for the user after exercising their invite?
Can you send another invite to a user if they've already been invited?

@will-sargent-dbtlabs - that's awesome. Agree that it would be amazing to be able to do this via Terraform. Selfishly, would love for you to work on this before Coalesce. Let me know if there are more details I can provide!

I just did some quick initial testing of the invite API and here is what I found:

Do invites expire?

Yes, invites expire. I don't remember if this is after 1 or 2 weeks

Looks like invited users are not included in results from hitting the users endpoints. Will the id associated with an invited user be the same as the id for the user after exercising their invite?

From what I saw the id when querying https://emea.dbt.com/api/v2/accounts/<accid>/invites/ is not the same as the id of the user once they accept the invite. I guess that the first id is the invite_id and not the future user_id

Can you send another invite to a user if they've already been invited?

Yes, each invite triggers a new email to the user
I have not tested attaching different permissions with each API call though

Reopening if some people are keen to investigate/implement it

Here's my use case for consideration:
We use SSO / Okta which is managed by our central IT team who have a process to add users and we (data platform team) use Terraform to control what users can do. This is true of a number of our platforms e.g. Snowflake.
Therefore for DBT Cloud via Terraform:

We allocation User Groups ✔
We want to allocate User License ⛔

In other words the alternative we are not doing is using dbtcloud_license_map

Hi @kcd83
I am not sure that I understand your need here, or if it is related to this issue.
What you are after is to assign people to licenses directly and not using the SSO license mapping?
When the central IT team manages those users, do they assign them SSO groups specific to dbt Cloud?

@b-per we have a bit different use-case, but related to the lack of user management capabilities in the provider - we want to inject user-level development credentials using Terraform, so we don't have to pass them to users to enter them manually in dbt Cloud.

Hi @jaklan .
I just did some tests and our APIs don't allow users or a service token with Account Admin access to set credentials for other users.
This action is only allowed when connected as the user for which the credentials need to be set. So, this is not something I would be able to add to Terraform for now.

@b-per thanks for verifying. It seems we would need to wait for Redshift SSO in dbt Cloud then (as I expect it's going to happen faster than changes in API to allow the above)

@b-per sorry for the delay

What you are after is to assign people to licenses directly and not using the SSO license mapping?

Yes, central IT team assigns users to dbtcloud, and is not responsible for setting a specific SSO groups specific to license, i.e. differentiating read-only vs developer
We need terraform to be able to assign licenses to existing users


Entering a due date also sets received date [7]

Describe the Bug:
When selecting a due date in the annual, quarterly or milestone reports, it also sets the received date to your selection. Selecting a received date however does not change the due date.
Probability (how likely the bug is to happen, scored from 1-5):5
Effect (how bad the bug is when it does happen, scored from 1-5):2 (possibly higher if they don't notice it happened)
Steps to reproduce the behaviour:

Add a quarterly, annual, or milestone report to a project revision.
Set &/or change the due date
The received date will change as well

Screenshots:

Thank you @Sepehr-Sobhani ! Tested in dev by:

creating a new project
Updating an existing project

While creating or updating a project, the received date is no longer auto-populated based on the due date.


Yandex

Version: 8.7.0
All features for Yandex still broken ?

Still doesn't work on yandex image search.

on my macos 14.5 with firefox 128.0.3  the yandex web search results are correctly blocked, but often "uBlacklist has blocked x sites Show" doesn't appears at first, it only appears after a page refresh.
if  i turn on ublock origin, nothing works but for some reason the change is not instant i.e  ublacklist will keep working for a few minutes  after enabling ublock, (no idea what triggers the change, even restarting the browser doesn't make it change instantly from working to broken)
i also tried it on Mullvad browser and it doesn't work at all, maybe because it has NoScript extension installed by default ?

Yandex stops randomly working after paging


Single line comment typo spec/bundler/ssl_certs/certificate_manager_spec.rb#L14

certificates...
https://github.com/bundler/bundler/blob/9cfe9bd9be4b44bde1fd71e6faab494509ceb7b6/spec/bundler/ssl_certs/certificate_manager_spec.rb#L14

may I claim this ticket?
Also, is it okay that a clean fork of the repository has 50+ errors in bin/rake spec?

This is fixed at https://github.com/bundler/bundler/pull/6794


Adding link tag to head when there is a pagination component?

In the current /images search, we have
<Head>
  {images?.prevPage && (
    <link
      rel="prev"
      href={convertUrlToString(
        toLink({ ...imagesRouteProps, page: (page || 1) - 1 }, 'unknown')
          .as
      )}
    />
  )}
  {images?.nextPage && (
    <link
      rel="next"
      href={convertUrlToString(
        toLink({ ...imagesRouteProps, page: page + 1 }, 'unknown').as
      )}
    />
  )}
</Head>

It is not found in the current /works search page.
As part of the new search hub, should we add it to all pages if there is a pagination component?

The  tag defines the relationship between the current document and an external resource.
The rel="next" and rel="prev" link attributes are used to indicate the relations between a sequence of pages to search engines.
By making the relations between a series of pages clear to search engines using the pagination attributes, you give search engines context and prevent duplicate content.

Google announced in 2019 it wasn't using it anymore:

Google claims it has figured out how to best deal with series of paginated pages, and therefore stopped using therel="next" and rel="prev" link attributes.

But from what I (quickly) researched, various articles still recommended for other tools and a11y purposes - although I can't seem to find how it's helping a11y.

I feel like it doesn't hurt to keep it but we should align the site in using it/not and maybe see if there's a way of linking it to pagination components - keeping in mind they can be used more than once in a page.


RGBtoHex failure

The function RGBtoHex has to be updated.
The following lines have to be exchanged:
line 108 ff:
if (rgb.r.length == 1) { rgb.r = '0' + rgb.r; }
if (rgb.g.length == 1) { rgb.g = '0' + rgb.g; }
if (rgb.b.length == 1) { rgb.b = '0' + rgb.b; }
to replaced with:
if (hex[0].length == 1) { hex[0] = "0" + hex[0];}
if (hex[1].length == 1) { hex[1] = "0" + hex[1];}
if (hex[2].length == 1) { hex[2] = "0" + hex[2];}
Sorry.

Will correct it with the next version containing more Color type support.

Added the fix to the latest pull request #16.

Merged into master.


add webhook

add registration webhook
add integration test case for hub operator

/assign pmorie
/assign deads2k

/assign pmorie
/assign deads2k

I think cleanup probably wants a dynamic client and I think we want some bits in library-go or at least  understand why they aren't.  I may bring in some of the openshift cert management, but this looks fine to start
/lgtm
/approve


Add recommended event model for "select_content" event.

Description & motivation
Adds a model for the select_content recommended event as suggested in the README for recommended events.
Tests have not been added (the existing recommended events don't seem to have them).
I'm not sure how to run the tests (more developer docs here might help, some of us don't really work with python and it's not obvious to us!), specifically
dbt test
It's not clear how we're meant to set up our profiles to run the tests, more docs here would help! Copying over some config from a working project seems to work :heavy_check_mark:
python -m pytest .
This fails but I don't think it's related to the change here.
$ python3 -m pytest .
===================================================================================== test session starts =====================================================================================
platform linux -- Python 3.10.6, pytest-7.2.2, pluggy-1.0.0
rootdir: /home/liam/src/dbt-ga4
collected 0 items / 1 error

=========================================================================================== ERRORS ============================================================================================
________________________________________________________________________________ ERROR collecting test session ________________________________________________________________________________
Defining 'pytest_plugins' in a non-top-level conftest is no longer supported:
It affects the entire test suite instead of just below the conftest as expected.
  /home/liam/src/dbt-ga4/unit_tests/conftest.py
Please move it to a top level conftest file at the rootdir:
  None
For more information, visit:
  https://docs.pytest.org/en/stable/deprecations.html#pytest-plugins-in-non-top-level-conftest-files
=================================================================================== short test summary info ===================================================================================
ERROR
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================================================================== 1 error in 0.11s ====================================================

Checklist

[x] I have verified that these changes work locally
[x] ~I have updated the README.md (if applicable)~ Not applicable
[ ] I have added tests & descriptions to my models (and macros if applicable)
[ ] I have run dbt test and python -m pytest . to validate existing tests

That test error indicates that your .env file is in the wrong place (I believe). You are definitely correct that it is not an issue with your PR.
Also note that tests run automatically when submitting a new PR request under Show all checks in GitHub.

Thanks for contributing! We'll take any help we can get in fleshing out models for all recommended events

My pleasure @adamribaudo-velir, happy to be able to help, and thank you very much for this extremely useful lib.


fix(WindowLevelTool): fix window level tool for non-pre-scaled PT images and images with small dynamic range

Context
In the window level tool, there is a special getPTScaledNewRange method implemented which is applied for all PT images, however it should only be used for pre-scaled (SUV) PT images.
Furthermore the default multiplier is too large for images with small dynamic range.

Changes & Results
With the changes in this PR getPTScaledNewRange is only used for pre-scaled PT images. Furthermore the calculated ratio is used as multiplier also for images with small dynamic range instead of the default multiplier.

before:
https://github.com/cornerstonejs/cornerstone3D/assets/24232962/46e02e2b-8d72-4afe-8feb-147b157f8110
after:
https://github.com/cornerstonejs/cornerstone3D/assets/24232962/aa24299e-3fad-4f3b-bb64-d7091ef466c8
Testing

Checklist
PR

[x] My Pull Request title is descriptive, accurate and follows the
semantic-release format and guidelines.

Code

[x] My code has been well-documented (function documentation, inline comments,
etc.)

[x] I have run the yarn build:update-api to update the API documentation, and have
committed the changes to this PR. (Read more here https://www.cornerstonejs.org/docs/contribute/update-api)

Public Documentation Updates

[] The documentation page has been updated as necessary for any public API
additions or removals.

Tested Environment

[x] "OS: macOS
[x] "Node version: 18
[x] "Browser: Chrome

Thank you for your feedback and for your great work on this project in general!

I'm surprised you have a non scaled PT and still the window level is at 1 1

In PT when the unit is PROPCNTS (proportional to counts) or PROPCPS (proportional to counts/sec), the reconstruction algorithm is free to apply any factor to all pixel values (because of the proportional part). Therefore you can end up with and image with window level 1 1 even without scaling to SUV values.

I think your changes will break the cases where PT is unscaled and window level is high as a result
Like the one here
https://viewer-dev.ohif.org/viewer?StudyInstanceUIDs=<IP_ADDRESS>.4.1.145<IP_ADDRESS>.7009.2403.334240657131972136850343327463

I tested the study you linked and it works as I would expect:
https://github.com/cornerstonejs/cornerstone3D/assets/24232962/962524e1-2f45-42be-880b-7f104eafeb13
Instead of only y-axis window-center it also supports the x-axis window-width operation and the multiplier makes sense. Basically it behaves like other modalities, which is what I would expect.

So by design we limited the XAxis multiplier to not work on PT since that is usually the expected behvaiour in viewers. @salimkanoun Maybe you know more on this?

humm i don't think there are absolute rules here.
However the proposed PR is pretty good in my opinion, make sense to use the PET rule only for PET that has been prescaled and then fallback to a common rule

@salimkanoun How about the left and right manipulation? since right now we only allow brightness change with up and down interaction

Well in PET the thing to avoid is having a minimal value of the lut under 0, as value are always positive.
So usually there only the width change witch correspond to changer the upper bound of the VOI settings.
Changing the center could work but with the condition the lower bound of the VOI is always >=0 (and so refuse value < 0).
What I can say is that I saw manufacturer allowing both direction for VOI tools but the add value wasn't too much (and more prone to loose the contrast you want).
So i'm not sure about what is the best...
My personal opinion : It's easier interaction to keep only one direction and let user choose other VOI settings using another GUI with Min and Max of the LUT clearly displayed (like colorbar you showed me).
However this PR only apply to non prescaled PET so it is not a major breaking change. To me if the PET is not prescaled treating it like all other images is ok for me.


[Rumble] Extract description, view count

Before submitting a pull request make sure you have:

[x] At least skimmed through contributing guidelines including yt-dlp coding conventions
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[ ] Bug fix
[x] Improvement
[ ] New extractor
[ ] New feature

Description of your pull request and other information
Extract description and view count, closes #2846.

These are "useless" features and requires 2 webpage downloads
IMO don't merge this.

It is clearly not useless as someone have requested it (#2846). It is a shame additional requests are needed for it, but it sometimes can't be helped

useful - thanks

Found this bug when I was trying to get description on Rumble videos. It would be nice if this feature can be put behind a feature flag like --include_description.
Personally, I think this should be the default for -J because the amount of time necessary for the second page scrape is inconsequential in comparison to the time it takes to download the video file.


Merging from Johnny's fork

I have changes to push to give us a clean build once this is transferred and pull request complete.


Node condition status does not return to False in filelog

Node condition status does not return to False in filelog
As of NPD v0.8.3, the filelog will never return to False once the condition status is True, except by restarting the NPD.
// monitorLoop is the main loop of log monitor.
func (l *logMonitor) monitorLoop() {
	defer func() {
		close(l.output)
		l.tomb.Done()
	}()
	l.initializeStatus()
	for {
		select {
		case log, ok := <-l.logCh:
			if !ok {
				glog.Errorf("Log channel closed: %s", l.configPath)
				return
			}
			l.parseLog(log)
		case <-l.tomb.Stopping():
			l.watcher.Stop()
			glog.Infof("Log monitor stopped: %s", l.configPath)
			return
		}
	}
}

https://github.com/kubernetes/node-problem-detector/blob/v0.8.3/pkg/systemlogmonitor/log_monitor.go#L126-L147
Is this the expected behavior? I would expect the status to be changed back to False if it no longer matches the rules.

Yeah, this is expected behavior.
For filelog, there is only pattern to trigger the condition, but nothing to set it back.
We thought about supporting a pattern to reset it back, but that is not added.
The custom plugin does support switch between True/False, which you could probably use.

Thank you for your comment.

For filelog, there is only pattern to trigger the condition, but nothing to set it back.
We thought about supporting a pattern to reset it back, but that is not added.

I understand.

The custom plugin does support switch between True/False, which you could probably use.

log-counter seems to be the same behavivor with the filelog plugin. I'm going to use log-counter as a custom plugin!

Hi
Is this still the case or now the filelog or any custom plugin will return to False after sometime?


Update bazel build to use new naming convention

By default, Gazelle now uses the last component of the Bazel package, rather than go_default_library as the go_library name.
This causes problems when the naming conventions do not match.
https://github.com/bazelbuild/bazel-gazelle/issues/988
Adding support for the new naming convention should not break anything that depends on using the old naming convention, because the Gazelle option import_alias makes aliases to the libraries and this allows the old naming convention to still work.
There's also a minor update in dependencies.bzl and some additional Gazelle directives so that Gazelle doesn't break things when it runs.

I'm very excited for this to merge

Looks good, just waiting for CI now.

Anything holding this up from getting merged?


Error Initialising Platform

Upon installing I get this error when rebooting Homebridge:
[2/19/2020, 4:02:01 AM] [Onkyo] Initializing Onkyo platform... [2/19/2020, 4:02:01 AM] TypeError: Cannot read property 'forEach' of undefined     at new OnkyoAccessory (/usr/local/lib/node_modules/homebridge-onkyo/index.js:72:22)     at receivers.forEach.receiver (/usr/local/lib/node_modules/homebridge-onkyo/index.js:36:22)     at Array.forEach (<anonymous>)     at OnkyoPlatform.createAccessories (/usr/local/lib/node_modules/homebridge-onkyo/index.js:35:13)     at new OnkyoPlatform (/usr/local/lib/node_modules/homebridge-onkyo/index.js:28:8)     at Server._loadPlatforms (/usr/local/lib/node_modules/homebridge/lib/server.js:337:32)     at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:90:36)     at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:59:10)     at Object.<anonymous> (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)     at Module._compile (internal/modules/cjs/loader.js:721:30)     at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)     at Module.load (internal/modules/cjs/loader.js:620:32)     at tryModuleLoad (internal/modules/cjs/loader.js:560:12)     at Function.Module._load (internal/modules/cjs/loader.js:552:3)     at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)     at executeUserCode (internal/bootstrap/node.js:342:17)     at startExecution (internal/bootstrap/node.js:276:5)     at startup (internal/bootstrap/node.js:227:5)     at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3) [2/19/2020, 4:02:01 AM] Got SIGTERM, shutting down Homebridge...
I use Homebridge Config UI so I let that modify my config.json (below)
Is there something wrong with my config or is there a bug with homebridge-onkyo?
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:20",
"port": 12345,
"pin": "123-45-678"
},
"accessories": [
{
"accessory": "Smartglass",
"name": "Xbox",
"liveid": "FD00B10BB08F55CC",
"consoleip": "<IP_ADDRESS>"
},
{
"accessory": "WeMo",
"name": "Fan",
"description": "Bedroom Fan",
"wemo_name": "Fan"
},
{
"accessory": "WeMo",
"name": "Horse Light",
"description": "Living Room Horse Light",
"wemo_name": "Horse Light"
},
{
"accessory": "WeMo",
"name": "Christmas Lights",
"description": "Bedroom Christmas Lights",
"wemo_name": "Fairy Lights"
},
{
"accessory": "SkyQ",
"name": "Sky Q",
"ipAddress": "<IP_ADDRESS>"
},
{
"name": "Living Room TV",
"ip": "<IP_ADDRESS>",
"mac": "C4:36:6C:A5:30:D2",
"keyFile": "",
"prefsDir": "~/.webosTv",
"pollingInterval": 5,
"legacyTvService": false,
"showInputButtons": false,
"volumeControl": "false",
"volumeLimit": 100,
"channelControl": false,
"mediaControl": false,
"inputs": [
{
"appId": "com.webos.app.hdmi1",
"name": "Apple TV"
},
{
"appId": "com.webos.app.hdmi2",
"name": "Sky"
}
],
"notificationButtons": [
"Motion Detected: Garden",
"Motion Detected: Garage"
],
"infoButtonAction": "INFO",
"accessory": "webostv"
}
],
"platforms": [
{
"name": "Config",
"port": 8080,
"auth": "form",
"theme": "red",
"tempUnits": "c",
"sudo": true,
"debug": false,
"log": {
"method": "file",
"path": "/Users/Hazza/.homebridge/homebridge.log"
},
"platform": "config"
},
{
"name": "Harmony Hub",
"hubIP": "<IP_ADDRESS>",
"cleanCache": false,
"publishAllTVAsExternalAccessory": true,
"TVAccessory": true,
"mainActivity": "Play Xbox",
"platform": "HarmonyHubWebSocket"
},
{
"name": "Onkyo",
"receivers": [
{
"name": "Onkyo AVR",
"model": "TX-L50",
"ip_address": "<IP_ADDRESS>",
"default_input": "net",
"default_volume": "10",
"max_volume": "35",
"poll_status_interval": "0",
"map_volume_100": true,
"volume_dimmer": false,
"switch_service": false,
"filter_inputs": false
}
],
"platform": "Onkyo"
}
]
}

I'm pretty sure it's because the developer is trying to write to a const array_inputs

Can you check which version of the plugin you have? I'm trying to match your stack trace to the code and it's not lining up. You can also try to update to the latest version.

Nevermind, I got it matched up now. Investigating.

Nevermind, I got it matched up now. Investigating.

Cheers, let me know if you need anything else for me! (I am running the latest version fyi)

@cbrandlehner made some changes recently around the inputs handling. Looks like he's expecting inputs to be defined, which you don't have. His example in the README.md shows the setup like this:
"inputs": [                     {                         "input_name": "TV",                         "display_name": "TV"                     },                     {                         "input_name": "AUX",                         "display_name": "PS4"                     }                 ]
Try adding an array of the inputs you want and see if that resolves your problem. Beyond that, @cbrandlehner will have to help you.

@Hazza42 this should be fixed with pr #47
Please reopen if the problem still exists after update to 0.7.8

Thanks, but I’m afraud I’m getting a new error this time:
[2/28/2020, 11:44:48 PM] [Onkyo] Initializing Onkyo platform...
[2/28/2020, 11:44:48 PM] [Onkyo] Configuration does not contain INPUT configuration.
[2/28/2020, 11:44:48 PM] [Onkyo] Continuing without INPUT select options.
[2/28/2020, 11:44:48 PM] SyntaxError: Unexpected token ] in JSON at position 13
at JSON.parse ()
at OnkyoAccessory.createRxInput (/usr/local/lib/node_modules/homebridge-onkyo/index.js:236:19)
at OnkyoAccessory.setUp (/usr/local/lib/node_modules/homebridge-onkyo/index.js:175:8)
at new OnkyoAccessory (/usr/local/lib/node_modules/homebridge-onkyo/index.js:171:8)
at receivers.forEach.receiver (/usr/local/lib/node_modules/homebridge-onkyo/index.js:36:22)
at Array.forEach ()
at OnkyoPlatform.createAccessories (/usr/local/lib/node_modules/homebridge-onkyo/index.js:35:13)
at new OnkyoPlatform (/usr/local/lib/node_modules/homebridge-onkyo/index.js:28:8)
at Server._loadPlatforms (/usr/local/lib/node_modules/homebridge/lib/server.js:337:32)
at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:90:36)
at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:59:10)
at Object. (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
at executeUserCode (internal/bootstrap/node.js:342:17)
at startExecution (internal/bootstrap/node.js:276:5)
at startup (internal/bootstrap/node.js:227:5)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
[2/28/2020, 11:44:48 PM] Got SIGTERM, shutting down Homebridge...

too bad :-/

@Hazza42 your log does not show the version number of the plugin.
As I am missing a debug line in the log - can you please double check the version you are using?

@Hazza42
I uploaded a new version 0.7.16.
With debug enabled it will create a log like this. I also fixed a problem with reading the configuration.
[2/29/2020, 10:41:04 AM] [Onkyo] Initializing Onkyo platform...
[2/29/2020, 10:41:04 AM] [Onkyo] Creating 1 receivers...
[2/29/2020, 10:41:04 AM] [Onkyo] **************************************************************
[2/29/2020, 10:41:04 AM] [Onkyo]   homebridge-onkyo version 0.7.15
[2/29/2020, 10:41:04 AM] [Onkyo]   GitHub: https://github.com/ToddGreenfield/homebridge-onkyo
[2/29/2020, 10:41:04 AM] [Onkyo] **************************************************************
[2/29/2020, 10:41:04 AM] [Onkyo] start success...
[2/29/2020, 10:41:04 AM] [Onkyo] Debug mode enabled
[2/29/2020, 10:41:04 AM] [Onkyo] name Onkyo Stereo
[2/29/2020, 10:41:04 AM] [Onkyo] IP <IP_ADDRESS>
[2/29/2020, 10:41:04 AM] [Onkyo] Model TX-NR609
[2/29/2020, 10:41:04 AM] [Onkyo] Zone main
[2/29/2020, 10:41:04 AM] [Onkyo] volume_dimmer: true
[2/29/2020, 10:41:04 AM] [Onkyo] filter_inputs: true
[2/29/2020, 10:41:04 AM] [Onkyo] Configuration contains an INPUTS object.
[2/29/2020, 10:41:04 AM] [Onkyo] This is the list of INPUTS after converting from an object into an array: { fm: 'fm' }
[2/29/2020, 10:41:04 AM] [Onkyo] Input filtering is finally true
[2/29/2020, 10:41:04 AM] [Onkyo] poll_status_interval: 0

@cbrandlehner
Updated to 0.7.16, not sure how to enable debug mode, but this is the new log created:
[2/29/2020, 11:13:55 AM] [Onkyo] Initializing Onkyo platform...
[2/29/2020, 11:13:55 AM] [Onkyo] **************************************************************
[2/29/2020, 11:13:55 AM] [Onkyo]   homebridge-onkyo version 0.7.16
[2/29/2020, 11:13:55 AM] [Onkyo]   GitHub: https://github.com/ToddGreenfield/homebridge-onkyo
[2/29/2020, 11:13:55 AM] [Onkyo] **************************************************************
[2/29/2020, 11:13:55 AM] [Onkyo] start success...
[2/29/2020, 11:13:55 AM] [Onkyo] Configuration does not contain proper INPUTS configuration.
[2/29/2020, 11:13:55 AM] [Onkyo] Continuing without INPUTS filter option.
[2/29/2020, 11:13:55 AM] SyntaxError: Unexpected token ] in JSON at position 13
at JSON.parse ()
at OnkyoAccessory.createRxInput (/usr/local/lib/node_modules/homebridge-onkyo/index.js:241:19)
at OnkyoAccessory.setUp (/usr/local/lib/node_modules/homebridge-onkyo/index.js:180:8)
at new OnkyoAccessory (/usr/local/lib/node_modules/homebridge-onkyo/index.js:176:8)
at receivers.forEach.receiver (/usr/local/lib/node_modules/homebridge-onkyo/index.js:36:22)
at Array.forEach ()
at OnkyoPlatform.createAccessories (/usr/local/lib/node_modules/homebridge-onkyo/index.js:35:13)
at new OnkyoPlatform (/usr/local/lib/node_modules/homebridge-onkyo/index.js:28:8)
at Server._loadPlatforms (/usr/local/lib/node_modules/homebridge/lib/server.js:337:32)
at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:90:36)
at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:59:10)
at Object. (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
at executeUserCode (internal/bootstrap/node.js:342:17)
at startExecution (internal/bootstrap/node.js:276:5)
at startup (internal/bootstrap/node.js:227:5)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
[2/29/2020, 11:13:55 AM] Got SIGTERM, shutting down Homebridge...

start homebridge with -D parameter to enable debug.
homebridge -D

@cbrandlehner
Ah cheers, here’s the full debug log:
[3/1/2020, 9:33:13 AM] [Onkyo] Initializing Onkyo platform...
[3/1/2020, 9:33:13 AM] [Onkyo] Creating 1 receivers...
[3/1/2020, 9:33:13 AM] [Onkyo] **************************************************************
[3/1/2020, 9:33:13 AM] [Onkyo]   homebridge-onkyo version 0.7.16
[3/1/2020, 9:33:13 AM] [Onkyo]   GitHub: https://github.com/ToddGreenfield/homebridge-onkyo
[3/1/2020, 9:33:13 AM] [Onkyo] **************************************************************
[3/1/2020, 9:33:13 AM] [Onkyo] start success...
[3/1/2020, 9:33:13 AM] [Onkyo] Debug mode enabled
[3/1/2020, 9:33:13 AM] [Onkyo] name Onkyo
[3/1/2020, 9:33:13 AM] [Onkyo] IP <IP_ADDRESS>
[3/1/2020, 9:33:13 AM] [Onkyo] Model TX-L50
[3/1/2020, 9:33:13 AM] [Onkyo] Zone main
[3/1/2020, 9:33:13 AM] [Onkyo] volume_dimmer: true
[3/1/2020, 9:33:13 AM] [Onkyo] filter_inputs: false
[3/1/2020, 9:33:13 AM] [Onkyo] Configuration does not contain proper INPUTS configuration.
[3/1/2020, 9:33:13 AM] [Onkyo] Continuing without INPUTS filter option.
[3/1/2020, 9:33:13 AM] [Onkyo] Input filtering is finally false
[3/1/2020, 9:33:13 AM] [Onkyo] poll_status_interval: 0
[3/1/2020, 9:33:13 AM] [Onkyo] defaultInput: net
[3/1/2020, 9:33:13 AM] [Onkyo] defaultVolume: 10
[3/1/2020, 9:33:13 AM] [Onkyo] maxVolume: 35
[3/1/2020, 9:33:13 AM] [Onkyo] mapVolume100: true
[3/1/2020, 9:33:13 AM] [Onkyo] avrSerial: <IP_ADDRESS>
[3/1/2020, 9:33:13 AM] [Onkyo] eventDebug: INFO (connecting) Connecting to <IP_ADDRESS>:60128 (model: TX-L50)
[3/1/2020, 9:33:13 AM] SyntaxError: Unexpected token ] in JSON at position 13
at JSON.parse ()
at OnkyoAccessory.createRxInput (/usr/local/lib/node_modules/homebridge-onkyo/index.js:241:19)
at OnkyoAccessory.setUp (/usr/local/lib/node_modules/homebridge-onkyo/index.js:180:8)
at new OnkyoAccessory (/usr/local/lib/node_modules/homebridge-onkyo/index.js:176:8)
at receivers.forEach.receiver (/usr/local/lib/node_modules/homebridge-onkyo/index.js:36:22)
at Array.forEach ()
at OnkyoPlatform.createAccessories (/usr/local/lib/node_modules/homebridge-onkyo/index.js:35:13)
at new OnkyoPlatform (/usr/local/lib/node_modules/homebridge-onkyo/index.js:28:8)
at Server._loadPlatforms (/usr/local/lib/node_modules/homebridge/lib/server.js:337:32)
at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:90:36)
at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:59:10)
at Object. (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
at executeUserCode (internal/bootstrap/node.js:342:17)
at startExecution (internal/bootstrap/node.js:276:5)
at startup (internal/bootstrap/node.js:227:5)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
[3/1/2020, 9:33:13 AM] Got SIGTERM, shutting down Homebridge...

@Hazza42
This is a duplicate of #55
TX-L50 is not on the list of supported Onkyo receivers
Thank you for all the problem reports. This really helped improving the code. :-)
In this case, please check the troubleshooting section of the documentation and read the WIKI.
Closing this issue for now.

No problem!
I don’t suppose the TX-L50 is likely to be supported anytime soon? Sadly I couldn’t get it to work with any of the supported receivers!

@Hazza42
unfortunately we would need a skilled developer, having access to this kind of receiver to test with it, willing to join the project. For me this is beyond what I can contribute.


Infinite error reporting windows force me to reboot

macOS version:
ProductName:	Mac OS X
ProductVersion:	10.15.5
BuildVersion:	19F101
Kap version:
Version 3.3.1 (<IP_ADDRESS>9)
Steps to reproduce

Install a program like Tripmode (disallows certain apps to access the internet when using a hotspot) and don't allow Kap acces to the internet
I think you have to wait for it to update or something? Atleast the error I saw was something with an URL...

Current behaviour

You get a error window telling you making a connection failed which you can click away
A few seconds later, you get the window again, but this time it keeps popping up so fast that you can't click them away or use your system so you have to reboot the computer.

Expected behaviour

No errors 🚀

Workaround

Quit Kap before enabling programs like Tripmode.

Hey @bobvandenberge , sorry about that experience. We have fixed this and released a patch in 3.3.2
Can you allow Kap to access the internet for a bit, so it can receive that update? You should not see this error after that.

Seems to have fixed problem. Thanks @karaggeorge!


Adds "binary" exercise

Raises an exception to account for bad input.

I like it, thanks :)
Heads up: we're going to be adding a problem called "all-your-base" which does generic conversions between two different bases (so you might want to ignore the trinary, octal, and hexadecimal problems).

I can't comment on the nim—if you have any idea where I can find people who might be interested in helping review pull requests and port code that's always welcome.


Minor typos fixed

'asthetically' could've been a funnier typo. So close! (Friday afternoon humour here).

Many thanks, Oliver.  There seems to be no end to my typos!!  I've fixed this in 'develop' branch.  Will be part of next release.


Question about containers

When running in parallel like the example given, are those containers docker containers? Or will Cypress only use docker containers if you specify something like container: cypress/included:6.8.0? Just curious if the action is spinning up docker images behind the scenes.

The Cypress GH Action does not spawn or create any additional containers - it only links the multiple containers spawned using the matrix strategy into a single logical Dashboard run and into splitting the specs amongst the machines. See the Cypress parallelization guide for the explanation.


Problems with Rust execution

Hey,
I am really exited for your plugin and are looking forward to use it, if I use it in TS, everything works fine. However, I need to get the same information your example provides for TS in Rust.  When I try to follow your explanation about how to do so I encoutner following error.
I am new to Tauri and Rust, so it's probably my fault, I still would appreciate help a lot :D
use tauri_plugin_system_info::utils::{SysInfo, SysInfoState};
error[E0603]: module `utils` is private
  --> src\lib.rs:10:31
   |
10 | use tauri_plugin_system_info::utils::{SysInfo, SysInfoState};
   |                               ^^^^^ private module
   |
note: the module `utils` is defined here
  --> C:\Users\leonb\.cargo\registry\src\index.crates.io-6f17d22bba15001f\tauri-plugin-system-info-2.0.7\src/lib.rs:15:1
   |
15 | mod utils;
   | ^^^^^^^^^

I could replicate this, thanks for pointing this out. I guess it was my mistake when migrating from V1 plugin.
I will fix it.

Fixed in v2.0.8.
See https://docs.rs/tauri-plugin-system-info/2.0.8/tauri_plugin_system_info/ for the exposed rust code.

Thank you very much for the quick response and the fix. I really appreciate it!


Move testing tex file for draft and delete unused PDFs

This PR fixes an issue caused by #82 and #84 being merged in quick succession, where the draft paper.tex was not put in the right folder
This PR also removes both the draft and publication PDFs from the testing resources, since #82 switched testing from PDF to tex files

Thanks!!

@tarleb I'm still working on making all of the tests pass. currently figuring out why the draft flag isn't getting considered correctly everywhere


Change build process to not need a personal access token

Currently, the build process to create the web side from the repository is running on Travis CI, and publishes the result by pushing to the gh_pages branch.
For that, it's using a GH_TOKEN variable configured in the project settings, which is a personal access token.
This token was previously created by @maxim-tschumak, and after he left the organization, and thus lost the write rights, a new one was created today by me (@ePaul).
This token gives read and write rights to all repositories I have access to, in my name. Unfortunately there seems to be no way of creating a token which has access just to a single repository.
This induces those risks:

If I ever leave the organization, my token automatically loses write access to the repository, and thus breaks the publishing of new versions.
If something goes wrong and some attacker gets hold of the token, that person can impersonate me on all repositories – both my personal ones, and ones in organizations where I have access.

We should think about setting up the build process in a way that a personal token is not needed. A possible solution might be using a repository-specific deployment key.

Ideas: use github action for this (ask @vadeg)

Yes, this should actually work. I found a howto describing a similar use case as ours.

I have found several GitHub Actions (check here). Most of them require GH personal access token. Build process consists of several actions requires push

Generate HTML from Asciidoc and push to the gh-pages branch
Generate PDF and EPUB
Create issues in Zally

GitHub pages support Jekyll static site generator. Perhaps with help of jekyll-asciidoc the first action can be solved. But the rest two still require token.
One of the options is to create a machine user to push to gh-pages and create issues in Zally.

deployment keys can have write access (checkbox when adding it to the settings)
github actions can use deployment keys, personal tokens (which we want to avoid) or "github tokens", which we don't understand yet, but might be what we want to use.

@ePaul how do you do releases currently? I have a bunch of different scripts but I am not how up to date they are.

I tested GH action in a forked repo. Seems works fine.
Pull request to check: vadeg/restful-api-guidelines#2
Link to API guidelines deployed by PR: https://vadeg.dev/restful-api-guidelines/#introduction.
The question I have is when it should published? Publish on every merge to master branch?
@tfrauenstein @tkrop @ePaul

@vadeg yes, that is our strategy. Every merge to master should get immediately published.

:+1:

@tkrop I am still testing and need to add Zally rules creation.

I have successfully managed to deploy guidelines using Github actions, but there is a problem with creating issues in other repository. According to the documentation about GITHUB_TOKEN its permissions are scoped to this repository

The token's permissions are limited to the repository that contains your workflow.

But we need to create issues in another repository. I don't see any options except creating a Github app or bot user which would have permissions to create issues in another repo.
Please share you thoughts If you have other ideas how to do this.

@vadeg will ask in open-source guild whether there are any guidelines/best practices for bot user registration and/or handling.


Increase Athena timeout

Drastically increase Athena timeout, since we have a query running for longer than the expected waiting time.

Limits on the AWS side are quite generous, so the error we're getting is raised by our own code:
/usr/local/bundle/bundler/gems/register-common-c7247f6529f1/lib/register_common/adapters/athena_adapter.rb:38:in `wait_for_query': RegisterCommon::Adapters::AthenaAdapter::QueryTimeoutError (
RegisterCommon::Adapters::AthenaAdapter::QueryTimeoutError)
        from /home/x/r/lib/register_ingester_oc/services/exporter_service.rb:74:in `execute_sql'
        from /home/x/r/lib/register_ingester_oc/services/exporter_service.rb:62:in `export_all_json'
        from /home/x/r/lib/register_ingester_oc/services/exporter_service.rb:28:in `call'
        from /home/x/r/lib/register_ingester_oc/apps/oc_exporter.rb:31:in `call'
        from /home/x/r/lib/register_ingester_oc/apps/oc_exporter.rb:16:in `bash_call'
        from bin/export-oc-data:8:in `<main>'


Benp/add changelog

@martenson @bramwelt this is in response to issues you logged; if you have time for a review, I'd appreciate your feedback. I did some lightweight grok'ing of the commit history to construct the info after 1.30.2

Thanks @martenson I addressed your comments and will go ahead and merge now.
We can go through a second round of updates if there's still confusion, but this gets us a relatively up-to-date changelog and that's cool.


Issues solved/weakened by PHP RFC: Parameter Type Widening

:tada: PHP RFC: Parameter Type Widening got landed and will be available in PHP 7.2 :tada:
As far as I can see that solved/weakened some issues for us :heart:

[x] It allows middlewares which work on client and server side.
[x] It allows callable delegates.

Current Interfaces

interface DelegateInterface
{
    public function process(ServerRequestInterface $request);
}

interface MiddlewareInterface
{
    public function process(ServerRequestInterface $request, DelegateInterface $delegate);
}

Parameter Type Widening allows Middlewares which work on client and server side
interface ClientDelegateInterface
{
    public function process(RequestInterface $request);
}

interface ClientMiddlewareInterface
{
    public function process(RequestInterface $request, ClientDelegateInterface $delegate);
}

class ClientAndServerMiddleware implements ClientMiddlewareInterface, MiddlewareInterface
{
    /**
     * @param RequestInterface|ServerRequestInterface $request
     * @param ClientDelegateInterface|DelegateInterface $delegate
     *
     * @return ResponseInterface
     */
    public function process($request, $delegate)
    {
        if (! $request instanceOf RequestInterface) {
            throw new InvalidArgumentException(…);
        }

        if (!($delegate instanceOf ClientDelegateInterface || $delegate instanceOf DelegateInterface)) {
            throw new InvalidArgumentException(…);
        }

        // do some stuff…
        return $delegate->process($request);
    }
}

Parameter Type Widening allows callable delegates
class CallableDelegateMiddleware implements MiddlewareInterface
{
    /**
     * @param ServerRequestInterface $request
     * @param callable|DelegateInterface $delegate
     */
    public function process(ServerRequestInterface $request, $delegate)
    {
        if (! $delegate instanceOf DelegateInterface) {
            if (! is_callable($delegate)) {
                throw new InvalidArgumentException(…);
            }

            $delegate = new class($delegate) implements DelegateInterface {
                private $d;

                public function __construct($delegate)
                {
                    $this->d = $delegate;
                }

                public function process(ServerRequestInterface $request)
                {
                    return ($this->d)($request);
                }
            };
        }

        // do some stuff…
        return $delegate->process($request);
    }
}

Btw, I'd love to see DelegateInterface::__invoke :wink:

Did I miss issues affected by that RFC? Thoughts?

This is out of scope (Meta document, section 3.2 Non-Goals):

Attempting to define interfaces for client/asynchronous middleware.

Since (section 5.1.3):

external requests are typically handled asynchronously and would typically return a promise of a response. [...] It is outside the scope of this proposal to address the needs of asynchronous request/response life cycles.

Even if it were in scope, this does not provide a mechanism for providing promises.

Parameter Type Widening allows callable delegates
[...]
Btw, I'd love to see DelegateInterface::__invoke 😉

Make a case at review, succinctly explaining why these things are favorable. As it stands, I doubt this proposal will undergo any significant revision (like altering its scope) until review feedback is being incorporated.

@atanvarno69 I've posted this because long time ago both were not out of scope!

Make a case at review, succinctly explaining why these things are favorable.

You got me wrong, I do not say all of these are favorable! For example, and to be more explicit, I do not propose callable delegates.

Even if it were in scope, this does not provide a mechanism for providing promises.

I believe you are not aware, that my [PSR-15] Falsehoods About The Client-side post at the mailing-list made client middlewares out of scope – Hence, I'm fully aware of that.


Ability to forward specific JWT claims as HTTP Headers

Describe the feature request
I would really like to be able to map specific JWT claims to specific HTTP headers, for example; email to x-auth-email.
I know that you can currently forward the JWT to the client, but that's suboptimal because:

They still need to parse a JWT, and understand the structure of the JWT
The JWT contains loads of stuff they don't care about, this bloats HTTP headers

Describe alternatives you've considered
I've achieved this with an EnvoyFilter:
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: add-jwt-headers
  namespace: istio-system
  annotations:
    name: Add JWT Headers
    description: If the istio JWT filter was used, as there are email and name claims - then add them as auth headers.
spec:
  priority: -1
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: SIDECAR_INBOUND
        listener:
          filterChain:
            filter:
              name: 'envoy.filters.network.http_connection_manager'
              subFilter:
                name: 'envoy.filters.http.router'
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.lua
          typed_config:
            '@type': 'type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua'
            inlineCode: |
              function envoy_on_request(request_handle)
                local function isempty(s)
                  return s == nil or s == ''
                end

                local meta = request_handle:streamInfo():dynamicMetadata():get("envoy.filters.http.jwt_authn")
                if not isempty(meta) then
                  local claims = meta["https://my-oidc"]
                  if not isempty(claims) then
                    local email = claims["email"]
                    local user = claims["name"]
                    if not (isempty(email) and isempty(user)) then
                      request_handle:headers():add("x-auth-email", email)
                      request_handle:headers():add("x-auth-user", user)
                    end
                  end
                end
              end

But I worry about anything I build with an EnvoyFilter will one day just break.
Affected product area (please put an X in all that apply)
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[x] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Affected features (please put an X in all that apply)
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Multi Control Plane
Additional context

Currently we don't support adding jwt-filter to header via our reqAuth API. It's still in plan and our team is working on this. As an alternative for now there are several ways to fulfill this requirement -

Envoy Lua Filter- I think you have already used it
You can add header via virtual service as well -
The following is an example virtual service for copying the "group" claim to the "x-istio-jwt-group" header:

kind: VirtualService
metadata:
  name: reviews-route
spec:
  hosts:
  - reviews.prod.svc.cluster.local
  http:
  - headers:
      request:
        set:
          # Copy the group claim to the x-istio-jwt-group header
          x-istio-jwt-group:
            '%DYNAMIC_METADATA(["istio_authn", "request.auth.claims", "group"])%' ```

3) WASM Filter - https://github.com/mandarjog/proxy/tree/jwt_header_19/extensions/jwt_header

But there are few limitations in these solution, based on my understanding the approach with Lua filter one is most used solution as of now.  We will be adding a permanent fix for this request in our `ReqAuth` api to support this feature soon.

@aryan16 thanks for the response!  I wasn't aware that I could use a VirtualService; that actually fits our deployment pattern better than using EnvoyFilters!  Thanks a lot for the heads up on that one.  Looking forward to it being a first class citizen too.

@aryan16 i can't get the VirtualService option to work at all!  Are you sure that syntax is correct?  Please can you check my EnvoyFilter and show a comparable example for email?

I am testing the virtual service solution, will give you an update on this soon. Meanwhile you can refer this for envoy filter - https://gist.github.com/inaiat/63a7525dbcf7c8824e7dc1a58927c0ef which uses email in the claims
one more reference link - https://github.com/istio/istio/issues/35108#issuecomment-916547087

Yip the EnvoyFilter approach works for sure, i'd just rather use the VirtualService if possible!  Thanks

One clarification - the example I attached in the above comment is specifically for “group” claim, if the name is different you should add that. The limitations of virtual service is that it can only handle string values in claim, can’t support nested claims.

@aryan16 yes i changed the VirtualService to target the email claim.  Doesn't work! :)

From https://github.com/tetratelabs/proxy-wasm-go-sdk/, and some other's work, this is now work for me.
You can try it https://github.com/tetratelabs/proxy-wasm-go-sdk/.

It is not working with virtual service because we would require to have an ingress gateway. If your traffic is coming from ingress gateway and you have an jwt policy on gateway, it should be able to attach the header. This is only happening with ingress gateway becuase we can apply reqAuth policy to outbound for ingress whereas for sidecars we only apply to inbound. Anyway we will have this feature supported in our first class apis, it's good to wait for some time if this is not a blocker.

Hello
This was referenced in the 1,17 release notes but it is still open?


Improve script B

Issue migrated from trac ticket # 109
component: contrib | priority: minor | keywords: scripts, worker, fuse, mount
2015-08-17 13:03:59: @a-tze created the issue

Two things can be improved for finding errors:

Catch output from fuse-* and put it into the ticket comment (e.g. "WARNING: to few files found")
there should be a ffprobe run on the uncut.ts to check length etc.

@crs-tools/scripts this should probably move?

moved to scripts


Bugfix/version 1.13.4

I had to modify the master branch that sits at 1.13.4. A lot of packages in 1.13.4 are marked 1.13.3, and I don't think the @=1.13.4 grammar is standard, so I changed that, too.
I don't know if PRs on the master branch are cool? But I hope this helps.

I will check for the 1.13.3 but the @=1.13.4 is needed to run older versions of Meteor. Without this you can't run older versions of Vulcan because it will load newer packages :/ Eg if you import explicitely import<EMAIL_ADDRESS>it will itself import<EMAIL_ADDRESS>because it's the latest version. But then it may fail because those versions are not necessary compatible.
Only solution I found was to lock versions, even if it makes update more tedious.

I understand on the @=1.13.4

Closing as this will be sorted out progressively during next updates


tf.gather_nd replacement

Hi,
I am doing a project but their tensorflow, but the hardware does not support tf.gather_nd. I am asking if possible that use tf.gather, tf.slice or tf.strided_slice to rewrite a function of tf.gather_nd?
Thanks,
Peter

@gbc8181 Please provide details about what platform you are using (operating system, architecture). Also include your TensorFlow version. Also, did you compile from source or install a binary?
Make sure you also include the exact command if possible to produce the output included in your test case. If you are unclear what to include see the issue template displayed in the Github new issue template.
We ask for this in the issue submission template, because it is really difficult to help without that information. Thanks!

@gbc8181 Please provide details about what platform you are using (operating system, architecture). Also include your TensorFlow version. Also, did you compile from source or install a binary?
Make sure you also include the exact command if possible to produce the output included in your test case. If you are unclear what to include see the issue template displayed in the Github new issue template.
We ask for this in the issue submission template, because it is really difficult to help without that information. Thanks!

Hi,
I checked with the administer. The Tensor-flow is 1.08. Since they have very special hardware thus they cannot support tf.gather_nd. Now the method is can we use tf.gather to realize the function of tf.gather_nd.
Thanks

This is not Bug/Performance issue or Build/Installation. Please post this kind of support questions at StackOverflow. There is a big community to support and learn from your questions. GitHub is mainly for addressing bugs in installation and performance. Thanks!


AlphaFold/Colab/RunTimeError

I am having trouble about doing protein prediction via AlphaFold colab. I used to predict structures until now, but at the last time I received an RunTimeError on line 409 and 358. Error on line 409 saying that RuntimeError: Error running shell script install_colabfold.sh, output in log file install_log.txt while error on line 358 just saying RunTimeError. The screenshot of errors can be find via the image I uploaded. How can I solve this problem. I've never had this kind of problem before.

This error is because Google Colab updated today from Python 3.9 to 3.10 and the old version of ColabFold that ChimeraX is using will not run on Python 3.10 because it requires an old version of pypi package tensorflow-cpu (< 2.8).
This is a ChimeraX issue and the ChimeraX developer (me) needs to update to a newer ColabFold version.  The ChimeraX bug report is here (see comment 4 for a way to work around the error)
https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/8911

This alphafold ticket can be closed since the problem is with ChimeraX and ColabFold, not with Alphafold.

I have fixed ChimeraX prediction now using a new (March 8) version of ColabFold.
Turning on energy minimization does not work because OpenMM 7.5.1 that ColabFold uses will not install with Python 3.10.  When I am back to work in a few weeks I will try to update that to openmm 8.0.0.

This should now be fixed - we upgraded OpenMM to version 7.7.0 which is compatible with Python 3.10. Let me know if you encounter any further issues.


Is this lib compatible with slate 0.42

when trying this out with slate 0.42 slate-react 0.19 I‘ve got some Strange errors which could result from the way markdown is deserialized / serialized but reading the source I couldn‘t figure out why it should not work...
So it would be great if I get one more opinion...
Thanks
Ognian

The Slate API is still changing drastically between releases, this serializer does not support further than 0.34.0 at this time.

Thanks for the quick answer. That’s what I was concerned about..
Maybe #26 would make this task easier?


[Slack] Adds action to open slack links in the browser

Description

Adds action to open in browser apart from slack app
Only show Open in Slack option in case Slack app is installed on the system

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

closes https://github.com/raycast/extensions/issues/12676

@momme-rtf @Elliot67 looking for some traction here. If you find some time can you please review the changes?

@jfkisafk Thanks for your contribution! I saw that you're enforcing the existence of the conversationId. Could we change the logic in a way that we're opening the browser when the conversationId is defined and the openInBrowser flag is true and otherwise we open the slack app as a fallback?

@momme-rtf I don't know the cases whereconversationId can be undefined, but we should probably only open the application if the user has openInBrowser to false.
As a user, I would prefer to have an error rather than not understanding why the openInBrowser option doesn't work as expected.

Having this new option also impacts the expected result of  the Open unread message command.
The best approach would probably be to open the page in the browser, but Slack doesn't seem to have a specific link for it. It's still possible to access the page with the shortcut, but I don't know if there is an easy way to run them inside the right browser.
The second option is to disable the command when the openInBrowser is activated.

Finally, if we want the option to impact the whole extension, it would probably be clearer to use a select with Slack Application/Slack in the browser rather than a boolean.

@Elliot67

Hmm.. I agree. But I'd still like to get rid of the non-null assertion operator.

That command needs to be revisited anyways. It works quite unreliable in the current version.

👍

@momme-rtf @Elliot67 Thanks for the quick review and valuable feedback. I have changed the implementation somewhat and here are the takeaways:

I've left the Open unread message command untouched to not introduce scope creep to the issue. We can open an adjacent issue to fix that.
Instead of a global preference, I've opted to provide an action to Open in Browser in addition to Open in Slack (only rendered in case Slack app is installed). This will be useful to remove the issue but also for folks who prefer browser.
Open in Browser for chats only appear if conversationId is not empty (which will be the case always).

Please take a look when you find some time and let me know what you guys think!

@jfkisafk Regarding point 3, conversationId can be undefined for a user to user chat if you never talked to each other. I believe Slack doesn't create a conversation between you and each user when you join the organization. The conversation  has to be manually created.
After some testing, I couldn't find a way to link to a user profile on the browser app.
The closest I can get is with https://<WORKSPACE_NAME>.slack.com/team/<USER_ID> which will ask the user to open the slack app... 😢 .
I believe the only solution is to dynamically create the conversation with the API, probably conversations.create or conversations.open. But it requires new write permissions, so not sure if we really want to implement this.

I also found an issue in "Unread message > Open in the browser" with user to user conversation.
The provided conversationId isn't correct and represent the userId instead. The problem probably comes from SlackClient.ts:getUnreadConversations where the channelId is used as conversationId :
conversationId: conversationInfos[index].channel!.id!,

The Slack app probably automatically handle the redirect of userId to conversationId, but the browser version doesn't handle it and fall back to the previous opened channel.

Everything else looks good to me, creating an "Open in browser" action instead of a new command is a great idea !

@Elliot67 Thanks for the feedback.

You're right, we might need to update the permissions for that edge case and let's not take that scope creep as part of this issue/PR.
Fixed the issue by using unreadConversation.conversationId along with other refactors.

Please take a look when you have some time.

@momme-rtf @Elliot67 can you guys please review the latest changes when you find some time?

Thanks for helping with the review 🫶

Just a gentle ping for the review @momme-rtf @Elliot67 🫶

Not getting traction for re-review from @momme-rtf / @Elliot67 . I've already addressed all feedbacks for prior reviews, @pernielsentikaer can you please please take a look?


How to handle EKS gateway External Endpoint to get static IP for cross cluster communication

Hi everyone!
During istio mesh setup when we use AWS cloud provider, we are getting ELB as endpoint for gateway services. Issue is ELB is not having constant IPs as its a classic Load Balancer to be shared among different clusters or cloud providers  outbound rule for cross cluster communication to happen.
So how we can achieve constant connection of EKS with different clusters with ELB as external endpoint, or to get a static IP for EKS also that can be shared to outbound rule of other cloud providers.

I believe in AWS usually there is a hostname instead of IP that is stable?


Switch to pyproject.toml based build

[ ] Clear todo comments:

[ ] new format allows multiple authors. could list all from AUTHORS.txt ?
[ ] keywords: ["tensor networks", "matrix product states"]. more?

[ ] Currently not writing _version.py in setup.py. where/how should this be done in modern build system? do we need it?
[ ] I could not find a way to incorporate the alias form setup.cfg in pyproject.toml format.
The old entry read[aliases]
test = pytest

should we keep the alias? if yes, how is it done in modern paython packaging?
[ ] The old setup.cfg had both a license and license_files fields. pyproject.toml specification however says you can only have one of the two. i opted for license = {text = "GPLv3"} over giving the filename. is that ok?
[ ] Is it ok to have no setup.cfg at all anymore?
[ ] how does this affect conda-forge installation?
[x] check that pytest config works. pytest can be configured via pyproject.toml since 6.0, documentation, could require that version as minimum?
The Github Action run successfully loads pytest options from pyproject.toml.

Tests and Checks

[ ] CI build
[ ] local build / local pip install from source
[ ] try on TestPyPI

We may want to also do these

[ ] provide wheels (can be automatically built via CI)
[ ] provide more frequent builds then version tags, i.e. nightly builds?

Links to documentation / tutorials:

packaging.python.org specification of pyproject.toml
packaging.python.org tutorial on packaging and PyPI upload

update pypi action. in particular it should not use setup.py

testPyPI publish: https://test.pypi.org/project/physics-tenpy/


[FEATURE]Set additional params to server

Is your feature request related to a problem?
We want JDBC driver to work with multitenant Opensearch and use api key distinguish between tenants.
What solution would you like?
We need one custom parameter to be sent in every request to the server and we will have multitenant (access rights) proxy before Opensearch. Is it possible now? How? When I set custom parameter in jdbc url I do not see it being sent to the server.
What alternatives have you considered?
Using some other parameter e.g. user. But I couldn't see it sent to the server even when I set it up in jdbc params after port or as user. Or we can use context-path it is working.

@fokot Thanks for reporting the issue! Will look into the code but I guess currently JDBC may just ignore custom parameter. I wonder what kind of parameter you want to pass to OpenSearch API? Thanks

Note: This is relevant for ODBC driver as well.

Previous request from community: https://github.com/opendistro-for-elasticsearch/sql/issues/693
Probably we should think about add support for this.

We want to pass apiKey for authorisation so the request will go via our proxy server. We have multi tenant OpenSearch.

We want to pass apiKey for authorisation so the request will go via our proxy server. We have multi tenant OpenSearch.

Thanks for the info! Will evaluate if we can support this.


Re-introduce Mac M1 builds with buildx

Builds on https://github.com/replicate/cog/pull/155

Super! btw feel free to push simple changes like this to my branch to avoid any conflicts later :)

I've cherry-picked this into #155, anticipating some rebasing. ✨


Baseline correction not working

Nearly all the code is now implemented to make baseline correction. There are 2 algorithms: airPLS and polynomial.
The default should be 'polynomial'.
If no zones are defined an algorithm will that only works with 'positive' peaks will be applied.
What is currently wrong ?

Default algorithm not 'polynomial'
The code is executed many times

@hamed-musallam Could you have a look on this ?

@lpatiny
i tested the code and the code does not execute many times, Can you give what the case because i need to simulate it.


Section mobile fix

Description of changes

Implements the fix suggested by @kylemh in #230 to move the section content into a div to increase the responsiveness of the section components across the board.
Issue Resolved

Fixes #230

@rickr I cannot merge this until wercker is happy

Just for posterity - I know you already know this - next step is removing any changes to inner-Section stylings that tried dealing with this.


can't install on debian 10 ( buster ) docker

hello
i'm not a go expert, please be warn
i just run a brand new debian 10 via docker:
$ apt update; apt install golang
$ go get -u github.com/deletescape/goop
the directory is full of things: /root/go/src/github.com/deletescape/goop
but how are we supposed to lunch the software ?
"goop" is not reconized as a command
so i tried:
$ go run /root/go/src/github.com/deletescape/goop/main.go http://test.com
same with
$ go run /root/go/src/github.com/deletescape/goop/cmd/goop.go http://test.com
it fails with:
/root/go/src/github.com/go-git/go-git/storage/filesystem/dotgit/dotgit.go:17:2: code in directory /root/go/src/github.com/go-git/go-billy/osfs expects import "github.com/go-git/go-billy/v5/osfs"
thank you

if goop is not recognized as a command at all then the go bin path is probably not added to path properly yet. And the error it gets when launching seems to be a duplicate of #2

see #2


dkml install alongside mys2

Hi,
IIUC, the DKML installer seems to be the prefered way to install ocaml on Windows. However, this methods seems to fail if you have installed msys2 locally. Is that possible somehow? Or should I better just wait for the next opam version?

Can you say what your error was?
I have one standalone MSYS2 installation on top of the embedded (ie. transparent) MSYS2 installations inside Git for Windows and vcpkg and DKML. Having your own MSYS2 installation should not be a problem

I'm getting the following error message:

FATAL [8b5571d0]. Detected that the setup program has been called inside a Cygwin or MSYS2 environment. In particular, C:\msys\usr\bin\cygpath.exe was available in the PATH. Since the setup program uses its own MSYS2 environment, and since MSYS2 does not support one MSYS2 or Cygwin environment calling another MSYS2 environment, it is highly probable the installation will fail. Please rerun the setup program directly from a Command Prompt, PowerShell, the File Explorer or directly from the browser Downloads if you downloaded it. Do not use Git Bash (part of Git for Windows) or anything else that contains an MSYS2 environment.

However, I've called the installer directly from a Command Prompt. (But msys2 is indeed in my path.)

Ah ... yes, if you have MSYS2 in your PATH you won't be able to use the DKML installer. To be honest, you will likely (at some point) start experiencing problems with Git for Windows, vcpkg and anything else that embeds MSYS2.
There is nothing that can be done about installing multiple versions of MSYS2; it is a limitation of MSYS2 and Cygwin. Waiting for the next version of opam is not going to change that problem.

If you want to install a non-system wide version of Diskuv OCaml that uses your own copy of MSYS2, that is somewhat supported but only for advanced users (which it seems you are if you have your own copy of MSYS2!).

There are instructions for that at https://github.com/diskuv/dkml-workflows#windows-pc-backend, and a full example at https://github.com/diskuv/dkml-workflows-regular-example#readme.
A pre-requisite is that you have to have a version of Visual Studio 2019 on your machine. https://diskuv.gitlab.io/diskuv-ocaml/doc/AdvancedInstalls/WindowsAdministrator.html#using-an-existing-visual-studio-installation has the precise details
The only issue is that while I provided a zillion command line options for dkml-workflow's standalone script setup-dkml-windows_x86_64.ps1, I didn't provide an option to specify your own MSYS2 directory! You would have to wait until I do that (which is going to take at least a few weeks before I have bandwidth for that), or just edit the script yourself to rename all the msys64\ with C:\msys\.

The flow would be something like the following in PowerShell (do not type in the $ line beginnings):
$ git clone https://github.com/diskuv/dkml-workflows-regular-example.git
$ cd dkml-workflows-regular-example

$ # EDIT: ci\setup-dkml\pc\setup-dkml-windows_x86_64.ps1
... rename all msys64\ to C:\msys\

$ & ci\setup-dkml\pc\setup-dkml-windows_x86_64.ps1
...
Finished setup.

To continue your testing, run in PowerShell:
  $env:CHERE_INVOKING = "yes"
  $env:MSYSTEM = "CLANG64"
  $env:dkml_host_abi = "windows_x86_64"
  $env:abi_pattern = "win32-windows_x86_64"
  $env:opam_root = "$PWD\.ci\o"
  $env:exe_ext = ".exe"

Now you can use 'opamrun' to do opam commands like:

  C:\msys\usr\bin\bash -lc 'PATH="$PWD/.ci/sd4/opamrun:$PATH"; opamrun install XYZ.opam'
  C:\msys\usr\bin\bash -lc 'PATH="$PWD/.ci/sd4/opamrun:$PATH"; opamrun -it exec -- bash'
  C:\msys\usr\bin\bash -lc 'PATH="$PWD/.ci/sd4/opamrun:$PATH"; opamrun exec -- sh ci/build-test.sh'

Those above steps would give you one local opam switch.

Hmm, ok. I'll have a look. But maybe it could be easier to install ocaml in wsl2? That seems not to be recommended, but I don't really understand why. Do you know what would be the downsides of that approach?

You can definitely install OCaml in WSL2. The disadvantage is that the binaries you generate will be for Linux not Windows. The advantage is that OCaml on Linux is very well supported. If you are comfortable with that limitation (ex. you are just using OCaml for educational purposes, to try it out, etc.), WSL2 will be perfect.

If WSL2 is not a good choice for you, perhaps you can tell me why MSYS2 is in your PATH? (I can think of a couple reasons, but it is better for me not to guess). It might help prioritize making a variation of DKML that works with existing MSYS2 installations.
Also: Why to avoid putting MSYS2 in PATH
Are you aware that MSYS2's link.exe conflicts with Visual Studio's link.exe? That is, the default MSYS2 installation has /usr/bin/link.exe while whenever Visual Studio tools will modify the PATH to include Microsoft's C linker (ex. C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe).

Closing as resolved by using WSL2.


express-flash and passport.js not working reliably

When using this module, I experience the problem that flashed messages and the passport user are not always available until the next but one request on my local machine (e.g. flashed message only appears after a subsequent reload). It works fine on the production server (same node version and npm modules). Disabling the store or switching to sessionstore fixes the issue.

Hello,
Thanks for the report. Could you submit a test case ?
Regards,

https://github.com/expressjs/session/pull/157 https://github.com/kcbanner/connect-mongo/issues/195 https://github.com/mweibel/connect-session-sequelize/issues/20


Error with Quora plugin

Error: Elements matching selector "a[href$="/content"]" were not loaded ater 10000 milliseconds.
at checkSelector (chrome-extension://hlkhpekhgcaigleojiocoeockhcaglia/src/plugin.js:137:27)

Duplicate of #149


Intermittent failure on MacOS building for clippy --all-features -- -D warnings

I am pretty sure I saw this recently, and now again https://github.com/Electron100/butane/actions/runs/8432584319/job/23091944587?pr=223
   Generated /Users/runner/work/butane/butane/target/doc/butane/index.html and 6 other files
cargo +stable clippy --all-features -- -D warnings
    Checking butane_core v0.6.1 (/Users/runner/work/butane/butane/butane_core)
   Compiling butane v0.6.1 (/Users/runner/work/butane/butane/butane)
   Compiling example v0.1.0 (/Users/runner/work/butane/butane/example)
    Checking butane_codegen v0.6.1 (/Users/runner/work/butane/butane/butane_codegen)
error: could not compile `butane_codegen` (lib)

Caused by:
  process didn't exit successfully: `/Users/runner/.rustup/toolchains/stable-x86_64-apple-darwin/bin/clippy-driver /Users/runner/.rustup/toolchains/stable-x86_64-apple-darwin/bin/rustc --crate-name butane_codegen --edition=2021 butane_codegen/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type proc-macro --emit=dep-info,metadata -C prefer-dynamic -C embed-bitcode=no --cfg 'feature="datetime"' --cfg 'feature="json"' --cfg 'feature="uuid"' -C metadata=b2998384337eeebb -C extra-filename=-b2998384337eeebb --out-dir /Users/runner/work/butane/butane/target/debug/deps -C strip=debuginfo -L dependency=/Users/runner/work/butane/butane/target/debug/deps --extern butane_core=/Users/runner/work/butane/butane/target/debug/deps/libbutane_core-06f176cb5efbe978.rmeta --extern proc_macro2=/Users/runner/work/butane/butane/target/debug/deps/libproc_macro2-488748b65e6005e1.rmeta --extern quote=/Users/runner/work/butane/butane/target/debug/deps/libquote-2466d2e89b984c2e.rmeta --extern syn=/Users/runner/work/butane/butane/target/debug/deps/libsyn-5199a5c49da696e5.rmeta --extern proc_macro -D warnings` (signal: 6, SIGABRT: process abort signal)
warning: build failed, waiting for other jobs to finish...
make: *** [lint] Error 101

It is still quite common.
https://github.com/Electron100/butane/actions/runs/8762148379/job/24049541255 is the latest.
I wonder if we should move lint to after build, in order to help determine where the bug is.

It might be worth seeing if this is happening in other projects.  I checked a few macos workflows & PRs in https://github.com/diesel-rs/diesel/actions and they seem to not be having these failures, or not mentioning it on PRs which seems unlikely.
Anyways, https://github.com/Electron100/butane/pull/255 passed at https://github.com/jayvdb/butane/actions/runs/8763613341 , and then on the PR, and again on main.  Not bad.  If it stops happening now, perhaps it is Rust on a specific version of macos.

It occurs on macos-12 also https://github.com/Electron100/butane/actions/runs/8767317756/job/24060424467?pr=257


Support option to override the MTU value used in TCP MSS clamping

What would you like to be added:
Currently, when Globalnet is enabled in the cluster, to address the MTU issues, Submariner clamps the TCP MSS to a fixed value derived from the default-interface-mtu minus the tunnel-overhead. In certain environments where the MTU between the Gateway nodes is even lower, we should provide an option for the users to override this MTU value.
This can be done by adding annotations on the Gateway node or by configuring them as env' variables on the submariner-gateway pod.

Backport to release-0.12 branch: https://github.com/submariner-io/submariner/pull/1924


Support for OpenShift v4.10

Test and adapt (if needed) our K8s integration to officially support v4.10.
As of now we're far behind from v4.10 because we only support v4.6.
By supporting v4.10 we can also state the support to previous versions v4.7, v4.8 and v4.9
cc @davidgit @paologallinaharbur

related to https://github.com/newrelic/nri-kubernetes/issues/502

Testing locally https://developers.redhat.com/products/openshift-local/overview

Missing some metrics
ERRO[0159] finding Metric: k8s.container.cpuCfsPeriodsDelta
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledPeriodsDelta
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledSecondsDelta
ERRO[0159] finding Metric: k8s.container.cpuCfsPeriodsTotal
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledPeriodsTotal
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledSecondsTotal
ERRO[0159] finding Metric: k8s.node.netErrorsPerSecond
ERRO[0159] finding Metric: k8s.node.netRxBytesPerSecond
ERRO[0159] finding Metric: k8s.node.netTxBytesPerSecond

ERRO[0159] finding Metric: k8s.container.cpuCfsPeriodsDelta
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledPeriodsDelta
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledSecondsDelta
ERRO[0159] finding Metric: k8s.container.cpuCfsPeriodsTotal
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledPeriodsTotal
ERRO[0159] finding Metric: k8s.container.cpuCfsThrottledSecondsTotal

these metrics started to show up as soon as I added resource limits forcing a pod to be throttled

   "network": {
    "time": "2022-07-29T13:02:56Z",
    "name": ""

vs
  "network": {
   "time": "2022-07-29T14:29:45Z",
   "name": "eth0",
   "rxBytes":<PHONE_NUMBER>44,
   "rxErrors": 0,
   "txBytes":<PHONE_NUMBER>82,
   "txErrors": 0,

I'll document this, but it seems related to the testing environment, no other metric was missing