WIP: QuillJS Delta <-> SuperEditor translation with no diffing

A very long-running PR for a plug-in SuperEditor <-> QuillJS Delta translation layer.
Here be dragons - don't use this yet and don't bother reviewing it. It's very early and a lot of things will change.
https://github.com/superlistapp/super_editor/assets/13744304/e943f113-bdd2-435c-8807-9a362af885e0
TBD - incomplete list, will be updated

[ ] Make sure that multiline plain text editing really works and \n is done properly.
[ ] Delta -> SuperEditor for attributions - can be done today, no blockers.
[ ] SuperEditor -> Delta for attributions like bold, italics, strikethrough - https://github.com/superlistapp/super_editor/issues/1884
[ ] Block elements, such as hr and image - should be customizable. A task element should not be built-in, but it should be easy to create a custom task element.
[ ] Have sane defaults for attributions and elements, but allow customizing them. If someone wants to do img: <url> instead of image:<url>, that should be allowed. Likewise, bold: true by default, but should be customizable to chonky: 'yes' or whatever if someone wants to do so.
[ ] Have a nicer API - will evolve during the lifetime of this PR.
[ ] Probably a lot of more things to do. Update the list when appropriate.

What is this?
It's a new package called super_editor_quill - a two-way translation layer between SuperEditor EditEvents and QuillJS Deltas that does not require document diffing.
It allows us to generate QuillJS Deltas from SuperEditor EditEvents. It also allows us to convert a QuillJS Delta to SuperEditor EditRequests that can be applied to the SuperEditor document.
There's an example app where there's a SuperEditor and a QuillJS editor side-by-side. Editing the SuperEditor document contents updates the Quill editor contents and vice-versa. All edits are also displayed in a list. This allows us to test that the translation works in practice.
What is it not?
This package does not handle conflict resolution or Operational Transformation in any way. It just converts SuperEditor EditEvents to Deltas and Deltas to SuperEditor EditRequests.
It's conceptually the same as SuperEditor Document <-> Markdown converter - things are converted to one format and back. The only distinction is that Markdown represents a whole document, but a Quill Delta can represent a document and a surgical change in a document. This package deals with the latter.
Although this package does not solve any of the Operational Transformation parts of the equation, it's one very significant building block of it.
Current API (subject to change most likely)
class _MyAppState extends State<MyApp> {
  late final MutableDocument _document;
  late final MutableDocumentComposer _composer;
  late final Editor _editor;

  @override
  void initState() {
    super.initState();
    _document = MutableDocument.empty(widget.paragraphNodeId);
    _composer = MutableDocumentComposer();
    _editor = Editor(
      editables: {
        Editor.documentKey: _document,
        Editor.composerKey: _composer,
      },
      requestHandlers: [...defaultRequestHandlers],
    );

    // Listen to delta changes in the document.
    final deltaChangeListener = DeltaDocumentChangeListener(
      peekAtDocument: () => MutableDocument(nodes: List.unmodifiable(_document.nodes)),
      onDeltaChangeDetected: (change) {
        // Assumes that `pushDocumentChange` tags the change with an appropriate document
        // version and does Operational Transformation properly. OT is out of scope for `super_editor_quill`.
        _myRemoteService.pushDocumentChange(change);
      },
    );
    _document.addListener(deltaChangeListener.call);

    // Applies remote delta changes to document as they come.
    //
    // Assumes that the `documentChanges()` is a `Stream<Delta>` that is properly transformed
    // using Operational Transformation. OT is out of scope for `super_editor_quill`.
    // TODO: selection transformation?
    const deltaApplier = DeltaApplier();
    _myRemoteService.documentChanges().listen(deltaApplier.apply);
  }

  @override
  void dispose() {
    _document.dispose();
    _composer.dispose();
    _editor.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return SuperEditor(
      editor: _editor,
      document: _document,
      composer: _composer,
    );
  }
}

@roughike FYI - as I've investigated approaches to undo/redo, I'm close to coming to the conclusion that perhaps the easiest way to achieve state jumps is to internally use Quill Deltas as a memento representation. I imagine that would greatly reduce the need for any kind of additional or external mapping to Deltas.
Would you like to discuss this?

@theniceboy any user can implement their own EditCommands, so no this isn't the only way.

@theniceboy any user can implement their own EditCommands, so no this isn't the only way.

Got it. I was curious if SuperEditor implements a well established OT format. The Quill Delta format, for example, has support in many backend languages and it's easy to implement collaborative editing because a simple controller.compose(updateDelta) will do the trick. I look forward to when this PR gets merged. 👍

@matthew-carroll FYI - as I've investigated approaches to undo/redo, I'm close to coming to the conclusion that perhaps the easiest way to achieve state jumps is to internally use Quill Deltas as a memento representation.

From my perspective, Quill Deltas are one way to implement undo/redo, but totally not needed.
I think one good way to implement undo/redo is as follows:

Every time the document changes, store the inverted version of that change in the undo stack. If the user inserts "c" at position 2, the inverted change is "delete character (c) at position 2".
When the user requests undo, pop the most recent entry from the undo stack and apply it to the document. Invert the change and store it in the redo stack. For example, if the change was "delete character (c) at position 2", the inverted version of that change is "insert character (c) at position 2".
When the user types manually in the document, the redo stack is cleared.
Ideally, there will also be some kind of throttle delay that merges recent changes into one change. "Insert character (c) at position 2" and "insert character (d) at position 3" will be merged into "insert characters (cd) at position 2".

For example:
class UndoRedoStack {
  final _undoStack = <EditRequest>[];
  final _redoStack = <EditRequest>[];

  void recordDocumentChange(EditRequest change) {
    // Add the inverted version of the change into the undo stack.
    _undoStack.add(change.invert());

    // Since redo is only available after the user undoes operations, we should
    // clear the redo stack every time the user changes the document manually.
    _redoStack.clear();
  }

  EditRequest? undo() => _applyChange(_undoStack, _redoStack);

  EditRequest? redo() => _applyChange(_redoStack, _undoStack);

  EditRequest? _applyChange(
    List<EditRequest> source,
    List<EditRequest> destination,
  ) {
    if (source.isEmpty) return null;

    final change = source.removeLast();
    destination.add(change.invert());

    // Return the EditRequest that should be applied to the document to perform
    // the desired undo/redo operation.
    return change;
  }
}

This would already implement basic undo/redo functionality. Only thing needed is the invert() functionality for EditRequests - it could be enforced in the EditRequest class by adding EditRequest invert() method to it. There's a change that it has to be EditRequest invert(Document document) so that there's enough context to invert requests.
Adding throttling and composing edit requests together within a timeframe could be done with yet another method EditRequest compose(EditRequest other).
You can basically copy-paste this, change Delta to EditRequest, implement inverting and composing requests, and it would be pretty much work as-is: https://github.com/roughike/super_editor_collaboration_sample/blob/e6b7fd71991fbe01271a9235a0782c8b3b6eedf4/client/lib/local_document_history.dart
One other thing is being able to "transform the stacks". If undo stack has a single change, "delete (c) from position 2", and a remote user inserts "X" in the beginning of the document, then "delete (c) from position 2" has to become "delete (c) from position 3" so that the collaboration works properly. It's a bit out of scope for a general purpose editor, but it's already implemented in the Delta version of undo/redo I linked above. It would require yet another EditRequest transform(int shiftBy) method though.
tl;dr: Undo/redo does not require Quill, and I'm not sure if using Quill will make it easier. We'd still need to translate from Quill <-> SuperEditor. After my PR lands, I think it would be easier to just drop-in my Quill undo/redo stack, but there would be a lot of back-and-forth Quill <-> SuperEditor translation ping-pong there. The undo/redo stack could and should probably be implemented without Quill.

@roughike I've already done a bit of work/investigation into this. Encoding reverse actions is proving to be a headache.
PR: https://github.com/superlistapp/super_editor/pull/1881
Write-up: https://github.com/superlistapp/super_editor/wiki/Design-Thoughts:-Undo-Redo
I'm at the point where I'm considering using Deltas so that all changes can be serialized, such that those changes can be played back to move to an earlier history. I understand that Quill Deltas aren't necessary - it could be any delta format. But if I'm going to implement a delta format, I would think that using the Quill Delta format would have the most crossover value in terms of what Superlist needs, as well as other clients who have asked for Delta support.

@theniceboy  Is it correct to say that this PR would provide the only way that one can achieve collaborative editing with SuperEditor?
Edit: (Simply)

This PR only adds support for translating SuperEditor documents and changes on SuperEditor documents into Quill Deltas.
There's no collaboration support coming in this PR - Quill Deltas are just a way to represent:

an entire document, and:
a change in a document.

Quill Deltas by themselves don't add collaboration capabilities.
So in a way, this PR is not much different from a Markdown <-> SuperEditor converter (except that Markdown does not have a way of saying "insert (a) at position 2"). Whenever this PR ready, SuperEditor will still have no collaboration support.
However, if you dig a bit into Quill Deltas, you'll find that the Delta format is specifically built for Google Docs style realtime collaboration support with Operational Transformation. So having a Quill Delta support for SuperEditor is one building block for supporting realtime collaboration with OT, as it's a really nice data format and an utility library for that.

@matthew-carroll I'm at the point where I'm considering using Deltas so that all changes can be serialized, such that those changes can be played back to move to an earlier history. I understand that Quill Deltas aren't necessary - it could be any delta format.

To me, EditRequest (or EditEvent or whatever is the most fitting here) is already a kind of a delta format.
Playing back EditRequests from the inception of the document will result in the most recent document state. Playing back inverted EditRequests in reverse order on top of the current document can undo the document changes one-by-one.
I will take a look at what you've written in detail, but I'm also up for brainstorming about this.

Playing back EditRequests from the inception of the document will result in the most recent document state. Playing back inverted EditRequests in reverse order on top of the current document can undo the document changes one-by-one.

I think that most/all of the complexity is in the "playing back" part. Maybe we can chat on Wed?

@matthew-carroll I will join the call about 15-20mins late.

Will reopen once I get the chance to actively work on it again


Automate SSL renewal with LetsEncrypt

We should look into automating our SSL certificate renewal process with Lets Encrypt.

The certificate has expired and the website is no longer accessible through https.

This issue should be resolved with our transition to Cloudflare!


Retention policies blocking private channel deletion

