Need some new textures

@Pyrolusite :
I made a remote monitor, works like the Info Panel except is an item that you can walk with.
If you can make an item texture for it, that would be great, as well as if you redid my GUI to fit the style more. (https://github.com/xbony2/Nuclear-Control/blob/dmf444/src/main/resources/assets/nuclearcontrol/textures/gui/GUIRemoteMonitor.png)

Noted, will work on it.

So, yeah, sorry for the delay, didn't forget you all, will work on it asap.
Also, related to the GUI, you want something closer to NC2 standard ones ?

Sort of IC2-ish I guess, there's not much of NC2 standard for GUIs.

Okay, currently working on them.
Last question : Is the "Remote Monitor Card" supposed to fit on the "Remote Monitor" icon or something like the other cards should be fine ?

Textures done. I didn't really see any improvements I could make to the Remote Monitor GUI, so I changed somme little things here and there but that's it.
Open the issue again if you need something changed.

Looks good to me ^_^


Cmd functions not triggered in 4.2.4

Essentially, the scheduled function never runs. I followed the example for Cmd.run() to the letter without luck, then attempted to try just a console.log for the function and still no luck. I also attempted a hard-coded second action with Cmd.action(), and similar story.
Although the docs warn "Due to the way enhancers are composed, you'll need to be careful about the order in which install is applied. Research on how this ordering affects other enhancers is still under way," I believe that redux-loop is installed correctly because initial state is updating within the return loop() block; it is only the Cmds that do not trigger. Any thoughts?

Can you post your reducer and the file you are creating the store?

Here is the redux store configuration and the reducer.
configureStore.js
import { createStore, compose } from "redux";
import { install as installReduxLoop } from "redux-loop";

import reducers from "../reducers/index";

const enhancers = compose(
  // Install redux-loop
  installReduxLoop(),
  // Apply devtools
  window.devToolsExtension && process.env.NODE_ENV !== "production"
    ? window.devToolsExtension()
    : f => f
);

const configureStore = (initialState = {}) => {
  const store = createStore(reducers, initialState, enhancers);
  return store;
};

export default configureStore;

reducer.js
import { loop, Cmd } from "redux-loop";
import fetch from "node-fetch";

import {
  GITHUB_USER_FETCH,
  GITHUB_USER_SUCCESS,
  GITHUB_USER_FAILURE,
  fetchGithubUserSuccess,
  fetchGithubUserFailure,
} from "../actions/example-github.js";

const API_URL = `http://api.github.com/users/`;

function _fetchGithubUser(username) {
  console.log("username", username); // this console.log never fires, so I don't think this callback is fired
  return fetch(`${API_URL}${username}`);
}

export const INITIAL_STATE = {
  error: null,
  response: "Submit a query above! End default message.",
  isFetchingGithubUser: false,
};

export const reducer = (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case GITHUB_USER_FETCH:
      console.log("Reducer: GITHUB_USER_FETCH"); // This log fires
      return loop(
        { ...state, isFetchingGithubUser: true }, // From DevTools, I see that this state update occurs
        Cmd.run(_fetchGithubUser, {
          successActionCreator: fetchGithubUserSuccess,
          failActionCreator: fetchGithubUserFailure,
          args: [action.username],
        })
      );

    case GITHUB_USER_SUCCESS:
      return { ...state, response: action.userProfile };

    case GITHUB_USER_FAILURE:
      return { ...state, error: action.error };

    default:
      return state;
  }
};

Switching to combineReducers from redux-loop immediately resolved the issue. Thank you.


[FEATURE] Retrieve Documents when using AiService

Context

#660
Change

Checklist
Before submitting this PR, please check the following points:

[X] I have added unit and integration tests for my change
[X] All unit and integration tests in the module I have added/changed are green
[X] All unit and integration tests in the core and main modules are green
[X] I have added/updated the documentation
[ ] I have added an example in the examples repo (only for "big" features)
[ ] I have added my new module in the BOM (only when a new module is added)

Checklist for adding new embedding store integration

[ ] I have added a {NameOfIntegration}EmbeddingStoreIT that extends from either EmbeddingStoreIT or EmbeddingStoreWithFilteringIT

Hi @KaisNeffati, do you mind if I will do and push some changes?

Fell free to do it @langchain4j

@KaisNeffati could you please add me as collaborator to your repo? I can't push to this branch/PR :(

Done

@KaisNeffati thank you! I have pushed my changes, could you please review? I hope now it is a bit more generic (Result instead of WithSources). I have also changed UserMessage to ChatMessage right away in all places  to avoid doing breaking changes one more time in the near future.

@KaisNeffati thanks! Then I am merging it.


IE9 and export default with ES5 compile target

Hello,
we are using TS 1.5 and have a compile target set to ES5.
Now there is an issue with IE9 and the default keyword. Is there a way to get around this via a compiler flag? Or is this just a bug because in IE9 'default' is a reserved word?

Sorry, this is not a TS problem.

While digging deeper, this finally is a tsc problem.
When the compile target is set to ES5, module imports with a default import are transpiled to e.g. 'modulevar.default()'. This breaks in IE9.
While it is a view chars longer the ES5 mode should product 'modulevar"default"' instead for IE9 compatibility.

I think https://github.com/Microsoft/TypeScript/issues/2296 covers the general issue here. Note related pull requests https://github.com/Microsoft/TypeScript/pull/2387 and https://github.com/Microsoft/TypeScript/pull/2760

The referenced issues only cover ES3 behaviour. However, IE9 claims ES5 support, but it still does not accept modulevar.default.
Does this mean we must use ES3 to be compatible with IE9? Or could tsc output modulevar["default"] also in ES5 mode?

Currently you have to use ES3 to support IE9.
Alexander Krauss<EMAIL_ADDRESS>schrieb am So., 9. Aug. 2015
22:05:

The referenced issues only cover ES3 behaviour. However, IE9 claims ES5
support, but it still does not accept modulevar.default.
Does this mean we must use ES3 to be compatible with IE9? Or could tsc
output modulevar["default"] also in ES5 mode?
—
Reply to this email directly or view it on GitHub
https://github.com/Microsoft/TypeScript/issues/4145#issuecomment-129233318
.

This is seriously affecting my ability to use TS
Can I suggest a switch or tsconfig option to enable this functionality?

Can I suggest a switch or tsconfig option to enable this functionality?

use --target ES3.

@mhegazy no that's not the same.  That removes support for property get/set.
I need support for this and get/set.
So either "--target ES3" needs to convert property get/sets into get/set or the ES5 conversion needs to do export["default"]

The easiest solution for your problem would be to write a babel plugin to do the transforms from es5 to es3 which you need. And then run babel on your sources after typescript did.
But that may not be the best solution.

I'm sure I could
But I still think this should be addressed as an issue with typescript.
I will affect anyone that uses a default export and IE9 and the fix is easy enough - use export['default']

Can we add an option this?
something like enableExportDefaultQuote


Added run_exports

This PR adds run_exports to the C library, so that downstream packages that build against lal are pinned to compatible versions.

Checklist

[x] Used a fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@skymoo, any objections?


Do not de-duplicate event types

Provider unit tests
No more de-duplication of event types

Changes

/kind

Fixes #

Release Note

Docs

Is this related to the grouping we discussed?

No, this gets rid of deduplication. I will experiment with grouping later.


Cold staking

Draft pull request, i need particl-bitcore-lib to be merged so i can update the package-lock.json file

Doesn't look like there is a lint command


elastalert-test-rule says .raw fields are missing

Because .raw fields are not included in _source, elastalert-test-rule thinks those keys are missing. This may happen with top_count_keys because they default to having ".raw" appended.

Reopening issue: top_count_keys are added to "include", even if they have ".raw", and should not be. This causes them to be reported as missing.

Having the problem described by @Qmando


Improve render status for porch

Creating an umbrella issue to track requested improvements and issues with the Porch render status.
Porch does not set Exit Code field on render status
When kpt functions are executed through Porch, the ExitCode field in renderStatus.result and  renderStatus.result.Items[] are always set to zero regardless if a function errors.
This can be reproduced by adding set-namespace mutator to the Kptfile, and setting configPath input to an non-ConfigMap and non-SetNamespace resource.
In Porch, the following is retuned:
kind: PackageRevisionResources
apiVersion: porch.kpt.dev/v1alpha1
...
status:
  renderStatus:
    result:
      kind: FunctionResultList
      apiVersion: kpt.dev/v1
      metadata:
        name: fnresults
        creationTimestamp:
      ExitCode: 0
      Items:
      - Image: gcr.io/kpt-fn/set-namespace:v0.4.1
        ExecPath: ''
        Stderr: ''
        ExitCode: 0
        Results:
        - message: unknown functionConfig Kind=Kptfile ApiVersion=kpt.dev/v1, expect
            `SetNamespace` or `ConfigMap`
          severity: error
    error: "fn.render: pkg .:\n\tpkg.render:\n\tpipeline.run: error: function failure"

whereas with kpt fn render the exit code field is set:
apiVersion: kpt.dev/v1
kind: FunctionResultList
metadata:
  name: fnresults
exitCode: 1
items:
  - image: gcr.io/kpt-fn/set-namespace:v0.4.1
    stderr: 'failed to evaluate function: error: function failure'
    exitCode: 1
    results:
      - message: unknown functionConfig Kind=Kptfile ApiVersion=kpt.dev/v1, expect `SetNamespace` or `ConfigMap`
        severity: error

The impact of this is that clients of Porch will not be able to use the ErrorCode field to determine if a function failed.
Porch does not set Stderr field on render status
Similar to the exit code field, Porch also does not set the Stderr field.
This can be reproduced by adding an invalid function to the Kptfile.
In Porch, the following is returned:
status:
  renderStatus:
    result:
      kind: FunctionResultList
      apiVersion: kpt.dev/v1
      metadata:
        name: fnresults
        creationTimestamp:
      ExitCode: 0
      Items:
      - Image: gcr.io/kpt-fn/set-namespace:v5.0.0
        ExecPath: ''
        Stderr: ''
        ExitCode: 0
        Results:
    error: "fn.render: pkg .:\n\tpkg.render:\n\tpipeline.run: func eval \"gcr.io/kpt-fn/set-namespace:v5.0.0\"
      failed: rpc error: code = Unknown desc = unable to get the grpc client to the
      pod for gcr.io/kpt-fn/set-namespace:v5.0.0: unable to get the entrypoint for
      gcr.io/kpt-fn/set-namespace:v5.0.0: GET https://gcr.io/v2/kpt-fn/set-namespace/manifests/v5.0.0:
      MANIFEST_UNKNOWN: Failed to fetch \"v5.0.0\" from request \"/v2/kpt-fn/set-namespace/manifests/v5.0.0\"."

