rich.syntax: code_width parameter seems to be ignored when piping to file

This is for Rich 2.0.0. And I'm running Mac OS 10.14.6

note: I may be terribly misusing Rich, and if my use-case is dumb, happy to close this and move on :)

I'm using Rich's Console.print() as a drop-in replacement for a project's print() statement. The project is a command-line tool that collects JSON data from an API. Most of the time, the tool pipes the JSON data into a file; but for the times when I'm just testing out the tool and printing to Terminal, I'd like stdout to show the JSON with Rich's nice syntax coloring.
However, when my tool prints to file, I've noticed unexpected/broken behavior when setting the Syntax() code_width parameter. The first part of this issue is me describing the bug. The second part of this issue is a tangential suggestion.
Possible bug in console.print/Syntax behavior when stdout is piped to file
Proof of concept
Here's a dumbed-down proof of concept of my use-case, without rich
import json
data = {'hello': 'world'}
text = json.dumps(data, indent=2)
print(text)

With Rich:
import json
from rich.console import Console
from rich.syntax import Syntax
data = {'hello': 'world'}
text = json.dumps(data, indent=2)
syntax = Syntax(text, lexer_name='json')
console = Console()
console.print(syntax)

The problem: When the JSON text features lines of >80 columns, and when I'm printing to file, console.print() seems to ignore the code_width parameter
mybar.py (default code_width)
The mybar.py script below is an example of a "wide" data payload being printed with the Syntax() class's default parameters, i.e. code_width left to None or whatever it normally is:
# mybar.py
import json
import string
from rich.console import Console
from rich.syntax import Syntax
data = {
    'id': 1,
    'things': (string.ascii_letters + string.ascii_letters),
}
text = json.dumps(data, indent=2)
syntax = Syntax(text, lexer_name='json')
console = Console()
console.print(syntax)

So piping mybar.py into bar-output.json
$ python mybar.py  > bar-output.json

Results in bar-output.json being improper JSON, because there's a line break at column 80:
{
  "id": 1,
  "things": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno
pqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
}

myfoo.py (code_width set to 200)
myfoo.py is the exact same script, just with the code_width parameter set to 200:
# mybar.py
import json
import string
from rich.console import Console
from rich.syntax import Syntax
data = {
    'id': 1,
    'things': (string.ascii_letters + string.ascii_letters),
}
text = json.dumps(data, indent=2)
syntax = Syntax(text, lexer_name='json')
console = Console()
console.print(syntax)

$ python myfoo.py > foo-output.json

The result, foo-output.json just truncates all data after column 80 – and that seems like unintended behavior?
{
  "id": 1,
  "things": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno
}

Note that when printing to Terminal, the output is fine:
$ python myfoo.py
{
  "id": 1,
  "things": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
}

Feature suggestion
This feature is tangential to the aforementioned bug: am I right in assuming that code_width default value is None? And that when printing to Terminal, the None value means: "whatever the terminal's current width is?". If that's the case, would it be possible for code_width=None to have no line width limit whatsoever?
Thanks!
-Dan

Hi Dan,
When you print things with Rich it will format the output for display which means it will insert line breaks and/or truncate text to fit in the terminal. If you pipe the output to a file, Rich will strip the control codes but the formatting will be the same as if it was rendered in a terminal.
The upshot of this is that you generally can't expect to Rich.print JSON and have it parse as json.
What you're seeing with regards to truncating the JSON is that Rich assumes a default width of 80 when it's not connected to a terminal. You can tell Rich to use a wider terminal by setting a width argument on the Console constructor -- but that's not a good solution to have parseable JSON.
My suggestion would be to print a Syntax in the terminal, but write to a file otherwise. Something like this:
if console.is_terminal:
    console.print(syntax)
else:
    console.file.write(json)

That way you can get pretty printed json in the terminal, but still write parsable JSON when piping to a file.
Hope that helps.
Will


Add events for operator rbac

Signed-off-by: sunzhaochang<EMAIL_ADDRESS>Description
Update operator role to create events successfully.
Issue reference
Please reference the issue this PR will close: #4874
Checklist
Please make sure you've  completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[ ] Created/updated tests
[ ] Unit tests passing
[ ] End-to-end tests passing
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Specification has been updated / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Provided sample for the feature / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

This was merged in #4876. This PR can be closed.


Build failed

I copied the NoiseBlueprintLibrary folder to the UE4 project plugins directory, then I opened VS2019 and created project from existing and used the NoiseBlueprintLibrary folder as the source.
This error get:
1>------ Build started: Project: NoiseBlueprintLibrary, Configuration: Debug x86 ------
1>C:\Users\ethan\Documents\Unreal Projects\Driven_to_Survive\Plugins\NoiseBlueprintLibrary\Source\NoiseBlueprintLibrary\NoiseBlueprintLibrary.Build.cs(3,7,3,22): error CS0246: The type or namespace name 'UnrealBuildTool' could not be found (are you missing a using directive or an assembly reference?)
1>C:\Users\ethan\Documents\Unreal Projects\Driven_to_Survive\Plugins\NoiseBlueprintLibrary\Source\NoiseBlueprintLibrary\NoiseBlueprintLibrary.Build.cs(5,38,5,49): error CS0246: The type or namespace name 'ModuleRules' could not be found (are you missing a using directive or an assembly reference?)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

I tried to build from inside UE4 and got generic error "Driven_to_Survive could not be compiled. Try rebuilding from source manually."

@thewhiterabbit
Could you give me more detail information?
In my environment (UE4 4.25, VS2019), the plugin seems to be built successfully.

@thewhiterabbit
Is there any update?

I will close this issue for now.
@thewhiterabbit
If you have still problem, please reopen this issue.


fix(CI): quote XML in suspicious log check attrs

Description
The summary generated for suspicious log JUNIT can contain ": https://redhat-internal.slack.com/archives/C0321S70YK1/p1709098272425619?thread_ts=1709049209.428899&cid=C0321S70YK1
This PR ensures all JUNIT testcase names are XML safe. (I was tempted to also escape the JUNIT testsuite name but that is used to generate the filename and it is not clear to me how to best handle odd characters in that. So this PR just deals with the problem at hand.)
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added

Testing Performed
Here I tell how I validated my change
Unit test and CI. Somewhat TBD I may log something in central to trigger the suspicious log.
Reminder for reviewers
In addition to reviewing code here, reviewers must also review testing and request further testing in case the
performed one does not seem sufficient. As a reviewer, you must not approve the change until you understand the
performed testing and you are satisfied with it.

/retest

/retest


Update Shipkit plugins configuration

Hello,
I'd like to let you know that recently new properties has been added to Shipkit Changelog and Shipkit Auto Version plugins. The latter exposes new 'ext' property for getting previous revision: project.ext.'shipkit-auto-version.previous-tag'. Using this property makes code clearer.
Configuration in release.gradle file can be also updated with 2 new Shipkit Changelog plugin properties:

newTagRevision that ensures predictable tagging (adding this property fixes shipkit/shipkit-changelog#46). 'GITHUB_SHA' that supplies the property, is an GH Action's env variable that exposes SHA of the commit that triggered the workflow.
Token that is set by githubToken property is used both to fetch and post via GH API. Earlier used 'readOnlyToken' and 'writeToken' properties are now deprecated.

There has been also applied to Shipkit Changelog new consistent naming convention for classes/objects and packages that refer to GitHub. According to this rename, info on Shipkit plugins can be updated in continuos-releases.md file.
Proposed changes can be applied to your project along with Shipkit plugins versions bumped to the latest ones.
Thanks!
Checklist

[x] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable)

Can you run ./gradlew spotlessApply, then check in any changes it made? Seems like the markdown isn't correctly formatted. Thanks.
Sorry for the delay, this was sent out while I was still on break and it went under my radar :)

Can you run ./gradlew spotlessApply, then check in any changes it made? Seems like the markdown isn't correctly formatted. Thanks.
Sorry for the delay, this was sent out while I was still on break and it went under my radar :)

Thanks for your reply. I applied Spotless plugin as adviced and it made minor reformat in 'continuous-releases.md'. Now it passes.

Thanks for your reply. I applied Spotless plugin as adviced and it made minor reformat in 'continuous-releases.md'. Now it passes.

There are already newer versions of Shipkit plugins - recently new major versions were released, so I updated this PR with these latest Shipkit versions.

There are already newer versions of Shipkit plugins - recently new major versions were released, so I updated this PR with these latest Shipkit versions.


Fix #168 and #130: Escape tildes when fetching suggestions

