Globals definition for Browser, Node...

Describe the feature
Default config should include globals for browser, node etc to avoid errors like ESLint: 'setTimeout' is not defined.(no-undef).  or ESLint: 'process' is not defined.(no-undef)
Additional information

[X] Would you be willing to help implement this feature?
[ ] Could this feature be implemented as a module?

Final checks

[X] Read the contribution guide.
[X] Check existing discussions and issues.

Same issue here, when I use console.log and other browser-related globals I get 'console' is not defined.eslint[no-undef](https://eslint.org/docs/latest/rules/no-undef)
Managed to fix it using this config:
import withNuxt from './.nuxt/eslint.config.mjs';
import globals from 'globals';

export default withNuxt({
    rules: {
        'vue/html-self-closing': 'off',
        'nuxt/prefer-import-meta': 'off',
    },
    languageOptions: {
        globals: { ...Object.entries(globals.browser).reduce((acc, [key, value]) => ({ ...acc, [key.trim()]: value }), {}), ...Object.entries(globals.node).reduce((acc, [key, value]) => ({ ...acc, [key.trim()]: value }), {}) },
    },
});

Just using what is recommended in the Eslint doc gives an error:
import globals from "globals";
export default [
    {
        languageOptions: {
            globals: {
                ...globals.browser
            }
        }
    }
];

[Error - 7:57:16 AM] An unexpected error occurred:
[Error - 7:57:16 AM] Error: Key "languageOptions": Key "globals": Global "AudioWorkletGlobalScope " has leading or trailing whitespace.
    at ObjectSchema.validate (/Users/nicol/_Dev/apps/vet-app/front-end/node_modules/@humanwhocodes/object-schema/src/object-schema.js:287:23)
    at /Users/nicol/_Dev/apps/vet-app/front-end/node_modules/@humanwhocodes/object-schema/src/object-schema.js:239:18
    at Array.reduce (<anonymous>)
    at ObjectSchema.merge (/Users/nicol/_Dev/apps/vet-app/front-end/node_modules/@humanwhocodes/object-schema/src/object-schema.js:237:24)
    at /Users/nicol/_Dev/apps/vet-app/front-end/node_modules/@humanwhocodes/config-array/api.js:935:42
    at Array.reduce (<anonymous>)
    at FlatConfigArray.getConfig (/Users/nicol/_Dev/apps/vet-app/front-end/node_modules/@humanwhocodes/config-array/api.js:934:39)
    at FlatESLint.calculateConfigForFile (/Users/nicol/_Dev/apps/vet-app/front-end/node_modules/eslint/lib/eslint/flat-eslint.js:1091:24)
    at async FlatESLint.isPathIgnored (/Users/nicol/_Dev/apps/vet-app/front-end/node_modules/eslint/lib/eslint/flat-eslint.js:1113:24)
    at async FlatESLint.lintText (/Users/nicol/_Dev/apps/vet-app/front-end/node_modules/eslint/lib/eslint/flat-eslint.js:952:33)

Thanks, that works. I tried spreading ...gobals.browser but got the same error as you. Do you think this should be integrated into nuxt eslint?

Definitely, I think the point of the plugin is to have eslint "ready to use" for Nuxt!
I know we can suggest code change on Github but I have no idea how to do that, if anyone wants to add it, feel free to use the code I posted above!

@jeannen I doubt we want to spread the whole globals object, as it consists of a lot of specific globals like for example jQuery. I think node and browser are the ones we are interested in.

@jeannen Sorry, just realised your snipper is only spreading browser and node. Sorry ✌ .


Add XINDEX Exceptions for all current failures

Issue will be created for existing packages with the current problems.
Ensure that the /XINDEXException directory is created recursively
and that routines that start with "%" are captured properly.
Change-Id: I3f87abf81a3a0ed6fc88daa34f565a0e38998ded

With this latest update,  the CI task for XINDEX completely passes (https://dev.azure.com/osehra/OAT_test/_build/results?buildId=92).  Merging!


Fixes for IVerifyOptions warnings & socket port declaration

Fix(server.conf.ts): Add ternary function to check for valid PORT & SOCKET_PORT in config.json
Feat(config.example.ts): Add example of config for new implementation guidelines
Fix(passport.conf.ts): Change loginMessage & signupMessage to message to clear IVerifyOptions warning

Credit to @jimmythesaint82 (https://github.com/jimmythesaint82) for assistance in find for fix

Looks good guys @b3kN @jimmythesaint82 ! The only thing I am not going to keep is the example config object. The reason being is that if you generate the stack as intended with the CLI, the config object is generated and configured for you. Thanks again for the help!

In the end though, I decided to just leave the example config.json object. ;)


Upgrade from v4 to v10 fails on amplify push --force

Before opening, please confirm:

[X] I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
[X] I have searched for duplicate or closed issues.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

How did you install the Amplify CLI?
npm install -g @aws-amplify/cli
If applicable, what version of Node.js are you using?
v16.17.0
Amplify CLI Version
10.5.1
What operating system are you using?
Ubuntu
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
No
Amplify Categories
auth, storage, function, api, analytics, hosting, notifications
Amplify Commands
push
Describe the bug
I have an application in production, built and deployed 2 years ago with Amplify v4.21.1. I would like to upgrade it to the latest v10.5.1. I have followed some guide lines in upgrading but when I push it is failing. The CloudFormation stack events shows it is creating most of the functions but it fails on LogicID: APIGatewayAuthStack with Reason: Output 'ApiId' not found in stack 'arn:aws:cloudformation:us-east-1:*********:stack/amplify-trueedge-upgradedev-152256-apitrueEdgeTipSender-1TGQ1K4KPUIZ2/fa7ef070-6d14-11ed-ba09-0e838d9aecf1
Expected behavior
I expect it to deploy.
Reproduction steps
git check out the src for dev
create an environment to test changes
amplify env add
successful
push and migrate
amplify push --force
? Do you want to update code for your updated GraphQL API Yes
? Do you want to generate GraphQL statements (queries, mutations and subscription) based on your schema types?
This will overwrite your current graphql queries, mutations and subscriptions Yes
Proceeds to create resources. I follow it on the cloudformation stack in console. Fails when it gets to APIGatewayAuthStack.

GraphQL schema(s)

# Put schemas below this line

Project Identifier
Project Identifier: 6b057d3ed44286bcae9e76962f89929a
Log output

2022-11-25T23:08:24.991Z|error : Resource is not in the state stackUpdateComplete
DeploymentFault: Resource is not in the state stackUpdateComplete

Additional information
I see some files have been changed:
settings.json was added
team-provider-info.json was modified with the new env added.
cli-inputs.json added
The cloudformation templates for the lambda functions were updated with the latest runtime: nodejs16.x

Hey @apanagos :wave: thanks for raising this! Amplify CLI v4 was released quite a while ago and there have been many changes that could be a factor here. Part of these changes was the introduction of amplify migrate <category>, namely api. Can you try to migrate this resource with amplify migrate api?

Thanks @josefaidt
I had tried previously but it failed. I tried again to capture the error seen below.
amplify migrate api
A migration is needed to support latest updates on api resources.

Recommended to try in a non-production environment first. Run "amplify env add" to create or clone an environment.
Custom CloudFormation changes will NOT be preserved. Custom changes can be made with "amplify api override" after migration.

Learn more about this migration: https://docs.amplify.aws/cli/migration/override
Do you want to migrate api resource "trueEdgeData"? (Y/n) · yes

There was an error migrating your project.
auth configuration not present for trueEdgeData. Try amplify pull to sync your folder structure

I thought maybe it was an issue with the auth category, so I tried that (amplify migrate auth) but it started asking me questions as if it is setting it up again for the first time and then asked if I wanted to delete the existing user pool which I didn't.
Maybe I did something wrong there?

Hey @apanagos that does sound odd. Can you paste the output of the execution for migrate auth?

Hi @josefaidt , I looked at my history and it was amplify update auth NOT migrate auth.
Do you still want me to run run update auth?
 Perhaps there is a mismatch in feature flag configuration that is blocking the migration. Is access to the trueEdgeData api restricted?

Here is cli.json
{
  "features": {
    "graphqltransformer": {
      "addmissingownerfields": false,
      "improvepluralization": false,
      "validatetypenamereservedwords": true,
      "useexperimentalpipelinedtransformer": false,
      "enableiterativegsiupdates": false,
      "secondarykeyasgsi": false,
      "skipoverridemutationinputtypes": false,
      "transformerversion": 1,
      "suppressschemamigrationprompt": true,
      "securityenhancementnotification": true,
      "showfieldauthnotification": true,
      "usesubusernamefordefaultidentityclaim": true,
      "usefieldnameforprimarykeyconnectionfield": false,
      "enableautoindexquerynames": false,
      "respectprimarykeyattributesonconnectionfield": false,
      "shoulddeepmergedirectiveconfigdefaults": false,
      "populateownerfieldforstaticgroupauth": false,
      "securityEnhancementNotification": false,
      "showFieldAuthNotification": false
    },
    "frontend-ios": {
      "enablexcodeintegration": false
    },
    "auth": {
      "enablecaseinsensitivity": false,
      "useinclusiveterminology": false,
      "breakcirculardependency": false,
      "forcealiasattributes": false,
      "useenabledmfas": false
    },
    "codegen": {
      "useappsyncmodelgenplugin": false,
      "usedocsgeneratorplugin": false,
      "usetypesgeneratorplugin": false,
      "cleangeneratedmodelsdirectory": false,
      "retaincasestyle": false,
      "addtimestampfields": false,
      "handlelistnullabilitytransparently": false,
      "emitauthprovider": false,
      "generateindexrules": false,
      "enabledartnullsafety": false
    },
    "appsync": {
      "generategraphqlpermissions": false
    },
    "latestregionsupport": {
      "pinpoint": 0,
      "translate": 0,
      "transcribe": 0,
      "rekognition": 0,
      "textract": 0,
      "comprehend": 0
    },
    "project": {
      "overrides": true
    }
  },
  "debug": {
    "shareProjectConfig": true
  }
}

And trueEdgeData is restricted to user pool access. Is that what you are asking?
parameters.json
{
  "AppSyncApiName": "trueEdgeData",
  "DynamoDBBillingMode": "PAY_PER_REQUEST",
  "AuthCognitoUserPoolId": {
    "Fn::GetAtt": [
      "authtrueedge97d2517a",
      "Outputs.UserPoolId"
    ]
  }
}

Hi @josefaidt , have you had a chance to review my feedback? Thanks again so much for your assistance. If this is going to be an up hill battle what are other options I can look at? If I have to redo this with the latest Amplify CLI, then I am going to have to migrate production data for users (cognito), and dynamodb.

Additionally in amplify/backend/awscloudformation/build/api/<api-name>/build/<api-name>-cloudformation-template.json we should see an Outputs block with ApiId. Do you see this output in apitrueEdgeTipSender's CloudFormation template?

@josefaidt , thank you so much. I really appreciate your feedback. I am out sick for a couple of days but will circle back and try out your suggestions hopefully tomorrow.

Hi @josefaidt , sorry about the delay but I was having surgery and recovering. Anyway I tried some of your recommendations from above but had issues.
When I ran amplify update api it errored out.

That is with a "no" for "Do you want to migrate api resource "trueEdgeData"?
For root-cloudformation-stack.json I could not find that anywhere.
Then the following is my Outputs in the cloudformation template for trueEdgeData.
  "Outputs": {
    "RootUrl": {
      "Description": "Root URL of the API gateway",
      "Value": {
        "Fn::Join": [
          "",
          [
            "https://",
            {
              "Ref": "trueEdgeTipSender"
            },
            ".execute-api.",
            {
              "Ref": "AWS::Region"
            },
            ".amazonaws.com/",
            {
              "Fn::If": [
                "ShouldNotCreateEnvResources",
                "Prod",
                {
                  "Ref": "env"
                }
              ]
            }
          ]
        ]
      }
    },
    "ApiName": {
      "Description": "API Friendly name",
      "Value": "trueEdgeTipSender"
    }
  }

Hey @apanagos no worries! 🙂 And that is an interesting error. Would you mind sending us a zip archive of your amplify/ directory to<EMAIL_ADDRESS>

sure. will do.

Thanks @josefaidt , I emailed it.

Hey @apanagos it appears the zip archive was stripped from the email. Would you mind adding it to a file sharing service and emailing the link?

Sent it with a link to download

Hey @apanagos thanks for sending that over!! I was able to amplify init off your project into my own environment and find the issue, and a potential workaround. Previously I mistook this API for a REST API, however upon further inspection this is related to GraphQL API migration.
To mitigate the "no auth config..." issue for your GraphQL API, in amplify/backend-config.json can you attempt manually changing the following?
"trueEdgeData": {
      "service": "AppSync",
      "providerPlugin": "awscloudformation",
      "output": {
        "securityType": "AMAZON_COGNITO_USER_POOLS"
      }
    },

to:
"trueEdgeData": {
      "service": "AppSync",
      "providerPlugin": "awscloudformation",
      "output": {
        "authConfig": {
          "defaultAuthentication": {
            "authenticationType": "AMAZON_COGNITO_USER_POOLS",
            "userPoolConfig": {
              "userPoolId": "trueedge97d2517a"
            }
          },
          "additionalAuthenticationProviders": []
        }
      }
    },

From here I was able to successfully migrate the resource with amplify migrate api

Excellent!! Will try it out.

Hi @josefaidt , I tried above but migrate api failed. I wiped environment and created a new one and tried migrate but same error.
Here is init

and then migrate

Here is the change I made to amplify/backend/backend-config.json
		"trueEdgeData": {
			"service": "AppSync",
			"providerPlugin": "awscloudformation",
			"output": {
				"authConfig": {
					"defaultAuthentication": {
					  "authenticationType": "AMAZON_COGNITO_USER_POOLS",
					  "userPoolConfig": {
						"userPoolId": "trueedge97d2517a"
					  }
					},
					"additionalAuthenticationProviders": []
				  }
		  }
		},

I tried amplify pull for fun and it deleted all my functions :)

Hey @apanagos thanks for clarifying! Were you able to run amplify init with the latest version of the CLI? After modifying the backend-config.json and running amplify env checkout <current-env-name> does it change/modify the amplify/backend/amplify-meta.json file with the relevant info?
Additionally, would you be open to hopping on a quick call to debug? I'd like to help you get unblocked, and can be reached on our community Discord server. My username there is josef

Thanks @josefaidt , I am using Amplify 10.5.2,  when I did amplify init I added a new environment. I don't have a amplify/backend/amplify-meta.json. I do have an updated team-provider-info.json if that is what you mean?
I will look for you on Discord. I have the Amplify group there.

We also tried amplify pull and also there is no amplify-meta.json file inside amplify/backend/ folder.

Thanks @josefaidt for spending some time with me. Here is what we did to upgrade the amplify backend.
Pre setup.
Created a new branch with a copy of the development branch.
Upgrade amplify.
amplify update
Created a new Amplify environment to build out.
amplify init
Migrate
Migrate api
First thing we tackled was migrating the api (GraphQL)
amplify migrate api
Basically just answered yes and it migrated.

This migrated from using parameters files to using cli-inputs.json (amplify/backend/api/trueEdgeData/cli-inputs.json)
Update auth
Here we are upgrading the Auth.
amplify update auth
We confirm that we want to then when we come to the menu we control-c out of it. It has updated the config files.

Upgrade storage
Upgrade the storage
amplify update storage
Answer yes to perform and then control-c to exit when you get to the next menu. This will update files.

The following is a list of files changed so far.

Upgrade rest api
Upgrade the REST api.
amplify update api
Choose REST.
Then you will get a list of REST Api to update. Select one and enter. Then press control-c (or ESC works as well for me). This will modify the config.
Now run the command again and select another REST api and go through the same process until all the API have been completed.

After this you can see a bunch of files have been modified.

Push Changes to AWS
ok. Now you are ready to push your changes to AWS.
amplify push
It took a while but completed successfully creating all the backend resources.
Next Steps
Now that I have the backend upgraded for my new environment I have to work on the front end.
Upgrade package,json
Upgrade package,json packages which includes Amplify and React libraries as well as the additional libraries I used. Some are simple upgrades, some are major version changes which are probably breaking changes.
Merge and upgrade current environments
I will then have to merge all my changes into my DEV, QA and PROD branches and environments in order. I will need to backup everything before I attempt this as we have lots of active users.
To Be Continued
I will post those changes and any more challenges here for anyone that maybe interested.

Step by step going through front end components and upgrading. Making changes for "breaking" changes. Some major changes around amplify-react that required me to rewrite some of the authentication logic. A few amplify libs that are deprecated. Getting closer

Hi @josefaidt, so upgrades are progressing. I needed to set this up in a new account and I did the initial set.

Create a new organization
Add a new account to it.
Create IAM users with appropriate permissions.
Set up the user in my local AWS account
do amplify init with the new account
do a push with amplify push

The push failed. I tried several times, deleted the environment and started again. I then figured out the issue.
The error I was getting was that a function could not access the export of a DynmodbStream ARN.
I found that the other Functions were using a reference to an ID ifront of the GetAtt function but this function had harded a n id.
For instance I was seeing:
"Fn::ImportValue": {
                    "Fn::Sub": "2g5l666umbgbhhtqxmwdvq6yre:GetAtt:TipTable:StreamArn"
                  }

But the other functions had the following:
"Fn::ImportValue": {
                    "Fn::Sub": "${apitrueEdgeDataGraphQLAPIIdOutput}:GetAtt:TipTable:StreamArn"
                  }

So I changed this function and it was able to deploy correctly.
I assume that it was not converted correctly during the above steps to upgrade everything.
Now to continue with testing and upgrading.

Hey @apanagos :wave: just wanted to follow-up here and see how the migration was going aside from the speedbump noted in your last update?

Hi @josefaidt , Thanks for following up. would you believe we are still migrating?
We finally stood up the system in a new account as of yesterday. A lot of the issues have to do with upgrading from older dependencies from a couple of years ago.
With the newer version of React (18) and amplify and the other dependencies we ran into issues with dependencies specific to nodejs and not compatible with the browser. For instance, request (nodejs), would run in local but not build. We substituted with axios. Also we moved over to use vite for the react build.
We ended up rewriting the amplify Auth ui part as it depended alot on aws-amplify-react but that is deprecated to @aws-amplify/ui-react. So we wrote a wrapper class that basically does the same and keeps the state of the different Auth stages, sign in, forgot password, verify etc. All of our auth ui was custom.
We still need to migrate over from graphql v1 to v2 and that will be coming.
We upgraded our functions (Lambda) to use nodejs 16 and to migrate from aws-sdk v2 to aws-sdk v3.
To migrate functions (Lambda) that were using the older graphql api (AWSAppSyncClient etc), we built a lib to do the same using axios with signature.
The near term goal is to get this up and running with some new functionality for a new white label customer and then go back and upgrade the original system.
The adventure continues :)

