could CDC be added?

hi,
how practical would it be to add CDC device support as a third device option, with keyboard and mouse input (instead of sent out 2x PS/2 ports) being translated to VT escape sequences and piped back out to the USB CDC serial port? my usage case is with a VGA picomite (https://geoffg.net/picomitevga.html) which can NOT talk to USB devices - it can only talk to a serial terminal emulator running on an attached host. i'm envisioning that the picomite would be attached to a USB hub (as a device) along with the keyboard and mouse, and the "ps2x2pico+CDC" would then sit there as a host translating between keyboard+mouse and the picomite.
see the following discussion thread:
https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=16529
cheers,
rob   :-)

Here is a really quick&dirty demo I cobbled together to confirm if this is what you suggested.
Please try this: https://github.com/No0ne/hid2cdc/raw/main/hid2cdc.uf2

i've started collecting together the necessary bits - it may take me a day or two to get it all together! in the meantime, i've started a new thread on the backshed forums here:
https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=16545
so far one other member has indicated he will also give the usb2cdc.uf2 firmware a try - hopefully a few others will also step forward.
cheers,
rob   :-)

bigmic on TBS forums beat me to testing, here is his response on the forum...
_Posted: 01:37pm 30 Dec 2023
Hi Rob, All,
Well I have built it up and it is 75% working.
All letters and Numbers work
Esc works
Shift works
Enter (both) work
numpad works inc *-+/ but numlock does nothing
All shift Special chrs work (ie #$%^& etc)
The following keys do not seem to work:

All function keys (so I cant write a test program using the kb)
CTRL
NumLock
Arrow keys dont work

I am not sure of Delete insert Home end etc
Excellent so far
I have option US keyboard and key arrangement looks good.
Regards,
Mick (the Big one)
Posted: 02:27pm 30 Dec 2023
Hi Rob, All,
Probably as you expected, I tried Option keyboard UK instead of US and the key mapping remained the same (fixed at US layout).
A suggestion, possibly, for `No-one' is maybe use some link options on the HID2CDC GPIO pins to dictate regional mapping of the keyboard.

Is it possible that this HID2CDC might ultimately support USB sticks (Hard drives even), although I suspect not as there surely is a lot of overhead for formats etc.
I will test a wireless USB keyboard and see what happens.
If you want to knock a piece of code to test what is transmitted from various keys and/or a mouse please send it to me and I will 'put it to the sword'.
Regards,
Mick_
... so it sounds like a success! probably the next priority is to get the CONTROL key working, as this will allow the picomite's onboard editor (which can be operated with just control keys) to be used to write basic programs to do further testing of function key mappings.
cheers,
rob   :-)

Cool! Yeah the non-functioning keys where to be expected as I just the HID to ASCII mapping array built-in the tinyusb library which has no idea of VT100 codes.
To switch different countries we could use two or three GPIO jumpers.
Also mass storage devices with xmodem transfer should be possible.
The only thing I'm not shure about is mouse support. Can you display an on-screen mouse cursor on the VGA output?
When using a VT100 emulator you can always see your hosts cursor, but thats not possible here.

currently there is no on-screen mouse cursor on the VGA output, but i am hopeful that Peter Mather (who ported mmbasic to the pico) can be persuaded to add it. there are defined VT escape sequences to enable mouse tracking, see:
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
the one looking most appropriate is SET_ANY_EVENT_MOUSE, that seems to enable reporting whenever the mouse pointer leaves a character cell. i'll need to investigate this further (compare how TeraTerm reacts when it is enabled), but for now it can be pushed to the bottom of the todo list.
xmodem: excellent idea, i'd not thought of that!
VT function key definitions are:
VK_UP:   escape+"[A"
VK_DOWN:   escape+"[B"
VK_RIGHT:   escape+"[C"
VK_LEFT:   escape+"[D"
VK_HOME:   escape+"[1~"
VK_INSERT:   escape+"[2~"
VK_END:   escape+"[4~"
VK_PRIOR:   escape+"[5~"
VK_NEXT:   escape+"[6~"
VK_DELETE:   0x7F
VK_F1:   escape+"[11~"         // unshifted function keys
VK_F2:   escape+"[12~"
VK_F3:   escape+"[13~"
VK_F4:   escape+"[14~"
VK_F5:   escape+"[15~"
VK_F6:   escape+"[17~"
VK_F7:   escape+"[18~"
VK_F8:   escape+"[19~"
VK_F9:   escape+"[20~"
VK_F10:   escape+"[21~"
VK_F11:   escape+"[23~"
VK_F12:   escape+"[24~"
VK_F3:   escape+"[25~"         // shifted function keys (maps to F13 onwards)
VK_F4:   escape+"[26~"
VK_F5:   escape+"[28~"
VK_F6:   escape+"[29~"
VK_F7:   escape+"[31~"
VK_F8:   escape+"[32~"
VK_F9:   escape+"[33~"
VK_F10:   escape+"[34~"
cheers,
rob   :-)

https://aperiodic.net/phil/archives/Geekery/term-function-keys/

I uploaded another test with working arrow keys, but the F-keys are still not working 🤷🏻
(https://aperiodic.net/phil/archives/Geekery/term-function-keys/)

CTRL A-Z should work now, but F-keys still no luck, I'm using your code table now.

Ah! F-keys are working, got the wrong ASCII value there.
This is the right one: https://geoffg.net/Downloads/Terminal/TerminalEscapeCodes.pdf
I think now only key repeat aka. typematic is missing, right?

it is looking good!
apparently we still seem to have the DEL key mapping to nothing - it should produce 0x7F. also caps lock doesn't function, the same for num lock (although num-lock is probably far less important).
it would also be good if ctrl-[, ctrl-], ctrl-, ctrl-/, ctrl-~ produce 0x1B, 0x1D, 0x1C, 0x1F and 0x 1E respectively, allowing all control codes to be generated from the keyboard (not sure if i have ctrl-/ and ctrl-~ correct).
for diagnostics purposes, it would also be rather handy if output was also echoed out a serial port pin (GP0).
cheers,
rob   :-)

Typematic implemented, DEL is fixed, capslock works (currently only as shiftlock), numlock does nothing atm.
I've mapped ctrl-space and [ and ] and \ according to: https://vt100.net/docs/vt100-ug/chapter3.html#T3-5
But I don't know which keys should produce the last two ctrl-codes RS and US.
Serial debug also implemented, sends 115200n8 at GPIO0.

from:
https://vt100.net/docs/vt102-ug/chapter4.html
Table 4-3 VT102 Key Changes
Control Code . . . . . .  Previous Terminals
NUL (octal 000) . . . . CTRL Space Bar .. . . .   CTRL ^
US (octal 037) . . . . .  CTRL _
i'd suggest implementing both mappings, although it is more a matter of completeness - just so that every possible ascii code between 0x00 and 0x7F can be typed in.
would it be easy to also have the three key combination ctrl-alt-delete pulse a output pin low?
have posted an update to the backshed forum thread.
cheers,
rob   :-)

RS/US is fixed
Keycombo ctrl-alt-del would be easy, yes!

bigmik has requested num-lock! and i'm keen on having ctrl-alt-delete control a reset line (GPIO3 perhaps?).
you've done an amazing programming job, and it seems to be generating quite a bit of interest amongst picomite VGA users. the HID2CDC also has applicability to the CMM2 (see https://geoffg.net/maximite.html ) that has less-than-perfect onboard USB keyboard support, but still requires a PS/2 mouse (or USB mouse via a rather expensive proprietary chip from HobbyTronics).
cheers,
rob   :-)

scrub any urgency for num-lock, bigmik wrote:
"Re. numlock, when I requested numlock it was really only for completeness, in fact the way it is at the moment the numbers
are defaulted on the keypad, which is the way I would always want it to be. Can you let ‘no0ne’ know that if it is too difficult to
implement numlock leave it the way it is.
Regards,
Mick"
cheers,
rob   :-)

looks like you've already implemented num-lock. am impressed!
the cleaned up code looks really good, and highly readable. one small suggestion for line 125 in hid2cdc.c, where control key codes are handled:
      seq[0] = key - 3;
you might like to change it to:
      seq[0] = 1 + key - HID_KEY_A;
cheers,
rob   :-)

found a few small bugs:

the four function key combinations shift-f1, shift-f2, shift-f11, shift-f12 all generate codes, which they should not do. ideally, they should generate nothing (not even 0x00. incidentally, other keys that have no ascii or VT code should also generate nothing, instead of 0x00.

i believe the function keys f1 to f20 should not auto-repeat, although opinion on this may vary.

(this next one is a bit more obscure!) if you press and hold, for instance, shift-A then the letter 'A' will auto-repeat. if you then release the shift key, then (in this example) the letter 'a' will start auto-repeating. doing the reverse behaves differently - press and holding 'a' produces a repeating letter 'a', but if you then press shift everything stops until you release the keys (no 'A's appear).

the same happens for numeric keys and function keys (eg, shift-f5). on the PC i am typing this on, both cases auto-repeat, ie by pressing and releasing shift repeatedly you get 'aaaaaaaaAAAAAAAAAAAaaaaaaaaaAAAAAAAAaaaaaaAAAAAAA'. i am not sure which behavior is preferable, but whatever is chosen, it should probably be consistent.
cheers,
rob   :-)

1.: should be fixed now
2. and 3.: will look at this how it works under DOS
after fixing numlock and adding qwertz support I will make a 1.0 release
Please open a new issue for each new feature/bug you want/found, thanks!

many thanks. will dig around a bit here and see how wide the use of different keyboard layouts is in the mmbasic community - will start a new issue when i have more details.
cheers,
rob   :-)

2.+3. I checked under DOS with a real PS/2 keyboard: It works exactly the same, F-keys repeat and shift-A repeats 'A', releasing shift repeats 'a' and pressing in reverse 'a' stops repeating. So I don't know if I should change that?

Numlock and QWERTZ is fixed now, last testing round before 1.0 🤞🏻

just did some testing of the new version, and everything seems to work pretty well   :-)   i did manage to get the numlock LED stuck in the off state at one point, but that could well be a shortcoming in the keyboard i am using. at the time i was pressing random keys in quick succession to check for any glitching, and could not subsequently repeat this behaviour of the LED.
a few minor suggestions:

it would be good if ctrl-alt-delete using the delete key on the numeric keypad worked even if numlock was ON. currently it only works if numlock is OFF. note - this does not affect pressing ctrl-alt-delete using the dedicated delete key - that always works.

a jumper setting to control the initial state of numlock at startup would be really handy.

ditto for a jumper to select keyboard language at startup. quite a few picomite VGA users are in europe and this would help with bringing a few more of them onboard for testing.

would it be possible to have a longer initial delay before autorepeat kicks in? currently it is 250ms, which seems a bit quick. the vt220 keyboard has it set at 500ms. 400ms may be a good compromise, although this is largely a personal preference that is different for everyone! the current repeat rate (50ms) is good.

cheers,
rob   :-)

Released 1.0!
UF2 file is now only available via the Release page: https://github.com/No0ne/hid2cdc/releases
(uf2 is deleted from repository!)


fair4rs_config.patch not applied

Patch was copied and saved locally in notepad, running through the RStudio terminal via the command given and receive the following message:
$ git apply --index 'U:\R Projects\fair4rs_config.patch'
U:/R Projects/fair4rs_config.patch:7: trailing whitespace.
This CITATION.cff file was generated with cffinit.
U:/R Projects/fair4rs_config.patch:8: trailing whitespace.
Visit https://bit.ly/cffinit to generate yours today!
U:/R Projects/fair4rs_config.patch:9: trailing whitespace.
U:/R Projects/fair4rs_config.patch:10: trailing whitespace.
cff-version: 1.2.0
U:/R Projects/fair4rs_config.patch:11: trailing whitespace.
title: Lesson Title # FIXME
error: corrupt patch at line 147

Hi @RicCampbell,
As the error message suggests, notepad has added some whitespace to the patch file which means that the patch fails to apply.
Could you go to the link for the patch file again:
https://raw.githubusercontent.com/RSE-Sheffield/fair4rs-lesson-setup/main/fair4rs_config.patch
and try right click > "save page as" to save the file to your computer without touching notepad?
Then try running the git apply command again. :crossed_fingers:

Hi @tdjames1 ,
That seems to have done it! I knew not to have it touch anything, but haven't right click saved anything in so long didn't occur to me.
Sided note, it still saves it as a text file on windows, so the git apply command has to be run on '...config.patch.txt'
Thank you!

Thanks @RicCampbell that's useful info - I'll make a note to update the README.

Sided note, it still saves it as a text file on windows, so the git apply command has to be run on '...config.patch.txt'

This is a symptom of M$-Windows than GitHub (saves as config.patch under GNU/Linux, can't speak for OSX).
You can always modify file extensions from the File Manager but by default these are not shown so you have to go to View > Show File Extensions and then you can remove the extraneous .txt that was added.


Add support for mistral bedrock model

Overview
Add support for AWS Bedrock mistral model.

Codecov Report
Attention: Patch coverage is 81.81818% with 4 lines in your changes are missing coverage. Please review.

Project coverage is 81.72%.

Files
Patch %
Lines

newrelic/hooks/external_botocore.py
81.81%
0 Missing and 4 partials :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1141      +/-   ##
==========================================
- Coverage   81.75%   81.72%   -0.04%
==========================================
  Files         192      192
  Lines       21323    21345      +22
  Branches     3710     3715       +5
==========================================
+ Hits        17433    17444      +11
- Misses       2813     2817       +4
- Partials     1077     1084       +7

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


Coloured Toolbars

This is really important, to create some of the common appearances we see on Android.

OK...toolbar v1 checked in.  coloured toolbars and vertical toolbars to come at a later date

hmmm...kinda deal with this with ColorZone control now


HYGEN_OVERWRITE value 1 and 0

Hi,
I need to pass value to HYGEN_OVERWRITE environment variable.
Now I see that the code does not check value for HYGEN_OVERWRITE
Instead, It just check if the HYGEN_OVERWRITE is exists and force overwrite

I prefer doing this via command line, to be cross-compatible (bash, cmd, Powershell):
echo yyy | hygen my-generator new
The problem is that you have to know how many files you may overwrite a proiri.

@mcflythekid yes, there is no meaning for whats inside HYGEN_OVERWRITE, because it's a "yes, overwrite, or no - prompt". What values did you expect?
@Alebat do you know cross-env?


expo support via config plugin?

Hi Joel,
This is a great library, any chance we can get expo support through a config plugin?

Hi!
I wanted the same so i created an config plugin for this.
Please let me know if you have any issues with it.
The repo is react-native-vector-image-plugin

@zamplyy would you mind making a PR with that?

+1


Thank you  to the creator for this cool app. I use the checker successfully to find working versus dead links. But I don't see a way to save only the working links to a new m3u file. Thanks for any suggestion how to do this.

You can delete the bad lines. Down below right of the number of lines is a button to select the lines and than you can delete them at once with "del".
FYI: I'm not active on github anymore, only on Codeberg
On Sunday, October 27, 2024 at 03:24:04 PM GMT+1, devkind39 @.***> wrote:
Thank you to the creator for this cool app. I use the checker successfully to find working versus dead links. But I don't see a way to save only the working links to a new m3u file. Thanks for any suggestion how to do this.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Perfect! thanks. I will follow you on codeberg.


:robot: triggering CI on branch 'release-next' after synching from upstream/main

/retest

OCF Webhook is merging this PR


Add context menu to copy amount values from amount cells

I've avoided doing this, because of the cost of adding a context menu to every amount cell - potentially many thousands. That said, the performance impact would need to be properly benchmarked.


docs: fix documentation of naive bayes structs

Also fixed the clippy warnings

Codecov Report

Merging #110 (0b3bf94) into development (1208051) will decrease coverage by 0.06%.
The diff coverage is 100.00%.

@@               Coverage Diff               @@
##           development     #110      +/-   ##
===============================================
- Coverage        84.17%   84.11%   -0.07%
===============================================
  Files               78       78
  Lines             8249     8248       -1
===============================================
- Hits              6944     6938       -6
- Misses            1305     1310       +5

Impacted Files
Coverage Δ

src/naive_bayes/bernoulli.rs
71.33% <ø> (ø)

src/naive_bayes/gaussian.rs
84.25% <ø> (ø)

src/naive_bayes/multinomial.rs
76.08% <ø> (ø)

src/linalg/evd.rs
89.31% <100.00%> (ø)

src/linalg/ndarray_bindings.rs
83.40% <100.00%> (ø)

src/naive_bayes/categorical.rs
82.48% <100.00%> (ø)

src/preprocessing/series_encoder.rs
96.90% <100.00%> (-0.04%)
:arrow_down:

src/optimization/first_order/lbfgs.rs
92.85% <0.00%> (-1.59%)
:arrow_down:

src/linalg/naive/dense_matrix.rs
78.81% <0.00%> (-0.75%)
:arrow_down:

src/svm/svc.rs
89.93% <0.00%> (+0.62%)
:arrow_up:

Continue to review full report at Codecov.

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


vendor: Remove deprecated opcodes file

Can we remove opcodes-sflt? The opcodes-flt-occamy is the file used for smallfloat

Since ariane conforms to the opcodes in opcodes-sflt we do not remove them but merge this PR with a notice.


feature/#加入modals情境

This pull request introduces new interaction features and error handling mechanisms to the Modules/ExampleCommands.cs and Services/CommandHandler.cs files. The most important changes include adding new slash commands and modal interactions, as well as implementing error handling for modal commands.
New Interaction Features:

Modules/ExampleCommands.cs: Added a new slash command JapanIndividualCharacter that provides a select menu for users to choose options.
Modules/ExampleCommands.cs: Introduced modal interaction ModalInput and its response handler ModalResponse to handle user inputs via modals.

Error Handling:

Services/CommandHandler.cs: Implemented ModalCommandExecuted method to handle errors for modal commands with specific error cases such as UnmetPrecondition, UnknownCommand, BadArgs, Exception, and Unsuccessful.

Dependency Updates:

Modules/ExampleCommands.cs: Added Discord.WebSocket using directive to support the new interaction features.


APPS 378 - errors related to outputs of sub-workflows; APPS 382 - code generator bug

A sub-workflow with multiple blocks (e.g. a call followed by a declaration) only needs a common output applet if it a) has outputs that require evaluation, or b) passes through workflow inputs directly to outputs. However, the logic in the compiler was wrong for deciding whether or not (b) is true. The logic is fixed in this PR.
Also updates to wdlTools 0.12.2, which fixes APPS 382 - an error in the code generator if the first statement of the command block is a placeholder.

A sub-workflow with multiple blocks (e.g. a call followed by a declaration) only needs a common output applet if it a) has outputs that require evaluation, or b) passes through workflow inputs directly to outputs. However, the logic in the compiler was wrong for deciding whether or not (b) is true. The logic is fixed in this PR.
Also updates to wdlTools 0.12.2, which fixes APPS 382 - an error in the code generator if the first statement of the command block is a placeholder.


Rule enumeration

Renamed filterEnumType and filterEnumFlags so they are exported.
Corrected FilterEnumFlags values in accordance with MSDN documentation.
Removed stringer templated file for FilterEnumFlags since it is no longer an enumeration, and is instead a bit-flags field.
Regenerated FilterEnumType stringer file for the newly exported type name.
Created RuleEnumeration type to handle constructing the arguments for a WFP rule enumerator.
Added a Session.EnumerateRules method to construct a RuleEnumeration struct.
Added TestFilter test to validate that we can correctly:

Create a provider.
Add a rule.
Enumerate only rules from a single provider.

Updated w/ changes recommended by @faury-rodriguez-huntress. Tests passed on local testing VM.


[BUG] Security plugin installation fails locally

Describe the bug
Local installation of security plugin fails as plugin descriptor file contains "-SNAPSHOT" under opensearch.version.
To Reproduce
Steps to reproduce the behavior:

Build artifacts for security plugin

./gradlew clean assemble

Extract the generated distribution zip under build/distributions/opensearch-security-<IP_ADDRESS>.*.zip
Check the value for the attribute opensearch.version under plugin-descriptor.properties file

Expected behavior
As per this issue - Opensearch doesn't support installation of plugins with "-SNAPSHOT" under version

I've reproduced the issue.
Exception in thread "main" java.lang.IllegalArgumentException: illegal version format - snapshot labels are not supported
	at org.opensearch.Version.fromStringSlow(Version.java:201)
	at org.opensearch.Version.fromString(Version.java:196)
	at org.opensearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:252)
	at org.opensearch.plugins.InstallPluginCommand.loadPluginInfo(InstallPluginCommand.java:799)
	at org.opensearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:858)
	at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:263)
	at org.opensearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:237)
	at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:100)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.MultiCommand.execute(MultiCommand.java:104)
	at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
	at org.opensearch.cli.Command.main(Command.java:101)
	at org.opensearch.plugins.PluginCli.main(PluginCli.java:60)


example for auto resize tables on multiple columns

Hi there,
I was trying to have 2 tables on the same row but they seem to be overlapping each other.
Example code:
"""
This app demonstrates how to style the Dash DataTable for various Bootstrap themes.
Define the theme details in the  Boostrap theme dictionary, then set the THEME
"""

import dash
import dash_bootstrap_components as dbc
import dash_html_components as html
import dash_table
import pandas as pd
from dash.dependencies import Input, Output
import plotly.express as px
from jupyter_dash import JupyterDash
from dash_bootstrap_templates import load_figure_template

"""
Define Bootstrap style details for the table:
"""

# ------  App version 1  BOOTSTRAP theme  (light)  ------------
# https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.css
BOOTSTRAP = {
    "external_stylesheets": [dbc.themes.BOOTSTRAP],
    "primary": "#007bff",
    "secondary": "#6c757d",
    "selected": "rgba(0, 0, 0, 0.075)",
    "font_color": "black",
    "font": "sans-serif",
}

# ------  App version 2  CYBORG   (dark) ------------
# https://bootswatch.com/4/cyborg/bootstrap.css
CYBORG = {
    "external_stylesheets": [dbc.themes.CYBORG],
    "primary": "#2a9fd6",
    "secondary": "#555",
    "selected": "rgba(255, 255, 255, 0.075)",
    "font_color": "white",
    "font": "Roboto",
}

"""
=====================================================================
Set Bootstrap theme here
"""
THEME = BOOTSTRAP

#app = dash.Dash(__name__, external_stylesheets=THEME["external_stylesheets"])
app = JupyterDash(__name__, external_stylesheets=THEME["external_stylesheets"])

df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/solar.csv")

PAGE_SIZE = 10

table_alerts = dash_table.DataTable(
    id="table_alerts",
    columns=[{"name": i, "id": i} for i in df.columns],
    data=df.to_dict("records"),
    editable=False,
    page_current=0,
    page_size=PAGE_SIZE,
    page_action='custom',
    css=[
        {"selector": "input", "rule": f"color:{THEME['font_color']}"},
        {"selector": "tr:hover", "rule": "background-color:transparent"},
        {"selector": ".dash-table-tooltip", "rule": "color:black"},
    ],
    style_cell={"backgroundColor": "transparent", "fontFamily": THEME["font"]},
    style_data_conditional=[
        {
            "if": {"state": "active"},
            "backgroundColor": THEME["selected"],
            "border": "1px solid " + THEME["primary"],
            "color": THEME["font_color"],
        },
        {
            "if": {"state": "selected"},
            "backgroundColor": THEME["selected"],
            "border": "1px solid" + THEME["secondary"],
            "color": THEME["font_color"],
        },
    ],
)

table_clusters = dash_table.DataTable(
    id="table_clusters",
    columns=[{"name": i, "id": i} for i in df.columns],
    data=df.to_dict("records"),
    editable=False,
    css=[
        {"selector": "input", "rule": f"color:{THEME['font_color']}"},
        {"selector": "tr:hover", "rule": "background-color:transparent"},
        {"selector": ".dash-table-tooltip", "rule": "color:black"},
    ],
    style_cell={"backgroundColor": "transparent", "fontFamily": THEME["font"]},
    style_data_conditional=[
        {
            "if": {"state": "active"},
            "backgroundColor": THEME["selected"],
            "border": "1px solid " + THEME["primary"],
            "color": THEME["font_color"],
        },
        {
            "if": {"state": "selected"},
            "backgroundColor": THEME["selected"],
            "border": "1px solid" + THEME["secondary"],
            "color": THEME["font_color"],
        },
    ],
)

app.layout = dbc.Container(
    [
        html.H2("Test DataTable", className="bg-primary text-white"),
        html.Hr(),
        dbc.Row(
            [
            dbc.Col(
                dbc.Card([html.H4("Alert Table"), table_alerts]),width=6
            ),
            dbc.Col(
                dbc.Card([html.H4("Cluster Table"), table_clusters]),width=6
            )
            ]
        ),
    ],
    fluid=True,
)

if __name__ == "__main__":
    app.run_server(debug=True,mode='jupyterlab',host='<IP_ADDRESS>', port=8050)

This is how it looks on my Chrome browser:

Hi @priamai  and thanks for trying some of the examples!
The tables are overlapping because the DataTable is not staying inside the container as the screen size changes.
There are several ways to fix this.  Check out the Dash DataTable docs for setting the width of the table: https://dash.plotly.com/datatable/width
I added the horizontal scroll and wrapping text onto multiple line, and you can see the result below.  Give it a try and let me know if you have any other questions.

Horizontal Scroll:  You could overflow the entire container into a scrollable container.

app.layout = dash_table.DataTable(
    data=df.to_dict('records'),
    columns=[{'id': c, 'name': c} for c in df.columns],
    style_table={'overflowX': 'auto'},
)

Wrapping onto Multiple Lines:  If your cells contain contain text with spaces, then you can overflow your content into multiple lines.

dash_table.DataTable(
    style_cell={
        'whiteSpace': 'normal',
        'height': 'auto',
    },
    data=df_election.to_dict('records'),
    columns=[{'id': c, 'name': c} for c in df_election.columns]
)

Very nice solution!


Adding support for URLSearchParams

Related to #97

Coverage increased (+0.3%) to 91.573% when pulling f20490eb6b7d37478bd9906649ce085e0a269c6c on nickuraltsev:urlsearchparams into 580ef523d5ac20e4b6357183593a83bd3f4f7dc6 on mzabriskie:master.

I've just realized that isURLSearchParams will return true for some other built-in object with similar API like FormData. Can we do the following instead?
typeof FormData !== 'undefined' && value instanceof FormData

Coverage increased (+0.4%) to 91.62% when pulling 2b8d89a65e0d3de0bcc643af35bae593a98eaf13 on nickuraltsev:urlsearchparams into 580ef523d5ac20e4b6357183593a83bd3f4f7dc6 on mzabriskie:master.


MD-1116: columnLabels need to be initialized for each iteration

@Agirish Can you please review the PR? Thanks.
http://<IP_ADDRESS>:8080/job/Framework-Regression/708/console

Thanks for fixing this Chun! LGTM. +1


Problem with firefox

So when using FireFox I could only see other corp mates in systems who were using Firefox. Switched to Chrome and now I see everyone.

This sounds strange, and I myself use Firefox and have never experienced it. Don't really see how it could be technically possible.
Can you confirm that this still happens if you clear the cache for the Pathfinder instance?


Added a multipublish action

This action scans code bases (or Github workspaces) for package.json files and publishes each package to the specified registry (default is npm registry).

Thanks!


Implement Bot API 6.6

Thank you for the PR! I’ll look into it next week. Overall, great job.

Could you please also:

[ ]  update Bot API Version badge in README.md
[ ] bump package version https://github.com/TelegramBots/Telegram.Bot/blob/884431b59171ed0f713ee9e61ed5533e8c8d2203/.azure-pipelines/variables.yml#L6

@tuscen can you merge it to develop or a separate branch? It would be a blocking change for implementing #1237

@BloodShadow174 Could you update you PR? I'll merge it as is

@BloodShadow174 Could you update you PR? I'll merge it as is

what exactly do I need to do?

@BloodShadow174 You either need to rebase your branch on current develop or make a merge commit from current develop. I'd prefer a rebase for a cleaner commit history but either one will suffice

/azp run ci


kfp-api integration test fails with mysql-k8s unit in error

Bug Description
This is an issue against branch 1.8-updates-dev-branch
the test test_relational_db_relation_with_mysql_relation fails intermittently with the mysql-k8s unit in error
as seen for example in this run
To Reproduce
run the kfp-api integration tests in the CI on branch 1.8-updates-dev-branch
Environment
microk8s 1.25-strict/stable
juju 3.1/stable
Relevant log output
INFO     pytest_operator.plugin:plugin.py:783 Model status:

Model            Controller                Cloud/Region        Version  SLA          Timestamp
test-charm-gwks  github-pr-2798a-microk8s  microk8s/localhost  3.1.6    unsupported  10:05:05Z

App        Version                Status   Scale  Charm                    Channel         Rev  Address         Exposed  Message
kfp-api                           active       1  kfp-api                                    0  <IP_ADDRESS>   no
kfp-db     mariadb/server:10.3    active       1  charmed-osm-mariadb-k8s  latest/stable    35  <IP_ADDRESS>  no       ready
kfp-viz    res:oci-image@ffaf37e  active       1  kfp-viz                  2.0/stable      822  <IP_ADDRESS>  no
minio      res:oci-image@1755999  active       1  minio                    ckf-1.7/stable  214  <IP_ADDRESS>  no
mysql-k8s                         waiting      1  mysql-k8s                8.0/edge        110  <IP_ADDRESS>  no       installing agent

Unit          Workload  Agent  Address       Ports          Message
kfp-api/0*    active    idle   <IP_ADDRESS>
kfp-db/0*     active    idle   <IP_ADDRESS>  3306/TCP       ready
kfp-viz/0*    active    idle   <IP_ADDRESS>  8888/TCP
minio/0*      active    idle   <IP_ADDRESS>  9000-9001/TCP
mysql-k8s/0*  error     idle   <IP_ADDRESS>                 hook failed: "config-changed"

INFO     pytest_operator.plugin:plugin.py:789 Juju error logs:

unit-kfp-api-0: 10:00:32 ERROR unit.kfp-api/0.juju-log Failed to generate container configuration.
unit-kfp-api-0: 10:00:32 ERROR unit.kfp-api/0.juju-log Failed to handle <LeaderElectedEvent via KfpApiOperator/on/leader_elected[21]> with error: List of <ops.model.Relation object-storage:1> versions not found for apps: minio
unit-kfp-api-0: 10:00:36 ERROR unit.kfp-api/0.juju-log Failed to generate container configuration.
unit-kfp-api-0: 10:00:37 ERROR unit.kfp-api/0.juju-log Failed to handle <PebbleReadyEvent via KfpApiOperator/on/apiserver_pebble_ready[26]> with error: List of <ops.model.Relation object-storage:1> versions not found for apps: minio
unit-kfp-api-0: 10:00:42 ERROR unit.kfp-api/0.juju-log Failed to generate container configuration.
unit-kfp-api-0: 10:00:42 ERROR unit.kfp-api/0.juju-log Failed to handle <ConfigChangedEvent via KfpApiOperator/on/config_changed[31]> with error: List of <ops.model.Relation object-storage:1> versions not found for apps: minio
unit-kfp-api-0: 10:00:52 ERROR unit.kfp-api/0.juju-log mysql:0: Failed to generate container configuration.
unit-kfp-api-0: 10:00:52 ERROR unit.kfp-api/0.juju-log mysql:0: Failed to handle <RelationJoinedEvent via KfpApiOperator/on/mysql_relation_joined[41]> with error: List of <ops.model.Relation object-storage:1> versions not found for apps: minio
unit-kfp-api-0: 10:01:02 ERROR unit.kfp-api/0.juju-log mysql:0: Failed to generate container configuration.
unit-kfp-api-0: 10:01:02 ERROR unit.kfp-api/0.juju-log mysql:0: Failed to handle <RelationChangedEvent via KfpApiOperator/on/mysql_relation_changed[46]> with error: List of <ops.model.Relation object-storage:1> versions not found for apps: minio
unit-kfp-api-0: 10:01:13 ERROR unit.kfp-api/0.juju-log object-storage:1: Failed to generate container configuration.
unit-kfp-api-0: 10:01:13 ERROR unit.kfp-api/0.juju-log object-storage:1: Failed to handle <RelationChangedEvent via KfpApiOperator/on/object_storage_relation_changed[56]> with error: List of <ops.model.Relation object-storage:1> versions not found for apps: minio
unit-kfp-api-0: 10:01:21 ERROR unit.kfp-api/0.juju-log kfp-viz:2: Failed to generate container configuration.
unit-kfp-api-0: 10:01:21 ERROR unit.kfp-api/0.juju-log kfp-viz:2: Failed to handle <RelationChangedEvent via KfpApiOperator/on/kfp_viz_relation_changed[61]> with error: Waiting for kfp-viz relation data
unit-kfp-api-0: 10:01:28 ERROR unit.kfp-api/0.juju-log object-storage:1: Failed to generate container configuration.
unit-kfp-api-0: 10:01:28 ERROR unit.kfp-api/0.juju-log object-storage:1: Failed to handle <RelationChangedEvent via KfpApiOperator/on/object_storage_relation_changed[66]> with error: Waiting for kfp-viz relation data
unit-mysql-k8s-0: 10:04:59 ERROR unit.mysql-k8s/0.juju-log Uncaught exception while in charm code:
Traceback (most recent call last):
  File "/usr/lib/python3.10/urllib/request.py", line 1348, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "/usr/lib/python3.10/http/client.py", line 1283, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1329, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
    self.send(msg)
  File "/usr/lib/python3.10/http/client.py", line 976, in send
    self.connect()
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/pebble.py", line 272, in connect
    self.sock.connect(self.socket_path)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/pebble.py", line 1599, in _request_raw
    response = self.opener.open(request, timeout=self.timeout)
  File "/usr/lib/python3.10/urllib/request.py", line 519, in open
    response = self._open(req, data)
  File "/usr/lib/python3.10/urllib/request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/pebble.py", line 286, in http_open
    return self.do_open(_UnixSocketConnection, req,  # type:ignore
  File "/usr/lib/python3.10/urllib/request.py", line 1351, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 2] No such file or directory>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/./src/charm.py", line 786, in <module>
    main(MySQLOperatorCharm)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/main.py", line 441, in main
    _emit_charm_event(charm, dispatcher.event_name)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/main.py", line 149, in _emit_charm_event
    event_to_emit.emit(*args, **kwargs)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/framework.py", line 342, in emit
    framework._emit(event)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/framework.py", line 839, in _emit
    self._reemit(event_path)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/framework.py", line 928, in _reemit
    custom_handler(event)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/./src/charm.py", line 412, in _on_config_changed
    if not self._mysql.is_mysqld_running():
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/src/mysql_k8s_helpers.py", line 564, in is_mysqld_running
    return self.container.exists(MYSQLD_SOCK_FILE)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/model.py", line 2444, in exists
    self._pebble.list_files(str(path), itself=True)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/pebble.py", line 2104, in list_files
    resp = self._request('GET', '/v1/files', query)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/pebble.py", line 1564, in _request
    response = self._request_raw(method, path, query, headers, data)
  File "/var/lib/juju/agents/unit-mysql-k8s-0/charm/venv/ops/pebble.py", line 1612, in _request_raw
    raise ConnectionError(e.reason)
ops.pebble.ConnectionError: [Errno 2] No such file or directory
unit-mysql-k8s-0: 10:05:00 ERROR juju.worker.uniter.operation hook "config-changed" (via hook dispatching script: dispatch) failed: exit status 1

Additional context
No response

kfp-peristence charm integration tests also fail wit the same error https://github.com/canonical/pipelines-rocks/actions/runs/7528345532/job/20493131512#step:9:77

This was also observed in bundle-integration-v* tests which also deploy mysql-k8s from 8.0/stable.


Add environment variables to docker run cmd

Fixes https://github.com/UnitedIncome/serverless-python-requirements/issues/230

Haha... uhh @galindro you cloned "my" fork, and tried to MR it here.  If you can, re-fork from this codebase...
git remote add upstream https://github.com/UnitedIncome/serverless-python-requirements.git
git reset --hard upstream/master

Then patch your changes, and force push so we get just your feature here.
And secondarily, I'd suggest making a test (look in test.bats) to prove/ensure this feature works, and continues to work as other changes occur.  Thanks!

I've forked your repo because I've did 1 enhancement + 1 bug fix in the same PR. The enhancement can be applied to current UnitedIncome/serverless-python-requirements master branch but the fix no. It depends from your fork.
Therefore, what can I do is:

Update this PR with a single commit to add the docker environment feature
Create a PR in your fork to fix the problem that I've mentioned with the command executed in docker run: replace && by ;. This way you can push a new version of it to your already open PR: https://github.com/UnitedIncome/serverless-python-requirements/pull/165

What do you think?

Hey @galindro, I've merged @AndrewFarley's PR, you should be able to rebase on master now :smiley:

Done @dschep . I took advantage to make the two changes aforementioned here

#Triage
This PR has a bit of history to it, and needs to be reconfirmed whether the original issue reported remains a problem.
@AndrewFarley you had some historical context on this?

This indeed still looks useful, and it's quite a minor patch, could use a rebase and additions to the README, and perhaps a test.
I'll take this and get it prepared for merge @miketheman

This appears to have been resolved in #271. Closing!


"Enable finding overlapping blocks" in the Store web UI causes an error

Thanos, Prometheus and Golang version used:
thanos, version 0.32.5 (branch: HEAD, revision: 750e8a94eed5226cd4562117295d540a968c163c)
  build user:       root@053ebc7b5322
  build date:       20231019-04:13:41
  go version:       go1.21.3
  platform:         linux/amd64
  tags:             netgo

Object Storage Provider:
Filesystem
What happened:
When I go to the web UI of the store component and the page with the "Loaded Blocks" I see my loaded blocks, but once I select the "Enable finding overlapping blocks" checkbox, I'm redirected to an error page:

Aaaah! Something went wrong.
Please file an issue in the Thanos issue tracker.
View error details.

With the error details being:
TypeError: o[0][0] is undefined
    in t
    in be
    in xe
    in it
    in mt
    in div
    in F
    in n
    in PD

Full logs to relevant components:
Even with --log.level=debug there’s nothing appearing in the logs while the error occurs.
Any ideas?
Thanks,
Chris.

Duplicated with https://github.com/thanos-io/thanos/issues/5359. Closing this one.

Ah. I had seen that issue, but since I haven't even set up compactor yet, I thought it would be something else. Sorry.

@calestyo No need to sorry. Compact & Store Gateway & Bucket UI share the same UI code for finding overlapping blocks. I have updated the title of the original issue to include other components


[3/3] Docs changes - Refactor Base GCP Hook

The proposed PR introduces various changes related to GoogleCloudBaseHook:

Move all decorators to top-level of module.
There were two ways to place decorations in the file:

as a static method on GoogleCloudBaseHook
as a static method on nested class _Decorators in class GoogleCloudBaseHook.

In my opinion, the applied level of nesting is unjustified.
This is also indicated in Google's code style guide: http://google.github.io/styleguide/pyguide.html#217-function-and-method-decorators

Create property scope to separate complex logic from the get_credentials method.
This allows us to test the code in isolation. Tests have been added.

Simplify logic of fallback_to_default_project_id.
The logic of the method has been unnecessarily complicated.  The helper method used was used deleted. There have been added tests to check the code's logic.

Some code fragment did not follow the line width rule.

Use @decoractor syntax.
The old syntax is not supported by autoapi.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@74b2233). Click here to learn what that means.
The diff coverage is 94.31%.

@@            Coverage Diff            @@
##             master      #68   +/-   ##
=========================================
  Coverage          ?   74.44%
=========================================
  Files             ?      450
  Lines             ?    28965
  Branches          ?        0
=========================================
  Hits              ?    21563
  Misses            ?     7402
  Partials          ?        0

Impacted Files
Coverage Δ

airflow/models/__init__.py
92.64% <ø> (ø)

airflow/contrib/hooks/gcp_vision_hook.py
82.85% <100%> (ø)

airflow/www/decorators.py
74.5% <100%> (ø)

airflow/contrib/hooks/gcp_bigtable_hook.py
93.22% <100%> (ø)

airflow/contrib/hooks/gcp_function_hook.py
73.07% <100%> (ø)

airflow/contrib/hooks/gcp_dataflow_hook.py
75.75% <100%> (ø)

airflow/contrib/hooks/gcp_spanner_hook.py
72.07% <100%> (ø)

airflow/www/security.py
92.78% <100%> (ø)

airflow/contrib/hooks/gcp_sql_hook.py
69.21% <100%> (ø)

airflow/contrib/hooks/gcp_compute_hook.py
78.65% <100%> (ø)

... and 1 more

Continue to review full report at Codecov.

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

I created series of PR on Apache:

[AIRFLOW-XXX][1/3] Syntax docs improvements - https://github.com/apache/airflow/pull/4789
[AIRFLOW-3968][2/3] Refactor base GCP hook -  https://github.com/apache/airflow/pull/4790
[AIRFLOW-3811][3/3] Add automatic generation of API Reference  - https://github.com/apache/airflow/pull/4788


Exclude granting dbo while system databases' creation

Description
[Describe what this change achieves - Guidelines below (please delete the guidelines after writing the PR description)]

What is the change? This is best described in terms of “Currently, Babelfish does X. With this change it now does Y.” Think of “What did it used to do?” and “What does it do now?”

Why was the change made? What drove our desire to put effort into the change?
How was the code changed should only appear for large commits. This can serve as a rough roadmap to what’s contained in the commit. It should be very high level; if it’s directly referencing code it’s probably too detailed. It’s also critical that this section of a commit message does not try to replace proper code documentation (ie, block comments or README files). Generally, this section should only appear if the commit itself is large enough that it’s helpful to provide a roadmap to someone looking at the commit.
The last descriptive piece is the “title” for the commit: the very first line of the commit message, which should typically be less than 80 characters. A good title is critical, because it’s the only thing that shows up in places like the Github commit listing. No one’s got time to read through full commit messages when trying to find a single commit out of dozens.

Issues Resolved
[List any issues this PR will resolve]
Test Scenarios Covered

Use case based -

Boundary conditions -

Arbitrary inputs -

Negative test cases -

Minor version upgrade tests -

Major version upgrade tests -

Performance tests -

Tooling impact -

Client tests -

Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>6
Details

9 of 12 (75.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.001%) to 73.705%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

contrib/babelfishpg_tsql/src/dbcmds.c
9
12
75.0%

Totals

Change from base Build<PHONE_NUMBER>2:
-0.001%

Covered Lines:
42836

Relevant Lines:
58118

💛  - Coveralls

Please update the CR description on why this change is needed.


Bundle Error while installing "msteams-ui-components-react" in my SPFX webpart.

I'm currently working on SPFX 1.7.1-plusbeta version and deploying SPFX webpart to Microsoft Teams as a tab. I've run npm i msteams-ui-components-react (current version and tried with older version also) and npm install typestyle to get Teams Theme specific context. However  I'm getting below errors on bundle command. Please help !
[15:16:46] Error - [webpack] 'dist':
./node_modules/msteams-ui-icons-core/fonts/TeamsAssets-Light.woff2
Module parse failed: C:\Teams\node_modules\msteams-ui-icons-core\fonts\TeamsAssets-Light.woff2 Unexpected character ' ' (1:4)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)
@ ./node_modules/msteams-ui-icons-core/lib/index.js 537:20-63
@ ./node_modules/msteams-ui-icons-react/lib/index.js
@ ./node_modules/msteams-ui-components-react/lib/dropdown/dropdown.js
@ ./node_modules/msteams-ui-components-react/lib/dropdown/index.js
@ ./node_modules/msteams-ui-components-react/lib/index.js
@ ./lib/webparts/polls/components/Main/Main.js
@ ./lib/webparts/polls/components/Main/index.js
@ ./lib/webparts/polls/PollsWebPart.js
./node_modules/msteams-ui-icons-core/fonts/TeamsAssets-Regular.woff2
Module parse failed: C:\Teams\node_modules\msteams-ui-icons-core\fonts\TeamsAssets-Regular.woff2 Unexpected character ' ' (1:4)
You may need an appropriate loader to handle this file type.

This didn't work for me; when I add this to webpack.config.js I get the error
ERROR in ./node_modules/msteams-ui-icons-core/lib/index.js
Module not found: Error: Can't resolve 'file-loader' in <project path>

Any ideas?

Add this loader to your webpack:
msteams-ui-components/gh-pages/webpack.common.js
Lines 20 to 23 in fb37dfd
{
test: /.(png|svg|jpg|gif|woff|woff2|eot|ttf|otf)$/,
use: 'file-loader',
}

Worked like a charm !

@rabwill , maybe a basic question. where exactly you add this line. I don't see any msteams-ui-components/gh-pages/webpack.common.js path. Can you give some hints.


dagster-libs 0.24.0

Hi! This is the friendly automated conda-forge-webservice.
I've started a version update as instructed in #91.
I'm currently searching for new versions and will update this PR shortly if I find one! Thank you for waiting!
Fixes #91

@conda-forge-admin please rerender


Warning about Alpine-based image vs latest Azure Linux based image

When using this Action, the following is printed to console output:

WARNING: Azure CLI 2.63.0 is the last version available on Alpine and will not receive updates. Consider migrating to the Azure Linux based image for Azure CLI. For more information: https://go.microsoft.com/fwlink/?linkid=2282203

The link contains the following:

Warning:
Azure CLI 2.63.0 (released in August 2024) is the last version supported on the Alpine docker image. Microsoft will not be providing additional updates or bug fixes for this image. Consider migrating to the Azure Linux based image for the Azure CLI, which is fully supported.

Will this Action be updated to use the new container image automatically as part of azure/CLI@v2? If yes, is there a timeline for this change? If no, what is the planned path forward?
Thank you in advance!

Hi @matthewbarreiro, we're currently discussing the Linux distribution for 2.64.0. We'll make an announcement once a decision is made.

Hi @matthewbarreiro, starting from version 2.64.0, we have decided to switch the base Linux distribution to Azure Linux due to some unresolved security issues on Alpine. The az commands will remain unaffected. To ensure a smooth migration to this update, kindly remove any Alpine-specific commands from your workflow. Thank you for your cooperation!

If you are not yet prepared to migrate to Azure Linux due to some specific issues, please let me now. You can temporarily pin the Azure CLI version to 2.63.0 until the issue is resolved.
- name: Azure CLI script
      uses: azure/cli@v2
      with:
        azcliversion: 2.63.0
        inlineScript: |
             <Your az commands here>

This broke our CI/CD pipeline since we where using the latest version (by default), in inlineScript we had jq and it's no longer included in the image.

This broke our CI/CD too. We now hardcode it to v2.63.
Process terminated. Couldn't find a valid ICU package installed on the system. Please install libicu (or icu-libs) using your package manager and try again. Alternatively you can set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.

See #165

Hi everyone, please try the temporary workarounds mentioned in this blog. We're now working to resolve the package missing issue in Azure CLI version 2.65.0.

We're pinning to 2.63.0 as well because the 2.64.0 image is missing other utilities like addgroup and adduser.
I tried manually installing Azure CLI into an Alpine image, which succeeds, however when we come to use az login in our Kube environment, the command fails to find our Managed Identity and says we should make sure the MSI is properly configured -- an error which we didn't have with the 2.63.0 image.
FROM alpine:3.20.3

RUN apk add --no-cache bash curl py3-pip \
  && apk add --no-cache --virtual=az-build gcc musl-dev python3-dev libffi-dev openssl-dev cargo make \
  && pip install --upgrade --break-system-packages pip \
  && pip install --break-system-packages azure-cli \
  && apk del az-build

The resulting error from az login is:
ERROR: Failed to connect to MSI. Please make sure MSI is configured correctly.
Get Token request returned http error: 403, reason: Forbidden

Nothing other than the image has changed. Our scripts remain the same.

@MoChilia

Hi everyone, please try the temporary workarounds mentioned in this blog. We're now working to resolve the package missing issue in Azure CLI version 2.65.0.

The blog article linked here isn't helpful at all, IMO. It appears focused on a GitHub Action? Meanwhile, I'm trying to get a Docker image with the Azure CLI in it, a long with some basic Linux binaries.
The article would be more useful if it included steps on how to properly build an Alpine-based image that includes Azure CLI that is properly configured (see my previous comment about that), especially since I'm seeing that error in the context of a running image, not a GitHub Action.

Hi @stefcameron, this is the GitHub action repo for Azure cli. Could you please open an issue in https://github.com/Azure/azure-cli/issues to bring your scenario to the team's attention?

@MoChilia Thanks for letting me know I was commenting in the wrong repo.
In the Azure CLI repo per se, I found https://github.com/Azure/azure-cli/issues/19591 which is basically the same steps as I was trying (and I believe the issue is also the CLI team's proposal for decoupling the CLI image from Alpine), and after some digging, I discovered that the MSI error I was experienced was a red herring as the real issue was I wasn't setting the active cloud prior to executing the az login command. Fixing that leads to success.

Hi everyone, the missing valid ICU package error has been resolved in Azure CLI version 2.66.0 (https://github.com/Azure/azure-cli/pull/29897). And jq is now included(https://github.com/Azure/azure-cli/pull/29867). You can now update your scripts to azcliversion: latest to include these fixes.


xmlsec version issue

Package version (if known): 1.0.0
Describe the bug
I get an errorlxml & xmlsec libxml2 library version mismatch when I use xmlsec==1.3.14 on ubuntu. Switching to xmlsec==1.3.13 resolves the issue. There is discussion here https://github.com/xmlsec/python-xmlsec/issues/316, but I'm not sure on the best resolution.

is doing pip install --no-binary=xmlsec --no-binary=lxml lxml xmlsec an option for you?
I do that in my Dockerfile.
I am not sure but switching back to a older version was not an option for me because i wanted to use python3.12 and i think the newest version was necessary for that

I like configuring the python dependencies in my pipfile, and the no binary option doesn't look easy to implement in an automated fashion https://github.com/pypa/pipenv/issues/5362 https://stackoverflow.com/questions/55730350/is-it-possible-to-specify-no-binary-all-in-the-pipfile.
So hopefully there is a better option?

i am sorry, i don't see another option at the moment. i had the hope that python xmlsec will release a version which works out of the box, but it looks like that's not going to happen any time soon

Tried pip install --no-binary=xmlsec --no-binary=lxml lxml xmlsec
But getting error:
STEP 5/14: RUN pip install --no-binary=xmlsec --no-binary=lxml lxml xmlsec
Collecting lxml
  Downloading lxml-5.2.2.tar.gz (3.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 25.2 MB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting xmlsec
  Downloading xmlsec-1.3.14.tar.gz (68 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 68.9/68.9 kB 41.2 MB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: still running...
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Building wheels for collected packages: lxml, xmlsec
  Building wheel for lxml (pyproject.toml): started
  Building wheel for lxml (pyproject.toml): still running...
  Building wheel for lxml (pyproject.toml): finished with status 'done'
  Created wheel for lxml: filename=lxml-5.2.2-cp39-cp39-linux_x86_64.whl size=6798686 sha256=b735c64a0b30a2453bbcf466d8a88a4931b66ab1a70083124622634abaf25b89
  Stored in directory: /root/.cache/pip/wheels/11/4b/af/f27a8f1fdd59c25b8ae674826f17f459743ac0a46934bbd3cd
  Building wheel for xmlsec (pyproject.toml): started
  Building wheel for xmlsec (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error

  × Building wheel for xmlsec (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [43 lines of output]
      WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
      Traceback (most recent call last):
        File "/tmp/pip-build-env-s3lgah33/overlay/lib/python3.9/site-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
          section = defn.get("tool", {})[tool_name]
      KeyError: 'setuptools_scm'
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-39
      creating build/lib.linux-x86_64-cpython-39/xmlsec
      copying src/xmlsec/__init__.pyi -> build/lib.linux-x86_64-cpython-39/xmlsec
      copying src/xmlsec/constants.pyi -> build/lib.linux-x86_64-cpython-39/xmlsec
      copying src/xmlsec/template.pyi -> build/lib.linux-x86_64-cpython-39/xmlsec
      copying src/xmlsec/tree.pyi -> build/lib.linux-x86_64-cpython-39/xmlsec
      copying src/xmlsec/py.typed -> build/lib.linux-x86_64-cpython-39/xmlsec
      running build_ext
      building 'xmlsec' extension
      creating build/temp.linux-x86_64-cpython-39
      creating build/temp.linux-x86_64-cpython-39/tmp
      creating build/temp.linux-x86_64-cpython-39/tmp/pip-install-4x5bqc8q
      creating build/temp.linux-x86_64-cpython-39/tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be
      creating build/temp.linux-x86_64-cpython-39/tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src
      gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1 -D__XMLSEC_FUNCTION__=__func__ -DXMLSEC_NO_SIZE_T -DXMLSEC_NO_MD5=1 -DXMLSEC_NO_SHA1=1 -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_GOST2012=1 -DXMLSEC_DL_LIBLTDL=1 -DMODULE_NAME=xmlsec -DMODULE_VERSION=1.3.14 -I/usr/include/xmlsec1 -I/usr/include/libxml2 -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml/includes -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml/includes/__pycache__ -I/usr/include/python3.9 -c /tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/constants.c -o build/temp.linux-x86_64-cpython-39/tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/constants.o -g -std=c99 -fPIC -fno-strict-aliasing -Wno-error=declaration-after-statement -Werror=implicit-function-declaration -Os
      gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1 -D__XMLSEC_FUNCTION__=__func__ -DXMLSEC_NO_SIZE_T -DXMLSEC_NO_MD5=1 -DXMLSEC_NO_SHA1=1 -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_GOST2012=1 -DXMLSEC_DL_LIBLTDL=1 -DMODULE_NAME=xmlsec -DMODULE_VERSION=1.3.14 -I/usr/include/xmlsec1 -I/usr/include/libxml2 -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml/includes -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml/includes/__pycache__ -I/usr/include/python3.9 -c /tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/ds.c -o build/temp.linux-x86_64-cpython-39/tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/ds.o -g -std=c99 -fPIC -fno-strict-aliasing -Wno-error=declaration-after-statement -Werror=implicit-function-declaration -Os
      gcc -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1 -D__XMLSEC_FUNCTION__=__func__ -DXMLSEC_NO_SIZE_T -DXMLSEC_NO_MD5=1 -DXMLSEC_NO_SHA1=1 -DXMLSEC_NO_GOST=1 -DXMLSEC_NO_GOST2012=1 -DXMLSEC_DL_LIBLTDL=1 -DMODULE_NAME=xmlsec -DMODULE_VERSION=1.3.14 -I/usr/include/xmlsec1 -I/usr/include/libxml2 -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml/includes -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml -I/tmp/pip-build-env-s3lgah33/overlay/lib64/python3.9/site-packages/lxml/includes/__pycache__ -I/usr/include/python3.9 -c /tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/enc.c -o build/temp.linux-x86_64-cpython-39/tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/enc.o -g -std=c99 -fPIC -fno-strict-aliasing -Wno-error=declaration-after-statement -Werror=implicit-function-declaration -Os
      /tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/enc.c: In function ‘PyXmlSec_ClearReplacedNodes’:
      /tmp/pip-install-4x5bqc8q/xmlsec_d06496842dda4b2a94a2eea3f81552be/src/enc.c:207:14: warning: assignment to ‘struct LxmlElement **’ from incompatible pointer type ‘PyXmlSec_LxmlElementPtr’ {aka ‘struct LxmlElement *’} [-Wincompatible-pointer-types]
        207 |         elem = PyXmlSec_elementFactory(doc, n);
            |

OS is alma9 linux and has following installed:
RUN dnf groupinstall -y "Development Tools" && \
    dnf install -y \
        pip \
        python3-devel \
        cairo-devel \
        dejavu-sans-fonts \
        libffi-devel \
        libpq-devel \
        libxml2-devel \
        libxslt-devel \
        ImageMagick \
        openssl-devel \
        bzip2-devel \
        xz-devel \
        sqlite-devel \
        xmlsec1-devel

i tried to build the almalinux docker image locally but it failed with the same error. what i observed:

xmlsec1 is missing
the installed version of xmlsec1-devel is 1.2.29
i have in my alpine based docker image xmlsec 1.3.4 installed.

since the error  error: ‘xmlSecKeyDataFormatEngine’ undeclared (first use in this function) says something about missing function declaration i think that the first step should be to checkout how to update to the newest xmlsec version.
i have no idea how to install the newest version of xmlsec and a quick search didn't gave me any insights how to do it.
sorry for not helping you more with it.

Thank you for confirming.
Somehow pining the xmlsec==1.3.14 is also not working for me. Getting same sort of error.

@panta-123 it is 13 not 14 that you need to pin: xmlsec==1.3.13
@tmorrell thanks for already documenting the issue - pinning xmlsec to 1.3.13 worked for us as well.

Hi all, is there a better alternative than pinning xmlsec to 1.3.13? The build fails at us due to the same reasons that have been reported already. Many thanks in advance.

@m6121 i do a RUN uv pip install --no-binary=xmlsec --no-binary=lxml lxml xmlsec in my Dockerfile. the uv is optional. it works the same with pip
the only downside is, that it takes longer to create the docker image. i created a base-image for my build step where i put that in.

Thanks a lot. This failed at my current base image as the xmlsec1-devel package is only 1.2.29 which is too old for the python package requiring libxmlsec1 >= 1.2.33. So I'll have to upgrade the base library first.

@m6121 you could have a look to our base images:
https://github.com/tu-graz-library/docker-invenio-base

Thank you very much. That helps a lot!


gall.dcinside.com broken pictures

https://gall.dcinside.com/mgallery/board/view/?id=su&no=451963&exception_mode=recommend&page=1
When you visit the site the yellow picture with "destiny child" is not loading. Tested on AdGuard for Windows latest nightly and final Extension.
https://imgur.com/2ef9j30
With document exclusion it is not working in Extension while it works on Windows.
For Windows I have to add this rule to make the picture appear:
@@||gall.dcinside.com^$urlblock,important,content,jsinject,elemhide
Which is nearly the same as document exclusion. Please check.

@@||gall.dcinside.com^$urlblock,important,content,jsinject,elemhide
This rule invalidates ad blocking. The image is not loaded.
As far as I know, that site does not fully support https.
This is not a problem with AdGuard. http should be used.

Just re-checked on my side, it seems that the website does not work well with https indeed, half of the images aren't loaded regardless of whether AG is enabled or not.

just figured out that in stealth mode with "Hide your Referrer from third-parties" option enabled and nonempty custom referer server responses with 403 Access Denied for the picture requests

just checked with corelibs build and figured out that in stealth mode with "Hide your Referrer from third-parties" option enabled and nonempty custom referer server responses with 403 Access Denied for the picture requests

in other cases it looks ok, but i don't see the yellow picture (https://imgur.com/2ef9j30) whether AG is enabled or nor


Allow button presses while keyboard is up on Android

Details
Previously for pages in the sign in flow, users weren't able to tap the buttons on the screen while the keyboard was up. I added keyboardShouldPersistTaps, which should now allow this and reduce the number of taps required to login.
Fixed Issues
Fixes https://github.com/Expensify/Expensify.cash/issues/2546
Tests

Navigated to the sign in page on Android.
Typed in my login information.
Tapped the button, verified I was able to tap it once to advance to the next screen.
Verify above for all subsequent screens in the sign-in flow.

QA Steps

Navigated to the sign in page on Android.
Typed in my login information.
Tapped the button, verified I was able to tap it once to advance to the next screen.

Tested On

[ ] Web
[ ] Mobile Web
[ ] Desktop
[ ] iOS
[x] Android

Screenshots

Web

Mobile Web

Desktop

iOS

Android
This only shows it for the first screen in the flow, but I tested it for all of the other screens in the flow as well (Set Password Page, Password Form). I didn't include them because I didn't want my password in the screen recording.
https://user-images.githubusercontent.com/31285285/116174702-86ba4800-a741-11eb-8c94-2f4304f9fe23.mp4

🚀 Deployed to staging in version: 1.0.32-3🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


added a type constraint on main; did some formatting for readability

This is the same code, but a bit cleaner and safer.

Trying to fully grok this refactoring... So we're declaring the main function to be (to utilize?) an IO monad, and that main is going to return (), or atom, which is Haskell's version of null.
I'm a bit confused by the dropping of the do notation. How would we declare additional scotty endpoints after this refactoring? Store the result of scotty 6969 in a variable, and call additional actions on that?

Main is (always) an IO monad which doesn't produce any result. The confusing thing about monads is that they notionally have internal side-effects, but those side effects are "wrapped up" so that all that can escape is a return value. This "protects" the internal state from messing with external computations.
I haven't looked at Scotty yet, so I'm not sure how it handles multiple endpoints. Just a sec... Yeah, the reason your tutorial used do notation there is because the arguments aren't actually run in the IO monad, but in a special ScottyM monad: the inner "do" in your code is actually of a different type, and type inference is figuring that out. Sigh. Let me restyle things a bit and push again. Note that the eval operator '$' is read from right to left, so you'd need to actually give the results of the last expression in a monad label and so forth, eventually ending up with passing the whole thing to "scotty 6969" for execution.

Do not merge this. It is stale.

OK, I pushed something better.


Option to configure the darkness of the toast

Pretty much all in the title.
Sometimes I like to cook my toast a little longer.

Great suggestion!


No remotes match the current setting. But logs show it found remote

I can't use the extension because it does not show anything on the sidebar. It keeps saying that no remotes match the current setting, but when I check the logs it shows that it found the Git repository.

Here are the logs again:
2023-03-17 10:20:52.312 [info] Looking for git repository
2023-03-17 10:20:52.312 [info] Found 0 repositories during activation
2023-03-17 10:20:52.312 [info] Git repository found, initializing review manager and pr tree view.
2023-03-17 10:20:52.314 [info] Registering git provider
2023-03-17 10:20:52.314 [info] Review> Validate state in progress
2023-03-17 10:20:52.314 [info] Review> Validating state...
2023-03-17 10:20:52.333 [info] Found GitHub remote for folder /Users/rafaelgomes/portfolio/sites
2023-03-17 10:20:52.384 [info] Repo state for file:///Users/rafaelgomes/portfolio/sites changed.
2023-03-17 10:20:52.384 [info] Repo file:///Users/rafaelgomes/portfolio/sites has already been setup.
2023-03-17 10:20:52.385 [info] Review> no matching pull request metadata found for current branch main
2023-03-17 10:20:52.385 [info] Review> No matching pull request metadata found on GitHub for current branch main

Extension version: 0.60.0
VSCode Version: 1.76
OS: macOS Monterrey 12.5.1

Can you share the output of git remote -v?

I am actually experiencing the same issue and not able to figure out why. It looks like the remote is found but still no luck.

Extension version: v0.62.0
VSCode Version: Version: 1.77.3
OS: MacOS Ventura 13.2.1  / Darwin arm64 22.3.0
The remotes are as the default is configured with origin and opstream.

The actual remote is from origin (also default)

The logs in output:

2023-05-03 14:40:04.697 [info] Looking for git repository
2023-05-03 14:40:04.697 [info] Found 0 repositories during activation
2023-05-03 14:40:04.697 [info] Git repository found, initializing review manager and pr tree view.
2023-05-03 14:40:04.699 [info] Registering git provider
2023-05-03 14:40:04.699 [info] Review> Validate state in progress
2023-05-03 14:40:04.699 [info] Review> Validating state...
2023-05-03 14:40:04.708 [info] Found GitHub remote for folder /Users/ricardocino/Dev/Private/vscode-pr-test
2023-05-03 14:40:04.773 [info] Repo state for file:///Users/ricardocino/Dev/Private/vscode-pr-test changed.
2023-05-03 14:40:04.773 [info] Repo file:///Users/ricardocino/Dev/Private/vscode-pr-test has already been setup.
2023-05-03 14:40:04.773 [info] Review> no matching pull request metadata found for current branch main
2023-05-03 14:40:04.773 [info] Review> No matching pull request metadata found on GitHub for current branch main
2023-05-03 14:40:14.568 [info] Review> Validate state in progress
2023-05-03 14:40:14.568 [info] Review> Validating state...
2023-05-03 14:40:14.578 [info] Found GitHub remote for folder /Users/ricardocino/Dev/Private/vscode-pr-test
2023-05-03 14:40:14.595 [info] Review> no matching pull request metadata found for current branch update-readme
2023-05-03 14:40:14.595 [info] Review> No matching pull request metadata found on GitHub for current branch update-readme
2023-05-03 14:40:26.300 [info] Review> Validate state in progress
2023-05-03 14:40:26.300 [info] Review> Validating state...
2023-05-03 14:40:26.337 [info] Found GitHub remote for folder /Users/ricardocino/Dev/Private/vscode-pr-test
2023-05-03 14:40:26.360 [info] Review> no matching pull request metadata found for current branch update-readme
2023-05-03 14:40:26.360 [info] Review> No matching pull request metadata found on GitHub for current branch update-readme
2023-05-03 14:40:29.794 [info] Review> Validate state in progress
2023-05-03 14:40:29.794 [info] Review> Validating state...
2023-05-03 14:40:29.806 [info] Found GitHub remote for folder /Users/ricardocino/Dev/Private/vscode-pr-test
2023-05-03 14:40:29.825 [info] Review> no matching pull request metadata found for current branch update-readme
2023-05-03 14:40:29.825 [info] Review> No matching pull request metadata found on GitHub for current branch update-readme

Not sure what I can do to make it work at this point, if you need more information i'm happy to provide.

Thanks for the additional info @cino! It does look like it's finding your remotes correctly. Can you share the output from the developer console (command Developer: Toggle Developer Tools and then click on the "Console" tab in the dev tools)?

@alexr00 Sure, when I enable the developer console and reload the VSCode window via the Reload Window command this is all I get in the developer console:

Also no additional entries when trying to refresh the pull request / issue list

@alexr00 Yes, the account that is logged in is connected to an enterprise organisation but not on a self-hosted environment, all on github.com. I've tested this both with and without authorising to the enterprise (saml) organisation.
The repository I'm using as a test is not in the enterprise though.

@cino just to confirm then: you use the same GitHub account to access both your organization repos and your private repos?

@alexr00 That's correct!

Any news on this?

hey i found the issue if you created your repo differently the remote name isn't origin its the repo name .  add the repo name to remotes


Add handler for HikariDataSource

We have to generate a handler for each DataSource bean, but this currently only handles Hikari. Other DataSources will be done in separate PRs.
On shutdown, we first suspend the pool, then request the closure of all connections and wait 30s for them all to close.
When we restore, we simply resume the pool.
We cannot close the pool as this invalidates it, and it cannot be re-opened.
This also requires the configuration:
datasources.default.allow-pool-suspension: true

To allow pool suspension

@timyates can you create an issue in starter assign it to yourself and to project 3.8.0
to add this configuration
datasources.default.allow-pool-suspension: true when you select the CRaC feature and hikari.


chore(egen) : added note to deprecated notebook and performed linter test

This PR includes

Adds a note to the deprecated notebook
performs linter test.

REQUIRED: Fill out the below checklists or remove if irrelevant

If you are opening a PR for Official Notebooks under the notebooks/official folder, follow this mandatory checklist:

[ ] Use the notebook template as a starting point.
[ ] Follow the style and grammar rules outlined in the above notebook template.
[ ] Verify the notebook runs successfully in Colab since the automated tests cannot guarantee this even when it passes.
[x] Passes all the required automated checks. You can locally test for formatting and linting with these instructions.
[ ] You have consulted with a tech writer to see if tech writer review is necessary. If so, the notebook has been reviewed by a tech writer, and they have approved it.
[ ] This notebook has been added to the CODEOWNERS file under the Official Notebooks section, pointing to the author or the author's team.
[ ] The Jupyter notebook cleans up any artifacts it has created (datasets, ML models, endpoints, etc) so as not to eat up unnecessary resources.

/gcbrun

/gcbrun

/gcbrun


Add Windows 10 support

First off, thanks for creating this library! Super useful.
When I upgraded my Windows 8.1 app to a Windows 10 universal app I got the following error when trying to add your NuGet package:
Not compatible with UAP,Version=v10.0 (win10-x64-aot)

Hey, glad you're finding it useful :)
I'll take a look at this in a bit.

It seems the code itself is fine (i.e. it doesn't reference anything that can't be used in a Universal App), though the way I have the NuGet package set up is wrong. I'll fix this when I can, though I'm a bit busy right now so it might take a week or so. Sorry about that :(
In the meantime, a workaround would be to clone the project, building it, then adding a reference to the .dll directly - that should (I think) work. It does mean stepping outside the NuGet loop, though.

Yea I figured I was simply a packaging issue but I wasn't familiar enough with NuGet to know where to start. No rush, I might try your workaround just to see if it works in general. Thanks!

Alright, I've uploaded version 2.2 to NuGet, which should be packaged properly now (and also contains additional language support - see #9). Let me know if it works for you :)

@jcheng31 Works perfectly. Thanks for the quick turnaround!

Hey, so it looks like this works when building a Debug package but not when building a Release package in Visual Studio. I'm getting some compiler warnings:
warning : Assembly 'Microsoft.Threading.Tasks.Extensions' requests the address of the virtual method 'Stream.BeginRead(byte[], int, int, AsyncCallback, object)' which is not available in the targeted .NET platform. Please ask the author of 'Microsoft.Threading.Tasks.Extensions' to provide an implementation that can be used in the currently targeted .NET platform.
warning : Assembly 'Microsoft.Threading.Tasks.Extensions' requests the address of the virtual method 'Stream.EndRead(IAsyncResult)' ...
warning : Assembly 'Microsoft.Threading.Tasks.Extensions' requests the address of the virtual method 'Stream.BeginWrite(byte[], int, int, AsyncCallback, object)' ...
warning : Assembly 'Microsoft.Threading.Tasks.Extensions' requests the address of the virtual method 'Stream.EndWrite(IAsyncResult)' ...

Since you didn't write that assembly, I'm assuming it's just not supported for .NET native compilation for some reason. This is causing ForecastPCL not to be included in the final store packages that VS creates :(
My assumption here is that there's an extension method you're using that's causing this. I may try to fix this one myself and contribute for once but I wanted to share here in case something came to mind for you when you read these warnings :)

Hmm, that's unfortunate :| I'll try take a look soon, but I'm definitely open to contributions!
I think that library is used as part of the async/await package I'm using for backwards compatibility - Microsoft.Bcl.Async - or one of its dependencies.

Come to think of it, that library might not be necessary any longer. It only adds support for async/await in .NET 4, WP 7.5, and Silverlight 4, but the PCL doesn't (off the top of my head) even target those now.

Ok yea I'll keep trying to get it working. When I tried to build my app directly against your project I was seeing entirely different issues. Are the references (Microsoft.Bcl* etc.) supposed to be NuGet packages or something else? In VS2015 they look like regular references (different icon next to them).

Ok yea I'll keep trying to get it working. When I tried to build my app directly against your project I was seeing entirely different issues. Are the references (Microsoft.Bcl* etc.) supposed to be NuGet packages or something else? In VS2015 they look like regular references (different icon next to them).

Yeah, they're NuGet packages.

So I've been trying to build my project by directly referencing your code and I'm hitting this error:
2>C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\x86\ilc\IlcInternals.targets(791,7): warning : Method 'HttpClientHandler.set_AutomaticDecompression(DecompressionMethods)' was not included in compilation, but was referenced in method 'ForecastApi.GetCompressionHandler()'. There may have been a missing assembly.

Haven't figured it out yet but I thought I'd add the info here.

Closing this issue as I've gotten closer to the root cause. Will open a more specific one.


Layout when using TextWriter overloads

Tried going to the stream version of Compile() and the following does not work.
Should it work or is this not supported?
        [Fact]
        public void CanLoadAViewWithALayout()
        {
            //When a viewengine renders that view
            var handleBars = Handlebars.Create();
            handleBars.RegisterTemplate("somelayout", "layout start\r\n{ { { body} } }\r\nlayout end");
            var templateStream = new StringReader("{{!< somelayout}}This is the body");

            var renderView = handleBars.Compile(templateStream);
            var sb = new StringBuilder();
            var sw = new StringWriter(sb);
            renderView(sw, null);
            var output = sb.ToString();

            //Then the correct output should be rendered
            Assert.Equal("layout start\r\nThis is the body\r\nlayout end", output);
        }

Unfortunately layout is only supported in CompileView scenario. For reference please see CanLoadAViewWithALayout. Unfortunately Stream API is not supported in CompileView.
It is possible to add support by extending ViewEngineFileSystem base class with something like this:
public virtual StringReader GetFileStream(string filename)
{
    return new StringReader(GetFileContent(filename));
}

and update usage at HandlebarsCompiler.CompileView to use GetFileStream instead of GetFileContent.
Other implementation options could require breaking changes.
If this functionality is essential for you - you're welcome to create PR. If not I'd address this in next iteration.

Ok. Thanks for the info.
If i get the time i try to make a PR for it.

#8 PR Submitted

Perhaps the PR looks strange but what i needed was a Compile that returned a Action<TextWriter,object> and worked with templates. To read templates from a reader was never a concern.


Fix a venue of FeaturePropagation

Rossi's FeaturePropagation paper was submitted to ICLR'21 but was rejected. So how about updating with arXiv? This paper has not yet been accepted by other conferences.

Oh you are right. Thanks for catching!


Baseline implementation details

Hi Mathias,
First of all, thank you for your excellent work!
As described in DSEC dataset paper, you use voxel grid events representation to replace the event queues, I want to know the exact number of voxel grid bins and whether the DDES embedding module (Continuous fully-connected layer) are used.
Looking forward to your reply.

Hi @GEN418, the experimental results reported in the paper is with 15 bins voxel grid (trilinear interpolation) + PDS network.
Does that answer your question?

Yes, thank you very much.


Use an optional parameter to clean up setAlarmMode() method.

As promised, a little clean up by making the setAlarmMode take an optional parameter.

Awesome!  Thank you.


Gradient tape vs. adjoint=True

Are there any guidelines, when to use the wp.tape or the adjoint=True argument to compute gradients?
There are two examples of a torch.autograd.Function in this repository using different approches.
https://github.com/NVIDIA/warp/blob/79a56a9c2754bbec1418e490efafd43091056856/examples/example_sim_fk_grad_torch.py#L29
https://github.com/NVIDIA/warp/blob/79a56a9c2754bbec1418e490efafd43091056856/warp/tests/test_torch.py#L416
I tried to expand the test_torch.py with multiple inputs, but I wasn't able to get it to work (reliably!). Usually I get Warp CUDA error 1: invalid argument (/buildAgent/work/a9ae500d09a78409/warp/native/warp.cu:1891) but sometimes the program segfaults instead.
Is there anything I would need to be aware of when using the adjoint=True argument?
Today my college experimented with the wp.tape approach, and we converged on the code pasted below.
We had to add the ctx.x0.grad.zero_() line to make sure that multiple calls to pytorch's backward() are working properly (to please gradcheck())
But even more importantly we had to add .clone(), requires_grad=True) to ensure that warp does not write into the pytroch's gradient buffers directly, since that results in gradients to be 2x of the true gradient if the variable is a leaf in the computation graph!
-> We haven't tested it, but that would suggest there is a bug in the the example_sim_fk_grad_torch example, no?
import numpy as np
import torch
from torch.autograd import gradcheck
import warp as wp

wp.init()
device = "cuda"
torch_device = wp.device_to_torch(device)
wp_device = wp.device_from_torch(torch_device)

@wp.kernel()
def op_kernel(
    x0: wp.array(dtype=wp.float32),
    x1: wp.array(dtype=wp.float32),
    x2: wp.array(dtype=wp.float32),
    y: wp.array(dtype=wp.float32),
):
    i = wp.tid()
    y[i] = x0[i] ** 2.0 * x1[i] ** 2.0 * x2[i] ** 2.0

class WPGradTape(torch.autograd.Function):
    @staticmethod
    def forward(
        ctx,
        x0,
        x1,
        x2,
    ):
        wp.synchronize_device()
        ctx.tape = wp.Tape()
        ctx.x0 = wp.from_torch(x0.clone(), requires_grad=True)
        ctx.x1 = wp.from_torch(x1.clone(), requires_grad=True)
        ctx.x2 = wp.from_torch(x2.clone(), requires_grad=True)
        ctx.y = wp.empty(x1.shape[0], dtype=wp.float32, device=wp_device)
        with ctx.tape:
            wp.launch(
                kernel=op_kernel,
                dim=[len(x1)],
                inputs=[
                    ctx.x0,
                    ctx.x1,
                    ctx.x2,
                ],
                outputs=[ctx.y],
                adjoint=False,
                device=wp_device,
            )
        wp.synchronize_device()
        return wp.to_torch(ctx.y)

    @staticmethod
    def backward(ctx, adj_y):
        wp.synchronize_device()
        ctx.x0.grad.zero_()
        ctx.x1.grad.zero_()
        ctx.x2.grad.zero_()
        ctx.y.grad = wp.from_torch(adj_y).contiguous()
        ctx.tape.backward()
        wp.synchronize_device()
        return (
            wp.to_torch(ctx.tape.gradients[ctx.x0]),
            wp.to_torch(ctx.tape.gradients[ctx.x1]),
            wp.to_torch(ctx.tape.gradients[ctx.x2]),
        )

torch.manual_seed(42)
n = 3
# input data
x0_base = torch.rand(n, dtype=torch.float32, device=torch_device, requires_grad=True)
x1_base = torch.rand(n, dtype=torch.float32, device=torch_device, requires_grad=True)
x2_base = torch.rand(n, dtype=torch.float32, device=torch_device, requires_grad=True)
x0 = x0_base * 1.0
x1 = x1_base * 1.0
x2 = x2_base * 1.0

def fun(x0, x1, x2):
    return x0**2 * x1**2 * x2**2

gradcheck(
    WPGradTape.apply,
    # fun,
    (
        x0_base,
        x1_base,
        x2_base,
    ),
    atol=1e-1,
    rtol=1e-1,
)

Hi @johannespitz, in general you can use the adjoint=True flag to manually invoke the backward version of a kernel. This is what the wp.Tape object does, but it also takes care of a few other complications like tracking launches, zeroing gradients, etc.
When you run a backward pass it does accumulate gradients (always adds to existing arrays), this is similar to PyTorch, but it means that indeed you need to make sure they are zero'd somewhere between optimization steps.
I don't think you should need to call wp.synchronize() explicitly. @nvlukasz can you confirm?

Thank's for the reply @mmacklin!
And I would be very interested to hear if/where we really need to call wp.synchronize() @nvlukasz.
Regarding the accumulation of gradients. When we use wp.from_torch() directly, as it is used in https://github.com/NVIDIA/warp/blob/79a56a9c2754bbec1418e490efafd43091056856/examples/example_sim_fk_grad_torch.py#L37
instead of creating a new pytorch tensor with .clone() the gradient of leaf nodes in the computation graph will be 2x the true gradient, even when we clear all gradients before the call.
That is because torch expects torch.autograd.Function's to return the gradient and not write it directly into the buffer. Therefore, torch then adds the returned gradient to the gradient that warp already wrote into the buffer (for leafs in the computation graph). Note for intermediate nodes it works only because usually (if retain_graph=False) the gradient buffers of those tensors are not used at all.

CUDA synchronization can be a little tricky, especially when launching work using multiple frameworks that use different scheduling mechanisms under the hood.
Short answer:  If you're not explicitly creating and using custom CUDA streams in PyTorch or Warp, and both are targeting the same device, then synchronization is not necessary.
Long answer:  By default, PyTorch uses the legacy default stream on each device.  This stream is synchronous with respect to other blocking streams on the device, so no explicit synchonization is needed.  Warp, by default, uses a blocking stream on each device, so Warp operations will automatically synchronize with PyTorch operations on the same device.
The picture changes if you start using custom streams in PyTorch.  Those streams will not automatically synchronize with Warp streams, so manual synchronization will be required.  This can be done using wp.synchronize(), wp.synchronize_device(), or wp.synchronize_stream().  These functions synchronize the host with outstanding GPU work, so launching new work will be done after prior work completes.  We also support event-based device-side synchronization, which is generally faster because it doesn't sync the host and only ensures that the operations are synchronized on the device.  This includes wp.wait_stream() and wp.wait_event(), as well as interop utilities like wp.stream_from_torch() and wp.stream_to_torch().
Note that when capturing CUDA graphs using PyTorch, a non-default stream is used, so synchronization becomes important.
Things can get a little complicated with multi-stream usage and graph capture, so we're working on extended documentation in this area!  But in your simple example, the explicit synchronization shouldn't be necessary.

Thank you for the detailed answer regarding the synchronization! @nvlukasz
Though, can either of you comment on the accumulation of the gradients again. @mmacklin
Am I missing something, or is the example code incorrect at the moment?
(Note: Optimizations with the 2x the gradient will likely work just fine, but if someone wants to extend the code they might run into problems.)


Add time duration in the submitter

The user should be able to set a duration argument that would stop submitter sending any more requests.

Could you help me to understand how this is different from https://github.com/fotiskoun/CCF/issues/3?

https://github.com/fotiskoun/CCF/issues/3 was created for libcurl following our discussion on how to stop the submitter, since libcurl submits all pipelined requests at once and I didn't have any control on that. I think https://github.com/fotiskoun/CCF/issues/3 can be closed now and keep only this one open if you agree.

Sounds good to me


[FEATURE] Export BrowserSentryClientOptions from micro-sentry library

🚀 Feature request
Is your feature request related to a problem?
At the moment you can use only MicroSentryErrorHandler class for ErrorHandler implementation without any additional preparations. And it makes sense if your app uses only 1 ErrorHandler which is good and by Angular design. I faced with situation when the App uses multiple ErrorHandler in conjunction with kind of Visitor pattern. So i could not just use your MicroSentryErrorHandler and i had to use MicroSentryService directly. But then i had to declare MICRO_SENTRY_CONFIG token which has MicroSentryModuleOptions type that you don't export from lib. Of course i could use any type but i wanted more type-safety feature.
Describe the solution you'd like
Export BrowserSentryClientOptions type from lib for more flexibility purposes
Additional context
Who faced with such issue you can use workaround:
import { MicroSentryService } from '@micro-sentry/angular';

type MicroSentryModuleOptionsParams = ConstructorParameters<typeof MicroSentryService>;
type FirstElemFromTuple<T extends unknown[]> = T extends [infer R, unknown] ? R : never;
export type MicroSentryModuleOptions = FirstElemFromTuple<MicroSentryModuleOptionsParams>;

Then you will get BrowserSentryClientOptions type

Hi there,
Great point!
As a slightly easier workaround, you can import the type directly from the @micro-sentry/browser package:
import { BrowserSentryClientOptions } from '@micro-sentry/browser';

But this could possibly have some linting issues, depending on your setup (like no-extraneous-dependencies).
So your idea to reexporting sounds good.
And it would be more user-friendly too.
Thanks for this suggestion!

After further investigation into this issue, we consider importing directly from @micro-sentry/browser as a suitable solution.
Reexporting would require not only the options type but also the types for its properties and more, making it a bit complex.
import { BrowserSentryClientOptions } from '@micro-sentry/browser';

Looking ahead, we're thinking about moving the dependency on @micro-sentry/browser to peer dependencies, making the current workaround a future-proof approach.
I'm closing this issue for now, but feel free to reopen if you have any other questions or concerns!


[feature] Allow different icon/text depending on exit code

Prerequisites

[x] I have read and understand the CONTRIBUTING guide
[x] I looked for duplicate issues before submitting this one

Description
[Description of the bug or feature]
Here is a block for adding an exit code to my custom prompt

The problem is that if an error occurred you can only change the foreground/background color of the segment, not the icon. What I want to happen is if no error occured it shows a green check mark, and otherwise it shows a red "x"
I can only do this so far:

This would also be useful for the battery segment, to display different battery icons depending on the battery level.
Environment

Oh my Posh version: 3.75.0-beta
Theme: Custom theme based of of "slim"
Operating System: Windows 10 20H2
Shell: Powershell Core 7.0
Terminal: Windows Terminal

Expected behavior: [What you expected to happen]
Option to customize output text based on exit code
Actual behavior: [What actually happened]
No option to do so (at least, I can't find any documentation to do so)

Makes sense to distinct between success and failure. As for battery, maybe. Although that introduces a lot of complexity for what might be a limited use case.

Makes sense to distinct between success and failure. As for battery, maybe. Although that introduces a lot of complexity for what might be a limited use case.


[New] CLN update script

Part of the cln.install.sh script already, needs testing and integration to the UPDATE menu.

"Forward Ever - Backward Never"
https://www.youtube.com/watch?v=HWPJ8Gvh2C4

Runs thru wuth same version  .. to be final tested after release as soon as a new c-lightnig version is available.


Minor enhancements

Add missing str implementations to some classes to improve
readability of logs/interactive shell output.
Add the commit hash (if available) to the version recorded in run.log.

Comment addressed.


Volume Key Handling

Volume Key Handling

This build crashes in the current Production version of Xcode (Version 7.3.1) when selecting a station. "fatal error: unexpectedly found nil while unwrapping an Optional value". Master can only accept builds with no errors. Thank you.