Docs: Modals should not have aria-hidden attribute on a dialog element

UPDATE:

As commented below the team is aware of the issue and do not intend to change it because "yeah doesn't have any adverse effect". Instead they would use a javascript workaround to remove the attribute when the modal is shown. In my opinion it brings the confusion and unnecessary workaround to perform and maintain. I recommend NOT to set aria-hidden attribute on a modal dialog, in opposite to Bootstrap docs and due to reasons in detail described below. Everything will still work as expected if one omits it.

I've found several places in the docs modal code snippets using aria-hidden="true" attribute on a dialog element. Correct me if I'm wrong but I don't see any benefit of it. Huge drawback is that the entire modal is not available to a screen reader. My understanding is that Bootstrap overcome this issue by removing aria-hidden="true" dynamically when modal is shown using Javascript (but why?!).
Moreover in combination with tabindex="-1" makes even less sense since aria-hidden elements shouldn't be combined with or contain any focusable elements.
Example:

Reasons not to use aria-hidden attribute on a dialog element:

Not used by officials - w3.org - https://www.w3.org/TR/wai-aria-practices/examples/dialog-modal/dialog.html
Not used by MDN - https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/dialog_role
Discouraged to use unnecessarily by ADG:  https://www.accessibility-developer-guide.com/examples/sensible-aria-usage/hidden/
aria-hidden="true" must not be combined with or contain any focusable elements
If the content is hidden by CSS there is no need to hide it additionally from assistive technology. We already do have a solution that works for all so why to target screen reader only?

Maybe there was some history reasons why this exists but even if so it's implemented incorrectly in my opinion. Either way I think it's not needed and does not increase the level of accessibility. It only increase the maintenance and brinks a confusion to developers.
More from w3.org:

In legacy dialog implementations where aria-hidden is used to make content outside a dialog inert for assistive technology users, it is important that:
aria-hidden is set to true on each element containing a portion of the inert layer.
The dialog element is not a descendant of any element that has aria-hidden set to true.

This is my understanding and I referred the arguments.
I am happy to discuss.

it's aria-hidden="true" when it's currently not visible. once displayed, that's dynamically removed (and re-added when closed).

and tabindex="-1" means something can be programmatically focused. not that it's in the focus order. it only gets programmatically focused once it's made visible, which is when aria-hidden="true" is also removed.

true that display:none also removes the modal from the accessibility tree, making aria-hidden redundant. but it also doesn't have any adverse effect.

I don't really understand how can it be acceptable having a redundant confusing piece of code and additional Javascript script to remove it?
Why to maintain this? Shouldn't we just remove it? I can do that as well if you don't mind.
Not only that it's redundant but it also confuses the users and general understanding of accessibility practices. It might also happen that someone tries to create a similar component and decides to keep aria-hidden="true" thinking that this is something relevant or required.
I don't see a single reason to keep it except that "yeah doesn't have any adverse effect".

conversely, authors may create a similar component, and instead of display:none use some other method to visually hide it (for instance, just moving the inert dialog off-screen and settings its opacity to zero, so they can then make it animate and swoosh in from the side while fading in), without realising that this still results in the dialog being present for assistive tech users unless it's aria-hidden.

I agree that it can be argued. It's hard to be smart when it comes to accessibility.
It's a good argument but in my opinion not the correct way of thinking. Let me explain.
In this case the screen reader would at least announce that the content exist even if implemented incorrectly. That's opposite to the content which is permanently hidden and never accessible to the user in either way.
From my experience due to majority of inaccessible websites the users handle such content quite well. It's NOT a problem to skip an irrelevant block but IT IS a problem to hide a content from specific groups of users making them unaware that there is anything.
We must focus making solution that works for all, not targeting specific groups of users if not absolutely necessary!
More is not always batter. I would strongly recommend to read the articles here on sensible ARIA usage:
https://www.accessibility-developer-guide.com/examples/sensible-aria-usage
I still believe the current implementation is just a workaround and I don't see a point of keeping it. O only see drawbacks and I am happy to discuss further.
Best regards!

Hrvoje

@patrickhlauke how long does the dialog need until it appears in case of an annimation? I am a blind NVDA user and I would say a sighted person would most probably see the dialog comming faster than me even if I could theoretically discover it while opacity is zero without aria hidden="true". However, this is a matter of miliseconds probably and in practice I would never have an advantage of finding this dialog faster than a sighted person.
cc: @jcsteh maybe you have some suggestions here because we see lots of such dialogs implemented with the current bootstrap documentation stating that aria hidden="true" and tabindex="-1" should be set. This cauuses issues when using a screen reader indeed.

Real use case where removing hidden atribute and restoring focus on a dialog causes an issue:
https://github.com/nvaccess/nvda/issues/11237
https://codepen.io/mijordan/live/qBbdWxN
Although in this case the hidden was not directly put on the dialog element, it shows the reporting effects on NVDA when removing it in the background.

@Adriani90 for context, the example fiddle used in https://github.com/nvaccess/nvda/issues/9156 uses Bootstrap 3.3.7 ... we're now at Bootstrap 5.3, so I'd hazard a guess that that example is out of date and should be re-checked with recent versions.
Testing hhttps://getbootstrap.com/docs/5.3/components/modal/#live-demo in Chrome/NVDA and Firefox/NVDA shows no adverse behaviour.
https://github.com/nvaccess/nvda/issues/11237 is completely unrelated to Bootstrap, so not directly relevant here.

@patrickhlauke thanks very much for the link to the modal docs, that's helpful.
Indeed there is no adverse behavior in Chrome and Edge when closing the modals.
In Firefox though the window title is sometimes read two or three times in a row before the focused element is announced. This is what I get in the NVDA log but I am not sure this is related to the aria-hidden atribute being removed:
IO - speech.speech.speak (18:36:03.778) - MainThread (4020):
Speaking ['Schalter', 'Launch static backdrop modal ', ' ']
IO - speech.speech.speak (18:36:03.798) - MainThread (4020):
Speaking ['Launch static backdrop modal ', 'Schalter']
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:03.798) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:03.798) - MainThread (4020):
description IA2Attribute is:
IO - inputCore.InputManager.executeGesture (18:36:06.168) - winInputHook (6516):
Input: kb(laptop):NVDA+space
IO - inputCore.InputManager.executeGesture (18:36:06.628) - winInputHook (6516):
Input: kb(laptop):enter
DEBUG - treeInterceptorHandler.update (18:36:06.698) - MainThread (4020):
Adding new treeInterceptor to runningTable: <virtualBuffers.gecko_ia2.Gecko_ia2 object at 0x053CF830>
DEBUG - virtualBuffers.VirtualBuffer._loadBuffer (18:36:06.698) - virtualBuffers.gecko_ia2.VirtualBuffer.loadBuffer (13712):
Buffer load took 0.000 sec, 111 chars
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:06.708) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:06.708) - MainThread (4020):
description IA2Attribute is:
IO - speech.speech.speak (18:36:06.708) - MainThread (4020):
Speaking ['Modal title', 'Dialogfeld', CancellableSpeech (still valid)]
IO - speech.speech.speak (18:36:06.708) - MainThread (4020):
Speaking ['Überschrift', 'Ebene 1', 'Modal title']
IO - inputCore.InputManager.executeGesture (18:36:07.238) - winInputHook (6516):
Input: kb(laptop):downArrow
IO - speech.speech.speak (18:36:07.238) - MainThread (4020):
Speaking ['Schalter', 'Close']
IO - inputCore.InputManager.executeGesture (18:36:07.568) - winInputHook (6516):
Input: kb(laptop):enter
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.594) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.594) - MainThread (4020):
description IA2Attribute is:
DEBUGWARNING - RPC process 8696 (firefox.exe) (18:36:07.618) - Dummy-8 (13072):
Thread 14428, build\x86_64\vbufBackends\gecko_ia2\gecko_ia2.cpp, GeckoVBufBackend_t::render, 1442:
Could not get IAccessible2, returning

DEBUGWARNING - RPC process 8696 (firefox.exe) (18:36:07.626) - Dummy-8 (13072):
Thread 14428, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::replaceSubtrees, 697:
Empty temp buffer

DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._getIA2RelationTargetsOfType (18:36:07.628) - MainThread (4020):
Unable to use _getIA2TargetsForRelationsOfType, fallback to _IA2Relations.
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._getIA2RelationTargetsOfType (18:36:07.628) - MainThread (4020):
IA2_2 is not available, fall back to old approach
DEBUG - NVDAObjects.IAccessible.IAccessible._get__IA2Relations (18:36:07.628) - MainThread (4020):
Unable to get nRelations
DEBUG - NVDAObjects.IAccessible.IAccessible._getIA2RelationTargetsOfType (18:36:07.628) - MainThread (4020):
Unable to fetch _IA2Relations
Traceback (most recent call last):
  File "browseMode.pyc", line 1845, in event_gainFocus
  File "documentBase.pyc", line 74, in makeTextInfo
  File "virtualBuffers\__init__.pyc", line 210, in __init__
  File "textInfos\offsets.pyc", line 465, in __init__
  File "virtualBuffers\__init__.pyc", line 206, in _getOffsetsFromNVDAObject
LookupError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 1554, in _get__IA2Relations
_ctypes.COMError: (-2147220995, 'Objekt ist nicht mit dem Server verbunden.', (None, None, None, 0, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "NVDAObjects\IAccessible\__init__.pyc", line 1688, in _getIA2RelationTargetsOfType
  File "baseObject.pyc", line 62, in __get__
  File "baseObject.pyc", line 168, in _getPropertyViaCache
  File "NVDAObjects\IAccessible\__init__.pyc", line 1557, in _get__IA2Relations
NotImplementedError
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.628) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.628) - MainThread (4020):
description IA2Attribute is:
IO - speech.speech.speak (18:36:07.628) - MainThread (4020):
Speaking ['Schalter', CancellableSpeech (still valid)]
DEBUGWARNING - RPC process 8696 (firefox.exe) (18:36:07.642) - Dummy-8 (13072):
Thread 14428, build\x86_64\vbufBackends\gecko_ia2\gecko_ia2.cpp, GeckoVBufBackend_t::render, 1442:
Could not get IAccessible2, returning