Hey @apanagos thanks for the update! How are things going with the migration? Were you able to successfully promote the infrastructure changes to your production environment?

Hey thanks @josefaidt , we have everything up and running in a new account now successfully for a new customer. Changes now are just related to features. We still have to go back and apply all the changes to the current production system. When we do that we are going to have to back up everything and try that out on the dev first. I don't envision this happening for another month. If you keep this open I can add what I learn to this.

Hey @apanagos sure that sounds great! I'll add a pending-response label and circle back!

Hey @apanagos :wave: just wanted to follow-up here and see how things were going 🙂

Closing due to inactivity. @apanagos if you are still experiencing this or any issues arise from the migrations please don't hesitate to reach out!


TN-1163 removed u from test_procedure.py

Hello @John0Randolph! Thanks for submitting the PR.

In the file tests/test_procedure.py, following are the PEP8 issues :

Line 159:80: E501 line too long (159 > 79 characters)
Line 160:80: E501 line too long (135 > 79 characters)


Serve WASM w/ the correct encoding

minor apache setting but if you have any wasm asset in your repo then they aren't being served w/ the correct encoding which JS is strict about.
Should be like a 1 line fix on startup of the apache image im just not sure where it goes -- https://blog.toddlichty.com/serving-a-wasm-file-from-apache/
sudo echo "application/wasm wasm" >> /etc/mime.types should be about all thats needed but I wasnt able to get it to work in postinstall

