WIP Implement ignored_parameters_unsupported feature for all endpoints.

This is a draft PR to get feedback on the work done so far to implement the ignored_parameters_unsupported feature (currently returned by 3 endpoints) to all endpoints.
This implementation creates a JsonDataResponse class, which is a subclass of Django's HttpResponse, in order to use has_request_variables to add the data for any unprocessed parameters sent in the request to the response object.
Relevant CZO conversation.
Notes:

This builds off the implementation in #22628 and the review comments there.
I split this version into smaller and more focused commits to help with the review process. I imagine the final three commits could be squashed before merging.
The API version bump and changelog documentation are still TBD in this draft.
This is still only an implementation for success responses. The implementation for JsonableError would not be able to use has_request_variables as this one does as I understand it.

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Updates:

Reworked the new JsonDataResponse class to follow Django's TemplateResponse more than before. Added a number of comments to that and the implementation in has_request_variables.
The API documentation has also been updated to include ignored_parameters_unsupported in the JsonResponseBase component.

Questions/Thoughts:

There are some mypy errors that came up due to JsonDataResponse building on Django's HttpResponse and I'm not sure that my fixes were the ideal ones. I added comments in the code where I either ignored the error or chose a type that worked with the super class. This is all in the changes to zerver/lib/response.py.
Since we don't yet want this to appear for error responses, I added a check for the status code as part of adding the ignored parameters.
If a function decorated with has_request_variables doesn't return the response, then the response will not reflect the parameters processed in that function unless some other has_request_variables decorated function returns the response later on in the execution of the code.

For adding the ignored parameters data to the json error response, because has_request_variables can be called multiple times, I don't know how we would establish what parameters were ignored and what valid parameters were simply not processed before the error was raised in the code path/execution.

@PIG208 - I was wondering if you might review these changes. I feel like you might have a lot of context for this part of the codebase and might have some more insight into the typing errors I was facing with the Django HttpResponse class. Thanks!

Will do it when I get the time this weekend. Thanks for the ping.

Updates:

Responded / made changes based on @PIG208's review (thank you!) above.
Added the version.py update and related API feature level documentation updates, see screenshots below.
Changing from WIP / draft status at this point.
Most recent CZO conversation, from late August 2022.

Pending / To-do:

Removing request as a parameter to the JSON response functions; Could be a follow-up once this is merged or a final commit added to these changes.
Having the method parameter be processed via REQ in zerver.lib.rest.get_target_view_function_or_response. Could be a prep commit to these changes or a separate PR.

Diff of API documentation

Expected addition of note about ignored_parameters_unsupported to all endpoint response sections.
Expected added content in changelog and rest error handling
Expected removal of specific ignored_parameters_unsupported return value for three endpoints that supported the feature prior to these changes.

