Authentication with openapi not passing

Hi,
Our project management tool called YouTrack supports the openapi v3 standard but it requires authentication. I am having some trouble authenticating ... or so I believe.
Executing the curl request below returns the desidered output (See the attached zip file openapi.json.zip)
curl --location --request GET 'https://youtrack.example.com/api/openapi.json' \
--header 'Authorization: Bearer perm:******************'

My .meshrc.yaml
sources:
  - name: Youtrack
    handler:
      openapi:
        source: https://youtrack.example.com/api/openapi.json
        headers:
          Authorization: Bearer Bearer perm:******************

Then when I execute yarn graphql-mesh serve it results in
error: Unable to serve mesh: Invalid specification provided {"stack":"Error: Invalid specification provided\n    at Object.<anonymous> (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/oas_3_tools.js:61:19)\n    at Generator.next (<anonymous>)\n    at /Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/oas_3_tools.js:12:71\n    at new Promise (<anonymous>)\n    at __awaiter (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/oas_3_tools.js:8:12)\n    at Object.getValidOAS3 (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/oas_3_tools.js:41:12)\n    at Object.<anonymous> (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/index.js:96:37)\n    at Generator.next (<anonymous>)\n    at /Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/index.js:12:71\n    at new Promise (<anonymous>)"}

Finally, I saved the contents of https://youtrack.example.com/api/openapi.json to a file and updated .meshrc.yaml with the source pointing to source: ./openapi.json which then allows me to run yarn graphql-mesh serve  Playground is accessible, schema, queries, mutation and everything seems to be there. Obviously executing queries does not work since the real host is not being piped through.
So am I doing something wrong or is there an issue with authentication?

We changed the API for Swagger but haven't released it yet. You can use the alpha release for now. 0.0.20-alpha-aa57f27.19+aa57f27
You can pass headers for you schema like below with that alpha version;
sources:
  - name: Youtrack
    handler:
      openapi:
        source: https://youtrack.example.com/api/openapi.json
        schemaHeaders:
          Authorization: Bearer Bearer perm:******************

Thank you I've changed to the alpha release as suggested. Also I assume the Authorization: Bearer Bearer perm:****************** having Bearer twice was just a typo.
Anyway, the error has now changed to:
error: Unable to serve mesh: Request is not defined {"stack":"ReferenceError: Request is not defined\n    at readUrlWithCache (/Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/utils/index.cjs.js:69:52)\n    at Object.readFileOrUrlWithCache (/Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/utils/index.cjs.js:32:16)\n    at Object.getMeshSource (/Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/openapi/index.cjs.js:9:34)\n    at /Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/runtime/index.cjs.js:240:55\n    at Array.map (<anonymous>)\n    at Object.getMesh (/Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/runtime/index.cjs.js:239:39)\n    at Object.handler (/Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/cli/bin.js:238:62)"}

@garethhallnz You're right. Could you try with this one?
0.0.20-alpha-18f10ab.20+18f10ab

Yay, a step forward :) That said there is a new failure much later down the stack.
Playground now launches but queries are failing because the uri is not correct.
apiadmin/projects should be api/admin/projects
https://youtrack.example.com/api/openapi.json defines the uri as
"servers": [
    {
      "url": "/api"
    }
  ],
....

Error message
{
  "errors": [
    {
      "message": "Invalid URI \"/apiadmin/projects\"",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "getAdminProjects"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "Error: Invalid URI \"/apiadmin/projects\"",
            "    at Request.init (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:273:31)",
            "    at new Request (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:127:8)",
            "    at request (/Users/garethhall/Sites/communica/taskhub/node_modules/request/index.js:53:10)",
            "    at /Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/resolver_builder.js:238:13",
            "    at new Promise (<anonymous>)",
            "    at /Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/resolver_builder.js:237:16",
            "    at /Users/garethhall/Sites/communica/taskhub/node_modules/@graphql-mesh/runtime/index.cjs.js:215:38",
            "    at field.resolve (/Users/garethhall/Sites/communica/taskhub/node_modules/graphql-extensions/dist/index.js:133:26)",
            "    at resolveFieldValueOrError (/Users/garethhall/Sites/communica/taskhub/node_modules/graphql/execution/execute.js:486:18)",
            "    at resolveField (/Users/garethhall/Sites/communica/taskhub/node_modules/graphql/execution/execute.js:444:16)"
          ]
        }
      }
    }
  ],
  "data": {
    "getAdminProjects": null
  }
}

Are you sure this swagger file is valid because when I paste it into Swagger Editor? I got an error like paths must start with '/'.
https://editor.swagger.io/
You can see the specifications; paths always starts with / character.
https://swagger.io/docs/specification/basic-structure/

@garethhallnz
I added an option to override server config. So you can use it like below;
sources:
  - name: Youtrack
    handler:
      openapi:
        source: https://youtrack.example.com/api/openapi.json
        schemaHeaders:
          Authorization: Bearer perm:******************
        baseUrl: https://youtrack.example.com/api/

npx match-version @graphql-mesh 0.0.20-alpha-067bc75.23+067bc75

@ardatan Your help has been awesome thanks!
Another step forward but still not working :(
The baseUrl does seem to resolve the previous problem. However, PlayGround now reports Unauthorized.
My graphql query
{
  getAdminProjects{
    shortName
  }
}

Response
{
  "errors": [
    {
      "message": "Could not invoke operation GET admin/projects",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "getAdminProjects"
      ],
      "extensions": {
        "method": "get",
        "path": "admin/projects",
        "statusCode": 401,
        "responseHeaders": {
          "server": "nginx/1.14.0 (Ubuntu)",
          "date": "Tue, 07 Apr 2020 00:06:40 GMT",
          "content-type": "application/json;charset=utf-8",
          "content-length": "47",
          "connection": "close",
          "access-control-expose-headers": "Location",
          "x-xss-protection": "1; mode=block",
          "x-frame-options": "SAMEORIGIN",
          "x-content-type-options": "nosniff",
          "referrer-policy": "strict-origin-when-cross-origin",
          "content-encoding": "UTF-8",
          "cache-control": "no-cache, no-store, no-transform, must-revalidate"
        },
        "responseBody": {
          "error": "Unauthorized",
          "error_description": ""
        },
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "message": "Could not invoke operation GET admin/projects",
          "stacktrace": [
            "GraphQLError: Could not invoke operation GET admin/projects",
            "    at graphQLErrorWithExtensions (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/resolver_builder.js:700:12)",
            "    at Request._callback (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/resolver_builder.js:261:32)",
            "    at Request.self.callback (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:185:22)",
            "    at Request.emit (events.js:321:20)",
            "    at Request.<anonymous> (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:1154:10)",
            "    at Request.emit (events.js:321:20)",
            "    at IncomingMessage.<anonymous> (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:1076:12)",
            "    at Object.onceWrapper (events.js:427:28)",
            "    at IncomingMessage.emit (events.js:333:22)",
            "    at endReadableNT (_stream_readable.js:1201:12)"
          ]
        }
      }
    }
  ],
  "data": {
    "getAdminProjects": null
  }
}

I have also tried to pass the Authorization header in PlayGround but to no avail.
Here is the curl request that should match the above and it does work.
curl --location --request GET 'https://youtrack.communica.nz/api/admin/projects?fields=shortName' \
--header 'Authorization: Bearer perm:******************'

For operations, you need to use operationHeaders additionally as in schemaHeaders.

Sorry I am not sure I follow, what does that mean?

schemaHeaders is used only while fetching openapi.json. There is another option called operationHeaders used for operations/queries.
sources:
  - name: Youtrack
    handler:
      openapi:
        source: https://youtrack.example.com/api/openapi.json
        schemaHeaders:
          Authorization: Bearer perm:******************
        operationHeaders:
          Authorization: Bearer perm:******************
        baseUrl: https://youtrack.example.com/api/

That means you need to define your headers under operationHeaders as well.

Thanks that has inched things forward a little more. It's almost working;
My output is now
{
  "data": {
    "getAdminProjects": [
      {
        "shortName": null
      },
      {
        "shortName": null
      },
      {
        "shortName": null
      },
      {
        "shortName": null
      },
      {
        "shortName": null
      }
    ]
  }
}

It looks like an incompability between the schema and the actual result. How does the actual result look like?

Well clearly the Youtrack devs have not implemented the openapi standard correctly.
I too get an error in swagger.
So I downloaded the openapi file and edited it to make it pass. Basically I removed the license section and added "/" to the paths.
I then updated the mesh file to:
sources:
  - name: Youtrack
    handler:
      openapi:
        source: ./openapi.json
        schemaHeaders:
          Authorization: Bearer perm:***********
        operationHeaders:
          Authorization: Bearer perm:***********
        baseUrl: https://youtrack.example.com/api/

I was hoping your new baseUrl option would allow me to bypass prevouse with the url.
But that caused this error in PlayGround
{
  "errors": [
    {
      "message": "Could not invoke operation GET /admin/projects",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "getAdminProjects"
      ],
      "extensions": {
        "method": "get",
        "path": "/admin/projects",
        "statusCode": 404,
        "responseHeaders": {
          "server": "nginx/1.14.0 (Ubuntu)",
          "date": "Tue, 07 Apr 2020 09:19:42 GMT",
          "content-type": "application/json;charset=utf-8",
          "content-length": "62",
          "connection": "close",
          "access-control-expose-headers": "Location",
          "x-xss-protection": "1; mode=block",
          "x-frame-options": "SAMEORIGIN",
          "x-content-type-options": "nosniff",
          "referrer-policy": "strict-origin-when-cross-origin",
          "set-cookie": [
            "YTJSESSIONID=node01sxh5pog88xdy1gt1vt3gmffet1350.node0; Path=/; Secure; HttpOnly"
          ],
          "expires": "Thu, 01 Jan 1970 00:00:00 GMT",
          "content-encoding": "UTF-8",
          "cache-control": "no-cache, no-store, no-transform, must-revalidate"
        },
        "responseBody": {
          "error": "Not Found",
          "error_description": "HTTP 404 Not Found"
        },
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "message": "Could not invoke operation GET /admin/projects",
          "stacktrace": [
            "GraphQLError: Could not invoke operation GET /admin/projects",
            "    at graphQLErrorWithExtensions (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/resolver_builder.js:700:12)",
            "    at Request._callback (/Users/garethhall/Sites/communica/taskhub/node_modules/openapi-to-graphql/lib/resolver_builder.js:261:32)",
            "    at Request.self.callback (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:185:22)",
            "    at Request.emit (events.js:321:20)",
            "    at Request.<anonymous> (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:1154:10)",
            "    at Request.emit (events.js:321:20)",
            "    at IncomingMessage.<anonymous> (/Users/garethhall/Sites/communica/taskhub/node_modules/request/request.js:1076:12)",
            "    at Object.onceWrapper (events.js:427:28)",
            "    at IncomingMessage.emit (events.js:333:22)",
            "    at endReadableNT (_stream_readable.js:1201:12)"
          ]
        }
      }
    }
  ],
  "data": {
    "getAdminProjects": null
  }
}