Whereas with kpt fn render the stderr field is set:
apiVersion: kpt.dev/v1
kind: FunctionResultList
metadata:
  name: fnresults
exitCode: 1
items:
  - image: gcr.io/kpt-fn/set-namespace:v5.0.0
    stderr: |-
      docker: Error response from daemon: manifest for gcr.io/kpt-fn/set-namespace:v5.0.0 not found: manifest unknown: Failed to fetch "v5.0.0" from request "/v2/kpt-fn/set-namespace/manifests/v5.0.0".
      See 'docker run --help'.
    exitCode: 125

The impact of this is that clients of Porch cannot always iterate through the Items list to determine which function failed. Fortunately the error is returned on the top level error field however it's not associated with a function.
Exclude the Exec Path field from render results
Since functions are executed server side in Porch, this field will likely not be valuable to Porch clients and may leak internal implementation details.
status:
  renderStatus:
    result:
      kind: FunctionResultList
      apiVersion: kpt.dev/v1
      metadata:
        name: fnresults
        creationTimestamp:
      ExitCode: 0
      Items:
      - Image: gcr.io/kpt-fn/set-namespace:v5.0.0
        ExecPath: ''
        Stderr: ''
        ExitCode: 0
        Results: ...

Inconsistent field casing
The casing of the fields in FunctionResultList is inconsistent with Porch and kpt fn render. The fields in kpt fn render are camelCase whereas the same fields in Porch are mostly PascalCase.
This can be seen in the examples above.
Requesting FunctionResultList always includes all functions, including those not executed
This is a feature request for the FunctionResultList (for both Porch and kpt) to include all functions, including any functions that were not executed and/or skipped. Today you only know if a function is skipped by comparing the functions in the FunctionResultList to those in the Kptfile.
Requesting rendering does not stop if a validation function fails
This is a feature request to execute all Kptfile validation functions, even if one of the validation functions fails. An advantage of this is that this will allow us to show the user all validation failures at one time, not just the first validation failure.

cc @droot

Inconsistent field casing
The casing of the fields in FunctionResultList is inconsistent with Porch and kpt fn render. The fields in kpt fn render are camelCase whereas the same fields in Porch are mostly PascalCase.

This is resolved with #3638.


Project status with respect to Persona shutdown

Hello! Debian maintainer of mod-authnz-persona here.
It is my understanding that this project never became completely independent of Mozilla's hosting, and so this software will stop working on November 30th (https://wiki.mozilla.org/Identity/Persona_Shutdown_Guidelines_for_Reliers). I'm under the impression that full federation was never implemented.
Please could you confirm if this is correct?
If this module then will become useful to nobody, then I should probably have it removed from Debian's next release.

@djc may be able to comment more, but my understanding is that you're basically correct - this module depends on the mozilla-hosted verifier [1] and so will cease to work once that service is shut down.
It may still be useful to anyone who is self-hosting the persona infrastructure, but it looks like they'd have to recompile it to point to their own verifier instance.
[1] https://github.com/mozilla/mod_authnz_persona/blob/master/src/defines.h#L21

That sounds right, yes. I've toyed with the idea of creating mod_authnz_portier [1], but haven't done so yet.
[1] https://portier.github.io/

Thank you for confirming! I've filed a removal in Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845582
I'd be happy for you to close this issue, but it also might be an idea to keep it open to advise others of its status ("project is broken; please help fix or help out with Portier").


fix logic of needsTag, update tests and CleanupTags

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (85cbc05) 56.55% compared to head (3a049b7) 56.06%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #13      +/-   ##
==========================================
- Coverage   56.55%   56.06%   -0.50%
==========================================
  Files           7        7
  Lines         267      264       -3
==========================================
- Hits          151      148       -3
  Misses        114      114
  Partials        2        2

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Pass metadata for the CI system through to SNS

@benpatterson this is now ready for review.
The changes for the new feature have been running on heroku successfully for a couple days, I just redeployed this version of the code after rebasing with master to pick up the pylint changes so that the travis build would pass on this branch.

:+1:


Button group: check if we should use fieldset>legend instead of role="group" and aria-label

