Distinguishing IAM between authenticated users and lambda resolver

Which Category is your question related to?
Auth, GraphQL Transform
Amplify CLI Version
3.17.0
What AWS Services are you utilizing?
Cognito, AppSync, Lambda
Provide additional details e.g. code snippets
When calling GraphQL API from a lambda function resolver as described in the docs:
https://aws-amplify.github.io/docs/cli-toolchain/quickstart#graphql-from-lambda
it is necessary to grant the corresponding permission on GraphQL types to be queried/mutated, for example (as in the docs):
{ allow: private, provider: iam, operations: [read, create] }

My point in using the lambda resolver was to mutate a type I do not want every authenticated user to have update-permission for. However, with an identity pool in use (needed for multi-auth, allowing some unauthenticated queries on different types as well as user image uploads etc.), essentially any authenticated user having a valid JWT token is granted the same level access to the GraphQL type as the lambda function. GraphQL mutation call with authMode: 'AWS_IAM' succeeds on the client-side from any authenticated user.
Is there any way to separate out the private IAM-roles from a lambda resolver and from authenticated users? How could I annotate the GraphQL type to accomplish that?

In this case I would recommend your authenticated users don't use IAM and instead use User Pools as their auth mechanism. You can then manage the IAM policy for the Lambda's execution role independently of this flow (granting it permissions to your AppSync resource as defined here) either by editing the policy in the AWS Console or using the CloudFormation produced by Amplify CLI if using a function in your current project.

@undefobj What would you suggest for allowing users to upload images?
Perhaps an alternative approach to distinguishing between IAM users and Lambda functions would be:

Keep IAM auth enabled to allow users to upload images to s3 etc.

Decorate any types/fields that you don't want users to access with something like:
@auth(rules: [{ allow: groups, groups: ["ForbiddenGroup"] }])
This will act as an explicit deny for any user.

Give specific permissions to lambda functions via IAM roles in order to access 'forbidden' types

Do you think this approach would work?
Also not sure but maybe instead of using the graphql transform @auth directive, instead use the appsync @aws_iam directive. I'm not certain but this may potentially prevent allow policies being added to the auth role (for authenticated users).
@multidis Let us know if you work something out!

In this case I would recommend your authenticated users don't use IAM and instead use User Pools as their auth mechanism.

@undefobj My users are using a User Pool as the default authentication mechanism. However to enable public read queries on some types and also to allow S3 image uploads I have to enable the Amplify CLI option

Select the authentication/authorization services that you want to use: User Sign-Up, Sign-In, connected with AWS IAM controls (Enables per-user Storage features for images or other content, Analytics, and more)

followed by "Allow unauthenticated logins".
My understanding is with this setup after a user is authenticated by the Cognito User Pool, they get a private IAM role as well. In fact, I noticed if there is e.g. an incorrect password attempt with the User Pool Auth.signIn, a 401 error from the Identity Pool URL follows right after that. In all cases it seems that the Identity Pool attempts to assign an IAM role to every User Pool authenticated user.
The situation probably requires either some distinction between private IAM auth statements for the users and for lambda, or perhaps some GraphQL resolver customization to allow lambda where users are forbidden.
It may also be worthwhile to warn Amplify multi-auth users in the auth transformer docs (and in the lambda example) about private IAM roles accessible to authenticated users.

@Jkap7788 Preventing User Pool based access to a given GraphQL type is not a problem (if I understood your suggestion correctly; @auth statements without the explicit provider specification default to User Pool). When a "usual" Amplify query is performed such as
await API.graphql(graphqlOperation(queryName, {
  input: { ... },
}));

it results in error (as it should) since the user is not allowed to perform the operation per the default Cognito auth-provider.
However, when the same operation is done asking IAM to be the auth provider:
await API.graphql({
  query: queryName,
  variables: { input: { ... } },
  authMode: 'AWS_IAM'
});

the operation is allowed. Thus, in essence, any time I allow lambda to perform an operation on a given type using the allow: private, provider: iam, ... statement, the same operation is allowed for any user with an Identity Pool issued token via the IAM mode.

Looking further in the AWS console at the IAM roles created by the Amplify CLI, I see:

...-unauthRole (cognito-identity)
...-authRole (cognito-identity)
...-authRole-idp (lambda)

The cognito-identity provided roles reflect GraphQL schema @auth-annotations (provider: iam ones), while the last one (lambda) just combines permissions from the first two if I am reading the policy correctly. If I start tweaking the roles manually in the console they are going to be overwritten with the next amplify push.
Since we already grant the AppSync access to the lambda when we select the corresponding options in the amplify add function flow (in my case it is create, read, update), is there a way to actually allow lambda perform those queries without the allow: private, provider: iam instruction on the corresponding  types of the GraphQL schema?

This seems to be solved by requiring all users to be added to some Cognito group (e.g. call it "users" group); this is possible using the amplify auth flow prompts of the Amplify CLI.
Once users belong to a group, a separate group IAM role is configured that differs from auth and un-auth ones. That way, authenticated users querying GraphQL with authMode: 'AWS_IAM' no longer have the same role as lambda does, and allow: private, provider: iam ... does not apply to them.
Leaving the issue open for the Amplify Team to decide if they want to include a warning in the lambda example docs: if one just follows the tutorial and has an Identity Pool configured one may not realize they are opening up queries to Any authenticated user with allow: private, provider: iam ....

@multidis We have done a big refactor to our GraphQL transformer docs with more use-case based examples. Please take a look at them and provide us with some feedback. Thank you!

@kaustavghosh06 It seems that an explicit warning about this issue would be helpful for the "GraphQL from lambda" example in the docs. Please see suggested edit in this PR:
https://github.com/aws-amplify/docs/pull/1071

Once users belong to a group, a separate group IAM role is configured that differs from auth and un-auth ones. That way, authenticated users querying GraphQL with authMode: 'AWS_IAM' no longer have the same role as lambda does, and allow: private, provider: iam ... does not apply to them.

@multidis Can you provide example of your schema to allow lamba function access but restrict user group. I'm trying to restrict access where public (unauth-role) users can read, logged in (auth-role) users can read, admin can create\read\update\delete and my lamba function also create\read\update\delete. This is my auth roles look like:
@auth(
		rules: [
			{ allow: public, provider: iam, operations: [read] }
			{ allow: groups, groups: ["Admin"] }
		]
	)

@shivangp in my case an example type is:
type MyTypeWithDynamoTable
  @model
  @auth(rules: [
    { allow: groups, groups: ["admin"], operations: [read, create, update, delete] },
    { allow: groups, groups: ["users"], operations: [read] },
    { allow: owner, ownerField: "owner", operations: [read, create, update, delete] },
    { allow: private, provider: iam, operations: [read, update, delete] },
    { allow: public, provider: iam, operations: [read] }
  ])
{
    id: ID!
    owner: String
    ...
}

For your requirements, my guess would be:

public (unauth-role) users can read

{ allow: public, provider: iam, operations: [read] }

logged in (auth-role) users can read