DEBUG - treeInterceptorHandler.killTreeInterceptor (18:36:07.658) - MainThread (4020):
Killed treeInterceptor: <virtualBuffers.gecko_ia2.Gecko_ia2 object at 0x053CF830>
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (18:36:07.674) - MainThread (4020):
accRole failed: (-2147220995, 'Objekt ist nicht mit dem Server verbunden.', (None, None, None, 0, None))
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.678) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.678) - MainThread (4020):
description IA2Attribute is:
IO - speech.speech.speak (18:36:07.678) - MainThread (4020):
Speaking ['Modal · Bootstrap v5.3 – Mozilla Firefox', CancellableSpeech (still valid)]
IO - speech.speech.speak (18:36:07.698) - MainThread (4020):
Speaking ['Modal · Bootstrap v5.3 – Mozilla Firefox', CancellableSpeech (still valid)]
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.698) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.698) - MainThread (4020):
description IA2Attribute is:
IO - speech.speech.speak (18:36:07.698) - MainThread (4020):
Speaking ['Modal · Bootstrap v5.3', 'Dokument', CancellableSpeech (still valid), ' ']
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.722) - MainThread (4020):
Getting mozilla descriptionFrom
DEBUG - NVDAObjects.IAccessible.mozilla.Mozilla._get_descriptionFrom (18:36:07.722) - MainThread (4020):
description IA2Attribute is:
IO - speech.speech.speak (18:36:07.722) - MainThread (4020):
Speaking ['Launch static backdrop modal', 'Schalter', CancellableSpeech (still valid)]

So looking at the speaking [] parts of this log snippet you can see how NVDA repeats the browser window title multiple times.

Well, all I can say is: I can't reproduce that problem in my setup (Firefox 125.0.2 (64-bit), NVDA 2024.1 (2<IP_ADDRESS>547)).


Error while installing dependencies using NPM

