Tsp report

A draft example of a report using quarto + cornflow structure. I've edited (probably incorrectly) de requirements.txt of DAGs.
This PR should help standardize the way reports are stored and handled in cornflow.

So cornflow-dags and cornflow-server tests are passing. We still have an issue with the integration tests for cornflow-client, but this issue is a known one. Will try to improve it so that test pass at once and we do not have to manually rerun them for them to pass

Coverage report is now fixed. It seems that is still far from what the minimum coverage should be. I will keep reviewing it just in case we can improve it


fix(native-filters): incorrect queriesData state

SUMMARY
The migration of native filters from superset-ui to main repo in #12154 introduced an error when implementing support for multi-query results. Also removing dependency on now deprecated @superset-ui/plugin-filter-antd package (now in main superset repo).
TEST PLAN
Local testing
ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

Codecov Report

Merging #12409 (2dcc65c) into master (4cf3f99) will decrease coverage by 3.54%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #12409      +/-   ##
==========================================
- Coverage   66.79%   63.25%   -3.55%
==========================================
  Files        1014      485     -529
  Lines       49524    29897   -19627
  Branches     5077        0    -5077
==========================================
- Hits        33079    18910   -14169
+ Misses      16314    10987    -5327
+ Partials      131        0     -131

Flag
Coverage Δ

cypress
?

javascript
?