Please include the limitation that a Private Channel can't be deleted if corresponding SharePoint site collection is added in a retention policy.
Essentially, if tenant has a retention policy defined that applies to all SharePoint sites then all private channel site collections automatically get included in retention policy. Hence, none of these private channels can be deleted unless site is manually removed from retention.
Would be good to include this point in documentation.

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

ID: ce34b12b-aa50-608b-bbfa-a1fb4bb79f8d
Version Independent ID: 9ddeb6f4-f30a-1e72-fc94-ae66def91f40
Content: Private channels in Microsoft Teams - Microsoft Teams
Content Source: Teams/private-channels.md
Service: msteams
GitHub Login: @LanaChin
Microsoft Alias: v-lanac

@SinghGurd Thank you for submitting feedback and contributing to the docs. We are currently investigating this.

@SinghGurd thank you for pointing this out.  I'll look into adding a note to the article soonest pending approval from the team.


fix: emit assets from SSR build

Description
This closes #11429, by removing the code that causes the bug

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines.
[x] Read the Pull Request Guidelines and follow the PR Title Convention.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

I'm puzzled about why we didn't get a bug report before. I imagine the idea of https://github.com/vitejs/vite/commit/ffaf50d8c0a61a99dd7e809964b88acc51277dc6 was avoiding duplicating the generation of assets, as normally all of them will already be there from the client build as you explained. I don't know if we can optimize this given that the build process for the client and ssr is independent in Vite right now, and that the user may configure Vite to avoid wiping the dist folder. Your fix seems to be the safest choice. Let's check with ecosystem-ci first, and merge it if we are all green.

/ecosystem-ci run

I don't know if we can optimize this given that the build process for the client and ssr is independent in Vite right now, and that the user may configure Vite to avoid wiping the dist folder. Your fix seems to be the safest choice. Let's check with ecosystem-ci first, and merge it if we are all green.

I don't quite understand this. Isn't it intentional to not emit assets in SSR builds? It's expected that the assets come from the client build. Otherwise both builds contain duplicated assets and that increases the final client+server bundle size.
This seems like a big change instead of a fix. Maybe we could add an experimental option for now until we have a plan for the caveat.

@bluwy I'm assuming that most frameworks will have the assetFileNames be the same on SSR and the client build so what we are duplicating is writing the assets to disk, but not the assets themselves. But you are right about the change being to big for a patch. Let's add it to the 4.1 milestone and release it in January. @brillout @danielroe would you help us check this PR?

I don't quite understand this. Isn't it intentional to not emit assets in SSR builds?

The current behaviour comes from this (pre-v2) commit, which doesn't appear to be linked to a PR so the motivation is a mystery. But I think it's reasonable to suggest that it was just an oversight — the assumption was that you'd always import assets into modules that Vite sees during the non-SSR build, and that assumption turned out to be wrong.
The workaround you suggest is what I'm doing currently (taking care to make sure that the resulting imports are tree-shaken from the client bundle), and it's basically fine if a little undiscoverable. In the SvelteKit case it adds the constraint that assets can't be in $lib/server.
Given the availability of the workaround, 4.1 seems totally reasonable. Thanks!

@bluwy I'm assuming that most frameworks will have the assetFileNames be the same on SSR and the client build so what we are duplicating is writing the assets to disk, but not the assets themselves

Ah so you're expecting that both the client and server builds the assets to the same directory. That could work if the user/metaframework sets it up, and we could document it too. Currently Vite's SSR setup recommendation would duplicate the assets by default with this PR, eg with pnpm create vite-extra --template ssr-vanilla.

Hello, I don't know if I'm off the topic here, but here is a situation that I hope could be helpful, maybe.
Before Sveltekit 1.0 (so Vite 4.0), if you imported a component from an external package (from your /node_module/external_package) and this component was importing assets like .svg from here own repo : in dev and from ssr you could read the "url" of the SVG like : /node_modules/external_lib/.../assets/test.svg and in production it was something like /client/immutable/assets/test-875jhg6.svg
Now, "external assets" seems hashed and import in client/immutable like before, but vite or svelting not resolve the path, and serve an "undefined" url for all assets coming from external package.
(sorry for my english)

This is great. VPS goes to great length to work around the fact that SSR assets aren't emitted: https://vite-plugin-ssr.com/includeAssetsImportedByServer#page-content (its implementation is far from trivial, to say the least).
I'm 💯 for merging this.

@7antra that sounds unrelated to this change. I'd suggest opening a new issue with a minimal reproduction, ideally on this repo if you can reproduce it without SvelteKit, or on https://github.com/sveltejs/kit/issues if not

@Rich-Harris it looks like you need to run pnpm format to fix the failing lint job

I did, and nothing changed 🤷

That's strange, it added the missing trailing comma for me.

This will emit the assets to dist/server/assets/ instead of dist/client/assets/, right? (Assuming dist/server/ is the value of config.build.outDir for ssr: true and dist/client/ the value for ssr: false.)
But the assets should be emitted to dist/client/assets/ instead. (Since static assets are served from dist/client/assets/.)
(As a tangent: this is one argument more in the growing list of reasons for not having two seperate builds. There really should be only a single $ vite build call instead of having to run it twice $ vite build && vite build --ssr.)

This will emit the assets to dist/server/assets/ instead of dist/client/assets/, right?

By default yes but in our case we use rollupOptions.output.assetFileNames and it's the same for both server and client builds; I assume any other framework in a similar position would do likewise.

(As a tangent: this is one argument more in the growing list of reasons for not having two seperate builds. There really should be only a single $ vite build call instead of having to run it twice $ vite build && vite build --ssr.)

Co-sign, though it can easily be more than two (we have a third build for service workers, for example, though we control the build config tightly for that — it doesn't use vite.config.js). One thing I'll note though is that in https://github.com/sveltejs/kit/pull/8636 we're switching the order of the builds — server first, then client, so that the client route manifest can be written with knowledge of the server build to prevent unnecessary requests — and Vite's trademark flexibility is invaluable in those situations.

@Rich-Harris we discussed the PR in a team meeting and decided to move forward with an opt-in experimental option so we can get it in 4.1. We may review this option in Vite 5 if we find a better way but it is good if frameworks are able to experiment with it with Vite 4.
I think we should name this option build.ssrEmitAssets defaulting to false. I can add it to your PR if you would like before merging.

By default yes but in our case we use rollupOptions.output.assetFileNames and it's the same for both server and client builds; I assume any other framework in a similar position would do likewise.

@Rich-Harris are you saying that's true today or something we'd implement in the future? While we do use that option today, it looks to me like the assets are sent to .svelte-kit/output/client/

are you saying that's true today

I thought it was, because of https://github.com/sveltejs/kit/blob/9e560183348b69996b13397001996961591544c6/packages/kit/src/exports/vite/index.js#L441, but prefix is just ${appDir}/immutable

it's not entirely clear to me how we'd use it on the SvelteKit side

We would need to copy the contents of .svelte-kit/output/server/_app to .svelte-kit/output/client/_app, which is a little clunky.

Yeah, okay. That's what I was guessing. It's a bit clunky as you said, but a better user experience, so probably worth doing it. I don't know if we can skip the copy step by making assetFileNames start with ../client (I don't think it will work, but am only 50% certain). Or maybe cleaner would be to leave it in server but then have the adapter copy from both places. Anyway, as long as you're aware we'll need to do some extra step along those lines and are okay with it then this PR looks good to me.

I don't know if we can skip the copy step by making assetFileNames start with ../client

That won't work, I tried. The asset path, relative to outDir, needs to be the same for both server and client builds otherwise SSR'd HTML (think <img src={image}>) will point to non-existent URLs

I think we could still merge this PR, and you can check in SvelteKit how to best use the new option. If you end up discovering that this isn't the right way to go, we can deprecate it and remove it in Vite 5. I'll merge it before releasing 4.1-beta.1 tomorrow, except if I see you have other ideas.

We don't usually backport features @iMrDJAi, is there any reason preventing you to update your project to Vite v4? 3 to 4 should normally be a painless update https://vitejs.dev/guide/migration.html

@patak-dev Upgrading to Vite v4 was much complicated than I expected, some dependencies are no longer functional. This is due to https://github.com/vitejs/vite/pull/11101. Unfortunately, this is not an option to me. :/

@iMrDJAi are these issues tracked? Have you created issues for them? Please link them here for reference if that is the case.

@patak-dev Related issues has been already reported (https://github.com/vitejs/vite/issues/11299). Some libraries have incorrect package.json exports, and there is no real workaround rather than reaching out to the maintainers of the affected ones to fix the problem, and this would take a ton of time just to identify what libraries having this issue. ¯\_(ツ)_/¯

I tried using ssrEmitAssets for vite-plugin-ssr but there are a couple of issues:

Assets imported by isomorphic code are generated twice.
These duplicated assets don't have the same hash and therefore have different file names (despite the content being the same).
The files are emited in dist/server/assets/ instead of dist/client/assets/.
The manifest now lives in two different places dist/client/manifest.json and dist/server/manifest.json.

I didn't try, but I think it's fixable by 1. moving files from dist/server/assets/ to dist/client/assets/, 2. remove duplicates by analyzing the manifest, and 3. merging the two manifests. I'll try it at some point in the future and see if I stumble upon other issues.
I think it's pretty clear at this point that we're hitting a limit regarding the fact that Vite builds the client and the server in isolation and independently of each other. (I agree with Rich-Harris and I think we can have both flexbiility while having Vite build the client and the server hand-in-hand.)

These duplicated assets don't have the same hash

Does this only apply to .css files? If so, it should be fixed by https://github.com/vitejs/vite/issues/5619#issuecomment-1443278788

I see, thanks for the pointer.
On Fri 3. Mar 2023 at 17:56, Rich Harris @.***> wrote:

These duplicated assets don't have the same hash
Does this only apply to .css files? If so, it should be fixed by #5619
(comment)
https://github.com/vitejs/vite/issues/5619#issuecomment-1443278788
—
Reply to this email directly, view it on GitHub
https://github.com/vitejs/vite/pull/11430#issuecomment-1453819968, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHVQRVJEOKAWFL7TLWSBEDW2IPFDANCNFSM6AAAAAATDX24YM
.
You are receiving this because you were mentioned.Message ID:
@.***>

Explicitly specifying build.minify: 'esbuild' seems to fix the duplicate CSS files with differing hash issue for me.

This experimental feature is now used by SvelteKit, Astro, Redwood, and others. We're looking to stabilize it in Vite 5. If you have feedback before we move forward, let's use this discussion:

https://github.com/vitejs/vite/discussions/13808


Make 1st level icons seem interactive in normal mode

Is your feature request related to a problem? Please describe.
As a user I want to instantly see that our 1st level icons aka categories are interactive and can be clicked.
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
Keep the current icons.
Additional context
This was a request in one of our accessibility reports:
Add @dkehne could you add more information here please/the exact report. Thanks :pray:
Part of #1021.

@steffenkleinle the report is here
But it only says that the contrast is not high enough. Nothing about that it is not visible as a clickable element. I think we can delete this issue? @dkehne

There is anonther report (i just uploaded it to the same folder from Kreis Höxter) and we had follow-up-meetings after both reports were created.
I can only repeat from my own memories that people with handicaps might have problems with icons that are used for navigation when they do not have enough contrast. so they might not see that they are intended as a button because it does not look like one.
having enough contrast (not yellow/white) would fix the problem there.

Ok then we can close this issue as it has the same solution than #2781 @steffenkleinle

My memory from the call was that we want to increase the contrast a little in the normal mode (e.g. with some border/outline or similar) and then have a dedicated high contrast mode which increases the contrast to the maximum (e.g. using black and white or some other colored icons). Am I missing something here?

We tried to increase the contrast with another yellow tone. But the contrast doesn't change much but the tone seems very different to the integreat yellow. So this is not a good option. Also with the outline: I don't think it really solves the problem.
Please check @hauf-toni @steffenkleinle
Design [here](Was gibt es Neues in deiner Nähe? Finde es heraus in Integreat.)

We tried to increase the contrast with another yellow tone. But the contrast doesn't change much but the tone seems very different to the integreat yellow. So this is not a good option. Also with the outline: I don't think it really solves the problem. In my opinion we should keep the yellow icons as they are and just add the contrast mode. Please check @hauf-toni @steffenkleinle Design [here](Was gibt es Neues in deiner Nähe? Finde es heraus in Integreat.)

Works for me if @dkehne says that increasing the contrast in only the high contrast mode is enough.
@nikolahoff the design was sadly not correctly linked.

I updated the link:)