I believe this will be fixed with v0.3.3 (#169). I haven't been spending too much time on this project lately, but I'll prioritize it this week. I should be able to get the new version out some time this week.


Fix command line opcache:compile command

Looked at the original PR, this must have been a little copy/paste error.

#75 duplicate

Closing as it's a duplicate of #75


charity signup page

We need a charity signup form.  It should include:

EIN (or a search box to look it up)
point of contact
terms of agreement

Initial page is up. This page does nothing - it needs web services to continue.


Polishing

All the colours need adjusting as well as improvements to the CSS to make the app more professional looking and less like programmer art.

I'm going to refactor edge/vertex/face colouring to allow colour to be easily tweaked.


Diff in different OS

Hi guys, amazing project!
I generate some images using macOS 11.5.2 with graphicsmagick ghostscript in Rosetta, and then, when I run in Ubuntu 20 (Github action default ubuntu) I have a slight change in some pixel and that fail the test. I could increase the tolerance, but I want to have a pixel-perfect comparison. Do you know if graphicsmagick has something to do with this? Do you know what I could do to not achieve this problem?

I saw this article maybe is related to that
http://jeromebelleman.gitlab.io/posts/graphics/gmpdf/

Same for me when running tests in CI (jenkins + docker) VS snapshot created locally on Mac

@moshensky Up?

I will look into it and write back in a few days.

This has to do something with the conversion of pdfs to images, where it seems some colors could differ a tiny bit. In my tests setting tolerance: 0.0000001 solves it.
I'm curious to look at your pdfs and relevant expected images that fail, if you could share them.
For the time being I'm thinking whether to change default tolerance to the above number.

So far for pixel perfect comparison same versions of graphicsmagick (maybe gs as well) need to be used everywhere. I was not able to find any reliable options for convert that would work between versions 1.3.35 and 1.3.38.

I have updated how images are generated. My initial tests are successful. Most probably tomorrow I will release new version. Unfortunately all snapshots will have to be regenerated.

Should be solved by latest two versions.


STONEBLD-764: close unmerged PaC merge request on component deletion

Does not work for me
2023-03-21T07:32:12Z INFO controllers.ComponentOnboarding Tried to delete source branch appstudio-devfile-sample-python-basic, but it does not exist in repository yet. {"ComponentPaCCleanup": "mkovarik/devfile-sample-python-basic"}
https://github.com/Michkov/devfile-sample-python-basic/pull/45


Allow multiple custom claims

Feature request

Extension name: [e.g. firestore-stripe-subscriptions, or leave empty if suggesting a new extension]

Is your feature request related to a problem? Please describe.
I am building an app which intends to sell the user multiple subscriptions, each of which being an individual product that allows access to data in the related section of the database. Think of this subscription model as having a flat structure as opposed to a hierarchical one. There is currently no way to use security rules to allow access to each restricted section only if the user possesses a related subscription in their subscriptions collection because there is no way to query this collection for a matching subscription (it would require the equivalent of a .where() query in the rules, which is impossible. The only way to do it "out of the box" is to use the firebaseRole metadata property on the Stripe product which is converted into a stripeRole custom claim on the user's Firebase account. However, this means that only one subscription can be used in this manner because the generated custom claim will always be stripeRole: 'x'.
Describe the solution you'd like
It would be great if Stripe products can generate their own unique custom claim specific to that product. This would solve the problem of controlling access to sections of the database that are related to each subscription.
Perhaps as well as the Stripe product metadata field of firebaseRole: 'x' being added as a custom claim of stripeRole : 'x', there could also be the ability to add a metadata field of something along the lines of: firebaseCustomClaim: 'isSubscribedToProductA' which would convert to a custom claim of isSubscribedToProductA: true. A more flexible, although more hacky method would be something like firebaseCustomClaim_claimName: 'some-custom-value'
Describe alternatives you've considered
An alternative would be to create a separate cloud function that generates an index collection to track who is subscribed to what, but it would be great if this amazing extension had the capability to provide a solution without extra cloud functions.
Additional context
Here is the code that would allow the security rules to do what I want, IF this were actually possible. Hopefully, this illustrates the problem somewhat. Bear in mind that each document in the products collection is purchased via a subscription:
service cloud.firestore {
  match /databases/{database}/documents {

    match /products/{productId} {

      function userIsSubscribedToProduct() {

        // NOTE: subscriptionId is NOT available but this is to demonstrate how the matching subscription needs to be found.
        let subscription = get(/databases/$(database)/documents/users/$(request.auth.uid)/subscriptions/$(subscriptionId));

        return subscription.data.status == 'active'
      }

      allow read: if userIsSubscribedToProduct()
    }
  }
}

Having looked into the pros and cons of custom claims a bit more, it seems that they are not a great option for fine-grained access control (such as is my use case) due to the delay in the custom claim appearing on the auth token. It seems as though independently tracking subscriptions in the database is the best method of restricting access.

Having looked into the pros and cons of custom claims a bit more, it seems that they are not a great option for fine-grained access control (such as is my use case) due to the delay in the custom claim appearing on the auth token. It seems as though independently tracking subscriptions in the database is the best method of restricting access.


Clean up thanos controller

This commit refactors the Thanos Querier controller to remove unused
code and simplify the reconciliation logic.

oh thanks, I would appreciated a chance to review too.

Ah, sorry! I wanted to have everything done by the end of the week but I agree that it was merged prematurely. If there are some things I can address today, please do let me know and I'll take care of it.


Feature: Implement persistent acknowledgment state for newsletter subscription

Type of feature
🍕 Feature
Current behavior
https://github.com/open-sauced/app/assets/106407013/e5b4cd50-659f-4053-9a3e-fb2b23fe420b
Suggested solution
When a user subscribes to the newsletter, it displays feedback/action taken to acknowledge their subscription. However, a notable issue arises when the page is refreshed, as the subscription form reappears. To enhance the user experience and prevent unnecessary form display after a successful subscription, I propose implementing a feature that retains the acknowledgement state even after a page refresh.
Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Contributing Docs

[ ] I agree to follow this project's Contribution Docs

I would like to take this on and get your opinion on the aftermath.
.take


MOMNG-153 update state_already_registered_baby to be an end state

The public USSD and IVR lines should be updated to have state_already_registered_baby to be an end state, currently offers choice of main menu or exit which is an endstate.

@imsickofmaps please review

Minor text change then 👍


Deletion is happening with invoice key

I think lnbits rule is all deletion will be done using admin key, not invoice key
API ENDPOINT IS /tpos/api/v1/tposs/<tpos_id>
It's deleting the charge
Please check it once

What LNbits version are you on?
It seems adminkey is required for deleting a tpos
!(https://i.imgur.com/d3XeCV9.png)[api endpoint]

Thanks for reporting. This was fixed over a year ago. I think it can be closed.
commit a840970366d62cb0dfc7b1e38590bf1e452f406d
Author: Tiago vasconcelos<EMAIL_ADDRESS>Date:   Wed Oct 20 12:03:11 2021 +0100

    fix require admin key endpoints

diff --git a/lnbits/extensions/tpos/views_api.py b/lnbits/extensions/tpos/views_api.py
--- a/lnbits/extensions/tpos/views_api.py
+++ b/lnbits/extensions/tpos/views_api.py
@@ -36,3 +36,3 @@
-async def api_tpos_delete(tpos_id: str, wallet: WalletTypeInfo = Depends(get_key_type)):
+async def api_tpos_delete(tpos_id: str, wallet: WalletTypeInfo = Depends(require_admin_key)):
     tpos = await get_tpos(tpos_id)


Scan for +-Inf in Python external function results, converting to the missing value

Reported by karl smith on 10 Dec 2012 20:00 UTC
From Andrew
PyFerret should properly handle returned values of "+Inf" and
"-Inf"; e.g. set them to the missing value.  Currently the plot
routines don't know what to do with these values.  E.g. the following
gives a blank plot on the right:
     can v; set v left
     plot stats_ppf(x[    set v right
     plot stats_ppf(x[gx=0:1:.1](gx=.1:.9:.1],"norm",{0,1})
),"norm",{0,1})

This may mean dealing with these values in the Python compute function definitions.  But might be able to add something to the Python-Ferret interface to scan result arrays to do the conversion all the time.
Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/2009

Modified by andrew.wittenberg on 11 Dec 2012 23:17 UTC

Comment by karl.smith on 27 Jan 2017 00:50 UTC
Add C code to check the returned PyEF floating point results array for +-inf and nan, converting them to the missing value for that data array.  The plot from zero to one now plots properly.  Add that plot to the PyFerret-only benchmark tests.


feat: Use interfaces for public contracts and add regex based 3 word validation

Changes:

Move to returning interfaces for public-facing contracts to make it easier for mocking
Move from response containers with pointers to each return format to dedicated methods for each format to prevent possible null pointer lookups.
Add regex based 3 word validation

@luqmanMohammed @chaddgrimm it looks great can any of you merge this branch into the main one, please? thanks


Fix method name for en_NZ provider in readme

The method name in the en_NZ provider should be mobileNumber instead of cellNumber.

Thanks!


Add auto PiP on tab switch

Add the automatic activation of the extension when you leave the tabs, in which the video is played.

Entering Picture-in-Picture requires a user gesture that can be captured (such as user clicking on the extension icon). I don't think we can do it currently.
However, we are exploring some ways for triggering this.
See Auto Picture-in-Picture: https://developers.google.com/web/updates/2019/02/chrome-73-media-updates#auto-pip
FYI @mounirlamouri

What is the problem to call a function that activates pip from code?

Can you remove this check for extensions?

Add a setting to add this attribute to all videos.

Add privilege settings for extensions so that you can disable this requirement.

@beaufortfrancois yes, it's suitable https://chrome.google.com/webstore/detail/always-video-ᴴᴷ-beta-pip/gcfcmfbcpibcjmcinnimklngkpkkcing

pls add this

+1
Arc browser has it, and it's a fantastic feature to have

+1 yandex browser has it, and it's pretty useful. If I'm changing tabs while watching something, I'd like to keep watching it.

Any chance of this feature being on the roadmap?


[Event Request] codeunit 12 "Gen. Jnl.-Post Line" - OnUnapplyCustLedgEntryOnBeforeFinishPosting()

Describe the request
In procedure UnapplyCustLedgEntry:
    OnUnapplyCustLedgEntryOnBeforeFinishPosting(GenJnlLine, GLEntry, CustPostingGr); //CustPub
    FinishPosting(GenJnlLine);

[IntegrationEvent(false, false)]
local procedure OnUnapplyCustLedgEntryOnBeforeFinishPosting(GenJnlLine: Record "Gen. Journal Line"; GLEntry: Record "G/L Entry"; CustPostingGr: Record "Customer Posting Group"); //CustPub
begin
end;

Additional context
Publisher request marked with //CustPub tag.Internal work item: AB#494229

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 14819.


Tutorial GraphQL + Go

Hi, do you have any forecast of GraphQL + Golang? Is someone already writing, or can I apply for it?

issue is in the main repo - https://github.com/howtographql/howtographql/issues/91
I should be wrapping it up with hopes to go live with the nov/dec releases


docs: Add deployment guide

Summary

Set up a CD pipeline with Netlify
the url
Netlify deployment logs

LGTM!

👍


Support of NATS Streaming Server

I couldn't seem to find concrete answers from the docs about that does the nats CLI tool support the NATS Streaming Server (precursor to JetStream).
In some of the docs it mentions using the synadia/nats-box docker image with the nats commands on a NATS & NATS Streaming Server setup, and the nats sub and nats pub command seemed to work for me. However all of the nats server info, nats server ls, nats stream ls etc all time out for me.
Is there a document somewhere the lists out what is working with the NATS Streaming Server and what isn't? Or a mention somewhere that the CLI doesn't support NATS Streaming Server that I missed?

No it does not, Streaming server has a EOL date of not too far in the future, reating a high quality CLI is a very big task so we are focussing on JS.
the various commands that timeout (nats server...) those require a System account, I'd have thought you'd get a nicer error than tmeout but I guess your streaming server can be a bit old and so do not have the feature that gives the feedback I need to show nicer errors.
Generally, it just doesnt support Streaming Server


[AutoPR eventhub/resource-manager] EventHub-2018-01-01 Preview : update the API name

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/6216

(message created by the CI based on PR content)

This PR has been merged into https://github.com/Azure/azure-sdk-for-python/pull/5682


[SMALLFIX] Fix mount check for alluxio-start.sh #7769

Cherry-pick #7769 to branch-1.8

@apc999 PTAL.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/216/
Test PASSed.


Default value for NativeColorBlock

The default value for NativeColorBlock is not working for me and when I checked the source code I could not find it the default option, but in the documentation example you were using the default option.

Hi @Eng-Ahmad-Almohammad, I just tested using NativeColorBlock with a custom default color and it worked (using Wagtail 3/Python 3.9/Django 4.0.4.
# ...
from wagtail_color_panel.blocks import NativeColorBlock

class ArticlePage(HeadlessPreviewMixin, BasePage):
    content = StreamField([
        ('color', NativeColorBlock(default="#FF0000")),
    ], null=True)

    content_panels = BasePage.content_panels + [
        FieldPanel("content"),
    ]

Could you provide more details on how you are using NativeColorBlock?
Also please include your Wagtail, Django and Python version.
Thanks!

Hi @Eng-Ahmad-Almohammad, just wanted to follow up on this, are you still having issues? Thanks!

I'm closing this since as I'm missing feedback.


ionic run android --debug results in "Unexpected token  in JSON at position 0"

Ionic version:  (check one with "x")
[ ] 1.x
[ ] 2.x
[ x ] 3.x
I'm submitting a ...  (check one with "x")
[ x ] bug report
[ ] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
I use visual studio 2017 to edit the code. When using Visual Studio 2017 to debug on the device i can only debug the .js files using chrome debugger. Because of that i thought building the app using the ionic cli strangly it always results in
"[10:02:52]  lint finished in 4.83 s
Error: Unexpected token  in JSON at position 0"
Expected behavior:
Running application on android
Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
Your system information:
ordova CLI: 6.3.1
Ionic Framework Version: 3.0.1
Ionic CLI Version: 2.1.8
Ionic App Lib Version: 2.1.4
Ionic App Scripts Version: 1.3.0
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 10
Node Version: v7.8.0
Xcode version: Not installed

This issue was moved to driftyco/ionic-cli#2084

it seems like this issue is related to sigend or unsigned utf8 files. It seems like when saving some files as signed utf8 instead of unsafe utf8 the building process will have issues. Sadly VS 2017 automaticly saved the files as utf8 signed even when it was unsigned before


Cannot load otel-webserver-module with Nginx 1.21.6

Describe your environment
Docker with FROM nginx:1.21.6
Steps to reproduce
Included the build ngx_http_opentelemery_module.so like this:
load_module modules/ngx_http_opentelemetry_module.so;

output was:
gateway_1  | 2022/07/30 22:40:55 [emerg] 28#28: module "/etc/nginx/modules/ngx_http_opentelemetry_module.so" version 1018000 instead of 1021006 in /etc/nginx/common-outer-config.nginx.conf:5
gateway_1  | nginx: [emerg] module "/etc/nginx/modules/ngx_http_opentelemetry_module.so" version 1018000 instead of 1021006 in /etc/nginx/common-outer-config.nginx.conf:5

Nginx then immediately died.
What is the expected behavior?
Nginx started.
What is the actual behavior?
Nginx fails to start.
Additional context

The error message (and in the readme) implies that this only works with Nginx 1.18.0. According to this endoflife.date, 1.18 was announced end of life April 2021, over a year ago.

Released a new version supporting stable (1.22.0) and mainline (1.23.0) https://github.com/open-telemetry/opentelemetry-cpp-contrib/releases/tag/webserver%2Fv1.0.2 of nginx. 1.18.0 is no longer supported.

Closing this issue.


Proposed fix for spo customaction list #742

Proposed fix for spo customaction list #742

Changes to make a constant hold the scope All if scope not defined in options. No longer undefined in debug log.
Added unit test to make sure it logs correcly while in debug mode, for no scope entered. This should default to All and logged as: Attempt to get custom actions list with scope: All

Coverage remained the same at 100.0% when pulling 41a744cbde491ce8f70c585cf74c4ff2869a9aac on simonagren:spo-customaction-list into a9b3c8a892da0e2caf8f5d0fd40d99303c29666e on pnp:dev.


Crash when trying to load OG Xbox games

When using the plugin, loading any og xbox games would load for a second turn to a black screen and crash to Aurora dashboard
AuroraCrashPatcher version: 1.2
Hardware: Jasper
XeBuild: Glitch2
Kernel: 17559

Do you dl all covers? No nag about crash dl?
Then disable AuroraCrashPatcher plugin and use your xbox360 as you do...

I did download all covers

That could be your stealth, or any other plugin for that matter, also. Typically when playing og games it's best to boot with no plugins (open the disc tray immediately after hitting the power button to boot up) to disable plugins that could interfere (as most do). Booting with tray open will disable AuroraCrashPatcher as well, and won't interfere with playing og games (already tested and verified). If you're having different results, load up the Debug version (from the "Dist" folder, and send me the log file it generates on your Hdd afterwards.

I have no other plugin/stealth servers.
Launching the games through XexMenu with the plugin installed does not crash the game.
So the problem lays in Aurora.

I'll send the log files when I get home.

Sounds good thanks. If you could include your launch.ini file, and JRPC.ini (if you have that one; note that it's a .ini file not the .xex one) along with the log that would be very helpful.

I've experienced the same issue unfortunately

If playing original games, open disc tray when you boot up to prevent the patch from loading without going through the hassle of modifying plugins each time.
I've since provided an official fix to the crash to Aurora, which has since been merged into their stable branch and is scheduled for release as an official hotfix update, however. So as soon as that update comes through you can safely remove this patch from your plugins. AuroraCrashPatcher will still be necessary if you use FSD.

@StelioKontosXBL
Without an actual connected DVD drive i might not be able to open any disc tray :)
There are still planned releases for aurora or any other active development?

See my reply 20 minutes ago. My fixes to the actual Aurora codebase have been implemented and Aurora 0.7b.2-hotfix is ready for deployment; I can't give a timeline for when it gets pushed out, shouldn't be long though.


All videos on NPOstart.nl fail to analyze

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I'm running yt-dlp version 2023.10.13 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
The Netherlands
Provide a description that is worded well enough to be understood
Downloading from NPOstart.nl (using StreamFab) got impossible lately, the analysis of the stream data is failing and downloading results either in error code 310 or in the explicit error message [npo]AT_2161158, urgeing to report the issue here. This procedure was running smoothly until just two weeks ago. What can have been altered?
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
C:\Opgehaald>yt-dlp -vU "https://www.npostart.nl/nederland-onder-water/16-11-2022/AT_2161158"
[debug] Command-line config: ['-vU', 'https://www.npostart.nl/nederland-onder-water/16-11-2022/AT_2161158']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[b634ba742] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.19.0, brotli-1.1.0, certifi-2023.07.22, mutagen-1.47.0, sqlite3-3.35.5, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1890 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version<EMAIL_ADDRESS>Current version<EMAIL_ADDRESS>Current Build Hash: 13d6a04ef6678dc61cb6e2d42eb53e69486bd2f52b8e5d778db029ccd4c600b4
yt-dlp is up to date<EMAIL_ADDRESS>[npo] Extracting URL: https://www.npostart.nl/nederland-onder-water/16-11-2022/AT_2161158
[npo] AT_2161158: Downloading token
[npo] AT_2161158: Downloading player JSON
[npo] AT_2161158: Downloading hls profile JSON
WARNING: [npo] Unable to download JSON metadata: HTTP Error 405: Method Not Allowed
[npo] AT_2161158: Downloading dash-widevine profile JSON
WARNING: [npo] Unable to download JSON metadata: HTTP Error 405: Method Not Allowed
[npo] AT_2161158: Downloading dash-playready profile JSON
WARNING: [npo] Unable to download JSON metadata: HTTP Error 405: Method Not Allowed
[npo] AT_2161158: Downloading smooth profile JSON
WARNING: [npo] Unable to download JSON metadata: HTTP Error 405: Method Not Allowed
[npo] AT_2161158: Downloading embed page
ERROR: [npo] AT_2161158: No video formats found!; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1567, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1723, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1782, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2751, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 1076, in raise_no_formats
yt_dlp.utils.ExtractorError: [npo] AT_2161158: No video formats found!; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U

Duplicate of #6398
May be fixed by #8413


Add on click callbacks for applicant badge actions

Release Type: New feature

Fixes x-team/auto#1294
Description

Adds on click callbacks for applicant badge actions.

Checklist

[x] set yourself as an assignee
[x] set appropriate labels for a PR (initially it's mostly [zube]: In Review)
[x] set [zube]: In Review label for respective issue as well
[x] make sure your code lints (npm run lint)
[x] Flow typechecks passed (npm run flow)
[x] manually tested the app by running it in the browser and checked nothing is broken and operates as expected!

Related PRs

branch
PR

1294-exclude-registered-from-list--release-aug-6-12
Auto

1294-exclude-registered-from-list--release-aug-6-12
Auto API

Steps to Test or Reproduce

Navigate to the ApplicantBadge component section.

Make sure the component passes regression.

@nicksp review this please 😄

So guys, what do we do here regarding props? To be honest, I find it really cumbersome and unclear to have these 3 props for each of actions: display*/onClick/render*. What if we decide to extend a set of actions at some point in future?! That would simply result in props grown and even more confusion of what each prop does.

The more logical way, imo, would be to define the following contract for the component.
const actions = [
   exclude: {
     icon: reference to SVGIcon UI component
     action: onHandleExclusion | null
     render: renderExclusionPanel
   },
  approval: {
    icon: reference to SVGIcon UI component
    action: onHandleApproval | null,
    render: renderExclusionPanel
  }
]

<ApplicantBadge {..rest} actions={actions} />

Then we just loop over the actions array and just render <Dropdown> component based on what was passed. ApplicantBadge should no minimum if what is gonna be rendered, so we get these data from the passed actions prop. Also, that scales nicely.
So, my suggestion is to implement this way instead.
/cc @bernardodiasc @relztic

@nicksp review this please 😄

Hey @bernardodiasc You requested changes a while ago. Could you please check if changes look good to you?

Looks good to me 👍

Will merge once https://github.com/x-team/auto/pull/1447#pullrequestreview-146774782 is addressed.


Detect links in PR titles

Right now the action is only able to detect AB#{id} links within a PR description. It would be nice to also support looking in the titles of the PRs as well.

Upon closer look at the code I can see this is not a trivial change to implement since the code is relying heavily on the Azure Boards app to verify the links rather than actually checking the ADO work item directly. Since the boards app can't add hyperlinks into titles this would require a complete overall of this action :/

Yeah AB# does not currently work if in the title. Only the description. So this action would not help much in that case :(


Erratic stack overflow in infer.rs 'live_vars'

See branch tests/infer_stack_overflow for the test (not very minimal, sorry - I haven't tried to reduce)
Commit 6d4b446b3d46e2afbbec2c80dc105a2a675c2643 precisely identifies the place where the HashSet's iteration order determines the outcome, and makes the test panic every time (without affecting any other test - obviously this hasn't come up before)
The problem seems to be that merge_equal_metas has found a set of equal variables where one also has a Plus constraint on another. This results in the merged variable effectively having a plus constraint on itself!
I also tried the fix of #591 (see branch tests/infer_stack_overflow2) , but although that PR adds code to deal with cycles, it doesn't fix the bug. I think the problem is that live_var (where the infinite-recursion happens) is called from results before we get to instantiating variables. This suggests that we may need to deal with cycles of Plus nodes (as #591 does) earlier, i.e. in main_loop rather than instantiate_variables ??

😱

Ok, so turns out the test is "bad" in some sense, and we can fix the test, but obviously - an infinite loop is not a good response to a bad Hugr, we need an error report that points at the "problem", otherwise people will just give up and not use Hugr/extension-inference if they have to debug like I did....
So, it turns out that it is totally possible for two Meta's to be both equal, and one Plus the other (which caused the problem here). Meta1 = Plus(ExtId, Meta2) is possible just if Meta1,2 are Outputs,Inputs of Node1 which has extension_reqs ExtId. Then you make them equal by wiring a copy of the classical value input to that Node1, into another Node2, which also consumes an output of Node1. Voila. "Solution" is to insert a Lift node on the copy. But, this also works if the input extensions at the start include that ExtId...
In this case the problem was a Const used in two places.

Adding a Lift on the second use makes the test pass, see 09c07b6486bbed0084d01b52d149231d7c3ded10.
Adding a Lift on the first use lead to a similar infinite-loop but more difficult to spot (a cycle of Plus nodes of length > 1) :-( :-(
Adding a Lift node on both uses solved the above problem but meant we couldn't infer a set of input extensions to the Const node (!), so the test still fails.

Also specifying the input-extensions of the Const to pure, the test passed.  Note PR #635 would do that by default, which seems like a good step, although we still need both Lift nodes.

An alternative fix (39e8740e2a885bd364158e6809dd24a58bb6e206) was to fix the input-extensions of the Const (a unary-unit-sum!) to include the extension id (collections) !!

So, some easy steps for this case and other similar ones:

For Const nodes: default to no input-extensions, as per #635
Remove the Equals constraint for Static edges. (A single line deletion.) Whilst this is not removing the need for lift nodes, it solves a needlessly-painful common case (i.e. using constants and calling functions).

For the general case, we can't solve this, but need to work on the algorithm to improve failure modes.

I note live_vars are only used in fn results. So rather than a live_var function that recurses (perhaps infinitely :-( ), we could calculate the set of live_vars (by a scan through all Plus constraints, using a queue and a "seen" hashset) in advance.

This could be tricky if we really need to know which "variable" makes a particular meta live. However AFAICS there is only one variable (the input-extensions to the whole hugr)??? So we could make that clear by changing variables: HashSet to variables: Option....

But I have to ask how much this two-stage algorithm with variables is helping us. Could we not require the Hugr input extensions to be fixed (or constrain them to empty-set if open)?

Dealing with cycles is another topic but it is connected, so I'll dump some thoughts here.

I suspect we should deal with cycles much earlier, i.e. in merge_equal_metas. That is, a cycle of Plus constraints, means all nodes on the cycle must be equal, so can be merged.

However, we must record the ExtensionId's added by the Plus constraints somehow....
How about not solutions but lower_bound (i.e. a cycle of Plus constraints sets a lower bound - those metas must include the lower-bound extensions) and also upper_bound (when known - if there is a single concrete solution, then lower=upper).
Does lower/upper bound also give a way to deal with "variables"??? I'm not sure here....

I think the big advantage of this is it avoids the need for the lift node? In some cases? I.e. it'll fix a lower-bound for the outputs of A just because they must be equal to themselves union B.extension_reqs ?

Of course no - if we require that input extensions at the target of every (static/value/control) edge equal output extensions at the source, we would still need lift nodes. But validation is different from inference, and it would be easy to change validation to check merely that extensions at the source of each edge were a subset of extensions at the target; perhaps the above then gives a procedure for inference?


Adding metrics collection to Telemetry

Adding Prometheus metrics reporting for migration and plans. allowing to gather additional information about the diffrent MTV plans and migartion per diffrent types of provider.
How to test quickly: Open terminal of the forklift-controller and run following command
curl http://localhost:2112/metrics | grep mtv
Example output:
# HELP mtv_data_transferred_in_bytes Total data transferred during VM migrations in bytes
# TYPE mtv_data_transferred_in_bytes gauge
mtv_data_transferred_in_bytes{mode="cold",plan="2a86619c-8c84-43a9-ac6e-bfbea268acd6",provider="ova",target="local"} 122
 mtv_data_transferred_in_bytes{mode="cold",plan="4ba105e2-cea9-4828-b115-52bac12738a9",provider="ova",target="local"} 368
 mtv_data_transferred_in_bytes{mode="cold",plan="60b4e3ae-f23b-4b30-a289-
mtv_data_transferred_in_bytes{mode="cold",plan="6a735494-f22e-4c76-b179-424f90f82fd1",provider="ova",target="local"} 368
 mtv_data_transferred_in_bytes{mode="cold",plan="73780b25-f4cf-4095-9667-61e5c9777895",provider="vsphere",target="local"} 28508
mtv_data_transferred_in_bytes{mode="cold",plan="9e4322ec-73f8-4732-9b6d-258725e60014",provider="ova",target="local"} 10240
mtv_data_transferred_in_bytes{mode="cold",plan="ced50622-8b7b-4894-9166-6bf7073333e7",provider="ova",target="local"} 4096
# HELP mtv_migration_duration_in_seconds Duration of VM migrations in seconds
TYPE mtv_migration_duration_in_seconds gauge
mtv_migration_duration_in_seconds{mode="cold",plan="01bfbd1b-b0bb-4086-9d5d-bdfe6b81e1fc",provider="ova",target="local"} 571
mtv_migration_duration_in_seconds{mode="cold",plan="73780b25-f4cf-4095-9667-61e5c9777895",provider="vsphere",target="local"} 66987
mtv_migration_duration_in_seconds{mode="cold",plan="8f165ea7-fa6c-48c3-909d-f7a539927ec0",provider="vsphere",target="local"} 48859
mtv_migration_duration_in_seconds{mode="cold",plan="9e4322ec-73f8-4732-9b6d-258725e60014",provider="ova",target="local"} 1369
mtv_migration_duration_in_seconds{mode="cold",plan="c46088f5-a97a-497e-83fe-a1b230a3cdd2",provider="vsphere",target="local"} 37962
mtv_migration_duration_in_seconds{mode="cold",plan="c89fea6e-13d8-4e53-adb0-d19da9b36e5c",provider="ova",target="local"} 281
mtv_migration_duration_in_seconds{mode="cold",plan="ced50622-8b7b-4894-9166-6bf7073333e7",provider="ova",target="local"} 287
mtv_migration_duration_in_seconds{mode="cold",plan="e15ffb14-fa00-4350-8561-382819d08181",provider="ova",target="local"} 393
mtv_migration_duration_in_seconds{mode="cold",plan="e9969f48-e8a7-45ad-86ca-35e66d5cb6c2",provider="ova",target="local"} 608
mtv_migration_duration_in_seconds{mode="cold",plan="f2c2e684-1576-4310-a708-3e7bfec794c8",provider="vsphere",target="local"} 6879
mtv_migration_duration_in_seconds{mode="cold",plan="f790528c-4a2d-4e27-9168-3ab7f94472a8",provider="vsphere",target="local"} 71620
# HELP mtv_migration_duration_in_seconds_bucket Histogram of VM migration durations in seconds
# TYPE mtv_migration_duration_in_seconds_bucket histogram
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="3600"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="7200"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="18000"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="36000"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="86400"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="172800"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="ova",target="local",le="+Inf"} 14
mtv_migration_duration_in_seconds_bucket_sum{mode="cold",provider="ova",target="local"} 6800
mtv_migration_duration_in_seconds_bucket_count{mode="cold",provider="ova",target="local"} 14
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="3600"} 0
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="7200"} 2
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="18000"} 2
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="36000"} 2
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="86400"} 6
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="172800"} 6
mtv_migration_duration_in_seconds_bucket_bucket{mode="cold",provider="vsphere",target="local",le="+Inf"} 6
mtv_migration_duration_in_seconds_bucket_sum{mode="cold",provider="vsphere",target="local"} 236505
mtv_migration_duration_in_seconds_bucket_count{mode="cold",provider="vsphere",target="local"} 6
# HELP mtv_workload_migrations_status_plan_correlation VM Migrations sorted by status and provider type correlated to the plan
# TYPE mtv_workload_migrations_status_plan_correlation gauge
mtv_workload_migrations_status_plan_correlation{mode="cold",plan="00963712-6050-4597-8c2c-1217ab7f521a",provider="vsphere",status="failed",target="local"} 1
mtv_workload_migrations_status_plan_correlation{mode="cold",plan="51b060ca-7c96-4ec5-aef9-ae1576e0fceb",provider="vsphere",status="failed",target="local"} 2
mtv_workload_migrations_status_plan_correlation{mode="cold",plan="8f165ea7-fa6c-48c3-909d-f7a539927ec0",provider="vsphere",status="failed",target="local"} 4
mtv_workload_migrations_status_plan_correlation{mode="cold",plan="8f165ea7-fa6c-48c3-909d-f7a539927ec0",provider="vsphere",status="succeeded",target="local"} 1
mtv_workload_migrations_status_plan_correlation{mode="cold",plan="9e4322ec-73f8-4732-9b6d-258725e60014",provider="ova",status="canceled",target="local"} 5
# HELP mtv_workload_migrations_status VM Migrations sorted by status and provider type
# TYPE mtv_workload_migrations_status gauge
mtv_workload_migrations_status{mode="cold",provider="ova",status="canceled",target="local"} 2
mtv_workload_migrations_status{mode="cold",provider="ova",status="failed",target="local"} 1
mtv_workload_migrations_status{mode="cold",provider="ova",status="succeeded",target="local"} 1
mtv_workload_migrations_status{mode="cold",provider="vsphere",status="canceled",target="local"} 1
mtv_workload_migrations_status{mode="cold",provider="vsphere",status="failed",target="local"} 2
mtv_workload_migrations_status{mode="cold",provider="vsphere",status="succeeded",target="local"} 1
# HELP mtv_workload_plans_status VM migration Plans sorted by status and provider type
# TYPE mtv_workload_plans_status gauge
mtv_workload_plans_status{mode="Cold",provider="ova",status="canceled",target="Local"} 3
mtv_workload_plans_status{mode="Cold",provider="ova",status="executing",target="Local"} 6
mtv_workload_plans_status{mode="Cold",provider="ova",status="failed",target="Local"} 1
mtv_workload_plans_status{mode="Cold",provider="ova",status="succeeded",target="Local"} 14
mtv_workload_plans_status{mode="Cold",provider="vsphere",status="executing",target="Local"} 1
mtv_workload_plans_status{mode="Cold",provider="vsphere",status="failed",target="Local"} 3
mtv_workload_plans_status{mode="Warm",provider="vsphere",status="ready",target="Local"} 6

Regarding the cold/warm and remote/local. I guess it's apart from the plans because that was requested. but how much will it be harmful to have a single metric to contain all of the plans and their data? did you thought about making percentages out of the data? e.g success rate, etc.

It will be more problematic to have it in a single metric because we will have to specify the provider type, status, and destination in a single line, which will provide us with a very specific output. This is the opposite of what we currently want. Additionally, these are only the metrics in the controller. Now, I'm working on recording rules which will have more specific data based on the different labels and counters, so we will end up having a more combined output like you are referring to.
Regarding the percentage, I think it can be done. We just need to count all the migrations (there are some statuses we are not counting currently) and see the success/failure percentage from it.

Regarding the cold/warm and remote/local. I guess it's apart from the plans because that was requested. but how much will it be harmful to have a single metric to contain all of the plans and their data? did you thought about making percentages out of the data? e.g success rate, etc.

It will be more problematic to have it in a single metric because we will have to specify the provider type, status, and destination in a single line, which will provide us with a very specific output. This is the opposite of what we currently want. Additionally, these are only the metrics in the controller. Now, I'm working on recording rules which will have more specific data based on the different labels and counters, so we will end up having a more combined output like you are referring to.
Regarding the percentage, I think it can be done. We just need to count all the migrations (there are some statuses we are not counting currently) and see the success/failure percentage from it.

all my questions regarding combining/adding and even the time between updates are pretty much depending on who consume this data and how. if the consumer expect the data to be accurate 10 sec can fit (maybe someone changed the plan from warm to cold?), but if not we can increase the time in order to consume less resources / increase performance of forklift.

@bkhizgiy I don't think there is a need for the metric
'mtv_operator_destination'. Why not integrate it to the migration and plan metrics?

Regarding the cold/warm and remote/local. I guess it's apart from the plans because that was requested.
but how much will it be harmful to have a single metric to contain all of the plans and their data?
did you thought about making percentages out of the data? e.g success rate, etc.

I agree with the part of making the labels part of the plans. I'm not sure if everything can be in a single metrics since I'm nit sure about the difference between the plan and the migration,  but it is worth to discuss.
About the percentages, it's better yo keep as is since you can calculate the percentage in Prometheus and it's against the best practices.

@bkhizgiy you report the metric as Gauges, but their names end with "total" which is saved for counters.
I suggest to implement the metrics name linter that CNV uses.
Also, if the metric always go up its a counter. If it reports the current state its a Gauge.

@sradco you are right, thanks. I first switched it to a counter but then decided to reflect the current state instead, so I returned it to a Gauge. I will change the name to reflect that. Regarding the linter, it's a good suggestion,  I think it can be done next when adding more advanced logic, after we have our basic metrics implementation in.

@bkhizgiy you can drop the word in from all the metrics names.
For example:
mtv_data_transferred_in_bytes -> mtv_data_transferred_bytes.

Hi @ahadas, there are still a few metrics names changes that are worth fixing before merging this PR.
It's important since they also show in they are visible in the observe->metrics UI.

@bkhizgiy I saw you updated the metrics names, please update the pr description with the new names.

@sradco I can't find the comment in which you wrote:

Hi @ahadas, there are still a few metrics names changes that are worth fixing before merging this PR.
It's important since they also show in they are visible in the observe->metrics UI.

sure, I'm waiting for your ack

@sradco I can't find the comment in which you wrote:

Hi @ahadas, there are still a few metrics names changes that are worth fixing before merging this PR.
It's important since they also show in they are visible in the observe->metrics UI.

sure, I'm waiting for your ack

Actually I saw that @bkhizgiy fixed the issue that I raised. I added a few follow ups.
Most are nits, but the only thing that I think you should consider is if the mtv_plans_status is still needed after you added the plan information to the migration metric.

/lgtm


Update to 3.4.0

conda-forge: https://github.com/conda-forge/eigen-feedstock
Upstream: https://gitlab.com/libeigen/eigen/-/tree/3.4.0?ref_type=tags
Needed by:

vowpalwabbit

Linter check found the following problems:
The following problems have been found:
ERROR: clone/recipe/meta.yaml:29: has_run_test_and_commands: Test commands are not executed when run_test.sh (.bat...) is present.
ERROR: clone/recipe/meta.yaml:29: has_run_test_and_commands: Test commands are not executed when run_test.sh (.bat...) is present.
ERROR: clone/recipe/meta.yaml:33: incorrect_license: The recipe's about/license key is not an SPDX compliant license or license exception, closest match: MTLL
ERROR: clone/recipe/meta.yaml:34: missing_documentation: The recipe is missing a doc_url or doc_source_url
ERROR: clone/recipe/meta.yaml:34: missing_dev_url: The recipe is missing a dev_url
WARNING: clone/recipe/meta.yaml:34: missing_description: The recipe is missing a description
ERROR: clone/recipe/meta.yaml:34: http_url: http://eigen.tuxfamily.org/ is not https
WARNING: clone/recipe/meta.yaml:34: missing_license_file: The recipe is missing the about/license_file or about/license_url key.
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: clone/recipe/meta.yaml:29: has_run_test_and_commands: Test commands are not executed when run_test.sh (.bat...) is present.
ERROR: clone/recipe/meta.yaml:29: has_run_test_and_commands: Test commands are not executed when run_test.sh (.bat...) is present.
ERROR: clone/recipe/meta.yaml:33: incorrect_license: The recipe's about/license key is not an SPDX compliant license or license exception, closest match: MTLL
ERROR: clone/recipe/meta.yaml:34: http_url: http://eigen.tuxfamily.org/ is not https
ERROR: clone/recipe/meta.yaml:34: missing_documentation: The recipe is missing a doc_url or doc_source_url
WARNING: clone/recipe/meta.yaml:34: missing_description: The recipe is missing a description
WARNING: clone/recipe/meta.yaml:34: missing_license_file: The recipe is missing the about/license_file or about/license_url key.
ERROR: clone/recipe/meta.yaml:34: missing_dev_url: The recipe is missing a dev_url
Errors were found

Linter check found the following problems:
The following problems have been found:
ERROR: clone/recipe/meta.yaml:28: has_run_test_and_commands: Test commands are not executed when run_test.sh (.bat...) is present.
Errors were found

which destination channel? both of the tickets (this one and vowpalwabbit) are empty.

Eigen goes on defaults

@cbouss we need to rebuild even if eigen is a header only library?

@cbouss we need to rebuild even if eigen is a header only library?

haha well in that case no we don't need to.

Linter check found the following problems:
The following problems have been found:
ERROR: clone/recipe/meta.yaml:28: has_run_test_and_commands: Test commands are not executed when run_test.sh (.bat...) is present.
Errors were found


Uses sid from account if not present in request

Fixes an issue where the app would not use sid from token claims. This should fix issues in acquireTokenSilent for msal-browser when the refresh token has expired, which would only send login_hint today when falling back to acquireTokenByIframe, resulting in inadvertent timeouts.

Coverage increased (+10.03%) to 92.746% when pulling 1e98ccd91788fd8072226b9139eb109d83df1a25 on fix-use-account-sid into 824acd1aff7f871103e912544ece815f7eabefee on dev.


exclude files from travis

if it is possible to exclude files from travis. e.g. a readme update is currently beeing checked by travis.

adding "[skip ci]" with out the "s at the end of the commit msg works


Wrong state when sending yourself message in latest

I have a websocket handler that uses erlang:send_after() to send itself a message to timeout if it hasn't received an authentication message from the browser in 30 seconds. Then it ignores messages if the authenticated boolean in my state isn't set.
In 2.0.0-pre.2 this works as expected.
In master the message handler for the timeout seems to get an old State variable somehow. Authentication is successful, messages are getting passed, but when the timeout fires it says we're not authenticated.
Anyone know why this would be happening in the past week?

Past week nothing changed there. Even in the past couple months. Can you try a git bisect?

Very sorry, I removed my build tree and started over from 2.0.0-pre.2. I'll have a look if I can make some replication code against the latest master. If unsuccessful I can let you know and it'll go into the X-Files.

Can't reproduce behaviour

Cheers.


WP: align with shallow-populate & custom queries

Work in progress
Before you continue reading, please make sure, to read this: https://github.com/Mattchewone/feathers-shallow-populate/pull/19
This PR aligns with the mentioned PR on feathers-shallow-populate. It only works with this version, but it's not a breaking change.
Features:

Ability to add custom queries in $populateParams respectively named/unnamed queries. See below
All other features suggested in https://github.com/Mattchewone/feathers-shallow-populate/pull/19

app.service('users').find({
  query: {},
  $populateParams: {
    query: {
      posts: {
        $select: ["_id", "title"]
      }
    }
  },
  paginate: false
})

The filters $select, $limit, $skip and $sort are supported by default. Also other queries can be defined but have to be whitelisted. feathers-graph-populate looks for service.options.graphPopulate.whitelist. Best practice is to define options for feathers-graph-populate in a seperate file: users.graph-populate.js and export { populates, namedQueries, defaultQuery, whitelist }. then in users.service.js you can import the whole file and add it to options as options: { ..., graphPopulate }
Bug fixes:

support for params as functions (see https://github.com/Mattchewone/feathers-shallow-populate/pull/19)

Closes #16

I think it's ready.
@marshallswain let me know what you think. I'm not sure about the whitelist property, especially to search for it at service.options.graphPopulate.

Well, I think it's awesome!  This is a lovely, early Christmas present.

Released as<EMAIL_ADDRESS> Thanks!


Best way to download notebooks created from myst-notebook files?

Currently, when notebooks are created for a page, they end up in jupyter_execute, and are somehow able to be downloaded with the download-jupyter role.
I am trying to figure out the right way to expose download links for all notebooks so that themes can add the ability to download them. E.g. for this dropdown menu:

It seems that download-jupyter: creates a one-off hash for the notebook that wishes to be downloaded. Does it makes sense to do this for all notebook content? Is there a better way that I could do this?

Another thought on the generated notebooks - @amueller mentioned that authors may be hesitant to include MyST-specific markdown in Jupyter Notebooks they expect their readers to download and run, because the Jupyter interfaces don't support MyST markdown.
So, I wonder if another feature here could be that MyST-NB also uses Sphinx to output "regular markdown" in the "downloadable" notebook for input notebooks / MyST-notebook files (e.g. that have regular markdown links instead of {ref} in there.
That could be tricky to do, but might be a way to satisfy this condition before we get support for myst-markdown in the jupyter interfaces themselves.

e.g. that have regular markdown links instead of {ref}

I’m not sure what you mean by this, can’t you already use regular links?

Yeah, that was a bad example. I mean things like admonitions, figure or equation directives, etc

yeah doing a figure means that if someone looks at the notebook they will not see anything, which is not great.

A figure doesn't have a "regular" markdown equivalent though, that's the main reason for using directives; to extend markdown.
You can use an image ![alt](image/path.png), if you want to have it show up in markdown,  but then obviously you can't have a caption.
The emphasis here IMO should be to provide equivalent Markdown syntax extensions, using markdown-it/markdown-it-py, to allow you to write in syntax that Jupyter will support in the first place (rather than doing any post-conversion). For example https://github.com/executablebooks/MyST-NB/issues/126#issuecomment-622935821 will allow you to write equations without specifically using the math directive.
Similarly for admonitions, I want to write an extension to allow for use of fenced divs for admonitions:
:::{note}
My note
:::

Yeah I agree that the best long-term solution here is to support this syntax in Jupyter interfaces via something like a MyST plugin (in jupyterlab / notebook / vscode / etc).

I get the vague impression that  jupyterlab 3.0 is going to change the extension bundling machinery so that  a user-selectable markdown parser would easier to deploy/implement?
https://github.com/jupyterlab/jupyterlab/pull/8385

There's also https://github.com/jupyterlab/jupyterlab/issues/272 where they're discussing using markdown-it as the markdown parser in jupyterlab. If that lands, then it would be much easier to build MyST functionality on top of that parser, since markdown-it-py has much of the same structure

@chrisjsewell I'm not sure I follow. Sure, there is no direct equivalent in markdown, though you could create html that's equivalent. For numbering and referencing that would need to be either post-processing or somehow needs to be supported by jupyter lab.
I think the goal is pretty straight-forward: I want a jupyter notebook that has the content that I wrote but that can also be executed. Right now, I can produce content via jupyter notebook as an editor, but there is no way to view the content as a jupyter notebook. I.e. there is no way for the user to execute the code while seeing the figures.
Having an extension would certainly make jupyter notebooks a better editor for writing jupyter book content, but I don't think it's a feasible solution for the consumer side: it's a giant barrier to entry to ask someone to install an add-on so they can read your notebook.

@amueller I think I see your point-of-view 😬 but I think it would be best if you could provide a minimal example of a notebook, that you think is currently "unreadable", that we can talk around, and perhaps an example of what you think the notebook should look like

I wouldn't say it's unreadable, but some parts are missing. Figures are missing, notes are missing, sidebars are missing - unless the reader clicks into a markdown bar and finds some directive that's not supported.
Maybe a minimal example is a notebook with a figure and a note. If you open that in Jupyter, it will show two empty markdown cells, aka a white page.
What it would ideally show is a figure and a note.
Some things are not easily possible in jupyter I think, like sidebars. But I'd prefer to have a sidebar rendered inside the text rather than have it completely hidden from the reader.

If you open that in Jupyter, it will show two empty markdown cells, aka a white page.

Are you sure about that?
```{figure} https://miro.medium.com/max/512/1*d69DKqFDwBZn_23mizMWcQ.png
This is my caption
```

```{note}
This is a note, but it won't be *formatted*
```

Then what I meant by adding extensions to markdown-it-py, is that you could then write something like this, which renders in the notebook but would still be parsed correctly by MyST (given you activate the extensions).
![](https://miro.medium.com/max/512/1*d69DKqFDwBZn_23mizMWcQ.png)
!This is my caption

:::{note}
This is a note, and it will be *formatted*
:::

Yeah - I think that basically the only options are:

Find ways to inject raw HTML into generated notebooks when a book is built so that it will show up in a jupyter interface
Find ways to support MyST markdown syntax within Jupyter interfaces

To me, 2 is a cleaner and longer-term solution (maybe also simpler as well?)

@chrisjsewell
Hm you're right, it is not formatted but it's there. Somehow I thought I was missing content, but I guess that was only figures. I'll see if there was something else missing.
@choldgraf I think @chrisjsewell had something in between in mind (for now) which basically renders reasonably ok in Jupyter.
I would totally agree that 2 is the cleaner and nicer long-term solution. We'll see how my book evolves. But while @chrisjsewell's solution would be better than the current situation, I don't find it entirely satisfying. I'll be putting hundreds of hours into formatting these pages, I can put another couple hours into a CI job that replaces the myst markdown with some html.
I'm not saying this is a solution that should be supported by jupyter-book, as it is a bit ugly and adds more abstractions and moving pieces, I'm just saying, as someone writing a book, I'd rather have the extra work than have ugly formatting in my book.

there is no way for the user to execute the code while seeing the figures.

BTW what you're talking about is also reminiscent of  https://jupyterbook.org/interactive/launchbuttons.html?highlight=thebelab#live-interactive-pages-with-thebelab. I'm not saying your use case doesn't have merit, but surely the point of creating a HTML book is that people read that, rather than downloading all the individual notebooks, having to open them via Jupyter, and then reading those?

@chrisjsewell I guess that's the disconnect. To me both are equally important.
I want a book that is available as executable jupyter notebooks and as rendered website [and as printed book maybe]. I might even be tempted to say the executable notebooks are more important than the website.
If that's not the goal of jupyter-book, then that's of course fine, but it's certainly my goal.

Good point - I think there will always be trade-offs, but I think in general we should try to push for a top-quality experience in each of: the content files themselves, the rendered HTML, and the rendered PDF.

Yeah agreed, there's certainly trade-offs. Fixing the PDFs will be technically somewhat simpler in my experience (I went through all of this when I wrote my last book, which is entirely in jupyter and was converted to asciidoc). It "just" means fixing the latex that's generated. Though actually there's some issues there es well if you're using pandoc (are you?), because the internal representation of pandoc is somewhat restricted, IIRC, pandoc can't do cell spans in tables and so you can't directly use it to create latex that does. Also pandoc doesn't convert raw html that's inside markdown. You can probably see all the pandoc issues I opened 4 years ago still ;)

No we use it https://github.com/executablebooks/markdown-it-py

That's for parsing the markdown, not for generating the latex, though, right?

Yes markdown-it-py parses to its representation of tokens, then myst-parser converts these to the docutils node tree used by sphinx, which has output specific builders.

One thing that's worked fairly well for us to bridge the notebook/rst personalities of an md:myst file is to make sure that every figure is isolated as a jupyter cell using the jupytext cell delimiters, with a simple cell metadata tag like 'fig'.   So turning the md:myst file into a notebook that doesn't scare students just requires a script that uses jupytext.read to get it into the nbformat tree, an operation that transforms the figure cells, and  jupytext.write to write the denatured notebook, sync and execute.

another issue in a similar vein: https://github.com/executablebooks/jupyter-book/issues/629
we've started to get a few questions from people saying they are confused because the MyST syntax doesn't display in Jupyter environments (e.g., in the issue above it is the .. figure directive...)

I think admonitions and image/ figure directives are the main ones to prioritize, in terms of extensions for better "round-tripping", maybe we want to spin that off into a separate issue.
For the latter, perhaps direct parsing of HTML img tags into the doctree  might be feasible (using beautifulsoup to actually extract the tag options)

Yes, this would be ideal for our teaching.  A typical course setup will have a textbook or lab manual written in jupyterbook with crossreferencing, equation numbers, figure captions etc., and a set of student labs, which they will work on in jupyter.  As long as the figures can be sized correctly in the notebook, things like cross-refrences are a minor detail -- students can just click over to the html/pdf to see the fully rendered text.

Yeh cross-referencing is probably not easily possible, because by default in sphinx they are also cross-document

Totally agree with what is said here. So @phaustin your workflow is having a master md:myst and generating a book and a notebook from it with the notebook getting some extra polish to render nicely? That's basically the workflow I had imagined only my source would have been a notebook with myst, which should be very similar.
@chrisjsewell so round-tripping sounds like doing the conversion, not having directives that work in both environments as in https://github.com/executablebooks/MyST-NB/issues/148#issuecomment-631799021 ?
My setup is very similar to @phaustin, and having students install an add-on can be quite a big barrier.

@amueller -- yes, our holy grail is a single myst:md master, with derived versions that have provenence via scripts and metadata giving topic, level of difficulty, whether a cell is a question or a solution, answer key letter etc.  So for a quiz, we can write the solution we'll eventually post, strip the cells with the answers, construct the answer key, print a pdf for an in-class exam, or convert to canvas (our lms) qti xml for an online quiz.

so round-tripping sounds like doing the conversion, not having directives that work in both environments as

Well I just mean that myst, on parsing, would read an HTML img tag as an image or figure  directive. You would have to write your source documentation using HTML images (rather than the directives), if you wanted the downloadable notebooks to be that way, but then this avoids having to do any one-way post-processing of notebooks

Ah, ok. But then I still can't do cross-referencing, right?
I think @phaustin wants cross-referencing in the source document (or at least in one of the versions of the document) - at least that's what I want. Or do you mean you'd write html with some extra syntax that could then be read by myst to create the references?
What I want and what I understood @phaustin to want is:
a) Have an html & pdf export that has cross-references and all the niceties jupyter-book currently has.
b) Have a jupyter notebook (either as source or as export) that renders figures and notes reasonably well and doesn't scare students / readers with weird syntax.
Bonus:
c) Have it written in a version-controllable form (i.e. myst:md).
I'm not sure how your solution achieves a).

For us,  the image/figure swap plus perhaps a howto on filtering myst markdown would be about all we would need to get good-enough jupyter notebooks.   If you did get markdown-it-py into jupyter as an extension, we would definitely use that on our large first year courses that are running on jupyterhub in the cloud.  If it was possible to install a single jupyterlab extension via a conda environment.yml file then I don't see any problem using the extension in smaller classes where the students are using their own laptops.

Ah, ok. But then I still can't do cross-referencing, right?

No that would be non-trivial, so I don't think would be a short/medium term goal

Have a jupyter notebook (either as source or as export) that renders figures and notes reasonably well

I think this is a reasonable short-medium term goal

and doesn't scare students / readers with weird syntax.

Well that depends on how much of the "sphinx" functionality you want to use. Essentially roles and directives are the primitives of the MyST "language", then any other syntax are alternatives to these; to improve usability/readability. Naturally it would be unfeasible to provide an alternative syntax for every role and directive, but we can look to provide them for the most widely used ones.

@phaustin can you elaborate on

For us, the image/figure swap plus perhaps a howto on filtering myst markdown would be about all we would need to get good-enough jupyter notebooks.

I'm not sure I understand what you mean. I thought you already had custom processing to do that?

yes, but I'd be happy to exchange those regular expressions for unambigous information from the parser.  (this is strictly wish-list though, at the moment the only processing we do is to comment/uncomment the markdown/html image versions in a figure cell).

I put together a POC script to try option 1. from https://github.com/executablebooks/MyST-NB/issues/148#issuecomment-632407608 "Find ways to inject raw HTML into generated notebooks".
Our main use case is for admonitions : we want to keep using admonitions in JupyterBook and we want them to look decent in Jupyter notebook interfaces. The reason is that people follow the notebooks along when we give the course.
The way it looks can be seen here:
https://github.com/INRIA/scikit-learn-mooc/pull/152#issuecomment-748096323
The script doing the conversion from py:percent notebooks using MyST admonitions to ipynb files with rendered HTML admonitions is here:
https://github.com/INRIA/scikit-learn-mooc/blob/master/build_tools/convert-python-script-to-notebook.py
There is probably a lot of room for improvements, so suggestions more than welcome! I am guessing that nesting admonitions is probably not going to work.
The basic idea behind it:

use the default markdown-it-py parser to find the lines of the admonitions
generate a HTML for admonitions (going to docutils and then HTML). Currently we style the HTML directly e.g. with bootstrap CSS classes (they seem to both work in Jupyter and JupyterLab). My understanding is that there is no easy way to add CSS to a Jupyter notebook outside adding a code cell with HTML(") or custom.css.
replace the source of the admonition by its generated HTML in each notebook cell

It feels like I am doing MyST-markdown to CommonMark conversion, so what would a cleaner strategy look-like, would writing a CommonMarkRenderer class makes any sense?

I believe that @mmcky and @AakashGfude are working on a MyST->ipynb converter that outputs commonmark markdown: https://github.com/QuantEcon/sphinx-tojupyter
perhaps that'd be useful?
medium-long term I am very hopeful we can get some support for MyST markdown (some of it anyway) inside of Jupyter interfaces (e.g. via work that @rowanc1 is doing or building off of the JupyterLab markdown-it extension that @agoose77 has worked on

Nice, thanks a lot for the pointers, I'll try to take a look at them!

Meh, I think this feels like "going round the houses".
You could just have myst-parser identify HTML admonition, the same way it does for HTML images: https://github.com/executablebooks/MyST-Parser/blob/master/myst_parser/parse_html.py

Our main use case is for admonitions : we want to keep using admonitions in JupyterBook and we want them to look decent in Jupyter notebook interfaces.

MyST-Parser now has an extension to read HTML admonitions: https://github.com/executablebooks/MyST-Parser/pull/288

Our main use case is for admonitions : we want to keep using admonitions in JupyterBook and we want them to look decent in Jupyter notebook interfaces.

MyST-Parser now has an extension to read HTML admonitions: https://github.com/executablebooks/MyST-Parser/pull/288

Thanks, I may be missing something, but I don't really see how this helps having admonition looking decent in Jupyter notebook interfaces :thinking:.
I tried using a HTML admonition with the development Myst-Parser.

This is the **title**

HTML admonition

The generated HTML does look good:

but this is how it looks in the classic Jupyter notebook interface:

To give an idea what my current conversion script does (https://github.com/executablebooks/MyST-NB/issues/148#issuecomment-748188786)
JupyterBook
https://inria.github.io/scikit-learn-mooc/python_scripts/02_numerical_pipeline_hands_on.html

Notebook
https://nbviewer.jupyter.org/github/inria/scikit-learn-mooc/blob/master/notebooks/02_numerical_pipeline_hands_on.ipynb

Thanks, I may be missing something, but I don't really see how this helps having admonition looking decent in Jupyter notebook interfaces :thinking:.
I tried using a HTML admonition with the development Myst-Parser.

This is the **title**

HTML admonition

The generated HTML does look good:

but this is how it looks in the classic Jupyter notebook interface:

To give an idea what my current conversion script does (https://github.com/executablebooks/MyST-NB/issues/148#issuecomment-748188786)
JupyterBook
https://inria.github.io/scikit-learn-mooc/python_scripts/02_numerical_pipeline_hands_on.html

Notebook
https://nbviewer.jupyter.org/github/inria/scikit-learn-mooc/blob/master/notebooks/02_numerical_pipeline_hands_on.ipynb

You can easily just add extra classes and/or inline styles:

Tip

parameter allows to get a deterministic results even if we
use some random process (i.e. data shuffling).

in jupyter lab:

Tip

parameter allows to get a deterministic results even if we
use some random process (i.e. data shuffling).

You can easily just add extra classes and/or inline styles:

Tip

parameter allows to get a deterministic results even if we
use some random process (i.e. data shuffling).

in jupyter lab:

Tip

parameter allows to get a deterministic results even if we
use some random process (i.e. data shuffling).

Ah good point thanks!

Ah good point thanks!

I guess in line styles are probably the best way to go, as they are deterministic (i.e. don't depend on the available CSS), then when it is converted in sphinx, the style attribute will just be "thrown away", and it will be styled consistent with the sphinx theme you are using

I guess in line styles are probably the best way to go, as they are deterministic (i.e. don't depend on the available CSS), then when it is converted in sphinx, the style attribute will just be "thrown away", and it will be styled consistent with the sphinx theme you are using

I guess a limitation is that if you use markdown inside the HTML admonition, it will not render very nicely in Jupyter notebook interfaces.

Tip

`random_state` is **very important**

All in all, personally now that I have my hacky .py -> .ipynb conversion script with simple admonition support, I think I will stick to it (maybe sunk cost fallacy :wink:). The main advantages are:

have the comfort of staying in markdown i.e. not having to write HTML
one single place (in the script) where the admonition HTML style is defined. I could easily see how the hand-written style in the HTML admonitions would be copied and pasted many times and possibly diverge with time

The main disadvantage would be that it is stand-alone a hacky script and that his longer-term maintenance is less than clear.
For others though, HTML admonition may be exactly what they need.

I guess a limitation is that if you use markdown inside the HTML admonition, it will not render very nicely in Jupyter notebook interfaces.

Tip

`random_state` is **very important**

All in all, personally now that I have my hacky .py -> .ipynb conversion script with simple admonition support, I think I will stick to it (maybe sunk cost fallacy :wink:). The main advantages are:

have the comfort of staying in markdown i.e. not having to write HTML
one single place (in the script) where the admonition HTML style is defined. I could easily see how the hand-written style in the HTML admonitions would be copied and pasted many times and possibly diverge with time

The main disadvantage would be that it is stand-alone a hacky script and that his longer-term maintenance is less than clear.
For others though, HTML admonition may be exactly what they need.

@lesteve you can partially mitigate this by adding a newline above the Markdown:

@lesteve you can partially mitigate this by adding a newline above the Markdown:

Ah nice I did not think of trying that, thanks!

Ah nice I did not think of trying that, thanks!

FYI, nbsphinx parses
 elements with alert-info and alert-warning: see https://nbsphinx.readthedocs.io/en/0.8.1/markdown-cells.html#Info/Warning-Boxes.
This even works with LaTeX/PDF output.
A newline should still be used before the content, as mentioned above (and as mentioned in the nbsphinx docs).
There are still problems with nbconvert, though: https://github.com/jupyter/nbconvert/issues/1125
And there is some room for improvement regarding the CSS that's used in JupyterLab and the Classic Notebook.

FYI, nbsphinx parses
 elements with alert-info and alert-warning: see https://nbsphinx.readthedocs.io/en/0.8.1/markdown-cells.html#Info/Warning-Boxes.
This even works with LaTeX/PDF output.
A newline should still be used before the content, as mentioned above (and as mentioned in the nbsphinx docs).
There are still problems with nbconvert, though: https://github.com/jupyter/nbconvert/issues/1125
And there is some room for improvement regarding the CSS that's used in JupyterLab and the Classic Notebook.


CLI globalThis is not defined

Describe the bug
Followed the cli/README.md, got an error stack straight away running squoosh-cli & npx .... Couldn't find any further instruction live "use this node version" to fix it.
To Reproduce

Install node 11.15.0 through NVM
npm i -g squoosh-cli
squoosh-cli -h
See error

Expected behavior
Something else than an error stack !
Version:

OS w/ version: Ubuntu 20.04
Browser w/ version: not relevant
Node version: 11.15.0
npm version: 6.7.0 and 7.7.5 (tried before & after updating it)

Additional context, screenshots, screencasts
/home/remy/.nvm/versions/node/v11.15.0/lib/node_modules/@squoosh/cli/build/index.js:7
 - if the default executable name is not suitable, use the executableFile option to supply a custom name`;throw new Error(executableMissing)}else if(err.code==="EACCES"){throw new Error(`'${bin}' not executable`)}if(!exitCallback){process.exit(1)}else{const wrappedError=new CommanderError(1,"commander.executeSubCommandAsync","(error)");wrappedError.nestedError=err;exitCallback(wrappedError)}});this.runningCommand=proc}_dispatchSubcommand(commandName,operands,unknown){const subCommand=this._findCommand(commandName);if(!subCommand)this._helpAndError();if(subCommand._executableHandler){this._executeSubCommand(subCommand,operands.concat(unknown))}else{subCommand._parseCommand(operands,unknown)}}_parseCommand(operands,unknown){const parsed=this.parseOptions(unknown);operands=operands.concat(parsed.operands);unknown=parsed.unknown;this.args=operands.concat(unknown);if(operands&&this._findCommand(operands[0])){this._dispatchSubco

ReferenceError: globalThis is not defined
    at Object.<anonymous> (/home/remy/.nvm/versions/node/v11.15.0/lib/node_modules/@squoosh/cli/build/index.js:7:375948)
    at Module._compile (internal/modules/cjs/loader.js:816:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
    at Module.load (internal/modules/cjs/loader.js:685:32)
    at Function.Module._load (internal/modules/cjs/loader.js:620:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
    at internal/main/run_main_module.js:21:11

Tried other Node versions. Worked with Node 15. I wish there was a word about it in the CLI's README.md

globalThis has been supported since Node 12. Node 11 is not a LTS release. Node 10 is a LTS release, but reaches end-of-life in 1 month(!). Most recent stable is Node 15. I think it’s reasonable to expect that our users have at least v12.


IdP initiated login

Tell us about your request
Possibility to login via IdP initiated login from identity providers like Okta.
Which service(s) is this request for?
Any identity provider like Okta, OneLogin and others. (In our case this would be for Okta)
Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
Only SP initiated login is supported right know. This means:

users have to go to the app/website and provide their company mail to be able to login

users have to know their primary company address

we cannot add Docker to the users Okta dashboard as it will confuse them if their login is not working when clicking on the Docker tile

Are you currently working around the issue?
Kind of by hiding Docker from the users Okta dashboard to stop the confusion.

@kschlz  is this what you ended up doing for now? https://help.okta.com/en/prod/Content/Topics/Apps/apps-create-bookmark.htm

Currently I've just removed the app from the users dashboards and instructed them to login from the site or app by providing the mail.
I was playing around with the bookmark app but since it does not auto-fill for the mail it did not really help too much. One could def. use this to at least provide the correct link to the end users though.

We are in the same boat here too.

Same here. It would be really nice if we didn't have to type our email in to login every time.


Can you consider to support cocoapods

Can you consider to support cocoapods, my network environment spm can not be integrated at all

Thank you for your dedication

See #645 - short answer is some dependencies don't support Cocoapods so Soto can't


Playwright integration with Changedetection.io not working

I'm experiencing the following error when attempting to use Playwright in Changedetection.io as described in your instructions.
WebSocket error: getaddrinfo ENOTFOUND db21ed7f-browserless-chrome =========================== logs ===========================  ws://db21ed7f-browserless-chrome:3000/?stealth=1&--disable-web-security=true  error getaddrinfo ENOTFOUND db21ed7f-browserless-chrome  ws://db21ed7f-browserless-chrome:3000/?stealth=1&--disable-web-security=true getaddrinfo ENOTFOUND db21ed7f-browserless-chrome  ws://db21ed7f-browserless-chrome:3000/?stealth=1&--disable-web-security=true code=1006 reason= ============================================================
I have verified I can access Playwright separately on port 3000 and confirmed it renders web pages as expected.
From what I can see this looks like it is being caused by an incorrect hostname. In my setup Browserless Chrome has a hostname of 2937404c-browserless-chrome. From what I can see the value db21ed7f-browserless-chrome seems to be hardcoded into the addon as I couldn't find anywhere to try changing it?
Is is possible to change the hostname value somehow or perhaps make it a variable so it can be updated as needed?
My setup:
Pi4 4GB
Home Assistant 2023.10.1
Supervisor 2023.10.0
Operating System 10.5
Frontend 20231005.0 - latest

Oddly I just started seeing this error today and it had been working for me (I think?) for a few days before that.

Hmm. I don't use this anymore. Alex posted a changedetection addon and his are usually much better than mine
https://github.com/alexbelgium/hassio-addons
It probably is possible to make it a variable, just a pain. In the mean time, can also check out the code in this directory, put it in /addons/changedetection/ and change the hardcoded value in the config.json .

Yeah I had already tried Alex's version but it doesn't seem to integrate at all with Playwright unfortunately.
I'll experiment with the config.json for now. Thanks.

Yeah I had already tried Alex's version but it doesn't seem to integrate at all with Playwright unfortunately.

It does, but you have to

To use the Playwright fetcher, Changedetection.io addon needs to team up with the Browserless Chrome addon made by alexbelgium.

Are you saying you have managed to get it working using Alex's version of Changedetection and Browserless Chrome?
That wording is from JDeath's page. There's no mention of it on Alex's version. All my testing has been done with his Browseless Chrome installed and if I try running Alex's version of Changedetection with Browserless Chrome installed I get this:
Content fetcher 'html_webdriver' did not respond.
Be sure that the selenium/webdriver runner is running and accessible via network from this container/host.
Did you follow the instructions in the wiki?

WebDriver Host: http://browser-chrome:4444/wd/hub
[Go here for more information](https://github.com/dgtlmoon/changedetection.io/wiki/Fetching-pages-with-WebDriver)
Content fetcher did not respond properly, unable to use it. HTTPConnectionPool(host='browser-chrome', port=4444): Max retries exceeded with url: /wd/hub/session (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -5] Name has no usable address'))

It looks like his version is configured for the default webdriver version (tried changing browserless chrome port to 4444 too but made no difference).

Oh dangnabit, you're right . . . sorry for adding to the confusion!
In either case, I have resorted to running changedetection in my own container so I can use a cron task to restart it periodically due to a memory leak in Playwright.

Ah fair enough. Yeah I have it running in a separate docker environment myself on a NAS but it's slow. I was hoping to use the extra power available on my HA setup to improve that. Oh well, back to the drawing board for now :)

Same issue here. The PLAYWRIGHT_DRIVER_URL environment variable is hardcoded in the Changedetection addon. This prevent any connection with browserless chrome addon. Apparently there is no way to change it from the addon. Have you fixed in some way?

I have not added that capability as I am not sure if it will work (and I dont use it). If you test the capability, and it works, I can make it so the URL is passed in from the Configuration page.
To test: Download the repo code (big green button that says code). Move the entire changedetection folder into \homeassistantant\addons
edit config.json to put whatever PLAYWRIGHT_DRIVER_URL that you want.
Refresh the addonstore, Then you should see it at the top under "Local add-ons"
Install the addon and see if it works.

Now it seems attaching correclty to browserless chrome (thanks for that) but getting a new error "Target page, context or browser has been closed". In Browser Steps and Visual file selector I actually see the webpage being fetched, do you know why I am getting above error?

I don't know. I have only used it a little and never with an external url.


Finalize interaction on CRUD missions

Work with appropriate booster owners to finalize this content
https://github.com/openshiftio/appdev-documentation/blob/master/docs/topics/crud-mission-database-interaction.adoc

@inoxx03 any updates on this?

@rhoads-zach Clement had a good point that we should use curl instead of http, since the latter requires an additional installation step. I'll replace the current CLI command and output examples with examples using curl.

@inoxx03 I believe this PR took care of most of the references:
https://github.com/openshiftio/appdev-documentation/pull/120/files
If these changes resolve this issue, please close this issue.

@rhoads-zach @inoxx03 I've fixed the command lines to use the correct CURL commands (and output)
The fix is in #131


mark data as pending review when duplication validation failed

Coverage decreased (-0.07%) to 39.93% when pulling cf9236a4e295af6b4ce00c2f11ac63900159c9b7 on myarjunar:pending-review into 714a6c0dc0c238eade705ba1f32c142629732dec on healthsites:develop.


Only set dist from start if ...

Only set distance from start if the encoder is in a different rotation
Right now, it sets more often

Fixed


Single item view

working on single item view container.
*not sure how to select for single item... help after din din please

 Create UnAuth Item detail view


clone the object to be modified (#12583)

This PR fixes #12572

Pull Request Test Coverage Report for Build 269224116

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 38.905%

Totals

Change from base Build 267687136:
0.0%

Covered Lines:
19238

Relevant Lines:
45114

💛  - Coveralls

@chlafreniere , Ken has approved the issue, could you please help to merge this PR. thanks!


SAM-2778 Add "Ignore spaces" option to FIB

Add ignore spaces option to Fill in the Bank questions within Samigo.

Okay your sample use case here makes sense.... I only wonder the effect of just making it ignore spaces by default and not having an option.... would an instructor really be disappointed or confused if we just ignored spaces all together?

I can not think of any examples, but I imagine that there is a high probability that this would be an issue in some language / grammar classes.

Agree if you are doing language learning, spaces would be important. Okay yet another option in Samigo ;)
I'm okay with this going in .....


Specify required permissions in README

I attempted to implement this action and was stymied by the following error:

Unexpected error fetching GitHub release for tag refs/tags/1.14.0: HttpError: Resource not accessible by integration

Our org had Actions repo access set to read-only. Even knowing that, it wasn't clear what permissions were required to actually fix the actions. Experiments reveal probably just contents: write. I'm a little surprised, I would have expected packages: write as well?
Downstream issue where we encountered this problem: https://github.com/acquia/cli/pull/654
Previous issue, where this should have been documented more visibly: https://github.com/softprops/action-gh-release/issues/96

This helped me a lot, I'd like to see it in the documentation.

thanks fo rthe pull @danepowell


Fixes singularity collision and consume range

About the PR

Prevents singularities from bouncing off of things they can eat. Mostly came into effect if an admin decided to throw one. May make singularities slightly more inclined to move into the station instead of wandering into space.
Fixes singularities eating things up to sqrt(2) times further than they should have been able to. Apparently GetEntitiesInRange gets everything in a square instead of a circle. This might explain and fix #13141.

Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

https://user-images.githubusercontent.com/53582584/212529411-fa857631-7ad4-462e-90af-cf5885d6d13f.mp4
Changelog

:cl:

fix: Singularities no longer bounce off of things they can eat.
fix: Singularities will reach through the containment field to eat the emitters less often, maybe never.

i feel like we've had 7 different "fix singularity bouncing off things" PRs

The movement here feels pretty sluggish and the eating could use more of a buff. I've tested it out and sometimes it struggles eating entities right next to or under it and a level 5+ singularity doesn't feel too threatening at the moment.

reopen once you got time

@AJCM-git
Can you reopen this? Since you're a maint I can't.

this seems expensive can you profile this

Sure, assuming that I can figure out how to profile anything with VSCode.

this seems expensive can you profile this

I took a swing at it with visual studio and it looks like there's no difference from the current system. The calls cost ~89% as much cpu for 89% as many calls when running both versions side by side selected based on a Prob(0.5).