Thanks @btopro -

Could you please describe how to detect (and thus test) this?
Is this also a problem with any of the nginx configs?

A more effective way to test this fix per the article might be to add a .ddev/web-build/Dockerfile with RUN echo "application/wasm wasm" >> /etc/mime.types in it, and see if that does the job.
In your test above you'd have needed to get apache to reload, probably a killall -HUP apache2 or something like that.

Oh, I see Debian buster already includes this in /etc/mime.types, so probably https://github.com/drud/ddev/pull/1983 will fix this. I think you could test it by (just) (temporarily) putting webimage: drud/ddev-webserver:20191126_debian_buster in your config.yaml.


Add installation instructions with cargo.

Thank you for your PR!
Also, didn't realize the whitespace was there in the code block. Thanks!


Add test that runs jar file

The Kotlin integration for calling the main class is a little bit tricky. We need a simple E2E test to ensure that this works, since you will only detect it when attempting to run the jar.

Integration works well now, no test for this needed.


Launch business site

Impacted tutorial: https://developers.sap.com/tutorials/spa-run-business-process-business-site.html
To launch a business site you need to create a site first:
https://help.sap.com/docs/build-work-zone-standard-edition/sap-build-work-zone-standard-edition/create-site
Assign roles to your site:
https://help.sap.com/docs/build-work-zone-standard-edition/sap-build-work-zone-standard-edition/assign-roles-to-your-site-7afe6706346844d9b9879997a0b9f350-109?q=assign role
In addition, for the user to see the content assigned to the site, the user must be assigned to the same role of the site.
Link to ticket:
https://itsm.services.sap/now/cwf/agent/record/x_sapda_devinc_development_incident/45dcd4aec3948e942f44578f0501318a

Hi @celineaudinsap :
Configure  SAP Build Workzone tutorial is used as reference in several tutorials, since creating a business site is common, can we remove the step of creating business site from the tutorial https://developers.sap.com/tutorials/spa-run-business-process-business-site.html and add it in https://developers.sap.com/tutorials/spa-configure-workzone.html .

updates done


Added LICENSE meta.

Hi @memowe
Please review the PR.
Many Thanks.
Best Regards,
Mohammad S Anwar

Thanks, @manwar - I was absolutely sure that you would jump in again at some point 😄


Node does not provide API to ".removeUIEvent()"

There is no public API to remove UI events after node.addUIEvent().
We need someting like node.removeUIEvent().

While I think that something like this is generally promoting a bad pattern, you should just toggle it in the handler vs touching the DOM to add and remove all of the time, I think that this is definitely a feature that has some uses.

DOMElement would react to onRemoveUIEvent by sending an UNSUBSCRIBE event. ElementCache would then no longer stopPropagation on that node. Should be trivial to fix. That being said we should think about what adding an UI event even means. Maybe components should only receive events that have previously been added to the node via addUIEvent (kind of like a filter).
@DnMllr Thoughts?

What's the best way to listen to mouseover event on a <div/>?
Is there a better way than using node. addUIEvent()?

node.addUIEvent('mouseover') is the best way to make that DOMElement listen to mouseover
I do think that we need removeUIEvent for completeness sake and I agree with @alexanderGugel about the potential implementation.
In regards to a filter, that isn't necessary or appropriate. If components react properly to onAddUIEvent messages then the only UIEvents coming into the system should be the ones that were added to the node. Given that, the node shouldn't start deciding which messages it will allow components to receive. It's always been an unopinionated forwarder of messages.

What's the status on this issue? It appears that @DnMllr made a suggestion, but curious if you found it sufficient/useful, @pilwon.
@michaelobriena @alexanderGugel

In #187 I introduced an UNSUBSCIBE command. If we want to add onRemoveUIEvent (I think we should), then it's just one method away. For the time being, I think this should stay open.

https://github.com/Famous/engine/blob/master/core/Node.js, in the above file i see onRemoveUIEvent

@anand-ma Thanks. This can be closed.


Add files via upload

My bad on not getting this done quickly, it was hard to mentally understand. Hopefully getting it to multithread makes up for it.

Y'all look over this, I think we can essentially do the same thing for the rest of the methods that can be parallelized if they need a value returned. I had to do some research on the Callable interface which allows you to return a value, unlike the Runnable interface. LMK if it's not great


[B] Redirect users if they land on a disabled ordering page

NGLP Team Publications has two orderings:

Series
Units (disabled)

If the user tries to land on the disabled unit ordering, it should redirect to the collection home page.
https://wdp-frontend-8lzxgucru-cast-iron.vercel.app/collections/J6QX5VK5TOVzceMPc0VJMTan7nEZVOq/browse/units
None of the collection or item navigations should show any disabled orderings.
@zdavis , if you have a few minutes try going to the disabled unit above. I'm going to double check that this won't result in an infinite loop.
Edit: Updated with a check to make sure the initial ordering isn't disabled

I didn't get an infinite loop, FWIW.


Cleanup NonWindowsGetDomainName()

PR Summary
Related #6874. After the PR we can remove the files - getfullyqualifiedname.cpp , getfullyqualifiedname.h, getcomputername.cpp, getcomputername.h - from psl.
Remove unused code.
PR Checklist

[x] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[x] Summarized changes
[x] Change is not breaking
[x] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[x] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[x] Not Applicable
OR
[ ] User-facing Documentation needed

[ ] Issue filed - Issue link:

Testing - New and feature

[ ] Not Applicable or can only be tested interactively
OR
[x] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

@lzybkr Thank you! We don't really have enough of your experience. I hope you'll have more time for this project.


Spevacus: Watch thetechheadlines.com

Spevacus requests the watch of the watch_keyword thetechheadlines\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

thetechheadlines\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Mast in Charcoal HQ


Do not set default namespace

Change Overview
Currently, it is not possible to delete objects that do not have a namespace, like VolumeSnapshotContent or PersistentVolume.
{"ActionSet":"staging-server-delete-nwvg6","File":"pkg/controller/controller.go","Function":"github.com/kanisterio/kanister/pkg/controller.(*Controller).runAction.func1","Line":438,"Phase":"deleteSnapshotContent","cluster_name":"684f75d4-1734-4ec3-84b2-a56c001e71cf","error":"the server could not find the requested resource","hostname":"kanister-kanister-operator-646cd44d8f-zdc77","level":"info","msg":"Failed to execute phase: v1alpha1.Phase{Name:\"deleteSnapshotContent\", State:\"pending\", Output:map[string]interface {}(nil)}:","time":"2022-02-14T14:28:36.055688239Z"}

My blueprint:
apiVersion: cr.kanister.io/v1alpha1
kind: Blueprint
metadata:
  name: staging-server
  namespace: kanister
actions:
  delete:
    phases:
      - func: KubeOps
        name: deleteSnapshotContent
        args:
          operation: delete
          objectReference:
            apiVersion: v1
            group: snapshot.storage.k8s.io
            resource: volumesnapshotcontents
            name: snapshot-content-test

This PR removes the setting of a default namespace, which allows these kind of operations.
Unfortunately, removing this default behaviour feels pretty dangerous, cause other users might already rely on that.
Thread in Slack: https://kanisterio.slack.com/archives/C85C8V22J/p1643919326058139
Pull request type
Please check the type of change your PR introduces:

[x] :construction: Work in Progress
[ ] :rainbow: Refactoring (no functional changes, no api changes)
[ ] :hamster: Trivial/Minor
[x] :bug: Bugfix
[ ] :sunflower: Feature
[ ] :world_map: Documentation
[ ] :robot: Test

Issues

n/a

Test Plan

[x] :muscle: Manual
[ ] :zap: Unit test
[ ] :green_heart: E2E

@muffl0n Sorry for the delay; we didn't forget about this PR 🙂. The team has been discussing about the scope and purpose of the KubeOps function. At this point, we decided not to extend it to delete cluster-scoped resources, to avoid KubeOps from being misused to delete other cluster-scoped resources not directly related to data protection.
Can you tell us more about what you are trying to accomplish? If it is just to delete volumesnapshotcontents, we are thinking of adding a new function, similar to the existing DeleteVolumeSnapshot function. Will that work for you?

No worries and thank you for your feedback!
In my blueprints, I mainly use VolumeSnapshots and heavily rely on the resources used in GCP like creating mysql backups with "gcloud sql backup".
As I also want to use the backup from one environment to do a restore in another (e.g. when doing a sync from prod to qa), I have to transfer the data to the other cluster/project.
To do this, I copy the actionset generated by the backup on the source cluster to the destination cluster. The actionset includes the handle of the snapshot, like this:
apiVersion: cr.kanister.io/v1alpha1
kind: ActionSet
...
status:
  actions:
  - artifacts:
      ...
      snapshot:
        keyValue:
          handle: projects/foo/global/snapshots/snapshot-c44e1dbc-fdee-498b-abb7-77b05ca00ad4
          name: sophora-server-storage-cluster-03-backup-cu6fuwee
          namespace: sophora