{ allow: groups, groups: ["users"], operations: [read] },
(once a Cognito trigger is setup to add all users to the default group (called "users" in my example), they no longer have auth-role, they have a separate group-based role (at least that was my observation so far). The auth-role remains "purely" for lambda (private IAM) - the key point for separating lambdas and logged in users.

Admin can create\read\update\delete

{ allow: groups, groups: ["Admin"], operations: [read, create, update, delete] }

my lamba function also create\read\update\delete

{ allow: private, provider: iam, operations: [read, create, update, delete] }
Putting it all together:
type YourTypeWithDynamoTable
  @model
  @auth(rules: [
    { allow: groups, groups: ["Admin"], operations: [read, create, update, delete] },
    { allow: private, provider: iam, operations: [read, create, update, delete] },
    { allow: groups, groups: ["users"], operations: [read] },
    { allow: public, provider: iam, operations: [read] }
  ])
{
    id: ID!
    ...
}

Thanks @multidis the does help clarify things !

Is order matters in how you put the rules? For example, are these two equivalent?
type YourTypeWithDynamoTable
  @model
  @auth(rules: [
    { allow: private, provider: iam, operations: [read, create, update, delete] },
    { allow: groups, groups: ["users"], operations: [read] }
  ])
{

vs
type YourTypeWithDynamoTable
  @model
  @auth(rules: [
    { allow: groups, groups: ["users"], operations: [read] },
    { allow: private, provider: iam, operations: [read, create, update, delete] }
  ])
{

The reason I asked is because I am still trying to understand how rules are applied. What happens if something belongs to the group Users and also has iam role?
AWS amplify should have an easier way separating IAM role from Lamda and Cognito user pool.
Is there a potential security hazard on the work around you propose? Upon creating an account, the user would be automatically granted IAM role. There is a small latency before Lamda triggers and user is added to group. Someone might still be able to takes advantage of this short period of time to perform some actions.

Brief summary as I understand, feels like a major security hole to me if not dealt with correctly.

Must add provider: iam public/private to query to use it from lambda
This also adds permissions to the auth/unauth roles and no way to customize this policy
Can't prevent users from attempting custom IAM queries even if your application uses cognito
Can put users into groups so they don't get the auth role by default, but this depends on user being in group before using API and group being configured correctly with an attached role and federation being configurd with correct rules and even with that something like CustomRoleARN lets a malicious user perform a workaround

@xitanggg my concern exactly. Doesn't seem to be a way to let lambda access appsync without adding provider: iam, public/private. Either one of those adds the field to a policy attached to authrole or unauthrole and no obvious way to edit that policy. The suggestions above require adding a custom group so the user gets that role instead of authrole. I'm not convinced that would work in all cases (for example, malicious user sending CustomRoleARN) plus it depends on the user being successfully added to a group before logging in and sending requests. Amplify does that in the post confirmation trigger, which seems like it could be a race.
"By default the authenticated role defined above will be applied to authenticated users, or you can select a role through rules or for this authentication provider.The rules are applied in order they are saved. They can be reordered by dragging and rearranging the rule order.If multiple roles are available for a user, your app can specify the role with the CustomRoleARN parameter."
Have not tested this out, but does this mean it might be possible to get tokens for the authrole even if in another group as well, at least with default federated identity configuration?
Hypothetically, since you can't customize the authrole easily, some sort of post-deployment script to remove permissions from the authrole wouldn't be a terrible solution.
Since you can't customize the policy attached to the authenticated role, what I did is customize the "AWS::Cognito::IdentityPoolRoleAttachment" to assign auth users to a custom role I created based on the authrole. Manually customize that new role, all cognito users get the new role regardless of their group membership.. No one gets to use the authrole and I can make my new role as restrictive as I want. Stuff I want to let lambda access I add private iam and add permissions to the cf for that lambda.
As far as I can tell, seems like the only solution that feels completely secure to me.

Brief summary as I understand, feels like a major security hole to me if not dealt with correctly.

Must add provider: iam public/private to query to use it from lambda
This also adds permissions to the auth/unauth roles and no way to customize this policy
Can't prevent users from attempting custom IAM queries even if your application uses cognito
Can put users into groups so they don't get the auth role by default, but this depends on user being in group before using API and group being configured correctly with an attached role and federation being configurd with correct rules and even with that something like CustomRoleARN lets a malicious user perform a workaround

@xitanggg my concern exactly. Doesn't seem to be a way to let lambda access appsync without adding provider: iam, public/private. Either one of those adds the field to a policy attached to authrole or unauthrole and no obvious way to edit that policy. The suggestions above require adding a custom group so the user gets that role instead of authrole. I'm not convinced that would work in all cases (for example, malicious user sending CustomRoleARN) plus it depends on the user being successfully added to a group before logging in and sending requests. Amplify does that in the post confirmation trigger, which seems like it could be a race.
"By default the authenticated role defined above will be applied to authenticated users, or you can select a role through rules or for this authentication provider.The rules are applied in order they are saved. They can be reordered by dragging and rearranging the rule order.If multiple roles are available for a user, your app can specify the role with the CustomRoleARN parameter."
Have not tested this out, but does this mean it might be possible to get tokens for the authrole even if in another group as well, at least with default federated identity configuration?
Hypothetically, since you can't customize the authrole easily, some sort of post-deployment script to remove permissions from the authrole wouldn't be a terrible solution.
Since you can't customize the policy attached to the authenticated role, what I did is customize the "AWS::Cognito::IdentityPoolRoleAttachment" to assign auth users to a custom role I created based on the authrole. Manually customize that new role, all cognito users get the new role regardless of their group membership.. No one gets to use the authrole and I can make my new role as restrictive as I want. Stuff I want to let lambda access I add private iam and add permissions to the cf for that lambda.
As far as I can tell, seems like the only solution that feels completely secure to me.


CB-18327 The Datalake OS upgrade support the ZDU, therefore the CB ha…

…s mixed CF and CB managed resources during the OS upgrade. It caused a 'Not found exception' it fixed.
Furthermore, the LB handle is very tricky to support the ZDU. The old LB is attached to CF stack but the detach is not simple because we need to add a Retain field to the stack and we need to update the CF stack. We create a new LB instead of the detach and CF update and we manage the old LB until the CF stack will delete. This change also will aply on Datahub
See detailed description in the commit message.

retest this please

Please resolve conflict.


[regression]: Increase in iree-compile memory for > 100X

What happened?
For the give IR
#map = affine_map<(d0) -> (d0)>
#map1 = affine_map<(d0, d1, d2) -> (0, 0, d2)>
#map2 = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
#map3 = affine_map<(d0, d1, d2) -> (d2)>
#map4 = affine_map<(d0, d1, d2) -> (d0, d1, 0)>
#map5 = affine_map<(d0, d1, d2) -> ()>
#map6 = affine_map<(d0, d1, d2) -> (d1, d2)>
module {
  ml_program.global private mutable @global_seed(dense<0> : tensor<i64>) : tensor<i64>
  func.func @torch_jit(%arg0: tensor<1x3x384x384xf32>, %arg1: tensor<?x?x288xf32>, %arg2: tensor<1x1x288xf32>, %arg3: tensor<3xi64>) -> tensor<?x?x1152xf32> {
    %cst = arith.constant dense<[false, true, true]> : tensor<3xi1>
    %c1 = arith.constant 1 : index
    %c0 = arith.constant 0 : index
    %cst_0 = arith.constant 0.000000e+00 : f32
    %cst_1 = arith.constant 2.880000e+02 : f32
    %cst_2 = arith.constant dense<1> : tensor<3xi64>
    %c0_i64 = arith.constant 0 : i64
    %cst_3 = arith.constant dense_resource<__onnx_constant_not_found_possibly_due_to_being_elided__> : tensor<1x1x288xf32>
    %cst_4 = arith.constant dense<[1, -1, -1]> : tensor<3xi64>
    %cst_5 = arith.constant dense_resource<__onnx_constant_not_found_possibly_due_to_being_elided___1> : tensor<288xf32>
    %cst_6 = arith.constant dense<2.000000e+00> : tensor<f32>
    %cst_7 = arith.constant dense<9.99999997E-7> : tensor<f32>
    %cst_8 = arith.constant dense_resource<__onnx_constant_not_found_possibly_due_to_being_elided___2> : tensor<288xf32>
    %cst_9 = arith.constant dense_resource<__onnx_constant_not_found_possibly_due_to_being_elided___3> : tensor<288xf32>
    %cst_10 = arith.constant dense_resource<__onnx_constant_not_found_possibly_due_to_being_elided___4> : tensor<288x1152xf32>
    %cst_11 = arith.constant dense_resource<__onnx_constant_not_found_possibly_due_to_being_elided___5> : tensor<1152xf32>
    %c288_i64 = arith.constant 288 : i64
    %0 = tensor.empty() : tensor<3xi64>
    %1 = linalg.generic {indexing_maps = [#map, #map, #map, #map], iterator_types = ["parallel"]} ins(%cst, %cst_2, %cst_4 : tensor<3xi1>, tensor<3xi64>, tensor<3xi64>) outs(%0 : tensor<3xi64>) {
    ^bb0(%in: i1, %in_19: i64, %in_20: i64, %out: i64):
      %40 = arith.select %in, %in_19, %in_20 : i64
      linalg.yield %40 : i64
    } -> tensor<3xi64>
    %extracted_slice = tensor.extract_slice %1[0] [1] [1] : tensor<3xi64> to tensor<1xi64>
    %collapsed = tensor.collapse_shape %extracted_slice [] : tensor<1xi64> into tensor<i64>
    %extracted = tensor.extract %collapsed[] : tensor<i64>
    %extracted_slice_12 = tensor.extract_slice %1[1] [1] [1] : tensor<3xi64> to tensor<1xi64>
    %collapsed_13 = tensor.collapse_shape %extracted_slice_12 [] : tensor<1xi64> into tensor<i64>
    %extracted_14 = tensor.extract %collapsed_13[] : tensor<i64>
    %extracted_slice_15 = tensor.extract_slice %1[2] [1] [1] : tensor<3xi64> to tensor<1xi64>
    %collapsed_16 = tensor.collapse_shape %extracted_slice_15 [] : tensor<1xi64> into tensor<i64>
    %extracted_17 = tensor.extract %collapsed_16[] : tensor<i64>
    %2 = arith.cmpi sle, %extracted_17, %c288_i64 : i64
    cf.assert %2, "onnx.Expand input has a dim that is not statically 1; expected this dim >= dim provided shape."
    %3 = arith.cmpi slt, %extracted, %c0_i64 : i64
    %4 = arith.index_cast %extracted : i64 to index
    %5 = arith.select %3, %c1, %4 : index
    %6 = arith.cmpi slt, %extracted_14, %c0_i64 : i64
    %7 = arith.index_cast %extracted_14 : i64 to index
    %8 = arith.select %6, %c1, %7 : index
    %9 = tensor.empty(%5, %8) : tensor<?x?x288xf32>
    %10 = linalg.generic {indexing_maps = [#map1, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%cst_3 : tensor<1x1x288xf32>) outs(%9 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %out: f32):
      linalg.yield %in : f32
    } -> tensor<?x?x288xf32>
    %11 = tensor.empty() : tensor<1x1x288xf32>
    %12 = linalg.generic {indexing_maps = [#map3, #map1, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%cst_5, %arg2 : tensor<288xf32>, tensor<1x1x288xf32>) outs(%11 : tensor<1x1x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.mulf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<1x1x288xf32>
    %13 = linalg.generic {indexing_maps = [#map2, #map1, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%10, %12 : tensor<?x?x288xf32>, tensor<1x1x288xf32>) outs(%9 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.addf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x288xf32>
    %14 = tensor.empty(%5, %8) : tensor<?x?x1xf32>
    %15 = linalg.fill ins(%cst_0 : f32) outs(%14 : tensor<?x?x1xf32>) -> tensor<?x?x1xf32>
    %16 = linalg.generic {indexing_maps = [#map2, #map4], iterator_types = ["parallel", "parallel", "reduction"]} ins(%13 : tensor<?x?x288xf32>) outs(%15 : tensor<?x?x1xf32>) {
    ^bb0(%in: f32, %out: f32):
      %40 = arith.addf %in, %out : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1xf32>
    %17 = linalg.generic {indexing_maps = [#map4, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%16 : tensor<?x?x1xf32>) outs(%14 : tensor<?x?x1xf32>) {
    ^bb0(%in: f32, %out: f32):
      %40 = arith.divf %in, %cst_1 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1xf32>
    %18 = linalg.generic {indexing_maps = [#map2, #map4, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%13, %17 : tensor<?x?x288xf32>, tensor<?x?x1xf32>) outs(%9 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.subf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x288xf32>
    %dim = tensor.dim %arg1, %c0 : tensor<?x?x288xf32>
    %dim_18 = tensor.dim %arg1, %c1 : tensor<?x?x288xf32>
    %19 = tensor.empty(%dim, %dim_18) : tensor<?x?x288xf32>
    %20 = linalg.generic {indexing_maps = [#map2, #map5, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg1, %cst_6 : tensor<?x?x288xf32>, tensor<f32>) outs(%19 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = math.powf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x288xf32>
    %21 = tensor.empty(%dim, %dim_18) : tensor<?x?x1xf32>
    %22 = linalg.fill ins(%cst_0 : f32) outs(%21 : tensor<?x?x1xf32>) -> tensor<?x?x1xf32>
    %23 = linalg.generic {indexing_maps = [#map2, #map4], iterator_types = ["parallel", "parallel", "reduction"]} ins(%20 : tensor<?x?x288xf32>) outs(%22 : tensor<?x?x1xf32>) {
    ^bb0(%in: f32, %out: f32):
      %40 = arith.addf %in, %out : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1xf32>
    %24 = linalg.generic {indexing_maps = [#map4, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%23 : tensor<?x?x1xf32>) outs(%21 : tensor<?x?x1xf32>) {
    ^bb0(%in: f32, %out: f32):
      %40 = arith.divf %in, %cst_1 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1xf32>
    %25 = linalg.generic {indexing_maps = [#map4, #map5, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%24, %cst_7 : tensor<?x?x1xf32>, tensor<f32>) outs(%21 : tensor<?x?x1xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.addf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1xf32>
    %26 = linalg.generic {indexing_maps = [#map4, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%25 : tensor<?x?x1xf32>) outs(%21 : tensor<?x?x1xf32>) {
    ^bb0(%in: f32, %out: f32):
      %40 = math.sqrt %in : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1xf32>
    %27 = arith.cmpi eq, %5, %dim : index
    cf.assert %27, "mismatched size for broadcast"
    %28 = arith.cmpi eq, %8, %dim_18 : index
    cf.assert %28, "mismatched size for broadcast"
    %29 = linalg.generic {indexing_maps = [#map2, #map4, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%18, %26 : tensor<?x?x288xf32>, tensor<?x?x1xf32>) outs(%9 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.divf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x288xf32>
    %30 = linalg.generic {indexing_maps = [#map2, #map3, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%29, %cst_8 : tensor<?x?x288xf32>, tensor<288xf32>) outs(%9 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.mulf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x288xf32>
    %31 = linalg.generic {indexing_maps = [#map2, #map3, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%30, %cst_9 : tensor<?x?x288xf32>, tensor<288xf32>) outs(%9 : tensor<?x?x288xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.addf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x288xf32>
    %32 = arith.index_cast %5 : index to i64
    %33 = arith.cmpi sge, %32, %c0_i64 : i64
    cf.assert %33, "negative values not allowed in new dimensions"
    %34 = tensor.empty(%5) : tensor<?x288x1152xf32>
    %35 = linalg.generic {indexing_maps = [#map6, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%cst_10 : tensor<288x1152xf32>) outs(%34 : tensor<?x288x1152xf32>) {
    ^bb0(%in: f32, %out: f32):
      linalg.yield %in : f32
    } -> tensor<?x288x1152xf32>
    %36 = tensor.empty(%5, %8) : tensor<?x?x1152xf32>
    %37 = linalg.fill ins(%cst_0 : f32) outs(%36 : tensor<?x?x1152xf32>) -> tensor<?x?x1152xf32>
    %38 = linalg.batch_matmul ins(%31, %35 : tensor<?x?x288xf32>, tensor<?x288x1152xf32>) outs(%37 : tensor<?x?x1152xf32>) -> tensor<?x?x1152xf32>
    %39 = linalg.generic {indexing_maps = [#map3, #map2, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%cst_11, %38 : tensor<1152xf32>, tensor<?x?x1152xf32>) outs(%36 : tensor<?x?x1152xf32>) {
    ^bb0(%in: f32, %in_19: f32, %out: f32):
      %40 = arith.addf %in, %in_19 : f32
      linalg.yield %40 : f32
    } -> tensor<?x?x1152xf32>
    return %39 : tensor<?x?x1152xf32>
  }
}

{-#
  dialect_resources: {
    builtin: {
      __onnx_constant_not_found_possibly_due_to_being_elided__: "0x00000000",
      __onnx_constant_not_found_possibly_due_to_being_elided___1: "0x00000000",
      __onnx_constant_not_found_possibly_due_to_being_elided___2: "0x00000000",
      __onnx_constant_not_found_possibly_due_to_being_elided___3: "0x00000000",
      __onnx_constant_not_found_possibly_due_to_being_elided___4: "0x00000000",
      __onnx_constant_not_found_possibly_due_to_being_elided___5: "0x00000000"
    }
  }
#-}

the iree-compile memory is going beyond >50G and still not completing. This behavior started from
IREE (https://iree.dev):
  IREE compiler version 20241015.1047 @ 7622770c3647cd902546fb23a831e967ee1ccf3e
  LLVM version 20.0.0git
  Optimized build

while with
IREE (https://iree.dev):
  IREE compiler version 20241014.1046 @ d7378bb7299bc558a09216559dc4b4fbf5cb59ef
  LLVM version 20.0.0git
  Optimized build

it compile in < 1 second with < 300MB
Steps to reproduce your issue
command:
iree-compile model.modified.mlir --iree-hal-target-backends=llvm-cpu -o compiled_model.vmfb

What component(s) does this issue relate to?
Compiler
Version information
No response
Additional context
No response

Commits between those versions: https://github.com/iree-org/iree/compare/candidate-20241014.1046...candidate-20241015.1047
Other debugging tips: https://iree.dev/developers/debugging/compile-time-regressions/

My guess would be that this PR is the culprit from those commits: https://github.com/iree-org/iree/pull/18730. @pdhirajkumarprasad can you try locally with reverting that PR?

My guess would be that this PR is the culprit from those commits: #18730. @pdhirajkumarprasad can you try locally with reverting that PR?

Yes, this causes the timeout issue.
Smaller repro
  func.func @time_out(%arg0: tensor<1x1x288x8x4xf32>, %arg1: tensor<1152xf32>) -> tensor<1x1x1152xf32>  {
    %c1337472 = arith.constant 1337472 : index
    %c1331712 = arith.constant 1331712 : index
    %c0 = arith.constant 0 : index
    %5 = tensor.empty() : tensor<1x1x1152xf32>
    %unpack = tensor.unpack %arg0 outer_dims_perm = [0, 1, 2] inner_dims_pos = [1, 2] inner_tiles = [8, 4] into %5  : tensor<1x1x288x8x4xf32> -> tensor<1x1x1152xf32>
    %6 = linalg.generic {indexing_maps = [affine_map<(d0, d1, d2) -> (d2)>, affine_map<(d0, d1, d2) -> (d0, d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1, d2)>], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg1, %unpack : tensor<1152xf32>, tensor<1x1x1152xf32>) outs(%5 : tensor<1x1x1152xf32>) {
    ^bb0(%in: f32, %in_0: f32, %out: f32):
      %7 = arith.addf %in, %in_0 : f32
      linalg.yield %7 : f32
    } -> tensor<1x1x1152xf32>
    return %6: tensor<1x1x1152xf32>
  }

Looking into this.

Some thoughts on how to catch this sort of regression sooner:
Increasing test coverage can give earlier signal for failures.
The tests that failed here (https://github.com/nod-ai/SHARK-TestSuite/actions/workflows/test_e2eshark.yml?query=branch%3Aalt-merge-reports I think?) run nightly and without prominent alerts for failures. We have other test suites that run on every commit (like https://github.com/iree-org/iree-test-suites/tree/main/onnx_models as part of https://github.com/iree-org/iree/blob/main/.github/workflows/pkgci_test_onnx.yml)
I'd prefer for all tests run on presubmit (especially if blocking) in iree-org to pull from only the iree-org repository and other public sources. Contributors should only need access to projects in this organization to be able to make changes with confidence. They shouldn't need access to another repository or any private files, private logs, special hardware, etc.
Presubmit tests should run in less than 30 minutes (ideally 15 minutes or faster). If test suites grow too large, they can be split into shards (given enough runner capacity) or we can apply some selection criteria to choose which run on every commit and which run less frequently.
Guarding against system health regressions in the compiler
We have https://github.com/iree-org/iree/issues/13207 tracking general approaches to getting the compiler to fail in useful ways when conditions like those here are observed.
I wonder if the latest idea posted there would have caught this issue:

I had one idea for how to spot when we fall off a cliff, at least: we could add a PassInstrumentation that counts the number of ops in the module and asserts if some threshold is passed. When running with --mlir-print-ir-after-all, that would let us stop right when the threshold is passed, rather than require some extra backtracking.

Guarding against system health regressions in test suites
A timeout on these tests may have caught this sooner (but without a helpful error message). We have such timeouts in iree-org/iree and iree-org/iree-test-suites tests (typically 60 seconds for unit tests or 600 seconds for really large tests).
We could explore other watchdog processes like one on memory usage or disk space. These metrics are often correlated.
Viewing and tracking regular system health metrics
This failure looks like an infinite loop or extremely poor performance ("falling off a performance cliff"). In more usual cases where a metric just grows within one order one magnitude, a test could avoid a timeout while still regressing significantly. In this case we should lean on automated benchmarks and statistics tracking, rather than test suite controls or compiler heuristics.
We have a flag to dump compilation statistics that we could have model test suites include and then dump the results to the logs. We have tracked these metrics in benchmark dashboards before, allowing us to spot historical trends or guard against regressions above a certain threshold (e.g. dispatch count increasing from 500 to 600, or executable binary size increasing from 500KB to 10MB).
Note that if the compiler doesn't actually finish running (such as here, with the multi-hour CI runs), any summarization and statistics dumping that we want to run won't help since the code won't reach that point before the run is cancelled.

My guess would be that this PR is the culprit from those commits: #18730. @pdhirajkumarprasad can you try locally with reverting that PR?

Yes, this causes the timeout issue.
Smaller repro
  func.func @time_out(%arg0: tensor<1x1x288x8x4xf32>, %arg1: tensor<1152xf32>) -> tensor<1x1x1152xf32>  {
    %c1337472 = arith.constant 1337472 : index
    %c1331712 = arith.constant 1331712 : index
    %c0 = arith.constant 0 : index
    %5 = tensor.empty() : tensor<1x1x1152xf32>
    %unpack = tensor.unpack %arg0 outer_dims_perm = [0, 1, 2] inner_dims_pos = [1, 2] inner_tiles = [8, 4] into %5  : tensor<1x1x288x8x4xf32> -> tensor<1x1x1152xf32>
    %6 = linalg.generic {indexing_maps = [affine_map<(d0, d1, d2) -> (d2)>, affine_map<(d0, d1, d2) -> (d0, d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1, d2)>], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg1, %unpack : tensor<1152xf32>, tensor<1x1x1152xf32>) outs(%5 : tensor<1x1x1152xf32>) {
    ^bb0(%in: f32, %in_0: f32, %out: f32):
      %7 = arith.addf %in, %in_0 : f32
      linalg.yield %7 : f32
    } -> tensor<1x1x1152xf32>
    return %6: tensor<1x1x1152xf32>
  }

Looking into this.

I've created a new tracker for this here: https://github.com/iree-org/iree/issues/18875

closing this as issue is no more present


[FEAT]: VC template should be editable

What is the feature request for?
Registry Core
What problem/inconvenience (if any) is this RFC related to?
Description :
When user has added the VC in the schema  - System should allow user to edit VC after adding.
Describe the feature clearly.
Add a new feature that does ....

1. Edit Functionality for Certificate Templates:

Implement the ability to edit VC certificate templates.
Users should be able to modify the content, layout, and design of existing certificate templates.

2. Delete Functionality for Certificate Templates:

Provide the option to delete VC certificate templates.
Users should be able to remove templates that are no longer needed or are outdated.
Implement a confirmation prompt to prevent accidental deletions.


Getting Falure_Core_Past_Deadline and Failure_LockHash_Unknown_Hash just right after login

WTR:

Login into web or desktop app

Result: I am getting a set of repeated errors Video
Note: I am getting this errors while load testing is performed.

@NikolaiB can you verify this is still happening?

@NikolaiB can you verify this is still happening?


Bug: Conan maintain openblas use sve intrinsic on graviton2

illegal intrinsic will happen when milvus run on graviton 2

duplicate with https://github.com/zilliztech/knowhere/issues/459 ?


Mastery Score should be zero if not defined

If the LMS does not set a mastery score then the value should be assumed to be 0 because undefined is not a valid value.

@cawerkenthin I would be grateful for your thoughts on this pull request.  Should the cmi5Controller use zero for a mastery score if it is undefined or would you say it was up to the cmi5Controller client to check for the possibility of undefined?
As it stands this AU always sends failed statements because the cmi5.xml does not contain a mastery score.
if (score >= cmi5Controller.getMasteryScore()) {
    SendStatement("Passed", score);
} else {
    SendStatement("Failed", score);
}

I think there are two issues here:

The sample AU includes a test, yet does not provide a mastery score in the cmi5.xml.  While that is allowed, it is not a great example.
The controller should check for null.  If it is null, it is probably best not to assume an intent of 0 but instead don't send passed or failed statements.

I think that it is ok for a AU not to have a mastery score but still send passed and failed statements, what if the move on criteria was passed?

My question would be is it ok for an AU to have its own build concept of a passing score as long as it was overridden by the mastery score (if one was present)


Shorter Version

i like the idea of Castable. but i don't like to have too much public functions without an "Namespace" aka Class flying around like cast, castable, match.
i prefer it more encapsulated in one class and also to prefix the first closure also with match to get it uniform with the other matches
i rewrite the class like this:
/**
 Chainable type representing the value matching different types
 */
public enum Castable<Wrapped> {
    case value(Wrapped)

    /**
     Wraps a value in Castable.
     - Parameter x:    Value to wrap.
     - Returns:        Value wrapped by Castable
     */
    init(_ data: Wrapped){
        self = .value(data)
    }

    /**
     Casts a value from Type to Result?

     - Parameter value:     Value to be casted
     - Returns:             *.some(value: Result)* if the value could be casted, *.none* otherwise
     */
    private func cast<Type, Result>(_ value: Type) -> Result? {
        return value as? Result
    }

    /**
     Casts a value to function argument type and calls a function, if the cast was successfull.
     - Parameter f:     Function to call, if the *.value* in can be be casted to function argument
     - Returns:         Castable wrapping the same value
     */
    @discardableResult
    public func match<Subject>(f: (Subject) -> ()) -> Castable<Wrapped> {
        switch self {
        case let .value(x):
            cast(x).map { f($0) }
            return .value(x)
        }
    }

    /**
     Extracts a value from Castable

     - Returns:     Value wrapped by Castable
     */
    public func extract() -> Wrapped {
        switch self {
        case let .value(x):
            return x
        }
    }
}

to test it in Playground
class RedCell{}
class GreenCell{}
class ColorCell{}

class RedColorCell: ColorCell{}
class GreenColorCell: ColorCell{}
class LightRedColorCell: RedColorCell{}

[ RedCell(), GreenCell(), ColorCell(),
RedColorCell(),GreenColorCell(),
LightRedColorCell()].map{

    print("\nTest for : \($0)")

    let u = Castable($0)
        .match{ (x:RedCell)  in
            print("Tested   : RedCell")
        }
        .match{ (x:GreenCell)  in
            print("Tested   : GreenCell")
        }
        .match{ (x:ColorCell)  in
            print("Tested   : ColorCell")
        }
        .match{ (x:RedColorCell)  in
            print("Tested   : RedColorCell")
        }
        .match{ (x:GreenColorCell)  in
            print("Tested   : GreenColorCell")
        }
        .match{ (x:LightRedColorCell)  in
            print("Tested   : LightRedColorCell")
        }
        .extract()

    print("Extracted: \(u)")

}

Output:
Test for : RedCell
Tested   : RedCell
Extracted: RedCell

Test for : GreenCell
Tested   : GreenCell
Extracted: GreenCell

Test for : ColorCell
Tested   : ColorCell
Extracted: ColorCell

Test for : RedColorCell
Tested   : ColorCell
Tested   : RedColorCell
Extracted: RedColorCell

Test for : GreenColorCell
Tested   : ColorCell
Tested   : GreenColorCell
Extracted: GreenColorCell

Test for : LightRedColorCell
Tested   : ColorCell
Tested   : RedColorCell
Tested   : LightRedColorCell
Extracted: LightRedColorCell

Well, the thing is, that I prefer using public short functions.
Secondly, cast specifically is used for type inference, I use to avoid as? operators with types, inferring types instead.. See my articles for more details: Type Inference, Chainable Casting
And the last, but not the least, you see, the thing is, that cutting down the functionality is overall worse, then expanding. That's breaking changes inside my own projects and projects other people rely on.

Closing the issue, as I don't want to cut the functionality down. If you would like to extend it, however, I will gladly reopen the issue.

my issue was not about cutting the functionality. it was just to inform you how i use the library with a smaller footprint of global functions :)


Angular architect test rule escaping its runfiles but not the sandbox

This is causing test failures if srcs are not copied to bin
As seen here https://github.com/aspect-build/bazel-examples/blob/a76be559cd89a645308ff0f2e6a02a82c780010f/angular/defs.bzl#L133 and here https://github.com/aspect-build/bazel-examples/blob/a76be559cd89a645308ff0f2e6a02a82c780010f/angular/defs.bzl#L195

We could add a copy_data_and_entry_to_bin attribute to js_binary as an escape hatch for this issue but we're better off understanding how it is escaping and fixing the root cause.

Possibly related to https://github.com/aspect-build/rules_js/pull/353


template: Unity3D

Description
Added basic unity3d game template. This is simple game to control sphere with arrow keys and stop it from falling down  the plane.
Fixes #120
Type of Change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)
[x] Documentation update

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Include instructions for reproducing the tests and any relevant details about your test configuration.
Checklist

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.

Summary by CodeRabbit

New Features

Introduced a new Unity3D template project for easier initiation of basic Unity projects.
Added comprehensive user settings and layout configurations for the Unity editor.
Included essential configuration files for audio, input, graphics, and other project settings.

Documentation

Added a README.md file providing an overview of the Unity3D template project and encouraging contributions.

Chores

Created a .gitignore file to streamline version control by ignoring unnecessary files and directories.

Hi @Abhishek-Mallick I have added basic template for unity3d game. Please check the documentation update, I feel we can add more details here. Let me know your suggestions.
Thanks

Hey @jaiakash contents in website/content/Templates/Games/Unity3D seems to be duplicated twice please fix that
Also can you add startup commands for this Unity Project in the Readme .. maybe like mentioning links of software to download and set it up locally
ps: I got no knowledge about game dev/ unity3d so please add relevant features which may improve the user experience such that this template comes handy

Sure @Abhishek-Mallick I will add it.
I understand. I will update the PR.

Hi @Abhishek-Mallick I have fixed the readme and update it with relevant info.
Thanks

Thanks a lot.
Sure i have joined the discord. Lets continue our discussion over there.
@Abhishek-Mallick


Improve visibility documentation for CanvasItem and Node3D

This closes https://github.com/godotengine/godot-docs/issues/3840.
Note: When cherry-picking, Node3D should be replaced with Spatial.

Thanks!

Cherry-picked for 3.2.3.


[ML-KEM] Merge verified code back to main

Are the changes in the ml-das extraction intentional?
We need a doc with the exact state of verification.

ML-DSA changes can be removed from here and done separately.
The F* are extracted with latest hax, and the extraction in main seems to be older.

Are the changes in the ml-das extraction intentional?
We need a doc with the exact state of verification.

No, there should be no changes in ML-DSA, except if it had some unintentional references to ML-KEM.
Added a doc in proofs/verification_status.md


Timeout issue

Summary of changes

Found a timeout issue, and provided a solution.

How to Test

Try it out your self.

I agree with having a function to destroy the client, but the readme entry makes it sound like there's a bug in this package. It could be an issue with the zerorpc php client, zeromq, or zerorpc itself. It could also be an issue with the specific versions of these libraries we are using. Would need to investigate to know for sure.

OK, I will remove the readme entry and create a ticket to investigate the real reason.

@ben-juwai Please review, when you have time. thanks


Discussion: Migration to Rescript Core

Thanks for taking the initiative to create a fork @JUSTIVE. I wanted to start the discussion you started here regarding the migration to rescript-core.
I wanted to start breaking down that work a bit to see what you think that would look like. I am still wrapping my brain a bit around the workflow in this repo, which is a bit of my inexperience in publishing ReScript into TypeScript. The relationship between genType and the TS declarations files isn't exactly clear to me—are the gen.tsx files used or were they just used to get the initial types?
Either way I understand that we need to change the underlying Belt usages to rescript-core, but I'm wondering if you had any stronger opinions on what you think that looks like. I am curious if the rescript-core team has any interest in a light TypeScript shim over their new core library. To me, it seems like a great way to incrementally sell people on the idea of ReScript and it's FP roots, but I understand if they don't want to take that on that extra work.

I'm also on the way to understanding the building steps of this library yet, it's a bit more than just rescript's gentype. These are the current version of understanding what I've got, in the simplest version:

the rescript file's generated type goes to .gen.tsx.
if you want to override some types, write it on to (module).ts files under src/(module).
Some code shift works, write it to (module)/index.ts
bundle

my original idea of the goal of migration towards rescript-core is, primarily, not to leave this library outdated. I'm more interested in fixing the glitches in the latest version(4.0.0-rc5) and some minor changes(mostly I left on the original repo's PR) now. I'm not sure the rescript-core team is interested in this, but basically, I think this project is a completely independent one.

there are some points to concern:

should we keep curried functions?
backward compatibility between core vs belt
so on..

about the backward compatibility, maybe we can let both(Belt and core) exist, while migrating. Each modules must be in a flat hierarchy for tree-shasking, so here's a my inital idea is like, for Array module:
A(for Belt.Array, no prefixes for backward compatiblity)
cA(for Core.Array, prefix c stands for core).
higher module like Core.A or C.A will hurt tree shaking.

about the backward compatibility, maybe we can let both(Belt and core) exist, while migrating. Each modules must be in a flat hierarchy for tree-shasking, so here's a my inital idea is like, for Array module:
A(for Belt.Array, no prefixes for backward compatiblity) cA(for Core.Array, prefix c stands for core).
higher module like Core.A or C.A will hurt tree shaking.

I like the idea of reaching parity incrementally by having separate modules for Belt vs core. That would make it a bit easier to continue to fix some of the outstanding bugs that currently exist. Can track how well the core-backed APIs match up with the existing test suite to determine when the migration is done.
I think the goal of 1:1 backwards compatibility depends a bit on your goals with this fork. Is the ReScript library backing the API an implementation detail, or is the goal to just be a straight copy of its underlying ReScript API? As a fan of ReScript I like the idea of being closely tied to the underlying API, since I like seeing this library as a stepping stone, but I understand the trade-offs here and think either approach works.
Curried functions are needed for the pipe API right? What would the alternative be to maintain this functionality?


Action to read from SSM Param Store

Action to retrieve information about parameters in a specific hierarchy
- uses: railsware/github-actions/read-from-ssm-param-store@master
  with:
    path: /sandbox/
    region: ew-west-1

Outputs:

param_json - JSON read from param store.

Is it intentional to end path with a slash?

Is it intentional to end path with a slash?

yes. This is how it should be in ParamStore

Merging it to ublock upcoming PR. If any issues will adress them post merge


Added a way to change tab text color.

New property to change the label's color. Extra customizability.

I'd also like you to create a swift-3 branch, so I could submit another pull request, I've updated the code for Swift 3 and I also added my new tabsTextColor property.

@rigobertomolina nice! PR are welcome

Please create a swift-3 branch!

@rigobertomolina done ✔ 😄

Oh wow. I was supposed to send my pull request.

Thanks though!


Add FDM logo

There is some weirdness on small screens that I'd like to get fixed before this is merged. See below. @prototriangle you do frontend much better than me, could you take a look at this?

Sorry for pushing to your branch. Here are some screenshots:

Looks good, I'm happy for you to merge


Responsive issues

There's something weird going on with the table responsive design, as it grows a lot when the page shrinks and it doesn't let you see the footer. I'm not sure what styles have changed so I didn't want to dive deep on it. Let's find a time next week to talk about it and consolidate the responsive style efforts.

@scespinoza can we close this one ?


Trim leading whitespace w/o packageManager

When no package manager is provided there is a leading whitespace which looks odd.
This PR fixes this behavior by trimming whitespaces.

@mpociot Friendly reminder :)

Friendly reminder for this to hopefully get merged @mpociot  🙏🏼


npm package missing .metadata.json for angular 2 aot compiler?

Tried to import and use aot compiler to compile.
Error: Unexpected value 'InfiniteScrollModule' imported by the module
info copied from valor-software/ng2-charts#391
angular/angular#11262 (comment)
angular/angular#11262 (comment)
angular/angular#11262 (comment)
Complete conversation (angular/angular#11262)

hi @Zhuoqing
I think the case here is that angular2-infinite-scroll is currently based on the latest angular 2 RC5 - which doesn't include AOT.

@orizens thanks for reply, looking forward for angular2-infinite-scroll to upgrade and support AOT :-)
The rc5 release blog did mention aot

according to the blog post, AOT is consumed via the app module which consumes this module.
if you have more references - that can be helpful.
thanks.

Sorry the link for comment is broken when copied over.
"All referenced libraries must include the .metadata.json file along side any .d.ts files they produce otherwise they will not work correctly with ngc"
Seems just need to include the @angular/compiler-cli package, run ngc to build the project, and include the generated .metadata.json with each of the .d.ts file for npm packages.
https://github.com/angular/angular/issues/11262#issuecomment-244472000
https://github.com/angular/angular/issues/11262#issuecomment-244489405
I added those .metadata.json to my local npm folder and ngc compile works. but rollup tree shaking is reporting error. maybe due to the module format is not es2015. Any future plan to ship as es2015 module so rollup tree shaking works?

Export 'AxisResolver' is not defined by 'F:\prj\node_modules\angular2-infinite-scroll\src\axis-resolver.js'
Export 'InfiniteScrollModule' is not defined by 'F:\prj\node_modules\angular2-infinite-scroll\src\index.js'
Export 'InfiniteScrollModule' is not defined by 'F:\prj\node_modules\angular2-infinite-scroll\src\index.js'
Export 'AxisResolver' is not defined by 'F:\prj\node_modules\angular2-infinite-scroll\src\axis-resolver.js'
Module F:\prj\node_modules\angular2-infinite-scroll\angular2-infinite-scroll.js does not export InfiniteScrollModule
Error: Module F:\prj\node_modules\angular2-infinite-scroll\angular2-infinite-scroll.js does not export InfiniteScrollModule

Any news here?

Getting the following error in v0.2.7 with AOT:
Error: 'InfiniteScrollModule' is not exported by node_modules/angular2-infinite-scroll/angular2-infinite-scroll.js (imported by src/app/app.module.js). For help fixing this error see https://github.com/rollup/rollup/wiki/Troubleshooting#name-is-not-exported-by-module
Is this issue definitely fixed?


GPT4All and create_csv_agent : llama_generate: error: prompt is too long (680 tokens, max 508)

I don't want to use ChatGpt, I want to use a local "chatgpt"
So I tried this example with GPT4All https://python.langchain.com/en/latest/modules/agents/toolkits/examples/csv.html
from langchain.llms import GPT4All
from langchain import PromptTemplate, LLMChain
from langchain.agents import create_csv_agent
import pandas as pd

df = pd.read_csv('./titles.csv')

model = GPT4All(model="./models/ggml-alpaca-7b-q4-new.bin")
agent = create_csv_agent(model, './titles.csv', verbose=True)
>>> agent.run("how many rows are there?")

I have the error : llama_generate: error: prompt is too long (680 tokens, max 508)
Tried with model = GPT4All(model="./models/ggml-alpaca-7b-q4-new.bin") and model = GPT4All(model="C:\\Users\\glapenta\\Workspace\\python\\models\\ggml-alpaca-7b-q4-new.bin", n_ctx=1024, n_threads=8)
I have this error with n_ctx at 1024 llama_generate: error: prompt is too long (1056 tokens, max 1020)
Here's the full stack :
>>> agent.run("how many rows are there?")

> Entering new AgentExecutor chain...
llama_generate: seed =<PHONE_NUMBER>

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
sampling: temp = 0.800000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.300000
generate: n_ctx = 512, n_batch = 1, n_predict = 256, n_keep = 0

 [end of text]

llama_print_timings:        load time = 74735.64 ms
llama_print_timings:      sample time =    51.08 ms /   116 runs   (    0.44 ms per run)
llama_print_timings: prompt eval time = 136599.33 ms /   514 tokens (  265.76 ms per token)
llama_print_timings:        eval time = 854042.23 ms /  1599 runs   (  534.11 ms per run)
llama_print_timings:       total time = 61952108.58 ms

You are working with a pandas dataframe in Python. The name of the dataframe is `df`.
You should use the tools below to answer the question posed of you:

python_repl_ast: A Python shell. Use this to execute python commands. Input should be a valid python command. When using this tool, sometimes output is abbreviated - make sure it does not look abbreviated before using it in your answer.

Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [python_repl_ast]
Action Input: the input to the action
Observation: the action to take, should be one of [python_repl_ast] is not a valid tool, try another one.
Thought:llama_generate: seed =<PHONE_NUMBER>

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
llama_generate: error: prompt is too long (678 tokens, max 508)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\chains\base.py", line 213, in run
    return self(args[0])[self.output_keys[0]]
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\chains\base.py", line 116, in __call__
    raise e
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\chains\base.py", line 113, in __call__
    outputs = self._call(inputs)
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\agents\agent.py", line 790, in _call
    next_step_output = self._take_next_step(
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\agents\agent.py", line 679, in _take_next_step
    output = self.agent.plan(intermediate_steps, **inputs)
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\agents\agent.py", line 398, in plan
    action = self._get_next_action(full_inputs)
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\agents\agent.py", line 360, in _get_next_action
    parsed_output = self._extract_tool_and_input(full_output)
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\agents\mrkl\base.py", line 140, in _extract_tool_and_input
    return get_action_and_input(text)
  File "C:\Users\glapenta\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\langchain\agents\mrkl\base.py", line 48, in get_action_and_input
    raise ValueError(f"Could not parse LLM output: `{llm_output}`")
ValueError: Could not parse LLM output: ``

Great framework !

I think you need to use "chunk size". Check out this example https://python.langchain.com/en/latest/modules/indexes/text_splitters/examples/character_text_splitter.html

Same issue here

Think you guys need to use Chunking ?

try increasing n_ctx to something like 2048

from pygpt4all.models.gpt4all import GPT4All

model = GPT4All('ggml-gpt4all-l13b-snoozy.bin', n_ctx=2048)

model.generate("Hello world", n_predict=500, new_text_callback=lambda x: print(x, end=""))

i am trying to do the same thing with the friend who created the post i want also to use that but for an sql using the local gpt4all but i just cant get it to work.please someone with experience or time to help me with this ?
`import os
import sqlite3
import tkinter as tk
import tkinter.ttk as ttk
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from pygpt4all.models.gpt4all import GPT4All
Create a GPT4All model
model_path = 'C:/Users/Ioannis/AppData/Local/nomic.ai/GPT4All/ggml-gpt4all-l13b-snoozy.bin'
model = GPT4All(model_path, n_ctx=2048)
Connect to the database and execute the SQL script
conn = sqlite3.connect('C:/Users/Ioannis/gpt4allz/bin/sqlcon/ChatGPT-Tabular-Data-main/Chinook.db')
with open('C:/Users/Ioannis/gpt4allz/bin/sqlcon/ChatGPT-Tabular-Data-main/Chinook_Sqlite.sql', 'r', encoding='cp1252', errors='replace') as f:
sql_script = f.read()
conn.executescript(sql_script)
conn.close()
Create the agent executor
db = SQLDatabase.from_uri("sqlite:///C:/Users/Ioannis/gpt4allz/bin/sqlcon/ChatGPT-Tabular-Data-main/Chinook.db")
toolkit = SQLDatabaseToolkit(db=db)
agent_executor = create_sql_agent(llm=model, toolkit=toolkit, verbose=True)
Create the UI window
root = tk.Tk()
root.title("Chat with your Tabular Data")
Create the text entry widget
entry = ttk.Entry(root, font=("Arial", 14))
entry.pack(padx=20, pady=20, fill=tk.X)
Create the button callback
def on_click():
# Get the query text from the entry widget
query = entry.get()
try:
    # Generate text using the GPT4All model
    generated_text = model.generate(query, n_predict=500)

    # Run the query using the agent executor
    result = agent_executor.run(query)

    # Display the generated text and the result in the text widget
    text.delete("1.0", tk.END)
    text.insert(tk.END, f"Generated Text: {generated_text}\n\nResult: {result}")
except Exception as e:
    # Catch any exceptions, print them, and display a message
    print(f"Error: {e}")
    text.delete("1.0", tk.END)
    text.insert(tk.END, "An error occurred. Please try again.")

Create the button widget
button = ttk.Button(root, text="Chat", command=on_click)
button.pack(padx=20, pady=20)
Create the text widget to display the result
text = tk.Text(root, height=10, width=60, font=("Arial", 14))
text.pack(padx=20, pady=20)
Start the UI event loop
root.mainloop()
`

anyone knows how i can connect an sql database with chat4all? any pointers?

well it looks like that chat4all is not buld to respond in a manner as chat gpt to understand that it was to do query in the database.so i think a better mind than mine is needed.in case someone wants to test it out here is my code
`import sqlite3
from langchain.llms import GPT4All
Path to the GPT4All model
model_path = "C:/Users/AppData/Local/nomic.ai/GPT4All/ggml-gpt4all-l13b-snoozy.bin"
Path to the SQLite database
db_path = "C:/Users/gpt4allz/bin/db/Chinook.db"
Instantiate the model
model = GPT4All(model=model_path, n_ctx=2048, n_threads=8)
Connect to the SQLite database
conn = sqlite3.connect(db_path)
Create a cursor
cur = conn.cursor()
Generate a SQL query using the model
query = model("SELECT * FROM Albums WHERE name = 'Sgt. Pepper''s Lonely Hearts Club Band'")
Print the generated SQL query
print("Generated SQL query:", query)
Execute the generated query
cur.execute(query)
Fetch all the rows
rows = cur.fetchall()
Print the rows
for row in rows:
print(row)
Close the connection
conn.close()
`
if you try something more generic in will not undertand at all like give me a description of table .it answers with things that does not do for this job.so good luck and if you do find a way please let me know....


GEODE-5850: Do not build jar in test.

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[x] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[x] Does gradlew build run cleanly?

[n/a - existing test failures] Have you written or updated unit tests to verify your changes?

[n/a] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

I do prefer to build the jar in the test since that jar very test specific. We don't really need to have class file lying around in our source code.

@jinmeiliao I think you missed the scope of the ticket?  We explicitly cannot do that in Java11, since the test VM would compile it in Java11, making it incompatible with our Java8-compiled server code.

Oh, missed reading the ticket. Maybe the JarBuilder would have some hooks to specify the target compatibility when compiling the code.

I couldn't get this failure reproduced in my environment. In the pipeline, it looks the server/locators are running using java1.8. I think we need to run it using jdk11.

@pivotal-jbarrett #2593 and #2603 are addressing similar failures in different tests, yes.  I should've clarified the commit message / header.
@jdeppe-pivotal I fail to see what about PutCommandWithJsonTest.java suggests it has to do with a build step.  It seems like a test of the put command to me, which requires a class of a toy datatype to use in that put.  I think it's more that this jar is a necessary resource for this test to execute, and that such a resource should be built during the build steps.  But at the same time, I do agree that it's somewhat  cumbersome.  I just didn't see another direct solution to this Java version conflict.  (Except that...)
@jinmeiliao I didn't notice that, but that makes sense.  I guess the real problem is that our pipeline needs to set GF_HOME, too.

I do believe that when the build is fixed to use jdk11 to start server/locators, these changes are no longer necessary.


Handle trailing thrown exceptions better

What do I mean by that? I have destructors in which potentially error conditions can cause exceptions. Maybe a good thing or not; style aside, when they are allocated using smart pointers, which go out of scope with the test cases and/or sections, the program crashes ungracefully rather than Catch presenting a pretty response.
I don't know if that could be handled better, maybe a parent try/catch scope around the test case(s), or something like that?
It's not impossible to workaround, but it would be nice to catch it better.
Thanks!

There is a parent try/catch around the call into the test case. It should be handling it gracefully.
If it's crashing it suggests that there's an exception being thrown during stack unwind due to another exception (an easy situation to get into with throwing destructors, and why they're not usually recommended - although I sometimes find them useful, too).
Is this in the case where the test case is concluding successfully, or has a test failed and it's exiting early (assertions starting with REQUIRE exit by throwing an exception!)

Yes, that's precisely what I'm talking about. Can a parent-parent scope be added to buffer for this situation?
Like I said, it's when the resource is cleaned up at stack unwind. Smart pointer resets itself, dtor encounters exception.

One workaround, I suppose I could introduce a superfluous parent SECTION. However, I'm really trying to stay focused just on the unit tests I want to perform without the superfluity, if you will.

Yes, that's precisely what I'm talking about. Can a parent-parent scope be added to buffer for this situation?

No, because ultimately the error happens when an exception is thrown while a different one is in-flight.
Consider this example
struct throws {
    ~throws() {
        throw 1;
    }
};

void safish() {
    throws a;
}

void always_aborts() {
    throws a, b;
}

Function safish can be called and the program's stack will unwind in standard fashion. Thus this
try {
    safish();
} catch (int) {
}

is an absolutely pointless piece of code, but harmless. On the other hand, calling always_aborts() will instantly kill your program, because C++ standard specifies that if a second exception is thrown while the first one is in-flight, std::terminate is called immediately.
This is the reason why exceptions inside destructor are regarded as a bad idea. However, there are legitimate reasons to use them, but they have to be used smartly, ie the following version of the throws struct would allow calling always_aborts without immediate termination of the program.
struct throws {
    ~throws() {
        if (!std::uncaught_exception()) {
            throw 1;
        }
    }
};


Provide ability to specify search order in the Web client URL

Currently, the Web client URL for search looks like this:
https://bsky.app/search?q=<search_term>

Only after you get the results you sort them by top / latest / people.
Please add the ability to specify sort order in that top URL itself, something like
https://bsky.app/search?q=<search_term>&sort=latest

which would be passed to the underlying feed query which already supports it.

Duplicate of https://github.com/bluesky-social/social-app/issues/4073

Ah, I'll close this then.


No LICENSE file

What license is this under? BSD? ;-)

Feels silly, but OK, done.

It may be useful if/when I start using this script to construct the Go project's FreeBSD builders. (something like this: https://github.com/golang/tools/tree/master/dashboard/env/openbsd-amd64)


Outlook sign-in

I cannot understand why Outlook sign-in doesn't take a leaf out of the very successful Gmail model and have your Outlook account name there when you click on the mail page.   Having to type in the account name and wait for the password page, to come up, is only a short time, but it is time that would be better spent using your account.   In addition, in the case where a person has multiple Outlook accounts, the ability to switch between accounts exists in the Gmail world, why doesn't exist in Microsoft.    You are being left so far behind that it is laughable.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d23565fb-ccc9-42fc-6bde-f999d92fc762
Version Independent ID: 60c86bac-f951-8181-793b-34018f4a76ea
Content: Microsoft sigin-in experience updates
Content Source: articles/multi-factor-authentication/end-user/sign-in-experience-updates.md
Service: multi-factor-authentication
Product: unspecified
GitHub Login: @eross-msft
Microsoft Alias: lizross

I agree, it's very annoying to have 2 screen just to log in.

Thanks for your feedback! Please post this as a feedback to outlook using either of these

upvote existing feedback using and add more context
You can alternatively create a new feedback item, either directly at https://outlook.uservoice.com or while logged into outlook.com click the "?" icon on the top left and click Feedback.
Providing feedback in this way will allow our community of fans and users to upvote it allowing for better prioritization.


About sampling multiple answers

Thanks for your great work!
In the README.md, you have mentioned:

For smaller models (7B parameters), desktop GPUs such as the Nvidia TitanRTX (24 GB) are sufficient.

When I conducted the experiments myself with Model: LLaMA 2 Chat 7B and GPU: GeForce RTX 3090, I modified the num_return_sequences parameter to sample multiple answers and use beam search as sampling method, as shown below:
with torch.inference_mode():
    output_ids = model.generate(
        input_ids,
        images=image_tensor,
        do_sample=False,
        temperature=1.0,
        max_new_tokens=512,
        use_cache=True,
        # generate multiple outputs
        num_return_sequences=num_return_sequences,
        num_beams=num_beams,
        num_beam_groups=1,
        stopping_criteria=[stopping_criteria],
        return_entropies=return_entropies
    )

And I also want to return entropies during inference. However, I encountered an out-of-memory issue, as 24 GB of VRAM could only sample up to 7 answers.
I would like to know how many answers you sampled when calculating semantic entropy and naive entropy. What sampling method did you use and how did you sample multiple answers?
Hope to receive your response! Thanks a lot!

Hi baoduoxu,
Thanks for your interest in the codebase!

And I also want to return entropies during inference. However, I encountered an out-of-memory issue, as 24 GB of VRAM could only sample up to 7 answers.

You can always sample sequentially (which is what we do) instead of in parallel, if you seek to minimize GPU memory usage.

What sampling method did you use and how did you sample multiple answers?

Simple multinomial sampling (with top_p=0.9, top_k=50 as per llama default) at temperature 1.
Hope this helps!
Jannik


Increase number of images per contract to 10

This used to be at 10 but is recently limited to 5. This should go back to the original value.

Clarification: I've found that the maximum number I can upload at one time is 5. Not sure whether this is arbitrarily set or if there is some technical basis for this limitation.
Upon further inspection, I was able to add at least 22 images to a contract. So we should enforce a limit to the number of images per contract; I suggest 10 based on my chats with Vendors on eBay and other platforms.

Can you put this in as an issue on the server side too? We'll want to limit it on both sides.

Server issue: https://github.com/OpenBazaar/OpenBazaar-Server/issues/214

This was done.


[Feature Request] Don't collect all files in DeltaSourceSnapshot

Feature request
Overview

We have several times hit issues running out of memory starting a new stream on a large Delta table. I finally traced through the code to see what the memory requirements should be and it appears that SnapshotIterator.iterator collects all files (including stats) to create an iterator on the list of files. This can take a very large amount of memory on the driver for large tables.
Additionally, it would appear that the final list to create a TahoeBatchFileIndex also includes the stats as well? And I don't think anything related to streaming currently uses file stats that I can tell? So it would be helpful to be able to drop the stats for streaming things at least to avoid collecting all that on the driver.
Motivation

Starting a stream on a large table requires a lot of driver memory.
Further details

Any feedback on my assumptions about how stats are used or any ideas for how to not do a collect on the entire snapshot would be welcome.
Willingness to contribute
The Delta Lake Community encourages new feature contributions. Would you or another member of your organization be willing to contribute an implementation of this feature?

[ ] Yes. I can contribute this feature independently.
[X] Yes. I would be willing to contribute this feature with guidance from the Delta Lake community.
[ ] No. I cannot contribute this feature at this time.

@Kimahriman wouldn't these stats be useful for the query to perform data skipping during reads?

@Kimahriman wouldn't these stats be useful for the query to perform data skipping during reads?

They theoretically could be but I don't see that currently happening on the streaming path? Might be a separate enhancement to actually use stats for skipping on streaming reads. Either way they should be dropped before creating the final file index like what happens on the non streaming path

@Kimahriman -- what if the batch file index simply stored Dataset[AddFile] instead of Seq[AddFile]?
Doing so would guarantee we can create the batch file index without triggering an OOM, thanks to spark's caching and spilling machinery.
It would also allow to prune away the stats column before calling collect (to reduce chances of OOM in case a lot of files survive partition pruning), since as you point out TahoeBatchFileIndex.matchingFiles ignores dataFilters. If that ever changes, we would simply apply the data filters before pruning away the stats column (still before calling collect).

@Kimahriman -- what if the batch file index simply stored Dataset[AddFile] instead of Seq[AddFile]?
Doing so would guarantee we can create the batch file index without triggering an OOM, thanks to spark's caching and spilling machinery.

The problem is before the TahoeBatchFileIndex is even created in DeltaSourceSnapshot.iterator. Files info needs to be available in the driver for it to figure out batches based on batch limits like maxBytesPerTrigger. It seems like a two stage process of

iterate through the files to figure out what the next offset is
iterate through the files to create the TahoeBatchFileIndex based DataFrame with data for that batch

I'm messing around with alternatives to just .collect'ing the whole thing there but getting some weird issues.

I made https://github.com/delta-io/delta/pull/1703 to at least drop the stats before files are collected and put into a file index

Created https://github.com/delta-io/delta/pull/1721 to try to fix things, let me know what you think.


The buttons can't be used in React app

Hello,
I tried to create a component like
import * as React from "react";
import { GoogleLoginButton } from "react-social-login-buttons";

export class Auth extends React.Component<any, any> {
  public render() {
    return (
      <GoogleLoginButton onClick={() => alert("Hello)} />
    );
  }
}

But i got the errors:
[ts]
JSX element type 'GoogleLoginButton' is not a constructor function for JSX elements.
  Property 'render' is missing in type 'GoogleLoginButton'.
[ts] JSX element class does not support attributes because it does not have a 'props' property.

What I'm doing wrong?
Thanks!
Tomas

Hi @tomasklima, thank you for the issue. I will create new PR and fix this.

@tomasklima feel free to test the version 2.1.1


LibGdx - How to create a Screen for Game-Preferences? Example?

I am new in the "LibGdx - game development" topic and try to implement a small game. I would like first to start with a "preferences"-screen, similar like:
https://www.gamedevelopment.blog/wp-content/uploads/2017/01/perfdone.png
or like:
https://img.degreed.com/image/fetch/pg_1/w_564,h_175,c_fill,g_faces:center,f_auto,q_auto,dpr_2.0/http%3A%2F%2F4.bp.blogspot.com%2F-0704s6KBqxk%2FT1gak1cbNVI%2FAAAAAAAAA-4%2F5T0dgHWBYfA%2Fs400%2FOptionsScreen.png
I was also searching in google, but those examples does not help for me as a starter with less knowledge.
I would be happy, if someone could help me with that.
Thanks

For this kind of issue, I suggest you to try the libgdx Discord: https://discord.gg/6pgDK9F

Requesting this be closed


Alghorithm

func.py need to be moved in a new folder and algorithms divided in separated .py files

this merge finishes the issue.


Fix Dynamodb doc

Describe your changes:
Fix Dynamo DB

Type of change:

[ ] Bug fix
[ ] Improvement
[ ] New feature
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] Documentation

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] My PR title is Fixes <issue-number>: <short explanation>
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

@ayush-shah can you also verify other connectors that do not support profiler/DQ and update their documentation

@OnkarVO7 if there are any changes, I will create a new PR as this is dedicated to dynamodb


doc: add title to new FaqGen README

Title was missing on FaqGen/README.md

@XinyaoWa @lkk12014402 @lvliang-intel @XinyuYe-Intel @hshen14  The new document needed a title.  Would you please approve and merge this PR so the docbuild for github.io will run without errors.


Add support for missingValues

fixes #84

This makes this call valid for all rows except 2 and 3 (commented ones):
python -m goodtables.cli datapackage https://raw.githubusercontent.com/frictionlessdata/ADB-User-Study/master/datapackage.json

@amercader
please take a look


Added Sdl2ImageContext to automatically manage quitting sdl2_image.

Sdl2ImageContext is created on init() and runs IMG_Quit on drop instead of requiring a user to do it manually. I also changed the init function to catch and return errors instead of making a user have to write their own error manager.

This is a breaking change.
I thinks it's OK to be merged.
@xsleonard @AngryLawyer

I'm happy with it


Local mirror of http://public.update.flatcar-linux.net/v1/update/

Current situation
Flatcar update required internet access. it is not always available even through a proxy server.
Non internet connected servers should be able to update from a locally hosted server
ie mirror of http://public.update.flatcar-linux.net/v1/update/
Ideal future situation
Make http://public.update.flatcar-linux.net/v1/update/ possible to be mirrored
Implementation options
rsync, http directory listing, ftp server

The URL you mentioned is for the update server API which can't be mirrored. You can mirror the image server and we have a script for that.
For running a local update server look into https://github.com/kinvolk/nebraska/ (use -enable-syncer true -host-flatcar-packages true but at least this part needs Internet access of course, without these options you would have to create the packages manually in the web UI).

The URL you mentioned is for the update server API which can't be mirrored. You can mirror the image server and we have a script for that.
For running a local update server look into https://github.com/kinvolk/nebraska/ (use -enable-syncer true -host-flatcar-packages true but at least this part needs Internet access of course, without these options you would have to create the packages manually in the web UI).

Thanks for clarification


Add model compilation when instantiating an OVModel

Can there be an option to not compile the model on instantiating? For some models (e.g. large encoder-decoder models) compiling can be pretty slow at the moment, and it is unnecessary to compile it to the device if you want to reshape the model, or move it to GPU, or just save the IR model with .save_pretrained() for example.

I agree with the changes but need to showcase this in the documentation as well.

I agree with the changes but need to showcase this in the documentation as well.

An explanation of the changes was already added in the documentation, do you have something specific in mind that you would like us to add ?

I agree with the changes but need to showcase this in the documentation as well.

An explanation of the changes was already added in the documentation, do you have something specific in mind that you would like us to add ?

Sorry, I missed .mdx file. Is it possible to highlight it as a Note? Alternatively, it can be a code snippet with an example of model preparation flow where model.compile() is placed at the end.

I agree with the changes but need to showcase this in the documentation as well.

An explanation of the changes was already added in the documentation, do you have something specific in mind that you would like us to add ?

Sorry, I missed .mdx file. Is it possible to highlight it as a Note? Alternatively, it can be a code snippet with an example of model preparation flow where model.compile() is placed at the end.

Sure, I just added an example in the documentation

I agree with the changes but need to showcase this in the documentation as well.

An explanation of the changes was already added in the documentation, do you have something specific in mind that you would like us to add ?

Sorry, I missed .mdx file. Is it possible to highlight it as a Note? Alternatively, it can be a code snippet with an example of model preparation flow where model.compile() is placed at the end.

Sure, I just added an example in the documentation

Thanks, @echarlaix. Looks good.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Ability to Listen to DialogSheet Dismissals

It would be quite helpful to have a listener that could be attached to a DialogSheet to have specific code run when the sheet is dismissed through dismiss()

There is actually a pre-release version that includes a dismiss listener:
implementation 'com.github.marcoscgdev:DialogSheet:2.0.4-pre1'

It is stable so you can use it without any problems.

Thank you! Any timeline for a release version with that functionality?

If everything goes well, the new release version will be ready this weekend.

Added in version 2.0.4.


[NFC] Rename tensor properties.

Use established terms-of-art for tensor properties.
I don't mean to get caught up in bikeshedding, but I believe the established terms are a bit easier to understand and more usable.

dims -> shape
nbDims -> rank
nbElem -> scalarCount

@feiwang3311 I'm curious about the purpose/meaning of def dims = TTT(dimsSeq) (I'm using the old variable names).
What does TTT accomplish? How should I decide whether to use dimsSeq or dims?

Thanks, Dan. That is good suggestion. As to TTT, Greg put it there and it doesn't seem to provide anything more than dimsSeq. In most cases I just use dims.

The TTT was added as a debugging tool. It was to be able to intercept call to apply in the Seq in order to do range checking. For some reason I could get the StackTrace otherwise if I recall correctly. It can be removed. Or we should create a proper object that take an input of dimensions and have some function that can help with the strides and direct access in the Array.

I agree with the renaming. It's good to use standard terminology.


mWeb - Account Settings / Profile - Error when I introduce a second contact method

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.59
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Issue reported by: Applause - Internal Team
Action Performed:

Navigate to account settings > Profile
Click on "Contact Method"
Enter a email with uppercase and lowercase letters but with a correct format
Click on the button "Add"

Expected Result:

I'm redirected to the "Contact methods" page
There's a green dot next to the newly added email along with a message to verify the contact method

Actual Result:
There is a red dot net to the newly email added
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[x] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/ca05957b-fdd4-4c62-887f-257e1ed17d68
View all open jobs on GitHub

@zanyrenney  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Cannot reproduce --

I just tried it.


Partial merge of content on dev branch to master branch

There are several commits on the dev branch that are not on master. This PR to master includes only those commits that are ready to go into production.

Cool.

Oh, geez, that's right, I was going to look this over and I got distracted.

LGTM :shipit:


[DOCFIX] Remove ALLUXIO_RELEASED_VERSION from docs/_config.yml

Cherry-pick of existing commit.
orig-pr: Alluxio/alluxio#10831
orig-commit: Alluxio/alluxio@0d1813bb8f8e7d7fa0ec84d0aea6aa5af74ad681
orig-commit-author: Rico Chiu<EMAIL_ADDRESS>pr-link: Alluxio/alluxio#10839
change-id: cid-07fa69cbfa91d587664ac1732917fd57ed28bdce

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/7986/
Test FAILed.

jenkins, test this please

alluxio-bot, merge this please

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/7988/
Test FAILed.


Pipeline.RuffusLoggingFilter raises error when file paths exceed 85 characters

Ruffus tasks involving file paths > 85 characters are failing when running 'make'.
It seems that either ruffus's pipeline_printout() or StringIO.getValue() splits lines > 85 characters, meaning the string argument (ruffus_text) passed to RuffusLoggingFilter contains tab separations that are causing split_by_job to fail.
For example, the following task works fine:
@transform("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/dummy.gz",
           regex("(.+)/(.+).gz"),
           r"\1/\2_out.gz")
def shortTask(infile, outfile):
    pass

giving:
Job  = [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/dummy.gz -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/dummy_out.gz]

Whereas:
@transform("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/dummyfile.gz",
           regex("(.+)/(.+).gz"),
           r"\1/\2_out.gz")
def longTask(infile, outfile):
    pass

results in:
'              [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/dummyfile               .gz             ->               aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/dummyfile_               out.gz]'

causing the following error:
Traceback (most recent call last):
  File "/ifs/devel/projects/proj025/pipeline_p25.py", line 1753, in <module>
    sys.exit( P.main(sys.argv) )
  File "/ifs/devel/jethro/CGATPipelines/CGATPipelines/Pipeline.py", line 2468, in main
    exchange=options.rabbitmq_exchange)
  File "/ifs/devel/jethro/CGATPipelines/CGATPipelines/Pipeline.py", line 2115, in __init__
    for task_name, task_status, jobs in split_by_task(ruffus_text):
  File "/ifs/devel/jethro/CGATPipelines/CGATPipelines/Pipeline.py", line 2098, in split_by_task
    yield task_name, task_status, list(split_by_job(block))
  File "/ifs/devel/jethro/CGATPipelines/CGATPipelines/Pipeline.py", line 2073, in split_by_job
    raise AttributeError("could not parse '%s'" % line)

This issue can be fixed by prepending the regex in split_by_job() with \s*. However, I don't know if it's part of a wider problem

Thanks Jethro, that should be the only instance where this is a problem.
I will create a fix and pull request.

Please see #34, does it work?

Thanks Andreas - the above example (longTask) works fine on branch AH-FixForIssue33.

Thanks, closed!


PYPI package is missing a licence

The package on PyPi doesn't seem to have a license information.
This would be necessary for some automatic procurement tools that checks for this information to ensure that the package is open source,.

Pypi now shows a license, is that sufficient for you needs? :)