diff -r -B -u current_api_html/add-alert-words.html new_api_html/add-alert-words.html
--- current_api_html/add-alert-words.html	2023-02-20 16:28:38.683865544 +0100
+++ new_api_html/add-alert-words.html	2023-02-20 16:27:51.955526736 +0100
@@ -310,6 +310,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "alert_words": [
diff -r -B -u current_api_html/add-code-playground.html new_api_html/add-code-playground.html
--- current_api_html/add-code-playground.html	2023-02-20 16:28:39.291869950 +0100
+++ new_api_html/add-code-playground.html	2023-02-20 16:27:52.759532567 +0100
@@ -332,6 +332,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "id": 1,
diff -r -B -u current_api_html/add-default-stream.html new_api_html/add-default-stream.html
--- current_api_html/add-default-stream.html	2023-02-20 16:28:35.767844407 +0100
+++ new_api_html/add-default-stream.html	2023-02-20 16:27:47.783496479 +0100
@@ -303,6 +303,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/add-linkifier.html new_api_html/add-linkifier.html
--- current_api_html/add-linkifier.html	2023-02-20 16:28:39.071868355 +0100
+++ new_api_html/add-linkifier.html	2023-02-20 16:27:52.391529897 +0100
@@ -322,6 +322,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "id": 42,
diff -r -B -u current_api_html/add-reaction.html new_api_html/add-reaction.html
--- current_api_html/add-reaction.html	2023-02-20 16:28:32.503820747 +0100
+++ new_api_html/add-reaction.html	2023-02-20 16:27:43.099462507 +0100
@@ -365,6 +365,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/archive-stream.html new_api_html/archive-stream.html
--- current_api_html/archive-stream.html	2023-02-20 16:28:35.303841043 +0100
+++ new_api_html/archive-stream.html	2023-02-20 16:27:47.335493230 +0100
@@ -297,6 +297,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/changelog.html new_api_html/changelog.html
--- current_api_html/changelog.html	2023-02-20 16:28:31.455813150 +0100
+++ new_api_html/changelog.html	2023-02-20 16:27:42.019454674 +0100
@@ -271,6 +271,16 @@
 /register responses, to determine the API
 format used by the Zulip server that they are interacting with.

Changes in Zulip 7.0

+
Feature level 164

+

+
All REST API endpoints:
+  Implemented ignored_parameters_unsupported as a possible return value
+  in the JSON success response for all endpoints. This value is a array
+  of any parameters that were sent in the request by the client that are
+  not supported by the endpoint. Previously, these parameters were silently
+  ignored, except in the subset of endpoints which already supported this
+  return value; see feature levels 111, 96 and 78.

+

Feature level 163

GET /users, GET /users/{user_id},
diff -r -B -u current_api_html/check-messages-match-narrow.html new_api_html/check-messages-match-narrow.html
--- current_api_html/check-messages-match-narrow.html	2023-02-20 16:28:32.875823444 +0100
+++ new_api_html/check-messages-match-narrow.html	2023-02-20 16:27:43.743467178 +0100
@@ -352,6 +352,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "messages": {
diff -r -B -u current_api_html/create-custom-profile-field.html new_api_html/create-custom-profile-field.html
--- current_api_html/create-custom-profile-field.html	2023-02-20 16:28:39.755873313 +0100
+++ new_api_html/create-custom-profile-field.html	2023-02-20 16:27:53.655539064 +0100
@@ -373,6 +373,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "id": 9,
diff -r -B -u current_api_html/create-drafts.html new_api_html/create-drafts.html
--- current_api_html/create-drafts.html	2023-02-20 16:28:33.791830083 +0100
+++ new_api_html/create-drafts.html	2023-02-20 16:27:45.215477854 +0100
@@ -325,6 +325,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "ids": [
diff -r -B -u current_api_html/create-user-group.html new_api_html/create-user-group.html
--- current_api_html/create-user-group.html	2023-02-20 16:28:37.679858265 +0100
+++ new_api_html/create-user-group.html	2023-02-20 16:27:50.691517569 +0100
@@ -321,6 +321,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/create-user.html new_api_html/create-user.html
--- current_api_html/create-user.html	2023-02-20 16:28:36.695851134 +0100
+++ new_api_html/create-user.html	2023-02-20 16:27:49.187506662 +0100
@@ -363,6 +363,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/deactivate-own-user.html new_api_html/deactivate-own-user.html
--- current_api_html/deactivate-own-user.html	2023-02-20 16:28:36.923852787 +0100
+++ new_api_html/deactivate-own-user.html	2023-02-20 16:27:49.491508866 +0100
@@ -293,6 +293,9 @@

This endpoint does not accept any parameters.

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/deactivate-user.html new_api_html/deactivate-user.html
--- current_api_html/deactivate-user.html	2023-02-20 16:28:36.779851742 +0100
+++ new_api_html/deactivate-user.html	2023-02-20 16:27:49.299507474 +0100
@@ -316,6 +316,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/delete-draft.html new_api_html/delete-draft.html
--- current_api_html/delete-draft.html	2023-02-20 16:28:34.011831678 +0100
+++ new_api_html/delete-draft.html	2023-02-20 16:27:45.495479884 +0100
@@ -283,6 +283,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/delete-message.html new_api_html/delete-message.html
--- current_api_html/delete-message.html	2023-02-20 16:28:32.227818746 +0100
+++ new_api_html/delete-message.html	2023-02-20 16:27:42.767460099 +0100
@@ -302,6 +302,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/delete-queue.html new_api_html/delete-queue.html
--- current_api_html/delete-queue.html	2023-02-20 16:28:41.699887405 +0100
+++ new_api_html/delete-queue.html	2023-02-20 16:27:56.555560095 +0100
@@ -325,6 +325,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/delete-topic.html new_api_html/delete-topic.html
--- current_api_html/delete-topic.html	2023-02-20 16:28:35.679843769 +0100
+++ new_api_html/delete-topic.html	2023-02-20 16:27:47.691495812 +0100
@@ -320,6 +320,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/dev-fetch-api-key.html new_api_html/dev-fetch-api-key.html
--- current_api_html/dev-fetch-api-key.html	2023-02-20 16:28:41.827888331 +0100
+++ new_api_html/dev-fetch-api-key.html	2023-02-20 16:27:56.723561313 +0100
@@ -302,6 +302,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "api_key": "gjA04ZYcqXKalvYMA8OeXSfzUOLrtbZv",
diff -r -B -u current_api_html/edit-draft.html new_api_html/edit-draft.html
--- current_api_html/edit-draft.html	2023-02-20 16:28:33.919831011 +0100
+++ new_api_html/edit-draft.html	2023-02-20 16:27:45.355478869 +0100
@@ -325,6 +325,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/fetch-api-key.html new_api_html/fetch-api-key.html
--- current_api_html/fetch-api-key.html	2023-02-20 16:28:41.767887898 +0100
+++ new_api_html/fetch-api-key.html	2023-02-20 16:27:56.639560704 +0100
@@ -323,6 +323,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "api_key": "gjA04ZYcqXKalvYMA8OeXSfzUOLrtbZv",
diff -r -B -u current_api_html/get-alert-words.html new_api_html/get-alert-words.html
--- current_api_html/get-alert-words.html	2023-02-20 16:28:38.611865021 +0100
+++ new_api_html/get-alert-words.html	2023-02-20 16:27:51.855526010 +0100
@@ -296,6 +296,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "alert_words": [
diff -r -B -u current_api_html/get-attachments.html new_api_html/get-attachments.html
--- current_api_html/get-attachments.html	2023-02-20 16:28:37.243855105 +0100
+++ new_api_html/get-attachments.html	2023-02-20 16:27:50.027512753 +0100
@@ -353,6 +353,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "attachments": [
diff -r -B -u current_api_html/get-custom-emoji.html new_api_html/get-custom-emoji.html
--- current_api_html/get-custom-emoji.html	2023-02-20 16:28:39.435870995 +0100
+++ new_api_html/get-custom-emoji.html	2023-02-20 16:27:53.027534510 +0100
@@ -357,6 +357,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "emoji": {
diff -r -B -u current_api_html/get-custom-profile-fields.html new_api_html/get-custom-profile-fields.html
--- current_api_html/get-custom-profile-fields.html	2023-02-20 16:28:39.591872126 +0100
+++ new_api_html/get-custom-profile-fields.html	2023-02-20 16:27:53.223535931 +0100
@@ -355,6 +355,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "custom_fields": [
diff -r -B -u current_api_html/get-drafts.html new_api_html/get-drafts.html
--- current_api_html/get-drafts.html	2023-02-20 16:28:33.655829098 +0100
+++ new_api_html/get-drafts.html	2023-02-20 16:27:45.007476345 +0100
@@ -324,6 +324,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "count": 3,
diff -r -B -u current_api_html/get-events.html new_api_html/get-events.html
--- current_api_html/get-events.html	2023-02-20 16:28:41.619886825 +0100
+++ new_api_html/get-events.html	2023-02-20 16:27:56.427559167 +0100
@@ -5818,6 +5818,9 @@
 }

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "events": [
diff -r -B -u current_api_html/get-is-user-group-member.html new_api_html/get-is-user-group-member.html
--- current_api_html/get-is-user-group-member.html	2023-02-20 16:28:38.139861600 +0100
+++ new_api_html/get-is-user-group-member.html	2023-02-20 16:27:51.243521572 +0100
@@ -308,6 +308,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "is_user_group_member": false,
diff -r -B -u current_api_html/get-linkifiers.html new_api_html/get-linkifiers.html
--- current_api_html/get-linkifiers.html	2023-02-20 16:28:38.943867427 +0100
+++ new_api_html/get-linkifiers.html	2023-02-20 16:27:52.291529172 +0100
@@ -319,6 +319,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "linkifiers": [
diff -r -B -u current_api_html/get-message-history.html new_api_html/get-message-history.html
--- current_api_html/get-message-history.html	2023-02-20 16:28:32.963824081 +0100
+++ new_api_html/get-message-history.html	2023-02-20 16:27:43.955468716 +0100
@@ -379,6 +379,9 @@
 was edited, prev_content, prev_rendered_content, and
 content_html_diff will not appear).

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "message_history": [
diff -r -B -u current_api_html/get-message.html new_api_html/get-message.html
--- current_api_html/get-message.html	2023-02-20 16:28:32.795822864 +0100
+++ new_api_html/get-message.html	2023-02-20 16:27:43.575465960 +0100
@@ -605,6 +605,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "message": {
diff -r -B -u current_api_html/get-messages.html new_api_html/get-messages.html
--- current_api_html/get-messages.html	2023-02-20 16:28:32.351819644 +0100
+++ new_api_html/get-messages.html	2023-02-20 16:27:42.931461288 +0100
@@ -792,6 +792,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "anchor": 21,
diff -r -B -u current_api_html/get-own-user.html new_api_html/get-own-user.html
--- current_api_html/get-own-user.html	2023-02-20 16:28:36.135847074 +0100
+++ new_api_html/get-own-user.html	2023-02-20 16:27:48.143499090 +0100
@@ -436,6 +436,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "avatar_url": "https://secure.gravatar.com/avatar/af4f06322c177ef4e1e9b2c424986b54?d=identicon&version=1",
diff -r -B -u current_api_html/get-presence.html new_api_html/get-presence.html
--- current_api_html/get-presence.html	2023-02-20 16:28:37.167854555 +0100
+++ new_api_html/get-presence.html	2023-02-20 16:27:49.903511854 +0100
@@ -345,6 +345,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-read-receipts.html new_api_html/get-read-receipts.html
--- current_api_html/get-read-receipts.html	2023-02-20 16:28:33.523828141 +0100
+++ new_api_html/get-read-receipts.html	2023-02-20 16:27:44.827475040 +0100
@@ -324,6 +324,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-server-settings.html new_api_html/get-server-settings.html
--- current_api_html/get-server-settings.html	2023-02-20 16:28:38.839866675 +0100
+++ new_api_html/get-server-settings.html	2023-02-20 16:27:52.191528447 +0100
@@ -485,7 +485,11 @@
   that are realm-specific are not known and thus not provided.

Example response(s)

-
A typical successful JSON response for a single-organization server may look like:

+
Note: If any of the parameters sent in the request are not
+supported by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

+
A typical successful JSON response for a single-organization server
+may look like:

{
     "authentication_methods": {
         "azuread": false,
diff -r -B -u current_api_html/get-stream-by-id.html new_api_html/get-stream-by-id.html
--- current_api_html/get-stream-by-id.html	2023-02-20 16:28:34.915838231 +0100
+++ new_api_html/get-stream-by-id.html	2023-02-20 16:27:46.883489951 +0100
@@ -382,6 +382,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-stream-id.html new_api_html/get-stream-id.html
--- current_api_html/get-stream-id.html	2023-02-20 16:28:34.991838782 +0100
+++ new_api_html/get-stream-id.html	2023-02-20 16:27:46.991490735 +0100
@@ -321,6 +321,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-streams.html new_api_html/get-streams.html
--- current_api_html/get-streams.html	2023-02-20 16:28:34.831837621 +0100
+++ new_api_html/get-streams.html	2023-02-20 16:27:46.787489255 +0100
@@ -474,6 +474,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-stream-topics.html new_api_html/get-stream-topics.html
--- current_api_html/get-stream-topics.html	2023-02-20 16:28:35.403841768 +0100
+++ new_api_html/get-stream-topics.html	2023-02-20 16:27:47.431493926 +0100
@@ -328,6 +328,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-subscribers.html new_api_html/get-subscribers.html
--- current_api_html/get-subscribers.html	2023-02-20 16:28:34.611836028 +0100
+++ new_api_html/get-subscribers.html	2023-02-20 16:27:46.543487485 +0100
@@ -304,6 +304,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-subscriptions.html new_api_html/get-subscriptions.html
--- current_api_html/get-subscriptions.html	2023-02-20 16:28:34.187832953 +0100
+++ new_api_html/get-subscriptions.html	2023-02-20 16:27:45.931483047 +0100
@@ -513,6 +513,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-subscription-status.html new_api_html/get-subscription-status.html
--- current_api_html/get-subscription-status.html	2023-02-20 16:28:34.527835418 +0100
+++ new_api_html/get-subscription-status.html	2023-02-20 16:27:46.375486267 +0100
@@ -317,6 +317,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "is_subscribed": false,
diff -r -B -u current_api_html/get-user-by-email.html new_api_html/get-user-by-email.html
--- current_api_html/get-user-by-email.html	2023-02-20 16:28:36.439849277 +0100
+++ new_api_html/get-user-by-email.html	2023-02-20 16:27:48.571502194 +0100
@@ -495,6 +495,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-user-group-members.html new_api_html/get-user-group-members.html
--- current_api_html/get-user-group-members.html	2023-02-20 16:28:38.227862238 +0100
+++ new_api_html/get-user-group-members.html	2023-02-20 16:27:51.339522268 +0100
@@ -300,6 +300,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "members": [
diff -r -B -u current_api_html/get-user-groups.html new_api_html/get-user-groups.html
--- current_api_html/get-user-groups.html	2023-02-20 16:28:37.583857570 +0100
+++ new_api_html/get-user-groups.html	2023-02-20 16:27:50.599516902 +0100
@@ -332,6 +332,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-user-group-subgroups.html new_api_html/get-user-group-subgroups.html
--- current_api_html/get-user-group-subgroups.html	2023-02-20 16:28:38.323862933 +0100
+++ new_api_html/get-user-group-subgroups.html	2023-02-20 16:27:51.439522994 +0100
@@ -301,6 +301,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-user.html new_api_html/get-user.html
--- current_api_html/get-user.html	2023-02-20 16:28:36.295848235 +0100
+++ new_api_html/get-user.html	2023-02-20 16:27:48.327500424 +0100
@@ -488,6 +488,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-user-presence.html new_api_html/get-user-presence.html
--- current_api_html/get-user-presence.html	2023-02-20 16:28:37.075853887 +0100
+++ new_api_html/get-user-presence.html	2023-02-20 16:27:49.751510752 +0100
@@ -339,6 +339,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/get-users.html new_api_html/get-users.html
--- current_api_html/get-users.html	2023-02-20 16:28:36.027846292 +0100
+++ new_api_html/get-users.html	2023-02-20 16:27:48.027498249 +0100
@@ -500,6 +500,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "members": [
diff -r -B -u current_api_html/mark-all-as-read.html new_api_html/mark-all-as-read.html
--- current_api_html/mark-all-as-read.html	2023-02-20 16:28:33.395827213 +0100
+++ new_api_html/mark-all-as-read.html	2023-02-20 16:27:44.623473561 +0100
@@ -298,6 +298,9 @@

This endpoint does not accept any parameters.

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
@@ -356,6 +359,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
@@ -414,6 +420,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/mute-topic.html new_api_html/mute-topic.html
--- current_api_html/mute-topic.html	2023-02-20 16:28:35.543842783 +0100
+++ new_api_html/mute-topic.html	2023-02-20 16:27:47.547494768 +0100
@@ -346,6 +346,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/mute-user.html new_api_html/mute-user.html
--- current_api_html/mute-user.html	2023-02-20 16:28:38.431863717 +0100
+++ new_api_html/mute-user.html	2023-02-20 16:27:51.603524183 +0100
@@ -323,6 +323,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/reactivate-user.html new_api_html/reactivate-user.html
--- current_api_html/reactivate-user.html	2023-02-20 16:28:36.851852264 +0100
+++ new_api_html/reactivate-user.html	2023-02-20 16:27:49.399508199 +0100
@@ -302,6 +302,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/register-queue.html new_api_html/register-queue.html
--- current_api_html/register-queue.html	2023-02-20 16:28:40.731880388 +0100
+++ new_api_html/register-queue.html	2023-02-20 16:27:54.811547448 +0100
@@ -4694,6 +4694,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "last_event_id": -1,
diff -r -B -u current_api_html/remove-alert-words.html new_api_html/remove-alert-words.html
--- current_api_html/remove-alert-words.html	2023-02-20 16:28:38.751866036 +0100
+++ new_api_html/remove-alert-words.html	2023-02-20 16:27:52.047527403 +0100
@@ -310,6 +310,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "alert_words": [
diff -r -B -u current_api_html/remove-attachment.html new_api_html/remove-attachment.html
--- current_api_html/remove-attachment.html	2023-02-20 16:28:37.327855714 +0100
+++ new_api_html/remove-attachment.html	2023-02-20 16:27:50.143513595 +0100
@@ -308,6 +308,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/remove-code-playground.html new_api_html/remove-code-playground.html
--- current_api_html/remove-code-playground.html	2023-02-20 16:28:39.363870473 +0100
+++ new_api_html/remove-code-playground.html	2023-02-20 16:27:52.903533611 +0100
@@ -298,6 +298,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/remove-default-stream.html new_api_html/remove-default-stream.html
--- current_api_html/remove-default-stream.html	2023-02-20 16:28:35.863845103 +0100
+++ new_api_html/remove-default-stream.html	2023-02-20 16:27:47.875497146 +0100
@@ -307,6 +307,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/remove-linkifier.html new_api_html/remove-linkifier.html
--- current_api_html/remove-linkifier.html	2023-02-20 16:28:39.219869428 +0100
+++ new_api_html/remove-linkifier.html	2023-02-20 16:27:52.635531667 +0100
@@ -298,6 +298,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/remove-reaction.html new_api_html/remove-reaction.html
--- current_api_html/remove-reaction.html	2023-02-20 16:28:32.599821443 +0100
+++ new_api_html/remove-reaction.html	2023-02-20 16:27:43.203463261 +0100
@@ -365,6 +365,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/remove-user-group.html new_api_html/remove-user-group.html
--- current_api_html/remove-user-group.html	2023-02-20 16:28:37.891859803 +0100
+++ new_api_html/remove-user-group.html	2023-02-20 16:27:50.895519048 +0100
@@ -295,6 +295,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/render-message.html new_api_html/render-message.html
--- current_api_html/render-message.html	2023-02-20 16:28:32.687822080 +0100
+++ new_api_html/render-message.html	2023-02-20 16:27:43.307464015 +0100
@@ -327,6 +327,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/reorder-custom-profile-fields.html new_api_html/reorder-custom-profile-fields.html
--- current_api_html/reorder-custom-profile-fields.html	2023-02-20 16:28:39.667872675 +0100
+++ new_api_html/reorder-custom-profile-fields.html	2023-02-20 16:27:53.347536830 +0100
@@ -308,6 +308,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/rest-error-handling.html new_api_html/rest-error-handling.html
--- current_api_html/rest-error-handling.html	2023-02-20 16:28:31.067810337 +0100
+++ new_api_html/rest-error-handling.html	2023-02-20 16:27:41.463450641 +0100
@@ -351,6 +351,45 @@

When the Zulip server has configured multiple rate limits that apply
 to a given request, the values returned will be for the strictest
 limit.

+
Ignored Parameters

+
All Zulip REST API endpoints may return an array of parameters sent
+in the request that are not supported by that specific endpoint.

+
While this can be expected, e.g. when sending both current and legacy
+names for a parameter to a Zulip server of unknown version, this often
+indicates either a bug in the client implementation or an attempt to
+configure a new feature while connected to an older Zulip server that
+does not support said feature.

+
Changes:

+

+

+
Added to all REST API endpoint JSON success responses in Zulip 7.0
+  (feature level 164)

+

+

+
Added to
+  POST /users/me/subscriptions/properties
+  in Zulip 5.0 (feature level 111).

+

+

+
Added to
+  PATCH /realm/user_settings_defaults
+  in Zulip 5.0 (feature level 96).

+

+

+
Introduced in PATCH /settings in Zulip 5.0
+  (feature level 78).

+

+

+
Example JSON success response with ignored parameters

+

{
+  "ignored_parameters_unsupported": [
+      "invalid_param_1",
+      "invalid_param_2"
+    ],
+  "msg": "",
+  "result": "success",
+}
+

diff -r -B -u current_api_html/send-message.html new_api_html/send-message.html
--- current_api_html/send-message.html	2023-02-20 16:28:31.935816629 +0100
+++ new_api_html/send-message.html	2023-02-20 16:27:42.499458155 +0100
@@ -449,6 +449,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "id": 42,
diff -r -B -u current_api_html/set-typing-status.html new_api_html/set-typing-status.html
--- current_api_html/set-typing-status.html	2023-02-20 16:28:37.007853394 +0100
+++ new_api_html/set-typing-status.html	2023-02-20 16:27:49.627509853 +0100
@@ -436,6 +436,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/subscribe.html new_api_html/subscribe.html
--- current_api_html/subscribe.html	2023-02-20 16:28:34.355834171 +0100
+++ new_api_html/subscribe.html	2023-02-20 16:27:46.127484469 +0100
@@ -527,6 +527,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "already_subscribed": {
diff -r -B -u current_api_html/unmute-user.html new_api_html/unmute-user.html
--- current_api_html/unmute-user.html	2023-02-20 16:28:38.511864297 +0100
+++ new_api_html/unmute-user.html	2023-02-20 16:27:51.747525227 +0100
@@ -298,6 +298,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/unsubscribe.html new_api_html/unsubscribe.html
--- current_api_html/unsubscribe.html	2023-02-20 16:28:34.459834925 +0100
+++ new_api_html/unsubscribe.html	2023-02-20 16:27:46.267485484 +0100
@@ -382,6 +382,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-linkifier.html new_api_html/update-linkifier.html
--- current_api_html/update-linkifier.html	2023-02-20 16:28:39.151868935 +0100
+++ new_api_html/update-linkifier.html	2023-02-20 16:27:52.515530797 +0100
@@ -329,6 +329,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-message-flags-for-narrow.html new_api_html/update-message-flags-for-narrow.html
--- current_api_html/update-message-flags-for-narrow.html	2023-02-20 16:28:33.187825705 +0100
+++ new_api_html/update-message-flags-for-narrow.html	2023-02-20 16:27:44.327471414 +0100
@@ -402,6 +402,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "first_processed_id": 35,
diff -r -B -u current_api_html/update-message-flags.html new_api_html/update-message-flags.html
--- current_api_html/update-message-flags.html	2023-02-20 16:28:33.067824835 +0100
+++ new_api_html/update-message-flags.html	2023-02-20 16:27:44.159470195 +0100
@@ -441,6 +441,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "messages": [
diff -r -B -u current_api_html/update-message.html new_api_html/update-message.html
--- current_api_html/update-message.html	2023-02-20 16:28:32.147818166 +0100
+++ new_api_html/update-message.html	2023-02-20 16:27:42.687459519 +0100
@@ -434,6 +434,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-realm-user-settings-defaults.html new_api_html/update-realm-user-settings-defaults.html
--- current_api_html/update-realm-user-settings-defaults.html	2023-02-20 16:28:39.875874183 +0100
+++ new_api_html/update-realm-user-settings-defaults.html	2023-02-20 16:27:53.831540340 +0100
@@ -270,7 +270,10 @@
 identity settings that naturally should be different for each user).

Note that this endpoint cannot, at present, be used to modify
 settings for existing users in any way.

-
Changes: New in Zulip 5.0 (feature level 96).

+
Changes: New in Zulip 5.0 (feature level 96). If any parameters
+sent in the request are not supported by this endpoint, an
+ignored_parameters_unsupported array will
+be returned in the JSON success response.

Usage examples

@@ -676,29 +679,12 @@

Response

-
Return values

-

-

-
ignored_parameters_unsupported: (string)[]

-
An array of any parameters sent in the request that are not
-supported by the endpoint. While this can be expected, e.g. when sending
-both current and legacy names for a parameter to a Zulip server of
-unknown version, this often indicates either a bug in the client
-implementation or an attempt to configure a new feature while
-connected to an older Zulip server that does not support said feature.

-
Changes: Added to POST /users/me/subscriptions/properties in
-Zulip 5.0 (feature level 111).

-
Added to PATCH /realm/user_settings_defaults in Zulip 5.0 (feature level 96).

-
Introduced in PATCH /settings in Zulip 5.0 (feature level 78).

-

-

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
-    "ignored_parameters_unsupported": [
-        "desktop_notifications",
-        "demote_streams"
-    ],
     "msg": "",
     "result": "success"
 }
diff -r -B -u current_api_html/update-settings.html new_api_html/update-settings.html
--- current_api_html/update-settings.html	2023-02-20 16:28:37.479856817 +0100
+++ new_api_html/update-settings.html	2023-02-20 16:27:50.487516089 +0100
@@ -275,7 +275,7 @@
 processed by including in the response object "key": value
 entries for values successfully changed by the request. That
 was replaced by the more ergonomic
-ignored_parameters_unsupported response parameter.

+ignored_parameters_unsupported array.

The /settings/notifications and /settings/display endpoints
 also had this behavior before they became aliases of /settings
 in Zulip 5.0 (see feature level 80 change above).

@@ -846,29 +846,12 @@

Response

-
Return values

-

-

-
ignored_parameters_unsupported: (string)[]

-
An array of any parameters sent in the request that are not
-supported by the endpoint. While this can be expected, e.g. when sending
-both current and legacy names for a parameter to a Zulip server of
-unknown version, this often indicates either a bug in the client
-implementation or an attempt to configure a new feature while
-connected to an older Zulip server that does not support said feature.

-
Changes: Added to POST /users/me/subscriptions/properties in
-Zulip 5.0 (feature level 111).

-
Added to PATCH /realm/user_settings_defaults in Zulip 5.0 (feature level 96).

-
Introduced in PATCH /settings in Zulip 5.0 (feature level 78).

-

-

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
-    "ignored_parameters_unsupported": [
-        "name",
-        "password"
-    ],
     "msg": "",
     "result": "success"
 }
diff -r -B -u current_api_html/update-status.html new_api_html/update-status.html
--- current_api_html/update-status.html	2023-02-20 16:28:36.595850409 +0100
+++ new_api_html/update-status.html	2023-02-20 16:27:49.023505472 +0100
@@ -376,6 +376,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-stream.html new_api_html/update-stream.html
--- current_api_html/update-stream.html	2023-02-20 16:28:35.115839681 +0100
+++ new_api_html/update-stream.html	2023-02-20 16:27:47.227492447 +0100
@@ -433,6 +433,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-subscription-settings.html new_api_html/update-subscription-settings.html
--- current_api_html/update-subscription-settings.html	2023-02-20 16:28:34.711836751 +0100
+++ new_api_html/update-subscription-settings.html	2023-02-20 16:27:46.643488211 +0100
@@ -262,7 +262,7 @@

Changes: Prior to Zulip 5.0 (feature level 111), response
 object included the subscription_data in the the
 request. The endpoint now returns the more ergonomic
-ignored_parameters_unsupported field instead.

+ignored_parameters_unsupported array instead.

Usage examples

@@ -375,28 +375,12 @@

Response

-
Return values

-

-

-
ignored_parameters_unsupported: (string)[]

-
An array of any parameters sent in the request that are not
-supported by the endpoint. While this can be expected, e.g. when sending
-both current and legacy names for a parameter to a Zulip server of
-unknown version, this often indicates either a bug in the client
-implementation or an attempt to configure a new feature while
-connected to an older Zulip server that does not support said feature.

-
Changes: Added to POST /users/me/subscriptions/properties in
-Zulip 5.0 (feature level 111).

-
Added to PATCH /realm/user_settings_defaults in Zulip 5.0 (feature level 96).

-
Introduced in PATCH /settings in Zulip 5.0 (feature level 78).

-

-

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
-    "ignored_parameters_unsupported": [
-        "invalid_parameter"
-    ],
     "msg": "",
     "result": "success"
 }
diff -r -B -u current_api_html/update-user-group.html new_api_html/update-user-group.html
--- current_api_html/update-user-group.html	2023-02-20 16:28:37.767858904 +0100
+++ new_api_html/update-user-group.html	2023-02-20 16:27:50.803518381 +0100
@@ -319,6 +319,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-user-group-members.html new_api_html/update-user-group-members.html
--- current_api_html/update-user-group-members.html	2023-02-20 16:28:37.967860354 +0100
+++ new_api_html/update-user-group-members.html	2023-02-20 16:27:50.999519803 +0100
@@ -317,6 +317,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-user-group-subgroups.html new_api_html/update-user-group-subgroups.html
--- current_api_html/update-user-group-subgroups.html	2023-02-20 16:28:38.051860962 +0100
+++ new_api_html/update-user-group-subgroups.html	2023-02-20 16:27:51.111520615 +0100
@@ -300,6 +300,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/update-user.html new_api_html/update-user.html
--- current_api_html/update-user.html	2023-02-20 16:28:36.515849829 +0100
+++ new_api_html/update-user.html	2023-02-20 16:27:48.691503064 +0100
@@ -348,6 +348,9 @@

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/upload-custom-emoji.html new_api_html/upload-custom-emoji.html
--- current_api_html/upload-custom-emoji.html	2023-02-20 16:28:39.503871488 +0100
+++ new_api_html/upload-custom-emoji.html	2023-02-20 16:27:53.107535091 +0100
@@ -316,6 +316,9 @@
 to 5MB.

Response

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",
diff -r -B -u current_api_html/upload-file.html new_api_html/upload-file.html
--- current_api_html/upload-file.html	2023-02-20 16:28:32.023817268 +0100
+++ new_api_html/upload-file.html	2023-02-20 16:27:42.579458735 +0100
@@ -318,6 +318,9 @@

Example response(s)

+
Note: If any parameters sent in the request are not supported
+by this endpoint, a successful JSON response will include
+an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

{
     "msg": "",

Screenshots of API documentation updates/changes:

API changelog
Current documentation

Rest error handling
Current documentation

)

Note added to the success response
Current documentation - example of current response on an endpoint that has ignored_parameters_unsupported implemented

Updated subscription settings - feature level 111 note
Current documentation

Update realm-level defaults of user settings - feature level 96
Current documentation

Update settings - feature level 78
Current documentation

Updates:

Pushed update to changelog feature level / version.py (164 -> 165). Note that screenshots don't reflect this update.

Updates:

For assert_json_success, the parameter for passing an ignored parameter is now a named parameter to help with readbility; see this review comment above.
The returned ignored_parameters_unsupported is now sorted alphabetically; see this review comment above. The test that returns multiple ignored parameters checks that the array is sorted.
There's a final commit (to pass tests), that is a duplicate of the changes in #24595. Made the small separate PR since I expect that to be easy to merge and is tangential to (but caught by) these changes.
Various comment / documentation updates:

API docs (see updated screenshots below):

The notes in the API docs are now all labeled as Changes notes, making it consistent with our general style.
The rest-error-handling page now uses a generated Changes note and example from the API documentation.
The above Changes note and example is also used for the three endpoints that potentially could return this value before these changes. All other endpoints have a simplified Changes note at the top of the Response section that links to the error handling page, and they do not have an example with the ignored_parameters_unsupported array. We could also decide to just use the special description/example for only one endpoint. We do need to use it in at least one endpoint in the documentation to use it in the generic error handling page.

Comments / docstring updates:

Added a comment to explain what the expectation is for the nested function calls in the nested function call test in test_decorators.py.
Added a comment and a TODO note for why we limit to 200 responses in request.py.
Updated the docstring for MutableJsonResponse.get_data to explain that we expect the callers of this function to potentially mutate the data.

Pending / To-do questions:

When do we want to remove the request as a parameter to the JSON response functions? As a follow-up or a final commit to these changes?
Having the method parameter be processed via REQ in zerver.lib.rest.get_target_view_function_or_response is on my list as a follow-up. But it could be a prep commit to these changes.

Updated API docs screenshots:

API changelog entry
Note that the link goes to the Rest error handling page.
Current documentation

Ignored parameters section in Rest error handling article
Note that the Changes note and example are used in three endpoints for the JSON success example.
Current documentation
Note that section does not exist in current documentation

Updated main description for POST /subscriptions/properties
Current documentation

Updated main description for PATCH /realm/user_settings_defaults
Current documentation

Updated main description for PATCH /settings
Current documentation

Changes note above examples in majority of endpoints
Note that the link goes to the Rest error handling page.

This looks great! I fixed a few typos (a "Zulip 6.0 (feature level 78)" that should have been 5.0, a doubled letter) and added a few words to the ignore parameters description in one place, but otherwise this lgtm and I've marked it to merge once CI passes. Thanks for all the work on this @laurynmm! I assume you'll manage the follow-ups noted here; the one follow-up I'm aware of that seems not quick is adding support for this in some error responses. Can you bump the API design conversation with a discussion of what we should make the Python bindings do when it receives one of these? I can see a range of options between having it log something or throw an error, and I expect we'll want to give the programmer control over that, but I don't have a good sense what the default behavior should be.

When do we want to remove the request as a parameter to the JSON response functions? As a follow-up or a final commit to these changes?

Follow-up seems fine; this is enough complexity to review, and that is a pure refactor with no API impact, so there's no real downside to deferring it.

Having the method parameter be processed via REQ in zerver.lib.rest.get_target_view_function_or_response is on my list as a follow-up. But it could be a prep commit to these changes.

That sounds like a good idea as a follow-up.


Remove locked routines

@digama0 So, parking_lot still requires std, which is annoying. This PR provides a potential fix.
However, I suggest we should completely remove the *_locked things. It is hardly useful to provide such locked routines. Users cannot call it multiple times, even if it is locked. Users still struggle to maintain the status to check if Lean is already initialized. Also, the user may initialize their own pieces between lean_initialize and io_mark_end_initialization, where exclusivity is required during the whole time, but these *_locked things simply release the lock after the first function call.
// Why not just mark `lean_initialize_runtime_module` as `MT-unsafe` and let users use their own lock?
pub(crate) fn initialize_runtime_module_for_tests() {
        let _guard = LEAN_INIT_MUTEX.lock();
        if !INITIALIZED.load(std::sync::atomic::Ordering::SeqCst) {
            unsafe {
                lean_initialize_runtime_module();
            }
            INITIALIZED.store(true, std::sync::atomic::Ordering::SeqCst);
        }
    }

As in this low-level lean-sys, I think just providing the unsafe initialization routine is fine.

@digama0 I change this PR to remove *_locked initializations. I also found a problem in previous tests where initialization can be called multiple times. At least for small_allocator, such repeated initialization means that previously allocated pages are leaked.


Not able to load services json

i have tried loading json but failed.please update docs for clarity.

@anuj509 Could you please help me with some details about the following?

What is the django version
What was the error message

@anuj509 Could you please install the latest version (0.1.2) and test it again? I found and fixed a bug related to relative path of files.

Since the issue has been fixed, and there is no update, I'm closing this issue.


Adding ability to unfurl links

Added a new optional boolean parameter: sendAsText as I don't know of any way to have Slack unfurl links found in attachments. Not including the parameter or setting as false returns the same functionality as before.  Setting it to true causes the plugin to send a message as text instead of in an attachment and because I added unfurl_links=true and unfurl_media=true to the API calls, links will be automatically unfurled in Slack.
I've tested this both as a bot user and as the default Jenkins user.
Fixes #526

@EricBartusch
You might want to set up an email alias on your GitHub account 🥇
Or look into fixing your git user.email config 😅
to get proper credit for your commits 🏆
https://help.github.com/articles/adding-an-email-address-to-your-github-account/
https://help.github.com/articles/setting-your-commit-email-address-in-git
then to amend your commits: https://stackoverflow.com/a/3042512
Seems your git email changed here: https://github.com/jenkinsci/slack-plugin/commit/c1e320652dd11c9935a2088eb228e94969f215dc.patch
It's fine on this commit https://github.com/jenkinsci/slack-plugin/commit/95d60ee2cb7e213b491eb71e17510e32c229d3b6.patch

The pains of switching between a work PC and my home PC!

@EricBartusch This is totally solvable even when switching:
https://github.com/casz/dotfiles/blob/f37e0bddf17d9949316e1eeb832486283c1636d2/git/gitconfig#L59-L66

I realized that I didn't add this functionality for freestyle jobs.  Should I close the PR until I add that?

I don't mind if this doesn't work on freestyle jobs, pipeline jobs are a lot more flexible with this plugin...

I'll keep this out of freestyle jobs.  What are your thoughts on having it globally configured? I can add that in if it's worthwhile.

Yeah worth having it globally

functionality works, links unfurl now, just need the two review comments sorted

Thanks for working through the issues with this PR and the last. My OOP skills are a little dull to say the least.


nsp installation overwrites git hooks

This is really a usage question, not an issue per se, unless you think it is.
I have added nsp to the devDependencies for a node project.  If I carry out a local install, like so:
npm install .

then the pre-commit hook (at .git/hooks/pre-commit) gets moved to .git/hooks/pre-commit.backup
Is there a way to make nsp play nice with existing git hooks, or to integrate them into nsp?

Can you tell me what version of npm you are using as well as what version of nsp you are installing?

We did publish 2.8.1 last night that removed the devDeps from our shrinkwrap, that might fix the issue.

npm version 5.4.2
nsp version 2.8.0
I will try nsp 2.8.1 and report back.

Egad, that's fixed it!  My pre-commit hook is intact.

yes! that's great to hear. Sorry for the mixup.

Just for search engines:
We were not using Git hooks, but since we used 2.7.0^ early September the pre-commit and pre-push hooks were added, and not removed after upgrading to 2.8.1. In our case it also happened to make Git commit and push extremely slow (over 5 minutes for just a commit) on one specific Windows 7 machine. This was probably caused by our nested project structure which has node_modules in sub-folders (which might not have been excluded for the hooks), and/or by Git Bash being extremely slow on the affected machine anyway.
Manually removing the hooks solved that, but of course we were curious where they came from to start with. So, though I think the following refers to git-validate, just some text from the hooks, for those who might be looking for the source of the hooks as well:
# Get the exported path from the default login shell, and append it to the
# path from the environment. We ignore the stderr because there are
# potential errors and all we care about is the PATH.

# This section copied from github.com/dominictarr/JSON.sh and simplified a bit

# Search parsed JSON for a named script, return the script as a string

# Finds the appropriate commands to run for a project and runs them


Provide a way to pass secret variables through extra_vars

Hi,
it would be awesome to have the possibility to pass secret variables to the provisioner, that are unknown prior to terraform apply and can thus not be stored in the vault.
In my case I want to create an AWS access key with terraform and pass the key values to the ansible provisioner to use it on the new remote host for the AWS CLI.
Passing it as extra_var will show the secret values in my CI pipeline though.

Hi @rflume-zt, I'm not sure how this can be addressed cleanly. One would probably need to construct a vars file prior to ansible execution and make sure that file resides in a playbook which would be uploaded by the provisioner. Anything else will always show up in an ansible command.
Alternative would be to $(cat extra_vars_file) instead of using extra_vars map. Interesting. A similar approach could be used to handle SSH passwords.


Clarify wallet network needed for email verification service in demo to prevent network mismatch error

While iterating through following demo instructions using the Trinsic Wallet:
https://github.com/bcgov/vc-authn-oidc/blob/master/docs/DemoInstructions.md
the "Get a verifiable email credential" section does not specify which network you should be using! For example, when I try the Sovrin production network - wallet default - I am able to get the connection added but not the pending credential offer! I get a network mismatch error. My assumption was to use BCovrin since its a BC related demo but that didn't work either.

After trial and error, I was able to get it accepted on Sovrin Staging hence the connection itself is performed out of network.


Steam [CSGO] inventory bug.

many of the CSGO players/users are facing any issues of not seeing their inventory after accepting the inventory in the inventory bag. it is visible on the profile but cannot be seen ingame and cannot be equipped. This issue is persisting from last 24 hours or so may be less but still have an inventory worth 280$ being unable to equip or cannot be seen ingame.

This has nothing to do with SteamDB.


Hot reloading with immutable.js data structures

I'm having the following problem with hot reloading.... I have a fairly complicated application, and some portions of my state use Immutable list objects. Everything works and the plugin display shows me the contents of the lists as if they were arrays. When I try to do hot-reloading using the debug_session=123 (or similar) query string parameter, upon reload, the system replaces the Immutable.List objects with regular arrays, which causes my application to not work properly.
I'm using the Chrome plug-in version. I just updated to version <IP_ADDRESS> (which is still having this problem.)

You should specify deserializeState method.

Thanks! After adding deserializeState and deserializeActions, this is working well. (Although I am running out of local storage space; I will file a separate issue.)

@BrianHanechak, see persisting states right from the extension.

Redux DevTools Extension got full support for ImmutableJS out of the box, just pass the Immutable library in serialize parameter. See the release notes for more details.


Nfts attribute read interface

This PR contains changes to the frame_support::trait::tokens::nonfungible(s)_v2::Inspect trait:

attribute now doesn't take the namespace argument
Added custom_attribute function
Added system_attribute function
The typed-companions are also added

A runtime API is added for the NFTs pallet. The interface is the same as in the Inspect trait.
Some docs were modified.

@jsidorenko please take a look :)

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: cargo-check-each-crate
Logs: https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/2371313

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: test-linux-stable-int
Logs: https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/2371309

bot merge


POC Steps for sods-csi-plug-n-play feature

What type of PR is this?
/kind documentation

/cc @kumarashit @sushanthakumar @skdwriting


Alpine 3.8

Please add Python for Alpine 3.8.

If you check the tags, we already have several versions with Alpine 3.8.

my bad - python:3.7-alpine3.8


One more version update for 0.8.0 final

Are there other occurences of 0.8.0rc0? It's safe to assume they're all supposed to be converted (except in RELEASES.md).

The timing is, as long as we don't deploy the website between this merge and the release, we're good.


keyframes and globalkeyFrames from @vanilla-extract/css drops quotes in content values

Describe the bug
Example:
// example.css.ts
const dots = keyframes({
  '0%': {
    content: '.',
  },
  '33%': {
    content: '..',
  },
  '66%': {
    content: '...', // bug is here
    // content: '"..."' works, but is brittle because compiled css might break after fix
  },
})

export const loadingDots = style({
  selectors: {
    '&::after': {
      animation: `1.5s step-end infinite ${dots}`,
      content: '...',
    },
  },
})

The compiled CSS output is:
// example_compiled.css
@keyframes GeneratedQnaCard_dots__1lcuewb6 {
  0% {
    content: .;
  }
  33% {
    content: ..;
  }
  66% {
    content: ...; // Note the lack of wrapping quotes, which essentially breaks the animation
  }
}

.GeneratedQnaCard_loadingDots__1lcuewb7::after {
  content: "...";
  animation: 1.5s step-end infinite GeneratedQnaCard_dots__1lcuewb6;
}

Reproduction
https://codesandbox.io/s/reverent-taussig-occzrp?file=/src/App.tsx
System Info
System:
    OS: macOS 12.6.1
    CPU: (10) arm64 Apple M1 Pro
    Memory: 230.16 MB / 32.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 19.3.0 - /opt/homebrew/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 9.2.0 - /opt/homebrew/bin/npm
  Browsers:
    Chrome: 109.0.5414.119
    Firefox: 103.0.2
    Safari: 15.6.1
  npmPackages:
    @vanilla-extract/babel-plugin: ^1.2.0 => 1.2.0
    @vanilla-extract/css: ^1.9.1 => 1.9.3
    @vanilla-extract/dynamic: ^2.0.2 => 2.0.3
    @vanilla-extract/private: ^1.0.3 => 1.0.3
    @vanilla-extract/webpack-plugin: ^2.2.0 => 2.2.0
    webpack: ^5.35.0 => 5.75.0

Used Package Manager
npm
Logs
No response
Validations

[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] The provided reproduction is a minimal reproducible example of the bug.

Thanks for the quick fix Adam!


Exit status dependent upon amount of fixable files in homedir

This would allow for slightly easier scripting using the program.
Example of a cronjob that could be created using this feature:
@weekly xdg-ninja.sh || notify-send "Unnecessary dot files in homedir" "You have $@ unnecessary files in your home directory."

Currently a user would have to create a rather-long wrapper program that finds the amount of red ansi codes which is not preferable.

I've actually thought about this exact thing before, but I was too lazy to implement it, since I basically have what you described in my dotfiles. (See here to see what I mean, basically a message I get when I open up a new shell that tells me if new files have appeared in the home dir.
I'd definitely be open to a PR for this.

Could I suggest creating a cli option to xdg-ninja, something like --show-only-amountthat would print the line You have X dotfiles in your home.
That prevents from using the return value of the program (which when different than 0 suggests an error happened during execution), so it would let the place for error codes when needed and allow for versatility if needed. So in the future it could have some more cli features like maybe excluding the stuff that can't be fixed from output or whatever option or maybe exclude certain dotfiles because it can't be fixed on your end.
Plus it would simplify what you put in your shell rc file.

I added this with fbd1432, let me know if you encounter any problems.
I might think about adding more control options like @Breigner01 suggested in the future.


Fix crash in Samples app on iPad

Noticed this while looking through the samples on an iPad.
I'd prefer to use the UITableViewCell as the sourceView, but that would be more work.

Thank you so much, @milettal!! You saved me ❤

I'd prefer to use the UITableViewCell as the sourceView, but that would be more work.

I totally agree. I tried to added 83c9818 commit 👍


Add line highlighting to latex formatter

(Original issue 1187 created by dhandy2013 on 2016-01-06T14:15:56.674545+00:00)
I am writing a book using Sphinx, and would like highlighting of individual lines of Python code samples to work in PDF format like it does in HTML format.
Bram Geron on the Sphinx-dev list was kind enough to advise me that adding line highlighting support to the latex formatter in pygments was the way to solve this problem: https://groups.google.com/forum/#!topic/sphinx-dev/GSLzhsYsdyU
I'm proposing to add hl_lines and hl_color options to LatexFormatter, similar to what was done for ImageFormatter in this ticket: https://bitbucket.org/birkenfeld/pygments-main/issues/457/highlight-line-in-imageformatter
Help and advice welcome!

(Original comment by tshatch on 2016-06-01T20:35:36.530097+00:00)
Yes, that sounds great.  How to properly highlight lines in latex is the missing part that I don't know.
(Moving to Sprint milestone since it's bite-sized, and we may end up with a contirbutor that knows as well to help.)

(Original comment by tjelle on 2016-07-26T22:16:37.987092+00:00)
I too would be really keen to get this working.
Is there anything I can do to help?

(Original comment by g_poore on 2016-09-21T00:30:34.601348+00:00)
As far as the LaTeX side is concerned, my fvextra package for LaTeX extends the fancyvrb package that is currently used for Pygments LaTeX output. fvextra adds highlightlines and highlightcolor options to the Verbatim environment.

(Original comment by dietmarw on 2017-11-16T16:43:26.625343+00:00)
Hi, any news on the implementation of the highlighter?

(Original comment by jfbu on 2017-12-12T19:21:08.321011+00:00)
Sphinx 1.6.6 (github ) will add support for highlighted lines. As Pygments LaTeXFormatter currently ignores hl_lines, the Sphinx LaTeX writer handles directly the data and malaxes it into suitable LaTeX mark-up.
We did not benefit from very nice fvextra LaTeX package by @g_poore, because we already have in place some wrapper of fancyverb's Verbatim and extended that.
If Pygments LaTeXFormatter at some point takes into account hl_lines, presumably by adding suitable fvextra  enabled option to Verbatim environment, please ping the Sphinx then current LaTeX maintainer before release so that he/she can adapt to that (even without loading full of fvextra.sty.)
Side note @g_poore: I copied over your choice of default highlight colour ;-)

(Original comment by dietmarw on 2017-12-13T07:52:37.317985+00:00)
This is great news . I just tested it with today's 1.6.6+ stable. Only problem is that there is an offset in the highlighted line. But I guess that this is something that ought to be reported on the sphinx issue tracker.

(Original comment by jfbu on 2017-12-13T10:27:33.595124+00:00)
Thanks for reporting @dietmarw, that Sphinx problem got fixed.


ENH: Add unit test for AnnulusShapeAnalyzer

@che85
Currently using the 0-1_AnnulusContourPoints.csv as the annulus contour file for the unit test.
Some issues with the test dataset:
L14-NM_HD_smooth in 1-5_AnnulusContourPoints.csv
L067-NM_SA_smooth in 9-13_AnnulusContourPoints.csv
L087-NM_SA_smooth and L100-NM_SA_smooth in 13-up_AnnulusContourPoints.csv
These filenames are not presented in the Demographics.csv and thus would fail the test in the regression section. We may want to fix this for the sample data if users want to try them manually. I haven't checked the all-age but it may have the same issue if it is just a concatenation of all the contour files.

@yehan0223 LGTM. Thank you. I ran the test and everything is working. We now have a working basic test. I will fix the demographics for manual use.


Exception in js script and calls not working

The "Connecting to twilio..." never changes. I followed every step in the readme.md and this exception shows when i click on Call Customer button. What may I have missed?

not a solution, but i just ran this locally, and it doesnt look like its properly bundling jquery scripts. might be something there...investigating

hack fix--go into /Views/_Layout.cshtml and replace:
@Scripts.Render("~/bundles/scripts")

with:
@Scripts.Render("~/Scripts/jquery-3.4.1.js")
@Scripts.Render("~/Scripts/browser-calls.js")

@davidlfox This actually solved the problem. Much appreciated.


Feature/upgrade

@thandaanda found a bug with the (not so new) limit in the tweets, which meant that twitter-stream-channels wasn't searching keywords in the whole tweet if it was > 140 characters.
Before accepting the PR, I had to upgrade the mocks and unit tests. It's now done.
Tests are now passing on latest versions of nodejs - https://travis-ci.org/topheman/twitter-stream-channels
@thandaanda, I added your fix in this PR, if you could take a look at it, then I will publish a new version on npm.
Thanks for your contribution,
Tophe

@topheman I am running updated code on my dev version and it is working fine. I think we are good to go.


Problem retrieving refsets

I am calling the following endpoints but I am getting confusing results
GET /snomed-ct/v3/{path}/members - Retrieve reference set members from a branch
GET /snomed-ct/v3/{path}/refsets - Retrieve Reference Sets from a branch
Using the Swagger UI,
http://localhost:8000/snowowl/snomed-ct/v3/MAIN/members returns 50 out of a potential 10067083 records.
http://localhost:8000/snowowl/snomed-ct/v3/MAIN/refsets?limit=50 returns 0 records.
Why 0 records?  I get the same from my own code so I am wondering if there are any other required parameters. If so, could you give some detail on what they are and what kind of values I should use?

Hi @RichardChappell,
This looks like a bug. The endpoint should return reference set documents instead of returning zero. May I ask which version of Snow Owl do you have installed?
The fix will be available soon in the new snow-owl-oss 7.x Docker image and will be released end of next week with the 7.4.0 version.
Cheers,
Mark


Limitations on current image generating method

Hi, I found currently the image generating way hard to make input image as reference:

any thought about it?
BTW, I found the pretrain stage of this loss is very high:
{'loss': 2.573, 'learning_rate': 0.0007701925673852566, 'epoch': 0.34}
{'loss': 2.8217, 'learning_rate': 0.0007698799612970509, 'epoch': 0.34}
{'loss': 2.5646, 'learning_rate': 0.0007695672062744539, 'epoch': 0.34}
{'loss': 2.6857, 'learning_rate': 0.0007692543024900611, 'epoch': 0.34}
{'loss': 2.6944, 'learning_rate': 0.0007689412501165496, 'epoch': 0.34}
{'loss': 2.6418, 'learning_rate': 0.0007686280493266786, 'epoch': 0.34}
{'loss': 2.6801, 'learning_rate': 0.0007683147002932893, 'epoch': 0.34}
{'loss': 2.7245, 'learning_rate': 0.0007680012031893049, 'epoch': 0.34}
{'loss': 2.6275, 'learning_rate': 0.0007676875581877296, 'epoch': 0.34}

Hi, because the generation process actually based on text in this version, it does not support fine-grained image editing.
The loss seems high in epoch 0.34, it should be less than 2.0 in my experience.
Am using V100x8 for pretrain.

Hi, if you use original llava 1.5 training data, I guess loss > 2.0 is acceptable during pretraining. For Gemma, we actually tried to use plain instruction for pertaining, but the performance is much worse. I guess this could be attributed to the instruction-following abilities are quite different across LLMs, so we just use the same instruction format for both pertaining and sft for Gemma.

@yanwei-li Hi, why a template could effect final performance so much? Is there any deeper reason?

Sorry for the incorrect expression, the performance difference is not too much but still has some effect. For example, in our experiments, when we change the stage-1 prompt to plain, the MME performance drops but the TextVQA increases a little. We maintain the original settings for convenience.
It may be caused by the bias. I'm trying the plain version and will update the results here later.

Hi, we align the data and change the prompt format in Stage-1 from gemma->plain, here is the result:

Stage-1: gemma, Stage-2: gemma-> TextVQA: 56.2, MME: 1341/312, MM-Vet: 31.1
Stage-1: plain, Stage-2: gemma-> TextVQA: 50.7, MME: 1318.6/283, MM-Vet: 29.4

Previously, we mainly conduct studies with relative small dataset. It's clear that when we improve the dataset to all instructions used in our approach, the gap will be further enlarged, especially with Gemma. This is not a general case for LLaMA-based LLMs. I guess this can be attributed to the Gemma-2b-it uses this format with most of data for their LLM training.

Oh, so that it could be better try same template in pretrain stage. Actually since the projector training stage didn't open LLM, it might be more suitable if keep same prompt as stage 2 since same projector were used.

Theoretically, it is, but we do not find any significant gap in LLaMA-based LLMs.


Can't run BenchmarkDotNet inside .NET Interactive Notebook

Issue Type: Bug
Tried to run benchmark:
BenchmarkRunner.Run

got error:
Error: System.IO.FileNotFoundException: Could not load file or assembly 'ℛ*2e295739-0d3e-430f-b26c-d1fd780c9897#1-68, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'ℛ*2e295739-0d3e-430f-b26c-d1fd780c9897#1-68, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.InternalLoad(ObjectHandleOnStack assemblyName, ObjectHandleOnStack requestingAssembly, StackCrawlMarkHandle stackMark, Boolean throwOnFileNotFound, ObjectHandleOnStack assemblyLoadContext, ObjectHandleOnStack retAssembly)
at System.Reflection.RuntimeAssembly.InternalLoad(AssemblyName assemblyName, RuntimeAssembly requestingAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, AssemblyLoadContext assemblyLoadContext)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at BenchmarkDotNet.Validators.JitOptimizationsValidator.Validate(ValidationParameters validationParameters)+MoveNext()
at System.Linq.Enumerable.SelectManySingleSelectorIterator2.MoveNext()    at System.Linq.Enumerable.DistinctIterator1.MoveNext()
at System.Collections.Generic.List1.InsertRange(Int32 index, IEnumerable1 collection)
at BenchmarkDotNet.Running.BenchmarkRunnerClean.Validate(BenchmarkRunInfo[] benchmarks, ILogger logger)
at BenchmarkDotNet.Running.BenchmarkRunnerClean.Run(BenchmarkRunInfo[] benchmarkRunInfos)
at BenchmarkDotNet.Running.BenchmarkRunner.RunWithDirtyAssemblyResolveHelper(Type type, IConfig config, String[] args)
at BenchmarkDotNet.Running.BenchmarkRunner.<>c__DisplayClass0_01.<Run>b__0()    at BenchmarkDotNet.Running.BenchmarkRunner.RunWithExceptionHandling(Func1 run)
at BenchmarkDotNet.Running.BenchmarkRunner.Run[T](IConfig config, String[] args)
at Submission#98.<>d__0.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.RunSubmissionsAsync[TResult](ImmutableArray1 precedingExecutors, Func2 currentExecutor, StrongBox1 exceptionHolderOpt, Func2 catchExceptionOpt, CancellationToken cancellationToken)
Extension version: 1.0.3103010
VS Code version: Code 1.64.0 (5554b12acf27056905806867f251c859323ff7e9, 2022-02-03T04:23:11.224Z)
OS version: Linux x64 5.15.16-calculate
Restricted Mode: No

System Info

Item
Value

CPUs
AMD Ryzen 7 5800X 8-Core Processor (16 x 2200)

GPU Status
2d_canvas: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offopengl: enabled_onrasterization: disabled_softwareskia_renderer: enabled_onvideo_decode: disabled_softwarevulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
0, 0, 0

Memory (System)
15.65GB (4.63GB free)

Process Argv

Screen Reader
no

VM
0%

DESKTOP_SESSION
/usr/share/xsessions/plasma

XDG_CURRENT_DESKTOP
KDE

XDG_SESSION_DESKTOP
KDE

XDG_SESSION_TYPE
x11

the notebook:
https://github.com/obratim/notebooks/blob/main/multithread random numbers.ipynb

It would be really valuable if BenchmarkDotNet could run in a notebook.  It's something I'm trying to do at the moment.

It would be very useful to be able to run benchmarks in a notebook. I think we'll need to build an extension for it. The issue you're hitting is that C# scripting emits an in-memory assembly for each code submission. BenchmarkDotNet doesn't know how to load those assemblies.
I've spent a little time trying to get this to work and came to the conclusion that without a change to BenchmarkDotNet, the simplest thing to do would be write a .NET Interactive extension that emits a project to disk.
Air code:

A few things this could do:

Use the .NET Interactive middleware to grab the code submission and template it into a normal C# BenchmarkDotNet project
Build and run that project
Store the benchmark runs as variables that could be shared with other kernels so you can use it programmatically e.g. for plotting

@jonsequitur Thanks for the info.  To be honest I'm not familiar with inner workings of .net interactive or BenchmarkDotNet.  I'm going to chat with the rest of my team about this and I'll come back to you if I think that it's something that we can work on.


MemoryError: std::bad_alloc on multiple platforms

I am trying to train with a recording and transcript of a speech. I have follow the instructions to a t.
Every time I run python3.10 -m vall_e.emb.qnt ./trainingData I get the following error:
  0%|                                                                                | 0/1 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/masoncfrancis/donaldVoice/venv/lib/python3.10/site-packages/vall_e/emb/qnt.py", line 95, in <module>
    main()
  File "/home/masoncfrancis/donaldVoice/venv/lib/python3.10/site-packages/vall_e/emb/qnt.py", line 90, in main
    qnt = encode_from_file(path)
  File "/home/masoncfrancis/donaldVoice/venv/lib/python3.10/site-packages/vall_e/emb/qnt.py", line 71, in encode_from_file
    wav, sr = torchaudio.load(str(path))
  File "/home/masoncfrancis/donaldVoice/venv/lib/python3.10/site-packages/torchaudio/backend/sox_io_backend.py", line 251, in load
    ret = torch.ops.torchaudio.sox_io_load_audio_file(
  File "/home/masoncfrancis/donaldVoice/venv/lib/python3.10/site-packages/torch/_ops.py", line 502, in __call__
    return self._op(*args, **kwargs or {})
MemoryError: std::bad_alloc

I have tried on Windows, WSL, Ubuntu, and Debian, all with the same issue. I have even tried different versions of PyTorch, some w/ CUDA support and some without. I always run into this issue.

Hola


Update enable-skype-meeting-broadcast.

Issue #2094 - Document has been updated with the privileges required to Enable Skype Meeting Broadcast.

@nenonix @JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@tonysmit Hi Tony, changes look correct. Could you please review and merge? Thanks!


feat: use kubeConfig in extensions to init kubernetes runtime

What type of PR is this?
/kind feature
What this PR does / why we need it:
use kubeConfig in extensions to init kubernetes runtime.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

33 of 40 (82.5%)  changed or added relevant lines in 7 files are covered.
14 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.1%) to 74.018%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/engine/runtime/terraform/terraform_runtime.go
0
1
0.0%

pkg/engine/runtime/init/init.go
20
26
76.92%

Files with Coverage Reduction
New Missed Lines
%

pkg/cmd/apply/options.go
7
71.94%

pkg/cmd/destroy/options.go
7
84.08%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
6894

Relevant Lines:
9314

💛  - Coveralls


Event Handler Parameters

Specific Demand
Some events require metadata in addition to the event callback. One example of this is the intersection observer. Currently there is no system to create events in dioxus that take parameters.
Implement Suggestion
We can add parameters for event handlers:
div {
    // I think this one looks nicer
    onvisible(60): move |_| todo!(),
    onvisible[60]: move |_| todo!(),
    // This may be more clear if the event handler accepts multiple parameters
    onvisible.precent(60): move |_| todo!(),
}

YourComponent {
    // I think this one looks nicer
    onpointscored(60): move |_| todo!(),
}

An alternative solution was proposed in this weeks office hours:
We could create and bind hooks instead of listeners:
let observer = use_observer(parameters);

rsx!(
  div {
    observer: observer,
  }
)

This seems similar to element refs (Dioxus uses the onmounted event instead) or bindings in svelte. It acts like an out attribute that exports data from the element it is attached to into a different hook


Allow including SimpleAPI from C++11 source

Hi @vincentdchan !
I found a small change that allows using SimpleAPI.h from C++11 code, which avoids having to set respective flags for the embedding project (and will probably also help with compile times in those embedding projects).
Best,
Jonathan

What scenarios need to support only C++ 11? Do you want to use jetpack in some old systems?

Mainly to reduce build times I try to avoid C++17 in my project, since I rarely need its features.

But you have to compile jetpack.js with C++17. So you want to link jetpack as a static library, you project compiled with C++ 11?

@vincentdchan Exactly, I compile the rest of my project as separate CMake targets and with C++11, linking to jetpack (even through compiled with C++17) is no problem, as long as the included headers (only SimpleAPI.h) are C++11 compatible.

Sounds reasonable


Add SCION Rust library

Today we have made our endhost library written in Rust public.
Currently, we have a working UDP socket as well as a raw socket to send and receive SCMP messages (similar features to the snet library). We also have tools to cache and refresh paths via the SCION daemon.
We will continue working on the repository, for example to implement better path management (similar to the pan library), increase resilience, and add a QUIC/SCION socket.
cc @jpcsmith

Sweet!


bugfix for autocompile not working..

coffeeScriptGrammar will be undefined, breaking everything..

I think this is since version 1.6.2 - before it worked..

Thanks for the PR @paulpflug! Looks like a simple fix, and it maintains backwards compatibility with Atom core. I'll test it a bit and publish the new version shortly.

Just published v0.5.0 that includes this fix :) Thank again!


Use the Asciidoctor logger from a Java Extension

With https://github.com/asciidoctor/asciidoctor/issues/44 a proper logger infrastructure has been added to Asciidoctor (ruby).
The logs can be accessed in AsciidoctorJ:
https://github.com/asciidoctor/asciidoctorj#logs-handling-api

AciidoctorJ (v1.5.7+) offers the possibility to capture messages generated during document rendering

I was wondering if the AsciidoctorJ extension I am writing can access the Logger and add an entry.
Quoting @robertpanzer:

While it's possible to receive the log entries that Asciidoctor logs, it's not possible yet for an extension to log using the same Logger that Asciidoctor is using.
I agree that it would make sense to expose this to extensions as well.

I am curios about the use case, to see how best approach this.

From the Ruby side, the design is to simply include the Asciidoctor::Logging module into any class. For example, here's how it's done in Asciidoctor PDF (ignore the shim logic).
https://github.com/asciidoctor/asciidoctor-pdf/blob/db8d3bf3a58103d178901de4fac6977fa50aa1d2/lib/asciidoctor-pdf/converter.rb#L33
I'm not sure what the equivalent would be in Java.

I am curios about the use case, to see how best approach this.

If logged warnings let the build fail in the asciidoctor-maven-plugin it would be just logical for me that an extension should also be able to emit such warnings.
Besides extensions converters should be able to log too.
Just like Ruby code, Java code should be able to do the same.

But the maven plugin captures logs messages. Here we are talking about publishing, I see this as a different thing.
Publishing totally makes sense, but either we have a 'getLogger()' in the extensions API or a static 'AsciidoctorLogger.gerLogger()'. At least that keeps things independent, which is aligned with the current efforts.

getLogger() is exactly something I would expect.
Personally I do not care if I get the same logger than the ruby one or if this is a pure Java implementation.
As long as the warning I log in my extension go in the same list as the Ruby one, this is OK for me.

I am trying the feature from an InlineMacroProcessor:
String warningMessage;
//... set value of warningMessage
log(new LogRecord(Severity.WARN, warningMessage));

I am wondering if there is a possibility to get access to the Cursor in order to use an other LogRecord constructor.
What did I miss?