[Dashboard] Improve faucet claim

Problem solved
Short description of the bug fixed or feature added

PR-Codex overview
This PR enhances the POST request handler in the route.ts file to ensure that a user's wallet is connected before processing the request. It adds functionality to check for an authentication cookie based on the user's connected account.
Detailed summary

Added import of getAddress from thirdweb.
Introduced a check for the connected wallet using COOKIE_ACTIVE_ACCOUNT.
Retrieved the authentication cookie based on the connected wallet address.
Returned a JSON response with an error message if no wallet is connected.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

#5226  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @kien-ngo and the rest of your teammates on  Graphite


Fix codecov badge

close #100

Codecov Report

Merging #108 (ebd001a) into main (f4e1969) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #108   +/-   ##
=======================================
  Coverage   98.02%   98.02%
=======================================
  Files           5        5
  Lines         253      253
=======================================
  Hits          248      248
  Misses          5        5

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


First photutils notebook: background estimation

Added the first photutils tutorial, for background estimation, as well as some supporting files (the photutils logo and the matplotlib style file). Updated the .gitignore to exclude the other notebooks, which are still in development.
Please provide feedback, comments, critique, etc.!

Intro: Not sure how much we care about this... but it might be good to say just a bit about what the image is - that is, a "this is an ACS image of ". That both serves the purpose of making it clear that these data are space telescope data while at the same time attracting interest by the average astronomer who likely wants to know of a relevant science context.

Would you say that the description I provide before downloading the data (before [3]) isn't sufficiently clear?

otherwise we'd suggest using astroquery since that's more robust to changes in the URLs, but since it's a HLSP it makes sense to do it this way

Just to be clear, we could use astroquery to get the raw data from MAST, but since this file is a HLSP, it isn't available on MAST and we have to go straight to the archive.stsci.edu URL. Which astroquery cannot do. Is that correct?

modified_data[~mask] = background[:]

This is so much more clever than what I had - thank you!

do another sigma_clipped_stats on the 2D-subtracted one (or show the histogram). I speculate the new std will be significantly lower, demonstrating the whole point.

I had actually tried to do this before, but I found that the results weren't as exciting as I would have thought. The data before background subtraction has a standard deviation of 7.51e-4, and after it is 7.31e-4. I was unconvinced that this was a big enough difference to make any claims about, but if you think it is worth it, I can add it as an exercise.

@laurenmarietta

Would you say that the description I provide before downloading the data (before [3]) isn't sufficiently clear?

I think it was clear, but might just need a sentence or two of motivation along the lines of "... of exposure time.  While some of the faintest and most distant galaxies known can be found in this image, background subtraction is essential for science like that the later notebooks demonstrate."  (or the last clause could be tweaked a bit to be more specific but hopefully that gets the idea across).  That said, I guess the biggest thing would be just be for it to come earlier rather than at the time of download.

Just to be clear, we could use astroquery to get the raw data from MAST, but since this file is a HLSP, it isn't available on MAST and we have to go straight to the archive.stsci.edu URL. Which astroquery cannot do. Is that correct?

That is correct as far as I know.  It may be that MAST has some API (or upcoming API) to discover HLSP's - if so we might consider switch to that to find the URL (since URLs sometimes change).  I'll ask someone to make sure but I think that doesn't exist right now.

I had actually tried to do this before, but I found that the results weren't as exciting as I would have thought. ...

Hmm, ok, I see your point.  I guess the background variation isn't enough to be very statistically strong relative to the actual real sources.  You might get around this by just increasing your "inserted" background?   The exercise could even be "try it.  notice it's small.  does this make sense?  try to make it big." We're "leaving it as an exercise for the reader" 😉

Okay, I tried to implement all the suggestions you gave!
The main part I had trouble with was the scientific motivation - mainly because we are using an HLSP, and thus it isn't /really/ necessary to perform background estimation on it (right?). I actually don't include any sort of background subtraction in subsequent notebooks after downloading the data, because the background has already been removed. So the sentence that I added, "Background subtraction is essential for accurate photometric analysis of astronomical data like the XDF," feels a little contrived. But maybe I'm just overthinking it?