In our examples, the label is not visible, but in a real world application, a button group should have a visible label. For this case, I think it would be better to use a fieldset / legend construct (https://www.w3.org/WAI/tutorials/forms/grouping/#associating-related-controls-with-wai-aria).
A breaking change can be prevented by supporting the current structure as well as the fieldset > legend one. Possibly, the current structure could be a variant where it's not possible or necessary to show the label.

Closing as won't do (implementing this for v9)


Removing k8s contrib file

We now have a helm chart that users should use instead

Codecov Report

Merging #12761 into master will decrease coverage by 0.00%.
The diff coverage is 37.96%.

@@            Coverage Diff             @@
##           master   #12761      +/-   ##
==========================================
- Coverage   43.30%   43.30%   -0.01%
==========================================
  Files         648      647       -1
  Lines       71765    71799      +34
==========================================
+ Hits        31077    31091      +14
- Misses      35657    35672      +15
- Partials     5031     5036       +5

Impacted Files
Coverage Δ

modules/indexer/code/elastic_search.go
0.00% <0.00%> (ø)

modules/indexer/code/indexer.go
35.22% <36.47%> (-0.95%)
:arrow_down:

modules/queue/queue.go
32.25% <47.61%> (+7.86%)
:arrow_up:

modules/charset/charset.go
68.53% <0.00%> (-4.50%)
:arrow_down:

modules/log/event.go
57.54% <0.00%> (-1.89%)
:arrow_down:

modules/git/repo.go
49.74% <0.00%> (-0.51%)
:arrow_down:

cmd/dump.go
1.03% <0.00%> (-0.02%)
:arrow_down:

models/issue_comment.go
53.90% <0.00%> (+0.15%)
:arrow_up:

models/models.go
57.94% <0.00%> (+0.50%)
:arrow_up:

models/error.go
35.32% <0.00%> (+0.51%)
:arrow_up:

... and 5 more

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 226aef7...98b1567. Read the comment docs.


Owners should not be allowed to enter duplicate mobile numbers.

Owners should not be allowed to enter duplicate mobile numbers, this will create confusion and trouble

I honestly don't think it's worth the extra code to defend against this. If you want to make a suggestion you could send a PR, I guess, but if it's a lot of code I don't expect it will go onto main.

can i solve

I don’t think we need this kind of complexity here. It’s a difficult decision but closing.


Can core-xhr and core-ajax not merged into one?

<core-ajax id="xhr"></core-ajax>
<core-xhr id="xhr"></core-xhr>
this.$.xhr.request({url: url, params: params, callback: callback});

I can't see a reason why we need two ajax elements?

I am not sure but I am guess to make it easier to create different types of requests (similar to JQuery creating $.load, $.getJSON, $.getScript, etc which call $.ajax underneath the covers)

Closing this issue due to age and the release of version 1 of Polymer - please feel free to re-open if this is incorrect.


Multi-object Tracking Support

Hi,
Thank you very much for this work. I have a question though. Can the UDT algorithm do Multi-object tracking? If so, is that supported in the code?

MOT methods typically require the object detector, which is unavailable in our unsupervised framework.
Sorry, the current code mainly focuses on the single-object tracking with the initial bounding box.


Add imagePullSecrets for injected containers

When user deploy new application with istio, istio injector(manual and automatic) will inject two containers: istio-proxy and istio-proxy_init. If customer configure those two images to be pulled from private registry, then the image pull will be failed as there is no imagePullSecrets, seems we need to add imagePullSecrets to inject containers.
What do you think @linsun @rshriram @ayj

This is related to https://github.com/istio/istio/issues/4729 , both of those two issues want to enable istio injection can work offline with private docker registry.

cc @yusuoh

@ayj how about enable istioctl kube-inject support option of imagePullSecrets, just like what we did for imagePullPolicy?

IMO kube-inject flags is already quite large. I imagined flags would only be used for the most common aspects, e.g. hub, tag, debug. And the configuration file would be used for more complex customization.

@ayj where in the configMap should I put this?  I added  it where I thought it should go and I am still getting the image pull error.

Also would I still have to use imagePullSecret if I already edited my default service account to use the pull secret

where in the configMap should I put this?

I just looked and this will require a code/config change. The applied sidecar config is a list of initContainers, Containers, and volumes. imagePullSecrets would need to be added at this level and corresponding templates updated, e.g.
diff --git a/pilot/pkg/kube/inject/inject.go b/pilot/pkg/kube/inject/inject.go
index d8c872ac9..6a89053c2 100644
--- a/pilot/pkg/kube/inject/inject.go
+++ b/pilot/pkg/kube/inject/inject.go
@@ -93,9 +93,10 @@ const (
 // SidecarInjectionSpec collects all container types and volumes for
 // sidecar mesh injection
 type SidecarInjectionSpec struct {
-       InitContainers []v1.Container `yaml:"initContainers"`
-       Containers     []v1.Container `yaml:"containers"`
-       Volumes        []v1.Volume    `yaml:"volumes"`
+       InitContainers   []v1.Container            `yaml:"initContainers"`
+       Containers       []v1.Container            `yaml:"containers"`
+       Volumes          []v1.Volume               `yaml:"volumes"`
+       ImagePullSecrets []v1.LocalObjectReference `yaml:"imagePullSecrets"`
 }

 // SidecarTemplateData is the data object to which the templated

cc @yusuoh

Hello, how can i enable this config in istio sidecar injector config map? I add a config like this but it still doesnt work.
data:
  config: |-
    policy: {{ .Values.global.proxy.autoInject }}
    template: |-
{{- if .Values.global.imagePullSecrets }}
      imagePullSecrets:
{{- range .Values.global.imagePullSecrets }}
      - name: {{ . }}
{{- end }}
{{- end }}
      initContainers:
      - name: istio-init


Does not work

It used to work but at some point in the last year it stopped

Thanks for letting me know.
I've looked into it, seems the zebak id has changed since I created this plugin. I've submitted a new version to the plugin hub.


Add the @backstage/plugin-auth-node package

There are several places where backend plugins directly import @backstage/plugin-auth-backend. This breaks our import guidelines and can leads to problems, such as circular dependencies. Backend plugins should only import from the central core backend packages and from -node suffixed packages.
This PR adds a @backstage/plugin-auth-node, and shifts over all cross-backend auth facility consumption to it. This should untangle the dependency mess somewhat.

will reconstruct at smaller scale!


Update Spring related CODEOWNERS

Description
According to https://github.com/Azure/azure-sdk/blob/main/docs/policies/opensource.md#codeowners, "Place more general rules higher in the file and more specific rules lower in the file as GitHub uses the last matching expression", the Spring App Config and Spring Data Cosmos were wrongly placed. This PR is to fix them.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

/check-enforcer override

/check-enforcer override


Add extract command

Add new command called extract to download the sample app data to the local disk.

Fixed by #49


add support for loadPath as a function

add support for loadPath as a function like i18next-xhr-backend
Had to update gulp-git because build was failing
Let me know if I should update package.json to have absolute version numbers

What's the use case for this?

I wanted to customize path at runtime e.g local-server for dev and cdn for production.
But I found out that this function is evaluated just once, haven't been able to get it to work.
Shall I mark this PR as work-in-progress?

i'm unsure...biggest problem i see we would have to port this to all other backend implementations provided to keep it in line.
So guess i would prefer "closing" this and let this be done in a custom backend...not hard to create a own for this use case.

I am closing this and would appreciate if have any pointers to share.
Thanks

https://www.i18next.com/misc/creating-own-plugins#backend


Release chain v7 support

JIRA Link
N/A
Changelog / Description
Release a REST API that is compatible with Polymesh chain 6.3 and 7.0
Checklist -

[ ] New Feature ?
[ ] Updated swagger annotation (if API structure is changed) ?
[ ] Unit Test (if possible) ?
[ ] Updated the Readme.md (if required) ?

/fast-forward


Remove CODEOWNERS

Description
As discussed.
The rational behind this is that it turns that this features makes more noise
than help. It is hard to maintain and not always on the spot. It is still best
for the PR owner to assign who should review a PR according to their skills
and knowledge of the target code.
Linked issue

Type of change

[ ] 🐞 Bug fix (non-breaking change which fixes an issue)
[ ] 🛠 New feature (non-breaking change which adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🏭 Refactoring that does not change existing functionality but does improve things like code readability, structure etc
[ ] 🔨 New or improved tests for existing code
[x] ⛑ git-flow chore (backport, hotfix, etc)

Developer checklist

[x] I have read the style guide document, and my code follows the code style of this project.
[x] If my code deals with exceptions, it follows the guidelines.
[x] I have updated any documentation accordingly, if needed. Documentation changes can be reflected in opening a PR on cardanodocs.com, amending the inline Haddock comments, any relevant README file or one of the document listed in the docs directory.

Testing checklist

[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

QA Steps

Screenshots (if available)

Merging without AppVeyor. Have rebuilt 4 times already, still failing because it takes too long.
Those files have no impact whatsoever on the codebase :+1:


[Samples] Proposal: Add samples that show collection item placeholders while loading data

Proposal: For each collection add samples that show collection item placeholders while loading data to XAML Controls Gallery and WinUI 3 Controls Gallery apps
Summary
Usually, when you don't have any data in your app immediately you want to show some placeholders (probably animated) that show the user that the data is being loaded.
Something similar to https://flutterappworld.com/flutter-listview-and-gridview-that-shows-loading-widgets/ or https://react-bootstrap.github.io/components/placeholder/
Rationale

Makes an impression that the content is almost there
Allows to keep user's attention longer
There is no such sample available yet

Scope

Capability
Priority

This proposal will allow developers to quickly add placeholders to collection items
Must

This proposal will allow end-users to keep attention to the app longer
Must

Thanks for the suggestion @xperiandri . I agree that this could be a nice feature to add to the WinUI Gallery.

This can be a new native control, or some managed implementation. There is no plans in the roadmap for this feature, but we welcome contributions.


Give each skin their own integer level

It just makes sense to me.
Maybe also think about stating their colors in the database as well? Dunno bout this one though.

I changed my mind. Nah. The rarity already determines the level. It would be redundant.
While you cant query for the skins and sort them by rarity, there are only less than 20 skins for any given gun, so it wouldn't be hard to sort them client side.


user / password?

I got the container up and running. How do I set a user and password? I even tried setting it through the Obsidian application, and I get "failed to fetch."
EDIT: I think it's a reverse proxy issue. I'm using Traefik to handle SSL termination and forward requests to port 8080 of the container. However, it does work if you connect directly to the IP address.

Solved: One of Traefik's middlewares was meddling with it; it's working well, and thank you for this awesome plugin!


use of "un-proper" Quotation marks when language is set to Danish.

Description
When using quotation marks in Typst, on a Danish document, it renders: „...“ by default, which we don't use in Danish. The most common form in Danish is "..." with »...« being preferred by most schools. Babel uses the more common "..." by default, and quite a few other sources suggest that is the default way of quoting:

Write Correct Danish
DSN
EU Vocabularies
Århus University (Quotation marks (inverted commas))
Overleaf

Example:
"Hello World"

Renders: „Hello World“ but trying:
#set smartquote(enabled: true, alternative: true)
"Hello World"

renders as: »Hello World« which is the aforementioned preferred way to quote in a school setting.
Suggested Solution
"Hello World"

Should just get output as "Hello World" while:
#set smartquote(enabled: true, alternative: true)
"Hello World"

should remain, this would align with what Danish students and writers use commonly.
Reproduction URL
No response
Operating system
macOS
Typst version

[x] I am using the latest version of Typst

This would be the place to change it: https://github.com/typst/typst/blob/67422e664b9e7089e8eb4de65c5a25b2817a00c0/crates/typst-library/src/text/quotes.rs#L201-L218

Your sources still don't make it clear whether it's supposed to be “…” or ”…” (notice the different left quotes).
Wikipedia lists both, so that doesn't help either...

It's rather difficult finding exact textbook examples, “…” are indeed the ones I meant we use mainly. I can go look for more examples or find some better sources, so far the only thing usable on wikipedia is that both “…” and »...« are listed as primaries.

there is this danish source:
Sproget DK

Anførselstegn kaldes også citationstegn eller gåseøjne. Der er følgende hovedformer: »...« og "..."; mindre benyttede er de enkelte (ufordoblede) anførselstegn: ›...‹ eller ‘...’

in English

Quotation marks are also known as quotation marks or goose eyes. There are the following main forms: »...« and "..."; less commonly used are the single (unduplicated) quotation marks: ›...‹  or  ‘...’

Babel uses “” for double quotes and ‘’ for single quotes
https://github.com/latex3/babel/blob/main/locale/da/babel-da.ini


Help with opening netcdf4 files via HTTP

This is not necessarily an xarray-beam specific question; however it relates to issues here (e.g. #37, #32) as well as in Pangeo Forge. So I am asking it here. I hope people here will be able to help me. Ultimately I hope this will help use resolve https://github.com/pangeo-forge/pangeo-forge-recipes/pull/373 and move forward with merging Pangeo Forge and xarray-beam.
Goal: open xarray datasets from HTTP endpoints lazily and pass them around a beam pipeline. Delay loading of data variable until later in the pipeline.
What I have tried
Here is the basic pipeline I am working with. It is a simplified, self-contained version of what we will want to do in Pangeo Forge. (Note: this probably requires installing the latest version of fsspec from master, in order to get https://github.com/fsspec/filesystem_spec/pull/973.)
import xarray as xr
import fsspec

import apache_beam as beam
from apache_beam.testing.test_pipeline import TestPipeline
from apache_beam.testing.util import BeamAssertException, assert_that

def open_http_url_with_fsspec(url):
    return fsspec.open(url, mode='rb')

def open_fsspec_openfile_with_xarray(of):
    with of as fp:
        with xr.open_dataset(fp, engine='h5netcdf') as ds:
            return ds

def load_xarray_ds(ds):
    return ds.load()

def is_xr_dataset():
    def _is_xr_dataset(actual):
        for ds in actual:
            if not isinstance(ds, xr.Dataset):
                raise BeamAssertException(f"Object {ds} has type {type(ds)}, expected xr.Dataset.")
            if not ds.AerosolOpticalThickness.variable._in_memory:
                raise BeamAssertException(f"Variable not in memory")

    return _is_xr_dataset

URL = 'https://www.unidata.ucar.edu/software/netcdf/examples/OMI-Aura_L2-example.nc'

with TestPipeline() as p:
    inputs = p | beam.Create([URL])
    open_files = inputs | beam.Map(open_http_url_with_fsspec)
    dsets = open_files | beam.Map(open_fsspec_openfile_with_xarray)
    loaded_dsets = dsets | beam.Map(load_xarray_ds)

    assert_that(loaded_dsets, is_xr_dataset())

When I run this I get ValueError: I/O operation on closed file. [while running '[1]: Map(load_xarray_ds)']

Full Traceback
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.9 interpreter.
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/Code/xarray/xarray/backends/file_manager.py in _acquire_with_cache_info(self, needs_lock)
    198             try:
--> 199                 file = self._cache[self._key]
    200             except KeyError:

~/Code/xarray/xarray/backends/lru_cache.py in __getitem__(self, key)
     52         with self._lock:
---> 53             value = self._cache[key]
     54             self._cache.move_to_end(key)

KeyError: [<class 'h5netcdf.core.File'>, (<File-like object HTTPFileSystem, https://www.unidata.ucar.edu/software/netcdf/examples/OMI-Aura_L2-example.nc>,), 'r', (('decode_vlen_strings', True), ('invalid_netcdf', None))]

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.SimpleInvoker.invoke_process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/transforms/core.py in <lambda>(x)
   1638   else:
-> 1639     wrapper = lambda x: [fn(x)]
   1640

<ipython-input-1-53601ea18ea3> in load_xarray_ds(ds)
     19 def load_xarray_ds(ds):
---> 20     return ds.load()
     21

~/Code/xarray/xarray/core/dataset.py in load(self, **kwargs)
    688             if k not in lazy_data:
--> 689                 v.load()
    690

~/Code/xarray/xarray/core/variable.py in load(self, **kwargs)
    443         elif not is_duck_array(self._data):
--> 444             self._data = np.asarray(self._data)
    445         return self

~/Code/xarray/xarray/core/indexing.py in __array__(self, dtype)
    655     def __array__(self, dtype=None):
--> 656         self._ensure_cached()
    657         return np.asarray(self.array, dtype=dtype)

~/Code/xarray/xarray/core/indexing.py in _ensure_cached(self)
    652         if not isinstance(self.array, NumpyIndexingAdapter):
--> 653             self.array = NumpyIndexingAdapter(np.asarray(self.array))
    654

~/Code/xarray/xarray/core/indexing.py in __array__(self, dtype)
    625     def __array__(self, dtype=None):
--> 626         return np.asarray(self.array, dtype=dtype)
    627

~/Code/xarray/xarray/core/indexing.py in __array__(self, dtype)
    526         array = as_indexable(self.array)
--> 527         return np.asarray(array[self.key], dtype=None)
    528

~/Code/xarray/xarray/backends/h5netcdf_.py in __getitem__(self, key)
     50     def __getitem__(self, key):
---> 51         return indexing.explicit_indexing_adapter(
     52             key, self.shape, indexing.IndexingSupport.OUTER_1VECTOR, self._getitem

~/Code/xarray/xarray/core/indexing.py in explicit_indexing_adapter(key, shape, indexing_support, raw_indexing_method)
    815     raw_key, numpy_indices = decompose_indexer(key, shape, indexing_support)
--> 816     result = raw_indexing_method(raw_key.tuple)
    817     if numpy_indices.tuple:

~/Code/xarray/xarray/backends/h5netcdf_.py in _getitem(self, key)
     59         with self.datastore.lock:
---> 60             array = self.get_array(needs_lock=False)
     61             return array[key]

~/Code/xarray/xarray/backends/h5netcdf_.py in get_array(self, needs_lock)
     46     def get_array(self, needs_lock=True):
---> 47         ds = self.datastore._acquire(needs_lock)
     48         return ds.variables[self.variable_name]

~/Code/xarray/xarray/backends/h5netcdf_.py in _acquire(self, needs_lock)
    181     def _acquire(self, needs_lock=True):
--> 182         with self._manager.acquire_context(needs_lock) as root:
    183             ds = _nc4_require_group(

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/contextlib.py in __enter__(self)
    118         try:
--> 119             return next(self.gen)
    120         except StopIteration:

~/Code/xarray/xarray/backends/file_manager.py in acquire_context(self, needs_lock)
    186         """Context manager for acquiring a file."""
--> 187         file, cached = self._acquire_with_cache_info(needs_lock)
    188         try:

~/Code/xarray/xarray/backends/file_manager.py in _acquire_with_cache_info(self, needs_lock)
    204                     kwargs["mode"] = self._mode
--> 205                 file = self._opener(*self._args, **kwargs)
    206                 if self._mode == "w":

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/h5netcdf/core.py in __init__(self, path, mode, invalid_netcdf, phony_dims, **kwargs)
    720                     self._preexisting_file = mode in {"r", "r+", "a"}
--> 721                     self._h5file = h5py.File(path, mode, **kwargs)
    722         except Exception:

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/h5py/_hl/files.py in __init__(self, name, mode, driver, libver, userblock_size, swmr, rdcc_nslots, rdcc_nbytes, rdcc_w0, track_order, fs_strategy, fs_persist, fs_threshold, fs_page_size, page_buf_size, min_meta_keep, min_raw_keep, locking, **kwds)
    506                                  fs_page_size=fs_page_size)
--> 507                 fid = make_fid(name, mode, userblock_size, fapl, fcpl, swmr=swmr)
    508

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/h5py/_hl/files.py in make_fid(name, mode, userblock_size, fapl, fcpl, swmr)
    219             flags |= h5f.ACC_SWMR_READ
--> 220         fid = h5f.open(name, flags, fapl=fapl)
    221     elif mode == 'r+':

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/h5f.pyx in h5py.h5f.open()

h5py/h5fd.pyx in h5py.h5fd.H5FD_fileobj_read()

~/Code/filesystem_spec/fsspec/spec.py in readinto(self, b)
   1587         out = memoryview(b).cast("B")
-> 1588         data = self.read(out.nbytes)
   1589         out[: len(data)] = data

~/Code/filesystem_spec/fsspec/implementations/http.py in read(self, length)
    573             length = min(self.size - self.loc, length)
--> 574         return super().read(length)
    575

~/Code/filesystem_spec/fsspec/spec.py in read(self, length)
   1572         if self.closed:
-> 1573             raise ValueError("I/O operation on closed file.")
   1574         logger.debug("%s read: %i - %i" % (self, self.loc, self.loc + length))

ValueError: I/O operation on closed file.

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-1-53601ea18ea3> in <module>
     41     loaded_dsets = dsets | beam.Map(load_xarray_ds)
     42
---> 43     assert_that(loaded_dsets, is_xr_dataset())

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/pipeline.py in __exit__(self, exc_type, exc_val, exc_tb)
    594     try:
    595       if not exc_type:
--> 596         self.result = self.run()
    597         self.result.wait_until_finish()
    598     finally:

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/testing/test_pipeline.py in run(self, test_runner_api)
    110
    111   def run(self, test_runner_api=True):
--> 112     result = super().run(
    113         test_runner_api=(
    114             False if self.not_use_test_runner_api else test_runner_api))

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/pipeline.py in run(self, test_runner_api)
    544       # When possible, invoke a round trip through the runner API.
    545       if test_runner_api and self._verify_runner_api_compatible():
--> 546         return Pipeline.from_runner_api(
    547             self.to_runner_api(use_fake_coders=True),
    548             self.runner,

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/pipeline.py in run(self, test_runner_api)
    571         finally:
    572           shutil.rmtree(tmpdir)
--> 573       return self.runner.run_pipeline(self, self._options)
    574     finally:
    575       if not is_in_ipython():

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/direct/direct_runner.py in run_pipeline(self, pipeline, options)
    129       runner = BundleBasedDirectRunner()
    130
--> 131     return runner.run_pipeline(pipeline, options)
    132
    133

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/fn_runner.py in run_pipeline(self, pipeline, options)
    197         options.view_as(pipeline_options.ProfilingOptions))
    198
--> 199     self._latest_run_result = self.run_via_runner_api(
    200         pipeline.to_runner_api(default_environment=self._default_environment))
    201     return self._latest_run_result

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/fn_runner.py in run_via_runner_api(self, pipeline_proto)
    208     # TODO(pabloem, BEAM-7514): Create a watermark manager (that has access to
    209     #   the teststream (if any), and all the stages).
--> 210     return self.run_stages(stage_context, stages)
    211
    212   @contextlib.contextmanager

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/fn_runner.py in run_stages(self, stage_context, stages)
    393           )
    394
--> 395           stage_results = self._run_stage(
    396               runner_execution_context, bundle_context_manager)
    397

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/fn_runner.py in _run_stage(self, runner_execution_context, bundle_context_manager)
    658     while True:
    659       last_result, deferred_inputs, fired_timers, watermark_updates = (
--> 660           self._run_bundle(
    661               runner_execution_context,
    662               bundle_context_manager,

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/fn_runner.py in _run_bundle(self, runner_execution_context, bundle_context_manager, data_input, data_output, input_timers, expected_timer_output, bundle_manager)
    781         expected_timer_output)
    782
--> 783     result, splits = bundle_manager.process_bundle(
    784         data_input, data_output, input_timers, expected_timer_output)
    785     # Now we collect all the deferred inputs remaining from bundle execution.

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/fn_runner.py in process_bundle(self, inputs, expected_outputs, fired_timers, expected_output_timers, dry_run)
   1092             process_bundle_descriptor.id,
   1093             cache_tokens=[next(self._cache_token_generator)]))
-> 1094     result_future = self._worker_handler.control_conn.push(process_bundle_req)
   1095
   1096     split_results = []  # type: List[beam_fn_api_pb2.ProcessBundleSplitResponse]

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/portability/fn_api_runner/worker_handlers.py in push(self, request)
    376       self._uid_counter += 1
    377       request.instruction_id = 'control_%s' % self._uid_counter
--> 378     response = self.worker.do_instruction(request)
    379     return ControlFuture(request.instruction_id, response)
    380

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/sdk_worker.py in do_instruction(self, request)
    578     if request_type:
    579       # E.g. if register is set, this will call self.register(request.register))
--> 580       return getattr(self, request_type)(
    581           getattr(request, request_type), request.instruction_id)
    582     else:

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/sdk_worker.py in process_bundle(self, request, instruction_id)
    616         with self.maybe_profile(instruction_id):
    617           delayed_applications, requests_finalization = (
--> 618               bundle_processor.process_bundle(instruction_id))
    619           monitoring_infos = bundle_processor.monitoring_infos()
    620           monitoring_infos.extend(self.state_cache_metrics_fn())

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/bundle_processor.py in process_bundle(self, instruction_id)
    993                   element.timer_family_id, timer_data)
    994           elif isinstance(element, beam_fn_api_pb2.Elements.Data):
--> 995             input_op_by_transform_id[element.transform_id].process_encoded(
    996                 element.data)
    997

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/bundle_processor.py in process_encoded(self, encoded_windowed_values)
    219       decoded_value = self.windowed_coder_impl.decode_from_stream(
    220           input_stream, True)
--> 221       self.output(decoded_value)
    222
    223   def monitoring_infos(self, transform_id, tag_to_pcollection_id):

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.Operation.output()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.Operation.output()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.SingletonConsumerSet.receive()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner._reraise_augmented()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.SimpleInvoker.invoke_process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common._OutputProcessor.process_outputs()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.SingletonConsumerSet.receive()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner._reraise_augmented()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.SimpleInvoker.invoke_process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common._OutputProcessor.process_outputs()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.SingletonConsumerSet.receive()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner._reraise_augmented()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.SimpleInvoker.invoke_process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common._OutputProcessor.process_outputs()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.SingletonConsumerSet.receive()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner._reraise_augmented()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.SimpleInvoker.invoke_process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common._OutputProcessor.process_outputs()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.SingletonConsumerSet.receive()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/worker/operations.cpython-39-darwin.so in apache_beam.runners.worker.operations.DoOperation.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner._reraise_augmented()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.DoFnRunner.process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/runners/common.cpython-39-darwin.so in apache_beam.runners.common.SimpleInvoker.invoke_process()

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/apache_beam/transforms/core.py in <lambda>(x)
   1637     wrapper = lambda x, *args, **kwargs: [fn(x, *args, **kwargs)]
   1638   else:
-> 1639     wrapper = lambda x: [fn(x)]
   1640
   1641   label = 'Map(%s)' % ptransform.label_from_callable(fn)

<ipython-input-1-53601ea18ea3> in load_xarray_ds(ds)
     18
     19 def load_xarray_ds(ds):
---> 20     return ds.load()
     21
     22

~/Code/xarray/xarray/core/dataset.py in load(self, **kwargs)
    687         for k, v in self.variables.items():
    688             if k not in lazy_data:
--> 689                 v.load()
    690
    691         return self

~/Code/xarray/xarray/core/variable.py in load(self, **kwargs)
    442             self._data = as_compatible_data(self._data.compute(**kwargs))
    443         elif not is_duck_array(self._data):
--> 444             self._data = np.asarray(self._data)
    445         return self
    446

~/Code/xarray/xarray/core/indexing.py in __array__(self, dtype)
    654
    655     def __array__(self, dtype=None):
--> 656         self._ensure_cached()
    657         return np.asarray(self.array, dtype=dtype)
    658

~/Code/xarray/xarray/core/indexing.py in _ensure_cached(self)
    651     def _ensure_cached(self):
    652         if not isinstance(self.array, NumpyIndexingAdapter):
--> 653             self.array = NumpyIndexingAdapter(np.asarray(self.array))
    654
    655     def __array__(self, dtype=None):

~/Code/xarray/xarray/core/indexing.py in __array__(self, dtype)
    624
    625     def __array__(self, dtype=None):
--> 626         return np.asarray(self.array, dtype=dtype)
    627
    628     def __getitem__(self, key):

~/Code/xarray/xarray/core/indexing.py in __array__(self, dtype)
    525     def __array__(self, dtype=None):
    526         array = as_indexable(self.array)
--> 527         return np.asarray(array[self.key], dtype=None)
    528
    529     def transpose(self, order):

~/Code/xarray/xarray/backends/h5netcdf_.py in __getitem__(self, key)
     49
     50     def __getitem__(self, key):
---> 51         return indexing.explicit_indexing_adapter(
     52             key, self.shape, indexing.IndexingSupport.OUTER_1VECTOR, self._getitem
     53         )

~/Code/xarray/xarray/core/indexing.py in explicit_indexing_adapter(key, shape, indexing_support, raw_indexing_method)
    814     """
    815     raw_key, numpy_indices = decompose_indexer(key, shape, indexing_support)
--> 816     result = raw_indexing_method(raw_key.tuple)
    817     if numpy_indices.tuple:
    818         # index the loaded np.ndarray

~/Code/xarray/xarray/backends/h5netcdf_.py in _getitem(self, key)
     58         key = tuple(list(k) if isinstance(k, np.ndarray) else k for k in key)
     59         with self.datastore.lock:
---> 60             array = self.get_array(needs_lock=False)
     61             return array[key]
     62

~/Code/xarray/xarray/backends/h5netcdf_.py in get_array(self, needs_lock)
     45 class H5NetCDFArrayWrapper(BaseNetCDF4Array):
     46     def get_array(self, needs_lock=True):
---> 47         ds = self.datastore._acquire(needs_lock)
     48         return ds.variables[self.variable_name]
     49

~/Code/xarray/xarray/backends/h5netcdf_.py in _acquire(self, needs_lock)
    180
    181     def _acquire(self, needs_lock=True):
--> 182         with self._manager.acquire_context(needs_lock) as root:
    183             ds = _nc4_require_group(
    184                 root, self._group, self._mode, create_group=_h5netcdf_create_group

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/contextlib.py in __enter__(self)
    117         del self.args, self.kwds, self.func
    118         try:
--> 119             return next(self.gen)
    120         except StopIteration:
    121             raise RuntimeError("generator didn't yield") from None

~/Code/xarray/xarray/backends/file_manager.py in acquire_context(self, needs_lock)
    185     def acquire_context(self, needs_lock=True):
    186         """Context manager for acquiring a file."""
--> 187         file, cached = self._acquire_with_cache_info(needs_lock)
    188         try:
    189             yield file

~/Code/xarray/xarray/backends/file_manager.py in _acquire_with_cache_info(self, needs_lock)
    203                     kwargs = kwargs.copy()
    204                     kwargs["mode"] = self._mode
--> 205                 file = self._opener(*self._args, **kwargs)
    206                 if self._mode == "w":
    207                     # ensure file doesn't get overridden when opened again

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/h5netcdf/core.py in __init__(self, path, mode, invalid_netcdf, phony_dims, **kwargs)
    719                 else:
    720                     self._preexisting_file = mode in {"r", "r+", "a"}
--> 721                     self._h5file = h5py.File(path, mode, **kwargs)
    722         except Exception:
    723             self._closed = True

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/h5py/_hl/files.py in __init__(self, name, mode, driver, libver, userblock_size, swmr, rdcc_nslots, rdcc_nbytes, rdcc_w0, track_order, fs_strategy, fs_persist, fs_threshold, fs_page_size, page_buf_size, min_meta_keep, min_raw_keep, locking, **kwds)
    505                                  fs_persist=fs_persist, fs_threshold=fs_threshold,
    506                                  fs_page_size=fs_page_size)
--> 507                 fid = make_fid(name, mode, userblock_size, fapl, fcpl, swmr=swmr)
    508
    509             if isinstance(libver, tuple):

/opt/miniconda3/envs/pangeo-forge-recipes/lib/python3.9/site-packages/h5py/_hl/files.py in make_fid(name, mode, userblock_size, fapl, fcpl, swmr)
    218         if swmr and swmr_support:
    219             flags |= h5f.ACC_SWMR_READ
--> 220         fid = h5f.open(name, flags, fapl=fapl)
    221     elif mode == 'r+':
    222         fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/h5f.pyx in h5py.h5f.open()

h5py/h5fd.pyx in h5py.h5fd.H5FD_fileobj_read()

~/Code/filesystem_spec/fsspec/spec.py in readinto(self, b)
   1586         """
   1587         out = memoryview(b).cast("B")
-> 1588         data = self.read(out.nbytes)
   1589         out[: len(data)] = data
   1590         return len(data)

~/Code/filesystem_spec/fsspec/implementations/http.py in read(self, length)
    572         else:
    573             length = min(self.size - self.loc, length)
--> 574         return super().read(length)
    575
    576     async def async_fetch_all(self):

~/Code/filesystem_spec/fsspec/spec.py in read(self, length)
   1571             length = self.size - self.loc
   1572         if self.closed:
-> 1573             raise ValueError("I/O operation on closed file.")
   1574         logger.debug("%s read: %i - %i" % (self, self.loc, self.loc + length))
   1575         if length == 0:

ValueError: I/O operation on closed file. [while running '[1]: Map(load_xarray_ds)']

This is not quite the same error as I am getting in https://github.com/pangeo-forge/pangeo-forge-recipes/pull/373; there it it instead OSError: Unable to open file (incorrect metadata checksum after all read attempts). I have not been able to reproduce that error outside of pytest. However, my example here fails at the same point: when calling ds.load() on an h5netcdf-backed xarray dataset pointing at an fsspec HTTPFile object.
What is wrong
Overall my concern is with this pattern:
def open_fsspec_openfile_with_xarray(of):
    with of as fp:
        return xr.open_dataset(fp, engine='h5netcdf') as ds:
            return ds

It feels wrong. I should either be yeilding or else not using context managers. The first context manager is necessary. The second may be optional. But overall my understanding is that the outputs of the Map function need to be pickled, in which case the contextmanager pattern doesn't make sense at all. I have tried various other flavors, like
def open_fsspec_openfile_with_xarray(of):
    with of as fp:
        with xr.open_dataset(fp, engine='h5netcdf') as ds:
            pass
    return ds

or
def open_fsspec_openfile_with_xarray(of):
    with of as fp:
        ds =  xr.open_dataset(fp, engine='h5netcdf')
    return ds

but nothing seems to work. The fundamental issue seems to be simply this
with fsspec.open(URL) as fp:
    ds = xr.open_dataset(fp, engine='h5netcdf')
ds.load()  # -> ValueError: I/O operation on closed file.

Has anyone here managed to make something like this work? I feel like I'm missing something obvious.
cc @martindurant

One other weird datapoint that I have discovered is that I can pickle the un-loadable dataset, load it from the pickle, and then  call .load() and it works!
url = 'https://www.unidata.ucar.edu/software/netcdf/examples/OMI-Aura_L2-example.nc' # netcdf

open_file = fsspec.open(url, mode='rb')
with open_file as fp:
    with xr.open_dataset(fp, engine='h5netcdf') as ds:
        pass

ds_pk = pickle.dumps(ds)
ds1 = pickle.loads(ds_pk)
ds1.load()

This suggests that the dataset is serializable in some way. But something is happening in beam that is preventing that path from being taken.

I'm enjoying the conversation with myself, so I'll just keep going... 🙃
I figured out a bizarre workaround that makes it work
def open_fsspec_openfile_with_xarray(of):
    with of as fp:
        with xr.open_dataset(fp, engine='h5netcdf') as ds:
            pass
    ds1 = pickle.loads(pickle.dumps(ds))
    return ds1

Wait, what!?
I would have thought that pickle.dumps() is exactly what was being done anyway, so roundtripping with pickle a second time really shouldn't be making any difference. Can you see anything difference between the __dict__ of ds and ds1 or their binary pickled representation? What about if you pickle with protocol=1?
By the way, copy.deepcopy should do about the same thing, without first making the bytestring.

I have not tried to introspect the pickle objects. I don't know much about pickle details and internals. https://github.com/google/xarray-beam/issues/49#issuecomment-1145166766 is a fully isolated, copy-pasteable reproducer for this, so if you wanted to dig in, that would be the place to start.
My best guess is that there is an is_closed parameter somewhere deep in the h5py.File object, and that pickling / unpickling triggers this to be reset. For http, it doesn't really mean anything for a file to be "open", so this notion of open / closed files can only cause problem.
This could also be interacting with Xarray in some unexpected ways. See https://github.com/pydata/xarray/issues/4242 for some discussion of that.

I got some weird conversion error
~/conda/envs/py38/lib/python3.8/site-packages/xarray/conventions.py in _update_bounds_attributes(variables)
    399     for v in variables.values():
    400         attrs = v.attrs
--> 401         has_date_units = "units" in attrs and "since" in attrs["units"]
    402         if has_date_units and "bounds" in attrs:
    403             if attrs["bounds"] in variables:

TypeError: argument of type 'Empty' is not iterable

Perhaps I need later versions of things.

Just try with a different remote file, e.g
url = 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc'

Just a guess, but have you tried asking Beam to use cloudpickle rather than dill? I believe this is a recently added option. Cloudpickle is used for Dask, so this might work a bit more consistently.

Thanks for the suggestion Stephan. I tried as follows
from apache_beam.options.pipeline_options import PipelineOptions
options = PipelineOptions(pickle_library="cloudpickle")
with TestPipeline(options=options) as p:

However, it appears to have no effect. I can specify pickle_library="foobar" with no consequences. I am on Beam 2.38.0, so it should support the cloudpickle option, which was introduced in 2.36.0. Maybe I am not passing the option correctly...

I can specify pickle_library="foobar" with no consequences.

This is probably a red herring. The code to set the pickler doesn't raise any errors if you pass an invalid option. So I am going to assume that that option does work, and that it doesn't solve the problem.

Some more deep introspecting into these objects.
import xarray as xr
import fsspec
from cloudpickle import dumps, loads
from pprint import pprint as print

url = 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc'
with fsspec.open(url) as fp:
    with xr.open_dataset(fp, engine='h5netcdf') as ds0:
        pass

ds_pk = dumps(ds0)
ds1 = loads(ds_pk)

# go deep inside Xarray's array wrappers to get out the `xarray.backends.h5netcdf_.H5NetCDFArrayWrapper` objects
wrapper0 = ds0.T_ZONES.variable._data.array.array.array.array.array
wrapper1 = ds1.T_ZONES.variable._data.array.array.array.array.array

# now go inside those and get the actual `fsspec.implementations.http.HTTPFile` objects
fobj0 = wrapper0.datastore._manager._args[0]
fobj1 = wrapper1.datastore._manager._args[0]

print(fobj0.__dict__)
print(fobj1.__dict__)

{'_closed': True,
 '_details': {'name': 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc',
              'size': 1183063,
              'type': 'file'},
 'asynchronous': False,
 'autocommit': True,
 'blocksize': 5242880,
 'cache': None,
 'end': None,
 'fs': <fsspec.implementations.http.HTTPFileSystem object at 0x187cf1c10>,
 'kwargs': {},
 'loc': 1183063,
 'loop': <_UnixSelectorEventLoop running=True closed=False debug=False>,
 'mode': 'rb',
 'path': 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc',
 'session': <aiohttp.client.ClientSession object at 0x187cf1e20>,
 'size': 1183063,
 'start': None,
 'url': 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc'}
{'_closed': False,
 '_details': {'name': 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc',
              'size': 1183063,
              'type': 'file'},
 'asynchronous': False,
 'autocommit': True,
 'blocksize': 5242880,
 'cache': <fsspec.caching.BaseCache object at 0x18d4a32e0>,
 'end': None,
 'fs': <fsspec.implementations.http.HTTPFileSystem object at 0x187cf1c10>,
 'kwargs': {},
 'loc': 0,
 'loop': <_UnixSelectorEventLoop running=True closed=False debug=False>,
 'mode': 'rb',
 'path': 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc',
 'session': <aiohttp.client.ClientSession object at 0x187cf1e20>,
 'size': 1183063,
 'start': None,
 'url': 'https://power-datastore.s3.amazonaws.com/v9/climatology/power_901_rolling_zones_utc.nc'}

I tried taking fobj0 and manually setting
fobj0._closed = False
fobj0.loc = 0

ds0.load()

However, this lead to the error
~/Code/filesystem_spec/fsspec/spec.py in readinto(self, b)
   1586         """
   1587         out = memoryview(b).cast("B")
-> 1588         data = self.read(out.nbytes)
   1589         out[: len(data)] = data
   1590         return len(data)

~/Code/filesystem_spec/fsspec/implementations/http.py in read(self, length)
    572         else:
    573             length = min(self.size - self.loc, length)
--> 574         return super().read(length)
    575
    576     async def async_fetch_all(self):

~/Code/filesystem_spec/fsspec/spec.py in read(self, length)
   1576             # don't even bother calling fetch
   1577             return b""
-> 1578         out = self.cache._fetch(self.loc, self.loc + length)
   1579         self.loc += len(out)
   1580         return out

AttributeError: 'NoneType' object has no attribute '_fetch'

So  we need a file-like where close() as a no-op? It seems like  a natural thing to discard read buffers if close gets called, and I suppose that is expected to happen on context end, whether or not explicitly done by xarray.

The fundamental issue seems to be simply this
with fsspec.open(URL) as fp:
    ds = xr.open_dataset(fp, engine='h5netcdf')
ds.load()  # -> ValueError: I/O operation on closed file.

I'm finally looking into this a little in detail.
Why do you use context managers in the functions that you're passing into beam.Map? I would generally not expect something like this to work -- the context manager is explicitly closing the file object.
Objects passed between transforms in a Beam pipeline are not necessarily serialized via pickle (which as I understand would fix this by reopening the file), because it's unnecessary overhead if the objects are evaluated on the same machine.
So anyways, if I were do to this I would not use a context manager in the opener function.

Thanks a lot Stephan! I appreciate your time.

Why do you use context managers in the functions that you're passing into beam.Map?

Because that's what fsspec seems to require! I went on an extremely deep dive on this in https://github.com/fsspec/filesystem_spec/issues/579. In the end, the recommendation from @martindurant was to always use the context manager when opening a file-like object (see https://github.com/fsspec/filesystem_spec/issues/579#issuecomment-1140018018). However, that requirement seems incompatible with serialization, as you noted.
I would love to see an example of opening a NetCDF4 file remotely over HTTP using the h5netcdf engine without a context manager.

I would love to see an example of opening a NetCDF4 file remotely over HTTP using the h5netcdf engine without a context manager.

Ok, so I actually did test this case in https://github.com/fsspec/filesystem_spec/issues/579#issuecomment-1140377495. The following works with HTTP
def open_fsspec_openfile_with_xarray(of):
    return xr.open_dataset(of.open(), engine='h5netcdf')

@martindurant, is that kosher?

Yes, it's fine - the file will "close" (meaning dropping the buffer) when garbage collected. Local files instances made this way also pickle.

But if I do, that I again hit the problem (from https://github.com/fsspec/filesystem_spec/issues/579#issuecomment-1140377495) that fs.open and fsspec.open have different behavior! 😫
This works
open_file = fsspec.open(url)
ds = xr.open_dataset(open_file.open())

# but not
ds = xr.open_dataset(open_file)
# -> AttributeError: 'HTTPFile' object has no attribute '__fspath__'

or this works
from fsspec.implementations.http import HTTPFileSystem
fs = HTTPFileSystem()
open_file = fs.open(url)
ds = xr.open_dataset(open_file)
# but not
ds = xr.open_dataset(open_file.open())
# -> AttributeError: 'HTTPFile' object has no attribute 'open'"

Ok I am satisfied with my workaround in https://github.com/pangeo-forge/pangeo-forge-recipes/pull/373/commits/c20f3fd26655d36a935ee44064042b41c9791daa, which is basically
if hasattr(open_file, "open"):
    open_file = open_file.open()
ds = xr.open_dataset(open_file)

This seems to reliably serialize with whatever fsspec can throw at us.
Sorry for the noise here. I appreciate the help.


Filter vllm keywords

This PR includes the proposed changes by @wolfsauge in https://github.com/stanfordnlp/dspy/issues/1025.
This makes https://github.com/stanfordnlp/dspy/pull/1029 unnecessary and reverses the changes from https://github.com/stanfordnlp/dspy/pull/1012.
Closes https://github.com/stanfordnlp/dspy/issues/974

LGTM

do i merge?

yes please :)


Search: don't autocapitalize search terms on mobile

Mobile devices are auto-capitalizing search terms.  It doesn't affect the actual search, which is case-insensitive, but I forget that and then wonder if that's why my search isn't finding what I want.  Disable auto-capitalization.


Provide option to provide log destination when creating container apps environment

This is my setup
  - task: AzureContainerApps@1
    inputs:
      appSourcePath: '$(Build.SourcesDirectory)/src'
      azureSubscription: '$(azureSubscription)'
      acrName: '$(acrName)'
      resourceGroup: '$(resourceGroup)'
      location: '$(location)'

When i provide the above and run the pipeline i get the following error
2023-07-25T12:26:46.9172078Z [command]/usr/bin/az containerapp env create -n ado-task-app-155-20230725-7-env -g xxxx -l eastus2
2023-07-25T12:26:48.6034004Z WARNING: No Log Analytics workspace provided.
2023-07-25T12:26:48.6035077Z WARNING: Generating a Log Analytics workspace with name "workspace-xxxx"
2023-07-25T12:26:48.6036673Z ERROR: (AuthorizationFailed) The client 'xxxxxxxxx' with object id 'xxxxxxxx' does not have authorization to perform action 'Microsoft.OperationalInsights/workspaces/write' over scope '/subscriptions/xxxxxxx/resourcegroups/xxxxxx/providers/Microsoft.OperationalInsights/workspaces/workspace-xxxxxx' or the scope is invalid. If access was recently granted, please refresh your credentials.
2023-07-25T12:26:48.6037574Z Code: AuthorizationFailed
2023-07-25T12:26:48.6038818Z Message: The client 'xxxxxx' with object id 'xxxxxx' does not have authorization to perform action 'Microsoft.OperationalInsights/workspaces/write' over scope '/subscriptions/xxxxxxx/resourcegroups/xxxx/providers/Microsoft.OperationalInsights/workspaces/workspace-xxxxx' or the scope is invalid. If access was recently granted, please refresh your credentials.

I had a look a the az containerapp env create  commands and for log destination if a value is not provided(in this case) the default selected is log-analytics.
https://learn.microsoft.com/en-us/cli/azure/containerapp/env?view=azure-cli-latest#az-containerapp-env-create

--logs-destination
Logs destination.
accepted values: azure-monitor, log-analytics, none
default value: log-analytics

At the moment a workaround is i gave the service principal permission to create the log analytics workspace and i'm fairly okay with it.  Especially because has an associated cost it would be good to provide an option to not provide it

Discussing this issue with @nellyk offline -- will follow-up with resolution.

@cormacpayne thanks for follow-up, just wanted to checkin to see if you had any updates on this.


Unsupported languages

Hi there,
Is there a solution to have a backup slug for all the languages that limax doesn't support?
Few exemple that I have in mind
"하용수" / "🌴🍰🌕💋🍪" / "▲"
Thanks!

Hello, perhaps try using the unicode module to extract the name field for each symbol first so you'd get something like palm-tree-cake-full-moon... etc.


Only control flow can be obtained. How to get instruction flow with PT

I'm not sure I understand the question.  PT logs information about conditional and indirect branches and this library decodes that into a stream of instructions.  See https://github.com/01org/processor-trace/blob/master/doc/getting_started.md for a brief overview.

I'm not sure I understand the question. PT logs information about conditional and indirect branches and this library decodes that into a stream of instructions. See https://github.com/01org/processor-trace/blob/master/doc/getting_started.md for a brief overview.

Thank you for your answer first. And then I can only capture jump instructions, like je,call, how do I capture general instructions, like add,mov.

PT doesn't record them.  Linear code flow can be inferred from the binary.

Linear code flow

Is there a command that can combine jump instructions with binaries or disassemblers to generate a complete runtime instruction stream? In addition, can PT record more content

Is there a command that can combine jump instructions with binaries or disassemblers to generate a complete runtime instruction stream?

That's exactly what this library does.

In addition, can PT record more content

It can.  See §35 in Vol-3C of the SDM.

I assume this answered your questions.  Please re-open if you have further questions.


binaries for 64 bit 16.04 Ubuntu seems to be missing

npm install osmium command results in:
><EMAIL_ADDRESS>preinstall /home/mateusz/Desktop/tmp/node_modules/osmium
> npm install node-pre-gyp

npm notice created a lockfile as package-lock.json. You should commit this file.
+<EMAIL_ADDRESS>added 112 packages in 5.227s

><EMAIL_ADDRESS>install /home/mateusz/Desktop/tmp/node_modules/osmium
> node-pre-gyp install --fallback-to-build

[osmium] Success: "/home/mateusz/Desktop/tmp/node_modules/osmium/lib/binding/osmium.node" is installed via remote
npm WARN saveError ENOENT: no such file or directory, open '/home/mateusz/Desktop/tmp/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/mateusz/Desktop/tmp/package.json'
npm WARN tmp No description
npm WARN tmp No repository field.
npm WARN tmp No README data
npm WARN tmp No license field.

+<EMAIL_ADDRESS>removed 112 packages and updated 1 package in 12.263s

I may be mistaken but from node-pre-gyp install --fallback-to-build I guess that for some reason it decided to build binary rather than use provided one.
mateusz@grisznak:~/Desktop/tmp/name-suggestion-index$ uname -a
Linux grisznak 4.10.0-32-generic #36~16.04.1-Ubuntu SMP Wed Aug 9 09:19:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
mateusz@grisznak:~/Desktop/tmp/name-suggestion-index$ node -v
v4.2.6
mateusz@grisznak:~/Desktop/tmp/name-suggestion-index$ npm -v
5.3.0

According to readme: "We currently provide binaries for 64 bit OS X and 64 bit Linux."

It looks to me, from the output you provided, that the osmium install worked fine. However the warnings of:
npm WARN saveError ENOENT: no such file or directory, open '/home/mateusz/Desktop/tmp/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/mateusz/Desktop/tmp/package.json'
npm WARN tmp No description
npm WARN tmp No repository field.
npm WARN tmp No README data

Are concerning. However I don't think these are related to node-osmium. Perhaps this was a npm bug or configuration problem? If you are still encountering a problem, please create another issue.


Angular tree control - problems with performance in modal

Hi,
I use your directive into a modal. Everything is ok except in some cases where we have lot of data and then speed problems appears. Is there any way to improve performance?
Thank you!

No idea?! This directive is a nightmare, I will bookmark and never use from this user...

Hi @valikonen .
First, this is open source software. You are invited to not use this directive or use anything else you feel like. I am not working for you, not getting paid for publishing this directive.
Second, if you had, instead of just complaining, did a little search, you will find that the directive is based on ng-repeat and those the performance issues you see arise from ng-repeat.
Third, you can decide and be of use to the community and help improve performance of angular-tree-control. Submit a pool-request with the right tests and docs and we will merge it.

First, this is open source software. You are invited to not use this directive or use anything else you feel like. I am not working for you, not getting paid for publishing this directive.
I'm forced to use this, it's an old project which use this
Second, if you had, instead of just complaining, did a little search, you will find that the directive is based on ng-repeat and those the performance issues you see arise from ng-repeat.
I did!!! ... and guess what nowhere in documentation is not show how to add track by $index/id, where to add, into directive template, into custom template etc
Third, you can decide and be of use to the community and help improve performance of angular-tree-control. Submit a pool-request with the right tests and docs and we will merge it.
If I find a solution, I will post here what I did. But think again, you think is normal to make a directive good or bad one... with poor documentation!? It's worth to do that?

Have you seen this page?
http://wix.github.io/angular-tree-control/
Thanks for the cheerful support, I'm a fan.

Yes, I check official page, but! My template is like:

 {{node.label}}

 {{node.prenom}} {{node.nom}}

..and is harder to make a merge between your example with custom template and what I have, so the easy way is to add track by $index into directive option.
So, is in documentation how to do this?
Thanks.


[Sidebar] After toggling sidebar then the page unable to scroll down

I would like to create a parallax scrolling page.
https://jsfiddle.net/chiahong/je4ygkcj
To create a parallax scrolling page, so I set
.pusher {   height: 100%; }
But after toggling sidebar, the page unable to scroll down, what should I do?
Thanks !

Hi @jerry9030,
Thank you for posting, but although it’s a valid usage question, we’ve limited GitHub Issues to bug reports and feature requests, keeping the board more manageable for maintainers; see the contributing guidelines for more information on what kind of posts should find themselves into the GitHub Issues board.
To get answers or feedback that might allow you to repost or reopen this issue, please use one of our other support resources:

Gitter chatroom
Official forums
StackOverflow

Thank you @jerry9030 for posting this question. I had the problem of the pusher not being able to scroll down after toggling away the sidebar (also, when the sidebar was toggled to visible, the pusher would jump to the top).
After reading your question, I realized that it was because I had set height: 100% on my pusher. I removed that (which I guess I didn't need at all) and everything works fine now. Just a note for others that have experienced this issue.


LuCI showing all traffic rules as IPv4, including rules that are IPv6

From a fresh clone of OpenWRT trunk, Traffic Rules in LuCI are all showing IPv4, even the rules that are in place for IPv6.
Steps to reproduce:
get a fresh clone of OpenWRT trunk
update and install packages feed
make clean (set target system ath79 and target profile wndr3800)
make defconfig
make menuconfig (add LuCI > Collections > luci)
make
flash factory image via tftp recovery for fresh install
get on luci web interface and go to Network > Firewall > Traffic Rules
all rules display as IPv4, even ones that are IPv6.
/etc/config/firewall still has "option family ipv6" for the v6 rules, so this appears to me to be a luci display issue and not a rule permissions being changed issue.

I verify this also occurs on LuCI Master (git-19.194.40998-7b1aabc) / OpenWrt SNAPSHOT r10506-cbae306815.


Redesign DutchAuctionComponent with a horizontal layout

This PR makes a huge step toward Sam's Figma designs for auctions, while keeping in mind Henry's comments about how to compress vertical space.

In this PR

Redesign <DutchAuctionComponent /> to be a slim horizontal layout with a button to expand it.

For upcoming auctions, add the approximate time until the the auction will start, as well as how long the auction will run for.
For active auctions, add the approximate remaining time.

Introduce more use of framer-motion so that the UI transitions are understandable to users.
Add filtering for active/upcoming/all auctions

Closes #1157

This looks so sick!!!

@jessepinho can we maybe fold in https://github.com/penumbra-zone/web/issues/1164 as relevant scope?

related low hanging fruit https://github.com/penumbra-zone/web/issues/1171 and https://github.com/penumbra-zone/web/issues/1172

@TalDerei

can we maybe fold in https://github.com/penumbra-zone/web/issues/1164 as relevant scope?

@TalDerei

can we maybe fold in https://github.com/penumbra-zone/web/issues/1164 as relevant scope?

I'll do that in a separate PR soon!


Sanity E2E tests

Description
Perform e2e sanity testing on a variety of OS versions.
User Stories
As a user I want to be able to load the transaction feed on my device so that I can start using Valora.
Acceptance Criteria
E2E tests should run a sanity check -  complete onboarding and check that the transaction feed loads without a crash:

[ ] Android 5 - 12
[ ] iOS 12.4 - 15.3

@MuckT sorry i forget the context of this, but isn't this already covered by the e2e tests implicitly already? or did we plan to run these sanity tests for some other purpose?


Jfomhover/nlpsdk

PR into Azure/mlops-project-template
Modifying pipeline-train file to work with azure-sdk-v2 templates

Closing to open a new one


error: TS2749: 'Buffer' refers to a value but is being used as a type here

I'm getting these errors when I try to build our project. We are using Angular 8 and Typescript 3.5.3. A search shows a similar error for StringDecoder, which was fixed in @types/node. I just upgraded our version of @types/node to the latest, 13.13.5, and still get the same error.
An unhandled exception occurred: node_modules/cmis/src/cmis.ts(228,50): error TS2749: 'Buffer' refers to a value, but is being used as a type here.
node_modules/cmis/src/cmis.ts(326,34): error TS2749: 'Buffer' refers to a value, but is being used as a type here.
node_modules/cmis/src/cmis.ts(793,32): error TS2749: 'Buffer' refers to a value, but is being used as a type here.
node_modules/cmis/src/cmis.ts(883,32): error TS2749: 'Buffer' refers to a value, but is being used as a type here.
node_modules/cmis/src/cmis.ts(1014,32): error TS2749: 'Buffer' refers to a value, but is being used as a type here.
node_modules/cmis/src/cmis.ts(1092,32): error TS2749: 'Buffer' refers to a value, but is being used as a type here.
node_modules/cmis/src/cmis.ts(1118,32): error TS2749: 'Buffer' refers to a value, but is being used as a type here.

I found the fix, I needed this in tsconfig.json
    "typeRoots": ["node_modules/@types"],
    "types": ["node"],


cmake: fix menuconfig, guiconfig, etc

Commit 269f35048770cc981a1db1ecc770ded62e141291 introduced a new
mechanism for loading the edtlib.EDT representation of the devicetree
from kconfigfunctions.py.
While this works for running kconfig.py from kconfig.cmake using
execute_process(), it doesn't work when kconfigfunctions.py is loaded
by the menuconfig target or any other Kconfig targets that use
add_custom_target().
The reason why is that these targets' environments do not have the
location of the EDT pickle file available. This is unlike kconfig.py,
which executes using the same environment as cmake itself, where
edt.pickle's location is already available in the environment.
Fix that by adding EDT_PICKLE to the environment for menuconfig and
friends.
Reported-by: Simon Guinot<EMAIL_ADDRESS>Signed-off-by: Martí Bolívar<EMAIL_ADDRESS>

Chat excerpt from slack where the issue was reported:
sim  6 hours ago
Hi @mbolivar-nordic. It seems to me that 269f35048770cc981a1db1ecc770ded62e141291 breaks dt_chosen_label in Kconfig. For example I can observe that UART_CONSOLE_ON_DEV_NAME is not filled anymore with the "zephyr,console" chosen label when CONFIG_CONSOLE and CONFIG_UART_CONSOLE are selected dynamically using the "menuconfig" interface. Same goes with UART_SHELL_ON_DEV_NAME and "zephyr,shell-uart".

mbolivar-nordic  6 hours ago
so you're saying you build an application where CONFIG_CONSOLE is not set, then you use menuconfig to set it (and CONFIG_UART_CONSOLE) to y, but UART_CONSOLE_ON_DEV_NAME doesn't get the right default, yes?

mbolivar-nordic  6 hours ago
can you give me a board and an application to use to reproduce?

mbolivar-nordic  6 hours ago
if you don't mind filing a bug i will look into it. thanks

sim  4 hours ago
You can reproduce the issue with the nucleo_f070rb board. (edited)

sim  4 hours ago
Untitled
$ west build -p auto -b nucleo_f070rb samples/basic/minimal
$ west build -t menuconfig
-> Shell -> Enable shell backends
UART_2 in device name will be missing.
Collapse

sim  4 hours ago
And if I revert 269f35048770cc981a1db1ecc770ded62e141291, then UART_2 is found from DT.

sim  4 hours ago
You can reproduce it using any board providing a chosen label retrieved from Kconfig using dt_chosen_label.

I confirm this patch fixes the issue I noticed.


how to auto open popup window after set items

how to auto open popup window after set items
thanks

spinner.expand()


Alternative solution for 66

w, h = 16, 16
img = np.random.randint(0, 256, (w, h, 3)).astype(np.ubyte)
colors = np.unique(img.reshape(-1, 3), axis=0)
n = len(colors)
print(n)

Can you give some context (and difference with proposed solution)?

Sure. In order to compare the colors, the proposed solution encode them as an integer with radix 256, which is not necessary. Instead, we can directly compare the colors, by specifying the axis, and that's what line 3 does. Note that this approach work only when the array is 2D, so just reshape it in advance.

Makes sense. Can you make a PR adding your alternative while keeping the old way (which has been modified by https://github.com/rougier/numpy-100/pull/142 but doesn't yet show up on the generator file)


Friends list limited

When running the provided example to get a users friends list, the amount of friends is limited to about 100 results or will error out if it's too large. Try a steam user with a large friends list.

@ibksmqixopjadihe ohh I see. Sorry, do you mind providing an example of a user with a large friend list? Might have to paginate or add a parameter to increase max results

@ibksmqixopjadihe Can't find someone with a list longer than 100 lol I did find a friend with 79. So STEAM doesn't have documentation on what is the limit of the results.
They have an API where the parameter is the steamid and it returns a nasty nested object and from that, I can get a list of friends' steamids, then I loop through and call STEAMS get details API and some other transformation. I did a test looping around 200 IDs and it worked fine.
As far as the first API call, idk what is the limit. You can reopen the issue if you see it and I can look at it further!

@deivit24 The problem is still relevant, by running this code:
`from steam import Steam
from decouple import config
steamID64s = (
76561198168593833,
76561198286921942,
76561198091790258,
76561198317708731,
76561198344148216,
76561198086020371,
76561198004414153,
76561198104777635,
76561198326192731,
76561198281932001
)
KEY = config("STEAM_API_KEY")
steam = Steam(KEY)
for counter, steamID64 in enumerate(steamID64s):
print("[" + str(counter + 1) + "/" + str(len(steamID64s)) + "] " + str(steamID64), end=" ", flush=True)
while True:
try:
player_friends = steam.users.get_user_friends_list(steamID64)
break
except Exception:
pass
print(str(len(player_friends["friends"])) + " friends")`
i am getting this:

[1/10]<PHONE_NUMBER>8593833 100 friends
[2/10]<PHONE_NUMBER>6921942 100 friends
[3/10]<PHONE_NUMBER>1790258 100 friends
[4/10]<PHONE_NUMBER>7708731 100 friends
[5/10]<PHONE_NUMBER>4148216 100 friends
[6/10]<PHONE_NUMBER>6020371 100 friends
[7/10]<PHONE_NUMBER>4414153 100 friends
[8/10]<PHONE_NUMBER>4777635 100 friends
[9/10]<PHONE_NUMBER>6192731 100 friends
[10/10]<PHONE_NUMBER>1932001 100 friends

@deivit24 The problem is still relevant, by running this code:
from steam import Steam
from decouple import config

steamID64s = (
<PHONE_NUMBER>8593833,
<PHONE_NUMBER>6921942,
<PHONE_NUMBER>1790258,
<PHONE_NUMBER>7708731,
<PHONE_NUMBER>4148216,
<PHONE_NUMBER>6020371,
<PHONE_NUMBER>4414153,
<PHONE_NUMBER>4777635,
<PHONE_NUMBER>6192731,
<PHONE_NUMBER>1932001
	)

KEY = config("STEAM_API_KEY")
steam = Steam(KEY)
for counter, steamID64 in enumerate(steamID64s):
	print("[" + str(counter + 1) + "/" + str(len(steamID64s)) + "] " + str(steamID64), end=" ", flush=True)
	while True:
		try:
			player_friends = steam.users.get_user_friends_list(steamID64)
			break
		except Exception:
			pass
	print(str(len(player_friends["friends"])) + " friends")

i get this:

[1/10]<PHONE_NUMBER>8593833 100 friends
[2/10]<PHONE_NUMBER>6921942 100 friends
[3/10]<PHONE_NUMBER>1790258 100 friends
[4/10]<PHONE_NUMBER>7708731 100 friends
[5/10]<PHONE_NUMBER>4148216 100 friends
[6/10]<PHONE_NUMBER>6020371 100 friends
[7/10]<PHONE_NUMBER>4414153 100 friends
[8/10]<PHONE_NUMBER>4777635 100 friends
[9/10]<PHONE_NUMBER>6192731 100 friends
[10/10]<PHONE_NUMBER>1932001 100 friends

@ibksmqixopjadihe hey sorry. this might have been a while ago but for what is worth. new release has this fixed


Proposal: Make WinUI test framework generic and one of the best UI automation test option in visualstudio|Testing

Proposal: Promote winui test infrastucture

UI automation is very important for customer to deliver high quality application.
And winui solution is very mature and stable, and easy to integrate with Azure pipeline.
We already have sperate projects for winui API testing and e2e testing. it's possible to make them generic and reused by all UWP apps.
Summary

Goal: Make winui test infrastructure reused by other projects
Steps:

Make API testing and e2e testing project generic and independent on winui
publish them as nuget
winui consume the nuget.
Update document on visualstudio|testing

Rationale

Scope

Important Notes

Open Questions

Why winui is more robust than other automation framework?

@licanhua - can you be super specific about what's valuable and what can be shared that isn't already available?

@licanhua when you have time to add more details you can re-open this.


Depthwise separable convolution incomplete?

Hi @EscVM,
to me, it seems like the depth wise separable convolution implemented in https://github.com/EscVM/Efficient-CapsNet/blob/705449c/utils/layers.py#L123 lacks the point-wise convolution part?!
Shouldn't there be a second Conv2D layer with F filters of kernel size (1,1)?
Otherwise, you're doing a simple depth-wise convolution, right?
I am referencing https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728 here btw.
Not sure if you gave a reference for the depthwise separable convolution in your paper.

Hi @TobiasB22,
Yes, you are right! As specified in the pre-print paper version, no point-wise convolution operation is needed to construct the primary capsule layer.

Ok, thanks! I guess I must've skipped that part while reading the paper.


Broken Link : V1 Documentation -> Link to component demo's

[x ] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior
I think there is no actual page behind the component demo's and the link should probably just open the sub navigation
Current Behavior
As there is no actual page for the sub menu header, the link results in a 404.
Steps to Reproduce (for bugs)

Navigate to https://material-ui-1dab0.firebaseapp.com/getting-started/usage/
In the bottom paragraph there is a link to the components demo's
https://material-ui-1dab0.firebaseapp.com/component-demos
404

@DarkMukke Thanks for raising it.

a5002c8a7e97bfeff5b6f4b58ee60ed6dc017c0b


Compress PNG Images

Tool used: PNGGauntlet
During my compress job I noticed that some of the images that were compressed were included via a Git submodule, so I will make some follow up changes to those in the following repositories:

content-modules/opentelemetry-java
content-modules/opentelemetry-specification
themes/docsy

@chalin Thoughts on this? Is this something that could be added at build time?

@austinlparker - yes, this is something I've been wanting to setup, but this can probably go in as is for now.

Making this part of the PR checks would be cool.
One way to implement it would be something like:

The PR either modifies or creates a PNG
Run a compression program on all the modified and created PNGs
If all the compressed images have the same file sizes in the PR, succeed. Otherwise fail.

Then you'd likely want to add some guidance that before uploading they run the same compression program locally to a README


Rough draft from copy & pasted from forum

https://forum.makerdao.com/t/mip4c2-sp15-core-unit-offboarding-process-amendments/12920

can we merge this in so we can continue from one branch? that way when we PR to main it should have a couple more commits and conversations?