I think the schema is correct
"Project": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IssueFolder"
          },
          {
            "properties": {
              "startingNumber": {
                "type": "integer",
                "description": "Starting number for issues in project. This property can be set only during creation of the new project.",
                "format": "int64",
                "readOnly": false
              },
              "shortName": {
                "type": "string",
                "description": "The ID of the project. This short name is also a prefix for an issue ID.",
                "readOnly": false
              },
              "description": {
                "type": "string",
                "description": "The description of the project as shown on the project profile page.",
                "readOnly": false
              },
              "leader": {
                "description": "The user who is set as the project lead.",
                "$ref": "#/components/schemas/User"
              },
              "createdBy": {
                "description": "The user who created the project.",
                "$ref": "#/components/schemas/User"
              },
              "issues": {
                "type": "array",
                "description": "A list of all issues that belong to the project.",
                "items": {
                  "$ref": "#/components/schemas/Issue"
                }
              },
              "customFields": {
                "type": "object",
                "description": "The set of custom fields that are available in the project.",
                "readOnly": true
              },
              "archived": {
                "type": "boolean",
                "description": "If the project is currently archived, this property is `true`.",
                "readOnly": false
              },
              "fromEmail": {
                "type": "string",
                "description": "\n                The email address that is used to send notifications for the project. If a 'From' address is not set \n                for the project, the default 'From' address for the YouTrack server is returned.\n                ",
                "readOnly": false
              },
              "replyToEmail": {
                "type": "string",
                "description": "\n                The email address that is used as the reply email to send notifications for the project.\n                If it is not set for the project, the default address for the YouTrack server is returned.                                    \n                ",
                "readOnly": false
              },
              "template": {
                "type": "boolean",
                "description": "If `true`, this project is a template. ",
                "readOnly": false
              },
              "iconUrl": {
                "type": "string",
                "description": "The URL of the icon of the project.",
                "readOnly": true
              }
            },
            "description": "Represents a YouTrack project."
          }
        ]
      },

The equivalent curl request
curl --location --request GET 'https://youtrack.example.com/api/admin/projects?fields=shortName' \
--header 'Authorization: Bearer perm:***********'

Result to
[
    {
        "shortName": "ANZW",
        "$type": "Project"
    },
    {
        "shortName": "APM",
        "$type": "Project"
    },
    {
        "shortName": "ARB",
        "$type": "Project"
    },
    {
        "shortName": "AM",
        "$type": "Project"
    }
]

@garethhallnz we are thinking about having the idea of "Mesh Modules" or something, where you can install ready to use, open source Mesh npm packages for APIs a lot of people need.
Do you think you can share your code on Github somehow and we can help you create something that first will work for you and also others will find useful? (YouTrack GraphQL API)

@Urigo I am happy to push something to Github; The problem is while you could get a free Youtrack account it's not really something a user can just setup to try.
AI user  would have to:

Create a YouTrack account
Load some test data
Go into YouTrack and create an access token

Do you think people will do that?

@garethhallnz maybe who knows?
also after we'll have it maybe we can share it with JetBrains so they could offer their users also a GraphQL API!

@ardatan I think in my use case I can not really predefine operationHeaders, user logs in and acquires token which is then supposed to be used for querying data. Is is possible still to pass operation headers from the client?

@ardatan I think in my use case I can not really predefine operationHeaders, user logs in and acquires token which is then supposed to be used for querying data. Is is possible still to pass operation headers from the client?

Yeah I am going to face that issue too. The quesry header must be injectable.

@garethhallnz maybe who knows?
also after we'll have it maybe we can share it with JetBrains so they could offer their users also a GraphQL API!

Do you want to create a repo so you have ownership of it? Then I'll fork than and do a pull request; otherwise, I'll set it up under my account.

@garethhallnz I realized that you need add the name of field specifically in fields parameter in regular HTTP request. So since Mesh doesn't know this specific thing, you need to do the same thing in GraphQL operations. I am preparing an example for youtrack, you can take a look at.
You can use environmental variables or runtime API to pass those variables. In environmental variables you can usee the ffollowing syntax;
Authorization: Bearer ${YOUTRACK_TOKEN}

I submitted a PR that has some changes on Mesh to make things easier for OpenAPI.
https://github.com/Urigo/graphql-mesh/pull/224

@garethhallnz I also added a working example;
https://codesandbox.io/s/strange-lewin-blnvq?file=/.meshrc.yml

@ardatan Test locally and yes it works Thanks.

@ardatan I spoke a little too soon; I did a bunch of testing and simple queries work but more complex onces fail.
These work
query getProjects{
  getAdminProjects {
     shortName
   }
 }

 query getIssuesByProject{
  getAdminProjectsIdIssues (id: "ANZW") {
     summary
   }
 }

 query getIssues{
   getIssues {
     summary
   }
 }

These fail
query getProjectsWithIssues{
  getAdminProjects {
     shortName
    	issues {
        summary
      }
   }
 }

 query getIssuesWithComments{
  getIssues{
    summary
    created
    reporter {
      email
    }
    comments {
      text
    }
   }
 }

query reallyComplex{
  getAdminProjectsIdIssues (
    id: "FLTI"
  ) {
    numberInProject
    idReadable
    summary
    comments {
      text
      author {
        fullName
      }
    }
    commentsCount
  }
}

