[BUG] Standard user with project owner permissions can see namespaces not in projects

Describe the bug

When you create a standard user with project owner permissions to a new project they can see harvester-public in the namespaces, although they don't have write access to it.
To Reproduce
Steps to reproduce the behavior:

Install Harvester via ipxe-examples
Install Rancher v2.6.6 via Docker
import Harvester into Rancher
Create new project via admin user in imported Harvester
Create new namespace in project
Create new standeard user
Assign new user to project as project owner
Log in as new standard user
Navigate to Harvester dashboard via virtualization management in Rancher
Create a new image
Check in projects which namespaces and projects that user has access to.

Expected behavior

User should only be abl,e to see projects and namespaces that they have access to.
Support bundle
supportbundle_2bab88e4-c449-4ef7-9c7a-b96e177c9714_2022-07-06T19-17-31Z.zip
Environment

Harvester ISO version: master-a926a44e-head
Rancher version: v2.6.6
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): ipxe vagrant setup with 3 nodes

Additional context
Add any other context about the problem here.
I had to change the ui-index for Rancher v2.6.6 to https://releases.rancher.com/harvester-ui/dashboard/latest/index.html in order to get the projects tab to show up on the Harvester dashboard through Rancher virtualization.
It looks like the standard user shows they have access to harvester-public. It looks like this is because it isn't in a project. However the user can't create any resources in that namespace. This is an issue though because in this case the harvester-public namespace is alphabetically higher in the list so it's what all new requests default to unless you change them. I'm closing this issue since that issue is out of scope

harvestre-public can be seen because we add special rbac to make it readable for all authenticated users
https://github.com/harvester/harvester/blob/0f5907575a3ef486a89e2d1f6dd60912feb613b2/pkg/data/public.go#L14
https://github.com/harvester/harvester/blob/0f5907575a3ef486a89e2d1f6dd60912feb613b2/pkg/data/rbac.go#L9
Other not in project namespaces will not be seen.
Users can select public images and network in the harvester-public namespace when they are creating vms

We will make enhancements in this issue，  https://github.com/harvester/harvester/issues/1986 ， So I think we can close this issue.  @noahgildersleeve

Tested with harvester v1.1.1 and Rancher v2.7.0. Verified that standard user with project permissions could only see
Verification Steps

Install Harvester via ipxe-examples

Install Rancher v2.6.6 via Docker

import Harvester into Rancher

Create new project via admin user in imported Harvester

Create new namespace in project

Create new standard user

Assign new user to project as project owner

Create a new namespace in the not in a project section

Log in as new standard user

Navigate to Harvester dashboard via virtualization management in Rancher

Create a new image

Check in projects which namespaces and projects that user has access to.

Expected Results

You should see the test project and harvester-public, but not the other namespace in no project


Using ticket instead of capabilities when sending a /submit request (specifying printer tray)

I'm trying to specify the printer tray to use when using Google Cloud Print. My assumption is that I have to submit a ticket when creating the /send request.
It says at https://developers.google.com/cloud-print/docs/appInterfaces#submit that you're supposed to use ticket instead of capabilities. But, the code in this project uses capabilities, and it works.
I've tried to make an overload of public CloudPrintJob PrintDocument that takes a ticket as a parameter. I replaced the line that adds capabilities with this:
p.Parameters.Add( new PostDataParam { Name = "ticket", Value = ticketContent, Type = PostDataParamType.Field } );
I've tried various values for ticketContent, and printing never occurs. One value I've tried is:
ticketContent = "{"version": "1.0","print": {}}";
I used this because it looks like the ticket submitted when you use the Job Submit API at https://www.google.com/cloudprint/simulate.html. I am able to get printing to work when I've used this web page. I've also tried the ticket returned after using the Job ID from the Submit API in the Job Fetch API on the simulate page. No luck. I don't see any errors, but no print job is created.
So, first, is it possible to include a ticket? And, if a ticket can be submitted, how would it be done?

I fixed the printing problem, I was not setting the contentType in the overload.
Now I need to know if I can create a ticket that can select a printer tray.

Hi, and sorry for the late reply. I've been extremely busy with work.
This is uncharted territory for me, sadly. I hope you take the time to make a pull request if you do find the solution!


Add commit message to PR body

Closes https://github.com/DeterminateSystems/update-flake-lock/issues/1.

See https://github.com/cole-h/update-flake-lock-test/pull/4 for an example of what this looks like.


Switch to int_date for acceptance test

Pull Request (PR) description
Randomized_Requests has problems to be installed in newer versions
thus lets just switch to a different pip which includes a underscore.
This Pull Request (PR) fixes the following issues
See https://github.com/voxpupuli/puppet-python/pull/516#issuecomment-558526596

thanks!


[Feat]:  Auto Commenting feature for PR Raised

Is your feature request related to a problem? Please describe.
This feature is designed to solve the issue of delayed and inconsistent communication after pull requests (PRs) are raised. By automatically adding comments to PRs as soon as they are raised, it ensures that contributors receive immediate feedback and acknowledgment for their efforts. This helps to create a positive and supportive environment for collaboration, which in turn encourages ongoing participation and engagement from contributors.n and engagement from contributors.
Describe the solution you'd like.
No response
Describe alternatives you've considered.
No response
Additional context.
No response
Show us the magic with screenshots
No response
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I want to work on this issue. (optional)

this feature already exists


Help! Deploying pre-built API