Now my restore just has to create the VolumeSnapshot (and VolumeSnapshotContent from above "handle") so that my StatefulSets can pick those as a datasource for their PVCs.
Long story short: As I have to create the VolumeSnapshotContent in the restore, I need to create (and delete!) resources that are non-namespaced. Hope this clarifies my needs.

Superseded by https://github.com/kanisterio/kanister/pull/1282.


Middleware: handle mender-update notification and queue if no client connected

Events passed from the Middleware to the handlers are now typed. The type Event now includes a boolean which indicates if the event should be queued until a client (App in our case) is available.
Handling for the mender-update notification is add, that is send by a shell script after the mender update commit finishes.
For testing:
# success case:
echo '{"version": 1, "topic": "mender-update", "payload": {"success": true}}' >> /tmp/middleware-notification.pipe

# failure case:
echo '{"version": 1, "topic": "mender-update", "payload": {"success": false}}' >> /tmp/middleware-notification.pipe

builds on top of #249, will rebase once this is merged

Rebased and removed sample.


[docs] Invalidate/Refresh Example

I was wondering if you have an example of how to invalidate and refresh a resource where the fetch data is in one component and the invalidate/refresh logic is in another component?
The two prime examples to this question is, less common but I feel like it's more complex to deal with, a search page where you have a form component that uses something like Formik, and when you submit and it comes back with a success, I need to refresh the datagrid component.
<div>
    <SearchForm />
    <SearchResultGrid />
</div>

More common, at least for me is, editing data on the screen via clicking a button that launches a dialog, and when the data has been updated, again using something like Formik, refresh the underlying data outside the dialog.
I would greatly appreciate your feedback on this. Thank you so much!

https://resthooks.io/docs/api/useInvalidator should work. If it does, I'm curious about feedback on how to make that more easily findable. It is only under api, and there's no guide, but not sure of a great example there. Perhaps your use-case will be a good example and you might provide a PR to add it to the guides section? :)

So in the example of a search form and grid, to invalidate, I will need to use the previous filter params when calling useInvalidator for the cache engine to know what key to invalidate correct? If so, how would the grid know to refresh based off of the new filters? Or am I completely off and it only uses the base url for caching? It's not immediately apparent to me which way it goes or how it fully works. On top of that, once we get to a point where the cache gets invalidated, the useResource hook should then make a new request automatically?

When you say 'previous filter' is this part of the network response? If you could provide some specifics about those apis it might help me understand the flow.
If you simply want to update the data without suspending again, you can useFetcher() instead

Previous Mindset:
Trying to get rid of Redux in favor of this library.
Potential Use Case Setup:
A search page that only has search criteria inputs, a search button, and a list of results below that. The search criteria and the results could be in separate components.
Potential Use Case:

Navigate to search page, and the user types in some criteria, hits the search button.
The list component should somehow see this result set.
User decides to search on something else, and the results should reflect the new response.

It is in this 3rd step that things get a little hazy for me. What params do you use for useInvalidator? Do you use the first request from step 1? If so, how does the list component know of these new changes? Hope this makes a little more sense. I very well could not be understanding the "proper" way to approach the library. This same approach above can also be related to the same paradigm of clicking a button on an element to edit something but it instead opens a dialog where you edit it and upon save need to refresh data. Both are valid use cases.

Let's say you have a list component that takes as a prop what the user is searching for. You can control that however you want, but when the prop changes you want different results.
import { useResource } from 'rest-hooks';

function ListComponent({ results }: { results: string }) {
  const list = useResource(MyResource.listShape(), { q: results } );
  //...
}

Setting the params of the useResource() will shape what url is hit (something like myurl.com/list?q=mysearch+string). Nothing special is needed - any changes to results props results in refetching and re-suspending of the component.

Did this work for you @johnsoncode ? I'm not 100% sure I understood what you're trying to do, so I hope this can be resolved :)

We can close it for now. I'll need to work at it more to know for sure if this works. Thank you for the help! Greatly appreciate it!


uvloop doesn't support Windows

Please provide us with the following information:

This issue is for a: (mark with an x)
- [x] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

pip install -r requirements-dev.txt

Any log messages given by the failure

RuntimeError: uvloop does not support Windows at the moment
[end of output]

Expected/desired behavior

requirements install

OS and Version?

Windows 11 Enterprise

Versions

Mention any other details that might be useful

Thanks! We'll be in touch soon.

This should now be fixed, tests are passing on Windows.


Statement does not exist in ABAPv755(or a parser error), "SELECT"(parser_error)

The following SELECT statement is valid:
CONSTANTS: lc_name1(5) TYPE c VALUE 'name1',
           lc_name2(5) TYPE c VALUE 'name2',
           lc_name3(5) TYPE c VALUE 'name3'.

SELECT vbeln, vbtyp,
 CASE
   WHEN auart = 'ZAMA' THEN @lc_name1
   WHEN auart = 'ZACR' THEN @lc_name2
  ELSE @lc_name3
END AS ernam
FROM vbak
 INTO @DATA(ls_vbak2).
ENDSELECT.

https://syntax.abaplint.org/?filter=select#/expression/SQLCase

@smardcode try again, 2.66.8

I am again a bit unsure: the previous issue was fixed, but the linter is complaining "Avoid use of ENDSELECT(avoid_use)".
I modified the statement: I added "UP TO 1 ROWS" and "WHERE vbtyp = 'C'". As far as I know, if we do not do a full qualified WHERE condition, we have to do the "SELECT UP TO 1 ROWS ENDSELECT". What do you mean? I can also open another issue, if you want me to.
CONSTANTS: lc_name1(5) TYPE c VALUE 'name1',
           lc_name2(5) TYPE c VALUE 'name2',
           lc_name3(5) TYPE c VALUE 'name3'.

ENDSELECT.

WRITE ls_vbak2.

I think
SELECT vbeln, vbtyp,
    CASE
    WHEN auart = 'ZAMA' THEN @lc_name1
    WHEN auart = 'ZACR' THEN @lc_name2
    ELSE @lc_name3
    END AS ernam
    FROM vbak
    UP TO 1 ROWS
    INTO @DATA(ls_vbak2)
    WHERE vbtyp = 'C'.
ENDSELECT.

can be rewritten as SELECT SINGLE, its a matter of code style, typically its a good idea to avoid SELECT ENDSELECT

I have added "ORDER BY" Statement. Then I cannot use "SELECT SINGLE" any more. Still the linter recommends avoiding "ENDSELECT" ... in combination with ORDER BY the "ENDSELECT" is a must.
CONSTANTS: lc_name1(5) TYPE c VALUE 'name1',
           lc_name2(5) TYPE c VALUE 'name2',
           lc_name3(5) TYPE c VALUE 'name3'.

ENDSELECT.

WRITE ls_vbak2.

You could alternatively just select into table:
CONSTANTS: lc_name1(5) TYPE c VALUE 'name1',
           lc_name2(5) TYPE c VALUE 'name2',
           lc_name3(5) TYPE c VALUE 'name3'.

IF sy-subrc = 0.
  DATA(ls_vbak) = lt_vbak[ 1 ].
ENDIF.
WRITE ls_vbak.

opening database cursors typically has a performance penalty, using ENDSELECT also creates nesting
and again, it can be rewritten as SELECT SINGLE, however its up to the user to decide their development best practice
SELECT SINGLE vbeln, vbtyp,
    CASE
    WHEN auart = 'ZAMA' THEN @lc_name1
    WHEN auart = 'ZACR' THEN @lc_name2
    ELSE @lc_name3
    END AS ernam
    FROM vbak
    INTO @DATA(ls_vbak)
    WHERE vbtyp = 'C'
    ORDER BY vbeln.
WRITE ls_vbak.

some developers like to use SELECT SINGLE only when specifying the full primary key, however there is no guarantee, so the next developer reading the code must check primary keys manually every time, so personally I prefer less code to read

Closing here now, as it is fixed. Opened #1751 for a new bug.


Fix rounding error in basket amount if a discount is applied in net mode

It is currently possible that the basket amount does not equal the sum of the basket items:

Furthermore, at least if Payone is used as the payment provider, the customer will not be able to complete his purchase because of this (they check if the sum of the items equals the basket amount).
The cause of this error lies in the getTaxesForUpdateArticle() function. Without this fix, it is possible that $netPrice and $grossPrice differ at the end of the getTaxesForUpdateArticle() function in net mode (13.22 vs 13.21 in this concrete case), which should not happen. By passing the exact same price for both $netPrice and $grossPrice to sGetPricegroupDiscount(), we can make sure that no rounding errors can occur.
I will follow up with the concrete article and customer details for which we encountered this problem.
The normal price of the 'Bordbuch für Motorflug' article in this example is 18.50 € (19% VAT included). Due to his customer group, the active customer gets a 15% discount.
So let's do the math. Shopware first calculates the net price without a discount:
18.5 / 1.19 = 15.546218487
This price gets rounded to 3 decimal places, so $netPrice = 15.546.
When we apply the 15% directly to this, we get the correct price:
15.546 * .85 = 13.2141
However, before this fix, 15.546 was rounded to 15.55, leading to the wrong price of 13.22:
15.55 * .85 = 13.2175

Hi @andrewisplinghoff, thanks for the PR.
I am currently digging into this issue.
Can you provide me the full configuration of the customergroup used in the screenshot?

@andrewisplinghoff is on holidays right now, but I can provide the info: The customgroup has no special config but through the pricegroup a discount of 15 % is granted. The shipping costs 13,90 € with tax. The customer is a company from the EU (with VAT Registration Number) and therefore can order without tax.

OK thanks. I am to reproduce it but we have to check for possible side effects.