Hi, i was trying to deploying the project using the provided documentation, i followed every step until "npm install && npm run generate". Because whenever i do npm install it gives me this error.
Error: `npm install && npm run generate

postinstall
yarn --cwd api install && yarn --cwd frontend install

Usage: yarn [options]
yarn: error: no such option: --cwd
npm ERR! code 2
npm ERR! path /root/lexicon
npm ERR! command failed
npm ERR! command sh -c yarn --cwd api install && yarn --cwd frontend install
npm ERR!  Have you installed Yarn on your local machine? If not, you can try installing it with the following command: npm install --global yarn.

Hey @Skeleton22121, since it has been several months since we have heard from you about this issue, we will soon close it as resolved.
Please let us know if you have further questions.

Hey @starjustice, I think you were on track here. From looking at the logs above, this user appears to be on a Linux-based distro.
Some of those distros classically have problems with tools like node and yarn since running a command like apt-get install yarn will actually install an unrelated tool called cmdtest, which adds a binary to the PATH called yarn (that does not have a --cwd option).
Here is a GitHub issue describing someone else's issues with this.

On that note, closing this since we haven't heard from the poster, and it looks like this is the cause.


[BUG] - Map in Defaults to Germany and coordinates are in the US.

The map defaults to Germany\Europe when all long\lat coordinates are in the US.  Once you select a filter the map renders to the proper places.

@sdbscottdever can you maybe provide an example dashboard to reproduce the issue?
Mapbox autozoom is not always able to determine the bounding box of the displayed data. But in those cases you can always disable the autozoom and in the visual settings you are able to set the zoom level and the center of the map that is used on each page view.


Allow manylinux1 wheels

We need to allow the new manylinux1 wheels to be uploaded.

These are pretty simple -- the only two platform tags allowed are exactly manylinux1_x86_64 and manylinux1_i686.


Print add-matcher command through JavaScript to avoid bash dependency

Makes the action usable on self-hosted Windows machines.

Ah sorry, I didn't see #3. I guess both approaches have their drawbacks...

As far as I know, we can switch the shell to python as well which should be cross-os available.

I see. If the only reason we don't want to use Node.js is because we have to keep maintaining it due to EOL issues, I'm willing to accept that and go back to Node.js 🤔

I don't mind really, it is your repo :)
I guess for a pure JS action, it is not that bad. I "maintain" several TS actions and the re-compiling and checking in is annoying :D


Fix max concurrency number in runtime for Intel processors

Current implementation assumes that all Intel processors have hyperthreading, but it is not true. There is a bunch of processors which do not have HT and in this case curent implementation would use only half of the cores.
Add number of cores detection using cpuid instruction based on DNNL implementation

Any thoughts about using a library like https://github.com/pytorch/cpuinfo to determine this information vs rolling our own? Either way, this is a nice addition to have!

I totally agree on moving forward with this patch. I just wanted to see if there might be any issues adding this library in the future.

@tkonolige would you mind reviewing this PR?  :)


Use fastlane from Gemfile if Gemfile exists

So it doesn't override the fastlane version in case you are using bundle with a Gemfile

Thanks for the contribution! 😉


Migrate to node 20

<EMAIL_ADDRESS><EMAIL_ADDRESS>
Summary
The goal for this PR is to upgrade the engines requirements for  node.
Changes

Disabled rollup visualizer plugin to avoid migrating the full stack.
Removed the check for fetch, since we don't plan to support node =< 18 and fetch is part of the API since 18 on (and should be stable in 21…).
Replace @mapbox/geo-viewport with @placemarkio/geo-viewport
Remove run-p/npm-run-all in favor of lerna/nx
Upgrade to ChartJS 4 because of some TS problems

I also had to upgrade lerna and storybook, because old version weren't fully compatible with new node. This makes for a few breaking changes:

No more lerna bootstrap, add, link 👉  npm workspaces handle all of that with npm install. Lerna (Nx) is still use for running tasks in parallel (namely watch) and manage versions.
Storybook now runs on vite. It paves the way for actually using vite everywhere, why not migrating to SvelteKit, moving the storybook back to Svelte etc. But for now this is just a minimal port.

Else I just upgrade all references to nodes >=18 (current LTS) and checked it works with node 20.
Changelog
All packages are now supposed to run on node 18 or 20 (prefered). Support for node 14 and 16 is dropped.

So last part of the update: @mapbox/geo-viewport was crashing and is pretty much abandonned. I decided to drop the computation in favor of a props. Now, there is another way to compute the max zoom as we did with @mapbox/geo-viewprot but with turf and it would look something like this:
const bboxDiagonal = turf.length(turf.bboxPolygon(bounds));
const screenDiagonal = Math.sqrt(Math.pow(containerWidth, 2) + Math.pow(containerHeight, 2));
const screenDiagonalMeters = screenDiagonal * 0.0254; // approx ratio for PPI to meters
const zoom = Math.log2(screenDiagonalMeters / bboxDiagonal) + 8;

My idea though, was to implement that in the Studio (leaving the option to pass it more directly if needed). Another option in the Studio would be to pass "hard" values for goeref for exemple. What do you think @KevinFabre-ods ?
Other differences in chromatic should be really minor.

Looks this comment doesn't fit with the changes. Currently @mapbox/geo-viewport has been replaced with placemark/geo-viewport. The maxZoom props defined in ChoroplethVectorTiles.svelte doesn't do anything as MapRender doesn't have a maxZoom prop declaration.

So last part of the update: @mapbox/geo-viewport was crashing and is pretty much abandonned. I decided to drop the computation in favor of a props. Now, there is another way to compute the max zoom as we did with @mapbox/geo-viewprot but with turf and it would look something like this:
const bboxDiagonal = turf.length(turf.bboxPolygon(bounds));
const screenDiagonal = Math.sqrt(Math.pow(containerWidth, 2) + Math.pow(containerHeight, 2));
const screenDiagonalMeters = screenDiagonal * 0.0254; // approx ratio for PPI to meters
const zoom = Math.log2(screenDiagonalMeters / bboxDiagonal) + 8;

My idea though, was to implement that in the Studio (leaving the option to pass it more directly if needed). Another option in the Studio would be to pass "hard" values for goeref for exemple. What do you think @KevinFabre-ods ?
Other differences in chromatic should be really minor.

Looks this comment doesn't fit with the changes. Currently @mapbox/geo-viewport has been replaced with placemark/geo-viewport. The maxZoom props defined in ChoroplethVectorTiles.svelte doesn't do anything as MapRender doesn't have a maxZoom prop declaration.
Also it's a bit weird that we don't get any eslint error we use a set a prop that doesn't exist. Maybe we should update eslint-plugin-svelte3 with https://github.com/sveltejs/eslint-plugin-svelte as it is deprecated

Ha sorry, I thought I had posted a comment about that: I dropped the turf idea, it was missing some key projection stuff. And in the meantime I found a maintained fork, which will do for this update. maxZoom should go indeed.

I added an npm run build-ci script to install/build for all tasks, tell me what you think about it!


IApplicationEnvironment returns NULL

I created a class library project and to read a file i used IApplicationEnvironment to get rootpath but it always returns NULL
namespace TestLibrary{
    public Class TestClass{
             IApplicationEnvironment _appEnvironment;
             public void GetFile(){
                    File.OpenRead(_appEnvironment.ApplicationBasePath + "Content/tahoma.ttf");
             }
     }
}

Here _appEnvironment returns NULL

There's no code here that would initialize _appEnvironment, its always going to be null.
If you want to access the app environment:

write a class that takes it as a constructor argument
register that class in DI
inject it somewhere in your application so that the DI container creates it

If you want to provide a little more information about what you're trying to accomplish we can help.


inline ComputeVelocityDifferences into ComputeFluxes

The difference in normal and transverse components of velocity across an interface are used to correct for carbuncle phenomenon in the Riemann solver (https://arxiv.org/abs/2108.04991)
These values are currently stored in array that is allocated at a relatively high level, even though the velocity differences are not used anywhere else.
This PR inlines the velocity difference calculation, so that the results can be used directly without storing in an array.
Testing with the blast_amr_maxlev2.in (256^3, 2 AMR levels) problem gave an average performance improvement of 4.8% (zone-updates per second) on 1 V100.
make test passes for 1D, 2D, and 3D, however, these tests don't explicitly test for this numerical artifact. To properly test this change, the HydroQuirk test needs to be run and compared with a known solution.

/azp run

/azp run


[HxProgress] To adapt to the new HTML structure

As of 5.3.0 the HxProgress has to be rendered in different structure.
https://getbootstrap.com/docs/5.3/components/progress/

This is something where much more effort will be needed (as there is a new div.progress-stacked wrapper for multiple bars and as the placement of the attributes is now distributed to div.progress + div.progress-bar)
We will probably have to change the component-structure to combine <HxProgress><HxProgressBar /></HxProgress> into single component as they come always together (and share parameters) + new component of <HxProgressStacked> (name not decided yet) will have to be introduced to support multiple bars.
As the original HTML structure is still supported (till v6) we don't have to resolve this for v4 release.
cc @crdo


'Office 365 Management API' Custom Connector not identified

Describe the bug
The Power BI dashboard is not identifying my custom connector (MFA Office 365 Management API).

I checked the Admin | Sync Template v2 (Custom Connectors) and the custom connector value is blank [].

The Entities a) Connection Reference "admin_connectionreference" identifies the custom connector as Office 365 Management API and b) Connector identifies the custom connector as admin_5Foffice-20365-20management-20api.

All other data within the Power BI dashboard looks great!
Component (please tell us which flow or app you are experiencing issues with):

Solution [Core]
Version [e.g. 1.39]
Solution [Audit Logs]
Version [e.g. <IP_ADDRESS>]
Dashboard-PowerPlatformAdminDashboard_2020-04-20_advanced

To Reproduce
Steps to reproduce the behavior:

Go to 'Power BI Dashboard'
Click on 'New Power Platform CoE Toolkit Tenant Adoption'
Select 'Custom tab'
See error

Expected behavior
Show the custom connector MFA Office 365 Management API

All works today. It took multiple manual triggers and refreshing DataSet.

Thanks Daleyon. Glad its working, I had been struggling to reproduce all morning.

@JeneferM-MSFT you are welcome! That method did not work yesterday when I created the issue ticket.


Make member variables of MappingStep.php protected

Hi.
Is there anything against making the member variables from Step/MappingStep.php protected?
I need some customization in the mapping step. That for I've created a new class, extending the MappingStep.php.  While overriding the process function, I encountered the problem of 2 private member variables.
Is it maybe a complete wrong approach to subclass and override this function? Or is it better to not subclass and write a complete class of its own?
edit: I've seen there's a FilterStep.php. I think if I would know how this step works. I could use this, instead of subclassing MappingStep.php.
Maybe someone can give me an example of how the Filterstep.php is used?

We use private as default for maintenance reasons. Here an example for the FilterStep:
$step = new FilterStep();
$step->add(new Filter\OffsetFilter(5));

$workflow = new StepAggregator($reader);
$workflow->addStep($step);

$workflow->process();


CLI: have module federation settings take in account all the exports defined in the package.json

Hey, I just made a Pull Request!
This PR enhances the behavior of the experimental support for module federation in the backstage CLI:
Until now exposed modules are a fixed value set to src/index.
With this PR, in the case of a remote container (not the main application), would add also look into the package.json of the built package, for an exports entry and, if it exists, use it to include alternate imports (like ./alpha) into the  module federation exposed modules.
The change is compatible with the existing behavior, but only fixes the existing limitation that, for example, prevented accessing the alpha definitions in the module federation scenario.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Any idea whether this pretty simple and straightforward PR could get some review soon ?
cc @christophe-f

Hmm, is it specifically things like /alpha that you're looking to make available? As in additional entry points that have features we'd want to load.
I think it's best to rely on the feature discovery for this, see
https://github.com/backstage/backstage/blob/d849865b6fafdf7d7c8eb5b96e7d5fd933105e16/packages/cli/src/lib/packager/productionPack.ts#L177-L193
. That way we can make sure we only include actual features in the remote bundle, rather than entry points like /testUtils or /package.json.

Thanks for the pointer, I'm looking into it.

Hmm, is it specifically things like /alpha that you're looking to make available? As in additional entry points that have features we'd want to load.
I think it's best to rely on the feature discovery for this, see
https://github.com/backstage/backstage/blob/d849865b6fafdf7d7c8eb5b96e7d5fd933105e16/packages/cli/src/lib/packager/productionPack.ts#L177-L193
. That way we can make sure we only include actual features in the remote bundle, rather than entry points like /testUtils or /package.json.

Thanks for the pointer, I'm looking into it.

@Rugvip I added commit c8dbf11b814a8286a2576d0bcd9e602212125c6d? Is it what you were expecting ?

@Rugvip Any other review comment apart from the one I fixed ? The merging is still blocked by requested changes.


Embedded YouTube video size

Issue Summary
When embedding YouTube video's in Wagtail, the embedded video has different sizes and it seems to be fairly unpredictable.
Steps to Reproduce

Copy the URL of a YouTube video in a Wagtail page using the admin.
Publish the page.
Notice that the video turns out in a specific size which cannot be specified by the user of the admin. Furthermore, the used sizes for embedded differ.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: no
But, I did change the current git Wagtail code to test a change which appears to improve this behaviour.

Adding the maxwidth and maxheight parameters to get_embed in embed_to_frontend_html and embed_to_editor_html in embeds/format.py seems to be improving the behaviour, in that the resulting oEmbed API call returns a higher resolution.
I am not suggesting that setting this to a hard coded value is a good idea, but could it be made changeable somehow?
Through a setting? Or allowing the user to specify maxwidth and maxheight through the URL entry field?
def embed_to_frontend_html(url):
    try:
        embed = embeds.get_embed(url, max_width=800)

....
def embed_to_editor_html(url):
    embed = embeds.get_embed(url, max_width=800)
    # catching EmbedException is the responsibility of the caller

Looking at https://oembed.com/ I couldn't make out how the returned width and height should be interpreted, but using the YouTube oEmbed API did change the behaviour.
Using this URL, the returned height and width of the embed are 113 and 200 respectively:
https://www.youtube.com/oembed?url=https://youtu.be/j9XDr9xtfPI&format=json
{
  "title": "What's New in Wagtail - Episode 3",
  "author_name": "Torchbox",
  "author_url": "https://www.youtube.com/user/TorchboxWork",
  "type": "video",
  "height": 113,
  "width": 200,
  "version": "1.0",
  "provider_name": "YouTube",
  "provider_url": "https://www.youtube.com/",
  "thumbnail_height": 360,
  "thumbnail_width": 480,
  "thumbnail_url": "https://i.ytimg.com/vi/j9XDr9xtfPI/hqdefault.jpg",
  "html": ""
}

While when specifying maxwidth and maxheight for this same URL, the returned height and width of the embed are 450 and 800 respectively:
https://www.youtube.com/oembed?url=https://youtu.be/j9XDr9xtfPI&format=json&maxwidth=800&maxheight=800
{
  "title": "What's New in Wagtail - Episode 3",
  "author_name": "Torchbox",
  "author_url": "https://www.youtube.com/user/TorchboxWork",
  "type": "video",
  "height": 450,
  "width": 800,
  "version": "1.0",
  "provider_name": "YouTube",
  "provider_url": "https://www.youtube.com/",
  "thumbnail_height": 360,
  "thumbnail_width": 480,
  "thumbnail_url": "https://i.ytimg.com/vi/j9XDr9xtfPI/hqdefault.jpg",
  "html": ""
}

Technical details

Python version: Python 3.7.9
Django version: 2.2.23
Wagtail version: 2.11.3
Browser version: Firefox 88.0.1 and Chrome 90.

Looks like adding this was merged https://github.com/wagtail/wagtail/commit/50e4f5151d5b6517725eae295732640a55e53f2f#diff-62ea6ee8c8c65780705129a58c62b66f1865d9e725ae77616f1e97ec8fd83b69 in case others (like me), find this.
Would still be interested to know the root cause, though.

The PR that added the params - #6844

so it sounds like the fix is:

make sure WAGTAILEMBEDS_RESPONSIVE_HTML = True in your settings or
explicitly add width and/or height as part of an EmbedBlock definition like in https://github.com/wagtail/wagtail/pull/6844

@takis does that work for you, or are you also looking at using the media embed via the rich_text widget. There I'm not sure there is a way to set those values, but maybe there should be?
I could see a 'global' setting being set, maybe as part of registering rich text features, that could be modified in a similar way to the above PR.

Setting WAGTAILEMBEDS_RESPONSIVE_HTML = True doesn't have the desired effect for a StreamField EmbedBlock. YouTube videos are still rendering at ~250px wide.

As an aside, anyone looking for a relatively simple solution for responsive embedded videos from a Wagtail Embed field can try the following code in their Django template:

@brylie this js code did not work for me

This CSS approach adopted in bakerydemo may be helpful.
https://github.com/wagtail/bakerydemo/pull/418/files

@brylie this js code did not work for me

@mgpepe, did you get any particular error? What happens when you try running the javascript directly in your browser console on a page with an embedded video?

We ran into a similar situation where wagtail wasn't adding the padding it usually does when using oembed.
We had a custom template using {% embed value.video_url %}, which spat out the video, without the padding value.
We may sure that WAGTAILEMBEDS_RESPONSIVE_HTML = True was set, which it was, then realised that we actually needed to use {% include_block value.bound_blocks.embed %} instead of {% embed value.video_url %}.
This then output the padding as expected, hope this helps 🤞

my solution:
(the cut is used to convert the to the proper url with /embed/, min-height is up to you)
I hope it will help someone. (I'm using Wagtail 5.2.5)
{% for block in post.video %}
{% if block.block_type == 'video' %}
{% with block.value.url|cut:"https://youtu.be/" as video_id %}

{% endwith %}
{% endif %}
{% endfor %}


fix: wrong placeholder replaced in windows binary

When replacing PAYLOAD_POSITION and similar placeholders, the producer always replaces the first occurence of the placeholder, but on the current Windows binaries the placeholder which needs to be replaced is the correct one (the first one is source text)
This causes the Windows binary to crash on startup. Fixes #85

It seems my change broke node 16/18 somehow :angry:

@faulpeltz could you  also open a PR on pkg-fetch with the required fixes to the patch for nodejs 20.17?

Do you plan merging this soon? It's a game changer :) Thanks for your work to you both.

@blackholegalaxy Even if I merge this we still need to wait for https://github.com/yao-pkg/pkg-fetch/pull/40 to land. Otherwise no macos support :( ATM I have been able to make everything work except macos arm 64

Just dropping by to say this is amazing work

@blackholegalaxy Even if I merge this we still need to wait for yao-pkg/pkg-fetch#40 to land. Otherwise no macos support :( ATM I have been able to make everything work except macos arm 64

we could still rebuild binaries locally I guess in the meantime

Just a quick update here. I finally managed to make all build working and new release is coming with latest nodejs 18 and 20.17.0 support 🎉
Just need to wait for this to finish now
Please consider sending some support here: https://github.com/sponsors/robertsLando 🙏🏼 ❤


subsampling cells number

sc.pl.heatmap and the related functions plot all the cells of each cluster at default. Sometimes cell number differ a lot among the clusters, so the heatmap becomes unblanced, some clusters take a lot of space, while some small clusters becomes unclear. So subsampling is necessary to sample an equal
number of data points from each cluster using a user-defined threshold while clusters lower than the threshold keep the same.

I'm not sure subsampling is the most straightforward solution here. If you want the area of the plot for each sample to take the same amount of space, why not just plot the mean for each group? If you want even use of space and an idea of the distribution, why not use something like a violin plot?

Good idea, thanks!

This issue has been mentioned on Scanpy. There might be relevant details there:
https://scanpy.discourse.group/t/heatmap-max-number-of-cells-per-cluster/202/2


NUnit tests failure not reported in test results file

Description
When NUnit test fails, it is shown in logs but failure is not getting reported in test results file (trx). Results node is missing in trx.
Steps to reproduce
Create Nunit test project and make a test to fail (e.g. use assert.Fail() ).
cmd to run :
vstest.console C:\Users\path_to_nunitdll\NUnitTestProject1.dll /logger:trx;logFileName="trx file path"
Version Info :
Nunit version : 3.10
NUnit test adapter Version used : 3.16 (latest)
Expected behavior
Test result should show test failure.
TRX Ouput:
<Results>    <UnitTestResult executionId="909036b2-f21d-4046-b7af-866698432d49" testId="eea9dae7-e491-70bd-41d6-420224862c9d" testName="Test1" computerName="xyz" duration="00:00:00.0460000" startTime="2020-02-05T16:12:03.0000000+05:30" endTime="2020-02-05T16:12:03.0000000+05:30" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Failed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="909036b2-f21d-4046-b7af-866698432d49">       <Output>         <ErrorInfo>           <StackTrace>   at Tests.Tests.Test1() in Test_project_path\NUnitTestProject1\UnitTest1.cs:line 15
 </StackTrace>         </ErrorInfo>       </Output>     </UnitTestResult>   </Results>
Actual behavior
Results node is missing in trx  hence not showing failed tests.
Environment
Operating system : Windows 10
vstest : Test Execution Command Line Tool Version 15.9.1

It appears issue with NUnit adapter latest version. When tried with old versions 3.13 or lower, trx is generated correctly with failed test results.

/cc: @AbhitejJohn

@nohwnd - Is this a NUnit testadapter issue or an issue in vstest.console? If it is the former then should we open an issue in NUnit repo?

Can be reproduced with Assert.Fail() without parameters. Any non-empty message in a failure assertion fixes this issue (e.g. Assert.Fail("So sad")). Any conditional assertion also works fine (like Assetr.True(false)). So, most likely, issue is related to an empty message.

Also if the trx logger is failing to add in a result for some reason, we'd probably want to add in some logs if they do not already exist.

We've had this issue reported in NUnit as well, https://github.com/nunit/nunit3-vs-adapter/issues/726
The failed tests appear correctly in the test window of Visual Studio, so the adapter is reporting the failed test correctly there.
CC @OsirisTerje

I saw this issue with a different adapter, the problem was that the reporting failed to generate while gerating the Results node, and while the errors is reported into the log, it does not bubble up to the caller, because the callbacks are invoked "safely".

commented in https://github.com/nunit/nunit3-vs-adapter/issues/726 can't repro this on vstest.console 16.5 and 16.3.

The error occured because the error message produced by nunits Assert.Fail is null, and the initialization that would otherwise be done when setting the message was skipped. Fixed it so it initalizes when it sees null, so now there is no required order of setting the properties.
Reproduced like this, which allows me to easily see the execption in console:
dotnet test --logger trx --results-directory . -p:VSTestConsolePath="C:\Projects\vstest\artifacts\Debug\netcoreapp2.1\vstest.console.dll"

This is a fix in the VSTest console it will be shipped with VS 16.6, possibly preview 2. The fix won't be available by updating the test.sdk package.
Output with one added test that does Assert.AreEqual to make sure the null message is not our error:
  <Results>
    <UnitTestResult executionId="bcde2d4f-02b0-45b5-a6df-0a662b18a9b5" testId="0137b2fb-80ac-e41c-24d4-726c3c0e0520" testName="This_test_should_fail2" computerName="JAJARES-SURBOOK" duration="00:00:00.0310000" startTime="2020-03-18T11:44:26.0000000+01:00" endTime="2020-03-18T11:44:26.0000000+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Failed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="bcde2d4f-02b0-45b5-a6df-0a662b18a9b5">
      <Output>
        <ErrorInfo>
          <Message>  String lengths are both 1. Strings differ at index 0.
  Expected: "a"
  But was:  "b"
  -----------^
</Message>
          <StackTrace>   at nunit1.ExampleTest.This_test_should_fail2() in C:\Projects\temp\nunit1\UnitTest1.cs:line 17
</StackTrace>
        </ErrorInfo>
      </Output>
    </UnitTestResult>
    <UnitTestResult executionId="0a270718-7381-4ec5-b853-eeb5daa8f1e4" testId="15a2ecc0-02b2-6a7f-d027-3074ab95741f" testName="This_test_should_pass" computerName="JAJARES-SURBOOK" duration="00:00:00.0010000" startTime="2020-03-18T11:44:26.0000000+01:00" endTime="2020-03-18T11:44:26.0000000+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0a270718-7381-4ec5-b853-eeb5daa8f1e4" />
    <UnitTestResult executionId="173aabe0-099a-4863-8ef1-318283692935" testId="2a2e2546-9038-cc65-c034-21f198205f15" testName="This_test_should_fail" computerName="JAJARES-SURBOOK" duration="00:00:00.0890000" startTime="2020-03-18T11:44:26.0000000+01:00" endTime="2020-03-18T11:44:26.0000000+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Failed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="173aabe0-099a-4863-8ef1-318283692935">
      <Output>
        <ErrorInfo>
          <StackTrace>   at nunit1.ExampleTest.This_test_should_fail() in C:\Projects\temp\nunit1\UnitTest1.cs:line 11
</StackTrace>
        </ErrorInfo>
      </Output>
    </UnitTestResult>
  </Results>


FDs

We might need to increase the max FDs from 51 to 60. This would eat a bit of RAM:
free
             total       used       free    largest
Mem:        236224     196208      40016      35664

With 60 pre-alloc FDs:
nsh> free
             total       used       free    largest
Mem:        236224     198480      37744      31552

Hey, this issue has been closed because the label status/STALE is set and there were no updates for 30 days. Feel free to reopen this issue if you deem it appropriate.
(This is an automated comment from GitMate.io.)


Swift Demo Application

Should we use okapi-examples repo for this?

Yes we should, let me move it there.


Integrate Spotter in Inspector

Spotter allows us to search contextually. The inspector offers an object context. We need to integrate spotter in the inspector to search starting from the current object.


Settings Screen - Upload Media Toggle reset after orientation changes

Describe the bug
In Settings Screen, the toggle switch gets reset after the screen orientation gets change.
To Reproduce
Steps to reproduce the behavior:

Go to Settings
Click on Upload Media Toggle Switch
Change Orientation
Toggle Switch gets reset

Expected behavior
It should remember the toggle switch state
Actual behavior
orientation is not remembering the last state
Screenshots
https://github.com/user-attachments/assets/874dfea3-62fb-42d6-99c2-1d6834aadff4

Nit: "Upload Media" -> "Upload photos"


Fix Unrecognised appservice access token errors

Fix Unrecognised appservice access token errors
Regressed in https://github.com/matrix-org/complement/commit/7f19337e4af84bad8bc596c048d70fa19c779b95 (https://github.com/matrix-org/complement/pull/304)
In https://github.com/matrix-org/complement/pull/304, the appservice mount path changed from /appservices/ to /complement/appservice/ but start.sh which loops through every file at that path and adds an entry in homesever.yaml was not updated.
Dev notes
Before run:
  $ COMPLEMENT_ALWAYS_PRINT_SERVER_LOGS=1 COMPLEMENT_DIR=../complement ./scripts-dev/complement.sh TestImportHistoricalMessages
  [+] Building 0.6s (18/18) FINISHED
   => [internal] load build definition from Dockerfile                                                                                0.0s
   => => transferring dockerfile: 37B                                                                                0.0s
   => [internal] load .dockerignore                                                                                0.0s
   => => transferring context: 35B                                                                                0.0s
   => [internal] load metadata for docker.io/library/python:3.8-slim                                                                                0.3s
   => [builder 1/9] FROM docker.io/library/python:3.8-slim@sha256:c5c49edb93bcf487e81c01fd13aba850c996649927d7c42d7367fab05d2d3e7f                                                                                0.0s
   => [internal] load build context                                                                                0.1s
   => => transferring context: 62.83kB                                                                                0.1s
   => CACHED [stage-1 2/5] RUN    --mount=type=cache,target=/var/cache/apt,sharing=locked    --mount=type=cache,target=/var/lib/apt,sharing=locked   apt-get update && apt-get install -y     curl     gosu     libjpeg  0.0s
   => CACHED [builder 2/9] RUN    --mount=type=cache,target=/var/cache/apt,sharing=locked    --mount=type=cache,target=/var/lib/apt,sharing=locked  apt-get update && apt-get install -y     build-essential     libffi  0.0s
   => CACHED [builder 3/9] COPY scripts /synapse/scripts/                                                                                0.0s
   => CACHED [builder 4/9] COPY MANIFEST.in README.rst setup.py synctl /synapse/                                                                                0.0s
   => CACHED [builder 5/9] COPY synapse/__init__.py /synapse/synapse/__init__.py                                                                                0.0s
   => CACHED [builder 6/9] COPY synapse/python_dependencies.py /synapse/synapse/python_dependencies.py                                                                                0.0s
   => CACHED [builder 7/9] RUN --mount=type=cache,target=/root/.cache/pip   pip install --prefix="/install" --no-warn-script-location     /synapse[all]                                                                  0.0s
   => CACHED [builder 8/9] COPY synapse /synapse/synapse/                                                                                0.0s
   => CACHED [builder 9/9] RUN pip install --prefix="/install" --no-deps --no-warn-script-location /synapse                                                                                0.0s
   => CACHED [stage-1 3/5] COPY --from=builder /install /usr/local                                                                                0.0s
   => CACHED [stage-1 4/5] COPY ./docker/start.py /start.py                                                                                0.0s
   => CACHED [stage-1 5/5] COPY ./docker/conf /conf                                                                                0.0s
   => exporting to image                                                                                0.0s
   => => exporting layers                                                                                0.0s
   => => writing image sha256:5e07ebfd161a99dd7846a71f79e7c35956ea0a7b7a72e74c358efe8a71ac74a4                                                                                0.0s
   => => naming to docker.io/matrixdotorg/synapse                                                                                0.0s

  Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
  [+] Building 0.2s (11/11) FINISHED
   => [internal] load build definition from Synapse.Dockerfile                                                                                0.0s
   => => transferring dockerfile: 45B                                                                                0.0s
   => [internal] load .dockerignore                                                                                0.0s
   => => transferring context: 2B                                                                                0.0s
   => [internal] load metadata for docker.io/matrixdotorg/synapse:latest                                                                                0.0s
   => [1/6] FROM docker.io/matrixdotorg/synapse:latest                                                                                0.0s
   => [internal] load build context                                                                                0.0s
   => => transferring context: 367B                                                                                0.0s
   => CACHED [2/6] COPY synapse/* /conf/                                                                                0.0s
   => CACHED [3/6] COPY keys/* /ca/                                                                                0.0s
   => CACHED [4/6] RUN openssl genrsa -out /conf/server.tls.key 2048                                                                                0.0s
   => CACHED [5/6] RUN generate_signing_key.py -o /conf/server.signing.key                                                                                0.0s
   => CACHED [6/6] WORKDIR /data                                                                                0.0s
   => exporting to image                                                                                0.0s
   => => exporting layers                                                                                0.0s
   => => writing image sha256:ebcdb4d11b4bddc0fcd923f5a4dfa39bb00f9133d53789323820075bfba7093d                                                                                0.0s
   => => naming to docker.io/library/complement-synapse                                                                                0.0s

  Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
  Images built; running complement
  2022/02/24 20:09:57 config: &{BaseImageURI:complement-synapse BaseImageArgs:[] DebugLoggingEnabled:false AlwaysPrintServerLogs:true BestEffort:false SpawnHSTimeout:30s KeepBlueprints:[] PackageNamespace:pkg CACertificate:0xc000c82000 CAPrivateKey:0xc0008b0600}
  === RUN   TestImportHistoricalMessages
      msc2716_test.go:63: Deploy times: 6.228565284s blueprints, 2.815885566s containers
      client.go:500: POST hs1/_matrix/client/r0/register => 401 Unauthorized (3.609558ms)
+     msc2716_test.go:1118: msc2716.ensureVirtualUserRegistered failed to register: (M_UNKNOWN_TOKEN) Unrecognised access token
  2022/02/24 20:10:06 ============================================
  ...
+ 2022-02-25 02:10:06,456 - synapse.api.auth - 567 - WARNING - POST-2 - Unrecognised appservice access token.
  ...
  --- FAIL: TestImportHistoricalMessages (9.38s)
  FAIL
  FAIL  github.com/matrix-org/complement/tests  12.275s
  2022/02/24 20:09:55 config: &{BaseImageURI:complement-synapse BaseImageArgs:[] DebugLoggingEnabled:false AlwaysPrintServerLogs:true BestEffort:false SpawnHSTimeout:30s KeepBlueprints:[] PackageNamespace:csapi CACertificate:0xc00012e000 CAPrivateKey:0xc000b3dc20}
  testing: warning: no tests to run
  PASS
  ok    github.com/matrix-org/complement/tests/csapi  1.416s [no tests to run]
  FAIL

Thanks for the review and merge @kegsay 🦇


Images are not displayed when transforming ditamap with chunk="to-content" using HTML5 with preprocess2

Expected Behavior
When transforming ditamap having chunk="to-content" set on it, images should be displayed.
Actual Behavior
No images are present in the output.
Steps to Reproduce
chunk.zip

Download and unzip the archive
Run the HTML5 transformation using preprocess2

Environment

DITA-OT version: 3.7.4
Operating system and version: Windows
How did you run DITA-OT? oXygen
Transformation type: HTML5 using preprocess2

Indeed this looks like a duplicate of #3514

A similar problem can be reproduced with the new chunking processing step, if I force version 2.0 on the map root:
	<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
	<map chunk="combine" ditaarch:DITAArchVersion="2.0">
	    <title>Map</title>
	    <topicref href="parent_topic.dita">
	        <topicref href="topic.dita"/>
	    </topicref>
	</map>

@jelovirt maybe at some point if you will find the time to analyze how this could be fixed...
As a small overview, because the chunk attribute is added directly on the map root element, the method "org.dita.dost.reader.ChunkMapReader.chunkMap(Element)" will add an "href" attribute to it with the new name (which is a hash of the original "mapName.ditamap" with the extension changed).
Afterwards the "org.dita.dost.writer.ChunkTopicParser.processChunk(Element, URI)" method will get called for the <map> element which now has an @href attribute. So it ends up in a special case where it generates a new file on disk with its name hashed:
  if (MAP_MAP.matches(classValue)) {

So the final generated .job.xml will have this entry for the newly generated topic:
	<file uri="0e1db5ab2321bf237615736fcdbad9f6411c730c.dita"
		path="0e1db5ab2321bf237615736fcdbad9f6411c730c.dita" format="dita"/>

which means an HTML document with the name of the hash gets generated. The entry is also missing an @src attribute because the topic was generated, it did not exist in the original DITA Map. Also the artificially generated topic is not processed to replace its image reference with the original image name and to copy the image to the output folder.
Possibly when the method "org.dita.dost.writer.AbstractChunkTopicParser.generateFileInfo(URI)" gets called we need to also generate an "src" field for the fileInfo added to the Job.

Closing as duplicate of #3514


Doc refactor

Context:

PennyLane tutorials are currently split between a top level examples folder containing Jupyter notebooks, and a doc/tutorials folder containing ReST-style tutorials. Furthermore, there is a lot of duplication between these two folders.

Jupyter notebooks are hard to code review, and do not work well with git versioning (simply opening them causes the metadata in the ipynb file to change)

The TOC in the documentation has grown quickly over the last year, and it has become difficult to navigate. In addition, we would like to increase the number of tutorials, without having them takeover the sidebar TOC.

Description of the Change:
Note: the rendered documentation refactor can be viewed here: https://pennylane.readthedocs.io/en/doc-refactor

.gitignore has been cleaned up, as the repository does not contain any latex files

A TOC restructuring led by @mariaschuld

As per the TOC refactor, pages containing code docstrings that are not relevant to the user facing PennyLane interface have been moved down the TOC to a section labelled 'Developer API'. This avoids cluttering of the sidebar.

The 'User API' section contains only the docs pages that are written for the front-facing interface, i.e., QNode decorator, operations, measurements, templates, optimization classes, and configuration.

The Sphinx theme has been updated to include Sphinx-Gallery integration, including buttons at the top of every page for downloading the tutorial as an executable python script, downloading the tutorial as a Jupyter notebook, or viewing the notebook on GitHub.

The tutorials TOC have been moved to a single quick start page:

The sidebar TOC will only expand to show all tutorials when the user is on this page. This allows the user to more easily find the 'Turorials' page, and avoids clutter in the main TOC.

Benefits:
The use of Sphinx-Gallery has several advantages:

No code duplication of tutorials between different formats - everything is now simply a single executable Python script in the top level examples folder

Jupyter notebooks are autogenerated from the executable python tutorials, avoiding code duplication

As the tutorials are executable, this allows us to make them testable, and to ensure they always produce the correct result without error via continuous integration

Plots in the tutorials scripts are executed and added to the documentation at build time, using the latest version of PL

The 'gallery' look is attractive and allows for thumbnails to advertise each tutorial

Comments within the executable Python scripts can be rendered as ReST blocks in the documentation, allowing for all the rich formatting of Sphinx (images, note boxes), to be used seamlessly. The end result is indistinguishable from a plain ReST page.
For example, consider the following generating script and the rendered page side by side:

We can modify the tutorials in a future PR to also allow them to be opened in Google Collab for instant interactive use with a single click

Possible Drawbacks:

The autogeneration of Jupyter notebooks is not flawless, and any ReST-style rich formatting (such as images, Sphinx roles/domains, and note boxes) will not be rendered. This will effect the first few 'intro' tutorials the most, which rely on rich formatting and cross-referencing of code objects. More advanced tutorials focusing more on just QML algorithms will be less effected, as they will likely just consist of code, text, and possibly plots.

Related GitHub Issues: n/a

Thanks so much Josh, great to finally merge this branch!
A quick one before doing the proper code review. Under "User API" the first item is "the qnode decorator" and everything is a bit confusing. Is this a doctree bug? Should the header not be "creating qnodes" and the first subitem "the qnode decorator"?

Under "User API" the first item is "the qnode decorator" and everything is a bit confusing. Is this a doctree bug? Should the header not be "creating qnodes" and the first subitem "the qnode decorator"?

Yeah I think that sounds better as well.
I guess this goes back to how we have always written module docstrings --- we tend to name the module based on the main component of the module (in this case, this page is generated from the module docstring of decorator.py), to help developers when reading the code.
But I suppose it is instead better to reflect on the eventual TOC sidebar heading, even if it doesn't look 100% correct from within the source code.

Great to have the docs tidied up soon!
Got only minor issues, but here a bigger one:
I am very confused by the "Library overview" landing page of the API. Could we add some more explanation? That is important, it is the prime navigation point for people who want to dig into code. Would do it myself, but I don't really know what is supposed to be listed here. (Happy to help rewriting this though!)
In the same spirit, I vote for changing "creating QNodes" to something a user who has just looked at the table of content can understand - maybe "creating quantum circuits"? And maybe "core operations" to "quantum operations"? This would make things easier for the standard user who knows about quantum computing but not our library...

I largely agree with what @mariaschuld is pointing out here. Looking at the sidebar, a few small tweaks could keep things more streamlined.
How about the following under "User API":

Library overview
Quantum circuits (formerly Creating QNodes)
Quantum operations (formerly Core operations)

After looking at the "Library overview" page, I agree that it needs a revisit. But how about we finalize this PR and make that a new issue (since it probably requires rewriting that page, and this PR is about reorganizing docs themselves)

@co9olguy I do not agree here. If we want to ensure high docs standard we need to make sure that the main part of the documentation, the API, is human understandable at all times. At the moment it is not even logical where to find things for myself, if that is anything to go by.

Spoke to @josh146 and we agreed on the following plan of action:
In this PR @josh146  will make a few more changes to the Table of Content so that in a follow up I can write up a much better User API landing page.


Double quotes in TXT record

Found out that, at least with Route53, if ownership is stored in TXT record (--registry=txt) the record value includes double quotes in the value.
Is there any specific reason for this?
I had a lot of challenges to delete those records with aws CLI and also with Ansible.

Not sure, but I think it's an AWS thing: Go to the UI and try entering a value to a TXT record, AWS will surround it with quotes.

Oh true! So this is just AWS + Ansible issue then :) Sorry for the inconvenience.


OTT-354 Remove dead code for js-country-picker

Jira link
OTT-354
What?
I have removed code which appeared to be doing nothing.  This ticket is talking about adding stimulus to the country picker, but from looking at it this is already done, but a load of the old code was still in place.  A search of the entire codebase showed that this code wasn't used anywhere else.
Would be handy to have @HWallenberg for a second pair of eyes.
Why?
In order to remove dead old code
Have you? (optional)

[ ] Reviewed view changes with stake holders
[x] Validated mobile responsive behaviour of view changes

@HWallenberg Should be good to go now.


Issue regarding scrolling + little typo

There is an unnecessary use of scroll data in this code
(at the moment, if you scroll the cursor goes up at some point and disappear).

cursor.js
Before:
this.renderedStyles.ty.previous = this.renderedStyles.ty.previous = mouse.y - this.bounds.height/2 - docYScroll;

After:
this.renderedStyles.ty.previous = this.renderedStyles.ty.current = mouse.y - this.bounds.height/2;

cursor.js
Before:
this.renderedStyles['ty'].current = mouse.y - this.bounds.height/2 - docYScroll;

After:
this.renderedStyles['ty'].current = mouse.y - this.bounds.height/2;

Also a little typo here (previous used twice, should be current):
cursor.js
After:
this.renderedStyles.ty.previous = this.renderedStyles.ty.current = mouse.y - this.bounds.height/2;

Thank you so much!


OpenJS Foundation Security Collab Space Meeting 2024-07-08

Time
US PDT Mon 08-July-2024 08:30 AM
Or in your local time:

https://www.timeanddate.com/worldclock/fixedtime.html?msg=Node.js+Foundation+Security+Collab+Space+Meeting&iso=20240707T0830&p1=224
or https://www.wolframalpha.com/input?i=8:30am+PDT+July+07+2024+in+local+time

Links

Minutes Google Doc: https://docs.google.com/document/d/1wjcf3ST1Ij2M3FjledMAbqLHPj9LXKU_nfHumPLr2wQ/edit

Agenda

https://github.com/openjs-foundation/security-collab-space/issues/106

Invited

OpenJS Foundation Security Collab Space Members
OpenJS Foundation Cross Project Council
OpenJS Foundation Project Maintainers
OpenJS Foundation Board of Directors
All are welcome

Observers/Guests
Notes
Joining the meeting
Meeting link for participants:  https://zoom-lfx.platform.linuxfoundation.org/meeting/98301969246?password=889b7578-29b6-4be9-96c1-f74cbce812c4

For those who just want to watch: https://livestream.openjsf.org

Invitees
Please use the following emoji reactions in this post to indicate your
availability.

:+1: - Attending
:-1: - Not attending
:confused: - Not sure yet

@ruddermann I corrected the dates in the title and the content to be correct (They were 2024-07-07)


Using the audio in Streamlit

Maybe I am just missing something, but how do you actually use the recorded audio in your Streamlit app?

@Paethon Hi Sebastian, the current version of the audio recorder enables you to record audio and download it. I am working on providing an extended version of this streamlit component, which can also directly send the audio data back to Python via the return value interface.
Unfortunately, I ran into problems regarding converting the recorded WAV-Audio Blob to a binary buffer that can be returned. (the conversion takes forever and converting in chunks is hardly possible/rather complicated) If you are knowledgeable in these fields of audio data processing, feel free to reach out to me!

@Paethon Work Around (rather not elegant but functional): You can use the current version of the component, record audio, download it and then drag the file from the browser's download preview (downloads bar bottom of the screen, left) into a streamlit file-upload component.

Thanks! Good to know I am not just too stupid to use the component 😂
And no, I, unfortunately, don't know a lot about audio processing. Good luck with the remaining problems. Once we can directly get back the audio from the component, I think this will be a very valuable addition to Streamlit!

@Paethon No worries 😄, I will try hard to make this happen. Stay tuned!

I filed the same request and found out someone else already requested the same feature. Agree that "Once we can directly get back the audio from the component, I think this will be a very valuable addition to Streamlit!"

@Paethon @jingzhaoou Hello there folks, I've just merged @millawell's pull request and added some additional changes. Now the component directly returns audio data to the Python backend! This intermediary solution should be sufficient for shorter audio recordings (max 15sec). For longer audio cases, the merged code displays similar issues like my initial approach, as described above (exp. increasing time complexity due to conversion to arrayBuffer)

That's great news. Going to try it out ASAP! 😁

Hi!
I was wondering whether it's possible to disable rendering the "play" component on the webpage and only use the component for recording audio without playing it?

Yes I would to have the same option to display or not the audioplayer.

@Paethon Hi Sebastian, the current version of the audio recorder enables you to record audio and download it (WAV, 16bit, 44kHz). I am working on providing an extended version of this streamlit-component soon, which can directly send the audio data back to Python via the return value interface.
Unfortunately, I ran into problems regarding the conversion of the recorded Audio-Blob (web-media) to a binary buffer (base64) that can be returned. (the conversion takes forever and converting in chunks is hardly possible/rather complicated) If you are knowledgeable in these fields of audio data processing, feel free to reach out to me!

In the current version, the sampling rate is 48 kHz and not 44kHz. I do not know if this depends on local configuration of the browser and the microphone and if we can "programmatcally" get the sampling rate value. I think it would be handy to have the values of quantization and sampling rate along with what we get from stream.read().  This will ease further post processing we may like to perform inside the streamlit app.


Pills have double labels

Spawn in radiation kit medkit
Notice how all the pills have double labels

This should be a very easy fix - all YAML, no C# required.
Just locate the pill entity prototypes and remove the label from their names. The label text should probably be added to the suffix field on the prototypes so they still have distinct names in the entity spawn panel for mappers/admins.
Like with chem jugs recently, the prototypes no longer need to have their labels baked into their names, since they'll automatically be applied when they spawn.


? is not a macro repetition operator in the 2015 edition. Can't compile on Ubuntu 16

Cargo.toml
[package]
name = "draw_utils"
version = "0.1.0"
authors = ["mishazawa<EMAIL_ADDRESS>edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
minifb = "0.13"

$ cargo run
   Compiling semver-parser v0.7.0
   Compiling pkg-config v0.3.17
   Compiling libc v0.2.66
   Compiling maybe-uninit v2.0.0
   Compiling cc v1.0.47
   Compiling lazy_static v1.4.0
   Compiling semver v0.9.0
   Compiling x11-dl v2.18.4
   Compiling rustc_version v0.2.3
   Compiling time v0.1.42
   Compiling cast v0.2.3
   Compiling minifb v0.13.0
error: expected `*` or `+`
   --> ~/.cargo/registry/src/github.com-1ecc6299db9ec823/minifb-0.13.0/src/os/unix/mod.rs:973:38
    |
973 |     ($($fn_name:ident, $x:expr),+$(,)?) => (
    |                                      ^
    |
    = note: `?` is not a macro repetition operator in the 2015 edition, but is accepted in the 2018 edition

error: aborting due to previous error

error: Could not compile `minifb`.

To learn more, run the command again with --verbose.

Fixed by rustup update command.


Upgrade to 1.7.11

This PR aims to upgrade our Kubernetes version to 1.7.11

Assigning @spahl given we may not be releasing this after all.

I close this PR cause we don't need it anymore. Please, open it again if you think we still need it.

Well, we'll need a PR that installs 1.10.2 (Open) or 1.10.3 (if EE is applicable).

I tackle it in this PR https://github.com/mesosphere/dcos-kubernetes-quickstart/pull/45


Wagtail 3.0

(Description)

Ticket URL:

Testing

[ ] CI passes
[ ] If necessary, tests are added for new or fixed behaviour
[ ] These changes do not reduce test coverage

Documentation.

[ ] This PR adds or updates documentation
[ ] Documentation changes are not necessary because:

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@9b07de5). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #1   +/-   ##
=======================================
  Coverage        ?   65.05%
=======================================
  Files           ?       32
  Lines           ?     1265
  Branches        ?      228
=======================================
  Hits            ?      823
  Misses          ?      400
  Partials        ?       42

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 9b07de5...ab36a96. Read the comment docs.


more tests for the req resp example

Example client (inc pipelined) and server based on mapAccumL pattern.
Test template filled out with direct tests, building on existing codec tests.

Should be rebased on PR #302

Rebased and now using async. Lets see what CI thinks...


Clarify what float and double means

This is a comment from the ARC review.
We should clarify, in accordance to the RISC-V ABI what float and double means, for their precise meaning is platform dependent in the C standard.

Fixed via #324


Fix groupBy() to use lift()

Addresses bug #1085.

Adds tests on Observable to verify that basic lift() features work.
Adds tests on groupBy to assert it does not break lift() features.
Fixes groupBy to use lift().

BREAKING CHANGES:
groupBy() now unsubscribes all inner Observables when the outer
Observable is unsubscribed. This diverges from the behavior in RxJS 4,
where inner Observables continue even if the outer is unsubscribed.
RxJS 4 explicitly supports the "inners continue when outer is unsubscribed", see this test. @blesh @trxcllnt @mattpodwysocki what do you think about the breaking change I'm proposing? It seems odd to me why shouldn't we dispose of inners. I don't know if and why there is anyone depending on this behavior.

@staltz I'm not a fan of this breaking change as the inners should be independent of the outers which makes them more reliable as you pass the inners around for streaming purposes and to be weirdly affected by something upstream.  It's best to be kept as it was in RxJS v4 cc @headinthebox

@mattpodwysocki I can see what you're talking about, but I'm having a hard time coming up with example code that would do this without doing something obviously strange.

Also, why wouldn't we terminate those groups if they couldn't possibly produce another value because the source was terminated? It sounds more like a bug than a feature, TBH.

Perhaps a middle-ground would be to have the inner streams error when the upstream is unsubscribed with a custom error like UnsubscribedSourceError. Then if the desired behavior is for the stream to continue on, you could handle that specific error with catch and return an Observable.never().

@staltz ... this needs to be rebased before I can merge it.

Rebased! :)

@staltz @blesh I still have concerns about the independence of the inner versus outer subscriptions. I wouldn't merge until we come up to some agreement on this because it diverges from all other Rx implementations.

@mattpodwysocki window also behaves like this (inners are unsubscribed when the outer is unsubscribed). Why is groupBy different? Who actually needs the use case you are portraying?

@staltz GroupedObservable is similar to ConnectableObservable, since they both front for a shared Subject. Multiple people can connect to the same ConnectableObservable without interfering with each other. The same should be true for GroupedObservable.
I know that's how GroupedObservable works in this PR, but this leads me to my next point:
once groupBy has emitted a GroupedObservable, that GroupedObservable has left the safety and comfort of the groupBy operator. Disposing the GroupBySubscriber shouldn't dispose inner GroupedObservables, because they might have subscription side-effects that groupBy doesn't know about, and if groupBy unsubscribes its inner GroupedObservables, unrelated side-effects might occur.
For example, if you multicast a GroupedObservable with a ReplaySubject, unsubscribing from the GroupBySubscriber would call unsubscribe on the ReplaySubject, which shouldn't be disposed yet.

@trxcllnt well said, and exactly my concerns that I had, which is why inner independence was necessary.

Does that apply also to window?
RxJS 4 https://jsbin.com/pukeni/edit?js,console
RxJS 5 https://jsbin.com/sajuwu/edit?js,console

@staltz no, this not independent of the outer subscription, upon disposal, it still ensures that the window is eventually emptied and then it stops.

@blesh @mattpodwysocki this PR is now safe to merge, I re-implemented the solution to keep it backwards-compatible as Matt wishes. We can/could postpone the discussion on subscription independence. The priority was to get groupBy working with lift().

To be fair, it was both @trxcllnt and myself who wanted to keep independence.

Also, I don't see the tests associated with this to check for the independence of the inner from the outer such as these from

The tests were not added in this PR because they are already there, I had ported them from RxJS 4 to this repo long ago.

LGTM.

@staltz ah, sorry about that.  LGTM then!

@kwonoj I updated the TS typing issue that you pointed out.

Thanks, change looks good to me too.

:) Sorry @staltz, can you rebase this one?

Alright, done

Merged as of 39ebae9... I basically took your whole PR as-is during rebase and reapplied my perf fixes.
Thanks @staltz! This was an important one.


Get RETS Version from Login Response

After logging in, the RETS response has the version as a RETS attribute in the XML. We should set it from that rather than require the user to set it.

Its in the response headers, not the XML body. I just checked one of our boards, might want to try a few different ones.


MINOR: buffer should ignore caching

When the buffer size config is set to 0, Streams invokes withCachingDisabled in all registered stores.
Previously, we didn't expect this method to be called on the suppression buffer, but since it can be under valid circumstances, we should just ignore it rather than throwing an exception.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

@mjsax @bbejeck
I ran into this while testing the new suppression feature. I think it should be considered a 2.1 bug.

@mjsax Certainly. I am still waiting for the system test branch to be created for 2.1 branch in https://jenkins.confluent.io/job/system-test-kafka/. Please feel free to cherry-pick into 2.1 branch when it is ready.

Thanks @lindong28. We'll let you know when it's cherry-picked.
Thanks @bbejeck and @mjsax for the reviews. I've rebased on trunk and addressed your comments.

java 8 failures:
kafka.server.DynamicBrokerReconfigurationTest.testAddRemoveSaslListeners
java 11 failures:
org.apache.kafka.clients.producer.internals.BufferPoolTest > testBlockTimeout FAILED
> Task :clients:unitTest FAILED
kafka.server.DynamicBrokerReconfigurationTest > testAddRemoveSaslListeners FAILED
kafka.server.DynamicBrokerReconfigurationTest > testUncleanLeaderElectionEnable FAILED
> Task :core:integrationTest FAILED
org.apache.kafka.streams.integration.EosIntegrationTest > shouldNotViolateEosIfOneTaskFails FAILED
> Task :streams:integrationTest FAILED

Retest this, please.

Java11 failed again with... @vvcephei Can you investigate?
java.lang.AssertionError:
Expected: <[KeyValue(0, 0), KeyValue(0, 1), KeyValue(0, 2), KeyValue(0, 3), KeyValue(0, 4), KeyValue(0, 5), KeyValue(0, 6), KeyValue(0, 7), KeyValue(0, 8), KeyValue(0, 9)]>
     but: was <[KeyValue(0, 0), KeyValue(0, 1), KeyValue(0, 2), KeyValue(0, 3), KeyValue(0, 4), KeyValue(0, 5), KeyValue(0, 6), KeyValue(0, 7), KeyValue(0, 8), KeyValue(0, 9), KeyValue(0, 10), KeyValue(0, 11), KeyValue(0, 12), KeyValue(0, 13), KeyValue(0, 14)]>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
	at org.apache.kafka.streams.integration.EosIntegrationTest.checkResultPerKey(EosIntegrationTest.java:218)
	at org.apache.kafka.streams.integration.EosIntegrationTest.shouldNotViolateEosIfOneTaskGetsFencedUsingIsolatedAppInstances(EosIntegrationTest.java:520)

Retest this please

@mjsax Can we make a Jira for it instead? I really don't think that this change could be linked with the EosIntegrationTest.

Hah! Vindication: this time only kafka.log.LogCleanerIntegrationTest.testMarksPartitionsAsOfflineAndPopulatesUncleanableMetrics failed.
Geez. This java11 situation is not cool...

One more try... I we can get green Java11, I'll merge afterwards. (I agree that the change should be unrelated to EOS test -- still, we should try to get a green build. @bbejeck is looking into the problem already -- we can still create a JIRA if there is no quick fix -- leave it to @bbejeck to make a call).
Retest this please.

Thanks @mjsax, @bbejeck , and @lindong28 !


Auto-scale legend when using Bokeh

Hello,
When using bokeh for plotting, there is no auto-scalling of the legend.
For example, only a subset of my 81 labels are listed in the legend in the UMAP plot below:

Bokeh does not provide an auto-scaling of the legend depending on the number of labels we are using (see open issues on git: https://github.com/bokeh/bokeh/issues/3880). But there are workarounds like here.
Let me know what you think @perrin-isir, but ideally that would be nice to make all labels appear like this (from scanpy PCA plot):

Best,
Paul

Amazing thanks @perrin-isir !


SIGINT/Ctrl-C while profiling should gracefully finish

SIGINT/Ctrl-C while profiling should gracefully finish the profiler and write the results to stdout/file. Two SIGINT/Ctrl-C should stop the program.

Hey! Just to clarify, is it about close the debugger listener after a command right?

Yes, it would stop the profiler, capture the data and send to stdout/file (depending on flags). perf has a similar behavior.

I take a quick look today on this but seems not supported by nodejs as well. Just local close could be done, maybe sent another signal and provide in docs a default handler to client use? (do not sound good for me).
Maybe can be a great feature on nodejs, what do you think?
Ref: https://github.com/nodejs/help/issues/835


Setup adjustments

My first-time contribution here.  👋
I've worked on fixing an issue with the Rejsekort integration. While doing this, I came up with some suggestions around linting/Prettier setup (and ensuring it is enforced so we don't need to manually format), lock files, postinstall step, Jest setup, and Playground behavior.
As most of all of these adjustments are rather small, I hope that it makes sense as one PR. I'll happily remove commits if something is not useful for you or split this into smaller PRs.
Let me know if some of the commits require more explanation.

Thank you @skovhus ! LGTM but I've added @madsnedergaard to be sure :)

Great ideas, @skovhus! :)
I've previously added eslint-plugin-prettier, but removed it again - I can't remember exactly why though 😅
I'll look into it and see if I can reproduce now, but if not I think this is fine.

I can't remember exactly why though. I'll look into it and see if I can reproduce now, but if not I think this is fine.

😅 I’ve used it for most JavaScript/TypeScript projects for years. Haven’t had any issues with it. 🤞
But if your editor is setup to run Prettier AND eslint auto fix on save then it might give some funny behavior. I suggest removing any prettier plugin for your editor. Formatting here is now done by one entity: ESLint. ;)

I agree and that's also how I've previously worked - the "issue" here is that we extend this eslint setup in our main codebase and use it for everything, so as far as I can remember it was related to that :)
Will continue testing a bit more in relation to that, but seems fine so far

we extend this eslint setup in our main codebase

I see. Not sure if extracting the config as a separate package would help? Anyways, before doing that I would recommend getting rid of the very opinionated/bloated Airbnb default config and use eslint:recommended instead. And possible get rid of most warnings, and mainly use errors. Oh well, that is for another time. :)


Downloadable fonts for Webview

There is no way to use downloadable fonts in WebView. Please update on how to handle this problem.

#9

I have to

Good


Add CodeQL scanning

Why? I don't know. But why not, amirite?

Wait nvm this would have this scanning on every PR and stuff


Paul Ritsche: Issue # 14 Calculate motif enrichment

Description
The changes in this pull request address the issue 14. The new function included
in htsinfer is called motif_enrichment. The function calculates the enrichment of
motifs of similar length in a given foreground and background dictionary.
Additionally, the function calculates the respective p-value for motifs in the
foreground dictionary based on a binomial distribution using the average
probability of occurrence in the background dictionary. Finally, the function
returns a dictionary containing the motifs of the foreground dictionaries as keys
and their respective enrichment and p-value as values.
Fixes # 14
Type of change
Please delete options that are not relevant.

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

Checklist
Please carefully read these items and tick them off if the statements are true
or do not apply.

[x] I have performed a self-review of my own code
[x] My code follows the existing coding style, lints and generates no new
warnings
[x] I have added type annotations to all function/method signatures, and I
have added type annotations for any local variables that are non-trivial,
potentially ambiguous or might otherwise benefit from explicit typing.
[x] I have commented my code in hard-to-understand areas
[x] I have added ["Google-style docstrings"] to all new modules, classes,
methods/functions or updated previously existing ones
[x] I have added tests that prove my fix is effective or that my feature
works
[x] New and existing unit tests pass locally with my changes and I have not
reduced the code coverage relative to the previous state
[x] I have updated any sections of the app's documentation that are affected
by the proposed changes

@uniqueg
I wasn't quite sure how to add you and mihaela as reviewers, I hope that's not too bad.

@PaulRitsche Thanks a lot. I think you can't assign us, but it's fine. We'll look at it when we get to it, will be a few days

Looks okay, but needs some cleaning, fixing of tests and possibly some refactoring.

Closing this for now as we chose to implement a brute force algorithm for 3' adapter extraction for the meantime.


KML - Fix for external style maps

Also fixed style lookup to use the absolute uri.
Addresses the issue from forum post
https://groups.google.com/forum/#!topic/cesium-dev/sdvlAuUfxgA
Also added a test and updated CHANGES.md.

Just the one comment and I'll merge.  Thanks @tfili!

@mramato Done.


Use global modlog for queries in help tickets instead of failing

Based on a staff suggestion that turned out rather popular. Looking up modlogs in help tickets is somewhat of a common occurrence, so this'll save switching rooms or adding "global" manually.

Should this apply to battles too?
perhaps only automatically if you're gstaff, so as to not confuse people trying to moderate tours and the like.

Hmm I wanted to avoid making it look at different modlogs for different users.

For tour games specifically it might make sense to go up to the parent room?

I feel like that might end up tripping people up - both global staff being called to a tour game that expects the global modlog, as well as room staff that expect the parent room's modlog to actually contain entries from room tournament battles, which it doesn't.

Okay. It sounds it would be best just to use the global modlog at all times, and just display a permission error to non-global auth?

We could merge the two concepts - default to global, and if they don't have permission, explain how these rooms don't have individual modlogs and that's why they can't use it.
That way, roomstaff in battles and hosts in groupchats don't get confused that they can't see the modlog of a room that they have staff powers in.

Yes, that's what I was suggesting.

Does this look ok?

Looks good to me


Socket-based DNS API will hang device if DNS query is not answered

Describe the bug
Using the socket-based DNS query APIs located here:
If a query is generated and sent, but never returned, the Zephyr device will stay in that state forever.
The cause of this is the K_FOREVER here and a bit lower (in the IPV6 code): The whole reason I started investigating this, is that an actual DNS query sent via the Socket-based APIs which is never returned by the server will hang the Zephyr device. We have an edge gateway setup where containers are loaded which handle NAT64, DNS64, joining BLE 6lowpan devices as well as OpenThread. This issue was identified when the DNS64 container spins up a bit later than the BLE joiner. The perfect example of this would be when the gateway software is updated and it requires a restart, but the IoT nodes are up and running at the time.
The K_FOREVER semaphore taken here and a bit lower are the cause of the hang: https://github.com/zephyrproject-rtos/zephyr/blob/master/subsys/net/lib/sockets/getaddrinfo.c#L119
To Reproduce
This is harder to reproduce with native Zephyr samples, because most of them do not use the Socket-based APIs for DNS, and if they do use them, they are natively setup for running in QEMU which has no routing behavior and requires modification for actual networking hardware like FRDM-K64F, etc.
Expected behavior
Device should never hang forever.  Pick an expected timeout time and let's generate a timeout so the caller of the DNS function can decide how to react.
Impact
Any device using the socket-based APIs for DNS can be easily hung if the UDP packet for the DNS query is lost, etc.  Also if DNS entry is not correct, developer will never get any notification other than an unresponsive device.
Environment (please complete the following information):

OS: Arch Linux
Toolchain: Zephyr SDK 0.10.0
Commit SHA: https://github.com/zephyrproject-rtos/zephyr/commit/0734b4fcaaea62e5f887d932a79b31507d61429d

@pfalcon @jukkar Testing ignored.  This is the bug that I would like to see fixed.
If you would like pointers on how to test, please let me know and I'll setup instructions for a native sample of your choice using whatever real hardware with networking you happen to have.

@jukkar  Can you please assess and add a priority to this?

Setting only one assignee.


user_group_popover: Fix misaligned icons in user group member list.

Previously, due the uneven width between the icons and the user presence indicator, the icons and presence indicator were misaligned with each other.
This PR uses the grid and subgrid layout systems to fix this misalignment issue.

[!NOTE]
Also contains a follow-up commit fixing the extra gap when the group description is absent.

Fixes: CZO Discussion

Screenshots and screen captures:

Before
After

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[x] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

@karlstolley could you take a look at this?

In the "after" screenshot, "Group settings" looks misaligned... but I think the problem may be that we don't want quite that much space between the labels and icons? Not sure, but they look a bit disconnected.

I've basically got this fixed in #32306, including alignment with the Groups settings label (though I should double-check that the bot icon aligns correctly there, too).

So is the state that we're waiting for #32306 to setting before looking at this further, as it might be obviated by that?

Update

Fixed the space between label and the icons.

Addressed the feedback from @karlstolley on using grid areas and the need of null areas vs padding.

@karlstolley, could you please review this PR again?

@sayamsamal can you rebase so I can re-review this?

@karlstolley rebased to remove the merge conflicts. This is ready for a review.

Looks good to me, merged, thanks @sayamsamal! @karlstolley should still feel free to reply or add follow-up tweaks, but I think we're better off merging this rather than risking it sitting over the holidays.


Requirements are the same for every course

All the course requirements are the same regardless of the semester/course.

The note is just a placeholder, implementation for the popup hasn't been worked on yet.


checkpoint of hpsv2.1

Hi,
Could you please provide a link to hpsv2.1.pt checkpoint?
Thanks

i found it here huggingface.co/xswu/HPSv2


chore: upgrade dependencies

chore: upgrade dependencies
Description
upgrade dependencies

Codecov Report

Merging #54 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #54   +/-   ##
=======================================
  Coverage   52.86%   52.86%
=======================================
  Files         123      123
  Lines        1678     1678
=======================================
  Hits          887      887
  Misses        791      791

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 cf480da...e48aaab. Read the comment docs.


No candidate version available for mysql-community-server on CentOS 6.8

Cookbook version
8.0.2
Chef-client version
12.13.30
Platform Details
CentOS 6.8
Scenario:
In my recipe, I was trying to do a simple install and start of MySQL service, code as below:
mysql_service 'default' do     port '3306'     version '5.6'     bind_address '<IP_ADDRESS>'     initial_root_password 'MyPass'     action [:create, :start] end
Steps to Reproduce:
Using above codes
Expected Result:
MySQL gets installed and started.
Actual Result:
Error shows no candidate for mysql-community-server was found:

mysql_service[test] action create

mysql_server_installation_package[test] action install

yum_package[mysql-community-server] action install

No candidate version available for mysql-community-server
================================================================================
Error executing action install on resource 'yum_package[mysql-community-server]'
================================================================================

Chef::Exceptions::Package
No candidate version available for mysql-community-server
Resource Declaration:
In /var/chef/cache/cookbooks/mysql/libraries/mysql_server_installation_package.rb
17:       package package_name do
18:         version package_version if package_version
19:         options package_options if package_options
20:         notifies :install, 'package[perl-Sys-Hostname-Long]', :immediately if platform_family?('suse')
21:         notifies :run, 'execute[Initial DB setup script]', :immediately if platform_family?('suse')
22:         action :install
23:       end
24:
Compiled Resource:
Declared in /var/chef/cache/cookbooks/mysql/libraries/mysql_server_installation_package.rb:17:in `block in class:MysqlServerInstallationPackage'
yum_package("mysql-community-server") do
package_name "mysql-community-server"
action [:install]
retries 0
retry_delay 2
default_guard_interpreter :default
declared_type :package
cookbook_name "MyCookbook"
flush_cache {:before=>false, :after=>false}
version "5.6.29-2.el6"
end
Platform:
x86_64-linux