I have been struggling to get a static web app deployed that needs a private github repo while building the API.
I'm using a dotnet 6.0 stack -- blazor front end and functions dotnet:6.0 backend.
After a lot of internet searching, I finally stumbled upon someone suggesting that I use separate code to build the pieces and then use the skip flags.
However, I must be missing something...because when it gets to the api piece in the static-web-apps-deploy action, I get a message that Oryx "Cannot deploy to the function app because Function Language info isn't provided".
I read in the documentation here (https://docs.microsoft.com/en-us/azure/static-web-apps/build-configuration?tabs=github-actions#skip-building-the-api) that I should set the platform language in the web apps config file,
So, I added
"platform": {
        "apiRuntime": "dotnet:6.0"
    }

to the staticwebapp.config.json file in my clientapp (which I'm also pre-building because of confusion with an existing package.json file).
Can someone please help me figure out what I'm missing?
Here's the gist of my action yml file.
name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Setup .NET 6
        uses: actions/setup-dotnet@v2
        with:
          dotnet-version: '6.0.x'
          source-url: https://nuget.pkg.github.com/<repo>/index.json
        env:
          NUGET_AUTH_TOKEN: ${{ secrets.PACKAGE_PAT }}
      - name: .NET restore Api
        run:  |
          dotnet restore <ApiApp>
          dotnet restore <ClientApp>
      - name: .NET publish client
        run: dotnet publish --no-restore <ClientApp> -c Release -o blazor
      - name: .Net build API
        run: dotnet build --no-restore <ApiApp> -c Release
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_POLITE_ISLAND_0295B050F }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "blazor/wwwroot" # App source code path
          api_location: "<ApiApp-RootFolder>" # Api source code path - optional
          output_location: "" # Built app content directory - optional
          skip_api_build: true
          skip_app_build: true

I don't know what else to try.  Can someone please share some insight as to what I'm missing?
Is it not finding the static web app config file?  All of this started from the "simple" complication of trying to build using a private github nuget repo, so if there's another solution for that, I'm open also!
As an addendum: If I put a location for api_location that doesn't exist, it does deploy the frontend of my app, but no functions are deployed...but it at least lets me know that my UI deploys successfully.  So, the root of my question appears to be how to get a pre-built API code to successfully deploy with the static web apps deploy action step.
Thanks for any help.

Is your repo public? I don’t think there’s enough info here to troubleshoot.

No, sorry, it's not a public repo.  It's one that's internal to my company.  I can do my best to provide whatever might be helpful, though.  I have tried so many things!  This morning, I realized that maybe because I was building the frontend myself, it wasn't properly seeing the staticwebapp.config.json file. When it deployed the frontend without the backend, I did notice that my rewrite for Login didn't seem to be working.  So I added that file to the output directory on build.  However that doesn't really change anything.
I still wonder if it's not properly locating my config because when it's deployed without any functions, my redirect to login (for .auth/login/aad) doesn't work.  And since it is complaining about not knowing the language for deploying the API -- which is also in that config file -- maybe it can't find it. ??
So if I build the frontend myself, is there anything special I need to do to make sure the swa deployment action knows where my staticwebapp.config.json file is?

Azure Swa scans for staticwebapp.config.json under the directory of app_location. In this case blazor/wwwroot didn't contain required config, so it failed. Also, api_location should be full path like - Api/bin/Release/net6.0.

@tkamesh  Thank you!  I had actually tried to do both of those things.  But as things go, I had a bug/typo in my MSBuild step that copied the config file to the published directory.  And when changing the location of the Api didn't do anything, I may have changed it back while attempting to find the magic combination, so I guess I didn't have both changes going at the same time.
I think the only thing I would suggest coming out of this escapade is that the documentation  here (https://docs.microsoft.com/en-us/azure/static-web-apps/build-configuration?tabs=github-actions#skip-building-front-end-app) should mention adding the step to make sure the config file is copied to the output directory.  I don't know about other platforms, but I know the github template for the blazor app doesn't have that.
But the rest of this was a bit of user error and this issue can be closed if it the documentation request isn't in the right spot.
Thanks for helping me out!

@egeyer Thank you for the callout! We're glad you could resolve your issue, and will work soon on updating the doc! :)

I actually have an Angular 14.x and here's the yaml.  I get the exact same error.  Any idea what to do to fix that ?
Cannot deploy to the function app because Function Language info isn't provided
# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
trigger:
- master
pool:
  vmImage: ubuntu-latest
steps:
- task: NodeTool@0
  inputs:
    versionSpec: '14.x'
  displayName: 'Install Node.js'
- script:
    npm install -g @angular/cli
    npm cache clean
    npm install --loglevel=error
    ng build
  displayName: 'npm install and build'
- task: AzureStaticWebApp@0
  inputs:
      app_location: "/"
      api_location: "api"
      output_location: "dist/cubiShippingDashboard"
      skip_api_build: true

      # Documentation
      # ----------------------------------
      # app_location is the root location of the source code to be deployed. This setting will typically be / or the location of the JavaScript and HTML for your project.
      # output_location is the name of the folder created by any build process from a bundler such as webpack. This folder both needs to be created by the build process, and a subdirectory under the app_location
      #
      # https://learn.microsoft.com/en-us/answers/questions/667159/deploying-nextjs-app-to-azure-static-web-app-fails.html
      # https://learn.microsoft.com/en-us/azure/static-web-apps/faq
      # https://learn.microsoft.com/en-us/azure/static-web-apps/troubleshooting
      # https://learn.microsoft.com/en-us/azure/static-web-apps/local-development (Emulator in VS Code)
      # https://azure.github.io/static-web-apps-cli/docs/cli/swa-deploy/ (Pas essayé mais c'est tentant)
      # https://github.com/Azure/static-web-apps/issues/73
      # https://github.com/microsoft/Oryx/issues/1703 (Magie, une nouvelle étape de franchie)
      # https://learn.microsoft.com/en-us/azure/static-web-apps/build-configuration?tabs=github-actions#skip-building-front-end-app
  env:
      continueOnError: true
      CUSTOM_BUILD_COMMAND: "npm install --unsafe-perm --loglevel=error"
      azure_static_web_apps_api_token: $(deployment_token)

Azure Swa scans for staticwebapp.config.json under the directory of app_location. In this case blazor/wwwroot didn't contain required config, so it failed. Also, api_location should be full path like - Api/bin/Release/net6.0.
A simple solution could be moving staticwebapp.config.json to Client/wwwroot directory and updating api_location. Hope that helps.

Hey @GearTheWorld,
Did you try this solution? Would you please help us understand if it worked for you or not?

Azure Swa scans for staticwebapp.config.json under the directory of app_location. In this case blazor/wwwroot didn't contain required config, so it failed. Also, api_location should be full path like - Api/bin/Release/net6.0.
A simple solution could be moving staticwebapp.config.json to Client/wwwroot directory and updating api_location. Hope that helps.

Hey @GearTheWorld, Did you try this solution? Would you please help us understand if it worked for you or not?

I followed this idea and it solved one of the problems that was hiding errors from me. Can't tell why but it did. Référence : microsoft/Oryx#1703
Then a couple of errors surfaced about lowercase used on uppercase filename and since Visual Studio Code on Windows platform doesn't care about it and run perfectly, in Azure with ubuntu, it doesn't work well so I fixed the code that tries to use lowercase filename for the uppercase one and everything started to work.

I see, thanks for letting us know! If you have suggestions on how we can improve Static Web Apps, we're all ears! Have a great 2023!

Does SWA deploy from Visual Studio Code the same way the pipeline does with the script ?

Ran into this issue when trying to deploy an app with an /api folder from the SWA CLI. The SWA CLI needs to know which language version to deploy, and it can't know that just from the Azure Functions files. It gets this from the staticwebapp.config.json file instead. Adding a staticwebapp.config.json file in my app_location directory solved it:
{
    "platform": {
        "apiRuntime": "node:16"
    }
}


Character Rig Beta issues

Rig:
Right arm finger missing functionality
Subdivision property for face and body parts
Better rework rig panel, current unfinished.
Mesh:
Head weight paint
Head UV map
Mouth Black inside add
Finger 3 Right shapekey

Rig: Right arm finger missing functionality Subdivision property for face and body parts Better rework rig panel, current unfinished.
Mesh: Head weight paint Head UV map Mouth Black inside add Finger 3 Right shapekey
Done.

Rig:
Leg bone shape. Readjust boneshape in general.
Adjust attachment empties can switch to another arm.
Add an extra set of attachment empties?
Mesh:
Accessories - Armor, Elytra. (going to strip MCprep armor for that)

Rig: Leg bone shape. Readjust boneshape in general. Adjust attachment empties can switch to another arm. Add an extra set of attachment empties?
Mesh: Accessories - Armor, Elytra. (going to strip MCprep armor for that)

Finished boneshape.


Reported metrics 'tail' actual usage

The metrics are provided on an exponentially weighted moving average (EWMA). This means that the actual bandwidth in use has a small lag period (5s) and has a tail that is detectable when looking at the raw numbers. If graphed with a properly scaling axis this information would be lost in the noise and undetectable to a human. When reported as raw numbers it appears as though data is being sent when it isn't due to how the EWMA algorithm works.
Displaying the data in graph format instead of raw numbers will present the data in the best way.

this was resolved with the latest c sdk and "INSTANT" metrics here


Add toggle for global symbol search

This adds a setting to disable global symbol search:
  "codeIntel.globalSymbolSearch": false

Defaults to true (the current behavior).
See https://sourcegraph.slack.com/archives/C08JA8Q1H/p1563496178024000?thread_ts=1563233415.015100&cid=C08JA8Q1H

Codecov Report

Merging #123 into master will decrease coverage by 0.53%.
The diff coverage is 16.66%.

@@            Coverage Diff             @@
##           master     #123      +/-   ##
==========================================
- Coverage   41.86%   41.32%   -0.54%
==========================================
  Files           4        4
  Lines         387      392       +5
  Branches      121      124       +3
==========================================
  Hits          162      162
- Misses        225      230       +5

Impacted Files
Coverage Δ

package/src/handler.ts
46.75% <16.66%> (-0.78%)
:arrow_down:

Continue to review full report at Codecov.

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


Notifications Authorization item

Hey,
I have a question regarding asking user for notification authorization.
I have been using BulletinBoard for onboarding and it is awesome! Now there I would also like to include notifications authorization but I cannot find the way how to apply it to BLTNPageItem. What I mean is that UNUserNotificationCenter has its own requestAuthorization method and I wonder, is it possible to 'customize' the request window, so I can use BulletinBoard like on the image in the documentation?

Hey! There is no way to change the interface that the user notification center presents for permission request, if that's what you're asking.
Though, you could create a bulletin page item that lets the user know why they need to enable notifications as part of the onboarding flow. On that page, use the action button callback to call the UNUserNotificationCenter method to request authorization, which will show the system alert with your text from the Info.plist.
You can see the code in the example project to see how we did this for the demo / documentation. 😄

I see! Thank you very much for your detailed answer :)


[R1] Add Clear Shopcart API

* API:
    * PUT /shopcarts/{shopcart_id}/checkout  (ref: slide 03-Building-RESTful-Services, p.54)
* Behavior:
    * 200 OK: Remove all items in the shopcart from table without deleting the shopcart
    * 404 Not Found: When trying to checkout a non-existent shopcart
* Tests:
    * Happy Path (200 OK)
    * Sad Path (404 Not Found)
* Acceptance Criteria:
    * New route tests to cover both happy and sad path cases added to test_routes.py
    * Green build status, e.g. all tests pass with 95+% test coverage
    * Code rating 10/10, e.g. no non-PEP8 standard warnings or errors reported by the `make lint` command

As a [role]
I need [function]
So that [benefit]
Details and Assumptions

[document what you know]

Acceptance Criteria
Given [some context]
When [action taken]
Then [outcome observed]

Hey team! Please add your planning poker estimate with Zenhub @emhao @LillisLuo @nijya @wl2484

I changed this from "checkout" to "clear" so that it is more intuitive. I am naming my branch the same.


Use bash instead of sh in shell scripts

Use bash instead of sh in shell scripts.
Debian/Ubuntu uses dash instead of bash as default shell for scripts (/bin/sh is symlink to /bin/dash).
So a lot of scripts don't work with dash (it does not like for example == in [ ] tags):
$ sh ./bin/ngsutils
./bin/ngsutils: 22: [: unexpected operator
./bin/ngsutils: 30: [: ngs: unexpected operator
./bin/ngsutils: 59: [: unexpected operator
./bin/ngsutils: 75: [: unexpected operator
./bin/ngsutils: 81: [: unexpected operator
Unknown command ''
ghuls@SEQ-SRV-03:/software/ngsutils/ngsutils-git [17:14] $ bash ./bin/ngsutils
Usage: ngsutils COMMAND

Commands
    update        - Updates NGSUtils from git repository
                    (http://github.com/ngsutils/ngsutils)
    repeat2fasta  - Extract repeatmasker flagged regions to a FASTA file
    strip_fasta   - Remove sequences from a FASTA file based on name
    tag_fasta     - Tag FASTA sequence names with a prefix or suffix
    tabixindex    - Index a tab-delimited file using Tabix and bgzip

Run 'ngsutils help CMD' for more information about a specific command
ngsutils 0.5.7-ddceb14

All files with /bin/sh that should be /bin/bash:
$ git diff
diff --git a/bin/ngsutils b/bin/ngsutils
index a3bdfa0..1b64a79 100755
--- a/bin/ngsutils
+++ b/bin/ngsutils
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 REAL=`python -c 'import os,sys;print os.path.realpath(sys.argv[1])' "$0"`
 DIR=`dirname "$REAL"`/../
 SUBDIR=$(basename $0 | sed -e 's/utils//')
diff --git a/init.sh b/init.sh
index 96e3ee9..5e0e7e1 100755
--- a/init.sh
+++ b/init.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash

 if [ "$PYTHON" == "" ]; then
     PYTHON="python"

As the last commit for init.sh was to support FreeBSD which does not seem to have bash in a basic installation, shell scripts which only require a POSIX compilant shell can also be an option.
In that case, do away with all bashisms:
http://mywiki.wooledge.org/Bashism
https://wiki.ubuntu.com/DashAsBinSh
#13

Should have been fixed with a prior commit.


Default sorted column does not show caret hilites

Hello,
as the subject says..... I have a table, I sort it by 1 of the columns through the table.defaultSorted prop:
		this.table = {
			defaultSorted: [
				{
					dataField: "dateTimeCreated",
					order: "asc",
				},
			],
			defaultSortDirection: "desc",

The data is sorted by the column and I see the 2 up-down carets but I none of them is highlighted. I expected 1 of them to be highlighted so it reflects the sort column and sort direction.
Currently none of the sortable columns have their carets highlighted.
Do I need to add some other prop?

Maybe there're some styles got override
The online example for bootstrap3 and 4 are work well
https://react-bootstrap-table.github.io/react-bootstrap-table2/storybook/index.html?selectedKind=Sort Table&selectedStory=Default Sort Table&full=0&addons=1&stories=1&panelRight=0&addonPanel=storybook%2Factions%2Factions-panel
https://react-bootstrap-table.github.io/react-bootstrap-table2/storybook/index.html?selectedKind=Bootstrap 4&selectedStory=Sort table with bootstrap 4&full=0&addons=1&stories=1&panelRight=0&addonPanel=storybook%2Factions%2Factions-panel
Please open another issue when you have enough information so that I can help u...

In case anyone else runs into this, adding bootstrap4 (as in the second link) resolved this for me.


Failure to Validate Session - Last Sign-in At Field Missing

I was working on making some updates to a few tables I use for my application in Supabase. I used supabase-py to connect to the client successfully and went to sign-in via email, but I was consistently running into this error:
AuthRetryableError: 1 validation error for Session
user -> identities -> 0 -> last_sign_in_at field required (type=value_error.missing)
Here's the code I am using to create the client and establish the session:
supabase: Client = create_client(url, key)
session = supabase.auth.sign_in_with_password({'email': SUPA_EMAIL,'password': SUPA_PASS}) <- Throws the error
supabase.postgrest.auth(session.session.access_token)

Version and OS Info:
python: 3.9.16
supabase-py: 1.0.2
OS: Windows 10
I have been using this same code to setup the client and session for a number of weeks now, and nothing has changed about the user account that I have been signing in with, so this error was quite baffling to me initially. I found it really odd that the error was saying that the last_sign_in_at field was missing, because I could clearly see that information in the Supabase web application, which was even up-to-date with the sign-ins I was trying to do from Python when I checked the timestamps. I even went back to my web application, which has this user account associated with it, and managed to sign-in with supabase-js with no difficulties. After finding it was possible to sign-in everywhere, except with the python client, I decided I would try to manually delete the user account from the Supabase web application and recreate it before trying the python client again. After I went through the process of deleting and recreating the account, I tried the same code above in python client again, and everything miraculously worked again as expected.
I am not sure how to reproduce this error as it seems like there was not a specific action I took that resulted in the error popping up in the first place. Given what actually solved the problem in the end, it does make me wonder if perhaps Supabase made some kind of change to the default user table in an update that caused the code to stop working until I remade the user account within Supabase?
Any insight on this would be very much appreciated. I heavily depend on the python client to bulk load data into my database tables, so I would like to understand this better for the future and raise awareness in case others encounter this issue.
Thanks!

Hey @fluencyforge,
It has been a while and I'm sorry that we're only reaching you now. I've just did a quick  test with the code snippet above and the issue should now be patched. Do let us know if there are still issues though.
Thanks!


[🐛Bug]: Mobile blockouts for statusbar are not shown in the report

The report of a mobile screenshot is now not showing the enabled blockouts
This is for example an image with a blockout

This is the report

Will be fixed in https://github.com/webdriverio/visual-testing/pull/521


deprecation warning on Rails 7.1 on config.active_support.cache_format_version = 6.1

Rails: 7.1.1
Combustion: 1.3.7

DEPRECATION WARNING: Support for config.active_support.cache_format_version = 6.1 has been deprecated and will be removed in Rails 7.2.
Check the Rails upgrade guide at https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#new-activesupport-cache-serialization-format for more information on how to upgrade.

on Combustion.initialize! :all

Hi @jrochkind, this was fixed in #131 (but hasn't been released).

@ankane @pat Thanks!  Are y'all interested in a combustion release anytime soon?
It looks like the last release was 1.3.7 in June 2022 (~18 months ago)
I'd love to get a release that includes all these fixes for 7.1 deprecation warnings, such #131  and also c1bc7dad
Thank you!

Sorry for the delay, finally got a new release out! (1.4.0)
Here's hoping I'm a bit better at keeping up with OSS things this year 😅

thanks @pat!


Bug in safari if use as define module

If in safari use as amd, after compiler.inside scope this is undefined, also looks like same errors apears on IE as well. I added call(window||this) at the end, and this fix working fine.

The only case where this is undefined is if you enable strict mode. Are you building your own d3.js file or concatenating multiple files together? At any rate, D3 3.x is basically frozen as I am working on releasing D3 4.0 in the next few months. D3 4.0 is implemented using ES2015 modules and uses Rollup to produce a UMD bundle.

Yes it is in strict mode and bundled by r.js. Will Look forward on version 4.


VM: Add support for snap lxd-agent.debug in /var/snap/lxd/common/

Enables side loading debug builds of the lxd-agent binary when using the snap.
Signed-off-by: Thomas Parrott<EMAIL_ADDRESS>

I'd rather we do that in the snap packaging logic.

@tomponline what I'd do is detect /var/snap/lxd/common/lxd-agent.debug and if found, symlink that into our in-memory (tmpfs) bin directory. This is prepended in the PATH so LXD will favor this one over the original.

@tomponline what I'd do is detect /var/snap/lxd/common/lxd-agent.debug and if found, symlink that into our in-memory (tmpfs) bin directory. This is prepended in the PATH so LXD will favor this one over the original.

Where should this be done in the snap packaging?

snapcraft/commands/daemon.start look for # Setup an additional bin directory

https://github.com/lxc/lxd-pkg-snap/pull/103


[ast] Updating Lc2HcTrCyc, Hc2LcTrCyc according to macro delay

This change impacts wakeup and power down time.

chip_sw_pwrmgr_smoketest currently fails because this bound is too low
https://github.com/lowRISC/opentitan/blob/4ffc4de67f949c45261ebc1be0ff3617d84cfa54/hw/top_earlgrey/dv/sva/clk_ctrl_and_main_pd_sva_if.sv#L31
I think that makes sense because this PR changes the number of clock cycles in power transitions. I'm thus increasing the bound -- 160 cycles seems to suffice. Amending the commit so as to keep CI passing.


Allow more than 10 groups to be added via the organizations add group page

As per https://github.com/uselagoon/lagoon-ui/blob/14fc1f77135653bea2e47406307ab992c92d72b1/src/pages/organizations/groups.js#L68-L69 - can we remember why this is limited to 10 groups?

IMO just remove this entirely. The API will reject groups if it exceeds the organization quota


Cannot send a content-body with this verb-type. Wallee v.7.0.1

We are getting exceptions in new version 7.0.1.  Previous version 7.0.0 works good.
For example, when calling PaymentPageUrl()
var transactionPaymentPageService = new WService.TransactionPaymentPageService(configuration);
var paymentPageUrl = transactionPaymentPageService.PaymentPageUrl(spaceId, transaction.Data.Id);
Exception: Cannot send a content-body with this verb-type.

Content-Type header shouldn't be used with GET
https://stackoverflow.com/questions/72179255/restsharp-error-cannot-send-a-content-body-with-this-verb-type?rq=3

Dear serhiykaramalak
Are you using .NET 6.0 or higher? (https://github.com/wallee-payment/csharp-sdk#frameworks-supported)
Best regards

We use .NET Framework 4.8
Content-Type header shouldn't be used with GET. Content-Type is for Request. Could you avoid setting Content-Type with GET method ?
New changes in ApiClient.cs :127  cause an exception .
https://github.com/wallee-payment/csharp-sdk/commit/f950dd58a14c18fa9a5373256c307f99ff646fc4
if (contentType != null)
{
request.AddHeader("Content-Type", contentType);
}

Dear serhiykaramalak
We also use the newest version (where the code is working), which officially only works with .NET 6.0+, as described here:
https://github.com/wallee-payment/csharp-sdk#frameworks-supported
Please can you try again your code with .NET 6.0.
If you still have issues then, feel free to create a ticket at<EMAIL_ADDRESS>Best regards


Anyone can explain the "pocket mode"?

Greetings,
Actully I am working on a similar project of social distancing alarm project and stuck at the IOS background mode issue.
Could anyone please explain a lit bit more how is the "pocket mode" working, I am very interested at this? As you know that IOS will ignore the localname property and only advertising the serviceID, I have a question here that I need to specify the serviceID in my scan options, can I get more customized data without connection to the device? The Mac is random, manufacture data is Apple static, so anything I can do?

May I have a testflight link of IOS version?


URL Path Regex issues

I'm trying to work out whether it's me, the documentation, or the feature that is at fault.
It's certainly not clear, however have multiple test, it seems the "Ignore Case" flag is automatically applied (i.e. the option does not work properly). If true, this renders case sensitive checks impossible.
For instance, in order to 301 redirect users to lowercase urls, the regex below (is looking for a request url path with the following criteria:

contains an uppercase char anywhere within the string (except start or end)
starts with /
ends with a /

Expression
^(/.([A-Z])+./)$
Configuration
The CDN is configured to look for a match of the RegEx as shown below:

Note - custom headers have been added for debugging info
Result
Incorrectly matches urls without any uppercase chars, such as
/test/
Postman shows the output, confirming that this rule was a match

Note the custom headers show the rule was applied, despite the requested url not containing uppercase chars.

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

ID: 3409e329-7cfe-fc82-a918-3bc78488726d
Version Independent ID: afee3972-145c-a4cd-ba70-78931afc1c96
Content: Azure CDN from Verizon Premium rules engine match conditions
Content Source: articles/cdn/cdn-verizon-premium-rules-engine-reference-match-conditions.md
Service: azure-cdn
GitHub Login: @asudbring
Microsoft Alias: allensu

@johnpudd Thanks for the feedback. We are investigating the issue and will update you shortly.

@johnpudd Thanks for the feedback. We are investigating the issue and will update you shortly.

Thanks @RohitMungi-MSFT

@johnpudd , Appreciate your patience. We are actively investigating and checking with Verizon team on this issue. I'll be right with you.

@johnpudd , Appreciate your patience. We would request you to send a mail at<EMAIL_ADDRESS>with your subscription details so that we can work with Verizon in closing this issue.
We are closing this issue for now. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


SelectElement with default preselected option

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
I was unable to preselect the default option by providing defaultValue option to a SelectElement
If I do render simple MUI component it works
Expected behavior 🤔
I should be able to use defaultValue
Steps to reproduce 🕹
Example: https://react-f3w5pk.stackblitz.io

https://github.com/dohomi/react-hook-form-mui/blob/master/apps/storybook/stories/TextFieldElement.stories.tsx#L27 you provide defaultValues to React Hook Form once for all fields.


Update pkg install in docs contribution guide

Changed the command to install the project for docs development to use python -m pip. This ensures that the Python interpreter from the activated environment is used when installing the package in editable mode.

[x] Changes are documented in docs/releases.rst

Thanks you @douglatornell !


Replace Http4sDsl.Path with Uri.Path

Follow-up from Gitter discussion:
We are recreating an Http4sDsl.Path from a Uri.Path every time we call -> in the DSL.  This is inefficient and confusing.
We should be able to eliminate Http4sDsl.Path, replace Http4sDsl.Root with Uri.Path.Root, and replace Http4s.Dsl./ with an extractor in the spirit of the existing /:.
Incomplete, sloppy proof of concept: https://github.com/rossabaker/http4s/commit/57ff176221b0c695bc3f604b370cbbcaa0e97387

@rossabaker

We are recreating an Http4sDsl.Path from a Uri.Path every time we call -> in the DSL. This is inefficient and confusing.

Are you talking about the Path that we are creating using req.pathInfo in this line?
https://github.com/http4s/http4s/blob/f8cb39151fc9400e913f72a90fa8fc67f03e2851/dsl/src/main/scala/org/http4s/dsl/impl/Path.scala#L140

Yes. That should ideally just be Some((req.method, req.pathInfo)).

And I was mistaken on Gitter the other day when I said our -> extractor has nothing to do with HTTP: it operates specifically on a Request, and does belong in the HTTP library.

This work will have to target main.  I don't think there is any way to do it in a binary-compatible fashion.

Yes. That should ideally just be Some((req.method, req.pathInfo)).

@rossabaker with req.pathInfo returning something of type Uri.Path ?

Yes. I thought it already did, but it looks like it's still a String. I think my PoC commit might predate @hamnis' work on the Uri.Path.  Making that splitter that produces pathInfo work on a Uri.Path raises some interesting design questions, but seems like it's probably the right thing to do?  What do you think, @hamnis?

@rossabaker

Yes. I thought it already did, but it looks like it's still a String.

I thought the same. But looks like it is a Path - https://github.com/http4s/http4s/blob/4382d9023b68b908c380a61700ddfbfb9739d531/core/src/main/scala/org/http4s/Uri.scala#L358
I thought it was a String because my VS Code opens the readonly file and there the code is type Path = String. I am not sure why this is happening?

I think Metals didn't keep up with all my branch hopping. The one that matters here is on Request, in Message.scala, but it's already a Uri.Path. I thought I remembered @hamnis working through that already.  So yeah, that makes this quite a bit smaller task.

@rossabaker @hamnis
what is the expected match clause
Path(Vector(Segment("foo.json"))) match {
        case Path.empty / "foo" ~ "json" => true //this?
        case Path.Root / "foo" ~ "json" => true    //or this?
        case _ => false
      }

The current semantic in Dsl.Path is to always treat the root as Absolute, meaning that Path.Root is what we should consider here.
When deconstructing (i.e pattern matching) we can always consider the Root to be set.
so in your examples:

the second.

the second

We can force a Uri.Path to be absolute if that makes more sense, by calling the pathInfo.toAbsolute method


Create the footer

Create a simple footer with useful info/social links

Completed the footer

completed the footer


Make maxWidth stack safe and add renderTall and renderWide

This give you the ability to avoid the branching code, which can blow up for very (10k) wide widths due to stack overflows.
Since very wide widths are not the use case of this code, I think we are mostly okay with not solving the stack overflow for such unrealistic widths.
Another solution would be to check if the width is say bigger than 1000, then check if it is bigger than the max, which is safe, and if it is bigger than the max, we can use the stack safe renderWide method and get the same result. This will often in practice solve the problem but we should probably punt for now since I think all the main usability SOEs are handled.

LGTM 👍


Add extra hints in README.md for new developers

Not knowing gulp and electron beforehand, could make it a bit difficult
to start out. It took me quite some fiddling and looking at misleading
error messages to figure out I should have installed gulp before
running npm install (whereas I assumed npm would install it for me).
The electron binary, also, isn't directly available as a command since
npm does not put it on the $PATH for you. So I added a hint to where the
binary is located.

ty

np


Stored Procedure Simple execution.

Sorry this is a rookie one...
How can I simply execute a stored procedure (without returning a table), calling it from a button in the grid toolbar?.
The SP will fill an already existent table that shows in the grid, so I then only need to refresh the grid.
For example...
protected getButtons() {
// Save original btts.
var buttons = super.getButtons();
buttons.push({
title: 'Gen Orders Shipment Files',
cssClass: 'add-button',
onClick: () => {
                // HERE Call execution of SP ...

            }
        })

        return buttons;

Thank you so much in advance.

You have to create a new endpoint in your server-side xyzEndpoint.cs and there you execute the SQL SP with Standard C# Code.
...
[HttpPost]
        public String ExecuteSP(IDbConnection connection)
        {
                // your C# Code for calling a SQL Stored procedure here...
                return "ok";
        }

Then - from the Client side within your onClick() code , you have to call the Service endpoint on the Server side like this:
onClick: () => {

                  var bla = xyzService.ExecuteSP(
                        {

                        },
                        response => {
                            // *** Success ***
                            var message = JSON.parse(bla.responseText);
                            Q.notifySuccess(message, "All ok"));

                            this.refresh();
                        },
                        {
                            blockUI: true,
                            onError: response => {
                                // *** Error ***
                                Q.notifyError("There was an error"), Q.text("Error"));
                                this.refresh();

                            },
                            //onCleanup: () => this.serviceCallCleanup()
                        });

...

Hope this gives you the Basic idea.
With Kind regards,
John

JohnRanger Thanks a lot for the quick replay!
I'll try it and will inform any issue.


Seg fault while post quantizing my model

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): OS Linux 18.04.04 LTS
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: No
TensorFlow installed from (source or binary): python wheel
TensorFlow version (use command below): 2.2.0-rc4
Python version: 3.6
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:10.1
GPU model and memory: TitanV , 12 GB

I am trying to do post training quantization for the EfficientDet-D0 model pre-trained on COCO I got from his repo : https://github.com/google/automl
Desired quantization is int8 because it needs to be running on a google coral.
Below is the code that I use:
`from PIL import Image
import numpy as np
export_dir = "./savedmodeldir"
model = tf.saved_model.load(export_dir)
concrete_func = model.signatures[tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY]
concrete_func.inputs[0].set_shape([1, 512, 512, 3])
converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
converter.optimizations = [tf.lite.Optimize.DEFAULT]
def representative_dataset_gen():
num_calibration_steps=10
path_to_img='./img/img.jpg'
for _ in range(num_calibration_steps):
# Get sample input data as a numpy array in a method of your choosing.
im = np.asarray(Image.open(path_to_img).resize((512,512)),dtype=np.uint8)
im=np.reshape(im, [1,512,512,3])
with tf.device('/CPU:0'):
image=tf.convert_to_tensor(im)
yield [image]
converter.representative_dataset = representative_dataset_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.int8  # or tf.uint8
converter.inference_output_type = tf.int8  # or tf.uint8
tflite_quant_model = converter.convert()`
Link to the savedmodeldir zip file:
https://drive.google.com/file/d/1Hsbox0LRm6z9FecnobMP7YK7ZJyFjknt/view?usp=sharing
The output I get while running the code:
WARNING:tensorflow:Importing a function (MetaGraph import) with ops with custom gradients. Will likely fail if a gradient is requested.
WARNING:tensorflow:Importing a function (MetaGraph import) with ops with custom gradients. Will likely fail if a gradient is requested.
WARNING:tensorflow:From /home/shrey/.local/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1817: calling BaseResourceVariable.init (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
WARNING:tensorflow:Issue encountered when serializing global_step.
Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.
to_proto not supported in EAGER mode.
WARNING:tensorflow:Issue encountered when serializing moving_average_variables.
Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.
to_proto not supported in EAGER mode.
WARNING:tensorflow:Issue encountered when serializing variables.
Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.
to_proto not supported in EAGER mode.
WARNING:tensorflow:Issue encountered when serializing trainable_variables.
Type is unsupported, or the types of the items don't match field type in CollectionDef. Note this is a warning and probably safe to ignore.
to_proto not supported in EAGER mode.
2020-06-10 11:40:38.281380: I tensorflow/core/grappler/devices.cc:55] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0
2020-06-10 11:40:38.281495: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session
2020-06-10 11:40:38.432064: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: graph_to_optimize
2020-06-10 11:40:38.432098: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 3786 nodes (0), 3573 edges (0), time = 21.187ms.
2020-06-10 11:40:38.432102: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 3786 nodes (0), 3573 edges (0), time = 26.002ms.
2020-06-10 11:40:38.432105: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_TensorArrayV2Write_cond_true_136_1822
2020-06-10 11:40:38.432109: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-10 11:40:38.432112: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432115: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_cond_png_true_83_1595
2020-06-10 11:40:38.432118: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432121: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432124: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_while_body_23_4372
2020-06-10 11:40:38.432128: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 38 nodes (0), 41 edges (0), time = 0.721ms.
2020-06-10 11:40:38.432131: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 38 nodes (0), 41 edges (0), time = 0.751ms.
2020-06-10 11:40:38.432134: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_TensorArrayV2Write_cond_false_137_1473
2020-06-10 11:40:38.432137: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432140: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-10 11:40:38.432143: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_cond_gif_true_93_2677
2020-06-10 11:40:38.432148: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-10 11:40:38.432151: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432154: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_cond_gif_false_94_4320
2020-06-10 11:40:38.432158: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-10 11:40:38.432161: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432185: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_decode_image_cond_jpeg_true_65_2555
2020-06-10 11:40:38.432190: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432194: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0.001ms.
2020-06-10 11:40:38.432198: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_decode_image_cond_jpeg_false_66_4339
2020-06-10 11:40:38.432202: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 10 nodes (0), 10 edges (0), time = 0.32ms.
2020-06-10 11:40:38.432210: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 10 nodes (0), 10 edges (0), time = 0.316ms.
2020-06-10 11:40:38.432213: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_while_cond_22_6546
2020-06-10 11:40:38.432219: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432222: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: function_optimizer did nothing. time = 0ms.
2020-06-10 11:40:38.432227: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: __inference_cond_png_false_84_4328
2020-06-10 11:40:38.432230: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 7 nodes (0), 6 edges (0), time = 0.234ms.
2020-06-10 11:40:38.432234: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   function_optimizer: Graph size after: 7 nodes (0), 6 edges (0), time = 0.248ms.
2020-06-10 11:40:40.776624: I tensorflow/core/grappler/devices.cc:55] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 0
2020-06-10 11:40:40.776752: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session
2020-06-10 11:40:41.366677: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:797] Optimization results for grappler item: graph_to_optimize
2020-06-10 11:40:41.366709: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 2739 nodes (-1047), 2330 edges (-1243), time = 481.837ms.
2020-06-10 11:40:41.366713: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:799]   constant_folding: Graph size after: 2739 nodes (0), 2330 edges (0), time = 49.056ms.
Aborted (core dumped)

@shreymohan,
On running the code I am facing a different error stating error: 'tfl.strided_slice' op operand #0 must be tensor of 32-bit float or 32-bit integer or 64-bit integer or 8-bit integer or QI8 type or QUI8 type or 1-bit integer values, but got 'tensor<1x512x512x3x!tf.quint8>'. Please find the gist of it here.
Could you please check if you are facing the same error in a virtual environment. Thanks!

This is weird. Would you suggest trying tf-nightly instead? I have seen people pulling off their conversions using that tf version.

Was able to reproduce the issue, runtime crashes on running the code with TF-nightly. Please find the gist of it here. Thanks!

@amahendrakar  Hey! thanks for reaching out! Any suggestions on how to solve this issue?

@shreymohan,
I tried reproducing the code in TF 2.6.0 and it was throwing RuntimeError  Failed to quantize: <unknown>:0: error: loc("strided_slice_21"): 'tfl.strided_slice' op quantization parameters violate the same scale constraint: !quant.uniform<i8:f32, 0.81405168771743774:-128> vs. !quant.uniform<i8:f32, 1.4241064786911011:-128>, whereas in tf-nightly i.e 2.8.0-dev20211020, it ran successfully. please take a look at the gist here


endless loop when two methods in different states have the same name

given: a state machine with two states. Each state defines a method with the same name.
When I call the method of the second state
Then the program ends in an endless loop
require 'rspec'
require 'state_machine'

class StateWithBehavior
  state_machine initial: :idle do
    event :go do
      transition :idle => :running
      transition :running => :idle
    end
    state :idle do
      def go
        puts "start"
        super
      end
    end
    state :running do
      def go
        puts "stop"
        super
      end
    end
  end
end

describe StateWithBehavior do
  subject { StateWithBehavior.new }
  it "has idle as initial state" do
    subject.state_name.should == :idle
    subject.go  #<-works fine
    subject.state_name.should == :running
    subject.go #<-endless loop
    subject.state_name.should == :idle
  end
end

I'm using state_machine version 1.0.2

Thanks for reporting this issue!  I was able to reproduce it, using Ruby 1.9.1.  The behavior appears significantly different in Ruby 1.8.7.  I'll take a look at this and let you know what I find.

It's worth noting that this still only works on Ruby 1.9.1+.  However, it should no longer infinitely loop :)
This change will get included in the 1.1.0 release coming sometime in the next few weeks.


Why do I "must use WSL"?

You already use docker. Then why WSL as well??

I am using it on Windows without WSL

I am using it on Windows without WSL

They should update their README. Cuz they say for Windows, WSL must be used.

WSL must be used, sorry. WSL is a Linux system for Windows, and that's what the project is compatible with.
It might or not work without WSL, but we don't support it, we don't test on it I believe, and we might not be able to help you with it otherwise. I suggest to install WSL and use openhands on it, or a regular Linux.

WSL is necessary, sorry, for the project to work well. WSL is a Linux system for Windows, and that's what the project is compatible with. openhands works on Mac, Linux, and as for Windows, under WSL.
In practice, it might or not work without WSL, but we don't support that configuration, we don't have it and don't test on it I believe, and we might not be able to help you with it. I suggest to install WSL and use openhands on it, or a regular Linux.

Why doesn't Docker only work?

From what I recall, we've seen problems from the fact that openhands mounts a folder on the local machine, to be its workspace, where it creates files, edits files, deletes stuff etc. On a Windows machine, we have seen issues with libraries, function calls, etc, necessary to do stuff like that. Also, the user the app runs as, the permissions on those files etc, might or not work. I could perhaps add that openhands has two docker containers, one for the external app to run, and another, the runtime that executes the actions.
I believe there are users who use it nevertheless, on Windows without WSL, or have in the past. I don't have a Windows machine and I'm not sure if/what they needed to do or work around. If you want to try it, please feel free to, and I believe we would accept documentation on it. We just don't support it or recommend it.

WSL is necessary, sorry, for the project to work well.

I've tried with WSL first and WSL crashed, that's the only reason I am using it on Windows

@Polygons1 Could you please open an issue and fill in the template? As complete as possible, with all information and logs you can, it helps to figure out the problem.

the problem is that there is nothing, no logs, nothing, just a shutdown of wsl.

A shutdown of WSL or do you mean a shutdown of the openhands application?

of WSL and I think that’s a Docker issue and not OpenHands

Yes, that's likely. You can install docker on WSL, and run openhands in WSL.
I understand it can work with docker on Windows and openhands in WSL, I've never tried it, but others have.
Whichever solution you choose, can you try to fix docker so that it works normally then run openhands?

I think I’ve fixed it now, I don’t know what I did but it worked


Gymnasium Support

Is your feature request related to a problem? Please describe.
Hi, I am trying to replicate the cart pole tutorial from: https://coax.readthedocs.io/en/latest/examples/cartpole/dqn.html
However, since gym is now deprecated I am using Gymnasium from Farama: https://github.com/Farama-Foundation/Gymnasium
The issue is that there is a check in _array.py that checks gym.Spaces which fails with gymnasium. This is specifically in the default_preprocessor.
Describe the solution you'd like
Will Gymnasium be officially supported, or is there some work-around?
Describe alternatives you've considered
I am wondering if there is some wrapper I should be using?
Additional context
Cheers!

A possible workaround is adding
import sys
import gymnasium
sys.modules["gym"] = gymnasium

before coax import

Unfortunately I still run into a similar error:
Traceback (most recent call last):
  File "/home/apraka15/Documents/Projects/Reach-Avoid/gym-examples/gym_examples/scratch.py", line 37, in <module>
    q = coax.Q(func, env)
  File "/home/apraka15/Documents/Projects/Reach-Avoid/gym-examples/.env/lib/python3.10/site-packages/coax/_core/q.py", line 90, in __init__
    super().__init__(
  File "/home/apraka15/Documents/Projects/Reach-Avoid/gym-examples/.env/lib/python3.10/site-packages/coax/_core/base_func.py", line 60, in __init__
    raise TypeError(
TypeError: observation_space must be derived from gym.Space, got: <class 'gymnasium.spaces.box.Box'>```

Hi @arjun-prakash
Thank you for your interest in coax and thanks for raising this.
There's a PR in flight that switches coax over to Gymnasium.


Create new WinePrefix when running under Wine

Not familiar enough with WINE or the WINE Prefix directory. What does this change do or allow for?

It's standard to use a separate Wineprefix for each application to prevent compatibility issues, Proton does this
On my laptop, I apparently had something in my default prefix that broke LU, but switching to a fresh new prefix fixed it
https://wiki.winehq.org/FAQ#Wineprefixes

I see. Mind changing the directory name to WinePrefix instead of just Prefix so it is clear why it is there? If that is changed, I will merge this and create a new release.


It only takes only partial screenshot.

Describe the bug
It only takes screenshots what it sees without scrolling down.
Expected behavior
I want a full screenshot (for example to shot the parts where the user must scroll down).

thank you, it works :)


Update lint.sh

Wouldnt using lint.sh use pyproject.toml defaults?

Deleting the lint.py script instead as it as been replaced by poetry tasks


Undefined metric on a specific page

hi everyone. I'm testing the tool for the very first time.
And I found a case when there's a metric returned with undefined: 6 what does this means?
I've tested it in chrome 49 and 56 and happens in both. I've tested the same website in another url and it does not happen. I've tested other web pages and I don't get to reproduce it.
rowser-perf -s selenium -u user -a pass --browsers=chrome -o json --all "http://www.fotocasa.es/es/alquiler/casas/barcelona-capital/todas-las-zonas/l"
[ { undefined: 6,
    Styles: 0,
    Javascript: 0,
    numAnimationFrames: 823,
    numFramesSentToScreen: 823,
    droppedFrameCount: 163,
...

Undefined are usually caused when some labels are not populated in the results. You can ignore these numbers.

ok! thanks for the answer and for the project :)


[Accessibility]A11y__AzureDataStudio_CreateDatabaseMasterKey _Keyboard: Keyboard focus get trapped on the page after tab key is pressed on "Cancel" button and only moves when Shift tab key is used.

Check out Keros! - Identify accessibility bugs before check-in and make bug fixing faster and easier.
GitHubTags: #A11yMAS; #A11yTCS; #MAS2.1.2; #A11y_AzureDataStudio; #Win32; #DesktopApp
Environment Details:
Application name: Azure Data Studio
Version: 1.8.0-insider (user setup)
Electron: 3.1.8
Node.js: 10.2.0
V8: 6.6.346.32
OS: Windows_NT x64 10.0.17763
Additional Details:
Tool Name: Keyboard
MAS Reference: MAS2.1.2
Repro Steps:
1.Launch the Azure Data Studio application.
2.Navigate to "Enable SQL server2019 preview->select table from the database->Create External Table screen should open->click on next button.
3. Observed that Keyboard focus get trapped on the page after tab key is pressed on "Cancel" button.
Actual:
Keyboard focus get trapped on the page after tab key is pressed on "Cancel" button and only moves when Shift tab key is used.
Similar issue observed in following pages:
1.CSVSelectDestinationDatbse:  Connect to database->navigate to the Data services folder->HDFS Folder-> navigate to CSV files folder->Right click on the files->Select option Create external table from CSV files
2.MapDataSrcObjects: Enable SQL server2019 preview->select table from the database->Create External Table screen should open->Next button->Create Database Master Key screen should open->click on next button->fill all the required details->click on next button.
4.NewJobSchedule: Naviagte to the SQL agent tab from Home page->Click on new job button->Select schedule tab.
5.CreateAnOperator: Go to the SQL server agent tab->Opertaors tab->click on New operator button.
This issue is observed for every cancel button.
Expected:
Keyboard focus should not get trapped on the page after tab key is pressed on "Cancel" button and focus should move on the other control.
User Impact:
Keyboard only user will find the difficulties to navigate after "Cancel" button using tab key.
Recommendation:
Please refer the following snippet link for fixes:
https://microsoft.sharepoint.com/teams/msenable/mas/Pages/browse-fixes.aspx
MAS Reference:
MAS2.1.2
https://microsoft.sharepoint.com/:w:/r/teams/msenable/_layouts/15/WopiFrame.aspx?sourcedoc={ebdc3fe1-09a9-4aa2-a29b-e97764774e6c}
Attachment for Reference:
5930_[Accessibility]A11y__AzureDataStudio_CreateDatabaseMasterKey _Keyboard.pptx
Does this issue occur when all extensions are disabled?: Yes

Looks like the keyboard focus is going out of the modal dialog, behind the dialog. Need to keep tab focus circling through the dialog.


[Auto-generated] Check & update dependencies (pyproject.toml)

Update dependencies (pyproject.toml)
Automatically created PR based on the 'CI - Check pyproject.toml dependencies' workflow in SINTEF/ci-cd.

NumPy should be kept at v1 due to complications with DLite.
To enforce this, the CI/CD configuration will be updated to respect this.


Investigate CDAT versus xcdat spatial average differences

In order to continue to validate the spatial averaging code in xcdat, I looped over CMIP5/6 tas historical files (110 models) and 20+ domains here.
227 (227/2486 = 9%) combinations had a CDAT-xcdat difference larger than 10-6 here. 110 were specific to the NAFM region. This drops to 140 (and 110 for NAFM) if I look at differences larger than 10-3.
Two models produced errors for xcdat (but not CDAT): NorCPM1 and MCM-UA-1-0. In the case of NorCPM, it is related to Issue #162. In the case of MCM-UA-1-0, the problem is likely related to #163. There were no cases where CDAT throws an error and xcdat does not. Both packages produce an error for ICON-ESM-LR, because tas has a shape of [1980, 20480] (non-rectilinear grid).
This ticket is intended to document my findings in investigating these differences.

@lee1043 - In the metrics package for NAFM - do you load data differently when computing metrics for NAFM (e.g., tas = f('tas', longitude=(310, 309)) or something like this)? The longitude domain goes from 310oE to 60oE (wraps around the prime meridian). I suspect when I am calling CDAT it is averaging between 60oE and 310oE (rather than wrapping around the prime meridian.

@pochedls I think you've just found a bug in the PMP's Monsoon Wang metric's domain definition. I haven't had a chance to work with this specific metric so was not noticing the issue. In the PMP's driver for the Monsoon Wang metric, it just opens model file with regular cdms2 open, as f = cdms2.open(modelFile)
As you suspected, the extracted subdomain for NAFM (North African Monsoon) was for 60E to 310E with mirrored, instead of 310E to 60E.

I am bringing this issue to PMP issue for fix. On the other hand, although it is not expected but I think it would be nice if XCDAT handles this smartly if there is an easy way to do so.

I am bringing this issue to PMP issue for fix. On the other hand, although it is not expected but I think it would be nice if XCDAT handles this smartly if there is an easy way to do so.

I've tried to ensure that xcdat handles situations where the bounds cross the prime meridian. You need to specify the bounds as (lower, upper). If you specify a bound of (310, 60), it knows that you are wrapping around the prime meridian (i.e., 310 - 360 and 0 - 60) where as (60, 310) would not span the prime meridian (it includes only 60 - 310).

Hi @pochedls, any progress on this issue?

Hi @pochedls, any progress on this issue?

Thank you for the prompt - I haven't dug deeper, but I will devote some time to this along with the two other PR reviews. It looks like the majority of the differences are not xcdat bugs, but some of the differences I do not yet understand.

I found the source of another difference in spatial averages: the latitude bounds. To summarize what I show below, the latitude bounds by xcdat match the lat_bnds array in the original file. If I drop the xcdat bounds (ds.drop_vars(['lat_bnds'])) and regenerate them (ds = ds.bounds.add_missing_bounds()) I match the bounds in CDAT.
fn = '/p/user_pub/xclim/CMIP5/CMIP/historical/atmos/mon/tas/CMIP5.CMIP.historical.BNU.BNU-ESM.r1i1p1.mon.tas.atmos.glb-z1-gu.1.0000000.0.xml'
f = cdms2.open(fn)
tas = f('tas', time=slice(0, 1))
f.close()
lat_bnds = tas.getLatitude().getBounds()
print(lat_bnds)

array([[-89.24743652, -86.48016358],
[-86.48016358, -83.70471955],
[-83.70471955, -80.91925812],
[-80.91925812, -78.13125229],
[-78.13125229, -75.34220887],
[-75.34220887, -72.55263519],
...

fn = '/p/css03/cmip5_css02/data/cmip5/output1/BNU/BNU-ESM/historical/mon/atmos/Amon/r1i1p1/tas/1/tas_Amon_BNU-ESM_historical_r1i1p1_185001-200512.nc'
ds = xcdat.open_dataset(fn)
lat_bnds = ds.bounds.get_bounds('lat')
ds.close()
print(lat_bnds)

array([[-87.8638  , -86.480164],
[-86.480164, -83.70472 ],
[-83.70472 , -80.919258],
[-80.919258, -78.131256],
[-78.131256, -75.342209],
[-75.342209, -72.552635],
...

We can compare to the bounds in the original file via ncdump -v lat_bnds tas_Amon_BNU-ESM_historical_r1i1p1_185001-200512.nc

lat_bnds =
-87.8638000488281, -86.4801635742188,
-86.4801635742188, -83.704719543457,
-83.704719543457, -80.9192581176758,
-80.9192581176758, -78.1312561035156,
-78.1312561035156, -75.3422088623047,
-75.3422088623047, -72.5526351928711,
...

All of the methods agree on the lat values themselves:

lat = -87.8638000488281, -85.0965270996094, -82.3129119873047,
-79.5256042480469, -76.7369003295898, -73.9475173950195,
-71.1577529907227, -68.3677597045898, -65.5776062011719,
-62.787353515625, -59.9970207214355, -57.2066307067871,
-54.4161987304688, -51.625732421875, -48.8352394104004,
...

If I drop the xcdat bounds (ds.drop_vars(['lat_bnds'])) and regenerate them (ds = ds.bounds.add_missing_bounds()) I match the bounds in CDAT.
Of the most recent 2373 xcdat-CDAT comparisons, there were 117 instances where the two libraries had a spatial average differences greater than 10-6 (for an individual time step). Some of these cases were larger than 10-3 (including the file outlined above). By generating the latitude bounds in xcdat instead of using the bounds in the file, 33 (of 117) differences become smaller than 10-6. This leaves 84 comparisons where the differences are still larger than 10-6.
Can anyone see a reason not to use the latitude bounds in the file?

It appears that some of the differences may be in the averager (or maybe the precision of the underlying data?).
get spatial averages
import xcdat
import cdms2
import cdutil
import numpy as np

fn = '/p/css03/esgf_publish/CMIP6/CMIP/IPSL/IPSL-CM5A2-INCA/historical/r1i1p1f1/Amon/tas/gr/v20200729/tas_Amon_IPSL-CM5A2-INCA_historical_r1i1p1f1_gr_185001-201412.nc'

# calculate CDAT spatial average

f = cdms2.open(fn)
tas = f('tas', time=slice(0, 1))
f.close()
tas = tas[0]
tas_cdat_weighted = cdutil.averager(tas, axis='xy', weights='weighted')

# calculate xcdat spatial average
ds = xcdat.open_dataset(fn)
tas_xcdat_weighted = ds.xcdat.spatial_avg().tas.isel(time=0).load().data

# there is a global average difference
print('cdat value', tas_cdat_weighted)
print('xcdat value', tas_xcdat_weighted)
print('difference', tas_xcdat_weighted - tas_cdat_weighted)

cdat value<PHONE_NUMBER>146412
xcdat value 284.1607
difference -0.0002351482349354228

Check if I get the same thing using _get_weights and _averager:
# I can get the same thing manually getting the weights
# and calling the averager
weights = ds.spatial._get_weights(axis=['lat', 'lon'], lat_bounds=[-90, 90], lon_bounds=[0, 360])
weighted_averager_with__averager = ds.spatial._averager(ds.tas[0], axis=['lat', 'lon'], weights=weights).load().data

print('xcdat _averager call', weighted_averager_with__averager)
print('difference', weighted_averager_with__averager - tas_cdat_weighted)

xcdat _averager call<PHONE_NUMBER>9983047
difference -0.00026341481071767703

Problem remains. I'll try to calculate the value myself using the xcdat generated weighting matrix (which I believe is the same as the CDAT generated weight matrix):
# try manual calculation with xcdat-generated weights
weighted_average = (np.sum(ds.tas[0] * weights) / np.sum(weights)).data
print('steve manual calculation', weighted_average)
print('difference', weighted_average - tas_cdat_weighted)

steve manual calculation 284.16095
difference 8.992390064577194e-06

The answer is different (and the difference is smaller).
@tomvothecoder - Do you have ideas about what may be going on. It seems like xcdat is slightly different from CDAT and my manual calculation. The data is stored as a float – maybe that is playing a role?

Can anyone see a reason not to use the latitude bounds in the file?

It's always a good idea to have some sanity checks running >=-90.0, <=90.0, >=-180., <=360., as the garbage that I've seen in some of the (particularly early) CMIP data is always astounding - same with obs data too. The double lon values (same lon value to precision, but different values in the matrix) are another CMIP data quirk favourite of mine

As a to do, I should check the time series differences using numpy.allclose().

Reporting back on this...I looped over 18585 file/domain combinations.

288 files had a problem (either didn't load or a spatial average wasn't computed for CDAT/xcdat/both). This left us with 18297 files to compare.
18243 / 18297 (99.7%) has CDAT/xcdat spatial average time series within tolerance (within ~0.003 for each time step).
If I dropped the bounds and manually computed the bounds, 18243/18243 (100%) comparisons were within tolerance.
xcdat was faster 9684 times (53%) and CDAT was faster 8613 times (47%), but the speed was strongly correlated (r = 0.82)

For the 288 files:

The following directories did not load with xcdat.open_mfdataset()

/p/css03/esgf_publish/cmip5/output1/ICHEC/EC-EARTH/historical/mon/atmos/Amon/r13i1p1/v20131231/tas/
/p/css03/esgf_publish/cmip5/output1/ICHEC/EC-EARTH/historical/mon/atmos/Amon/r14i1p1/v20130315/tas/
/p/css03/cmip5_css01/data/cmip5/output1/ICHEC/EC-EARTH/historical/mon/atmos/Amon/r7i1p1/v20120502/tas/
/p/css03/esgf_publish/CMIP6/CMIP/EC-Earth-Consortium/EC-Earth3/historical/r3i1p1f1/Amon/tas/gr/v20200730/
/p/css03/scratch/cmip6/CMIP/NCC/NorCPM1/historical/r10i1p1f1/Amon/tas/gn/v20190914/

xcdat failed to produce spatial averages for the following (all 21 domains):

/p/css03/cmip5_css02/data/cmip5/output1/ICHEC/EC-EARTH/historical/mon/atmos/Amon/r1i1p1/tas/1/
/p/css03/esgf_publish/CMIP6/CMIP/UA/MCM-UA-1-0/historical/r1i1p1f1/Amon/tas/gn/v20190731/
/p/css03/esgf_publish/CMIP6/CMIP/UA/MCM-UA-1-0/historical/r1i1p1f2/Amon/tas/gn/v20190731/

Both CDAT and xcdat failed to average the following (all 21 domains):

/p/css03/esgf_publish/CMIP6/CMIP/MPI-M/ICON-ESM-LR/historical/r1i1p1f1/Amon/tas/gn/v20210215/
/p/css03/esgf_publish/CMIP6/CMIP/MPI-M/ICON-ESM-LR/historical/r2i1p1f1/Amon/tas/gn/v20210215/
/p/css03/esgf_publish/CMIP6/CMIP/MPI-M/ICON-ESM-LR/historical/r3i1p1f1/Amon/tas/gn/v20210215/
/p/css03/esgf_publish/CMIP6/CMIP/MPI-M/ICON-ESM-LR/historical/r4i1p1f1/Amon/tas/gn/v20210215/
/p/css03/esgf_publish/CMIP6/CMIP/MPI-M/ICON-ESM-LR/historical/r5i1p1f1/Amon/tas/gn/v20210215/

The following failed for both CDAT and xcdat for a subset of domains (Sahel, GoG, SAmo):

/p/css03/esgf_publish/CMIP6/CMIP/NUIST/NESM3/historical/r1i1p1f1/Amon/tas/gn/v20190630/
/p/css03/esgf_publish/CMIP6/CMIP/NUIST/NESM3/historical/r2i1p1f1/Amon/tas/gn/v20190628/
/p/css03/esgf_publish/CMIP6/CMIP/NUIST/NESM3/historical/r3i1p1f1/Amon/tas/gn/v20190630/
/p/css03/esgf_publish/CMIP6/CMIP/NUIST/NESM3/historical/r4i1p1f1/Amon/tas/gn/v20190629/
/p/css03/esgf_publish/CMIP6/CMIP/NUIST/NESM3/historical/r5i1p1f1/Amon/tas/gn/v20190628/

Overall, I don't think there are issues with xcdat's spatial averaging functionality. @tomvothecoder - should I break some of this into separate issues or just keep updating this thread until I understand each problem?

Nice @pochedls!
It might be useful to add non-atmospheric grids as your problem counts will jump markedly

@pochedls nice work! I'm recently looping over models with E3SM Diags, and found that ICON-ESM-LR somehow submitted unstructured grids, so it is expected that either xarray nor cdms2 could open its five ensembles.

Nice @pochedls!
It might be useful to add non-atmospheric grids as your problem counts will jump markedly

The spatial averaging functionality was designed to work with rectilinear grids.

@pochedls nice work! I'm recently looping over models with E3SM Diags, and found that ICON-ESM-LR somehow submitted data on unstructured grids, so it is expected that either xarray nor cdms2 could open its five ensembles.

Thanks @chengzhuzhang - yeah - I think most of the problems I list above are due to specific model problems.

Overall, I don't think there are issues with xcdat's spatial averaging functionality. @tomvothecoder - should I break some of this into separate issues or just keep updating this thread until I understand each problem?

Great work @pochedls! I think we can continue updating this thread until we have enough information to warrant new GH issues.

@tomvothecoder - I'm slowly whittling down this list. I wanted to see if you could look at one of these to see if it is a simple problem or warrants a ticket. When I call spatial_avg on the following file, I get:

KeyError: "The data variable 'tas' is missing the '['lat', 'lon']' dimension, which is required for spatial averaging."

For some reason, cf_xarray isn't generating an axes list. This seems to be a one-off problem with this file, though it isn't immediately obvious why (I don't see a problem with the metadata).
ds = xcdat.open_mfdataset('/p/css03/cmip5_css02/data/cmip5/output1/ICHEC/EC-EARTH/historical/mon/atmos/Amon/r1i1p1/tas/1/*.nc')
ds.tas.cf.axes

{}

KeyError: "The data variable 'tas' is missing the '['lat', 'lon']' dimension, which is required for spatial averaging."

For some reason, cf_xarray isn't generating an axes list. This seems to be a one-off problem with this file, though it isn't immediately obvious why (I don't see a problem with the metadata).

In that dataset, the axis attribute might not be set for those dimensions so cf_xarray isn't listing them under ds.tas.cf.axes. I'll take a look and let you know if this is true.

ds = xcdat.open_mfdataset('/p/css03/cmip5_css02/data/cmip5/output1/ICHEC/EC-EARTH/historical/mon/atmos/Amon/r1i1p1/tas/1/*.nc')

# Check the dataset's CF metadata with cf_xarray -- CF Axes is n/a
# -----------------------------------------------------------------
Coordinates:
- CF Axes:   X, Y, Z, T: n/a

- CF Coordinates: * longitude: ['lon']
                  * latitude: ['lat']
                    vertical, time: n/a

- Cell Measures:   area, volume: n/a

- Standard Names: * latitude: ['lat']
                  * longitude: ['lon']

- Bounds:   n/a

Data Variables:
- Cell Measures:   area, volume: n/a

- Standard Names:   air_temperature: ['tas']

- Bounds:   lat: ['lat_bnds']
            latitude: ['lat_bnds']
            lon: ['lon_bnds']
            longitude: ['lon_bnds']
            time: ['time_bnds']

# Check the attributes for "lat" and "lon" -- confirmed no "axis" attr set
# -----------------------------------------------------------------
ds.lat.attrs

{'long_name': 'latitude',
 'units': 'degrees_north',
 'standard_name': 'latitude',
 'bounds': 'lat_bnds'}

ds.lon.attrs

{'long_name': 'longitude',
 'units': 'degrees_east',
 'standard_name': 'longitude',
 'bounds': 'lon_bnds'}

# Set "lat" "axis" attribute
# -----------------------------------------------------------------
ds.lat.attrs["axis"] = "Y"
ds.lon.attrs["axis"] = "X"

# Check the dataset with cf_xarray again -- the axes is now found
# -----------------------------------------------------------------
ds.lat.cf

Coordinates:
- CF Axes: * X: ['lon']
           * Y: ['lat']
             Z, T: n/a

- CF Coordinates: * longitude: ['lon']
                  * latitude: ['lat']
                    vertical, time: n/a

- Cell Measures:   area, volume: n/a

- Standard Names: * latitude: ['lat']
                  * longitude: ['lon']

- Bounds:   n/a

Data Variables:
- Cell Measures:   area, volume: n/a

- Standard Names:   air_temperature: ['tas']

- Bounds:   X: ['lon_bnds']
            Y: ['lat_bnds']
            lat: ['lat_bnds']
            latitude: ['lat_bnds']
            lon: ['lon_bnds']
            longitude: ['lon_bnds']
            time: ['time_bnds']

We can probably improve the KeyError so that it says something like:
KeyError: "cf_xarray could not find an X and/or Y axis. Make sure the data variable 'tas' has X and Y axis coordinates and the 'axis' attribute is set for both."

You also have a T coord, so in addition to the KeyError: "Could not find an X and/or Y axis for spatial averaging might want to add T(and Z).
Thinking about this a little, it is basically what I had in mind with #200, so more than happy to engage in the case that rather than just solving this spatial averaging issue, it's done in a more complete (all coords) way. As an FYI, I have been polling out full CMIP6 archive, and have been collecting a bunch of weird edge cases that have barfed with xcdat/xr reads, after which I default to cdms2 before skipping if that fails. In many instances when xr has failed, cdms2 works

You also have a T coord, so in addition to the KeyError: "Could not find an X and/or Y axis for spatial averaging might want to add T(and Z).

Thanks @durack1. Currently, XCDAT's spatial averaging only operates on rectilinear grids. If we extend spatial averaging to support other axes/dimensions, we will make sure to update the KeyError.
Notes in the _get_weights() method:
https://github.com/XCDAT/xcdat/blob/c01b7d298a181e4385ec3aba3d265007a172cafe/xcdat/spatial.py#L317-L322

Thinking about this a little, it is basically what I had in mind with https://github.com/XCDAT/xcdat/issues/200, so more than happy to engage in the case that rather than just solving this spatial averaging issue, it's done in a more complete (all coords) way

You also mentioned #200 being related to #183. If it makes sense, we'll need to figure out a way to handle the different axes that might share the same attributes (e.g., zlon and lon). I plan on looking into these issues soon.

As an FYI, I have been polling out full CMIP6 archive, and have been collecting a bunch of weird edge cases that have barfed with xcdat/xr reads, after which I default to cdms2 before skipping if that fails. In many instances when xr has failed, cdms2 works

It might be a good idea to open up a separate issue and list the errors thrown by xcdat/xr. For example, at the moment, xcdat.open_dataset()/open_mfdataset() automatically attempts to generate bounds for lat/lon/time for the Dataset. Maybe in some cases, cf_xarray isn't finding these axes because their attributes aren't CF compliant or they conflict?
Also, I plan on making bounds generation optional in #220.

I plan on looking into these issues soon.

No problem, when you get to this, happy to engage. Currently, I have 27 edge cases to follow up on, and I am yet to ascertain whether this is related to xcdat (ala #215) or an underlying xr.*open* issue. My process should be complete in a ~week, so can coalesce that information when required

@tomvothecoder: This comment is updated with an explanation for each difference. Based on today's conversation, I don't think this small subset of issues can generically be addressed in xcdat. I'm closing this issue.


Qnap container station

Hi, do you know how can i run this streight from the qnap's container station? Sorry very very new to containers and only using containers made by others.

You can find instructions to run compose files on qnap here.
If you want to run it natively on Container Station I suppose you need to use the standalone parameters transposed on CS options. It should be quite straightforward, they have the same name


Correct path to local migrate.exe

I was following the "Build and run..." steps to setup a fresh dev environment and it failed during the "Update-Database.ps1" step.
Maybe this issue came up because my "GitHub work folder" is located on drive D and my user profile is located on drive C.
When I run the Setup-DevEnvironment.ps1 I got this error message:
Copy-Item : Cannot find path
 'D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\${env:userprofile}\.nuget\packages\EntityFramework\6.1.3\lib\net45'
because it does not exist.

This was the full console output:

Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\WINDOWS\system32> cd D:\Code\GitHub\NuGetGallery\NuGetGallery
PS D:\Code\GitHub\NuGetGallery\NuGetGallery> .\tools\Setup-DevEnvironment.ps1
[BEGIN] Setting up IIS Express
WARNING: Site 'NuGet Gallery (localhost)' already exists. Deleting and recreating.
SITE object "NuGet Gallery (localhost)" deleted
SITE object "NuGet Gallery (localhost)" added
APP object "NuGet Gallery (localhost)/" added
VDIR object "NuGet Gallery (localhost)/" added
[DONE] Setting up IIS Express
[BEGIN] Setting SSL Certificate
Using SSL Certificate: 66D5A474BD5DD0FB0381E11B85933F97B95C43D2
[DONE] Setting SSL Certificate
[BEGIN] Running Migrations
Copy-Item : Cannot find path 'D:\Code\GitHub\NuGetGallery\NuGetGallery\tools${env:userprofile}.nuget\packages\EntityF
ramework\6.1.3\tools\migrate.exe' because it does not exist.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:15 char:5

Copy-Item `

~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (D:\Code\GitHub...ols\migrate.exe:String) [Copy-Item], ItemNotFoundExce
ption
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Copy-Item : Cannot find path
'D:\Code\GitHub\NuGetGallery\NuGetGallery\tools${env:userprofile}.nuget\packages\EntityFramework\6.1.3\lib\net45'
because it does not exist.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:15 char:5

Copy-Item `

~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (D:\Code\GitHub...6.1.3\lib\net45:String) [Copy-Item], ItemNotFoundExce
ption
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:61 char:62

... irectory -ne $null -and (Test-Path -Path $migrateExeDirectory -PathTy ...

                                         ~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Test
PathCommand

migrate.exe could not be provisioned.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:23 char:9

    throw 'migrate.exe could not be provisioned.'

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : OperationStopped: (migrate.exe could not be provisioned.:String) [], RuntimeException
FullyQualifiedErrorId : migrate.exe could not be provisioned.
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\WINDOWS\system32> cd D:\Code\GitHub\NuGetGallery\NuGetGallery
PS D:\Code\GitHub\NuGetGallery\NuGetGallery> .\tools\Setup-DevEnvironment.ps1
[BEGIN] Setting up IIS Express
WARNING: Site 'NuGet Gallery (localhost)' already exists. Deleting and recreating.
SITE object "NuGet Gallery (localhost)" deleted
SITE object "NuGet Gallery (localhost)" added
APP object "NuGet Gallery (localhost)/" added
VDIR object "NuGet Gallery (localhost)/" added
[DONE] Setting up IIS Express
[BEGIN] Setting SSL Certificate
Using SSL Certificate: 66D5A474BD5DD0FB0381E11B85933F97B95C43D2
[DONE] Setting SSL Certificate
[BEGIN] Running Migrations
Copy-Item : Cannot find path 'D:\Code\GitHub\NuGetGallery\NuGetGallery\tools${env:userprofile}.nuget\packages\EntityF
ramework\6.1.3\tools\migrate.exe' because it does not exist.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:15 char:5

Copy-Item `

~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (D:\Code\GitHub...ols\migrate.exe:String) [Copy-Item], ItemNotFoundExce
ption
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Copy-Item : Cannot find path
'D:\Code\GitHub\NuGetGallery\NuGetGallery\tools${env:userprofile}.nuget\packages\EntityFramework\6.1.3\lib\net45'
because it does not exist.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:15 char:5

Copy-Item `

~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (D:\Code\GitHub...6.1.3\lib\net45:String) [Copy-Item], ItemNotFoundExce
ption
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand

Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:61 char:62

... irectory -ne $null -and (Test-Path -Path $migrateExeDirectory -PathTy ...

                                         ~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : InvalidData: (:) [Test-Path], ParameterBindingValidationException
FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Test
PathCommand

migrate.exe could not be provisioned.
At D:\Code\GitHub\NuGetGallery\NuGetGallery\tools\Update-Databases.ps1:23 char:9

    throw 'migrate.exe could not be provisioned.'

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : OperationStopped: (migrate.exe could not be provisioned.:String) [], RuntimeException
FullyQualifiedErrorId : migrate.exe could not be provisioned.

It seems the code tries to copy the migrate.exe from the local nuget folder, but this Path.Combine operation seems wrong to locate it.
The "fixed" version worked on my system and I would think it should be OK if the cloned repository lives on the same drive as the nuget package folder.

/cc @chenriksson: please take a look, it was introduced in this change: https://github.com/NuGet/NuGetGallery/pull/6059

@robertmuehsig Thank you for this fix!


PayPal Web Integration

Summary of changes

Remove Native Checkout SDK and implement a web flow for PayPal
Use browser switch for web flow
Update PayPalClient integration to use a listener pattern for results
Add PayPalError class and re-organize errors
General code/doc string cleanup throughout

Checklist

~[ ] Added a changelog entry~

Authors

List GitHub usernames for everyone who contributed to this pull request.

@sarahkoop
@jcnoriega
@andrespelaezp

Please do not merge these until I have spoken to Aki and David