Dear Contributor,
Thank you for your contribution to Shopware. We value your engagement.
Unfortunately we have to close all existing Pull Requests.
This is due to the new Shopware 5 Major Release and a restructuring of the branch names.
If your contribution is still relevant for Shopware 5, a new pull request is highly appreciated.
We are very sorry for this inconvenience.
Greetings from the Shopware Team.


why help sub command still uses readline in pd-ctl

Please answer these questions before submitting your issue. Thanks!

What did you do?

/ # ./pd-ctl help store
»

I just want to use help to see how to use the command.

What did you expect to see?

I think we should also use detach mode for help.

What did you see instead?

To my surprise, it enters the readline mode.

What version of PD are you using (pd-server -V)?

pd-ctl --version
Release Version: v3.0.0-beta.1-2-g56f4100
Git Commit Hash: 56f4100f9468c84bc52143e39dfafe4d17565889
Git Branch: master
UTC Build Time:  2019-03-29 09:04:23

pd-ctl only use detached mode when you use -d.  A more common approach seems to be using detached mode by default, and use ./pd-ctl -i to use interactive mode. Then this problem is resolved.


Support P1Az API Server

Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Description

Support the API server resource for P1Az
New or Affected Resource(s)

pingone_authorize_api_server

Potential Terraform Configuration

# Copy-paste your PingOne related Terraform configurations here - for large Terraform configs,
# please use a service like Dropbox and share a link to the ZIP file. For
# security, you can also encrypt the files using our GPG public key.

# Remember to replace any account/customer sensitive information in the configuration before submitting the issue

References

https://apidocs.pingidentity.com/pingone/platform/v1/api/#api-servers

Pending internal information - on hold for now


Blender 3.6 error

Thank you so much for taking over this project.
When attempting to install on a Mac.
1.0.1 or 1.0.2
Traceback (most recent call last):   File "/Applications/Blender.app/Contents/Resources/3.6/scripts/modules/addon_utils.py", line 333, in enable     mod = __import__(module_name)   File "/Users/{user}/Library/Application Support/Blender/3.6/scripts/addons/rhubarb_lipsync/__init__.py", line 34, in <module>     rhubarb_lipsync.blender.auto_load.init(__file__) AttributeError: partially initialized module 'rhubarb_lipsync' has no attribute 'blender' (most likely due to a circular import)
1.0.3 also gives an error regarding numpy installation