I got the same issue here.
Cookbook version
8.0.2
Chef-client version
12.13.37
Platform Details
CentOS 6.7
Recipe
I used the sample recipe in mysql cookbook documentation.
mysql_service 'foo' do
  port '3306'
  version '5.5'
  initial_root_password 'changeme'
  action [:create, :start]
end

mysql_config 'foo' do
  source 'my.cnf.erb'
  notifies :restart, 'mysql_service[foo]'
  action :create
end

I got the same issue here.
Cookbook version
8.0.2
Chef-client version
12.13.37
Platform Details
CentOS 6.7
Recipe
I used the sample recipe in mysql cookbook documentation.
mysql_service 'foo' do
  port '3306'
  version '5.5'
  initial_root_password 'changeme'
  action [:create, :start]
end

mysql_config 'foo' do
  source 'my.cnf.erb'
  notifies :restart, 'mysql_service[foo]'
  action :create
end

hi @free0ldman, I made it work by using the old version of mysql. I tested it both CentOS 6.7 and CentOS 6.8.
I added this in metadata.rb.
depends 'mysql', '~> 6.0'

This workaround works! I still wonder why the later versions of mysql won't work.


unread: Use unread_topic_counter to get message details.

discussion: https://chat.zulip.org/#narrow/stream/9-issues/topic/unread_mention_topics.20bug