python
63.25% <ø> (-0.82%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

superset/db_engines/hive.py
0.00% <0.00%> (-85.72%)
:arrow_down:

superset/sql_validators/postgres.py
50.00% <0.00%> (-50.00%)
:arrow_down:

superset/db_engine_specs/hive.py
54.61% <0.00%> (-29.24%)
:arrow_down:

superset/db_engine_specs/mysql.py
79.59% <0.00%> (-12.25%)
:arrow_down:

superset/db_engine_specs/sqlite.py
65.62% <0.00%> (-9.38%)
:arrow_down:

superset/databases/commands/create.py
83.67% <0.00%> (-8.17%)
:arrow_down:

superset/databases/commands/update.py
85.71% <0.00%> (-8.17%)
:arrow_down:

superset/connectors/sqla/models.py
84.31% <0.00%> (-6.28%)
:arrow_down:

superset/databases/commands/test_connection.py
84.78% <0.00%> (-4.35%)
:arrow_down:

superset/utils/celery.py
96.42% <0.00%> (-3.58%)
:arrow_down:

... and 539 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 4cf3f99...2dcc65c. Read the comment docs.

Codecov Report

Merging #12409 (2dcc65c) into master (4cf3f99) will decrease coverage by 3.54%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #12409      +/-   ##
==========================================
- Coverage   66.79%   63.25%   -3.55%
==========================================
  Files        1014      485     -529
  Lines       49524    29897   -19627
  Branches     5077        0    -5077
==========================================
- Hits        33079    18910   -14169
+ Misses      16314    10987    -5327
+ Partials      131        0     -131

Flag
Coverage Δ

cypress
?

javascript
?

python
63.25% <ø> (-0.82%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

superset/db_engines/hive.py
0.00% <0.00%> (-85.72%)
:arrow_down:

superset/sql_validators/postgres.py
50.00% <0.00%> (-50.00%)
:arrow_down:

superset/db_engine_specs/hive.py
54.61% <0.00%> (-29.24%)
:arrow_down:

superset/db_engine_specs/mysql.py
79.59% <0.00%> (-12.25%)
:arrow_down:

superset/db_engine_specs/sqlite.py
65.62% <0.00%> (-9.38%)
:arrow_down:

superset/databases/commands/create.py
83.67% <0.00%> (-8.17%)
:arrow_down:

superset/databases/commands/update.py
85.71% <0.00%> (-8.17%)
:arrow_down:

superset/connectors/sqla/models.py
84.31% <0.00%> (-6.28%)
:arrow_down:

superset/databases/commands/test_connection.py
84.78% <0.00%> (-4.35%)
:arrow_down:

superset/utils/celery.py
96.42% <0.00%> (-3.58%)
:arrow_down:

... and 539 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 4cf3f99...2dcc65c. Read the comment docs.


PLT-5100 add getUsersStats

Please make sure you've read the pull request section of our code contribution guidelines.
When filling in a section please remove the help text and the above text.
Summary
Adds getUsersStats needed for mattermost/platform#6614
Ticket Link
JIRA Ticket: https://mattermost.atlassian.net/browse/PLT-5100
Github Issue: #6521
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] Added or updated unit tests (required for all new features)

Test Information
This PR was tested on: [Device name(s), OS version(s)]

thanks @jsfeb26
Please do NOT merge before https://github.com/mattermost/mattermost-redux/pull/189

@jsfeb26 just checking in on this one, anything we can help clarify?

@enahum sorry, I haven't gotten to take a look yet. I'll try to address your comments sometime this week.

@jsfeb26 this PR will also need a rebase

@jsfeb26 let us know if there is anything we can help clarify so we can get this merged

Closing this PR due to inactivity, please let us know if you're interested in continuing to work on this project and we can re-open.


Added Social Media icons and Animating Title

Added Social media icons and animated title
Description:
Added Social Media Icons at footer which help the user to report any bugs to author and added animating title to enhance the texture of the website
Fixes :
https://github.com/Groverio/To-Do-List/issues/68
Type of change:
New feature (non-breaking change):
Added Social Media Icons at footer which help the user to report any bugs to author and added animating title to enhance the texture of the website
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so that they can be reproduced.

[x] Test A:
Cross-browser testing to see if the feature works on Chrome, Firefox, etc.
Mobile and desktop testing for responsive design.
Verifying that the social media icons function correctly when clicked.
[x] Test B
Checking that the animated title displays without causing layout issues.

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules

sure making those changes @Anshgrover23


Is ujson monkey-patch of requests correct?

I was digging around the requests code base and noticed that the monkey-patch used here:
https://github.com/liampauling/betfair/blob/master/betfairlightweight/endpoints/baseendpoint.py#L12-L14
appears not to do anything because internally requests is using the following import:
from .compat import json as complexjson

https://github.com/kennethreitz/requests/blob/master/requests/models.py#L42
It seems like this should be:
requests.models.complexjson = ujson

instead.

Good find.
Going to want to test this as ujson sometimes does some weird things, note how I didn't include it in streaming because it was doing something very odd with decimals.

Out of curiosity, can you describe the behaviour you were seeing with regard to decimals? I saw the reversion in the commits, but not a description.

If you monkey patch the listener and run streaming in DEBUG you can see the following:
betfairlightweight.streaming.listener.json = ujson

And just to be 100% clear, is the issue just the floating point 2.719999999... instead of presumably 2.72?

Yes although looking at the docs the following can fix it:


how to cite

Thanks for the repo! I was wondering how could I cite your resource in bibtex?

Thanks for the repo! I was wondering how could I cite your resource in bibtex?

I'm not actually sure.


Rewrite zsh completion script, fix #30900

Please follow the guide below

You will be asked some questions, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your pull request (like that [x])
Use Preview tab to see how your pull request will actually look like

Before submitting a pull request make sure you have:

[x] Searched the bugtracker for similar pull requests
[x] Read adding new extractor tutorial
[x] Read youtube-dl coding conventions and adjusted the code to meet them
[x] Covered the code with tests (note that PRs without tests will be REJECTED)
[x] Checked the code with flake8

In order to be accepted and merged into youtube-dl each piece of code must be in public domain or released under Unlicense. Check one of the following options:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[ ] Bug fix
[ ] Improvement
[ ] New extractor
[x] New feature

Description of your pull request and other information
Explanation of your pull request in arbitrary form goes here. Please make sure the description explains the purpose and effect of your pull request and is worded well enough to be understood. Provide as much context and examples as possible.
See discussion in #30900.

This is a generated zsh shell script. (Maybe has changes later)
#compdef youtube-dl

_arguments '(- *)--help[Print this help text and exit]'\
    '(- *)--version[Print program version and exit]'\
    '(--update)--update[Update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed)]'\
    '(--ignore-errors)--ignore-errors[Continue on download errors, for example to skip unavailable videos in a playlist]'\
    '(--abort-on-error)--abort-on-error[Abort downloading of further videos (in the playlist or the command line) if an error occurs]'\
    '(--dump-user-agent)--dump-user-agent[Display the current browser identification]'\
    '(--list-extractors)--list-extractors[List all supported extractors]'\
    '(--extractor-descriptions)--extractor-descriptions[Output descriptions of all supported extractors]'\
    '(--force-generic-extractor)--force-generic-extractor[Force extraction to use the generic extractor]'\
    '(--default-search)--default-search[Use this prefix for unqualified URLs. For example "gvsearch2:" downloads two videos from google videos for youtube-dl "large apple". Use the value "auto" to let youtube-dl guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching.]'\
    '(--ignore-config)--ignore-config[Do not read configuration files. When given in the global configuration file /etc/youtube-dl.conf: Do not read the user configuration in ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)]'\
    '(--config-location)--config-location[Location of the configuration file; either the path to the config or its containing directory.]'\
    '(--flat-playlist)--flat-playlist[Do not extract the videos of a playlist, only list them.]'\
    '(--mark-watched)--mark-watched[Mark videos watched (YouTube only)]'\
    '(--no-mark-watched)--no-mark-watched[Do not mark videos watched (YouTube only)]'\
    '(--no-color)--no-color[Do not emit color codes in output]'\
    '(--proxy)--proxy[Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme. For example socks5://<IP_ADDRESS>:1080/. Pass in an empty string (--proxy "") for direct connection]'\
    '(--socket-timeout)--socket-timeout[Time to wait before giving up, in seconds]'\
    '(--source-address)--source-address[Client-side IP address to bind to]'\
    '(--force-ipv4)--force-ipv4[Make all connections via IPv4]'\
    '(--force-ipv6)--force-ipv6[Make all connections via IPv6]'\
    '(--geo-verification-proxy)--geo-verification-proxy[Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading.]'\
    '(--cn-verification-proxy)--cn-verification-proxy[SUPPRESSHELP]'\
    '(--geo-bypass)--geo-bypass[Bypass geographic restriction via faking X-Forwarded-For HTTP header]'\
    '(--no-geo-bypass)--no-geo-bypass[Do not bypass geographic restriction via faking X-Forwarded-For HTTP header]'\
    '(--geo-bypass-country)--geo-bypass-country[Force bypass geographic restriction with explicitly provided two-letter ISO 3166-2 country code]'\
    '(--geo-bypass-ip-block)--geo-bypass-ip-block[Force bypass geographic restriction with explicitly provided IP block in CIDR notation]'\
    '(--playlist-start)--playlist-start[Playlist video to start at (default is %default)]'\
    '(--playlist-end)--playlist-end[Playlist video to end at (default is last)]'\
    '(--playlist-items)--playlist-items[Playlist video items to download. Specify indices of the videos in the playlist separated by commas like: "--playlist-items 1,2,5,8" if you want to download videos indexed 1, 2, 5, 8 in the playlist. You can specify range: "--playlist-items 1-3,7,10-13", it will download the videos at index 1, 2, 3, 7, 10, 11, 12 and 13.]'\
    '(--match-title)--match-title[Download only matching titles (case-insensitive regex or alphanumeric sub-string)]'\
    '(--reject-title)--reject-title[Skip download for matching titles (case-insensitive regex or alphanumeric sub-string)]'\
    '(--max-downloads)--max-downloads[Abort after downloading NUMBER files]'\
    '(--min-filesize)--min-filesize[Do not download any videos smaller than SIZE (e.g. 50k or 44.6m)]'\
    '(--max-filesize)--max-filesize[Do not download any videos larger than SIZE (e.g. 50k or 44.6m)]'\
    '(--date)--date[Download only videos uploaded in this date]'\
    '(--datebefore)--datebefore[Download only videos uploaded on or before this date (i.e. inclusive)]'\
    '(--dateafter)--dateafter[Download only videos uploaded on or after this date (i.e. inclusive)]'\
    '(--min-views)--min-views[Do not download any videos with less than COUNT views]'\
    '(--max-views)--max-views[Do not download any videos with more than COUNT views]'\
    '(--match-filter)--match-filter[Generic video filter. Specify any key (see the "OUTPUT TEMPLATE" for a list of available keys) to match if the key is present, !key to check if the key is not present, key > NUMBER (like "comment_count > 12", also works with >=, <, <=, !=, =) to compare against a number, key = '\''LITERAL'\'' (like "uploader = '\''Mike Smith'\''", also works with !=) to match against a string literal and & to require multiple matches. Values which are not known are excluded unless you put a question mark (?) after the operator. For example, to only match videos that have been liked more than 100 times and disliked less than 50 times (or the dislike functionality is not available at the given service), but who also have a description, use --match-filter "like_count > 100 & dislike_count <? 50 & description" .]'\
    '(--no-playlist)--no-playlist[Download only the video, if the URL refers to a video and a playlist.]'\
    '(--yes-playlist)--yes-playlist[Download the playlist, if the URL refers to a video and a playlist.]'\
    '(--age-limit)--age-limit[Download only videos suitable for the given age]'\
    '(--download-archive)--download-archive[Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it.]:_directories'\
    '(--include-ads)--include-ads[Download advertisements as well (experimental)]'\
    '(--limit-rate)--limit-rate[Maximum download rate in bytes per second (e.g. 50K or 4.2M)]'\
    '(--retries)--retries[Number of retries (default is %default), or "infinite".]'\
    '(--fragment-retries)--fragment-retries[Number of retries for a fragment (default is %default), or "infinite" (DASH, hlsnative and ISM)]'\
    '(--skip-unavailable-fragments)--skip-unavailable-fragments[Skip unavailable fragments (DASH, hlsnative and ISM)]'\
    '(--abort-on-unavailable-fragment)--abort-on-unavailable-fragment[Abort downloading when some fragment is not available]'\
    '(--keep-fragments)--keep-fragments[Keep downloaded fragments on disk after downloading is finished; fragments are erased by default]'\
    '(--buffer-size)--buffer-size[Size of download buffer (e.g. 1024 or 16K) (default is %default)]'\
    '(--no-resize-buffer)--no-resize-buffer[Do not automatically adjust the buffer size. By default, the buffer size is automatically resized from an initial value of SIZE.]'\
    '(--http-chunk-size)--http-chunk-size[Size of a chunk for chunk-based HTTP downloading (e.g. 10485760 or 10M) (default is disabled). May be useful for bypassing bandwidth throttling imposed by a webserver (experimental)]'\
    '(--test)--test[SUPPRESSHELP]'\
    '(--playlist-reverse)--playlist-reverse[Download playlist videos in reverse order]'\
    '(--playlist-random)--playlist-random[Download playlist videos in random order]'\
    '(--xattr-set-filesize)--xattr-set-filesize[Set file xattribute ytdl.filesize with expected file size]'\
    '(--hls-prefer-native)--hls-prefer-native[Use the native HLS downloader instead of ffmpeg]'\
    '(--hls-prefer-ffmpeg)--hls-prefer-ffmpeg[Use ffmpeg instead of the native HLS downloader]'\
    '(--hls-use-mpegts)--hls-use-mpegts[Use the mpegts container for HLS videos, allowing to play the video while downloading (some players may not be able to play it)]'\
    '(--external-downloader)--external-downloader[Use the specified external downloader. (currently supported: aria2c avconv axel curl ffmpeg httpie wget)]:str:(aria2c avconv axel curl ffmpeg httpie wget)'\
    '(--external-downloader-args)--external-downloader-args[Give these arguments to the external downloader]'\
    '(--batch-file)--batch-file[File containing URLs to download ('\''-'\'' for stdin), one URL per line. Lines starting with '\''#'\'', '\'';'\'' or '\''\]'\'' are considered as comments and ignored.]:_directories'\
    '(--id)--id[Use only video ID in file name]'\
    '(--output)--output[Output filename template, see the "OUTPUT TEMPLATE" for all the info]'\
    '(--output-na-placeholder)--output-na-placeholder[Placeholder value for unavailable meta fields in output filename template (default is "%default")]'\
    '(--autonumber-size)--autonumber-size[SUPPRESSHELP]'\
    '(--autonumber-start)--autonumber-start[Specify the start value for %(autonumber)s (default is %default)]'\
    '(--restrict-filenames)--restrict-filenames[Restrict filenames to only ASCII characters, and avoid "&" and spaces in filenames]'\
    '(--auto-number)--auto-number[SUPPRESSHELP]'\
    '(--title)--title[SUPPRESSHELP]'\
    '(--literal)--literal[SUPPRESSHELP]'\
    '(--no-overwrites)--no-overwrites[Do not overwrite files]'\
    '(--continue)--continue[Force resume of partially downloaded files. By default, youtube-dl will resume downloads if possible.]'\
    '(--no-continue)--no-continue[Do not resume partially downloaded files (restart from beginning)]'\
    '(--no-part)--no-part[Do not use .part files - write directly into output file]'\
    '(--no-mtime)--no-mtime[Do not use the Last-modified header to set the file modification time]'\
    '(--write-description)--write-description[Write video description to a .description file]'\
    '(--write-info-json)--write-info-json[Write video metadata to a .info.json file]'\
    '(--write-annotations)--write-annotations[Write video annotations to a .annotations.xml file]'\
    '(--load-info-json)--load-info-json[JSON file containing the video information (created with the "--write-info-json" option)]:_directories'\
    '(--cookies)--cookies[File to read cookies from and dump cookie jar in]:_directories'\
    '(--cache-dir)--cache-dir[Location in the filesystem where youtube-dl can store some downloaded information permanently. By default $XDG_CACHE_HOME/youtube-dl or ~/.cache/youtube-dl . At the moment, only YouTube player files (for videos with obfuscated signatures) are cached, but that may change.]'\
    '(--no-cache-dir)--no-cache-dir[Disable filesystem caching]'\
    '(--rm-cache-dir)--rm-cache-dir[Delete all filesystem cache files]'\
    '(--write-thumbnail)--write-thumbnail[Write thumbnail image to disk]'\
    '(--write-all-thumbnails)--write-all-thumbnails[Write all thumbnail image formats to disk]'\
    '(--list-thumbnails)--list-thumbnails[Simulate and list all available thumbnail formats]'\
    '(--quiet)--quiet[Activate quiet mode]'\
    '(--no-warnings)--no-warnings[Ignore warnings]'\
    '(--simulate)--simulate[Do not download the video and do not write anything to disk]'\
    '(--skip-download)--skip-download[Do not download the video]'\
    '(--get-url)--get-url[Simulate, quiet but print URL]'\
    '(--get-title)--get-title[Simulate, quiet but print title]'\
    '(--get-id)--get-id[Simulate, quiet but print id]'\
    '(--get-thumbnail)--get-thumbnail[Simulate, quiet but print thumbnail URL]'\
    '(--get-description)--get-description[Simulate, quiet but print video description]'\
    '(--get-duration)--get-duration[Simulate, quiet but print video length]'\
    '(--get-filename)--get-filename[Simulate, quiet but print output filename]'\
    '(--get-format)--get-format[Simulate, quiet but print output format]'\
    '(--dump-json)--dump-json[Simulate, quiet but print JSON information. See the "OUTPUT TEMPLATE" for a description of available keys.]'\
    '(--dump-single-json)--dump-single-json[Simulate, quiet but print JSON information for each command-line argument. If the URL refers to a playlist, dump the whole playlist information in a single line.]'\
    '(--print-json)--print-json[Be quiet and print the video information as JSON (video is still being downloaded).]'\
    '(--newline)--newline[Output progress bar as new lines]'\
    '(--no-progress)--no-progress[Do not print progress bar]'\
    '(--console-title)--console-title[Display progress in console titlebar]'\
    '(--verbose)--verbose[Print various debugging information]'\
    '(--dump-pages)--dump-pages[Print downloaded pages encoded using base64 to debug problems (very verbose)]'\
    '(--write-pages)--write-pages[Write downloaded intermediary pages to files in the current directory to debug problems]'\
    '(--youtube-print-sig-code)--youtube-print-sig-code[SUPPRESSHELP]'\
    '(--print-traffic)--print-traffic[Display sent and read HTTP traffic]'\
    '(--call-home)--call-home[Contact the youtube-dl server for debugging]'\
    '(--no-call-home)--no-call-home[Do NOT contact the youtube-dl server for debugging]'\
    '(--encoding)--encoding[Force the specified encoding (experimental)]'\
    '(--no-check-certificate)--no-check-certificate[Suppress HTTPS certificate validation]'\
    '(--prefer-insecure)--prefer-insecure[Use an unencrypted connection to retrieve information about the video. (Currently supported only for YouTube)]'\
    '(--user-agent)--user-agent[Specify a custom user agent]'\
    '(--referer)--referer[Specify a custom referer, use if the video access is restricted to one domain]'\
    '(--add-header)--add-header[Specify a custom HTTP header and its value, separated by a colon '\'':'\''. You can use this option multiple times]'\
    '(--bidi-workaround)--bidi-workaround[Work around terminals that lack bidirectional text support. Requires bidiv or fribidi executable in PATH]'\
    '(--sleep-interval)--sleep-interval[Number of seconds to sleep before each download when used alone or a lower bound of a range for randomized sleep before each download (minimum possible number of seconds to sleep) when used along with --max-sleep-interval.]'\
    '(--max-sleep-interval)--max-sleep-interval[Upper bound of a range for randomized sleep before each download (maximum possible number of seconds to sleep). Must only be used along with --min-sleep-interval.]'\
    '(--format)--format[Video format code, see the "FORMAT SELECTION" for all the info]'\
    '(--all-formats)--all-formats[Download all available video formats]'\
    '(--prefer-free-formats)--prefer-free-formats[Prefer free video formats unless a specific one is requested]'\
    '(--list-formats)--list-formats[List all available formats of requested videos]'\
    '(--youtube-include-dash-manifest)--youtube-include-dash-manifest[SUPPRESSHELP]'\
    '(--youtube-skip-dash-manifest)--youtube-skip-dash-manifest[Do not download the DASH manifests and related data on YouTube videos]'\
    '(--merge-output-format)--merge-output-format[If a merge is required (e.g. bestvideo+bestaudio), output to given container format. One of mkv, mp4, ogg, webm, flv. Ignored if no merge is required]'\
    '(--write-sub)--write-sub[Write subtitle file]'\
    '(--write-auto-sub)--write-auto-sub[Write automatically generated subtitle file (YouTube only)]'\
    '(--all-subs)--all-subs[Download all the available subtitles of the video]'\
    '(--list-subs)--list-subs[List all available subtitles for the video]'\
    '(--sub-format)--sub-format[Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"]'\
    '(--sub-lang)--sub-lang[Languages of the subtitles to download (optional) separated by commas, use --list-subs for available language tags]'\
    '(--username)--username[Login with this account ID]'\
    '(--password)--password[Account password. If this option is left out, youtube-dl will ask interactively.]'\
    '(--twofactor)--twofactor[Two-factor authentication code]'\
    '(--netrc)--netrc[Use .netrc authentication data]'\
    '(--video-password)--video-password[Video password (vimeo, youku)]'\
    '(--ap-mso)--ap-mso[Adobe Pass multiple-system operator (TV provider) identifier, use --ap-list-mso for a list of available MSOs]'\
    '(--ap-username)--ap-username[Multiple-system operator account login]'\
    '(--ap-password)--ap-password[Multiple-system operator account password. If this option is left out, youtube-dl will ask interactively.]'\
    '(--ap-list-mso)--ap-list-mso[List all supported multiple-system operators]'\
    '(--extract-audio)--extract-audio[Convert video files to audio-only files (requires ffmpeg/avconv and ffprobe/avprobe)]'\
    '(--audio-format)--audio-format[Specify audio format: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "%default" by default; No effect without -x]'\
    '(--audio-quality)--audio-quality[Specify ffmpeg/avconv audio quality, insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate like 128K (default %default)]'\
    '(--recode-video)--recode-video[Encode the video to another format if necessary (currently supported: mp4 flv ogg webm mkv avi)]:str:(mp4 flv ogg webm mkv avi)'\
    '(--postprocessor-args)--postprocessor-args[Give these arguments to the postprocessor]'\
    '(--keep-video)--keep-video[Keep the video file on disk after the post-processing; the video is erased by default]'\
    '(--no-post-overwrites)--no-post-overwrites[Do not overwrite post-processed files; the post-processed files are overwritten by default]'\
    '(--embed-subs)--embed-subs[Embed subtitles in the video (only for mp4, webm and mkv videos)]'\
    '(--embed-thumbnail)--embed-thumbnail[Embed thumbnail in the audio as cover art]'\
    '(--add-metadata)--add-metadata[Write metadata to the video file]'\
    '(--metadata-from-title)--metadata-from-title[Parse additional metadata like song title / artist from the video title. The format syntax is the same as --output. Regular expression with named capture groups may also be used. The parsed parameters replace existing values. Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like "Coldplay - Paradise". Example (regex): --metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"]'\
    '(--xattrs)--xattrs[Write metadata to the video file'\''s xattrs (using dublin core and xdg standards)]'\
    '(--fixup)--fixup[Automatically correct known faults of the file. One of never (do nothing), warn (only emit a warning), detect_or_warn (the default; fix file if we can, warn otherwise)]'\
    '(--prefer-avconv)--prefer-avconv[Prefer avconv over ffmpeg for running the postprocessors]'\
    '(--prefer-ffmpeg)--prefer-ffmpeg[Prefer ffmpeg over avconv for running the postprocessors (default)]'\
    '(--ffmpeg-location)--ffmpeg-location[Location of the ffmpeg/avconv binary; either the path to the binary or its containing directory.]'\
    '(--exec)--exec[Execute a command on the file after downloading and post-processing, similar to find'\''s -exec syntax.

F-strings require Python >=3.6.0.

So, even if devscripts/.py (not youtube-dl/.py) still must use Python >=3.6.0. really?

2. ytdl has always used (and the ex-/retired devs demanded) using single quotes for strings (personally I'm against that when they don't have a special purpose like they do in Bash or PowerShell).

However, the origin devscripts/*.py use double quotes, so which is right?

Use optparse's choices to set selection. It should be faster and more convenient to code.


Not working with the latest version of Unity XR

I can't seem to get the demo scene working with the latest Unity XR package (Unity 2019.4, XR plugin management version 3.2.16)
I noticed that The method:
UnityEngine.XR.InputTracking.GetLocalPosition(node)
is obsolete. This may be the cause of the issue?

yes, this seems very likely. Unfortunately, I don't have a VR headset anymore and don't actively maintain this package anymore. But I would be more than happy to accept your pull request once you get it running.
According to this, the API changed slightly, but should not be too difficult to work out

Looking in to this, it seems you can still use UnityEngine.XR.InputTracking.GetLocalPosition(node) and similar deprecated functions within Unity XR (this is in Unity 2020.2.2f1). My work around (after following some of the Open XR setup instructions made by VR with Andrew  was to remove any instances of LocalVrTrackingInput.cs (in the PoseManager) and add the new XR script TrackedPoseDriver with eye position and rotation bindings to the hmd object as well as your camera and XRRig, example in the following:

An ActionBasedController script needs to be added to each controller with relevant devicePosition and deviceRotation bindings, see following image for an example (You can add extra actions via this script too. You don't need to add a model or transform to the  ActionBasedController script.):

Hopefully that makes sense for anyone stumbling across the same problem in the future.


V5 Modal flickering when within .list-group-item

Hi everybody,
the following was testet with the current Crome and Safari on Mac OS 11.4.
If I use a modal inside .list-group-item the screen is flickering. Here is an example: https://codepen.io/Matrab/pen/XWMyXxZ
I don't know if this equals  https://github.com/twbs/bootstrap/issues/25206

Hey @mathiasrabe ,include the below line to fix that flickering
.list-group-item, .list-group-item:hover{ z-index: auto; }

This worked, thanks!

Sorry if I chose the wrong topic, I have the same problem but with the card group (bootstrap 5.3.2) .
The problem occurred after I modified the loading of cdn scripts with another script.


Loiter mode not working

Using master SITL
Create a simple takeoff and waypoint missing in QGC
Send, Arm, Change to Mission flight mode
Select Auto: Loiter from the flight mode drop down

Firmware says unknown flight mode

Also see this: https://github.com/mavlink/qgroundcontrol/issues/2969

@DonLakeFlyer I'm using QGC 2.9.4 and firmware 1.2.0 (a few weeks back). In QGC this is called "Auto: Pause" for me, is that new? And it's working. But I know the bug you encountered, had this too a while back but don't remember with what combination anymore.

Yes "Auto: Pause" is Loiter. No idea when that changed! I don't really like the new Auto: foo naming of things. Doesn't really add much value.

Its necessary to do it that way because Loiter keeps APM users thinking its position control mode.

@LorenzMeier Do I understand you correctly that in fact it would still be "Loiter" as in APM. If there is no mission present Auto Mission / Auto Pause would in fact loiter in place. If a Mission is present it would try to follow the mission but would be immediately be paused resulting in a Loiter as well. The Difference would be that if in Mission it would really pause/resume the Mission if switched directly to/from Mission Mode. If using any other mode it would reset the mission progress... Correct?

@tops4u no, Loiter in APM is position control in PX4. And the mission progress is not reset when using any other mode.

@DonLakeFlyer does it go into failsafe in your case (no joystick connected)? It could revert back to the mode NAVIGATION_STATE_AUTO_RTGS which would then show as unknown.

Yes it does go into failsafe

@DonLakeFlyer Fixed in c29bfcd and on QGC master (mode indication for RTGS).


Add 'Poco::Crypto' to Poco package

Hi hunter,
Please add 'Poco::Crypto' to Poco package.
Thanks!

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/36551169-add-poco-crypto-to-poco-package?utm_campaign=plugin&utm_content=tracker%2F1032790&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1032790&utm_medium=issues&utm_source=github).

I think you need to set custom build option ENABLE_CRYPTO=ON. Defaults that used in PocoCpp/hunter.cmake:
hunter_cmake_args(
    PocoCpp
    CMAKE_ARGS
        CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE
        POCO_STATIC=ON
        ENABLE_CPPUNIT=OFF
        ENABLE_MONGODB=OFF
        ENABLE_NETSSL=OFF
        ENABLE_CRYPTO=OFF
        ENABLE_DATA=OFF
        ENABLE_PAGECOMPILER=OFF
        ENABLE_PAGECOMPILER_FILE2PAGE=OFF
        ENABLE_REDIS=OFF
)

See wiki page: https://github.com/ruslo/hunter/wiki/example.custom.config.id#custom-cmake-options

Thanks ruslo! I'll take a look at custom build option.
Btw, the wiki page of Poco does not mention about Crypto. That's why I thought Crypto is missing. https://github.com/ruslo/hunter/wiki/pkg.pococpp
I'll resolve this issue now. Thanks again!

Btw, the wiki page of Poco does not mention about Crypto. That's why I thought Crypto is missing.

Feel free to add :)

The cmake_args here, how are they mapped to components mentioned in the wiki?
CMAKE_ARGS
        CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE
        POCO_STATIC=ON
        ENABLE_CPPUNIT=OFF
        ENABLE_MONGODB=OFF
        ENABLE_NETSSL=OFF
        ENABLE_CRYPTO=OFF
        ENABLE_DATA=OFF
        ENABLE_PAGECOMPILER=OFF
        ENABLE_PAGECOMPILER_FILE2PAGE=OFF
        ENABLE_REDIS=OFF

Components mentioned in wiki.
Foundation (Poco::Foundation)
JSON (Poco::JSON)
Net (Poco::Net)
Util (Poco::Util)
XML (Poco::XML)
Zip (Poco::Zip)

how are they mapped to components mentioned in the wiki?

I don't know. I guess this is a question to the Poco documentation itself. It would be nice to have a link in Hunter wiki though.

Components mentioned in wiki.

This one added by @aarnchng. @aarnchng can you help?

I've found the map between cmake_args and Poco components in https://github.com/pocoproject/poco/blob/develop/CMakeLists.txt. I've updated the wiki.

@trungnq97 Great, thank you.


Changes to support Azure Disk Encryption & Accelerated Networking

Description

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] Please add REST spec PR link to the SDK PR
[ ] I have read the contribution guidelines.
[ ] The pull request does not introduce breaking changes.

General Guidelines

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

Testing Guidelines

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

SDK Generation Guidelines

[ ] If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
[ ] The generate.cmd file for the SDK has been updated with the version of AutoRest, as well as the commitid of your swagger spec or link to the swagger spec, used to generate the code.
[ ] The *.csproj and AssemblyInfo.cs files have been updated with the new version of the SDK.

azure-rest-api-specs PR: https://github.com/Azure/azure-rest-api-specs/pull/3596#pullrequestreview-144076307
Have added generate.ps1 (PS: the same folder has generate.cmd)

Have regenerated the code, but there are no new files around.

When run manually generate.ps1, there's a text file that got created under _metadata (not with the intended format though as compared with other RPs, not checked-in as seems it is expected to get generated with autoRest or so).

Used below autoRest command to regenerate the code, please see if something is missing:
autoRest -Input d:\azure-rest-api-specs\specification\recoveryservicessiterecovery\resource-manager\Microsoft.RecoveryServices\stable\2018-01-10\service.json -Namespace Microsoft.Azure.Management.RecoveryServices.SiteRecovery -OutputDirectory d:\azure-sdk-for-net\src\SDKs\RecoveryServices.SiteRecovery\Management.RecoveryServices.SiteRecovery\Generated -CodeGenerator Azure.CSharp -Modeler Swagger -Header MICROSOFT_MIT_NO_VERSION

Note:
generate.cmd has recoveryservicessiterecovery/resource-manager (without a '.' after recoveryservices)
generated.ps1 has RecoveryServices.SiteRecovery/resource-manager (with a '.' after recoveryservices)
Irrespective of '.'. with RP in generate.ps1, autoRest command has not created any new files.
Please let us know if something is missing.

@sriramvu the code MUST be generated using the generate.ps1 file instead of AutoRest directly. Please run the script and let us know if you have any trouble generating the code.

Also, please squash the commits into a single commit and update the PR

@dsgouda: need your help to understand more on generate.ps1

With autoRest, we specify service.json path and path to generate the files. Where does this newly added generate.ps1 picks up / refers service.json ?
On running newly added generate.ps1, no file got generated.
Not able to get info around generate.ps1 in https://github.com/Azure/adx-documentation-pr/blob/master/engineering/autorest-to-powershell.md
Can generated.ps1 & generate.cmd coexist (the case in our repo)? How do they differ?

@sriramvu Looks like we discussed the issues regarding this PR online. Please fix issues with the spec and regenerate the code, then open a new PR. Closing this.


Update container image tag in GitHub actions HIP configuration

This one seems to have been left behind at some point (maybe even intentionally, hmm... @aurianer do you remember anything about this?). Bumping it up to the latest. #5626 bumps the others from 9 to 10.

The image is not even there apparently (due to build failures): https://app.circleci.com/pipelines/github/STEllAR-GROUP/docker_build_env/72/workflows/ff5b9523-fbc3-4456-beb3-d70032dcfe43/jobs/267. Let's see if https://github.com/STEllAR-GROUP/docker_build_env/pull/44 works better.

Better: https://github.com/STEllAR-GROUP/hpx/runs/4116417542?check_suite_focus=true. Merging.

I think it has just been forgotten when adding insegel theme, thanks!


graphite-gtk-theme does not create all themes

Describe the bug
Currently the package installs not all graphite themes. The installed ones are:
Graphite
Graphite-Dark
Graphite-Dark-hdpi
Graphite-Dark-xhdpi
Graphite-hdpi
Graphite-Light
Graphite-Light-hdpi
Graphite-Light-xhdpi
Graphite-xhdpi

These themes show a white line around the edge of the GTK windows that could be annoying for some users.
The missing themes correspond to the one that are generated by --rimless argument that should produce themes like Graphite-Rimless and Graphite-Rimless-Dark. Could you please implement also these rimless themes for 23.11 and later repo version?
Steps To Reproduce
Steps to reproduce the behavior:

Install graphite-gtk-theme
Set rimless theme like Graphite-Rimless-Dark
It won't work because missing

Expected behavior
Graphite Rimless theme works correctly.
Notify maintainers

@romildo
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.1.68, NixOS, 24.05 (Uakari), 24.05.20231219.54aac08`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.18.1`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Add a :+1: reaction to issues you find important.

According to the documentation, the rimless versions are installed when the install script is given the option --tweeks rimless, which has the effect of removing the 2px outline around the windows.
This option does not create themes with different names. The names of the themes are the same, with or without this option. So themes named Graphite-Rimless or Graphite-Rimless-Dark are never created by the install script.
In order to obtain variations of the basic themes, the package should be overriden. For instance, one can put the following in environment.systemPackages:
(graphite-gtk-theme.override {
  sizeVariants = [ "compact" ];
  tweaks = [ "nord" "normal" "rimless" ];
  wallpapers = true;
  withGrub = true;
})

Thank you @romildo
The different "names" of themes are given by -n argument on install.sh script of Graphite. Currently the non-rimless theme (dark) appears like:

while the rimless theme appears like:

So, it is not only a reduced pixel size, but it is a deletion of that white edge from GTK windows.
I will try to use override.


Improve definition of var_names for retrieving data from StoreGate

Improve the definition of var_names argument of get_data() method as follows:
var_names                     returned data type and shape
('var0', 'var')            -> ndarray (2, k)
['var0', 'var']            -> [ndarray (k), ndarray (k)]
[('var0', 'var1'), 'var2'] -> [ndarray (2, k) ndarray (k)]

k = arbitrary data shape

The changes has been merged.


Merge gz-sim8 ➡  main

➡  Forward port
Port gz-sim8  ➡  main
Branch comparison: https://github.com/ignitionrobotics/ign-gazebo/compare/main...gz-sim8
Note to maintainers: Remember to Merge with commit (not squash-merge or rebase)

requires https://github.com/gazebosim/gz-msgs/pull/445

CI looks ok now that https://github.com/gazebosim/gz-msgs/pull/445 has been merged, aside from a failure of INTEGRATION_mesh_inertia_calculation, which appears to be flaky on the main branch:

passed: https://build.osrfoundation.org/job/gz_sim-main-win/54/testReport/(root)/MeshInertiaCalculationTest/history/
failed: https://build.osrfoundation.org/job/gz_sim-main-win/53/testReport/junit/(root)/INTEGRATION_mesh_inertia_calculation/test_ran/history/


Segmentation fault accessing attributes after closing container

Overview
I consistently get segmentation faults when trying to access certain attributes on an InputContainer after calling the .close() function.
Most of the time I'm running in a REPL, so this behavior has been a bit of a landmine for me.
Expected behavior
Ideally the attribute would either return a value as expected for attributes that make sense to ask about 'after-the-fact' (i.e. getting the size or duration after closing the video) or otherwise raise an error.
Actual behavior
Simple example:
import av

container = av.open("any_video.mp4", mode="r")
container.close()
print(container.duration) # -> Segmentation fault (core dumped)
print("Finished!")

On Linux: I get the message: Segmentation fault (core dumped) and the script ends (it doesn't print out 'Finished!')
On a Windows 10 VM (using cmd.exe): The script prints a single blank line, it doesn't say segmentation fault, but also doesn't print 'Finished!'
It doesn't seem to depend on the video (at least from the ones I've tested).
Investigation
I've checked each of the (non underscored) attributes to see which ones do/don't cause a crash (using the simple example above where the attribute is printed immediately after the call to close).
In the table below, (InputContainer) attributes on the left are fine (no segfault) attributes on the right always segfault:

OK
Crashes

.close
.auto_csf

.container_options
.bit_rate

.file
.bit_exact

.decode
.custom_io

.demux
.discard_corrupt

.dumps_format
.duration

.format
.fast_seek

.io_open
.flags

.metadata
.flush_packets

.metadata_encoding
.gen_pts

.metadata_errors
.ign_dts

.name
.ign_idx

.open_files
.no_buffer

.open_timeout
.no_fill_in

.options
.no_parse

.read_timeout
.non_block

.seek
.priv_opt

.stream_options
.shortest

.streams
.size

.writeable
.sort_dts

.start_time

Hopefully there's some meaningful pattern here as to what leads to crashes, but I'm new to PyAV, so I have no idea...
I found a similar issue here: https://github.com/PyAV-Org/PyAV/issues/1070
Though it seems to have been closed due to inactivity, and in fairness, may be tied to debugpy (not familiar with it).
Reproduction
You can try the simple example above with an existing video, or otherwise here's a version that creates a video first (needs pip install av numpy to run):
import os.path as osp
import av
import numpy as np

def make_sample_video(save_path):

    """
    Modified example from:
    https://pyav.org/docs/stable/cookbook/numpy.html#generating-video
    """

    # Avoid repeat video creation
    if osp.exists(save_path):
        return

    # Output settings (not important?)
    duration = 4
    fps = 24
    total_frames = duration * fps
    vid_w = 256
    vid_h = 128

    container = av.open(save_path, mode="w")
    stream = container.add_stream("mpeg4", rate=fps)
    stream.width = vid_w
    stream.height = vid_h
    stream.pix_fmt = "yuv420p"

    # Write random frames
    for frame_i in range(total_frames):
        img = np.random.randint(0, 255, (vid_h, vid_w, 3), dtype=np.uint8)
        frame = av.VideoFrame.from_ndarray(img, format="rgb24")
        for packet in stream.encode(frame):
            container.mux(packet)

    # Flush stream
    for packet in stream.encode():
        container.mux(packet)

    # Close the file
    container.close()

sample_file_path = "rainbow_noise.mp4"
make_sample_video(sample_file_path)

container = av.open(sample_file_path, mode = "r")
container.close()

print("Check duration:")
print(container.duration)
print("Finished!")

For me, this will always segfault before reaching the 'Finished!' print out.
Versions

OS: Linux (pop os 22.04 or Window 10 VM)
PyAV runtime:

PyAV v10.0.0
library configuration: --disable-static --enable-shared --libdir=/tmp/vendor/lib --prefix=/tmp/vendor --disable-alsa --disable-doc --disable-mediafoundation --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-lzma --enable-version3 --enable-zlib
library license: GPL version 3 or later
libavcodec     59. 37.100
libavdevice    59.  7.100
libavfilter     8. 44.100
libavformat    59. 27.100
libavutil      57. 28.100
libswresample   4.  7.100
libswscale      6.  7.100

PyAV build:

pip installed av

FFmpeg:

ffmpeg version 4.4.2-0ubuntu<IP_ADDRESS> Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
  configuration: --prefix=/usr --extra-version=0ubuntu<IP_ADDRESS> --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100

Research
I have done the following:

[x] Checked the PyAV documentation
[x] Searched on Google
[x] Searched on Stack Overflow
[x] Looked through old GitHub issues
[ ] Asked on PyAV Gitter
[ ] ... and waited 72 hours for a response.

This is a valid bug! The problem is that self.ptr gets set to null when the container is closed. I'll try to put together a PR

I found that this problem still exists. If the input container is closed and the input container is used as the output template, a Segmentation fault (core dumped) will be reported.
import os.path as osp
import time
import av
import numpy as np
def make_sample_video(save_path,in_video_stream):
"""
Modified example from:
https://pyav.org/docs/stable/cookbook/numpy.html#generating-video
"""
# Avoid repeat video creation
if osp.exists(save_path):
    return

# Output settings (not important?)
duration = 4
fps = 24
total_frames = duration * fps
vid_w = 256
vid_h = 128

container = av.open(save_path, mode="w")
stream = container.add_stream(template=in_video_stream)
stream.width = vid_w
stream.height = vid_h
stream.pix_fmt = "yuv420p"

# Write random frames
for frame_i in range(total_frames):
    img = np.random.randint(0, 255, (vid_h, vid_w, 3), dtype=np.uint8)
    frame = av.VideoFrame.from_ndarray(img, format="rgb24")
    for packet in stream.encode(frame):
        container.mux(packet)

# Flush stream
for packet in stream.encode():
    container.mux(packet)

# Close the file
container.close()

sample_file_path = "rainbow_noise.mp4"
container = av.open(sample_file_path, mode="r")
in_video_stream = container.streams.video[0]
make_sample_video(sample_file_path,in_video_stream)
time.sleep(3)
container.close()
print("Check duration:")
print(in_video_stream)
print(container.duration)
print("Finished!")


Second Monitor goes Black

hello
when i check prices and watch streams or something my second monitor goes black. alt+tab fixes it then.
what can i do?
thx

ah found the solution. search function did it again. sry thx anyway.


Remove Amazon.Corretto.11 <IP_ADDRESS>.1 to Amazon.Corretto.11.JDK <IP_ADDRESS>.1

Microsoft Reviewers: Open in CodeFlow

URL: https://corretto.aws/downloads/resources/<IP_ADDRESS>.1/amazon-corretto-<IP_ADDRESS>.1-windows-x64.msi
OK
(Automated message - build 910)


[AutoPR] restapi_auto_cognitiveservices/data-plane/ContentModerator

Classify changes Update

Codecov Report

Merging #1963 into master will decrease coverage by 0.07%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1963      +/-   ##
==========================================
- Coverage   53.11%   53.03%   -0.08%
==========================================
  Files        4734     4735       +1
  Lines      117464   117851     +387
==========================================
+ Hits        62388    62505     +117
- Misses      55076    55346     +270

Impacted Files
Coverage Δ

...is/azure/mgmt/redis/models/redis_patch_schedule.py
53.33% <0%> (-18.1%)
:arrow_down:

...mt-redis/azure/mgmt/redis/operations/operations.py
30.43% <0%> (-11.51%)
:arrow_down:

...gmt/redis/operations/patch_schedules_operations.py
16.51% <0%> (-6.22%)
:arrow_down:

...insights/application_insights_management_client.py
36.2% <0%> (-4.27%)
:arrow_down:

...azure/mgmt/redis/models/redis_update_parameters.py
33.33% <0%> (-3.04%)
:arrow_down:

...mgmt/redis/operations/firewall_rules_operations.py
16.34% <0%> (-2.05%)
:arrow_down:

...dis/azure/mgmt/redis/models/redis_firewall_rule.py
61.53% <0%> (-0.97%)
:arrow_down:

...ure-mgmt-redis/azure/mgmt/redis/models/resource.py
100% <0%> (ø)
:arrow_up:

...ure-mgmt-redis/azure/mgmt/redis/models/__init__.py
100% <0%> (ø)
:arrow_up:

...mt-redis/azure/mgmt/redis/models/redis_resource.py
100% <0%> (ø)
:arrow_up:

... and 5 more

Continue to review full report at Codecov.

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

@AutorestCI rebase

Rebase done and pushed to the branch

@AutorestCI rebase

Rebase done and pushed to the branch

(message created by the CI based on PR content)


CloseWebSocketFrame statusCode() get unexpected results

Set the  CloseWebSocketFrame code to 60000, and the result obtained by statusCode() is negative;
The WebSocket protocol states that Code is  a 2-byte unsigned integer (in network byte order)，But netty acquisition is obtained by signs.

Here, getShort should be changed to getUnsignedShort.
Minimal yet complete reproducer code (or URL to code)
Netty version
4.1.80
JVM version (e.g. java -version)
openjdk 1.8.0_272
OS version (e.g. uname -a)
linux 4.19.36 aarch64

@zhangjinying can you do a PR with the change and a test ?

@zhangjinying can you do a PR with the change and a test ?

👌


uib-pagination not working with ui-bootstrap-tpls-2.2.0.js

uib-pagination not working with ui-bootstrap-tpls-2.2.0.js.
If I test with ui-bootstrap-tpls-0.14.3.min.js it is working fine.
Tested using html:
<uib-pagination boundary-links="true" total-items="pagination.total" ng-model="pagination.currentPage" ng-change="loadList()" max-size="7" rotate="false"                                             previous-text="‹" next-text="›" first-text="«" last-text="»"></uib-pagination>

https://github.com/angular-ui/bootstrap/blob/master/CONTRIBUTING.md#you-think-youve-found-a-bug

This is happening for me too. We upgraded from v1.2.5 to v2.2.0.

Attribute works: <ul uib-pagination>
Element does not work: <uib-pagination>
https://plnkr.co/edit/3bkfNHZWNSimNC8zuiVG?p=preview

This was a breaking change listed in the changelog for 2.0.0 and documented usage in the docs.

@wesleycho They should add this to the docs.
@connectmobile
Attribute works: <ul uib-pagination>
Element does not work: <uib-pagination>


Backend tools: Cleanup tool auth endpoint, and tool name usage

Thank you for contributing to the Cohere Toolkit!

[ ] PR title: "area: description"

Where "area" is whichever of interface, frontend, model, tools, backend, etc. is being modified. Use "docs: ..."  for CI changes.
Example: "deployment: add Azure model option"

[ ] PR message: Delete this entire checklist and replace with

Description: a description of the change
Issue: the issue # it fixes, if applicable
Dependencies: any dependencies required for this change

[ ] Add tests and docs: Please include testing and documentation for your changes

[ ] Lint and test: Run make lint and make run-tests

AI Description

This PR introduces a set of changes to enhance the tool configuration and authentication mechanisms.
Code Changes:

The src/backend/schemas/tool.py file now makes the name attribute in the Tool class optional, allowing for more flexible tool definitions.
The src/backend/tools/base.py file adds a NAME attribute to the BaseTool class, ensuring that all tools have a designated name.
The src/backend/tools/calculator.py, src/backend/tools/files.py, src/backend/tools/google_drive.py, src/backend/tools/lang_chain.py, src/backend/tools/python_interpreter.py, src/backend/tools/tavily.py, and various community tool files now include a NAME attribute, providing explicit names for these tools.
The src/backend/config/tools.py file updates the ToolName class to reference tool names dynamically using the NAME attribute of the respective tool classes.
The src/backend/tools/base.py file renames the BaseAuth class to BaseToolAuthentication for better clarity.
The src/backend/tools/google_drive.py file removes the GOOGLE_DRIVE_TOOL_ID constant and utilizes the NAME attribute for tool identification.
The src/backend/routers/auth.py file updates the import statement to use AVAILABLE_TOOLS instead of ALL_TOOLS, reflecting the dynamic nature of tool availability.

Summary:
The primary focus of this PR is to standardize tool naming and improve authentication. By introducing the NAME attribute in the BaseTool class, each tool now has an explicit name. This change is reflected in various tool configuration files, ensuring consistency. Additionally, the PR refactors the authentication mechanism, including renaming the BaseAuth class to BaseToolAuthentication and updating the src/backend/routers/auth.py file to handle tool availability dynamically.

Codecov Report
Attention: Patch coverage is 60.71429% with 22 lines in your changes missing coverage. Please review.

Project coverage is 86.23%. Comparing base (9125660) to head (e0b3be2).
Report is 2 commits behind head on main.

Files
Patch %
Lines

src/backend/routers/auth.py
7.14%
13 Missing :warning:

src/backend/tools/google_drive.py
50.00%
3 Missing :warning:

src/backend/tools/python_interpreter.py
60.00%
2 Missing :warning:

src/backend/services/auth/strategies/base.py
0.00%
1 Missing :warning:

src/backend/tools/base.py
87.50%
1 Missing :warning:

src/backend/tools/lang_chain.py
80.00%
1 Missing :warning:

src/backend/tools/tavily.py
75.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #349      +/-   ##
==========================================
- Coverage   86.46%   86.23%   -0.24%
==========================================
  Files         178      178
  Lines        6873     6930      +57
==========================================
+ Hits         5943     5976      +33
- Misses        930      954      +24

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


docs(kubernetes): Add release notes about job suffix change

The 1.22 release will change the default for whether we add a suffix to Kubernetes jobs. Add a release note about this.

I also realize that I didn't add a note about this in the 1.21 release notes.  While there was no explicit change about this in the 1.21 release notes, I think it makes sense to add something for visibility.  Barring objections, I'll edit the gist for the 1.21 release and add the following.  (While a few people may have already read the notes and will miss this, we're early enough in the cycle that it's probably worth advertising this more.)
(Upcoming Breaking Change) Suffix no longer added to jobs created by Kubernetes Run Job stage
In 1.22, Spinnaker will no longer automatically append a unique suffix to the name of jobs created by the Kubernetes Run Job stage. Currently, if you specify metadata.name: my-job, Spinnaker updates the name to my-job-[random-string] before deploying the job to Kubernetes. As of Spinnaker 1.22, the job's name will be passed through to Kubernetes exactly as supplied.
To continue having a random suffix added to the job name, users should the metadata.generateName field instead of metadata.name, which causes the Kubernetes API to append a random suffix to the name.
This change is particularly important for users who are using the preconfigured job stage for Kubernetes, or who are otherwise sharing job stages among different pipelines. In these cases, jobs are often running concurrently, and it is important that each job have a unique name. In order to retain the previous behavior, these users will need to manually update their Kubernetes job manifests to use the generateName field.
Users of Spinnaker 1.21 can opt in to this new behavior by setting kubernetes.jobs.append-suffix: false in their clouddriver-local.yml.  This behavior will become the default in Spinnaker 1.22 with an ability to opt out.  The ability to opt out will be removed in Spinnaker 1.23.
Users are encouraged to update any necessary jobs to specify metadata.generateName between now and Spinnaker 1.22.  Specifying a metadata.generateName will cause a suffix to be appended, regardless of the above flag, so users can incrementally update their jobs and then opt in to the new behavior once all jobs have been updated.


feat(types): upgrade polkadot types to Alcyone 2.6

:tada: This PR is included in version 5.0.0-beta.2 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 5.0.0-alpha.9 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 5.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Why introduce esbuild?

I've checked https://github.com/teeminus/ungoogled-chromium-windows/blob/update_100.0.4896.60/build.py,
no esbuild there.
Without hash checking for esbuild, how to make sure it's ok?

https://github.com/ungoogled-software/ungoogled-chromium-windows/pull/139#issuecomment-1086168275
it doesn't compile without esbuild.

Without hash checking for esbuild, how to make sure it's ok?

It depends on how you define ok. If you just want to check if the file is corrupted, there is no need because a corrupted file won't be unzipped properly.

I've tried https://github.com/teeminus/ungoogled-chromium-windows/blob/update_100.0.4896.60/build.py,
it fails because of lack of esbuild.exe.
Why not put esbuild in downloads.ini?

Each chromium build requires a specific version of esbuild. Putting it in downloads.ini means it may have to be updated frequently.

By looking into build.py, it downloads esbuild at chrome-infra-packages.appspot.com, and it is an offical site of google, so it secure.
I think a python script to update download.ini automatically is also fine.
Thanks

I know it's a manual step which needs to be documented and double checked before merging new releases into master, but why don't we add the required esbuild version manually to the build.py script (or wherever it belongs)?

We surely can, but it's one less thing to worry about if we can fetch the required version automatically.

In your esbuild MR you spoke about using exec because you don't want to add external dependencies. If it's an python import, can't those dependencies be automatically installed? (I'm sorry if that's a dumb question, I know close to nothing about Python)

Unfortunately it cannot. It would cause ambiguity and possibly safety issues.
Is there a language that supports this feature?

I don't know if there is a programming language that is capable of doing this.
Anyways, your modification for parsing the DEPS file and downloading esbuild in the build.py works like a charm, good job 👍


Allow overriding GFXRECON_PROJECT_VERSION_DESIGNATION for custom builds.

CI gfxreconstruct build queued with queue ID 21269.

CI gfxreconstruct build # 533 running.

CI gfxreconstruct build # 533 passed.


Help needed: Fix error tests & Add Tests for new feature

I am trying to add tests (cloned from original es3-version), but runs following error:
FAILURES: 100/193 assertions failed (312ms)

Who can help me with that?
@sole @mikebolt @trusktr Can you're help me?

This is fixed with #12

Add tests for new features

BUILD: PASSING
TESTS NEEDS

New added @michaelvillar dynamics.js adapted physics test/docs
Emit event test/docs
well, add later...


Make runtime configurable so that our own PRs can use the Dockerfile directly

...

Closing: approach won't work, no interpolation possible on that field of the action metadata


Multi-arch build miss some more --build-arg

Here https://github.com/kubernetes-csi/csi-release-tools/blob/master/build.make#L146
It pass one --build-arg binary=xx
For windows image, typically dockerfile.windows has BASE_IMAGE etc. like here https://github.com/kubernetes-csi/node-driver-registrar/blob/master/Dockerfile.Windows.
Should we add those build-arg too?

cc @pohly

Should we add those build-arg too?

We could, but why? Is there a reason for setting the base image in the Makefile instead of the Dockerfile.Windows? I must be missing something, please explain. :thinking:

We might have multiple base image, e.g., ltsc2019, 1909, 2004 etc to build the image.

Who is going to use this feature?

csi gce pd driver. Also node-driver-register etc. Currently node-driver-register uses nanoserver 1809, which can work for Windows host ltsc2019, sac1909. But it will be not support later this year. https://hub.docker.com/_/microsoft-windows-nanoserver.

So the plan is to use the same Dockerfile.Windows, but then have multiple invocations for it with different parameters? That makes sense. But if there is just one invocation, then the build parameter is unnecessary and the base image can be set directly in the Dockerfile.Windows.

But that is more than "we need a build parameter". It would be good to write down then plan and list everything that needs to be changed, including the Prow build jobs.

I'm looking to add csi-release-tools to the gcp-compute-persistent-disk-csi-driver via #585. The main issue here is that in GKE supports multiple versions of windows. Windows has strict host compatibility requirements that Linux does not have, https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2004%2Cwindows-10-2004. Essentially each version of Windows that comes out requires a different image with base layers that are compatible with that version of Windows. If your managed Kubernetes service supports multiple versions of Windows like GKE does (Windows LTSC and Windows SAC, https://docs.microsoft.com/en-us/windows-server/get-started-19/servicing-channels-19) then you'll need a container image that maps to that particular image.
There's multiple ways to support this in csi-release-tools. We can maintain a list of all actively serviced base images hard coded in build.make and for loop through them for the Windows build stage or add a field in BUILD_PLATFORMS.
In all we'd probably need at least 2 Windows images with more as time goes on depending on how thorough a CSI provider wants to be with the number of inflight supported Windows versions.

There's multiple ways to support this in csi-release-tools. We can maintain a list of all actively serviced base images hard coded in build.make and for loop through them for the Windows build stage or add a field in BUILD_PLATFORMS.

When doing multi-arch images, how is the right image selected? Currently, docker buildx --platform=windows/amd64 is used to mark an image as suitable for Windows.
Can there be more than one image for that platform with different base images?

Multi-arch build miss some more --build-arg

Can you rename the issue? Perhaps "support different Windows base images"?

There's multiple ways to support this in csi-release-tools. We can maintain a list of all actively serviced base images hard coded in build.make and for loop through them for the Windows build stage or add a field in BUILD_PLATFORMS.

When doing multi-arch images, how is the right image selected? Currently, docker buildx --platform=windows/amd64 is used to mark an image as suitable for Windows.
Can there be more than one image for that platform with different base images?

Summary of the flow:
FROM mcr.microsoft.com/windows/nanoserver:${WINDOWS_VERSION}
COPY app.exe /app.exe
ENTRYPOINT ["/app.exe"]

WINDOWS_VERSION="2019 1909 2004" # Maybe more in the future based on what's supported
We'll probably have something like (image path not accurate):
gcr.io/gke-images/gke-pd-csi:v1.0.0-windows_2019
gcr.io/gke-images/gke-pd-csi:v1.0.0-windows_1909
gcr.io/gke-images/gke-pd-csi:v1.0.0-windows_2004
For each of these versions we can then multi-arch manifest them so they can be referenced by 1 image.
The following links in build.make already do this:
images=$$(echo "$$build_platforms" | tr ';' '\n' | while read -r os arch suffix; do echo $(IMAGE_NAME):$$arch-$$os-$$tag; done); \
		docker manifest create --amend $(IMAGE_NAME):$$tag $$images; \

What we need to do is expand that images  variable.
The docker manifest create ultimately creates a multi-arch image that looks like gcr.io/gke-images/gke-pd-csi:v1.0.0 that docker will understand based on architecture and platform version to pick.
The os.version from the manifest allows Windows to determine what the best fit version is to run the container.
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1993,
         "digest": "sha256:1234567890abcdef1234567890abcdef1234567890abcdefabcdefabcdefabcdef",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1788,
         "digest": "sha256:1234567890abcdef1234567890abcdef1234567890abcdefabcdefabcdefabcdef",
         "platform": {
            "architecture": "arm",
            "os": "linux",
            "variant": "v7"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1788,
         "digest": "sha256:1234567890abcdef1234567890abcdef1234567890abcdefabcdefabcdefabcdef",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 3826,
         "digest": "sha256:1234567890abcdef1234567890abcdef1234567890abcdefabcdefabcdefabcdef",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.17763.1397"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 3826,
         "digest": "sha256:1234567890abcdef1234567890abcdef1234567890abcdefabcdefabcdefabcdef",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.17134.1305"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 3826,
         "digest": "sha256:1234567890abcdef1234567890abcdef1234567890abcdefabcdefabcdefabcdef",
         "platform": {
            "architecture": "amd64",
            "os": "windows",
            "os.version": "10.0.18363.1016"
         }
      }
   ]
}

thanks @jeremyje for detailed reply.
Just want to point it out that the current image tag for node-driver-registrar is 1809, which seems work for both sac1909 and ltsc 2019. But there is no guarantee, and with new image available, I think we need multiple image tag support.

I created a sloppy draft PR that gets us most of the way there. The build works but it rebuilds stuff because binary targets are unfortunately .PHONY in build.make. It'd be nicer if they were labeled as output files like make output/linux/amd64/gce-pd-csi-driver output/windows/amd64/gce-pd-csi-driver.exe.
That ugly code is here: https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/compare/master...jeremyje:winarch?expand=1
Manifest Output
Looks like using buildx does not produce the platform.version output within the manifests section. :/
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1162,
         "digest": "sha256:f4312f68b8e4565c02d6705fe33a7218dd49b112dd3caeb63f7b3a3b9837a733",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 956,
         "digest": "sha256:661fdc0c98e50923348b410b0139a98d62ba63206c29d970137eaa52499cfa91",
         "platform": {
            "architecture": "amd64",
            "os": "windows"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 956,
         "digest": "sha256:5c04b5ef6c6fc56a18d8e43fff32db09e9b85156aab72afd26d1bdff800679f7",
         "platform": {
            "architecture": "amd64",
            "os": "windows"
         }
      }
   ]
}

Build Output
make PULL_BASE_REF=master REGISTRY_NAME=gcr.io/jeremyje-storage BUILD_PLATFORMS="linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004" push-multiarch
if ! [ "master" ]; then \
        echo >&2 "ERROR: PULL_BASE_REF must be set to 'master', 'release-x.y', or a tag name."; \
        exit 1; \
fi
./release-tools/verify-go-version.sh "go"

======================================================
                  WARNING

  This projects is tested with Go v1.15.
  Your current Go version is v1.14.
  This may or may not be close enough.

  In particular test-gofmt and test-vendor
  are known to be sensitive to the version of
  Go.
======================================================

mkdir -p bin
echo 'linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004' | tr ';' '\n' | while read -r os arch suffix; do \
        if ! (set -x; CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build  -a -ldflags '-X main.version=v1.0.0-38-gc949b4f-dirty -extldflags "-static"' -o "./bin/gce-pd-csi-driver$suffix" ./cmd/gce-pd-csi-driver); then \
                echo "Building gce-pd-csi-driver for GOOS=$os GOARCH=$arch failed, see error(s) above."; \
                exit 1; \
        fi; \
done
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -ldflags -X main.version=v1.0.0-38-gc949b4f-dirty -extldflags "-static" -o ./bin/gce-pd-csi-driver ./cmd/gce-pd-csi-driver
+ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -a -ldflags -X main.version=v1.0.0-38-gc949b4f-dirty -extldflags "-static" -o ./bin/gce-pd-csi-driver.exe 1909 ./cmd/gce-pd-csi-driver
+ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -a -ldflags -X main.version=v1.0.0-38-gc949b4f-dirty -extldflags "-static" -o ./bin/gce-pd-csi-driver.exe 2004 ./cmd/gce-pd-csi-driver
set -ex; \
DOCKER_CLI_EXPERIMENTAL=enabled; \
export DOCKER_CLI_EXPERIMENTAL; \
docker buildx create  --use --name multiarchimage-buildertest; \
trap "docker buildx rm multiarchimage-buildertest" EXIT; \
dockerfile_linux=$(if [ -e ./cmd/gce-pd-csi-driver/Dockerfile ]; then echo ./cmd/gce-pd-csi-driver/Dockerfile; else echo Dockerfile; fi); \
dockerfile_windows=$(if [ -e ./cmd/gce-pd-csi-driver/Dockerfile.Windows ]; then echo ./cmd/gce-pd-csi-driver/Dockerfile.Windows; else echo Dockerfile.Windows; fi); \
if [ 'linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004' ]; then build_platforms='linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004'; else build_platforms="linux amd64"; fi; \
if ! [ -f "$dockerfile_windows" ]; then \
        build_platforms="$(echo "$build_platforms" | sed -e 's/windows *[^ ]* *.exe//g' -e 's/; *;/;/g')"; \
fi; \
pushMultiArch () { \
        tag=$1; \
        echo "$build_platforms" | tr ';' '\n' | while read -r os arch suffix platform_version; do \
                image_tag=$(if [ -z $platform_version ]; then echo $arch-$os-$tag; else echo $arch-$os-$platform_version-$tag; fi); \
                echo $(platform_version); \
                docker buildx build --push \
                        --tag gcr.io/jeremyje-storage/gce-pd-csi-driver:$image_tag \
                        --platform=$os/$arch \
                        --file $(eval echo \${dockerfile_$os}) \
                        --build-arg binary=./bin/gce-pd-csi-driver$suffix \
                        --build-arg PLATFORM_VERSION="$platform_version" \
                        --label revision=v1.0.0-38-gc949b4f-dirty \
                        .; \
        done; \
        images=$(echo "$build_platforms" | tr ';' '\n' | while read -r os arch suffix platform_version; do if [ -z $platform_version ]; then echo gcr.io/jeremyje-storage/gce-pd-csi-driver:$arch-$os-$tag; else echo gcr.io/jeremyje-storage/gce-pd-csi-driver:$arch-$os-$platform_version-$tag; fi; done); \
        docker manifest create --amend gcr.io/jeremyje-storage/gce-pd-csi-driver:$tag $images; \
        docker manifest push -p gcr.io/jeremyje-storage/gce-pd-csi-driver:$tag; \
}; \
if [ master = "master" ]; then \
                : "creating or overwriting canary image"; \
                pushMultiArch canary; \
elif echo master | grep -q -e 'release-*' ; then \
                : "creating or overwriting canary image for release branch"; \
                release_canary_tag=$(echo master | cut -f2 -d '-')-canary; \
                pushMultiArch $release_canary_tag; \
elif docker pull gcr.io/jeremyje-storage/gce-pd-csi-driver:master 2>&1 | tee /dev/stderr | grep -q "manifest for gcr.io/jeremyje-storage/gce-pd-csi-driver:master not found"; then \
                : "creating release image"; \
                pushMultiArch master; \
else \
                : "ERROR: release image gcr.io/jeremyje-storage/gce-pd-csi-driver:master already exists: a new tag is required!"; \
                exit 1; \
fi
+ DOCKER_CLI_EXPERIMENTAL=enabled
+ export DOCKER_CLI_EXPERIMENTAL
+ docker buildx create --use --name multiarchimage-buildertest
multiarchimage-buildertest
+ trap docker buildx rm multiarchimage-buildertest EXIT
+ [ -e ./cmd/gce-pd-csi-driver/Dockerfile ]
+ echo Dockerfile
+ dockerfile_linux=Dockerfile
+ [ -e ./cmd/gce-pd-csi-driver/Dockerfile.Windows ]
+ echo Dockerfile.Windows
+ dockerfile_windows=Dockerfile.Windows
+ [ linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004 ]
+ build_platforms=linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004
+ [ -f Dockerfile.Windows ]
+ [ master = master ]
+ : creating or overwriting canary image
+ pushMultiArch canary
+ tag=canary
+ read -r os arch suffix platform_version
+ tr ; \n
+ echo linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004
+ [ -z ]
+ echo amd64-linux-canary
+ image_tag=amd64-linux-canary
+ platform_version
/bin/sh: 16: platform_version: not found
+ echo

+ eval echo ${dockerfile_linux}
+ echo Dockerfile
+ docker buildx build --push --tag gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-linux-canary --platform=linux/amd64 --file Dockerfile --build-arg binary=./bin/gce-pd-csi-driver --build-arg PLATFORM_VERSION= --label revision=v1.0.0-38-gc949b4f-dirty .
[+] Building 91.6s (16/16) FINISHED
 => [internal] booting buildkit                                                                                1.9s
 => => pulling image moby/buildkit:buildx-stable-1                                                                                1.5s
 => => creating container buildx_buildkit_multiarchimage-buildertest0                                                                                0.4s
 => [internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 1.36kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 98B                                                                                0.0s
 => [internal] load metadata for docker.io/library/golang:1.13.4                                                                                3.8s
 => [internal] load metadata for k8s.gcr.io/build-image/debian-base-amd64:v2.1.3                                                                                0.6s
 => [base 1/2] FROM k8s.gcr.io/build-image/debian-base-amd64:v2.1.3@sha256:dc06e242160076b72bd75135fb3dd0a9e91f386b2d812ec10cbf9e65864c755d                                                                                2.2s
 => => resolve k8s.gcr.io/build-image/debian-base-amd64:v2.1.3@sha256:dc06e242160076b72bd75135fb3dd0a9e91f386b2d812ec10cbf9e65864c755d                                                                                0.0s
 => => sha256:dc06e242160076b72bd75135fb3dd0a9e91f386b2d812ec10cbf9e65864c755d 529B / 529B                                                                                0.0s
 => => sha256:3882d22b389f3fc77811b195add48fc77b7fa9290e41b40fa6babb328070f5a0 1.47kB / 1.47kB                                                                                0.0s
 => => sha256:4ba180b702c8b29f4d24cb24eeb91a26a5924e797a806bbca1b73d26b5fe8b1e 21.09MB / 21.09MB                                                                                0.7s
 => => unpacking k8s.gcr.io/build-image/debian-base-amd64:v2.1.3@sha256:dc06e242160076b72bd75135fb3dd0a9e91f386b2d812ec10cbf9e65864c755d                                                                                1.2s
 => [internal] load build context                                                                                6.9s
 => => transferring context: 229.29MB                                                                                6.8s
 => [builder 1/4] FROM docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                19.0s
 => => resolve docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                0.0s
 => => sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57 2.16kB / 2.16kB                                                                                0.0s
 => => sha256:9c7d0e5c0bc204b3a36e3f8ff320741da0bd0225e0a67e224c6265c1e208f80a 51.79MB / 51.79MB                                                                                4.5s
 => => sha256:bd9cab5aeb31283716e9fb362dde95af79db6babf10369f545680c87d0eb427a 120.06MB / 120.06MB                                                                                5.7s
 => => sha256:2a19d2e6789cf0b5bd768167bbbfd1858b41c6ea6755b3536fd8f0a47accfd5d 68.52MB / 68.52MB                                                                                3.9s
 => => sha256:de11c2d5a21e1308cf4c1cd78711119a7f733c02b31fa40270880717f9af5895 1.79kB / 1.79kB                                                                                0.0s
 => => sha256:0ed236c950631bdbdfd0a745cc606dc5d74290644f1619073537f596dd9fb0d1 126B / 126B                                                                                1.9s
 => => sha256:a2e245db8bd33174f8fe8cdeed17136905f76b789039ae42e455aabf6dc6d135 5.46kB / 5.46kB                                                                                0.0s
 => => sha256:16ea0e8c887910fe167687a0169991b4c1fc165257aab6b116f6a5e61a64e7af 50.38MB / 50.38MB                                                                                3.4s
 => => sha256:50024b0106d53dcbd29889c65bc040439b2bb8947dac16c8c670db894a2c5ba6 7.81MB / 7.81MB                                                                                3.3s
 => => sha256:ff95660c69375e19e287b2ea87ca9b4be008cd036e95d541515262b86cc521d9 10.00MB / 10.00MB                                                                                2.4s
 => => unpacking docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                11.6s
 => [base 2/2] RUN clean-install udev                                                                                12.8s
 => [builder 2/4] WORKDIR /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver                                                                                0.4s
 => [builder 3/4] ADD . .                                                                                0.5s
 => [builder 4/4] RUN make                                                                                48.0s
 => [stage-2 2/4] COPY --from=builder /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/bin/gce-pd-csi-driver /gce-pd-csi-driver                                                                                0.1s
 => [stage-2 3/4] RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs                                                                                9.4s
 => [stage-2 4/4] COPY --from=base /lib/udev/scsi_id /lib/udev_containerized/scsi_id                                                                                0.0s
 => exporting to image                                                                                8.4s
 => => exporting layers                                                                                4.7s
 => => exporting manifest sha256:809076a4156af8c131475fcd3e5b528230635cba634bf3031f9c94d3bfd30432                                                                                0.0s
 => => exporting config sha256:a77d610396050e90baca6b6dc571ac2fe59acdee5cc13792f15a4b9afb969132                                                                                0.0s
 => => pushing layers                                                                                2.7s
 => => pushing manifest for gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-linux-canary                                                                                0.9s
+ read -r os arch suffix platform_version
+ [ -z 1909 ]
+ echo amd64-windows-1909-canary
+ image_tag=amd64-windows-1909-canary
+ platform_version
/bin/sh: 16: platform_version: not found
+ echo

+ eval echo ${dockerfile_windows}
+ echo Dockerfile.Windows
+ docker buildx build --push --tag gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-1909-canary --platform=windows/amd64 --file Dockerfile.Windows --build-arg binary=./bin/gce-pd-csi-driver.exe --build-arg PLATFORM_VERSION=1909 --label revision=v1.0.0-38-gc949b4f-dirty .
[+] Building 210.4s (12/12) FINISHED
 => [internal] load build definition from Dockerfile.Windows                                                                                0.0s
 => => transferring dockerfile: 1.15kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 34B                                                                                0.0s
 => [internal] load metadata for mcr.microsoft.com/windows/servercore:1909                                                                                1.0s
 => [internal] load metadata for docker.io/library/golang:1.13.4                                                                                1.5s
 => [stage-1 1/2] FROM mcr.microsoft.com/windows/servercore:1909@sha256:a1f4340cefdfbca6f02982e7303fc7825c0e916f91f08506dba78a434d4f766d                                                                                172.1s
 => => resolve mcr.microsoft.com/windows/servercore:1909@sha256:a1f4340cefdfbca6f02982e7303fc7825c0e916f91f08506dba78a434d4f766d                                                                                0.0s
 => => sha256:9038b92872bc268d5c975e84dd94e69848564b222ad116ee652c62e0c2f894b2 1.61GB / 1.61GB                                                                                62.8s
 => => sha256:a1f4340cefdfbca6f02982e7303fc7825c0e916f91f08506dba78a434d4f766d 480B / 480B                                                                                0.0s
 => => sha256:f53aaf90df7e00109bcba3fc3697d720bb367af73ad6cc8e2bb3d2d2080e5232 886B / 886B                                                                                0.0s
 => => sha256:52385474b0b7d5ef70b950304dc876ecd16cdc5306af1d151f8ad9961eb2fdc3 707.28MB / 707.28MB                                                                                50.0s
 => => sha256:7857f78424a17501eabc9224624234df998f60478eef4fb5899c53bca8c8213c 557B / 557B                                                                                0.0s
 => => unpacking mcr.microsoft.com/windows/servercore:1909@sha256:a1f4340cefdfbca6f02982e7303fc7825c0e916f91f08506dba78a434d4f766d                                                                                109.1s
 => CACHED [builder 1/4] FROM docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                0.0s
 => => resolve docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                0.0s
 => [builder 2/4] WORKDIR /code                                                                                0.1s
 => [internal] load build context                                                                                0.2s
 => => transferring context: 232.83kB                                                                                0.1s
 => [builder 3/4] ADD . /code/                                                                                0.5s
 => [builder 4/4] RUN cd /code/ && GOARCH=$(echo windows/amd64 | cut -f2 -d '/') REV=${STAGINGVERSION} make build                                                                                69.1s
 => [stage-1 2/2] COPY --from=builder /code/bin/gce-pd-csi-driver.exe /gce-pd-csi-driver.exe                                                                                0.5s
 => exporting to image                                                                                36.2s
 => => exporting layers                                                                                3.2s
 => => exporting manifest sha256:661fdc0c98e50923348b410b0139a98d62ba63206c29d970137eaa52499cfa91                                                                                0.0s
 => => exporting config sha256:68609f374d9a490dc2482ca6bb5b256b9e443255c7e37b35801e34f79351d8ea                                                                                0.0s
 => => pushing layers                                                                                32.1s
 => => pushing manifest for gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-1909-canary                                                                                0.9s
+ read -r os arch suffix platform_version
+ [ -z 2004 ]
+ echo amd64-windows-2004-canary
+ image_tag=amd64-windows-2004-canary
+ platform_version
/bin/sh: 16: platform_version: not found
+ echo

+ eval echo ${dockerfile_windows}
+ echo Dockerfile.Windows
+ docker buildx build --push --tag gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-2004-canary --platform=windows/amd64 --file Dockerfile.Windows --build-arg binary=./bin/gce-pd-csi-driver.exe --build-arg PLATFORM_VERSION=2004 --label revision=v1.0.0-38-gc949b4f-dirty .
[+] Building 140.9s (12/12) FINISHED
 => [internal] load build definition from Dockerfile.Windows                                                                                0.0s
 => => transferring dockerfile: 40B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 34B                                                                                0.0s
 => [internal] load metadata for mcr.microsoft.com/windows/servercore:2004                                                                                0.7s
 => [internal] load metadata for docker.io/library/golang:1.13.4                                                                                1.6s
 => [builder 1/4] FROM docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                0.0s
 => => resolve docker.io/library/golang:1.13.4@sha256:f9de064473fb30c66bc0d2ddf2cf9a4a9bd38cbd2c5e59ce3bdf8af7b8747a57                                                                                0.0s
 => [stage-1 1/2] FROM mcr.microsoft.com/windows/servercore:2004@sha256:fc0517098cb71e946af157b98b091bcd726c47b11edefaf574b7fba219d60f30                                                                                112.9s
 => => resolve mcr.microsoft.com/windows/servercore:2004@sha256:fc0517098cb71e946af157b98b091bcd726c47b11edefaf574b7fba219d60f30                                                                                0.0s
 => => sha256:5d64df31a952c6b2e12afdb7b137f3ea7127fba59a87f0e16dbdbc1534b76cdf 886B / 886B                                                                                0.0s
 => => sha256:b1cbf80244afa1517eac7802f4d40a04197eead28f978322f2bbdb632340ac5d 676.33MB / 676.33MB                                                                                44.9s
 => => sha256:cfb4d8997234ec93132e343836153a75700b7890cffe754a637a550f10c4fd90 554B / 554B                                                                                0.0s
 => => sha256:295f12394c4f250e83029adb04647faeb736b0c8d275aa9b34f5e3c60a89d0d2 1.23GB / 1.23GB                                                                                43.4s
 => => sha256:fc0517098cb71e946af157b98b091bcd726c47b11edefaf574b7fba219d60f30 479B / 479B                                                                                0.0s
 => => unpacking mcr.microsoft.com/windows/servercore:2004@sha256:fc0517098cb71e946af157b98b091bcd726c47b11edefaf574b7fba219d60f30                                                                                67.9s
 => [internal] load build context                                                                                0.2s
 => => transferring context: 232.83kB                                                                                0.2s
 => CACHED [builder 2/4] WORKDIR /code                                                                                0.0s
 => CACHED [builder 3/4] ADD . /code/                                                                                0.0s
 => CACHED [builder 4/4] RUN cd /code/ && GOARCH=$(echo windows/amd64 | cut -f2 -d '/') REV=${STAGINGVERSION} make build                                                                                0.0s
 => [stage-1 2/2] COPY --from=builder /code/bin/gce-pd-csi-driver.exe /gce-pd-csi-driver.exe                                                                                0.1s
 => exporting to image                                                                                26.3s
 => => exporting layers                                                                                3.0s
 => => exporting manifest sha256:5c04b5ef6c6fc56a18d8e43fff32db09e9b85156aab72afd26d1bdff800679f7                                                                                0.0s
 => => exporting config sha256:0871300610b1db20c24d6f65441ead0c85b5b7fc1c2d06bc083e8d899238a9b0                                                                                0.0s
 => => pushing layers                                                                                22.4s
 => => pushing manifest for gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-2004-canary                                                                                0.9s
+ read -r os arch suffix platform_version
+ read -r os arch suffix platform_version
+ tr ; \n
+ echo linux amd64; windows amd64 .exe 1909; windows amd64 .exe 2004
+ [ -z ]
+ echo gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-linux-canary
+ read -r os arch suffix platform_version
+ [ -z 1909 ]
+ echo gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-1909-canary
+ read -r os arch suffix platform_version
+ [ -z 2004 ]
+ echo gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-2004-canary
+ read -r os arch suffix platform_version
+ images=gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-linux-canary
gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-1909-canary
gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-2004-canary
+ docker manifest create --amend gcr.io/jeremyje-storage/gce-pd-csi-driver:canary gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-linux-canary gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-1909-canary gcr.io/jeremyje-storage/gce-pd-csi-driver:amd64-windows-2004-canary
Created manifest list gcr.io/jeremyje-storage/gce-pd-csi-driver:canary
+ docker manifest push -p gcr.io/jeremyje-storage/gce-pd-csi-driver:canary
sha256:efe24a9b71b9c146244d3cf5badca5622d9f340260fb5a345915cb03c06abb1a
+ docker buildx rm multiarchimage-buildertest

The build works but it rebuilds stuff because binary targets are unfortunately .PHONY in build.make.

That's because "make" has no dependency tracking for them. The only way to be sure that they are up-to-date is to invoke "go build". I've been bitten before by Makefiles for Go projects where "make" didn't actually rebuild anything after making changes...

You can use mytarget: $(foreach *.go) go.mod go.sum) to expand the dependency for all go files in a project to get that effect.

$(foreach *.go) isn't valid: insufficient number of arguments (1) to function 'foreach'. (https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html).
$(shell find . -name '*.go') works, or something like it. This assumes that GNU make is used and find is available.
Is that something that people really use? I'm undecided whether I want to use make to short-cut the build step.

You can see a fix for the manifest os.version issue here - https://github.com/kubernetes-sigs/secrets-store-csi-driver/blob/master/docker/build.sh#L103
I was actually coming to open an issue specifically for that and noticed this one.