Ideally my goal it to reconstruct
axios.get(`/api/admin/projects/${id}/issues?fields=numberInProject,idReadable,summary,comments(text,author(name)),commentsCount,timeTracking(workItems(id,duration(minutes,presentation))),customFields(projectCustomField(field(name)),value(minutes,presentation))&$skip=0&$top=10000`)```

In codesandbox I sent to you, all of them are working. I didn't get null with any of them. Could you confirm? If yes, could you follow the same setup?
https://codesandbox.io/s/strange-lewin-blnvq?file=/.meshrc.yml

@ardatan My setup is the same other than hardcoded tokens. I think the problem is content in your example. You only have one project called "Kanban Test (KT)" but it has no issues or comments against said issues.
So in your example
 query getIssuesByProject{
  getAdminProjectsIdIssues (id: "KT") {
     summary
   }
 }

returns [] so there are no issues in KT
So to replicate the problem create an issue againt the KT project

Also, my linter was not too happy with the add-fields.js file
Erroring with
  7:3  error  Assignment to property of function parameter 'args'  no-param-reassign

Here the updated file
const graphqlFields = require('graphql-fields');

// This function gets requested fields from GraphQLResolveInfo
// And passes them through `fields` parameter
module.exports = (next) => (root, args, context, info) => {
  const fields = Object.keys(graphqlFields(info));
  const updatedArgs = { ...args, fields: fields.join(',') };
  return next(root, updatedArgs, context, info);
};

``

I'll update it then. Thanks!

@garethhallnz As you can test in my codesandbox the following query gives the correct result;
 query getIssuesByProject{
  getAdminProjectsIdIssues (id: "KT") {
     summary
     description
   }
 }

Result:
{
  "data": {
    "getAdminProjectsIdIssues": [
      {
        "summary": "Issue Test",
        "description": "Issue Test Description"
      }
    ]
  }
}

Yes, that works (as do my copy) but as we all know the value of Grapdql is the ability the pull data with depth.
So try
query getProjectsWithIssues{
  getAdminProjects {
     shortName
    	issues {
        summary
      }
   }
 }

You notice issues[0].summary us null

Ok so this is a different problem. We solved the previous ones as I understand :) This is good.
Again this is not related to GraphQL Mesh, we need update our composer function to resolve the fields of YouTrack as I see in their documentation. So I updated the composer function to resolve subfields as well. You can do console.log(args) to see how we build our fields parameter.
https://codesandbox.io/s/strange-lewin-blnvq?file=/src/add-fields.js

@petrovalex We use openapi-to-graphql under the hood for Swagger/OpenAPI specifications, so they don't support additional headers that can be passed from GraphQL Args etc. But we're working on it. For now you can use environmental variables or runtime API to pass those variables. In environmental variables you can use the following syntax;
Authorization: Bearer ${YOUTRACK_TOKEN}

@ardatan Now that I am thinking about it the above is a massive problem. The Youtrack token is directly related to the user and their permissions. Therefore some users might have access to operations they should not have; like deleting something. So in a sense, we can only use mesh like an administration connection. This severely limits it's use-case ..... for now at least.

@garethhallnz In that PR, now we are able to pass custom headers using args and context. So using the following configuration, you can pass different API Keys using apiKey argument on your root operations.
sources:
  - name: YouTrack
    handler:
      openapi:
        source: ${YOUTRACK_SERVICE_URL}/api/openapi.json
        baseUrl: ${YOUTRACK_SERVICE_URL}/api/
        schemaHeaders:
          Authorization: Bearer ${YOUTRACK_TOKEN}
        operationHeaders:
          Authorization: Bearer {args.apiToken}
        # `license` field is not valid
        # But it's ok because all YouTrack schemas are in the same structure
        # So using this option is safe.
        skipSchemaValidation: true
    transforms:
      # Each YouTrack needs `fields` query parameter
      # So thanks to GraphQL, we know which fields client needs
      # And we can prevent overfetching in this way
      - resolversComposition:
          - resolver: Query.*
            composer: ./src/add-fields

Or you can pass it using context,
sources:
  - name: YouTrack
    handler:
      openapi:
        source: ${YOUTRACK_SERVICE_URL}/api/openapi.json
        baseUrl: ${YOUTRACK_SERVICE_URL}/api/
        schemaHeaders:
          Authorization: Bearer ${YOUTRACK_TOKEN}
        operationHeaders:
          Authorization: Bearer {context.apiToken}
        # `license` field is not valid
        # But it's ok because all YouTrack schemas are in the same structure
        # So using this option is safe.
        skipSchemaValidation: true
    transforms:
      # Each YouTrack needs `fields` query parameter
      # So thanks to GraphQL, we know which fields client needs
      # And we can prevent overfetching in this way
      - resolversComposition:
          - resolver: Query.*
            composer: ./src/add-fields

Available in 0.1.0!


URL in description and README broken

The URL in the repository description and the one in the README are pointing to githubschool's copy of the game instead of yours.
Please fix both so they point to your copy of the game at https://githubschool.github.io/github-games-josepher79

this is fixed


Central image button don't disappear when Shell.TabBarIsVisible="false"

I saw and tried your code. The problem is when you need to navigate to a ContentPage that doesn't need to show the Shell TabBar. The customTabBar hides it self but the central button remains there.

Will this get resolved anytime soon? I would love to use your code, but I can't if I the button stays visible all the time.

Same issue here, can't find a way to hide middle button when tabbar itself is not visible.

If you could guide as to how to understand in renderer, weather the current view has navbar turned on or no, that would be helpful


Choose which Collection-link field to show instead of collection Id

When using Linked-collection, this allows to choose which field should be shown in entries page instead of an Id.
You may choose any required field which is able to have string representation (is not type of location, gallery, multifield, link-collection, media or region).
Multiple collections are supported.
Example
Let's say we have two collections: Countries and Nodes with relationship 1:n
When configuring Nodes collection we create an Instance field, set type to Collection link and set new option Field on entries list page: Name
Before:

After:

Thanks!

When thinking about the implementation, there will be a problem when one collection has two fields of type Collection-link which are linking into the same target collection.
The later one will overwrite data of the first one.
Linked collections data are cached in a double-nested hashmap (see schema below) and when main collection entries are loaded, these data are populated.
{
    "[target-collection-id]": {
        "[target-entry-id]": "[target-entry-selected-field-value]"
    }
}

I think it's safe to consider it an edge case for the moment.
One solution is to to change format of retrieved data, other is to populate data already at the API level similarly to how it's done in the module API
I'm attaching a screenshot of extended Collection-Link field used in description example


generated nix docker image is MASSIVE

Can we get a sub 100MB image? Or similar?


Question: waterfall

@jgaeddert How did you generate the figure [fig-asgram-example-waterfall] in https://liquidsdr.org/doc/asgram? Does liquid provide functionality for writing a high resolution waterfall plot?

Yes! There is an spwaterfallcf object that computes the spectrum plot; however I don't seem to have documentation on it at the moment.


Operator stable_manifest test is not stable

Bug description
The operator stable_manifest test is not stable, if you check the latest test jobs fro prow dashboard, many of them failed because of stable_manifest test.

[ ] Configuration Infrastructure
[ ] Docs
[ X ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
Steps to reproduce the bug
Version (include the output of istioctl version --remote and kubectl version and helm version if you used Helm)
How was Istio installed?
Environment where bug was observed (cloud vendor, OS, etc)

I am skipping the test as part of https://github.com/istio/istio/issues/20112. istio/istio has a much higher bar of test stability than istio/operator

Fixed in https://github.com/istio/istio/pull/20145.


Fix case mismatch in test error message expectation

test/Distributed/distributed_actor_ban_owned_shared.swift expects a test error message with a casing mismatch, so the test fails. This fixes it.
See other test expecting the same message:
https://github.com/apple/swift/blob/56fca834b2e3b2fe34b97a3998bb7d159edb7775/test/Parse/ownership_modifiers.swift#L21
See error message definition:
https://github.com/apple/swift/blob/56fca834b2e3b2fe34b97a3998bb7d159edb7775/include/swift/AST/DiagnosticsSema.def#L7158

@swift-ci please smoke test

@swift-ci smoke test macos

The same race happened on release/5.9, I picked the fix over: https://github.com/apple/swift/pull/66154

I forgot to explicitly thank for the fix -- thank you @tristanlabelle !


foo::<T> -> foo@<T>

Click

I've heard that we can't just have foo<T> because of a parsing ambiguity. However, other languages do it fine. The use of a symbol (regardless of which symbol, @ or ::) between a method name and the template type is one thing I really dislike in Rust.

Not quite sure what I think of the @ syntax (I don't dislike it) but +1 for the sentiment. I think something other than :: would be nice.

Is it not simply too late to make this change? (I'm happy with ::, though would be happier with not needing anything)

-1, too late and inconsistent - as much as I dislike :: in paths like this, it is at least something that is there already, @ is just randomness.

Too late, yes, but I don't think the second half makes sense - it's not a path, and so shouldn't use path syntax. That's the entire point.

Another drawback: this would probably prevent the addition of a @ operator, as foo@<T>::bar could be parsed as either (foo) @ (<T>::bar) (using UFCS syntax) or as the equivalent of today’s foo::<T>::bar.
FWIW, I prefer the current syntax anyway—I heavily dislike the @ character because of its noisiness. I’ve considered the idea of using for<> everywhere for generics, so generic functions would be declared as for<'a> fn foo(), have type for<'a> fn(), and be valled as for<'static> foo(). The main problem with this approach (apart from verbosity) is what to do with methods: iter.for<Vec<int>> collect() looks a little strange. Also, it might conflict with UFCS if we support it in patterns—deciding whether to parse for <T> as a for loop or a generic function would (I think) require infinite lookahead.

Oh, there's that dreadful UFCS syntax. I forgot about that. Reflecting the type-level for syntax down is a cute idea. (You could just require methods be called with UFCS syntax to allow specifying types for them?)

What nrc said, I think. I'd be happy if we could have removed the :: altogether, but it didn't happen, and I think it's ok. (At least, all the proposals for removing it that I saw involved potentially quite far-reaching changes, such as adjusting the tokenizer, and I think that those are out of scope now.) Anyway, what I really dislike about the current situation is that (a) editors/macros can't trivially tell whether < is a grouping character and (b) paths in types and paths in expressions have different syntax. Neither shortcoming seems to be addressed by this proposal.

Strong +1. The :: syntax is easily the worst syntax in Rust right now, and it really confused me when I had to use it for the first time. The @ syntax may not be perfect, but I'd vastly prefer it over ::.
As far as breaking changes go, this one doesn't look like it should be much of a problem. It only requires an easy find+replace. Rust is still in alpha anyway so people are expecting the occasional breaking change.

In this reddit thread I thought of, foo!<T> and foo.<T>, but @bstrie later told me that the latter used to be the syntax before foo::<T> came along.
Today I came up with another version of this proposal, foo-<T>.
I prefer it because of the "connection" between the two tokens, which is not really the case for any other proposal I've seen.
// for comparison - past, current, and 3 proposals:
"42".parse.<int>()
"42".parse::<int>()
"42".parse@<int>()
"42".parse!<int>()
"42".parse-<int>()

While the lines aren't actually touching, Hasklig can make it so, which I expect to be quite pleasing to the eye, in the end (we should fork it to remove the  <<, >>, <<< and >>>, everything else works nicely for Rust).
On the other hand: @nikomatsakis has been mentioning type ascription syntax quite a lot lately, and I do like that prospect. Everyone I've seen using such syntax (in a hypothetical/pseudocode context) goes for x: T and I agree that fits in very nicely with the rest of the language. But given UFCS, this can lead to some confusing situations:
// The contrived setup:
struct Foo<T>;
impl<T> Foo<T> {
    fn Baz() -> Foo<T> {Foo} // could also be an associated constant
}
struct Bar;
impl Bar {
    type Baz = Foo<Bar>;
}
// The following two expressions are both valid but different:
Foo::<Bar>::Baz // type fn() -> Foo<Bar>
Foo:<Bar>::Baz // type Foo<Bar>

Whether or not this will be an actual issue, I can't tell, but it seems like a good argument in favor of changing :: in ::<T>.

If people really want to change it, I can see that and if we find something nice looking, I could be for it.
Here is a few random thoughts about other ways this could potentially be written:

foo@<T>()
foo-<T>()
foo^<T>()
foo#<T>()
foo$<T>()
foo%<T>()

Strong +1. The :: syntax is easily the worst syntax in Rust right now, and it really confused me when I had to use it for the first time.

It's confusing even after using it for some time. I'd say a good percentage of the compile errors I get are because I messed this up and they sometimes take awhile to figure out too…

-1. There's nothing wrong with ::<T>. @ is much more heavy and just hurts readability for no gain.

@nervl see my description above of an UFCS/TA complication. But I do agree @ could be considered worse (and that's ignoring its unfortunate past usage or the attr/macro proposal).

I think foo^<T>() is actually nice. Clojure uses it as its type hint syntax (the ^, not the whole expression), and I think it is ok.

foo^<T>(), foo%<T>(), and foo-<T>() are ambiguous due to UFCS, as I remarked about @ above.
A note about the RFC: I believe the syntax as the RFC currently proposes it is ambiguous with UFCS in contrived cases. This is because @ is a binary operator in patterns, and all paths are valid patterns. <Foo>::Bar is a valid path (and thus pattern) with UFCS. Therefore, foo@<Bar>::baz is a valid pattern today (or would be if we had UFCS), equivalent to foo@(<Bar>::baz). However, this RFC proposes changing foo::<T> to foo@<T>. foo::<Bar>::baz is a valid pattern today; under this RFC, that would be foo@<Bar>::baz. But this conflicts with the earlier interpretation of foo@<Bar>::baz as foo@(<Bar>::baz)! The fix is trivial: either don’t require @-disambiguation in patterns (this is unambiguous because < is not an operator in patterns), or don’t accept the full UFCS syntax in patterns, as I think it’s useless there anyway. (The latter approach is taken by @eddyb’s UFCS-in-expressions patch anyway, AIUI.)
One case where UFCS in patterns might be usable (but not necessarily useful), although it’s probably not worth supporting:
trait Foo {
    type T;
}

enum Bar { Baz, Qux }
impl Foo for () {
    type T = Bar;
}

fn main() {
    match get_a_bar() {
        // Because `<() as Foo>` is a definite, non-generic type, it might be
        // usable as an alias for `Bar`
        <() as Foo>::Baz => ...,
        <() as Foo>::Qux => ...,
    }
}

@P1start I did have a nagging feeling about it but it took me too long to notice. Not even my (somewhat beautiful) foo-<T> escapes the UFCS ambiguity.
Unless we make -< a token, but that's a bit too much to ask.

What about using ::<T> for all declarations and usages?
fn foo::<T: Trait>(x: T) {...}
impl::<T> Trait for Foo::<T> {...}

It looks a bit weird but it's much more consistent.

foo^(), foo%(), and foo-() are ambiguous due to UFCS

@P1start dang, I kind of liked ^, it does work well for hints in Clojure like @sinistersnare states (I thought I remembered you from #clojure)
I do not like the @ so much, if it does get changed it should be something terrific to warrant it.
I suppose foo~T is out..?

At this point, I would get rid of / change the comparison operators to free up < and >. Generics are far more common than comparisons in my experience. C programmers be damned.
Also, regarding UCFS, I know we have magic self and not doing things the haskell way, but even so I still think path::Trait<T>::item looks better than path::<T as Trait>::item and removes the need for special syntax.
In sum:

shifts: <<<, >>>
comps: <<, >>, <=, >=
path::Trait<T /* Self */, t-args>::poly_item<t-args>(args)

Thank you very much for the work you put into this RFC. However, at the triage meeting today we decided to close this issue. While the ::<T> syntax has few fans, this new proposal doesn't seem to be a big improvement -- or, at least, not a big enough improvement to warrant breaking backwards compatibility.


Make sure new relations for Rhea alignment are documented and solidified

As part of the Rhea alignment project, we have created new relations to group reactants on either side of the reaction equation. We need to be sure that those relations are well-defined and documented so that ontology editors can refer to the documentation if questions arise. We should also look to see how they fit into RO and how they would chain with other valid relations.

This issue is tied directly to the decision about the pattern for axiomitizing the MF terms based on the rhea reactions.  As things stand today, my understanding is that the preferred pattern is the one known as 'ultra intersection' with a version and its consequences (circa June 2018) listed on the other issue.  Below is an example of the OWL definition for GO: 'dimethylallylcistransferase activity' from RHEA:11331 reaction -
dimethylallyl diphosphate + isopentenyl diphosphate = diphosphate + neryl diphosphate
This pattern requires the new Object Property 'has_directed_reaction' and the new Data Property 'has_stoichiometry'.  It re-uses existing RO Object Properties: has_input, has_output, has_member.  And it adds one new class called 'SubstanceSet'.  (For more information about how we arrived at this structure, see this thread.  The challenge is to represent the reactions as being bi-directional while keeping the groups of reactants on either side intact without using the UnionOf construct).
'catalytic activity'
 and (has_directed_reaction some
    ((('has input' some
        (SubstanceSet
         and (('has member' some
            ('isopentenyl diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))
         and ('has member' some
            ('prenyl diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))))))
     and (('has output' some
        (SubstanceSet
         and (('has member' some
            ('diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))
         and ('has member' some
            ('neryl diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))))))))
 and (has_directed_reaction some
    ((('has input' some
        (SubstanceSet
         and (('has member' some
            ('diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))
         and ('has member' some
            ('neryl diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))))))
     and (('has output' some
        (SubstanceSet
         and (('has member' some
            ('isopentenyl diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))
         and ('has member' some
            ('prenyl diphosphate(3-)'
             and (has_stoichiometry value "1"^^xsd:string)))))))))

Note that the other pattern that is still on the table (the use of [General Class Inclusion axioms](url
https://github.com/geneontology/go-ontology/issues/14984#issuecomment-403959765) for instance classification) only re-uses has_input and has_output and does not require any new relations.

At this point I think the only new term we will need is a data property for has_stoichiometry. Should we just give this a GO id?

@pgaudet  is this one still in date?

We have not implemented this.


[WFCORE-5973] Update BufferPool to use Undertow's

https://issues.redhat.com/browse/WFCORE-5973
Remove declaration of buffer-pool

Core -> Full Integration Build 11578 outcome was FAILURE using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Exit code 1 (Step: Build & test full (Maven)) (new) Build time: 00:06:06

Core -> WildFly Preview Integration Build 11746 outcome was FAILURE using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Exit code 1 (Step: Build & test full (Maven)) (new) Build time: 00:06:39

Core -> Full Integration Build 11746 outcome was FAILURE using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Tests passed: 1552, ignored: 53; exit code 1 (Step: Build & test full (Maven)) (new) Build time: 00:15:17

Relates to https://github.com/wildfly/wildfly/pull/15855

Integration Jobs:
https://ci.wildfly.org/viewLog.html?buildId=317420 (Linux integration)
https://ci.wildfly.org/viewLog.html?buildId=317422 (Bootable JAR)
https://ci.wildfly.org/viewLog.html?buildId=317424 (Galleon)
https://ci.wildfly.org/viewLog.html?buildId=317426 (Microprofile)
https://ci.wildfly.org/viewLog.html?buildId=317428 (WildFly Preview)
https://ci.wildfly.org/viewLog.html?buildId=317430 (Windows)

Core -> Full Integration Build 11589 outcome was UNKNOWN using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Canceled Build time: 00:01:01

Core -> Full Integration Build 11590 outcome was FAILURE using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Exit code 1 (Step: Build & test full (Maven)) Build time: 00:07:40

Core -> WildFly Preview Integration Build 11757 outcome was FAILURE using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Exit code 1 (Step: Build & test full (Maven)) Build time: 00:08:57

Core -> Full Integration Build 11757 outcome was FAILURE using a merge of 9886e6e68b1f5e33224294ef0c2da75c8f445528
Summary: Tests passed: 1552, ignored: 53; exit code 1 (Step: Build & test full (Maven)) Build time: 00:17:50


Add --workspace to CI command running tests

The reorg of the code layout makes this necessary

An alternative is to test with respect to specific manifest file paths.
This method may be preferable for repo layout, but it makes maintaining
the github actions a bit more tedious.

Closed via #216


HedgeLib++ - Support same Hedgehog Engine formats as C# HedgeLib

Specifically, this means HedgeLib++ should be able to do all of the following:

[ ] Read Lights (.light)
[ ] Read Models (.model, .terrain-model)
[ ] Read Materials (.material)
[ ] Read Texture Information (.texture)
[ ] Read Texture sets (.texset)
[ ] Write Lights (.light)
[ ] Write Models (.model, .terrain-model)
[ ] Write Materials (.material)
[ ] Write Texture Information (.texture)
[ ] Write Texture sets (.texset)

8abad5d0769d6543b0b246fd8baec3b22272ab69 Added support for reading Hedgehog Engine models


certficate id not available in GKE

I have tried to setup this installation on Google cloud and wondering about the certificate id under base/web-base/service.yaml.
i haven't given any certificate here and the video is getting disconnected as soon as it starts. is this doc is compatible with GKE ?

Never tried on GKE, but you should manual add certificate to the load balancer. There is no automatic ssl on this script

I have remodified the script from the webconfig
  name: web-base
data:
    10-config: |
        #!/usr/bin/with-contenv bash
        # make our folders
        mkdir -p \
            /config/{nginx/site-confs,keys} \
            /run \
            /var/lib/nginx/tmp/client_body \
            /var/tmp/nginx
        # generate keys (maybe)
        apt-get update -y
        apt-get install -y certbot python3-certbot-nginx

        echo "generate keys"
        DISABLE_HTTPS=0
        LETSENCRYPT_DOMAIN="sametime.jitsi.com"
<EMAIL_ADDRESS>        ENABLE_LETSENCRYPT=1

        if [[ $DISABLE_HTTPS -ne 1 ]]; then
            if [[ $ENABLE_LETSENCRYPT -eq 1 ]]; then
                if [[ ! -f /etc/letsencrypt/live/$LETSENCRYPT_DOMAIN/fullchain.pem ]]; then
                    echo "inside the letsencrypt folder"
                    if ! certbot \
                          certonly \
                        --nginx \
                        --no-self-upgrade \
                        --noninteractive \
                        --preferred-challenges http \
                        -d $LETSENCRYPT_DOMAIN \
                        --agree-tos \
                        --dry-run \
                        -m $LETSENCRYPT_EMAIL ; then
                        echo "Failed to obtain a certificate from the Let's Encrypt CA."
                        # this tries to get the user's attention and to spare the
                        #authority's rate limit:
                        sleep 15
                        echo "Exiting"
                        exit 1
                    fi
                fi
                # remove default certbot renewal
                if ! crontab -l | grep certbot; then
                crontab -l |
                { cat
                echo
                 echo "15 3 * * * /usr/bin/certbot renew --quiet"
                 echo
                  } | crontab -
                fi
            else

                # use self-signed certs
                #if [[ -f /config/keys/cert.key && -f /config/keys/cert.crt ]]; then
                 #   echo "using keys found in /config/keys"
                #else
                    #echo "generating self-signed keys in /config/keys, you can replace these if required"
                    #SUBJECT="/C=US/ST=TX/L=Austin/O=sametime.vewmet.com/OU=VewMet/CN=*"
                    #openssl req -new -x509 -days 3650 -nodes -out /config/keys/cert.crt -keyout /config/keys/cert.key -subj "$SUBJECT"
                #fi
            fi
        fi
----

error :  nginx: [error] invalid PID number "" in "/run/nginx.pid"


dendrite: 0.9.4 -> 0.9.5

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/matrix-dendrite/versions.
meta.description for dendrite is: "A second-generation Matrix homeserver written in Go"
meta.homepage for dendrite is: "https://matrix-org.github.io/dendrite"
meta.changelog for dendrite is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.9.5 with grep in /nix/store/y2j1n6w4wcz79l185qdvfsfqgla81cym-matrix-dendrite-0.9.5
found 0.9.5 in filename of file in /nix/store/y2j1n6w4wcz79l185qdvfsfqgla81cym-matrix-dendrite-0.9.5

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
dendrite

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/y2j1n6w4wcz79l185qdvfsfqgla81cym-matrix-dendrite-0.9.5 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A dendrite https://github.com/r-ryantm/nixpkgs/archive/fcdef222c2bb4db35046f9ef8c15330a071bea35.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/y2j1n6w4wcz79l185qdvfsfqgla81cym-matrix-dendrite-0.9.5
ls -la /nix/store/y2j1n6w4wcz79l185qdvfsfqgla81cym-matrix-dendrite-0.9.5/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

dendrite

Maintainer pings
cc @Ma27 @fadenb @mguentner @Ekleog @Ralith @dali99 @sumnerevans for testing.

Result of nixpkgs-review pr 188589 run on x86_64-linux 1

1 package built:

dendrite


Add 'VoluntaryHouseholdQuarantineControlMeasure' to its coinciding class as UAL.

Class is 'voluntary household quarantine control strategy'.

Additionally, added definition to the class.


How to see the fastboot screen if I don't have a screen?

Hello, my device (Alpha Mini Robot by UBTECH brand) has Android 7, it does not have a screen like a mobile phone, Its screen is your eyes, but when I start the device in fastboot mode, I can't see the menu or the boot screen as I would on a mobile phone or TV or tablet, How to see the fastboot screen if I don't have a screen? Is there a way to cast the bootscreen? scrcpy only show the screen after the boot process.

from what i know, it's not possible for anything to show the fastboot screen, so you're out of luck if you're looking for software solutions


Newsboat shows only the first 50 items/articles of feed

Newsboat version (copy the output of newsboat -v or the first line of git show): 2.21.0
Steps to reproduce the issue:

Add url to ~/.newsboat/urls: https://feeds.br.de/eins-zu-eins-der-talk/feed.xml
Open newsboat
Select new feed
Reload
50 Items are shown (but feed contains more then 280 items)

Hi! I can't reproduce.
Also, if you've been subscribed to this feed before and deleted some items, it's possible that Newsboat "remembers" that and don't show the deleted items.

Sorry, it was my fault. I actually had an entry for max-items. I copied the config file from someone else and did not check it.


Update node-sass to 3.0

node-sass removed success/error callback
https://github.com/sass/node-sass/pull/726
Switched them to a single callback function
It also now returns buffer instead of string.
See https://github.com/sass/node-sass/releases for list of changes
Note: there is a hack for the obj.css with sourcemap, not
sure what to do there

Thanks ;)

I haven't reviewed the changes and node-sass change log either, but I've tested the plugin with some sass files and iojs 1.5.1 and works as a charm

Resolves #210


Telegram

Hi! Could you provide an example for telegram messenger?

@reinethernal If i understanding correctly, you are looking for a telegram messenger implementation for connecting to listmonk?

Yes, that's right

@joeirimpan yes, you're right!

So i have to build it from source using your commecnt? Or i can use prebuilt binary?

I haven't added Telegram provider to this project yet. @reinethernal Are you interested in building this out?

Sure, and not only telegram

There is also apprise which can be used to integrate almost everything without much effort.


.Net: process framework - Simplest step implementation and simplification of Function event resolution for steps with 1 function.

…
Motivation and Context
Required:
I would like to have a process framework with a simplified process and steps, showing how simple, easy and straightforward it can be. I want this example to take away the fear and reduce the cognitive load as a "first super-easy step".
Problem solved:
Excessive cognitive load on the first example. There Should be a super-easy step that is and feels easy. I believe this gets close to it :)
Scenario:
Learning, taking the fear out. Helping in making it easier.
Simplification added:
Also to simplify it even further i added the feature that the Function event name gets resolved when there is a single function
When declaring the process, instead of:
        startStep
            .OnEvent(StartStep.OutputEvents.Executed)
            .SendEventTo(new ProcessFunctionTargetBuilder(doSomeWorkStep));

        doSomeWorkStep
            .OnEvent(DoSomeWorkStep.OutputEvents.Executed)
            .SendEventTo(new ProcessFunctionTargetBuilder(doMoreWorkStep));

        doMoreWorkStep
            .OnEvent(DoMoreWorkStep.OutputEvents.Executed)
            .SendEventTo(new ProcessFunctionTargetBuilder(endStep));

        endStep
            .OnEvent(EndStep.OutputEvents.Executed)
            .StopProcess();

I would like to do the following:
      startStep
           .OnFunctionResult()
           .SendEventTo(new ProcessFunctionTargetBuilder(doSomeWorkStep));

       doSomeWorkStep
           .OnFunctionResult()
           .SendEventTo(new ProcessFunctionTargetBuilder(doMoreWorkStep));

       doMoreWorkStep
           .OnFunctionResult()
           .SendEventTo(new ProcessFunctionTargetBuilder(endStep));

       endStep
           .OnFunctionResult()
           .StopProcess();

So that the Function is inferred by the framework, reducing verbosity and cognitive load.
Fixes: https://github.com/microsoft/semantic-kernel/issues/9647
Fixes: https://github.com/microsoft/semantic-kernel/issues/9648
Description

Added example Step00 (process, steps )
Added documentation
Added the small refactoring on the StepProcessBuilder to support Function resolution when "there is only one"

Contribution Checklist

[ ] The code builds clean without any errors or warnings
[ ] The PR follows the SK Contribution Guidelines and the pre-submission formatting script raises no violations
[ ] All unit tests pass, and I have added new tests where possible
[ ] I didn't break anyone :smile:

@alliscode, @esttenorio this PR needs one more "green check" - would you do the honors? :)

Anybody can approve? :)


Api default version

Api default version

Codecov Report
Patch coverage has no change and project coverage change: +49.59 :tada:

Comparison is base (ca7e452) 30.51% compared to head (fb8c14c) 80.10%.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1323       +/-   ##
===========================================
+ Coverage   30.51%   80.10%   +49.59%
===========================================
  Files         338        9      -329
  Lines       39196      548    -38648
  Branches    11620      246    -11374
===========================================
- Hits        11962      439    -11523
+ Misses      26976      109    -26867
+ Partials      258        0      -258

Flag
Coverage Δ

adapter
?

admin-domain-service
?

backoffice-domain-service
?

config-deployer-service
?

devportal-domain-service
?

idp-domain-service
80.10% <ø> (ø)

runtime-domain-service
?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 303 files with indirect coverage changes

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


Add eslint and prettier

Added eslint and prettier to the project. Also went through and saved the files so VSCode could update the formatting to match what eslint/prettier wants.
I disabled a few lines, feel free to remove those and fix them according to what you need.

Thanks a million for the PR. I had no idea how to add eslint to the react project before.


improve Limit the output size of show backup/restore job progress

What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
A backup/restore job might involve millions of tablets, and the output of the show backup/restore command might be huge without limitation.
Release note
None
Check List (For Author)

Test

[ ] Regression test
[ ] Unit Test
[ ] Manual test (add detailed scripts or steps below)
[ ] No need to test or manual test. Explain why:

[x] This is a refactor/code format and no logic has been changed.
[ ] Previous test can cover this change.
[ ] No code files have been changed.
[ ] Other reason

Behavior changed:

[ ] No.
[x] Yes.

The output job progress of the show backup/restore command is not the full list.

Does this need documentation?

[x] No.
[ ] Yes.

Check List (For Reviewer who merge this PR)

[ ] Confirm the release note
[ ] Confirm test cases
[ ] Confirm document
[ ] Add branch pick label

run buildall

run buildall


update Production Checklist numbers

Updates numbers first added in #7739.
Thread: https://cockroachlabs.slack.com/archives/C013VDTRA30/p1600109555012800
@a-entin You mentioned that versions prior to 20.1 have a 1 TB/node storage capacity limit, per conversations with Raphael. We previously had 2 TB documented. Just wanted to note that I've adjusted that number down for 19.2.

This change is

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/af33f67219fc8f4c9484342e2261235e35c4e4e0/
Edited pages:

v19.2/recommended-production-settings.md
v20.1/recommended-production-settings.md
v20.2/recommended-production-settings.md

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/2dc33c36049db00d4706ebe61377fa548144e541/
Edited pages:

v19.2/recommended-production-settings.md
v20.1/recommended-production-settings.md
v20.2/recommended-production-settings.md


Ray casting

You are going to finish the function surfacePrediction in RayCaster.cpp.
if you have any question please check the following code.
https://github.com/ParikaGoel/KinectFusion/blob/master/FusionLib/src/Raycast.cpp
please try to understand each part of the code, because we are going to change it to cuda later.

vertex_prediction

vertex_current

after raycasting vertex_prediction and vertex_current are not similar. Something not works well in raycasting.

These are normals of prediction and current.

Normals seem to be fine


Add new onmessage pattern to documentation

We will need to document the new onmessage pattern:
onmessage: {
  somemessagename: this.handleSomeMessage
}

I would also verify/document that "this" for handleSomeMessage is the module/behavior instance.

We probably should've done that before merging. Would you like me to add a new unit test to verify that?

@j3tan you might want to take a look at #161 as soon as possible. I think we might've broken things for people with 2.2.0. You were right, the message context wasn't the module/behavior instance and we missed that.

Yeah, @nzakas's original comment on the bind() was to use call(this,...)
I briefly thought that instance.onmessage[name](name, data); would cover it, but since we're indexing into the object key, we lose that context.

Well, it's fixed now. Thanks for the quick response! I'll try to tackle the documentation portion of it tonight.

I've added basic documentation for this to the T3 docs


Best way to integrate an API?

I'm starting a project that requires an API and have been doing lots of reading for common practices, and your feedback would be valuable too. Please feel free to close if this is off-topic.

I'd like to bundle the API within the app and have them start at the same time. Files can be kept in a directory other than /client/, sort of like this. Is this a bad idea?
Currently aiming to use Express for routing calls down to /routes/ - is there an easier way?
Where is the best entry point for adding an API - Gulpfile, Webpack, app.js, or a new server.js file that spools Gulp?

Thanks for your thoughts!

iles can be kept in a directory other than /client/

/client directory contains client-side scripts. express-stuff should not be considered as "client-side". So /server is more appropriate directory name :)

sort of like this. Is this a bad idea?

You can use whatever structure that fits for you and your team. Remember about LIFT.

Currently aiming to use Express for routing calls down to /routes/ - is there an easier way?

Not sure if I understand you correctly... are you talking about server-side routing? What are your concerns about express?

Where is the best entry point for adding an API

this should definitely not gulpfile or webpack. server/app.js or server/index.js is pretty much explicit.

Thank you so much for your input! I did a lot more reading and testing today. I'm pretty close to getting this up - just stuck on serving the API through BrowserSync (which may not be a good idea).
I have created a new /server/ directory to house the API's app.js. I'd like to build the API with ES6/Webpack as well, so it would be nice to spool the API at the same time as the frontend. Express will be fine for the API.
Here's my current gulpfile. I am now trying to figure out how to serve a Node/Express app from /server/app.js/. Here's webpack.backend.config.js just in case.
File structure:
client
 - app
 -- app.js
 -- ...
 - index.html
generator
node_modules
server
 - app.js
gulpfile.babel.js
webpack.backend.config.js
webpack.config.js
webpack.dev.config.js
webpack.dist.config.js

The next step is trying to get /server/app.js to run in the browser without being interpreted as file request. Currently when I run gulp backend-build it compiles properly, but http://localhost:4000 returns Cannot GET /api and http://localhost:4000/app.js returns the expected /server/app.js file as text.
As it stands, BrowserSync is being used to serve this new /server/app.js file. Is this the best idea, or is there an easier way to provide this API while still using Webpack?

just stuck on serving the API through BrowserSync (which may not be a good idea).

if production - it is really a bad idea ;) But if you don't want to handle CORS for some reason - you can just use proxy middleware.
but please remember that your API is separate application, you don't even need gulp for this.

@fesor I have the same problem trying to run my server side node.js app alongside browsersync and webpack as described here.
The problem is that when I go to the root path '/' I get the index.html generated by webpack but when I go to any other path '/login' I get an index.html from my server side app (which for some reason doesn't have my client side app.js included).
Any idea how it should be done?

I ended up using https://webpack.github.io/docs/webpack-dev-server.html#proxy.


How to calibrate a w8a8 quantized model？

I used the following code to quantize an LLM, employing an w8a8 quantization setting:
model = AutoModelForCausalLM.from_pretrained("./Qwen1.5-0.5B-Chat").to(dtype=torch.bfloat16, device='cpu')
quantize_(model, int8_dynamic_activation_int8_weight())

Everything is running smoothly, but the model's accuracy has decreased significantly. How can I calibrate a quantized model to enhance its accuracy?

I have another question:
I printed out a parameter and noticed that the weights were quantized using per-channel quantization. What is the purpose of the fp16 AffineQuantizedTensor? Shouldn't the activation only require one scale parameter when using per-tensor quantization?
I'm not very familiar with the quantization mechanism in PyTorch, and I hope you can give me some tips.
Parameter Name: model.layers.0.self_attn.q_proj.weight
Parameter Shape: torch.Size([1024, 1024])
Parameter Values: LinearActivationQuantizedTensor(AffineQuantizedTensor(data=tensor([[ 0.2148, -0.1196, -0.0898,  ..., -0.0388,  0.0869,  0.0898],
        [ 0.0830, -0.2188, -0.1436,  ...,  0.0566,  0.0679,  0.0830],
        [ 0.0552, -0.2480, -0.1621,  ...,  0.0242,  0.0688,  0.0830],
        ...,
        [ 0.0742, -0.0417, -0.1641,  ..., -0.0356,  0.1543, -0.0566],
        [-0.0640,  0.0771,  0.2695,  ...,  0.0537, -0.1982,  0.0938],
        [-0.1216,  0.1025, -0.1074,  ..., -0.0327,  0.1592, -0.1123]],
       dtype=torch.bfloat16)..., shape=torch.Size([1024, 1024]), block_size=(1, 1024), device=cpu, dtype=torch.bfloat16, requires_grad=False, layout_tensor=PlainAQTLayout(data=tensor([[ 72, -40, -30,  ..., -13,  29,  30],
        [ 22, -58, -38,  ...,  15,  18,  22],
        [ 16, -72, -47,  ...,   7,  20,  24],
        ...,
        [ 25, -14, -55,  ..., -12,  52, -19],
        [-19,  23,  80,  ...,  16, -59,  28],
        [-26,  22, -23,  ...,  -7,  34, -24]], dtype=torch.int8)... , scale=tensor([0.0030, 0.0038, 0.0034,  ..., 0.0030, 0.0034, 0.0047],
       dtype=torch.bfloat16)... , zero_point=tensor([0, 0, 0,  ..., 0, 0, 0])... , layout_type=PlainLayoutType())), <function _int8_symm_per_token_reduced_range_quant at 0x751a4815fe20>)

int8_dynamic_activation_int8_weight is quantizing activation dynamically, so you don't need to do calibration (that's for static activation quantization), but you can try to skip some sensitive layers by passing around a filter_fn(https://github.com/pytorch/ao/blob/09b8b3c3156b99fa8356e2df30c1a65cbbf5cc91/torchao/quantization/quant_api.py#L416) for quantize_ API
int8_dynamic_activation_int8_weight is using _int8_symm_per_token_reduced_range_quant to dynamically quantization and weight is per axis (axis=1) quantized, because block_size=(1, 1024) and 1024 is the dimension for axis=1, also dtype=torch.bfloat16 doesn't mean the quantized tensor is quantized to bfloat16 actually, that is the source dtype, this is because we need to make autograd happy I think, here are some discussions on this specific topic: https://github.com/pytorch/ao/issues/442

Got it, thanks for the reply!

I used the following code to test the performance of w8a8.
@torch.no_grad()
def generate(model, tokenizer, device, prompt, max_new_tokens):
    inputs = tokenizer(prompt, return_tensors="pt", padding=True)
    start = time.time()
    outputs = model.generate(
        input_ids=inputs.input_ids.to(device),
        max_new_tokens=max_new_tokens,
        attention_mask=inputs.attention_mask.to(device),
        do_sample=True,
        top_k=50,
        top_p=0.9,
    )
    end = time.time()
    generated_text = tokenizer.decode(outputs[0])
    print(f"Generated '{generated_text}' in [{end - start:.2f} s]")

But I encountered performance issues. I tested on an Intel CPU. Under the same prompt, Huggingface FP16 takes 3 seconds to complete, but the quantized model takes 60 seconds to compute. Am I missing any steps?

@chenghuaWang can you try running torch.compile(model, mode="max-autotune") before benchmark? also our current optimization efforts is mostly focused on CUDA I think

Unfortunately, after using torch.compile, there was not much speed improvement; the inference time went from 60 seconds to 42 seconds. It is still much slower than the model using FP16.

also our current optimization efforts is mostly focused on CUDA I think

I will test it on some accelerators. Thank you for your answer.


Update mdoc, sbt-mdoc to 2.3.0

Updates

org.scalameta:mdoc
org.scalameta:sbt-mdoc

from 2.2.24 to 2.3.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalameta" } ]

labels: library-update, early-semver-minor, semver-spec-minor, commit-count:1

Codecov Report

Merging #436 (75f8b18) into master (afafde7) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #436   +/-   ##
=======================================
  Coverage   99.51%   99.51%
=======================================
  Files           8        8
  Lines         412      412
  Branches       41       41
=======================================
  Hits          410      410
  Misses          2        2

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update afafde7...75f8b18. Read the comment docs.


Aligning dite/ite

Fixes not yet merged:

https://github.com/dselsam/lean3/tree/dite
https://github.com/dselsam/mathlib/tree/dite

https://github.com/leanprover-community/lean/commit/c248e38671ebca7d0513180887daf60a6433bc37
https://github.com/leanprover-community/mathlib/commit/0035e2dd30b71232b3bf7d0827eeaa0c002c1825


Lustre2 plugin

Lustre is a high performance cluster filesystem (http://lustre.org), used in HPC environments. Usefully, it makes data available in /proc, so here is a plugin to read those /proc files.
Lustre 2.x stores them in a different location to Lustre 1.x, hence the versioned plugin information. The configuration file allows those locations to be overridden for future proofing, and to make testing easier.
One modification that may be necessary until cross-measurement mathematics is enabled is to store read_bytes and read_calls (and write_*) in the same measurement to get mean bytes per call metrics.

Oh, one other remark: it uses ReadLines from system/ps/common/, to avoid code duplication. I'm unsure if that would be considered safe behaviour. It's tempting to move those common plugin utilities up a level for use across all plugins.

Thanks for the contribution! Don't worry about the ReadLines piece, I will be refactoring all of that code to just use the external gopsutil library anyways

@srfraser I can merge this once you've fixed the branch conflicts

@sparrc Done - thank you!


iputils : proposal for implementation of getGW func

Implemented GetGW by iface and family parameter. Used RouteList to fetch results.
Please give any feedback. Thanks!

Thanks! We should have a functional test using inspect --print-gwv4 in the same PR to ensure that the code works and to ensure that we don't add code that is not used anywhere.
Would you like to add to add such a test in tests/rkt_net_test.go?

@alban Thanks for the comment, and will add functional test in tests/rkt_net_test.go  soon. ( using --print-gw4  soon after trying few commands)

@alban Changed logic on iputils and added test using inspect --print-gwv4 in tests/rkt_net_test.go  . Please give me any feedbacks to update any further change, Thanks!

@alban update interface by calling  testutils.GetNonLoIfaceIPv4 , and removed the duplicate interface designating. Please check, thanks!

@il9ue thanks for the fixes!
@steveeJ can you give it a look?

@alban fixed to lower-case. Thanks.

@il9ue did you do this PR because of a specific use case or is it to fix the current "Not implemented" comment in the code?
@steveeJ The "Not implemented" comment was added by you in 5a6ad7ad8bb594b58fd9060da29f2a1528bf47b4. What was your idea behind it?

@alban The intention was to check if the defined route, specifically default route, from the CNI configuration makes it into the container. In case of a default route the connectivity to a wellk-known WAN address could be checked, but that makes assumption about the environment which I try to avoid during the tests.

@il9ue please add a comment above the new test function that describes why and what's happening during this new test scenario. This will give us a clear idea of your intentions.

@steveeJ  @alban : sorry for late reply! I did the PR initially to fix the current "Not implemented" comment in the code, but I guess I got confused difference between returning just IP on the GW and the GW. I will rework on the GW part and commit again, thanks.

It fails on Travis/Semaphore:
build-rkt-1.0.0+git/gopath/src/github.com/coreos/rkt/tests/testutils/iputils.go:92:
 cannot use list (type *net.Interface) as type netlink.Link in argument to netlink.RouteList:
	*net.Interface does not implement netlink.Link (missing Attrs method)

@alban @steveeJ please give me feedbacks, I included some comments on the latest commit. Thanks!

Thanks! Please also mind the following comment: https://github.com/il9ue/rkt/commit/d4bc3bfc4935acced01983d06d414cac01bdb882#commitcomment-16447615

ping

@iaguis Sorry for the delayed comment! I will commit the change in few days. Thanks for waiting!

Stale PR, closing. This can be restarted at a later point, though.


spacing between stars

Great work.
I can not find a interface to set the space between stars.The default space looks crowded.

agree with


add verbose option

Verbose is by default on in pyMata. From my point of view 50 % of the information are not really helpful.
$ python blink_firmata_auto.py

Python Version 2.7.8 (default, Apr 15 2015, 09:26:43)
[GCC 4.9.2 20150212 (Red Hat 4.9.2-6)]

PyMata version 2.06  Copyright(C) 2013-15 Alan Yorinks    All rights reserved.

Opening Arduino Serial port /dev/ttyACM0

Please wait while Arduino is being detected. This can take up to 30 seconds ...
Board initialized in 0 seconds
Total Number of Pins Detected = 20
Total Number of Analog Pins Detected = 6

Coverage increased (+0.04%) to 59.22% when pulling 07c8b2f8cf6544d355969e5fab041c26fbec1d32 on fabaff:verbose into 1ddb76aaf8229a515b0d6f2fd9f0939dc488656c on pingo-io:master.

@fabaff Thanks a lot!
Just a bit of trivia:
In the beginning, PyMata did not have this verbose option.
We just made a PR some time ago: https://github.com/MrYsLab/PyMata/pull/10
Thanks a lot for contributing with Pingo.


Update http4s-blaze-client, ... to 1.0.0-M19

Updates

org.http4s:http4s-blaze-client
org.http4s:http4s-blaze-server
org.http4s:http4s-dsl

from 1.0.0-M10 to 1.0.0-M19.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.http4s" } ]

labels: test-library-update, semver-pre-release

Superseded by #287.


Update to v0.14.0-rc3

Backlinking to purescript/purescript#3942

CI failed because npm run -s test failed. However, it seems that CI failed because there isn't a test script in packages.json. Do we add a test script that calls pulp test? Or something else?

@paluh Please update the package.json file to include the test script. CI will fail until we add this:
  "scripts": {
    "test": "pulp test"
  },

I’m happy to merge this once we’re using ascii syntax everywhere.

@hdgarrood Yeah, sure - once again sorry for this mess. I'm going to review all my 0.14 related PR's to ensure that I didn't make this mistake anywhere else.

No worries at all ❤ thanks again for your PRs!

grep claims that I don't have any more unicode syntax in this or any other 0.14 PRs. I hope that is true :-)


Acceleration data resolution

V0.12 sends vector magnitude data as 8 bit integers, scaled so 1g = 64 counts.
I think we should be able to get 16 bit acceleration data so should use that, and preferably send in units of mili-g for consistency with Garmin Seizure Detector and to avoid the format being device specific.

ca633d4 fixes this


Piping writeable to readable

I want to read from my stream in chunks of 1933 bytes. As I understand, a readablestream can be constructed to emit data upon the internal buffer reaching this given size, however, my ffmpeg outputting its processed data into a writable stream.
I tried piping the writeable stream into a readable stream, both instances of the node-stream-buffer implementation, but that didn't work out.
Is this something that is possible?

Hey @ASAPHAANING what you're describing should be possible. Can you share some code of what you're trying to achieve and explain where it's not working?

Hey @samcday thanks for answering. I have problems getting ffmpeg to produce any output from events if I specify an output stream, but if I let it create a PassThrough stream by simply calling let stream = cmd.stream()  I can successfully listen to events on the stream variable.
That aside, here's what I wanted to achieve:
var ffmpeg = require('fluent-ffmpeg');
var command = ffmpeg();
var streamBuffers = require('stream-buffers');

const width = 24;
const height = 12;
const colors = 3;

var myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({
	initialSize: width * height * colors * 3, // triple buffering
	incrementAmount: width * height * colors * 3
});

var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
	frequency: 40, // 25 FPS
	chunkSize: width * height * colors + 13 // 1 full frame - 13 bytes metadata for ppm.
});

let cmd = ffmpeg('/home/haaning/Videos/input.mkv')
	.size(`${width}x${height}`)
	.videoCodec('ppm')
	.outputFormat('image2pipe');

cmd.stream(myWritableStreamBuffer, { end: true });

myWritableStreamBuffer.pipe(myReadableStreamBuffer, { end: true });

myWritableStreamBuffer.on('data', (chunk) => {
	console.log(chunk);
});

myReadableStreamBuffer.on('data', (chunk) => {
	console.log(chunk);
});

This produces an error:
Error: Cannot pipe, not readable
Now, if I try to grab my PassThrough stream like I mentioned in the beginning and pipe that into a ReadableStreamBuffer I get the error dest.write is not a function
var ffmpeg = require('fluent-ffmpeg');
var command = ffmpeg();
var streamBuffers = require('stream-buffers');

const width = 24;
const height = 12;
const colors = 3;

var myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({
	initialSize: width * height * colors * 3, // triple buffering
	incrementAmount: width * height * colors * 3
});

var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
	frequency: 40, // 25 FPS
	chunkSize: width * height * colors + 13 // 1 full frame - 13 bytes metadata for ppm.
});

let cmd = ffmpeg('/home/haaning/Videos/input.mkv')
	.size(`${width}x${height}`)
	.videoCodec('ppm')
	.outputFormat('image2pipe');

let stream = cmd.stream();

stream.pipe(myReadableStreamBuffer, { end: true });

myReadableStreamBuffer.on('data', (chunk) => {
	console.log(chunk);
});

I suppose something like this would work though, is this an anti-pattern?
var ffmpeg = require('fluent-ffmpeg');
var command = ffmpeg();
var streamBuffers = require('stream-buffers');

const width = 24;
const height = 12;
const colors = 3;

var myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({
	initialSize: width * height * colors * 3, // triple buffering
	incrementAmount: width * height * colors * 3
});

var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
	frequency: 40, // 25 FPS
	chunkSize: width * height * colors + 13 // 1 full frame - 13 bytes metadata for ppm.
});

let cmd = ffmpeg('/home/haaning/Videos/input.mkv')
	.size(`${width}x${height}`)
	.videoCodec('ppm')
	.outputFormat('image2pipe');

let passthrough = cmd.stream();

passthrough.on('data', (chunk) => {
	myReadableStreamBuffer.put(chunk);
});

myReadableStreamBuffer.on('data', (chunk) => {
	console.log(chunk);
});


Fortnite 7.40 issues

new weapons picked up need to be reloaded
planes glitched (unable to shoot)
rift animation not showing
Port a forts/boomboxes/balloons not showing

everything here is fixed but not pushed

awesome can't wait for the update


Add Admin::DomainBlocks entity and methods

Description
This PR adds support for the Admin::DomainBlocks entity and methods.

[!NOTE]
The Severity class is already implemented in the non-Admin DomainBlocks entity but does not contain the NOOP variant.
I decided to implement another one inside of AdminDomainBlocks.

Closes #322.
Type of Change

New feature
Documentation

Breaking Changes

None

How Has This Been Tested?
I’ve added new unit tests for all methods
Mandatory Checklist

[x] I ran gradle check and there were no errors reported
[x] I have performed a self-review of my code
[x] I have added tests that prove my fix is effective or that my feature works
[x] All tests pass locally with my changes
[x] I have added KDoc documentation to all public methods

Optional Things To Check
The items below are some more things to check before asking other people to review your code.

[x] In case you worked on a new feature: Did you also implement the reactive endpoint (bigbone-rx)?
[x] In case you added new *Methods classes: Did you also reference it in the MastodonClient main class?
[x] Did you also update the documentation in the /docs folder (e.g. API Coverage page)?

@andregasser You may need to approve again after the latest merge from main

@andregasser You may need to approve again after the latest merge from main

It still seems approved from my side. Build running. Feel free to go ahead  😊

@andregasser The button was greyed out before for me even though all build steps passed 🤔 Worked now though.


Add Account API docs for msal-browser and msal-node

Please follow the issue template below. Failure to do so will result in a delay in answering your question.
Library

[ ]<EMAIL_ADDRESS>or<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>[ ]<EMAIL_ADDRESS>
Documentation location

[ ] docs.microsoft.com
[ ] MSAL.js Github Wiki
[ ] README file
[ ] Other (please fill in)
[ ] Documentation does not exist

Description
Add getAccountByHomeId, getAccountByLocalId API usage in both the platforms

#2585


Deprecation warning due to invalid escape sequences.

Deprecation warning due to invalid escape sequences. Using raw strings or escaping them again helps in resolving this. Check https://github.com/asottile/pyupgrade/ for automatic fix of this.
find . -iname '*.py' | grep -Ev 'rdf4|tool' | xargs -P4 -I{} python3.8 -Wall -m py_compile {}
./callee/collections.py:98: DeprecationWarning: invalid escape sequence \
  """Matches an iterable that's a generator.
./callee/types.py:19: DeprecationWarning: invalid escape sequence \
  """:param type\ _: Type to match against"""
./callee/types.py:35: DeprecationWarning: invalid escape sequence \
  """
./callee/types.py:61: DeprecationWarning: invalid escape sequence \
  """
./callee/operators.py:188: DeprecationWarning: invalid escape sequence \
  """Matches values that are shorter than,
./callee/operators.py:206: DeprecationWarning: invalid escape sequence \
  """Matches values that are longer than,
./callee/numbers.py:46: DeprecationWarning: invalid escape sequence \
  """Matches any complex number.
./callee/numbers.py:60: DeprecationWarning: invalid escape sequence \
  """Matches any real number.
./callee/numbers.py:75: DeprecationWarning: invalid escape sequence \
  """Matches a rational number.
./callee/base.py:150: DeprecationWarning: invalid escape sequence \
  """Provides a default ``repr``\ esentation for custom matchers.

Yup. Noticed this as well. Its quite chatty when running tests.


fix(#88): herb add front does not automatically restack

fix(#88): herb add front does not automatically restack
Fixes #88
fix: go to front should go to trunk

Merge activity

Jan 15, 8:31 PM: Graphite rebased this pull request as part of a merge.


ClockSkew configuration

Hello, I have been making some tests with the Flask_Demo and some IDPs but when I try to log in it appears an error of Stale Request. I have been told by some co-workers that its an issue that can be solved with the ClockSew configuration but I am not sure where I can specify this either in the settings.json or advanced_settings.json. I am trying to find something similar to accepted_time_diff from pysaml2

ALLOWED_CLOCK_DRIFT. It is defined at the constants.py file


Disable scrolling

Is there an option to disable video scrolling by the user?

No u should manually disable scrolling in list

@newtaDev how can I disable it?


Version 1.3.1 introducing major dependency upgrade

Hey, not sure if it was intended but 1.3.1 was published to NPM this morning with a major dependency jump from Sinonv1 to Sinonv2. You may want to consider the dropping of Sinon1 as a major release to not break legacy rebuilds.

Nevermind, gave it a little more though and that's probably more on us as the consumer. You're not really introducing breaking changes to your app, a dependency upgrade within a minor release does make sense.


Remove unused var in presto-kudu

#4188
This PR is a preparation before enable UnusedVariable error prone check.

Merged ! Thanks for working on this


Update Installation instructions to reflect recent changes

OpenStack Release
Liberty
Description
The installation instructions need to reflect the new package installation options (rpm, deb, and pip install from pypi).
The installation instructions are in this file: https://github.com/F5Networks/f5-openstack-lbaasv2-driver/blob/liberty/docs/includes/topic_install-f5-lbaasv2-driver.rst.
The file should be separated into sections for each package. I'd vote for putting pip install first, since it's the easiest and isn't OS-dependent, but that's open for discussion.

Where are the .debs and .rpms ?
Please also include the versions of the distros where they are expected to work.

Could we please also add a section on configuring neutron to include F5's lbaasv2 driver?
This was documented in lbaasv1
Thanks
 Ulises

@alonsocamaro -- do you mean these neutron configs?
http://f5-openstack-lbaasv2-driver.readthedocs.io/en/latest/map_quick-start-guide.html#configure-neutron-for-lbaasv2


TabBufferedReader, a special BufferedReader subclass that accommodates infer fields

Rationale
TabLoader uses BufferedReader.mark(int) to read data for inferring column data types, then BufferedReader.reset() to back up and actually import the data. mark(int) specifies the buffer size and BufferedReader allocates the entire buffer upfront and never resizes it, which restricts our ability to infer a large number of rows, since every import incurs the cost of a large buffer. TabBufferedReader addresses this limitation and provides more flexibility. It starts with a relatively small read-ahead buffer (currently 1M characters) and grows it as needed, the goal being to accommodate inferring and importing very large tables while using low memory footprint for smaller tables.
Related Pull Requests

https://github.com/LabKey/platform/pull/1244
https://github.com/LabKey/platform/pull/1257

Not a lot of new code, but this deserves some real scrutiny on the code review.

I don't see a way to count characters consumed inside of readLine() without reflection... but if you do, I'm all for it.

Since Matt's already jumped in, I am not planning to do a separate review here. Let me know if I'd be useful to break a tie or do a full independent review.


Don't fail :read-resource on jgroups metrics if the stack is not started

@kabir This would be it. Also, we don't register metrics in admin-only mode, so the problem does not happen there.

Included in https://github.com/wildfly/wildfly/pull/7991


[json-rpc] minimum doc for expiremental verifying APIs

Motivation
We didn't document these APIs because they are not ready for public usage, and maybe changed in near future.
This PR just specifically call it out, so that anyone discovered them won't be surprised when we change these APIs.
Have you read the Contributing Guidelines on pull requests?
YES

/land


DRILL-6724: Dump operator context to logs when error occurs during query execution

I have a basic question on this one. Is an Index Out Of Bounds Exception (IOBE) an expected behavior for this context? Or, does it indicate a bug in the code? Normally, code is expected to know the array size, and index only within that size, meaning that an IOBE is a program error.
By presenting the error to the user in the nicely-formatted way introduced in this code, we seem to be implying that this is something the user needs to worry about. Yet, if this is a program error, we should say that this is a System Error and they need to contact Support for resolution.
Note also that for unexpected program errors, there is a well-defined generic way we catch exceptions in the Fragment Executor. The Fragment Executor is the handler of last resort, will report an error, and will shut down the fragment.
So, basic question: what is the source of the IOBE? If the IOBE is a program error, do we need the fancy handling if the Fragment Executor handles such errors? And, if the IOBE indicates a problem the user can resolve, should the error messages indicate a possible resolution? What might that problem be? Corrupted database? Incorrect SQL? Update done concurrently with a query? Something else?

@paul-rogers, source of IOBE here is when allocating value vector buffers or reading records from input. Currently, every Exception (except OutOfMemoryException and UserException) will be wrapped into UserException with ErrorType INTERNAL_ERROR (and will remain being such after FragmentExecutor handling).
Purpose of this improvement is to enhance error messages to provide more useful information to users, while original cause is preserved. Provided context may be useful for users as it may provide some ways of resolving the issue or to make a workaround while the issue is being investigated etc.
You're right that IOBE indicates a program error so I've made changes to wrap IOBE into UserException of type INTERNAL_ERROR and not DATA_READ_ERROR (as it was before in the PR).

@KazydubB, thanks for the explanation. You are inserting code everywhere you believe an IOBE could be thrown. Since the exception is due to a coding error, you should, in theory, wrap all possible places. But, one could apply this same argument to NPE, division by zero and other programing errors. Soon, every line of code must be wrapped to catch programming errors.
And, what can the user do? Only call support or post to the dev list. We then look at logs: the stack trace, an create a test case.
So, we could adopt a more general approach:

If the error is something the user can correct (bad name, external system problem, resource problem), log a detailed error for the user. Catch the problem close to the cause so we can provide context.
If the error is a programming problem, catch it generically in the fragment executor. The original exception has the stack trace with is what the developer needs to fix the issue. Tell the user, "System error -- contact your vendor. Preserve drillbit.log for host foo.bar.com and provide it to the developer."

If we do that, then your wrapper code is not needed unless it indicates an error the user can fix. Instead, improve the wording of the generic "something went wrong" error in the fragment executor.
That is, there is no reason to add complexity to the code to try to handle all possible programming errors. Instead, focus that effort on better testing to find and fix such errors. Said another way, the code being added assumes errors exist, we don't know about them, and the user would like lots of details about how we screwed up in the code. That is, IMHO, an incorrect read. Uses want working code, and want to know how to correct errors due to their application or environment.
Note that this is policy is not unique to each plugin. Rather, it is a project-wide guideline that might want to be discussed on the dev list.

@paul-rogers
one thing I am not sure about is that stack trace contains all needed information, sometimes having file name, line number is really useful for debugging or providing devs the info, so at least all this can be logged.

@arina-ielchiieva, very good point. Having that information is very useful regardless of the source of error. How could we provide that generically without the need to wrap each bit of code in a "in case something goes wrong" try/catch block? For example, suppose we get an NPE or OOM. Should we catch all those?
Could each operator (including scanners) provide a context which can be dumped to the log along with the stack trace? Often, we try to recreate the fragment operators from the stack trace. Would be better to see a stack of operators, each with it's critical info.
The fragment exec walks the operator tree to shut down each operator. I could also do so to create the operator stack with related info.
Is this something we could consider? Would have been very helpful the many times I tried to track down a failure found in a QA test or user case.

@KazydubB It would be useful to show the use case how the error was displayed and how it is changed after these changes. Without any real use case it is not clear whether it is necessary. Please find some cases to show the additional info in Exception message and post it in Jira description.
Also as I have mentioned, to go further with these changes it is necessary to have a unit test with verifying the new Exception content.

Note that is is, in general, very hard to test an exception such as these. We are catching programming errors. How does one trigger such exceptions? By running a test that finds a programming bug. What is the proper response? Fix the bug so that it never occurs again. This is why it is so hard to catch specific programming errors: by definition, they should never occur.
However, if done at the fragment executor level, then Drill does have a way to trigger an exception using the error injection framework. Basically, pick a point in the code (perhaps in one of the readers) an call the error injector. If it is enabled, it will throw the requested exception. You can then verify that the error is as expected. And, since the error is intentionally injected, you can repeat this test as often as you like.
Error handling is a tricky topic, which is why I'm jumping in to offer suggestions based on my time in "the school of hard knocks."

The IBM JVM has a special call: com.ibm.jvm.Dump.SystemDump() that generates a dump (similar to a Linux core dump) that can be analyzed later (e.g., check values of fields, heap. Probably not direct memory).
Unfortunately the standard JVMs offer no such call yet, hence not applicable for Drill now.

Agree with @paul-rogers, we should consider catching exception at a higher level and provide user general explanation and suggest to refer to the logs, meanwhile in logs do operator dump (including as much info as possible, like file name, line, exception etc).

@vdiravka and @paul-rogers I've reimplemented PR, please take a look.
Cc: @arina-ielchiieva

@vdiravka regarding your concerns:

I suppose you are right that there is no need to dump all operators up to a failed one (though having this information may help recreating fragment operators in some cases). Dump from the failed batch might suffice in most cases. Maybe we should consider configuration parameter for number of batches to be dumped?

This DumpCat relies on Trace operator which should be injected to physical plan (see comments in Implement Diagnostic Operator) and it seems that TraceInjector, which traverses the set of operators and injects trace operator before every operator is not invoked anywhere, since the trace operator does not support hyper vectors. Moreover this feature is poorly documented (and may appear unreliable as it is not being tested/accounted for since it was added almost 5 years ago and there are no recent jiras for the subject). And lastly, script to run this tool (DumpCat) is not shipped in Drill's distribution (Remove dumpcat script from Drill distribution) rendering it hard for users to use it.

@KazydubB

The last regular (successful) batch and failed batch can be useful (in case of Schema Changes and so on). I think they are enough. Or when dumping of the more batches can be useful?
It would be useful to enable (for instance with additional session option) dumping the additional info by leveraging these Trace operators. It could be future enhancement, could you please create a Jira ticket with description how it is possible to improve dump operator context with DumpCat.
What about other comments in CR?
Did you check your functionality? How does the new info in logs look like? Please create some test cases with mocking exception throwing from different operators.

@vdiravka I've addressed your comments, could you take a look, please?


[e2e]: nodejs tag main default slsa3

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/5747233143
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.nodejs.tag.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.nodejs.tag.main.default.slsa3.yml
Trigger: schedule
Branch: main
Date: Thu Aug  3 06:10:45 UTC 2023

Repo: https://github.com/slsa-framework/example-package/tree/v36.0.107
Run: https://github.com/slsa-framework/example-package/actions/runs/5747432268
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.nodejs.tag.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.nodejs.tag.main.default.slsa3.yml
Trigger: push
Branch: v36.0.107
Date: Thu Aug  3 06:40:53 UTC 2023
Tests are passing now. Closing this issue.