@timabbott updated!

Merged, after a few tweaks to the comments; thanks for fixing this @amanagr!


Some livecoding.tv streams only play audio even though there's video on the website

I was trying to watch livecoding.tv/cannap but livestreamer only played audio via mpv

Does the problem persist for you? I have watched two streams so far and both had video and audio.
livestreamer "https://www.livecoding.tv/video/best-for-web-learning-reactaltjs-8/" best
[cli][info] Found matching plugin livecodingtv for URL https://www.livecoding.tv/video/best-for-web-learning-reactaltjs-8/
[cli][info] Available streams: live (worst, best)
[cli][info] Opening stream: live (rtmp)
[cli][info] Starting player: "C:\Program Files (x86)\Video\MPC-HC\mpc-hc.exe"

Video: MPEG4 Video (H264) 1920x1080 30fps [V: h264 high L4.0, yuv420p, 1920x1080]
Audio: AAC 48000Hz stereo [A: aac lc, 48000 Hz, stereo]

livestreamer "https://www.livecoding.tv/gigabytegiant/" best
[cli][info] Found matching plugin livecodingtv for URL https://www.livecoding.tv/gigabytegiant/
[cli][info] Available streams: live (worst, best)
[cli][info] Opening stream: live (rtmp)
[cli][info] Starting player: "C:\Program Files (x86)\Video\MPC-HC\mpc-hc.exe"