@laurenmarietta - looks great now aside from some very minor things (https://github.com/eteq/csi-stsci-notebooks/pull/1/commits/eb1524774dbbc1673cb0a34af3f41e77b6486f81) , so merging!


Add PWR074: Prefer use <module> over include <source file>

Just the entry and example codes. The benchmark will be added soon.

Hi @alvrogd, in general this is a nice idea, but sometimes include is exactly what is needed. A use case of include is to implement poor man generics. For example:
function mat_op(a)
real :: a(..)
select rank(a)
  rank(0)
    include 'long_function_that_is_rank_agnostic.f90'
  rank(1)
    include 'long_function_that_is_rank_agnostic.f90'
  rank(2)
    include 'long_function_that_is_rank_agnostic.f90'
end select
end function


Fix schema bug with optional datetime.

Fix a bug where the default value for optional datetime schema objects was datetime.now() instead of None. This bug causes HA tests to fail when updating to the latest version of pydrawise.

Nice catch, thanks!


fix(#31): workaround from Gaming32 + updated dependencies

Please review the error handling in typescript.

hey @rakeshvanga any chance this could be merged? I notice there are no merges for about a year now, is this plugin to be considered abandoned/legacy? I am curious to know if this is till a recommended way or we should perhaps avoid including it in new developments.
Cheers.

Created an issue https://github.com/microsoft/vscode/issues/147807 to hopefully bring more attention to this.

Thanks for your code. I guess the deployment team will notice the fix.


Improving legibility of kubectl describe configmap output

What would you like to be added:
I would like to change the way kubectl describve configmap outputs data values.
Why is this needed:
This is needed to improve legibility of the output and can also be used to make parsing of the output better.
This is the current output style.
kubectl create configmap sample --from-literal=sample1=value1 --from-literal=sample2=value2

And I propose the output to look like -
Name:         sample
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
sample1:
----
value1

sample2:
----
value2

BinaryData
====

Events:  <none>

Where the value of the first key is separated from the next key by a new line.
We could also use a different separator value.
I have identified the code where we need to make changes and if assigned to me, would fix it right away

/triage accepted
This seems to be a general issue with the describe printer, because it is simply printing to the write buffer directly. There are many improvements that could be made here. I think one thing to consider here is that we should probably add more ---- style line breaks to make the boundaries of fields more obvious to the eye.

/assign


Custom attack target field does not commit value

Hi. First off, thank you so much for all the work you've done on the Delta Green mod. It's excellent work, and we're really enjoying it. I hope this is the appropriate place to report what I think may be a bug.
When adding unnatural Actors, using the Skill "Custom" value in an Attack record makes the "Target" field visible. The system does not appear to commit a value in that field (any value entered in the field is wiped as soon as you leave it), such that all attack rolls using the "Custom" Skill value have a Target value of zero.

Thanks for the report, this is the right place to report it. Kind of an odd one but I think I see how to fix it.

Have a fix incoming! Probably can get to opening the PR tonight

Dang, that was fast! Thanks for your attention to this!

Of course! Thanks for bringing it to our attention

Should be fixed in v.1.3.3 that @jalensailin released today.


Add actions to run smoke tests on staging and production.

Production is configured to only run on request since it does delete a blog and I'm not sure if we have backups yet.

Before this can be merged, we need to create the test user on the staging environment to confirm this will work.

This doesn't seem to be a priority any more


Azure AD Connect: Automatic upgrade Overview section missing additional supported scenarios

While the opening paragraph of this article mentions "This feature was updated in build 1.1.561 and now supports additional scenarios that were previously not supported",  the user impression is the Overview section would also have been updated with the latest capabilities which is obviously not the case. Can the latest supported configuration be included in the Overview section?  Thanks!

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

ID: e192eab2-771f-4572-cd55-a166eac1e0e7
Version Independent ID: 528dec55-c74d-3769-3a34-5e29e4a9852f
Content: Azure AD Connect: Automatic upgrade
Content Source: articles/active-directory/hybrid/how-to-connect-install-automatic-upgrade.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@NileshGhodekar Thank you for your feedback, assigning this issue to our document author @billmath to further evaluate the feedback and update the document accordingly.

Thanks! I made a pull request to remove the outdated reference and add a list of new supported scenarios. https://github.com/MicrosoftDocs/azure-docs-pr/pull/127709


Spell-Like Abilities may get parsed with the wrong spell level

e.g. https://www.aonprd.com/MonsterDisplay.aspx?ItemName=Pairaka
Constant—detect good, detect magic
At will—charm monster (DC 21), dimension door (self plus 50 lbs. of objects only), misdirection (DC 19)
1/day—insect plague, summon (level 3, 1d4 dorus 50%)```

where Insect Plague is level 5, but gets parsed as level 1

Fixed in 3.2.2


Scalar UUID

Added new scalar that validates and returns python object UUID.
Returns string value.

Isn't this already covered by GUID?

I don't know is a correct way.
This scalar returns UUID object that we have to handle in application. Similar behaviour like datetime. I don't know that having UUID as object in app will be handy and comfortable.

This implementation is similar to the one from GUID but, instead, it uses python UUID objects.
GUID and UUID (https://stackoverflow.com/questions/246930/is-there-any-difference-between-a-guid-and-a-uuid) To sum it up. GUID is a Microsoft term, old MS COM GUID are UUID3, modern MS GUID could be RFC4122 or UUID Variant 4.
So it's not that bad to have the 2 think separated here. Someone that wants GUID will have a str inside its resolver, someone wanting UUID will have a UUID python object and be able to manipulate it as he wants.
@zer0tonin Do I make sense? Sometimes I not really sure :p If you approve this, I'll make a release with it.

@abusi ok then, if this has a different use case than guid let's release it


Whitespaces when exporting to PDF

I can export my homebrew as a PDF but there seems to be a bit of white space in the footer area that I can't get rid off.
Browser Type/Version: Google Chrome
Operating System: Windows 10
Issue Description: PDF exporting
Brew code to reproduce:

# Slavic Mythology Pack

##### Deities and Creatures of Slavic Mythology

\page
# Slavic Mythology
This booklet contains lore about Slavic Mythology, stats for creatures of Slavic folklore and class variations for core classes. I'm making this booklet in hopes of inspiring more people to delve into D&D and explore a new setting which I have not seen people do before.

### The World Egg and Creation
There once was a Golden egg wrapped in dark nothingness and in that egg was the father of all mankind, Rod.  Rod breaks out of the Golden Egg, and immediately creates himself a helpmeet-this is Mother Lada, goddess of love.  And with this love he breaks through the darkness. He cuts his umbilical cord with a rainbow and straight away gets to work separating the oceans and seas from the skies. Following that he separates light from darkness and truth from deceit.  He divides the world into three parts: Prav’, which is the place for gods. The name indicates it is a place for truth and right. The visible world he called , Yav’, that is, that which appears. The lower world was the underworld called Nav’. This was the place for the deceased.

Next, Rod bore Mother Earth, who immediately disappears into the depths of the ocean where she is kept for a while. And the sun was made from Rod's face, the father of the gods! The moon was made from his chest, the dense stars from his eyes, the sunrise from his eyebrows, the  nights come from his thoughts and the winds from his breath. He made rain from his tears and his voice became thunder and lightning. Rod then gave living breath to his son Svarog.

Svarog was in charge of forging The Earth, and because of this, Rod gave him four heads so that he can see all the ends of The Earth at once. The first thing he did was pave a path for The Sun to follow around The Earth, and the alteration between The Sun and Moon would make the ocean waves. And then Svarog remembered that Mother Earth still lays beneath the waves. He asks a gray duck to swim to the bottom of the ocean and help Mother Earth, but alas, it ran out of breath. Svarog then asked Rod for help, who blew mighty winds that split the ocean. The duck flew down into the depths, but it was still unable to reach Mother Earth. Rod then struck lightning into the duck, and it fell into the depths and returned with a stick. Rod then rubbed the stick, and called upon The Sun to evaporate the ocean, and The Moon to cool of Mother Earth.

Svarog then created three underworld kingdoms to keep The Earth from sinking, and the mighty snake Yusha to keep Mother Earth above the water. And if the snake moves, The Earth shall quake.

## List of Major Slavic Deities

##### Slavic  Major Deities
| Name |  Description | Alignment|
|:----:|:-------------:|:-----------:|
| Rod| The birth-giver, creator of all existent | Lawful Good |
| Svarog|  God of fire and forge |Neutral Good|
| Dazhbog| Sun god, dispenser of fortune |Chaotic Good|
| Jarilo| God of war, vegetation, fertility and spring |True Neutral|
| Lada | Goddess of love and marriage, summer and beauty |Neutral Good|
| Lelya| Goddess of spring and love|Neutral good |
| Morana| Goddess of harvest, witchcraft, winter and death| Neutral Evil |
| Perun| God of thunder and lightning|Chaotic Good |             |
| Svetovid|God of war, fertility and abundance|Chaotic Neutral|
| Veles|God of earth, waters, and the underworld|Chaotic Neutral|
| Zaria|Goddess of beauty|Chaotic Good|
| The Zorya|Two guardian goddesses|Lawful Good
| Zhiva |Goddess of love and fertility| Neutral Good|

1

PART 1 | Mythology

\page

# The Monster Manual
A setting is incomplete without fantastic creatures that dwell in it and present challenges to the players. This part of the booklet is dedicated to the creatures and myths that come from ancient Slavic mythology.

## Ala
The Ala is a dragon like flying serpent that brought bad weather and thunderstorms to towns and villages to destroy their crops.  The Ala inhabits caves in tall mountains and attacks settlements using thunder and whirlwinds while staying hidden within the clouds.

___
> ## Ala
>*Huge dragon, chaotic evil*
> ___
> - **Armor Class** 16
> - **Hit Points** 115(10d12 + 40)
> - **Speed** 20ft, 50ft fly
>___
>|STR|DEX|CON|INT|WIS|CHA|
>|:---:|:---:|:---:|:---:|:---:|:---:|
>|20 (+5)|23 (+6)|19 (+4)|18 (+4)|20 (+5)|10 (0)|
>___
> - **Condition Immunities** None
> - **Damage Immunities** Thunder
> - **Damage Resistances** Cold, Non-magical weapons
> - **Senses** passive Perception 15
> - **Languages** Sylvan, Common
> - **Challenge** 12 (8400 XP)
> ___
> ***Wild Storm. *** The Ala is as unpredictable as the storm it brings. Roll 1d6 to determine an effect from the following:
>
*1-2 **Lightning strike***: Thunder strikes in a spot within 120ft of  the Ala, dealing 10d8 thunder damage on a direct hit, and 8d6 sonic damage within 20ft of the initial spot. All creatures in the damage radius must then make a Constitution saving throw DC 17 or be deafened for 1d4 turns
>
>*3-4 **Whirlwinds***: A whirlwind appears in a 50 foot radius centred on a spot within 120ft of the Ala. The winds linger for 1d4 turns, and every creature must make a DC 17 Strength save or be knocked 10 feet in a random direction and prone for the duration of the effect. The whirlwind radius is considered difficult terrain for those who make the save.
>
>*5-6 **Hail Storm***: Ice starts falling from the sky in a 50ft foot radius centred on a point withing 120ft of the Ala, creating difficult terrain and dealing 3d6 damage to all creatures in the area for 1d6 turns.
>
>
>
> ***Storm camouflage.*** The Ala attacks settlements disguised as a storm cloud. Once per day The Ala  may engulfed itself within such a cloud and become invisible to the naked eye. This way, the Ala can use it's wild storm ability while remaining hidden.
> ### Actions
> ***Multiattack*** The Ala makes three attacks with it's tail
>
> ***Tail Attack.*** *Melee Weapon Attack:* +9 to hit, reach 10ft., one target. *Hit* 15 (2d8 + 5) bludgeoning
>
>***Wing Attack*** (Costs 2 Actions). The dragon beats its wings.
Each creature within 10 feet of the dragon must succeed
on a DC 17 Dexterity saving throw or take 13 (2d6 + 6)
bludgeoning damage and be knocked prone. The dragon can
then fly up to half its flying speed.

2

PART 2 | Monster Manual

\page

Related Images : http://i.imgur.com/PSi0B2X.jpg

The Homebrewery defaults to Letter sized paper. To set it to A4, just add the A4 page size snippet under the print snippets. Let me know if that fixes your problem.


hi，I want to apply your core in 1D CNN

where code should I to change?thank u

hi,
the only part using "neural network" is
https://github.com/kimhc6028/soft-decision-tree/blob/abe7a9b1690490cb450793d3417c7078ef1a6df1/model.py#L16
I don't get how would you apply 1d cnn for this network, but I would recommend to start from line above.

I'll read your code first, and then see if it can be applied to my problem. I may ask you later. Thank you.


Add a comment explaining the special logic for IPv6 handling.

The logic was added in https://github.com/youtube/vitess/pull/2920.

LGTM

LGTM


refactor(nav-controller): support multiple transitions via child-nav …

This is a PR that tracks the number of active transitions and delegates the enable/disabling of the app to the number of active transitions.
Basically... When navigating to a page with a child-nav, the app would be disabled from the initial transition to a page, then the subsequent child nav event would reactivate the app.

Discussed this offline and decided against keeping track of active transitions, as that number may get out of sync unexpectedly and could possibly freeze the app from any interactivity.


Import path of zxing.min.js is incorrect

The import path is /_content/ZXingBlazor/lib/zxing/zxing.min.js originally in BarcodeReader.razor.js, but  when I deploy my web app to the production server, it show the following error message: Failed to fetch dynamically imported module: https://[my web site]/[web application]/_content/ZXingBlazor/BarcodeReader.razor.js?v=<IP_ADDRESS> TypeError: Failed to fetch dynamically imported module: https://[my web site]/[web application]/_content/ZXingBlazor/BarcodeReader.razor.js?v=<IP_ADDRESS>
When I update the path to ./lib/zxing/zxing.min.js, the error is gone.

Are you compiling from source code or using nuget package?
maybe ploblem is deploy with https://[my web site]/[web application] ,  I usually deploy it on a domain name, such as https://blazor.app1.es/barcodescanner,  maybe i need do some test with https://[my web site]/[web application]  format.  thanks for your report

Thanks for your reply, I download the library via Nuget, and deployed the web app under a domain, it would be nice if this library can be used in multiple web app environment, please consider to add this support for this kind of situation, thanks a lot.


Keynames used for the secrets for Package Configuration Provider config instead of values

We are using the same secret dosToken for both DOS Scanner and DOS Package Configuration Provider to enable the plugins to communicate with DOS back-end.  The secret is defined in Docker Compose in secrets/compose/secrets.properties with (an example)
# DOS credentials
dosToken=1234567890abcde

For the Scanner job, the relevant part of the configuration object is

scanners: ['DOS'],
config: {
  DOS: {
    options: {
      readFromStorage: 'false',
      writeToStorage: 'true',
      url: 'https://dos/api/url/',
      frontendUrl: 'https://dos/frontend/url/',
      pollInterval: '5',
      timeout: '300',
    },
    secrets: {
      token: 'dosToken',
    },
  },
},

The value of dosToken is used properly for DOS scanner, which is also verified from PostgresDB from the table scanner_configuration_secrets.

For the Evaluator job, the relevant part of the configuration object is

packageConfigurationProviders: [
  {
    type: 'DOS',
    options: {
      url: 'https://dos/api/url/',
      timeout: '300',
    },
    secrets: {
      token: 'dosToken',
    },
  },
],

But we have verified from our back-end that instead of the value of dosToken, the server tries to use a literal key dosToken as the value, leading to communication failure with DOS back-end.

If the same secret cannot actually be used for two workers, this is not documented.

the server tries to use a literal key dosToken as the value

I'm very surprised that this is not always the case, also for the scanner. Is there maybe some config transformation or so configured for the scanner, that is not configured for the evaluator?

Looks like the function that resolves dosToken to the actual secret is WorkerContext.resolveConfigSecrets(). It's called in ScannerRunner.run() but not in EvaluatorRunner.run().

Looks like the function that resolves dosToken to the actual secret is WorkerContext.resolveConfigSecrets(). It's called in ScannerRunner.run() but not in EvaluatorRunner.run().

That could explain why a literal dosToken is used as the value of the secret - because the real value is not resolved anywhere?

the server tries to use a literal key dosToken as the value

I'm very surprised that this is not always the case, also for the scanner. Is there maybe some config transformation or so configured for the scanner, that is not configured for the evaluator?

I don't think so. This is DOS scanner config code, and for the DOS PCP, the config class is inlined to the same file as the implementation.
We have been using the same configuration structure as given in the description of this issue for both plugins for a long time now, with no problems.

I will prepare a fix.

I will prepare a fix.

Thanks! This is our (almost) last hurdle in integrating our solution into ORT server, so let's hope the fix isn't too complicated.

Thanks @mnonnenmacher nice work fixing this. We have successfully integrated both our scanner and package config provider into ORT server now.


--use_reminders doesn't take default reminders into consideration

Example: I have an event in an hour with a default notification (which for this calendar is 15 minutes). If I run gcalcli remind --use_reminders 60 ..., I get a notification for it. The behavior I'd expect is for the notification not to trigger until 15 minutes before the event.
Workaround: change event reminder by a minute to make it not the default.
In the code in the function Remind, event['reminders'] for me was {'useDefault': True} which caused the if statement checking if the event has overrides to be false. I think it needs more logic to check the value of useDefault and figure out what the default reminder is.

I also have this issue, with an event added to my calendar automatically. The event shows a reminder of 30 minutes in the web interface. This event has the structure
event['reminders'] = {'useDefault': True}
but also
event['gcalcli_cal']['defaultReminders'] = [{'method': 'popup', 'minutes': 30}]
Which is probably why it has a reminder shown on the web interface (A side note is that all of my other events, which have useDefault set to false and some reminders in overrides also have the same 30 minute reminder in defaultReminders).
A quick patch that works for me is:
            # not sure if 'reminders' always in event
            if use_reminders and 'reminders' in event:
                if 'overrides' in event['reminders']:
                    reminders = event['reminders']['overrides']
                elif 'gcalcli_cal' in event
                         and 'defaultReminders' in event['gcalcli_cal']:
                    reminders = event['gcalcli_cal']['defaultReminders']
                else:
                    continue
                if all(event['s'] - timedelta(minutes=r['minutes']) > self.now
                        for r in reminders):
                    # don't remind if all reminders haven't arrived yet
                    continue

Is this something worth a pull request? Though probably there are better ways to handle the different cases, and I have no idea how this is related to #327.


Implement unit tests for pipeline element 'SwingingDoorTrendingFilterProcessor'

This issue is about implementing unit tests for our pipeline element SwingingDoorTrendingFilterProcessor.
An example of how to write unit tests for pipeline elements can be found here.
Mentoring
As this issue is marked as a good first issue and for the hacktoberfest event: one of @dominikriemer, @tenthe, @RobertIndie, or @bossenti are happy to provide help for getting started, just tag (one of) them if you want to start working on this issue and need some help.

Hi there! I'm eager to work on this issue. Can you provide guidance on how to get started with it? @tenthe

Hi @aamirxshaikh,
great that you want to work on this. As a first step, I would recommend that you check out the repository and have a look at the sample unit tests that are linked in the issue.
You can try running them first in your IDE, and then start with the implementation for the unit test for the [SwingingDoorTrendingFilterProcessor].(https://github.com/apache/streampipes/blob/752289c6acfc8fa10398c920d678c5c02143ed5c/streampipes-extensions/streampipes-processors-filters-jvm/src/main/java/org/apache/streampipes/processors/filters/jvm/processor/sdt)
Please let me know if you need further assistance.
Cheers,
Philipp


Zoom support for panOnScrollMode={PanOnScrollMode.Vertical}

Please describe the feature that you want to propose
When I set panOnScrollMode to Vertical, I expect zoom to zoomIn and zoomOut only for the center of the diagram Vertically (Not Horizontally).
Currently, zoom will happen to the current mouse location for all modes.
Currently, I implemented it with a custom onPaneScroll handler, and every time calculated the correct X for the viewport and remained Y the same. (Find the video below)
But I expect the library to support this behavior when Vertical is set or when a corresponding flag is provided.
https://user-images.githubusercontent.com/5987672/202851975-954505bf-b356-48ef-bad1-ea8193df27fd.mov

panOnScrollMode as the name implies, only is about panning. A zoom always affects both axis.

@moklick we need a property for zoom to affect only selected axis. Please :)


Cloud debugger fails with error "Multiple files match the path specified"

Environment details

OS: Win10Pro
Node.js version: 12.16.2 (local)
npm version: 6.14.4 (local)
@google-cloud/debug-agent version: 2.6.0

Steps to reproduce

AppEngine is instrumented with debug agent
source-context.json in root folder (same as index.js) pointing to the GitLab repo which mirrors into CSR
Go into either CSR or AppEngine -> Debug and place a breakpoint
Activate the route, observe "Multiple files match the path specified" error when hit

I believe this might be a library issue as I could find a reference to that string in the library.
Thank you in advance for your support.

Hi, to add further investigation to this: removing the source-context.json from both the repo and deployed AppEngine file does not change the behavior.

Hi, I am self-closing this issue as upgrading the version resolves it.


automated workflows fails at building dependencies

When I push a commit, the basic workflow fails at the "installing dependencies" part. Here is the trace of the failure:
Run poetry env use ""
  poetry env use ""
  poetry install --no-interaction --no-cache
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.11.6/x64
    PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.11.6/x64/lib/pkgconfig
    Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.6/x64
    Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.6/x64
    Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.11.6/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.11.6/x64/lib

Could not find the python executable
Error: Process completed with exit code 1.

From the looks of it, poetry fails because the variable ${{ matrix.python-version }} is empty. Could it be that the variable is not defined in docs.yaml? I can see it in ci.yaml but I am not sure if that file is used in this workflow.

Good catch! And you're completely right, the matrix is the culprit. This should now be fixed via the commit https://github.com/alexandrainst/alexandra-ml-template/commit/c02f28b9d781d895ce1ec41b3f1ccb45088dd0a5.


[framework bundle] abstract controller createForm visibility

fixes https://github.com/psalm/psalm-plugin-symfony/issues/313


Update repositories.toml vue-mess-detector added

ℹ Repository information
The repository has:

[x] At least three issues with the good first issue label.
[x] At least 10 contributors.
[x] Detailed setup instructions for the project.
[x] CONTRIBUTING.md
[x] Actively maintained.

Issues: https://github.com/rrd108/vue-mess-detector/issues

Actively maintained.

Can vouch, friendly group and helpful on the discord/PRs too.


[RootView] Asynchronously load the bundle to give time to configure the root view

If you construct an RCTRootView you may want to configure the executor. However the constructor synchronously calls loadBundle and sets up the executor and bridge. This is a quick fix that uses dispatch_async to allow the current pass of the runloop time to set up the executor.
Tested by constructing an RCTRootView and then customizing the executor class on the next line. Works with this patch.
Fixes #288

cc @nicklockwood I believe you are the right person to look at this. it's a quick fix but shouldn't have adverse side effects until an API change can be worked out.

Any noticeable speed improvements?

@amasad This actually introduces a delay of one run loop of the main thread (should be under 16ms) to fix a bug.

This makes sense, but I think we're ditching the public property for setting executor, since you'll only ever want the JSCore one for deployment, or the WebSocket/WebView one for debug. Might add a private setter for injecting a mock version (for unit testing), but otherwise there seems little benefit to exposing the class.

I actually use a custom executor (similar to the ContextExecutor) to set up the JS environment so could you keep a way to set it?

+1 on keeping it. It could be a way to reuse 3rd party JavaScriptCore code unaware of React Native

Right now you still can set the class it will use, but not prior to running... You have to set it, and then reload, and it can't be at initialization time, or the bridge will ignore you.
But we can look into that...

This diff addresses that issue by giving the initial load one pass of the run loop to set up the executor class. It's not meant to be a permanent solution but the patch is kept tidy in one place and shouldn't add maintenance cost until another solution is in place.

setScriptURL doesn't exist anymore. Can you re-open if it is still useful.

This is still an issue -- RCTBridge calls setUp from its initializer, which synchronously creates the executor. I'm not able to reopen GH issues but have updated the branch/diff.


Expose mozjpeg quant_table flag

This exposes the quant_table flag from mozjpeg, which previously had the libjpeg/mozjpeg default of 0. Will use 0 as the default, but now it's possible to choose a specific quantisation table when paired with the optimize_coding flag that was recently added.
This can be very useful in a certain cases where some tables provide a better quality/compression ratio for certain images, which opens up a few cool tricks.
I unfortunately could not figure out a way to run the tests in a reliable way since mozjpeg is usually not installed, but it seems other tests using mozjpeg features use a similar "same or less" approach - let me know if you have any pointers on how this can be improved. Perhaps if there was some way to check if mozjpeg is available, it could be exposed by sharp somehow and we could do a skip on the specific tests if not available?

Coverage increased (+0.007%) to 99.018% when pulling 059a5c0576a74e9c0db0b2eb20e74b76118e4343 on rexxars:jpeg-specify-quant-table into 5cb35485f14e4d5d47d5efce2269bbdb9040cd4f on lovell:master.

Hei Espen, thanks for this PR, I should be able to take a closer look in a couple of days.
I think it might reveal a small bug in the way libvips currently only sets the table based on quant_table being non-zero. However mozjpeg uses table 3 by default, which means you can never "reset" mozjpeg to use table 0 via libvips. It also means that you might think you're using table 0 "by default" when you're actually getting table 3.

I've compiled against libvips 8.6.4 and mozjpeg 3.3.1, and I think you're onto something, but I'm not seeing quite the behavior you are suggesting. It seems to me that (with this PR, at least) I am able to freely change between the different quantization tables:
onst sharp = require('./')

async function main() {
  for (let i = 8; i >= 0; i--) {
    await sharp('img.jpg')
      .resize(1024, 1024)
      .max()
      .jpeg({
        optimizeCoding: false,
        quantisationTable: i
      })
      .toBuffer()
      .then(res => console.log('Table %d, %d bytes', i, res.length))
      .catch(err => console.error(err))
  }
}

main()

Yields the following output:
Table 8, 165658 bytes
Table 7, 186603 bytes
Table 6, 146376 bytes
Table 5, 117315 bytes
Table 4, 126824 bytes
Table 3, 115800 bytes
Table 2, 119055 bytes
Table 1, 202427 bytes
Table 0, 126018 bytes

As you pointed out however, libjpegs default quantization table is 0, while mozjpeg is 3, and this PR sets it to 0 by default.

Thanks for checking. I'd forgotten about the libvips logic, which I added, to reset mozjpeg to use libjpeg defaults and therefore table 0 - see https://github.com/jcupitt/libvips/commit/00e27def8ea841db6b3ec9da00bbdc976241c4ae#diff-6e6f82dc292e7f7f8d223ff3dff4c7faR913

Thank you, this will be in v0.20.6.

Thanks a bunch, Lovell! sharp is fantastic ❤


Uncaught TypeError: Cannot convert undefined or null to object

Describe the bug
Tracing the error to dist.js in clean-tag,
var _styledSystem = require('styled-system');
...

var allPropTypes = Object.keys(_styledSystem.styles).filter(function (key) {
  return typeof _styledSystem.styles[key] === 'function';
}).reduce(function (a, key) {
  return Object.assign(a, _styledSystem.styles[key].propTypes);
}, {});

_styledSystem does not have a "styles" plural property. Should be "style" singular instead.
Heres what i discovered:

rendition requires grid-styled

grid-styled requires clean-tag

clean-tag requires 'styled-system'

clean-tag has "main": "dist.js", in package.json

To Reproduce
Steps to reproduce the behavior:

npm i rendition --save or npm i rendition --save-dev
Then try below:

import { Button, Box, Provider } from 'rendition';
ReactDOM.render(
    <Provider>
        <Box my={3} mx={['auto', 15]}>
            <Button primary emphasized>Click me</Button>
        </Box>
    </Provider>,
    document.getElementById('root')
);

Expected behavior
Expected the application to run and have basic components displayed.
Screenshots
Uncaught TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Object../node_modules/clean-tag/dist.js (dist.js:32)
    at __webpack_require__ (bootstrap:19)
    at Object../node_modules/grid-styled/dist/Box.js (Box.js:15)
    at __webpack_require__ (bootstrap:19)
    at Object../node_modules/grid-styled/dist/index.js (index.js:7)
    at __webpack_require__ (bootstrap:19)
    at Object../node_modules/rendition/dist/components/Grid.js (Grid.js:7)
    at __webpack_require__ (bootstrap:19)
    at Object../node_modules/rendition/dist/components/Badge.js (Badge.js:31)

Specifications (please complete the following information):

Browser: Google Chrome 67
OS: OS X 10.13.5
Environment: devenv

Additional context
My package.json
{
  "name": "resin-io",
  "version": "1.0.0",
  "description": "Bulb lightning automation by Toniton",
  "private": true,
  "dependencies": {
    "body-parser": "^1.18.3",
    "cors": "^2.8.4",
    "express": "^4.16.3",
    "lodash": "^4.17.10"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-eslint": "^8.2.5",
    "babel-jest": "^23.4.0",
    "babel-loader": "^7.1.4",
    "babel-plugin-syntax-decorators": "^6.13.0",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "babel-plugin-transform-flow-strip-types": "^6.22.0",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-plugin-transform-react-jsx": "^6.24.1",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-jest": "^23.2.0",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "bootstrap": "^4.1.1",
    "clean-webpack-plugin": "^0.1.19",
    "css-loader": "^0.28.11",
    "eslint": "^5.1.0",
    "eslint-config-google": "^0.9.1",
    "eslint-config-node": "^3.0.0",
    "eslint-loader": "^2.0.0",
    "eslint-plugin-lodash": "^2.7.0",
    "eslint-plugin-react": "^7.10.0",
    "extract-text-webpack-plugin": "^4.0.0-beta.0",
    "fetch-mock": "^6.5.0",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.2.0",
    "jasmine-core": "^3.1.0",
    "jquery": "^3.3.1",
    "karma": "^2.0.3",
    "karma-chrome-launcher": "^2.2.0",
    "karma-jasmine": "^1.1.2",
    "karma-webpack": "^3.0.0",
    "node-sass": "^4.9.0",
    "popper.js": "^1.14.3",
    "prop-types": "^15.6.2",
    "react": "^16.4.1",
    "react-dom": "^16.4.1",
    "react-redux": "^5.0.7",
    "react-router-dom": "^4.3.1",
    "redux": "^4.0.0",
    "redux-mock-store": "^1.5.3",
    "redux-thunk": "^2.3.0",
    "rendition": "^4.18.1",
    "sass-loader": "^7.0.3",
    "seamless-immutable": "^7.1.3",
    "style-loader": "^0.21.0",
    "webpack": "^4.12.0",
    "webpack-cli": "^3.0.8",
    "webpack-dev-middleware": "^3.1.3",
    "webpack-dev-server": "^3.1.4"
  },
  "scripts": {
    "test": "karma start ./karma.conf.js  --auto-watch",
    "watch": "webpack --watch",
    "start": "node server.js",
    "server": "node server.js",
    "build": "webpack"
  },
  "keywords": [
    "Light",
    "Bulb",
    "Control"
  ],
  "author": "Toniton",
  "license": "MIT"
}

Before submitting this issue, please check that this issue is not a duplicate. If there is another issue describing the same problem or feature please add your information to the existing issue's comments.

@toniton How are you compiling your JSX code? If it's with webpack, can you post your webpack configuration file?

Webpack config
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
    devtool: 'inline-source-map',
    devServer: {
        open: true,
        inline: true,
        contentBase: './dist',
        historyApiFallback: true
    },
    entry: ['babel-polyfill', './src/index.js'],
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: 'css-loader',
                })
            },
            {
                test: /\.scss|\.sass$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: ['css-loader', 'sass-loader'],
                })
            },
            {
                test: /\.(js|jsx)$/,
                exclude: /node_modules/,
                loader: "babel-loader",
                query: {
                    presets: ['babel-preset-env', 'react', 'stage-0' ]
                }
            },
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: "eslint-loader"
            },
            {
                test: /\.(png|svg|jpg|gif)$/,
                use: [
                    'file-loader'
                ]
            },
            {
                test: /\.(woff|woff2|eot|ttf|otf)$/,
                use: [
                    'file-loader'
                ]
            }
        ]
    },
    mode: 'development',
    output: {
        filename: '[name].bundle.js',
        path: path.resolve(__dirname, 'dist'),
        publicPath: '/'
    },
    resolve: {
        extensions: ['*', '.js'],
        modules: [
            path.resolve(__dirname, 'node_modules'),
        ],
    },
    plugins: [
        new CleanWebpackPlugin(['dist']),
        new HtmlWebpackPlugin({
            title: 'Output Management',
            template: 'src/index.html'
        }),
        new ExtractTextPlugin({
            filename: 'style.[hash].css'
        }),
    ]
};

It looks like this issue was reported and fixed on the styled-system repo here https://github.com/jxnblk/styled-system/issues/199
I'm able to reproduce this issue locally using your webpack setup, so I'll look at updating the dependency in rendition and do some testing.

@toniton There is an issue with your webpack configurations
    resolve: {
        extensions: ['*', '.js'],
        modules: [
            path.resolve(__dirname, 'node_modules'),
        ],
    },

This causes webpack to only look for node modules in the top level node_modules directory, and ignores sub folders.
If you remove this part of your config, the project should build correctly.

@LucianBuzzo Thanks, it works pretty well now.


Adjusted position of level number in achievements activity

Description
Adjusted layout of achievements activity to adjust vertical position of level number on all screen sizes
Fixes #2677 Level number in achievements position is a bit odd with 2 digits
Screenshot for 1 digit level number

Screenshot for 2-digit level number

Codecov Report

Merging #2695 into master will not change coverage.
The diff coverage is 0%.

@@          Coverage Diff           @@
##           master   #2695   +/-   ##
======================================
  Coverage    2.81%   2.81%
======================================
  Files         258     258
  Lines       12376   12376
  Branches     1111    1111
======================================
  Hits          349     349
  Misses      12001   12001
  Partials       26      26

Impacted Files
Coverage Δ

...nrw/commons/achievements/AchievementsActivity.java
0% <0%> (ø)
:arrow_up:

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 268ba07...7a41147. Read the comment docs.


Export the testing mechanism

The testing mechanism is useful for other projects that need to run tests against JPA and Hibernate.

Fixed.


Get.offAllNamed not passing arguments

Describe the bug
I've experienced a problem trying to use Get.offAllNamed(ROUTE_NAME, arguments {
SOME_OBJECT,
},). When using the exact same arguments and ROUTE_NAME but with Get.to, Get.offNamed or Get.off, SOME_OBJETC was successfully passed to the next page, but when using Get.offAllNamed, SOME_OBJECT was found to be null.
To Reproduce

Use Named routes and try to pass some object as argumt
Use Get.offAllNamed to navigate and pass the object
Object is found to be null in the target page.

Expected behavior
One should be able to access the arguments object
Flutter Version:**
1.17.0
Get Version:
2.12.5
Describe on which device you found the bug:
Samsung A51
Minimal reproduce code
Get.offAllNamed(
ROUTE_NAME,
arguments: {
KEY: data,
},
);

I was able to confirm and that works properly.
You should probably be putting Get.arguments out of a Controller or the build method, and it probably won't work, but there is definitely no bug in Get.offAllNamed.
Please review your settings, or if you are sure this is a bug, open an issue with a reproduction case.
import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  runApp(App());
}

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      initialRoute: '/',
      namedRoutes: {
        '/': GetRoute(page: Home()),
        '/second': GetRoute(page: Second()),
        '/third': GetRoute(page: Third())
      },
    );
  }
}

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print("home build");
    print("${Get.arguments}");
    return Material(
      child: FlatButton(
          onPressed: () {
            Get.toNamed('/second');
          },
          child: Text('go to second')),
    );
  }
}

class Second extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Material(
      child: FlatButton(
          onPressed: () {
            Get.toNamed('/third');
          },
          child: Text('go to third')),
    );
  }
}

class Third extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Material(
      child: FlatButton(
          onPressed: () {
            Get.offAllNamed(
              '/',
              arguments: {
                "KEY": "data",
              },
            );
          },
          child: Text('off all to home')),
    );
  }
}

out:
flutter: [GET] GetMaterialController has been initialized
flutter: [GOING TO ROUTE] /
flutter: home build
flutter: null
flutter: [GOING TO ROUTE] /second
flutter: [GOING TO ROUTE] /third
flutter: [GOING TO ROUTE] /
flutter: [REMOVING ROUTE] /third
flutter: [REMOVING ROUTE] /second
flutter: [REMOVING ROUTE] /
flutter: home build
flutter: {KEY: data}


[DAFFODIL-1437] : DFA Rules - eliminate anonymous classes and functions

Links to https://github.com/apache/daffodil/pull/561

Thanks! I've confirmed that code in this PR is exactly the same as that in #561, so all +1's carry over. We can merge this once 3.1.0 is released.
@sndp2693, Also I just noticed this, and this isn't a big deal and you don't have to change this, but for future commits, the convention we have been using for commit messages is to put the bug number at the end of the commit message instead of the subject. So for example, the commit message should look like this instead:
DFA Rules - eliminate anonymous classes and functions

DAFFODIL-1437


feat(plugin): Add plugin hook to allow other plugins to use the manifest

Hello there 😃
My team has very specific needs for our build process and we are currently developing a Webpack Plugin that needs the entry and output filenames. We could do this on our own but it would be pointless to duplicate the code that is in the webpack-manifest-plugin. So we make a proposal to add a Webpack plugin hook to your plugin that will allow any plugin to hook itself to yours to pull the manifest.
I used the applyPluginsAsync function because the hook that I registered is post emit so no transformation could be applied and therefore there's no need to use waterfall or series.
I thought about adding also a hook before Json.stringify but I think that there's more probability that webpack-manifest-plugin hooks on other plugins to generate the manifest than other plugins hooking to webpack-manifest-plugin to edit it.
The hook is webpack-manifest-plugin-after-emit with one argument containing the whole manifest.
Does it sounds good to you ?
Thanks for your work !

Codecov Report

Merging #76 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master      #76   +/-   ##
=======================================
  Coverage   98.57%   98.57%
=======================================
  Files           2        2
  Lines          70       70
=======================================
  Hits           69       69
  Misses          1        1

Impacted Files
Coverage Δ

lib/plugin.js
98.55% <100%> (ø)
:arrow_up:

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 04916cd...907825e. Read the comment docs.

Yep, I thought we would need something like that one day 👍
Would you mind adding a test please

@mastilver yeah I fogot it, now it's done !
For contributors, would you like to have a basic eslint linting configuration ? It would ensure codestyle is matching with what's already in place (no missing semi, identation, make sure no ES6 feature is used, etc). I can do a pull request if you want

yep, already started in #67 (let me know what you think there) but I want to get 2.x out of the door first, then think about code style

Since this was merged, is it also possible to upload a new release on NPM? Testing with the locally changed file the emitter works (which is nice!) but I would rather not modify third party packages.


WIP Ica plot

Here's a plotter for ICA components (item at https://github.com/mne-tools/mne-python/issues/2213). The interactive selection doesn't work yet and neither does scrolling horizontally, but I wanted to show what I've done so far, because I'm not sure if this is what you guys wanted in the first place. I'm no expert in using ICA, so comments are welcome.

The plotter has basically the same interactive functions as does other browser functions. This PR also includes quite a bit of re-factoring of the existing browser functions.

I was going to suggest that you do some heavy refactoring to unify bits of
code but it sounds like you're already on it! Excellent.

cool
let us know when it's ready. If not yet.

awesome ! how should I test this? Is there an example I can run?

I added a line in the example that uses this function. If you're gonna run it many times, it's probably wise to save the ica solution and use that.

I made it so that the plotting function now returns the updated list of components marked for exclusion, as selected by the user. Would it be okay to exclude the components straight away on closing the figure (ica.exclude)? At the moment it only updates the list, but is inconsistent with other plot functions because it returns a tuple of figure and list instead of just the figure.

Would it be okay to exclude the components straight away on closing the figure (ica.exclude)?

I would opt for that.

+1

On 2 juil. 2015, at 16:07, Denis A. Engemann<EMAIL_ADDRESS>wrote:
Would it be okay to exclude the components straight away on closing the figure (ica.exclude)?
I would opt for that.
—
Reply to this email directly or view it on GitHub.

There is no help button here. I suppose you'll add that soon?

The help button positioning is partly dependent on the layout remake at https://github.com/mne-tools/mne-python/pull/2214. I'd rather wait for it to be merged before implementing it here.

@jaeilepp @mainakjas @agramfort I still think we should just overwrite plot_sources or so. Not sure we should add new methods.

On Fri, Jul 3, 2015 at 10:18 AM, Denis A. Engemann<EMAIL_ADDRESS>
wrote:

@jaeilepp https://github.com/jaeilepp @mainakjas
https://github.com/mainakjas @agramfort https://github.com/agramfort
I still think we should just overwrite plot_sources or so. Not sure we
should add new methods.

+1 I agree. What we have is a more sophisticated version of plot_sources,
right?

—
Reply to this email directly or view it on GitHub
https://github.com/mne-tools/mne-python/pull/2251#issuecomment-118271360
.

plot_sources,
right?

yes and plot_sources was the weakest of the plotting functions at least for raw. The evoked counterpart is really useful.

... which reminds us of the fact that we should also recycle the epochs viz here. I would suspect that is at least as useful as the raw viz for ICA.

+1 for recycling raw and epochs browser here.

Epoch plotter implemented. Is there any sense in marking bad epochs here? Should it be disabled? Also, is the exclude parameter needed? Ica object already has an exclude attribute, which is basically the same. Same goes for raw plotter. So basically the use case would change so that the user updates the ica.exclude before plotting to see the components marked for exclusion.

No sense, so yes, it should be disabled

On 06 Jul 2015, at 12:34, jaeilepp<EMAIL_ADDRESS>wrote:
Epoch plotter implemented. Is there any sense in marking bad epochs here? Should it be disabled? Also, is the exclude parameter needed? Ica object already has an exclude attribute, which is basically the same. Same goes for raw plotter. So basically the use case would change so that the user updates the ica.exclude before plotting to see the components marked for exclusion.
—
Reply to this email directly or view it on GitHub.

I changed the plot_sources to use these new functions for epochs and raw instances. See if you're happy.

works great for me
did not review full code though.
Usability feedback. Not for this PR but it would be great to preview the
topography of source from the browser. I see some nice alpha waves on raw
examples and it's frustrating not to be able to see the associated
topography.

Usability feedback. Not for this PR but it would be great to preview the topography of source from the browser.

Did you mean like this? I implemented it here, since it was quite easy to do.

The component can be shown by clicking on the y axis label. I don't think it's going to work on every data since it relies on getting the layout from the data.
The indexing is actually inconsistent (ICA 109 = IC 108). I'll change that...

The indexing is actually inconsistent (ICA 109 = IC 108). I'll change that...

Now it's a good moment to attack that (cc @teonlamont). I'd do it at the plotting level, not at the level of the sources as raw function.
I'm still wondering though what's better. It's actually correct: ICA component #109 has the python index 108, wheras component #0 does not exist. We do the same for the channels btw.

I'm still wondering though what's better. It's actually correct: ICA component #109 has the python index 108, wheras component #0 does not exist. We do the same for the channels btw.

Yeah, I intuitively thought that the indexing should start from 1, but all the existing plotting functions seem to be using 0 for ICA.

I guess this is ready for review, but it still needs some testing.

closes #2000 #2043.
are we able to mark bad ICs from the browser like in the raw/epochs viewer?
also, what's the verdict on the indexing, are we plotting the ICs to start at 1 e.g. ICA 001 for all the plots now? do we still exclude based on the python index? if so, should we support exclude to take IC label to be in line with info['bads']? I think @agramfort and me mentioned it as a solution at one point https://github.com/mne-tools/mne-python/pull/2019#issuecomment-96275197. for me, as long as we have a consistent use of names across the board, I'm happy.
btw, the topo view is super useful

you need to rebase

are you showing only the topo for the magnetometers? what if you have fitted ica with grads too and even eeg?

It's using the defaults of plot_components. Documentation says:

ch_type : 'mag' | 'grad' | 'planar1' | 'planar2' | 'eeg' | None
The channel type to plot. For 'grad', the gradiometers are
collected in pairs and the RMS for each pair is plotted.
If None, then channels are chosen in the order given above.

ok. Could we show all ch types available? grad, mag and EEG? I am curious
to visualize to the topos of grad vs eeg for example.

You mean a field just showing the channel types on plot_components or an interactive selection of channels?

I mean showing all topos rather than just one when you click on channel
name.

Okay, I think this is ready for review. There might be some glitches with it, since a lot have changed with the browsers functions. At least I can't find any major flaws, but I'm not an expert with ICA.

channel numbers should be formatted %03d.

So how do you remove bad ICs and how do you plot the topography? I think I read that topo come from clicking the ICA label? the only problem i see with that for raw.plot, epochs.plot, that label clicking is for marking the bad channels.

@teonlamont you can click on the lines. I think it's ok.
any other opinion?

just the number format for the channel names

any other opinion?

At the moment clicking the data does the 'primary' function (bad channel for raw, bad epoch for epoch, bad component for ICA). The 'secondary' function is done by clicking the label (bad channel for raw and epoch, topography for ICA). This seems the most intuitive solution for me.
Ready for review.

Don't worry @choldgraf there are plenty of other things to do. You could
potentially improve the data viz browsers like you've wanted to for a
while?

Whoops wrong thread!

A few observations:

in the standard example the ECG seems to be invisible on the time course, the topo looks right.
the plot is not efficiently used, many white spaces
the original ECG / channels are not shown, they may be very helpful for detecting visually correlations. use ica.get_sources for this.

I found a few minor issues, I'll open a PR to your branch.

Btw. for epochs the timeseries looks correct.

@jaeilepp can you rebase?

@jaeilepp something went wrong with your rebasing. I see commits listed multiple times :(

besides LGTM. Works great on my box.
@jaeilepp you'll need to rebase.

@agramfort do your IC timeseries in the raw example look fine?

Ready for review.

I am happy
+1 for merge
@dengemann ?

@jaeilepp we still don't see the EOG channels / ECG channels in the ICA time series, do we? I'll merge but please open an issue for later. Thanks for the wonderful work!

great !


[FEAT] FAQ Section Added

FAQ Section Added

Fixes #281

Screenshot :

All Important Questions Added. If Needed, I Will Modify Later.

Changes on 2nd Commit :

FAQ  -> Frequently Asked Questions [ FAQs ]

@mansiruhil13 review and merge.


Reboot loop on windows 7 after installing legacy update

This is probably Sysprep mode
VID_20241207_210937.webm

Thanks, will close this as a duplicate of either #285 or #307.


Note on how to work with Service Endpoints

Describes how to configure VNET outbound with Service Endpoints.
@MightyPen

@DhruvMsft : Thanks for your contribution! The author, @CarlRabeler, has been notified to review your proposed change.

@DhruvMsft : Thanks for your contribution! The author, @CarlRabeler, has been notified to review your proposed change.

#sign-off

@MightyPen: I'm sorry - only the author of this article, @CarlRabeler, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

@GitHubber17 : Thanks for your contribution! The author, @CarlRabeler, has been notified to review your proposed change.


Timepicker triggers dirty flag inside ngRepeat

Using just Angular 1.3.3 and Angular-UI 0.12.0, when the following code loads:
JS:
$scope.groups = [];
$scope.groups.push(
  {when: new Date(2014,9,1,10,15)}
);

HTML:

    <timepicker ng-model="group.when"></timepicker>

The timepicker element is immediately marked dirty/triggers the change event. This is problematic when attempting to check for changes on page unload as there will always be detected changes. See here:
http://plnkr.co/Ic2HA390OI2xheT38Izz
This does not happen outside ngRepeat, or with a simple text input inside the ngRepeat. See here:
http://plnkr.co/s0KwGrZkHaog4efyjGBK
I have managed to work around the issue by modifying the directive, but I'm not sure that my change is safe. The modification is to the refresh() function:
  function refresh( keyboardChange ) {
    makeValid();
    if (ngModelCtrl.$viewValue.getTime() != new Date(selected).getTime()) {
      ngModelCtrl.$setViewValue(new Date(selected));
    }
    updateTemplate( keyboardChange );
  }

My change was not entirely safe. If the timepicker was invalidated (by, say, deleting one of the component values) then it would continuously fail to validate afterwards. I tweaked the modification slightly.
  function refresh( keyboardChange ) {
    makeValid();
    if (!ngModelCtrl.$viewValue || ngModelCtrl.$viewValue.getTime() != new Date(selected).getTime()) {
      ngModelCtrl.$setViewValue(new Date(selected));
    }
    updateTemplate( keyboardChange );
  }

(probably still not safe)

This is not quite right.
From some experimentation, it appears that what is causing the form to be set as dirty is the refresh function being called twice, once for having a valid hours value and once for having a valid minutes value.
The correct fix then should be to check if each function is called for the first time on load, set the form to pristine, then toggle an internal variable so that the form cannot be set to pristine again via these mechanisms.

Added a comment to the PR, it's due to the new handling of type="text" (vs `type="number").


[backport] Validate k8s 1.16.9 and 1.17.5 versions

Needs to be coordinated with nodelocal backport issue (#26480)

Reopening because unable to see the expected versions.
KDM config:
{
  "branch": "dev-v2.3",
  "refresh-interval-minutes": "1440",
  "url": "https://github.com/rancher/kontainer-driver-metadata.git"
}

Versions in dropdown:

@mrajashree what's the minimum version set for these templates?

@rancher-max @deniseschannon This needs an RC, can be only tested on RC.

The minimum rancher server version is 2.3.7-rc1 for these new k8s versions

Validated in v2.3.7-rc2

All kdm jobs and automation on k8s v1.17.5 and k8s v1.16.9 passed

Available versions:

In rancher v2.3.6 using kdm branch dev-v2.3 available versions:


Fix bad BinaryData conversion in Communication Email attachments

BinaryData already has a .ToArray() of byte, and Convert.ToBase64() already accept it.  The conversion to and from string is not needed and mangles binary attachments like images. This happens because the conversion to utf8 is not round-trip safe when there are invalid characters pairs.
Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

#34892

#bee742505a64bee0da8b7f3733d2303f1fc59a8c

@apattath please can you release a beta4 with this fix?
It's quite urgent for us.
Thanks you!

@apattath please can you release a beta4 with this fix? It's quite urgent for us. Thanks you!

Hi Davide,
The updated package with fix is published to nuget.org now (version 1.0.0-beta.4)


How to define foreign key for tables

As you can see, table Notes has a field called folderId which should use the id of Folders table as a Foreign Key. How can I define a foreign key for folderId field. Thanks.
@DataClassName('FolderEntry')
class Folders extends Table {
  IntColumn get id => integer().autoIncrement()();

  TextColumn get name => text().withLength(min: 1, max: 200)();
}

@DataClassName('NoteEntry')
class Notes extends Table {
  IntColumn get id => integer().autoIncrement()();

  IntColumn get folderId =>
      integer().withDefault(const Constant(3)).named('folderId')();

  TextColumn get title => text().withLength(min: 2, max: 200)();

  TextColumn get content => text().nullable()();

  DateTimeColumn get created =>
      dateTime().withDefault(Constant(DateTime.now()))();
}

Moor doesn't support foreign key constraints in its Dart api yet. However, you can implement them with custom constraints on columns. You'll also need to enable the foreign_keys pragma in a beforeOpen callback.
Let me know if that doesn't solve your problem, I'll re-open this issue then.


Add Spanish

Templates, Samples, utterances
Full translaction to spanish
Without accents and without ñ because of http://www.makermusings.com/amazon-echo-utterance-expander/ doesn´t allow it.

This resolve #275

Looks good :)

Without accents and without ñ because of http://www.makermusings.com/amazon-echo-utterance-expander/ doesn´t allow it.

Maybe I need to build a new expander that supports that...

Thank you


Simplify finite element state creation

This replaces the unique pointer to a finite element collection with an enum denoting the basis function selection in the construction of a FiniteElementVector.
Note that a new basis function enum class was needed due to resolution conflicts between dual.hpp and expr_template_ops.hpp, which both define templated operator* methods.
Resolves https://github.com/LLNL/serac/issues/872

Codecov Report

Merging #875 (8b1bfd2) into develop (03b9c30) will decrease coverage by 0.09%.
The diff coverage is 47.36%.

@@             Coverage Diff             @@
##           develop     #875      +/-   ##
===========================================
- Coverage    94.82%   94.73%   -0.10%
===========================================
  Files          152      152
  Lines        10669    10674       +5
===========================================
- Hits         10117    10112       -5
- Misses         552      562      +10

Impacted Files
Coverage Δ

src/serac/physics/state/finite_element_vector.hpp
100.00% <ø> (ø)

src/serac/physics/state/finite_element_vector.cpp
75.00% <41.17%> (-11.89%)
:arrow_down:

...cs/tests/parameterized_thermomechanics_example.cpp
100.00% <100.00%> (ø)

src/serac/physics/state/state_manager.cpp
92.81% <0.00%> (-0.05%)
:arrow_down:

src/serac/physics/tests/solid.cpp
95.08% <0.00%> (-0.04%)
:arrow_down:

src/serac/physics/tests/solid_legacy_adjoint.cpp
100.00% <0.00%> (ø)

src/serac/physics/tests/parameterized_thermal.cpp
100.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Add shift operation for profiles to EDSL

In order to do rolling window constraints (i.e. no more than X minutes of this activity in any Y hour window) we need to be able to shift real profiles in time. The pattern will be:
let duration = Spans.ForEachActivity("my activity").accummulatedDuration();
return duration.plus(duration.shiftBy(X).negate()).lessThan(Y);

While we're at it, it can't hurt to allow shifting of discrete profiles too. It would be less used, but still could be helpful and not hard to implement.

@JoelCourtney Just noting for this one we should provide a couple examples in our docs with how to implement some "real world" constraints that require this operator


Exemplars are not produced with 'tracing-opentelemetry:0.21.0'

In an experimentation, I tried to produced exemplars and were not able to produce them. Looking at the example in the repository, it appears that I had tracing-opentelemetry:0.21.0, but the example used tracing-opentelemetry:0.20.0.
This issue is easy to reproduce.

Go into autometrics-rs/examples/exemplars-tracing-opentelemetry
cargo run --release
curl --silent localhost:3000/metrics | grep 'trace_id' should produce some entries
Then cargo add<EMAIL_ADDRESS>cargo run --release
curl --silent localhost:3000/metrics | grep 'trace_id' does not produce entries anymore

By the way, thank you for this wonderful piece of software that autometrics-rs is.

hey thank you in kind for checking out the library and diving into exemplars! we're all really excited about the potential of exemplars, can't wait till all the otel implementations across languages support them.
i was able to reproduce, appreciate the steps.
i did some digging, but i don't work on the rust library, so i'm coming up short on a good theory for what's causing this.
i took a peek at the changelog for tracing-opentelemetry for 0.21.0 and they appear to have made a breaking change, but i'm not certain that's what's leading to the issue.
the change was to their MetricsLayer. i haven't been able to dig into how this would affect our example, but hopefully this is a good jumping off point for the autometrics-rs maintainers.
also, they made a small tweak here to fix an issue in the library, but again i don't have a good enough picture to understand if this might be causing issues for us downstream.
my best guess is that we can't attach the exemplar because the span context isn't valid when we get it for some reason (our code)

oh wait actually sc! when i updated the file autometrics/Cargo.toml to use tracing-opentelemetry = "0.21", i was no longer able to reproduce the issue! so it seems the library would need to explicitly add support for 0.21 as well?

I took a stab at it in https://github.com/autometrics-dev/autometrics-rs/pull/147. Please have a look.