Thanks for trying this plugin on Mac. This really valuable. (My hope was Github-actions could cover all the platforms but I couldn't find the blender-as-module conda package for Mac).
Anyway the error you've attached is a generic exception meaning the plugin failed to register. There should be some more errors reported earlier before this one, but it might not be easy to find them as they. They might not be in the Blender scripting console. What might help is to run Blender from terminal Would you be able to try to locate the original error?

1.0.3 also gives an error regarding numpy installation.

That is strange. The plugin doesn't need numpy as far as I know.

Hi thanks for tagging in on this.  Yes the full error for 1.0.0 on Blender 3.6 is this:
Traceback (most recent call last):
  File "/Volumes/Megatron/Applications/Blender.app/Contents/Resources/3.6/scripts/modules/addon_utils.py", line 333, in enable
    mod = __import__(module_name)
  File "/Users/Ohms/Library/Application Support/Blender/3.6/scripts/addons/rhubarb_lipsync/__init__.py", line 34, in <module>
    rhubarb_lipsync.blender.auto_load.init(__file__)
AttributeError: partially initialized module 'rhubarb_lipsync' has no attribute 'blender' (most likely due to a circular import)

I'll run it from terminal and tag in with you.

Thanks for trying this out. Still that additional message is not useful and I was not able to reproduce the error. I tried:

Blender 3.6.7 on Linux. Plugin versions 1.0.1, 1.0.2, 1.0.3
Blender 3.4.1 on Mac 10.13 v 1.0.3 (can't run newer Blender on that os)

All works (to the point where the plugin registers).
I've used a simple script which grabs the plugin from github and runs a smoke test. Can you try the following please:
cd /Applications/Blender.app/Contents/MacOS
curl https://raw.githubusercontent.com/Premik/blender_rhubarb_lipsync_ng/master/scripts/adhoc-install.py -o adhoc-install.py
XDG_CONFIG_HOME=/tmp/blenderTemp ./Blender --background --python adhoc-install.py

This would download the 1.0.3 version and run Blender changing the user config folder temporally to /tmp making it fresh.
If all works you should see 2x{'FINISHED}' printed out to terminal:

Hi @impactcolor ,
If you are still around and provided you are still facing the same issue, the latest version has somehow improved logging and few bugs fixed..
And there is Troubleshooting guide with additional hints.


getLoginStatus is never completing

    const fbParams: FacebookInitParams = {
      appId: 'REDACTED',
      xfbml: true,
      version: 'v2.8'
    };
    this.fb.init(fbParams);

this.fb.getLoginStatus()
      .then((i) => {
        console.log(i);
      })
      .catch(e => {
        console.log(e);
      })

neither of the console logs ever fire. No errors in log

Thanks for reporting this. I will look into it soon.

Just tested out in the example project and it works fine.


Improve documentation for audit log rotation

What kind of request is this (question/bug/enhancement/feature request):
enhancement
Details
The documentation isn't clear on how to setup log rotation when the audit logs are set to stdout as it's destination on the sidecar.
https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-rancher/chart-options/#api-audit-log
The customer would like for it to clarify that stdout log rotation needs to be set in the Docker daemon in this case. This misunderstanding led them to believe that setting answers like maxAge, maxSize, etc would take effect on the logs which led to a full disk.

Close in favor of https://github.com/rancher/docs/issues/2105


Focus trap incorrectly finds tabbable elements

Summary:
The regex to determine focusable elements is not specific enough.
https://github.com/reactjs/react-modal/blob/v3.16.1/src/helpers/tabbable.js#L16
const tabbableNode = /input|select|textarea|button|object|iframe/;

In the world of web-components, it is very common to have these names be used in the element tag. Say I have an internal library or a library pulled from the community that is solely build with web-components. Unlike react, the web-component name shows as part of the DOM Tree.
<awesome-button>
  <button ...></button>
</awesome-button>

<awesome-input-field>
  <input ... />
</awesome-input-field>

The regex is matching both <awesome-button> and <button> as focusable. With this, the head and tail checks don't work correctly.
https://github.com/reactjs/react-modal/blob/v3.16.1/src/helpers/scopeTab.js#L32-L38
Steps to reproduce:
Created a codepen https://codepen.io/bouncehead13/pen/WNabvGY where focus does not stay trap.
The general problem is all with the regex matcher being too broad with its checks.

/input|select|textarea|button|object|iframe/.test('button') -- GOOD
/input|select|textarea|button|object|iframe/.test('awesome-button') -- Should not match, but does
/input|select|textarea|button|object|iframe/.test('input') -- GOOD
/input|select|textarea|button|object|iframe/.test('awesome-input-field') -- Should not match, but does

Expected behavior:
Only true focusable nodes are allowed.
Proposed solution:
Instead of the regex checking as 'contains', change it to enforce 'full word' matches
// bad, checks nodeName is anywhere
const tabbableNode = /input|select|textarea|button|object|iframe/;

// good, matches whole nodeName `/^(...)$/`
const tabbableNode = /^(input|select|textarea|button|object|iframe)$/;

Actually, in order to get it right on web components, there are a little bit more work to be done.
This will work for components that have this pattern, but maybe, form components are deep in the shadow dom tree.

@diasbruno From what I can tell, it’s working correctly with web components. The focusable element inside is found correctly. The core problem is finding too many elements, not all which are focusable.
Btw, web components is just an example. It can be any DOM node that can break react modal. The code pen provided shows just that, without web components.

https://codepen.io/diasbruno/pen/PoyqpWP I've made a few changes to your example and the trap works.
One thing I noticed, it should focus the first button, inside of the web component (WC :)),
but it's probably matching with the WC tag first. After that, it works ok...
Here is an idea, can you write a test case showing the expected behavior?

Correct, your code pen works because the node name is free of any "reserved" words. I tried to explain, albeit poorly, when opening the issue. It finds the web component tag first, then the button next. For that reason, a few things happen

head === activeElement will never match because <button> will never be index 0... so it begins focusing outside the modal content aka not trapping
head is not actually a focusable element so when tail === activeElement... [0].focus() will never work.

Here is an idea, can you write a test case showing the expected behavior?

If that is asking for a PR, sure I can open something up with a fix and some tests. To me it's just a regex change, but maybe there's something else that I'm missing.

This is actually the correct behavior. The first focus is on the modal's content div, so the screen reader can read the attributes associated with it. Than, it must cycle through the elements inside of the content's div.

The behavior is broken, but I'm just now realizing the exact cause. Only a web component without a shadow-root is the core problem. React modal does correctly skip the web component "root" and dives into the shadow root when a shadow root exist.
When no shadow root is given, both the component and what's inside are found as focusable elements... and everything mentioned above is the outcome of that with broken accessibility controls.
Original code-pen with a conflicting DOM Node:
https://codepen.io/bouncehead13/pen/WNabvGY
New code-pen with a conflicting web component node, but no shadow-root:
https://codepen.io/bouncehead13/pen/PoyqEEZ

:thinking: interesting. Can you point out any reference regarding this behavior?

So the code pens are based on a similar structure for an internal component library for my company, so no direct references I can point. In that library, a shadow root is not always used, which is definitely a thing in the web component space.
The suggested solution from the description should work, unless you see more edge cases. Happy to provide more examples or if you want to just talk through something.

Ohhhhh, i think I got it. But haven't seen any different behavior.
When I open the modal and ask for the document.activeElement, it says div.react...content.
When I hit the tab button, it goes and focus the right button on both cases.
https://github.com/reactjs/react-modal/blob/v3.16.1/src/helpers/tabbable.js#L83
Here we check if the element has a shadowRoot, if it has we go deeper on the component.
So, maybe a browser version issues or if you think you can make this fail, you can write a test against findTabbableDescendants.

@diasbruno I created a PR which outlines what I had in mind as a fix, along with tests and a new example page as well.
Let me know your thoughts!

I had this problem before in another project, it's the node version. Probably it's using the latest version.


Use Mica Alt as tab bar's backdrop instead of bare Mica

When using Mica as the terminal's background, there is no visual differentiation between the app's UI and the terminal content or SUI. This can be fixed by using MicaAlt in the tab bar, as tabbed Windows Explorer and Windows Notepad do.

When using Mica as the terminal's background, there is no visual differentiation between the app's UI and the terminal content or SUI.

In my opinion, there is a difference. Or did I misunderstand you? I don't know how to change the color of the settings tab.

So, this is an interesting scenario. We can only have one Mica surface for the entirety of the Terminal window, since we're using the DwnSetWindowAttribute version of mica. We can either get Mica or alt mica, but not both. I believe that Explorer is either using WinUI 3, or multiple XAML islands to try and achieve the combo effect, neither of which are really options for the Terminal window.
I think we're unfortunately just going to have to reject this request, for architectural reasons. We might be able to revisit if we ever move to WinUI 3, but that seems indefinitely far out for the time being.

@zadjii-msft If now it is impossible to use both Mica and Mica Alt, how about add an option to use Mica Alt only?

This should be reopened. The effect achieved in apps using Mica Alt like Explorer is not done by using both Mica and Mica Alt, but rather by laying a solid color brush (built in to WinUI 2 as LayerOnMicaBaseAltFillColorDefault which is SolidColorBrush #733A3A3A in dark mode) on top of just Mica Alt. Therefore there is no architectural issue in applying the Windows 11 design guidelines to Terminal in this case and using Mica Alt.
So a XAML Islands window with DwmSetWindowAttribute DWMWA_SYSTEMBACKDROP_TYPE DWMSBT_TABBEDWINDOW and a panel with the brush LayerOnMicaBaseAltFillColorDefault woud look like this:

And this provides the visual contrast requested in the issue.


TypeError in /clan/bco-2-l9yqlu00

Error in ClashLeaders
TypeError in /clan/bco-2-l9yqlu00
Cannot read property '__symbol@@0.2013265250911067' of undefined
View on Bugsnag
Stacktrace
https://www.clashleaders.com/static/js/vendors.8d68595a3daede5c357b.js:13 - s.Et.Ht.get [as __symbol@@0.2013265250911067]

View full stacktrace
Created automatically via Bugsnag

An error linked to this issue has been marked as fixed in Bugsnag
TypeError in /clan/bco-2-l9yqlu00


Potential discepancy in shred/materialize

Reading the spec carefully I see the following paragraph

One important thing to remember to understand the examples is that not every level of the tree needs a new definition or repetition level. Only repeated fields increment the repetition level, only non-required fields increment the definition level. As those levels are very small bounded values they can be encoded efficiently using a few bits.
Required fields are always defined and do not need a definition level. Non repeated fields do not need a repetition level.

This means that any path to a leaf node that has all path element as optional: false can only have a definition level of zero. (each definition level higher up needs an optional: true in the path)
However when I look at one of the materialize tests in parquetjs I see:
   var schema = new parquet.ParquetSchema({
      name: { type: 'UTF8' },
      stock: {
        repeated: true,
        fields: {
          quantity: { type: 'INT64', repeated: true },
          warehouse: { type: 'UTF8' },
        }
      },
      price: { type: 'DOUBLE' },
    });

  buffer.columnData[['stock',  'quantity']] = {
      dlevels: [2, 2, 2, 2, 0, 1],
      rlevels: [0, 1, 0, 2, 0, 0],
      values: [10, 20, 50, 75],
      count: 6
    };

Nothing in the path is optional, however many of the dlevels are non zero.     If I change the dlevels to all zeros then the quantity data is not populated in the results records.
Is it possible that there is a discrepancy in the implementation?

I think I got it.  Repeated is considered a Definition level in case it's empty.     So repeated is essentially always optional in a sense that it can be empty.


add new csv lookup and packaging methods; add script to repackage data

[x] design decisions

keep naming assembly assy_{identifier}.nc like it is now to disambiguate
call it identifier instead of name to better indicate the uniqueness and importance of it
pass a StimulusSet with .get_image (but not Assembly) to the packaging already to avoid magic column names
continue supporting arcname for the zip file
continue passing the assembly class as a string because passed DataArrays do not have to be complete
keep link from assembly to its corresponding stimulus_set in lookup
Instead of going by convention and automatically retrieving .zip and .csv I think it might be better to just have two rows for the same identifier (one zip, one csv). This way we can still store the sha1 hashes for both. We can infer the csv row as the one with an object class / by the file extension
we will not enforce a convention for BehavioralAssembly

[x] new packaging script
[x] re-write fetching methods
[x] re-write list methods
[x] re-package all existing data into temporary buckets
[x] unit test that conversion worked in temporary buckets
[ ] re-package all data into proper buckets
[ ] unit test that conversion worked in proper buckets

I will wait with merging brainio_contrib into this repository since there are ongoing pull requests.
Notes on deletions:

KnownFile -- no constraints on image uniqueness anymore

all unit tests pass now except this expected one:
E       AssertionError: assert 'https://brai...015_public.nc' == 'https://brai...015_public.nc'
E         - https://brainio-dicarlo.s3.amazonaws.com/assy_dicarlo_Majaj2015_public.nc
E         ?                 ^^^^^^^
E         + https://brainio-temp.s3.amazonaws.com/assy_dicarlo_Majaj2015_public.nc
E         ?                 ^^^^

jenkins error is jenkins-internal


Support for Typescript Generators

This adds support to pass a --ts argument to ionic g to generate typescript code instead of ES6.
Supported by driftyco/ionic#6008

Awesome, thanks for the PR!


Preview takes long to load

Preview takes long to load

it should be realtime

This is no longer the case


[ZEPPELIN-5983] Upgrade to NodeJS 16

What is this PR for?
This PR aims to upgrade the NodeJS from 12 to 16, in zeppelin-web and zeppelin-web-angular modules.
In this upgrade, I try my best to minimize the changes. NodeJS 12 is a pretty old one, and NodeJS 16(it was EOL recently too[1]) was chosen as a kind of balance because this project uses some pretty old versions of dependencies. e.g. it's recommended to upgrade to webpack 6 to work with NodeJS 18[2], but Zeppelin uses webpack 3
[1] https://endoflife.date/nodejs
[2] https://github.com/webpack/webpack/issues/14532
What type of PR is it?

Improvement

Todos
What is the Jira issue?
ZEPPELIN-5983
How should this be tested?
Pass CI, and manually test by randomly clicking the Web UI page to test the basic functionalities.
Screenshots (if appropriate)
The legacy UI

The new UI

Questions:

Does the license files need to update? No
Is there breaking changes for older versions? No
Does this needs documentation? Yes, updated

cc @jongyoul @Reamer @huage1994 @zjffdu


CUDA Scalar Mul

Exposes single function cpu_gpu_scalar_mul
impl<G: AffineCurve> GPUScalarMulSlice<G> for [G] {
    fn cpu_gpu_scalar_mul(
        &mut self,
        exps_h: &[<<G as AffineCurve>::ScalarField as PrimeField>::BigInt],
        cuda_group_size: usize,
        // size of the batch for cpu scalar mul
        cpu_chunk_size: usize,
    ) {
        if accel::Device::init() && cfg!(feature = "cuda") {
            <G as AffineCurve>::Projective::cpu_gpu_static_partition_run_kernel(
                self,
                exps_h,
                cuda_group_size,
                cpu_chunk_size,
            );
        } else {
            let mut exps_mut = exps_h.to_vec();
            cfg_chunks_mut!(self, cpu_chunk_size)
                .zip(cfg_chunks_mut!(exps_mut, cpu_chunk_size))
                .for_each(|(b, s)| {
                    b[..].batch_scalar_mul_in_place(&mut s[..], 4);
                });
        }
    }
}

TODO:

use timer!() to comply with no-std
Change accel not to print out CUDA shape launch info

TODO

Make lazy_static global profiling data kernel specific rather than global (instantiate for each curve, through macro, and include it as a static reference).
This has type lazy_static::lazy::Lazy<T>, in our case T = Mutex<(Vec<f64>, usize)>.

TO INVESTIGATE:
not sure if accel runs on windows, currently uses std::path::dirs::cache_dir(). Possibly could use this for logging profiling data if sufficiently platform agnostic. One should use the variable name to create a logging path.
Binary should call FnOnce for non-repeating initialisation everytime kernel is invoked. This checks for existing logs based upon kernel name, and initialises var based on cache. (alternatively, check if data = vec![]). Every time kernel ends, it also logs to same cache_dir.

accel itself depends on cuda-driver-sys, so we need to feature gate use of accel itself. We can do so by defining some dummy data types while maintaining the same interface.

The sad reality of compilation:
Compiling individual gpu kernel crates serially

I've just had the idea that the dynamic load balancing, instead of using Rayon and/or manually managing threadpools, an event-driven framework like actix could work much better, the event here being for instance GPU completing its job.
One ought to investigate if events can have different priorities.
Right now I think the thread blocks on GPU calls, and without manual threadpool management this will fail to extract efficiency.

I've just had the idea that the dynamic load balancing, instead of using Rayon and/or manually managing threadpools, an event-driven framework like actix could work much better, the event here being for instance GPU completing its job.
One ought to investigate if events can have different priorities.
Right now I think the thread blocks on GPU calls, and without manual threadpool management this will fail to extract efficiency.

I'm not sure how Cuda works within Rust but you can just use Cuda event queues, see my write up: https://github.com/mratsim/weave/issues/133

AFAIK Actix is an IO framework to optimize for latency and uses a budget system. But Zexe is a compute application and needs to optimize for throughput. The budget system will introduce unnecessary context switches that will hurt throughput.

Definition:
Throughput: The processing power of the whole work package
Latency: The wait time between a single task being submitted and being finished.
In particular, last in first out can be an excellent strategy for throughput because the last job in is likely to have relevant data hot in cache, but it's the absolute worst for latency.


made changes to UI of homepage of the website

Fixes Issue #20
Changes Made ?

Changed the theme of the website to dark purplish gradient as suggested
Updated the font of the form to 'sofia sans' to give a depth to the design part
Have provided the placeholder in input label for the user for ease purpose
Redesigned the button to matching theme

Screenshots

Great work, the dark theme really looks fascinating, you really did a great job, but i was like in the favor of creating a toggle between light mode and dark mode.

ok, can you accept this and assign me dark/light mode issue. I'll work upon it

ok, can you accept this and assign me dark/light mode issue. I'll work upon it

sure raise the issue there


GL Conflict Between this and CoFH Core

With both CoFH Core 3.0.0RC7 and OpenModsLib 0.6 installed, I receive the following error:
[22:41:54] [Client thread/ERROR]: ########## GL ERROR ##########
[22:41:54] [Client thread/ERROR]: @ Pre startup
[22:41:54] [Client thread/ERROR]: 1286: Invalid framebuffer operation
This causes nothing to draw on screen ever. This happens once when the Mojang logo is trying to be drawn, and then it gets spammed in the console when trying to draw the main menu.
Also reported here: https://github.com/CoFH/Feedback/issues/308

Hmm, can't reproduce with CoFHCore only . So it's probably yet another non-standard graphic drivers compatibility problem.
Anyway, you can disable OML functionality with OpenModsLibCore.json (activate_gl_capabilities_hook and activate_stencil_patches). Please try to see what happens when you disable those (just single one or both).

Yea, I couldn't reproduce with just CoFH Core or OML. So I figured it was a mod compatibility issue. I'll try disabling them and see what happens.

Oh, I meant I can't reproduce with CoFHCore + OML too. And, as I wrote in other CoFH issue, I'm most sure if CoFH code is even activating (though I tried to test that in dev and made sure it is called - still nothing).

This is what skyboy linked me last night in IRC, which is what they're doing. Not sure if it helps you or not, I don't OpenGL :P
https://github.com/CoFH/CoFHCore/blob/master/src/main/java/cofh/core/ProxyClient.java Line 114.

Already found it: https://github.com/CoFH/Feedback/issues/308#issuecomment-80949073. It that's all they are doing, then it's... weird.

Disabling either of the two that you told me to fixes the issue. Though with activate_stencil_patches enabled, this gets logged a dozen times:
[12:30:02] [Client thread/WARN] [OpenMods]: openmods.stencil.FramebufferHooks.createRenderbufferStorage(FramebufferHooks.java:24): Packet depth+stencil buffer not supported
Hope it somewhat helps.

This is normal, activate_gl_capabilities_hook is relatively harmless, but disabling it will prevent other part of code from discovering stencil buffer capabilities.
Also, can you crash you client (with F3+C)? There is some data in crashlog that might be helpful.

With everything enabled?

Hmm...it appears that that doesn't work from the main menu...but I did find this with all enabled:
[12:49:33] [Client thread/WARN] [OpenMods]: openmods.stencil.FramebufferHooks.createRenderbufferStorage(FramebufferHooks.java:22): Your potato failed to allocate nice buffer. No stencils for you. Cause: Invalid enum
...
[12:49:33] [Client thread/WARN] [OpenMods]: openmods.stencil.FramebufferHooks.createRenderbufferStorage(FramebufferHooks.java:22): Your potato failed to allocate nice buffer. No stencils for you. Cause: Invalid framebuffer operation

Ok, I did debugging mod: https://dl.dropboxusercontent.com/u/7088748/gltrace-1.0.jar. It will collect as much as it can and then die. Please run and post all logs (there will be quite a log of it).

Well this is interesting. The Mojang logo was able to be drawn with this mod installed. Also, love the Runtime Exception message :P
http://paste.ee/p/zSdtp

Well, it works differently because I derped and actually changed behaviour of one part of code. Anyway, got interesting results in there (bad call in CoFH Core, commented in parallel thread).
Also, update you computer :P Really, even my 7 years old potato supports GL30.

I would, but, you know, Apple. u.u
On Mar 15, 2015 7:02 PM, "Bartek Bok"<EMAIL_ADDRESS>wrote:

Well, it works differently because I derped and actually changed behaviour
of one part of code. Anyway, got interesting results in there (bad call in
CoFH Core, commented in parallel thread).
Also, update you computer :P Really, even my 7 years old potato supports
GL30.
—
Reply to this email directly or view it on GitHub
https://github.com/OpenMods/OpenModsLib/issues/43#issuecomment-81282382.

Ok, so it seems that all currently known bugs on CoFH side are fixed, but there is probably problem on my part too.
So rerun plz -> https://dl.dropboxusercontent.com/u/7088748/gltrace-1.1.jar (I removed that side effect, should give more info)

I self-compiled CoFH Core with their fixes, and this was the result from the new gltrace: http://paste.ee/r/EMAxL Also, without gltrace, the game runs just fine.
Just in case, I then downgraded back to the version I was using before and ran with the new gltrace: http://paste.ee/r/Mj9ba This time, the Mojang logo wasn't drawn.
Hope it helps. Also, I closed the CoFH Core issue because the original issue itself has been fixed. Technically, the whole reason I opened both of these issues has been fixed, but it'd be good to fix it completely I guess.

Trace seems OK with new CoFH. Thanks for your help.
Still unsure why without fix one operation is silently failing. I guess broken drivers.
Anyway, I still have to improve error checking in OpenModsLib before I can close this issue.


Small typo fixes in batch_norm-inl.h

Description
Small typo fixes in batch_norm-inl.h

Merged. Thanks for your contribution!


enhanded instructions, output, and post-query filtering fix for maps

Updates to two jupyter notebooks, from preparation for LOC staff learn-by-doing group

Thanks, @reliztrent !


[show_values]Wildcarded and relational value matching

It would be useful to support patterns:

? and * wildcard name matching
Value relation matching for e.g. >100K

Value relation matching is too complex and PITA to implement in ULP


Creating a secret

Userstory:
As a developer, I want to be able to create a new client secret so I can replace the expired secrets with secrets that still work.
Acceptance criteria:

[ ] The developer must be authenticated to be able to create a secret.
[ ] It must be possible to enter a description.
[ ] It must be possible to enter an expiration date.
[ ] The secret must be created by the application.
[ ] The secret must be correctly associated with the client.
[ ] The secret must be visible in the application.
[ ] The created secret must be shown to the user once.

@NvanWeeghel Technically I think there can be multiple active (ie. non-expired) secrets for the same client so this story isn't only to replace an expired secret with a new one. The same functionality can also be used to just generate an additional secret for the same client.

@NvanWeeghel I've also updated the title of this story to reflect that this is scoped to client secrets. IdentityServer also has the notion of API Resources which can also have associated secrets, but as far as I'm concerned this story only relates to client secrets. Perhaps we could reuse some of this for API Resource secrets as well, but we'll cross that bridge when we get there.


PROPOSAL: Remove org.interledger.Condition/Fulfilment and reintroduce java-crypto-conditions dependency.

I propose that we remove org.interledger.Condition/Fulfilment and reintroduce the java-crypto-conditions dependency.
The Condition and Fulfillment in the java-ilp-core class works great for ILP Universal mode, but causes confusion and conversion issues in ILP Atomic-mode scenarios. In atomic-mode, the local-ledger transfers use threshold conditions (among other things) to wrap Preimage conditions used in the ILP packet. The problem is, the two types are different between org.interledger.Fulfillment and org.interledger.cryptoconditions.Fulfillment, so validation is tricky because conversion needs to occur between the ILP Condition/Fulfillment and the crypto-condtions Condition/Fulfillment.
This problem becomes worse when trying to create a java variant of the Ledger Plugin Interface, because in order to support both ILP modes, the java-crypto-conditions versions need to be used. This will create more headaches for Java Connectors that want to operate in either Universal or Atomic modes.
Some ideas to solve this issue:

Option 1: Remove Condition/Fulfillment from java-ilp-core, and restore the dependency on java-crypto-condtions.
Option 2: Create a secondary project related to java-crypto-conditions that only contains base-code related to the Condition and Fulfillment. Then, both java-ilp-core and java-crypto-conditions could depend on this project, and implement their own flavor of PreimageSha256, but program interfaces to the main Condition/Fulfillment interfaces defined in the parent project.
Option 3: Something else?

I kind of prefer Option1, because the original rationale for removing the crypto-conditions dependency has now gone away: There is now a published SNAPSHOT of the crypto-conditions library that can be trivially included in java-ilp-core.
That said, I'm open to other ideas.

I'm supportive of this but suggest we consider merging the code or splitting out the codecs from core or something.
What if we think of the current Condition and Fulfillment in ilp-core as an alternative encoding of a subset of crypto-conditions? i.e. Always PREIMAGE-SHA-256, always cost of 32 and encoded in OER as just the hash and preimage.
If we do that we could have a standard condition interface that could be compliant with crypto-conditions and then 3 encodings:

Crypto-Conditions Binary encoding as defined in the crypto-conditions spec
Crypto-Conditions URI encoding as defined in the crypto-conditions spec
Interledger Universal mode encoding as currently implemented in ilp-core and defined in the ILP RFCs

This aligns with earlier discussions we have had about decoupling the encoding from the objects.
My proposal is along the lines of option 1 but maybe a little more extreme:

Re-add crypto-conditions as a dependency of ilp-core
Deprecate/delete org.interledger.Condition and org.interledger.Fulfillment
Update the existing codecs in ilp-core to marshal org.interledger.cryptoconditions.Condition and org.interledger.cryptoconditions.Fulfillment instead but encode/decode them as required for universal mode ILP.

If we do that we could have a standard condition interface that could be compliant with crypto-conditions and then 3 encodings...this aligns with earlier discussions we have had about decoupling the encoding from the objects.

I added a comment in #102, and I think my counter-proposal satisfies the encoding requirement (encoded in OER as just the hash and preimage) as well as the other 2 requirements (Always PREIMAGE-SHA-256, always cost of 32).
What do you think?

Fixed by #102


polybar with githubSupport fails because of missing curl header

Issue description
With githubSupport = true in packageOverrides, polybar fails to find curl/curlbuild.h, which I understand does not exist in recent versions of curl. See https://github.com/jaagr/polybar/issues/647, which deals with this.
Steps to reproduce
{
 # ...
  nixpkgs.config.packageOverrides = pkgs: {
    polybar = pkgs.polybar.override {
      i3GapsSupport = true;
      iwSupport = true;
      mpdSupport = true;
      # uncomment this
      # githubSupport = true;
    };
  };
 # ...
}

Technical details

System: (NixOS: nixos-version, Ubuntu/Fedora: lsb_release -a, ...)
Nix version: (run nix-env --version)
Nixpkgs version: (run nix-instantiate --eval '<nixpkgs>' -A lib.nixpkgsVersion)
Sandboxing enabled: (run grep build-use-sandbox /etc/nix/nix.conf)

I believe this issue can be closed.


Document best approach to programmatically cleanup the persisted data

Planning to use Azurelite for some unit tests, and need to wipe persisted data between some tests in reliable manner.
I'd like that documentation was explicit about resetting the state. I would just extend documentation somewhere after this example:
azurite -s -l c:\azurite -d c:\azurite\debug.log
E.g. something like this: "to cleanup persisted data, we recommend to kill the process, delete content of the directory specified by -l / --location parameter, and restart azurite" (note: I'm not sure if this is actually the best way, it's just a suggestion on delivery)

Added a section describe Azurite workspace structure in readme.md, will close this.


Syntax highlight multiline strings

Support syntax highlighting of """multi-line strings""".

fixed on master with #cc2842b

Fixed in 0.1.1

Great, thanks!


Document strategies for embedding double-quotes (") inside a string literal

There are two options:
Dim s As String
s = "This string has an embedded """ in it."
s = "This string has an embedded " & Chr(34) & " in it."

Good idea. You are welcome to fork this repository, create a branch off of master, make the addition to the appropriate topic, and create a pull request. We will be very happy to review it and merge if it is acceptable.


BERT model_inputs raises Sequence Length Warmup error

https://github.com/mosaicml/composer/blob/875c1edd5da1ba89a036a174838690bc3c9fb79a/composer/algorithms/seq_length_warmup/seq_length_warmup.py#L199
This line in the sequence length warmup code checks that model_inputs includes "labels" and throws an error if it doesn't. This check is perhaps unnecessary and currently produces an error when using BERTModel because "labels" is removed from its model_inputs during initialization.
Current implementations seem to be built around the huggingface transformer that BERTModel wraps, where the output depends on whether the input batch includes labels. It seems undesirable that the type of output from the huggingface transformer depends on the structure of the batch.
Issues like this may motivate moving away from huggingface transformer modules in favor of our own implementations.

This does seem extraneous as model_inputs['labels'] is not used anywhere.. @moinnadeem can you confirm?

Closing because this is long dead


Deployment with EditorWindow - Launch Path Incorrect

I'm deploying a single-region fleet through the Editor Window of the plugin and it (likely) fails because the fleet cannot be created due to the LaunchPathParameter being incorrect:
Resource handler returned message: "Launch path must begin with '/local/game'.
I can see in the parameters tab in Cloudformation that the LaunchPathParameter is set to 'C:\game\serv.x86_64'. This is my configuration in the Editor Window:

Any ideas for temporary solutions? Also, if this is something that needs work, I'd be happy to help :)

Hello thank you for reaching out! I see that the "Build Operating System" is set to AL2. Have you tried setting it to Windows?

Hello. After further investigation, there does seem to be a bug with the plugin when creating a fleet with an Amazon Linux 2 (AL2) Build Operating System.
The DeploymentFormatter class always creates a GetServerGamePath formatted for a Windows Build Operating System.
https://github.com/aws/amazon-gamelift-plugin-unity/blob/f5241d697d2d827a55afc3dacc4b0a6ae514741c/Runtime/Core/DeploymentManagement/DeploymentFormatter.cs#L18
The fix would be to modify DeploymentFormatter to accept the BuildOperatingSystem as an argument and use the /local/game/{gameFilePathInBuild} format when BuildOperatingSystem is AMAZON_LINUX_2.
https://github.com/aws/amazon-gamelift-plugin-unity/blob/f5241d697d2d827a55afc3dacc4b0a6ae514741c/Editor/Deployment/DeploymentSettings.cs#L466
The Amazon GameLift team will fix this issue as part of our next release. GameLift does not have a timeline for the next release, so you can unblock your development in the meantime by modifying the plugin's code yourself.

Hello! The newest release, version 3.0.0, includes a fix for this bug, so I'm closing out this issue.
Pull request containing the fix: https://github.com/aws/amazon-gamelift-plugin-unity/pull/261


corelib/symbol_arbitrary_string_test

Also corelib/symbol_reserved_word_test, probably the same verification code.

Note the possible overlap between this issue and https://github.com/dart-lang/sdk/issues/46209.


Missing dist/ directory when building solid.js

Currently when running npm run build, the process fails with:
browserify -r ./index.js:solid --exclude 'xhr2' --exclude 'rdflib' > dist/solid.js
sh: dist/solid.js: No such file or directory

Fixing..

Fix merged, closing.


Add optimized code paths for drop_duplicates

While working on a RAPIDS workflow requiring a high-cardinality drop_duplicates operation, I discovered that _Frame.drop_duplicates only supports the ACA algorithm (which is only performant when split_out == 1).
This PR introduces the shuffle argument to drop_duplicates.  It also takes advantage of known divisions for Index.drop_duplicates, and avoids shuffling any data at all for the special case that we are calling Index.drop_duplicates and Index.known_divisions is True.
NOTE: This PR does not address https://github.com/dask/dask/issues/10374, because such an algorithm would not be more performant for the particular workflow I have in mind. However, I do think there are real use cases that would benefit from that optimization as well.

In principle this approach makes sense to me, and I suspect that it will be more robust generally.  If we can make shuffles more robustly performant to small partition sizes I'd be ok making this the default.

@rjzamora can I ask you to say more about this PR about what defaults should be?  Should we set default to this and remove the repartition step?  What would you recommend users experience if they don't know enough to find this algorithm?

Or, asking for a bit more, if you think that this is the right solution, can I ask you to add it to dask-expr, not as another optional algorithm (I'm currently feeling kinda done with those) but as the full solution?

Good question @mrocklin - My current take is that it probably doesn't make sense to reduce down to a single partitions by default.  Therefore, it probably does make sense to use a shuffle-based approach with a split_out=True default (meaning we preserve partition count).
Possible reasons to hesitate:

I only have anecdotal evidence to support the assumption that drop_duplicates rarely drops a large fraction of the data
The result of a shuffle-based approach will feel less consistent with the behavior of pandas, because the original ordering of rows will not be preserved. I doubt this matters to most large-data users, but the result of ddf.drop_duplicates().compute() may appear strange to some people.

can I ask you to add it to dask-expr

Should work right now with ddf.drop_duplicates(split_out=True).compute()  (https://github.com/dask-contrib/dask-expr/pull/351).

not as another optional algorithm (I'm currently feeling kinda done with those)

Yeah, dask-expr simplifies things a bit by just using a shuffle for split_out>1 and a tree reduction for split_out=1 for all "reductions".

I only have anecdotal evidence to support the assumption that drop_duplicates rarely drops a large fraction of the data

I know that @fjetter has been keen to get folks thinking about using benchmarks and AB tests to help make these decisions.  Maybe this is something you'd be interested in learning more about?  Anyone on our team can help walk you through this process.

Should work right now with ddf.drop_duplicates(split_out=True).compute() (https://github.com/dask-contrib/dask-expr/pull/351).

Oh awesome, so I guess my question is really "should we swap the default"


Fix pytest warning about [pytest] in setup.cfg

From the changelog of pytest v. 3.0.0

[pytest] sections in setup.cfg files should now be named [tool:pytest] to avoid conflicts with other distutils commands (see #567). [pytest] sections in pytest.ini or tox.ini files are supported and unchanged.

Coverage remained the same at 78.033% when pulling d19dc0ccb1b6ccdcf05dc4ab77f49d1b7b3a3257 on dethi:fix/pytest-warning into 18ae7998c24d02b91f4fd62971cf4e69c8b340a2 on Toblerity:master.

Thanks @dethi!


InvalidProtocolBuffer truncatedMessage

What's the problem? How can I solve it?

I think your server sends bad protocol buffers data.


Release ruby-yasm 0.3.0

Release version 0.3.0

Done. https://rubygems.org/gems/ruby-yasm/versions/0.3.0


fix: Display empty swap page when swaps are empty

Corrected bug where the page of No swaps here. Let's fill it up was not being displayed for empty swaps lists.
Changed the tokensList.lenght === 0 to use the new data instead
closes #358

Nice catch bro ! LG =)