Video: MPEG4 Video (H264) 1920x1080 60fps 1024kbps [V: h264 high L4.2, yuv420p, 1920x1080, 1024 kb/s]
Audio: AAC 44100Hz stereo 163kbps [A: aac lc, 44100 Hz, stereo, 163 kb/s]

Livestreamer uses RTMP streams, but there are also HLS streams and MP4 files.

@0880 I haven't checked again. Have there been any commits that have affected this?

@txtsd @0880 I fixed this issue in my MPC-HC player, by adding additional delay of 3 seconds (this works for me).
The delay is for ffmpeg to be able to analyze the stream and to detect the video part in it.
So if you can add such an option to the mpv player settings, then you should be ok.
@chrippa  I believe that this issue can be closed.


gdax - historical candles support

Hi Tim,
I just started playing with your library, and it looks great, but I miss there one substantial feature - access to aggregated historical data (open, high,low, close, volume). Not every exchange provides this service, but some do.
I am going to work with GDAX, so I integrated historical rates access on GDAX. To start off, I did not modify the core API, as it would have a huge impact. I just added a new method to GDAXMarketDataService, and it can be used like this:
	Exchange gdax = ExchangeFactory.INSTANCE.createExchange(GDAXExchange.class.getName());
	GDAXMarketDataService mds = (GDAXMarketDataService) gdax.getMarketDataService();
	GDAXCandle[] candles = mds.getGDAXHistoricalCandles(CurrencyPair.BTC_USD, "2018-02-01T00:00:00Z", "2018-02-01T00:10:00Z", "60");
	System.out.println(Arrays.toString(candles));

I believe I am not the only one who can benefit from the feature.
Best Regards
Jan

Thanks for this. There is an open issue somewhere I think about adding this to the generic level API of XChange, which will hopefully be implemented soon.


Clarify error message in Task check

Just noticed this error pop up and I think it has a typo.

Thanks!


Replies to Replies do not Render properly

The below code checks only for reply of the cast and it works fine but when you pass cast url of a reply of a reply, it breaks and shows the OG cast only because the code below checks only for 3rd item in the list and not the 4th item
if (
      cast.result.casts[2] &&
      cast.result.casts[2].author.username === username &&
      cast.result.casts[2].hash.includes(hash)
    ) {
      return cast.result.casts[2];
    }

Sample reply of an reply does not render properly - https://www.warpcast.com/saxenasaheb.eth/0x18609044"

Thanks for flagging the issue. This should be fixed when you update to 1.8.3


Update dependencies; update code

I've updated all dependencies to the latest except rxjs which is believe should stay at beta.6 for stability reasons. The update broke the code which I fixed, it currently builds, runs and passes the karma test successfully.

I also updated the README.md file and added TODO

Hi Israel, thanks for the PR! I will merge it now.