Timeout when trying to scan dropbear

Installed Dropbear v2022.83
on an M1 mac via brew and started it as:
dropbear -E -B -R -p 2222
A12504469@T0013278b4 Hetzner % [45036] Dec 20 14:04:20 Running in background
[45070] Dec 20 14:04:54 Child connection from <IP_ADDRESS>:53075
[45070] Dec 20 14:09:54 Exit before auth from <<IP_ADDRESS>:53075>: Timeout before auth

The TerrapinScanner (actually Terrapin_Scanner_MacOS_arm64_darwin) just runs in a timeout
% ./TerrapinScanner -connect localhost:2222
panic: error while reading packet length of binary packet: EOF

goroutine 1 [running]:
main.main()
	/home/fabian/GolandProjects/Terrapin-Scanner/main.go:314 +0x1e4

So I assume dropbear is not affected? If yes I would bounce this back to their project side.

To the best of our knowledge, dropbear is affected. Actually, dropbear has already pushed support for strict key exchange into their GitHub repository (https://github.com/mkj/dropbear/commit/6e43be5c7b99dbee49dc72b6f989f29fdd7e9356), but has yet to be released. Can you confirm that you are using the latest version (which is v1.0.3)? There has been a similar issue (#1) which has already been fixed. If you can, I will dig into this further.

./TerrapinScanner -help -> does not show any Version
I use the Terrapin_Scanner_MacOS_arm64_darwin  downloaded https://github.com/RUB-NDS/Terrapin-Scanner/releases/tag/v1.0.3

Alright, I will have a look at this. And I just noticed that I forgot to add a way to print the current version of the tool.

MacOS binaries for v1.1.0 are now available. Please check whether your issue persists.

./Terrapin_Scanner_MacOS_arm64_darwin -version
Terrapin Vulnerability Scanner v1.1.0

./Terrapin_Scanner_MacOS_arm64_darwin -connect localhost:2222
================================================================================
==================================== Report ====================================
================================================================================

Remote Banner: SSH-2.0-dropbear_2022.83

ChaCha20-Poly1305 support:   true
CBC-EtM support:             false

Strict key exchange support: false

The scanned peer is VULNERABLE to Terrapin.
...

% dropbear -E -F -B -R -p 2222
[59831] Dec 21 06:58:46 Not backgrounding
[60119] Dec 21 07:02:28 Child connection from <IP_ADDRESS>:56007
[60119] Dec 21 07:02:28 Exit before auth from <<IP_ADDRESS>:56007>: Exited normally

OK I consider this Bug fixed. Now need to check which version will fix this.
at https://github.com/mkj/dropbear/tags

You will have to build dropbear from master branch in order to support strict kex. Dropbear has yet to release an updated version (should become 2023.84). There is a release request here https://github.com/mkj/dropbear/issues/270.


Security check. Path traversal

Test for https://owasp.org/www-community/attacks/Path_Traversal prevention

Reminder in case this is relevant here too: https://github.com/enonic/lib-static/issues/77#issuecomment-885006628

lib-static cannot fully guard against it. XP can mitigate issues https://github.com/enonic/xp/issues/8981


[Open source] Modify the copy of the Exchangis1.0's log prompt.

"Already on the last page" is changed to "End of query log"
“已经在最后一页"改为“查询日志结束

”

https://github.com/WeBankFinTech/Exchangis/pull/282，这个pr解决了


Compreface-core fails on authorization failed

Hi, for some reason when trying to run with GPU I get the following error:
ERROR [internal] load metadata for docker.io/library/compreface-core-ba  0.6s
[internal] load metadata for docker.io/library/compreface-core-base:base-cuda100-py37:
failed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
ERROR: Service 'compreface-core' failed to build : Build failed
Here's how to reproduce:
Clone the repository
Go to dev
Run "docker-compose -f docker-compose-gpu.yml up -d"
Am I doing anything wrong ? Thanks a lot anyway, CPU only is awesome (aside from the speed)

The easiest way to use GPU version is to run it from the release:
https://github.com/exadel-inc/CompreFace/releases/download/v1.1.0/CompreFace_1.1.0.zip
all you need is to download the archive, open the custom-builds folder, and choose the custom build with the GPU prefix

Works perfectly, thanks a lot !


Add employees model, fix timestamps, and add common fields

Please provide your name and company
Lyra Health
Link the issue/feature request which this PR is meant to address

Detail what changes this PR introduces and how this addresses the issue/feature request linked above.
This PR addresses the following issues.

Adds employees model to support inclusion of fields like "Name", "Supervisor", in downstream models.
CAST specific timestamp fields as date where the Netsuite UI does not perform timezone conversion. These are currently stored as timestamp with the time set to midnight UTC. Keeping these fields as timestamp causes issues in reporting tools that perform automatic timezone conversion.
Adds additional commonly used fields to accounts, subsidiaries, transaction_lines, transactions, transaction_accounting_lines, customers,  and vendors models.

How did you validate the changes introduced within this PR?
Lyra maintains a fork of this repository. These changes were tested and validated there.
Which warehouse did you use to develop these changes?
Snowflake
Did you update the CHANGELOG?

[ ] Yes

Did you update the dbt_project.yml files with the version upgrade (please leverage standard semantic versioning)? (In both your main project and integration_tests)

[ ] Yes

Feedback
We are so excited you decided to contribute to the Fivetran community dbt package! We continue to work to improve the packages and would greatly appreciate your feedback on our existing dbt packages or what you'd like to see next.
PR Template

Community Pull Request Template (default)

Maintainer Pull Request Template (to be used by maintainers)

Submitted a new PR w/ commits squashed.


esp_lcd: add IRAM attributes (configurable) to panel_io_spi callback functions (IDFGH-10116)

Is your feature request related to a problem?
lcd_spi_pre_trans_cb and lcd_spi_post_trans_color_cb have no IRAM attribute. When the spi master is configured with ESP_INTR_FLAG_IRAM, a cache exception might be thrown.
So currently one cannot use ESP_INTR_FLAG_IRAM together with esp_lcd (at least not with the spi variant).
Describe the solution you'd like.
lcd_spi_pre_trans_cb and lcd_spi_post_trans_color_cb should have a configurable IRAM attribute, so that they can run when flash access is disabled.
Describe alternatives you've considered.
No response
Additional context.
No response

https://github.com/espressif/esp-idf/issues/10698
In the mean time I found out that if I put these functions in IRAM, all works well:
spi_lcd_prepare_cmd_buffer
spi_lcd_prepare_param_buffer
panel_io_spi_tx_param
panel_io_spi_rx_param
lcd_spi_pre_trans_cb
lcd_spi_post_trans_color_cb
(all in components\esp_lcd\src\esp_lcd_panel_io_spi.c)
Yes, this costs some IRAM... but it is not that bad.

@jrahlf May I know more background of your LCD application? Do you want to display something dynamically on the screen during your flash operation? If so, then I'm afraid you will need to put a lot of SPI functions in the IRAM. But if you're OK with a static screen during flash operations, then no SPI transaction is needed during that time.
Also, if you're using esp32s3, we can have other choices to not disable your cache while still keeping your SPI working.


ContactSearch

Brief Description
Please include a brief description of changes. Please also include relavent information gathered while making these changes, as well as the context behind the changes. Finally, list any dependencies that were changed or added.
References Issue
Issue #
Type of change

[ ] Bug fix
[ ] Feature
[ ] Major change (potentially breaking, list anything that is broken below)
[ ] Documentation

Breaking Changes
Briefly list things that were broken as a result of this PR.
Testing done
Describe tests that were used, along with instructions for testing.

[ ] Test1

[ ] Test2
...

[ ] Docker was used.

[ ] Docker was not used and I have listed my configuration below.

System Specifications:

Operating System:
Node Version:
NPM Version:

Checklist:

[ ] My code follows the styling guidelines.
[ ] I have added unit tests and verified that they pass.
[ ] I have used the linter and fixed any linting issues.
[ ] I have commented the code.
[ ] I have adjusted the documentation to match the changed code.
[ ] Prior to submitting the PR, I made sure the latest changes were merged with my branch.
[ ] Existing tests pass locally with changes.

Explanation for unchecked
Provide a brief explanation for why the checklist was not completed.
Additional information:
Provide any additional information that might be useful for this commit.

contact


feat(lanes/loadtime): include lane in reports

Depends on #3825

PR checklist

[ ] Tests written/updated
[ ] Changelog entry added in .changelog (we use unclog to manage our changelog)
[ ] Updated relevant documentation (docs/ or spec/) and code comments

Maybe change the title to something more generic? (Now it is "Rotating Nodes".)


System tick frequencies

Purpose
Systems should be able to tick at specifiable frequencies.
Changes

99% of the development time was spent in JobScheduler.
The job scheduler will run through the phases as before. The difference is that now, once having run through all phases, the job scheduler will replay the phases and tick systems that have yet to accumulate.
A system that 'has yet to accumulate' could be a system that runs each 0.5 seconds, but the latest frametime was 1 second, so the system will be played twice in the current frame.

I have only taken a quick look at the system, but would not a "FixedTick" function be quite handy alongside the normal Tick?


OSSM-2006 Fix HasSynced() [maistra-2.2]

Previously, if the set of namespaces in the multiNamespaceInformer was empty, HasSynced() would return true. This caused controllers to start, even though there are no informers in multiNamespaceeInformer. The controllers would read from the cache (which would return no resources), causing them to perform the reconcile on bad input data. Typically, this would cause the controller to remove resources that shouldn't be removed. Of course, moments later, the namespace list gets initialized, the controllers are notified of the appearance of new resources, and they recreate the resources they had removed a moment ago. Although the end state is correct, for some resource types, such as Routes, their deletion wreaks havoc.
HasSynced() shouldn't return true until SetNamespaces() has been called at least once (this is done by the ServiceMeshMemberRoll controller after it reads the ServiceMeshMemberRoll object for the first time). The informer also shouldn't be initialized with all namespaces, but should remain empty until the actual member namespace list is read from the ServiceMeshMemberRoll.

/test all

/test all


User avatars & icons not loading

Summary
User avatars are not loading in the mobile app. They work fine in the browser.
Environment Information

Device Name: Dalvik/2.1.0 (Linux; U; Android 11; ONEPLUS A5010 Build/RQ3A.211001.001
OS Version: LineageOS 18.1
Mattermost App Version: 1.50.0
Mattermost Server Version: 6.5.0 (and some versions before)

Steps to reproduce

Set up Mattermost with Nginx reverse proxy and Gitlab authentication
Set avatars for some users.
Log in on mobile app with one user
Look into the users list and see that there are no icons

Expected behavior
User avatars should be there
Observed behavior (that appears unintentional)
API requests for user images (/api/v4/users/USERID/image?_=1618945893144) return a 401 Unauthorized. Other API requests work without problems (return a 200 OK). That means chatting, channel/user listing, etc works as expected. Only avatars/icons are missing.
I used mitmproxy to dump the authorization headers. Using the bearer token with curl to access the same api ressource seems to work without issues:
curl -v -i -H 'Authorization: Bearer SECRET' "https://chat.example.com/api/v4/users/USERID/image?_=1636360275627"

I have no idea what makes the requests of the mobile app special. But for some reason the Mattermost server application decides to return a 401 for all users I tested.

I'm experiencing the same problem. The weird thing is that the bearer token itself seems to be valid.
Also only some users are affected.

It seems I made a mistake when interpreting the dump file. The BEARER token is not being sent with the request for the avatars. This issue could potentially be a duplicate of https://github.com/mattermost/mattermost-mobile/issues/4486

Closing some older issues. Please re-open this if the issue still reproduces on the latest version (v2.10),


[FR] Display start of block when hovering closing bracket.

It would be very helpful when hovering a closing bracket a popup would be presented that displays the start of a block. Colored bracket pairs and indent lines are great, but when dealing with looooong loops, ifs, ... , for example a loop with a switch inside, you constantly have to scroll up to check what starts a block.
Quick visual presentation of my proposal:

This would massively reduce the amount of scrolling around checking things.

/duplicate https://github.com/microsoft/vscode/issues/134888


Migrations for exported data

Since the schema of the saved data will change over time, there should be a mechanism for updating the existing files.

First draft for logic of migrations was added


Automatic E2E tests for Keptn

Overall Goal
As a Keptn developer, I need a setup that allows continuous testing and evaluation of the Keptn core-components quality.
This requires:

multiple managed clusters where tests can be run against the latest version of Keptn,
continuous deployment of the master build of Keptn,
notifications to the developers when bugs, regressions, or other failures are detected.

Testing strategies

E2E tests
Chaos tests

Tasks
Setting up the infrastructure to automatically manage the testing clusters.

https://github.com/keptn/keptn/issues/7478

Adapt the CI pipeline to trigger the execution of the new tests on a nightly basis.
Configure Issue notifications for failures.
Provide the initial, limited, set of tests covering the basic use cases of Ketpn.

https://github.com/keptn/keptn/issues/7606

Document how new tests can be added.
Enable/Disable FF on-demand and not have them hardcoded in the test configuration
DoD

As a Keptn operator, I don't need to manage the testing infrastructure.
As a Keptn developer, I can create E2E tests and Chaos tests that are automatically continuously triggered.
As a Keptn developer, I receive feedback periodically on functional and non-functional problems of the code.
CLI and Bridge have a basic coverage via E2E test.

@thisthat is this feature still needed to built ? if so the I would like to work on it :)

@thisthat keep or close?


No CMakeLists inside release archive

Can you add CMakeLists to release?
It helps me alot in adding vorbis to hunter package manager

add FLAC ruslo/hunter#1130
(Ugh. Wrong topic. Comment already deleted)

I agree, why is this documented in CHANGES but not part of the archive?

The release archives are built with "make distcheck". I would take a patch that adds the appropriate files to EXTRADIST in Makefile.am.


Convert timestamp of mysql  to timestamptz of pgsql

默认将mysql type timestamp转换成pgsql type timestamptz，以避免丢失mysql timestamp字段的时区信息

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.const.zl seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Added incoming tag validation

@EvanSnapp see comments. Additionally, we need to make sure we have tests around validating the format of the image tag


Update README.md

Update grammar for better communication of information about the project

CLOSING PR

@ItsSitanshu thank you for your contribution! I added a few quick comments, if you could fix that I would really appreciate it. Thanks!


The regex package isn't thread safe (tracking issue)

I ended up taking a look at the code for the regex package. There are some issues in it which make it not thread safe. I've created the issue Thread safety: need lock for both read and write (_cache and other global variables) in that repository. This issue is for tracking it here.

I've forked the regex package into Charcoal-SE/mrabarnett--mrab-regex and added some changes for thread safety. I need to do more review of the code for the package and coordinate with the author of the package wrt. what changes are needed and getting those changes into the base package.
In the meantime, in PR #7074, I've proposed changing requirements.txt to use the Charcoal-SE version of the package.

I've taken a deeper look at the regex package's C code. It appears that a regex that's actually in use is not thread safe (i.e. two threads can't safely perform an operation with the same compiled regex pattern at the same time).
I thought I had accounted for that possibility in the changes I made which are mentioned above by always using copy.deepcopy() to copy compiled patterns into and out of the implicit _cache. However, I've now found that the C code in regex which implements __deepcopy__, the function which is used to perform a copy.deepcopy(), really just returns a reference to the original compiled regex without performing a copy. So, the above mentioned changes need some work.

I'm not certain at this point that there's actually a thread safety issue within the C code for the regex package. I have put more work into this and taken a deeper dive through the regex package's C code. I have not found a specific thread safety issue which would be affecting us.
What I have seen is that there are substantial errors when running the CI test using a large number of different processes. Those errors go away if workarounds are in place to be quite careful not to use the regex package in a way that could invoke a thread safety issue. OTOH, I haven't demonstrated that errors are not removed as a result of the relatively minor slowdown which the workarounds introduce.
Basically, I still need to perform more investigation.

would it help to use tools like vagrant/afl, or are you already using some of these?, (maybe perhaps you haven't taken a look at this in about a year or so :)


Cafe pin path var is undefined

i believe this was a missing env var, since fixed. closing until we see again


Add coding system for VMP

@nicovn (asked by mail on 04/11/2024)
UCL Saint Luc would like to use the VMP product ID/code in a FHIR message.
See reference:
https://samviewer.digile.be/fr/sam/vmps/26476
On the eHealth FHIR medication site (https://www.ehealth.fgov.be/standards/fhir/medication/artifacts.html#terminology-naming-systems), however, I can’t immediately find an eHealth coding system for this…
Do you have a suggestion for a coding system we could use for the VMP code?

Which type of message? Prescription (WIP)? Medication Line (should be in
the business requirements)? or Dispense (how/why would we use VMP in a
dispense?)
On Mon, Nov 4, 2024 at 10:56 AM Bart Decuypere (eHealth) <
@.***> wrote:

@nicovn https://github.com/nicovn
UCL Saint Luc would like to use the VMP product ID/code in a FHIR message.
See reference:
https://samviewer.digile.be/fr/sam/vmps/26476
On the eHealth FHIR medication site (
https://www.ehealth.fgov.be/standards/fhir/medication/artifacts.html#terminology-naming-systems),
however, I can’t immediately find an eHealth coding system for this…
Do you have a suggestion for a coding system we could use for the VMP code?
—
Reply to this email directly, view it on GitHub
https://github.com/hl7-be/medication/issues/223, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD3HUUCC3MWWTOWZLQYKQ4DZ65AE3AVCNFSM6AAAAABRD4ABLCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGYZTEMZUGY2TSMY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

In a hospital prescription message (for internal use) - resource MedicationRequest

ah, prescription. Yes, that makes sense. Will add to the list and we catch
up in next meeting
On Mon, Nov 4, 2024 at 3:02 PM Nico Vannieuwenhuyze <
@.***> wrote:

In a hospital prescription message (for internal use) - resource
MedicationRequest
—
Reply to this email directly, view it on GitHub
https://github.com/hl7-be/medication/issues/223#issuecomment-2454796884,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD3HUUCBXNE7JI7XWBBN52TZ6546PAVCNFSM6AAAAABRD4ABLCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINJUG44TMOBYGQ
.
You are receiving this because you commented.Message ID:
@.***>


Undefined Method Parse for Time Class Error

Users will encounter an error relating to Undefined Method Parse for Time Class if the Time gem is not loader first inside the helper file.
This minor change will help reduce the issues for users.
A current workaround is to include require 'time' inside the script that is requiring the bittrex gem.

Thanks for the contribution, updates can be found in v0.0.4 https://rubygems.org/gems/bittrex/versions/0.0.4


Invalid Sitekey error even tho it's correct.

Hello, i used capmonster so far and the invalid Sitekey issue did not happen however capmonster is flagged on my target so i started using 2captcha which then gave me the invalid Sitekey error. I then checked if the Sitekey is correct and it is. Is there any solution for it? Complete errorlog:
File "/usr/local/lib/python3.9/site-packages/captchatools/twocap.py", line 64, in get_id
    raise captchaExceptions.WrongSitekeyException()
captchatools.exceptions.WrongSitekeyException: [captchatools] Incorrect google sitekey

The only way I can take a look at it is if the sitekey is provided, but I don't think i'll be able to do much given that the exception is automatically thrown based on 2captcha's response. So, it's 2captcha that thinks the sitekey is invalid.
Are you sure you selected the correct captcha type for the sitekey?

The only way I can take a look at it is if the sitekey is provided, but I don't think i'll be able to do much given that the exception is automatically thrown based on 2captcha's response. So, it's 2captcha that thinks the sitekey is invalid.
Are you sure you selected the correct captcha type for the sitekey?

This is the configurationfile. The Sitekey works finew ith capmonster but capmonster is flagged so i'm trying to use 2captcha
{
"Captcha Stuff": {
"Captcha Service": "2captcha",
"Captcha Service ApiKey": "",
"Site Key": "f5561ba9-8f1e-40ca-9b5b-a0b3f719ef34"
}
}

Make sure you set the correct captcha type for the harvester. I just ran this code and got an answer without any exceptions.
import captchatools
solver = captchatools.captcha_harvesters(solving_site=3, api_key="UPDATE THIS", captcha_type="hcap", sitekey="f5561ba9-8f1e-40ca-9b5b-a0b3f719ef34", captcha_url="https://discord.com/register")
captcha_answer = solver.get_token()
print(captcha_answer)

Haven't heard back from you so I assume everything is working.
Closing.

Hi, yes I forgot to let you know that after adding the type everything is working. Seems like the type is not needed for capmonster. However thank you for helping me out 😉


Upgrade to Play 2.6 RC1

https://groups.google.com/d/topic/play-framework/div4xgSVsjo/discussion

Wow, Travis CI is really struggling with the new version of Play https://travis-ci.org/schaloner/deadbolt-2-java/builds/235131453

The bintray repo it the problem. Takes ages and ends in "Service error" messages when trying to open dependency urls in the browser.
Probably we have to wait until they fixed their service.

http://status.bintray.com/
All Systems Operational Refreshed less than 1 minute ago
Website Operational
REST API Operational
Downloads Operational
Past Incidents
May 23, 2017
No incidents reported today.
May 22, 2017
No incidents reported.
I'll let them know they have an issue

I sent them an email as well already.


RFC: broadcasting

This adds support for ∂⃖{1} broadcasting. WIP to discuss the approach.
The fast path uses derivatives_given_output from https://github.com/JuliaDiff/ChainRulesCore.jl/pull/453, which is defined by @scalar_rule. This allows the forward pass to be simply z = f.(x, y). It's labelled experimental but this is exactly what it's useful for.

The reverse pass uses StructArrays so that rather than allocating an array of tuples and unzipping, it makes arrays dx, dy immediately. StructArrays is already a dependency. This won't work on a GPU right now. Perhaps it should live elsewhere (ChainRules?) and have a GPU fallback.
If the arguments are not the same size (e.g. atan.(rand(2,3), rand(2))) then there is a separate reduction step unbroadcast to reduce (e.g. dy = vec(sum(dy, dims=2)).) That seems a waste but it's not so obvious how to do better.
It is not fused: f.(g.(x)) is split into two steps. This is because the rule for g may need the output, and the rule for f may need the input, which would not be saved if the forward pass was fused.

If there is no scalar rule for f, then the slow path is to save an array of pullbacks on the forward pass. The same StructArrays idea lets us save this and z separately, rather than unzipping an array of tuples.
Typically these pullbacks will each close over one or two numbers, so this array is one or two times the size of z. This slow path will be used for (f∘g).(x), and could probably be used to fuse f.(g.(x)). But the benefit of avoiding an intermediate array on the forward pass must be weighed against storing more numbers in the pullbacks. The fused path is not guaranteed to save any memory.
There are special rules for +,-,*. These ones do fuse, so that z = f.(x .+ g.(y)) stores gy = g.(y) and z, but re-computes x .+ gy if the rule for f needs it, element by element. Perhaps there should be a few more like this. These rules also try to avoid unbroadcast when possible.
All rules are attached to ∂⃖{1} not to rrule, so that they will not affect other packages using ChainRules. Whether that's ultimately a good idea perhaps depends on whether we think one approach is optimal, or whether different packages ought to make different trade-offs. Right now I'm sure this would break things which work elsewhere. Zygote's approach is completely un-fused, and the fastest path at present uses dual numbers, which requires more memory than the fast path here.
Higher derivatives don't really work here, I have not given them any thought. There is an existing rule for map(f,x) which should support them, although it seems tricky to invent cases which actually work. For one first-derivative (f∘g).(x) example below, it was faster than the slow path of this PR.
Some benchmarks are below.

# add https://github.com/mcabbott/Diffractor.jl#splitcast

julia> using Diffractor, Zygote, Tracker, BenchmarkTools
julia> dgrad(x...) = Diffractor.unthunk.(Diffractor.gradient(x...));
julia> zgrad(x...) = Zygote.gradient(x...);
julia> tgrad(x...) = Tracker.gradient(x...);

julia> xs = randn(10_000);
julia> @btime copy($xs);  # times showing mean are January, times without were from September
  min 1.262 μs, mean 2.397 μs (2 allocations, 78.17 KiB)

# Time nothing first, these are offsets unrelated to broadcasting

julia> @btime tgrad(x -> sum(abs2, x), $xs);
  min 19.417 μs, mean 37.570 μs (52 allocations, 548.49 KiB)
julia> @btime zgrad(x -> sum(abs2, x), $xs);
  min 3.281 μs, mean 4.909 μs (2 allocations, 78.17 KiB)
julia> @btime dgrad(x -> sum(abs2, x), $xs);
  min 3.827 μs, mean 5.099 μs (12 allocations, 78.56 KiB)

# Simple function

julia> @btime tgrad(x -> sum(abs2, exp.(x)), $xs);
  min 96.250 μs, mean 110.523 μs (119 allocations, 708.23 KiB) # 2 copies: (708.23 - 548.49)/78.17  is

julia> @btime zgrad(x -> sum(abs2, exp.(x)), $xs);
  min 50.375 μs, mean 63.084 μs (31 allocations, 391.50 KiB)  # with dual numbers -- like 4 copies
  min 49.708 μs, mean 88.805 μs (38 allocations, 469.75 KiB)  # without, thus Zygote.pullback

julia> @btime dgrad(x -> sum(abs2, exp.(x)), $xs);
  min 49.333 μs, mean 70.513 μs (39 allocations, 235.52 KiB)  # fast path -- one copy forward, one back
  min 49.958 μs, mean 68.664 μs (35 allocations, 313.53 KiB)  # slow path -- 3 copies, extra is the closures?
  min 61.167 μs, mean 73.827 μs (27 allocations, 703.94 KiB)  # with `map` rule as before -- worse

# Composed function, Zygote struggles without dual numbers

julia> @btime tgrad(x -> sum(abs2, (identity∘cbrt).(x)), $xs);
  min 132.583 μs, mean 185.010 μs (119 allocations, 708.23 KiB)

julia> @btime zgrad(x -> sum(abs2, (identity∘cbrt).(x)), $xs);
  min 70.375 μs, mean 102.529 μs (31 allocations, 391.64 KiB)   # with dual numbers
  min 39.823 ms, mean 41.298 ms (539576 allocations, 13.73 MiB) # without, thus Zygote.pullback

julia> @btime dgrad(x -> sum(abs2, (identity∘cbrt).(x)), $xs);  # now fails, https://github.com/JuliaDiff/Diffractor.jl/issues/67 .
  55.290 ms (830060 allocations: 49.75 MiB)  # slow path
  14.747 ms (240043 allocations: 7.25 MiB)   # with `map` rule as before -- better!

# Compare same problem unfused

julia> @btime tgrad(x -> sum(abs2, identity.(cbrt.(x))), $xs);
  min 132.542 μs, mean 182.825 μs (119 allocations, 708.23 KiB)

julia> @btime zgrad(x -> sum(abs2, identity.(cbrt.(x))), $xs);
  min 69.250 μs, mean 101.403 μs (31 allocations, 391.50 KiB)

julia> @btime dgrad(x -> sum(abs2, identity.(cbrt.(x))), $xs);
  min 70.875 μs, mean 106.793 μs (52 allocations, 392.12 KiB)  # fast path -- two copies forward, two back
  min 78.209 μs, mean 114.250 μs (48 allocations, 470.14 KiB)  # slow path -- 5 copies
  min 131.708 μs, mean 228.664 μs (39 allocations, 1.30 MiB)   # with `map` rule as before -- worse

# Lazy +,-,* for partial fusing

julia> @btime zgrad(x -> sum(abs2, exp.(2 .* x .- 100)), $xs);
  min 61.709 μs, mean 109.499 μs (21 allocations, 625.47 KiB)  # special rules, 4 more copies than best

julia> @btime dgrad(x -> sum(abs2, exp.(2 .* x .- 100)), $xs);
  min 95.916 μs, mean 162.643 μs (100 allocations, 862.73 KiB) # without special rules
  min 58.583 μs, mean 85.664 μs (49 allocations, 314.11 KiB)   # with lazy rules
  min 72.917 μs, mean 155.654 μs (39 allocations, 1016.78 KiB) # with `map` rule as before

julia> @btime tgrad((x,y) -> sum(abs2, exp.(2 .* x .+ y)), $xs, $(rand(10)'));
  min 1.926 ms, mean 2.286 ms (193 allocations, 6.42 MiB)

julia> @btime zgrad((x,y) -> sum(abs2, exp.(2 .* x .+ y)), $xs, $(rand(10)'));
  min 523.792 μs, mean 963.075 μs (55 allocations, 4.81 MiB) # special rules, fully un-fused

julia> @btime dgrad((x,y) -> sum(abs2, exp.(2 .* x .+ y)), $xs, $(rand(10)'));
  min 856.708 μs, mean 1.222 ms (136 allocations, 5.04 MiB)  # without special rules
  min 657.750 μs, mean 860.824 μs (91 allocations, 2.44 MiB) # with lazy rules
  min 921.750 μs, mean 1.381 ms (69 allocations, 7.94 MiB)   # with `map` rule as before

# Simple closure, in order of speed:

julia> @btime ForwardDiff.derivative(x -> sum((y -> y/x).($xs)), pi/2)
  min 6.025 μs, mean 18.328 μs (2 allocations, 156.30 KiB)

julia> @btime zgrad(x -> sum((y -> y/x).($xs)), pi/2)
  min 37.625 μs, mean 88.717 μs (54 allocations, 861.20 KiB)

julia> @btime tgrad(x -> sum((y -> y/x).($xs)), pi/2)
  min 2.912 ms, mean 3.448 ms (200004 allocations, 5.26 MiB)

julia> @btime dgrad(x -> sum((y -> y/x).($xs)), pi/2)  # previously AssertionError
  min 7.655 ms, mean 8.476 ms (270061 allocations, 8.17 MiB)

# Won't work on GPU

julia> using StructArrays, CUDA
julia> splitcast(f, args...) = StructArrays.components(StructArray(Broadcast.instantiate(Broadcast.broadcasted(f, args...))));
julia> splitmap(f, args...) = StructArrays.components(StructArray(Iterators.map(f, args...)));

julia> splitcast((x,y) -> (x/y, x+y), cu([1,2,3]), cu([4,5,6]))
┌ Warning: Performing scalar indexing on task Task (runnable) @0x00007f09cf37c010.
...
([0.25, 0.4, 0.5], [5, 7, 9])

julia> ans[1]
3-element Vector{Float64}:
 0.25
 0.4
 0.5

julia> splitmap((x,y) -> (x/y, x+y), cu([1,2,3]), cu([4,5,6]))[1]
3-element Vector{Float64}:
 0.25
 0.4
 0.5

What thoughts on merging an imperfect version of this, to get things running, and allow many tests to pass? I don't want to do something which will later make e.g. supporting higher derivatives harder. But I don't have a clear view of what that implies.
On the GPU, simple broadcasts should work (i.e. the fast path, "2") but generic ones (slow path, "3") do not.
Moving these "multimap" / unzip things to ChainRules (or to StructArrays perhaps) can happen afterwards. They could probably use some refinement. Many other comments etc. need tidying.

Codecov Report

Merging #68 (06dd56a) into main (be4eeb5) will increase coverage by 1.54%.
The diff coverage is 75.24%.

@@            Coverage Diff             @@
##             main      #68      +/-   ##
==========================================
+ Coverage   57.04%   58.59%   +1.54%
==========================================
  Files          21       21
  Lines        2158     2246      +88
==========================================
+ Hits         1231     1316      +85
- Misses        927      930       +3

Impacted Files
Coverage Δ

src/stage1/generated.jl
75.56% <0.00%> (-1.15%)
:arrow_down:

src/extra_rules.jl
58.18% <25.00%> (+10.95%)
:arrow_up:

src/stage1/broadcast.jl
75.00% <80.43%> (+20.71%)
:arrow_up:

src/tangent.jl
60.20% <0.00%> (-5.11%)
:arrow_down:

src/stage1/forward.jl
86.98% <0.00%> (-4.11%)
:arrow_down:

src/stage1/recurse_fwd.jl
94.28% <0.00%> (-2.89%)
:arrow_down:

src/stage1/recurse.jl
96.52% <0.00%> (+2.95%)
:arrow_up:

Continue to review full report at Codecov.

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


Inquiry about project

Hello, is this repo for a tutorial? Where can I see the tutorial and do you have plans to add a license? Thanks.

There is no tutorial for this repo. I plan to do it sometime in the future. I've added a license

Thank you @notarious2! I really appreciate your efforts. Looking forward to the tutorial!


Run update recursively, until the Cmd.none is returned

Very nice -- thanks for the update!
Do you have a simple UI example I can use to test this with?

@JordanMarr I've created two new branches in my fork of the FuncUI.
In both of them, I've updated the Examples.CounterApp to use the elmish hook. The changes are aimed at adding the following behaviour:

if Increment is invoked when the counter is equal to 5, the value is reset instead by returning the Cmd.ofMsg Reset from the Increment message handler.
If Reset is called an even number of times, it resets not to 0 but to 1 by returning Cmd.ofMsg Increment.
The rules are pretty artificial but reproduce the problem.

The first branch, cmd-ofmsg-ignored (https://github.com/Thecentury/Avalonia.FuncUI/blob/cmd-ofmsg-ignored/src/Examples/Component Examples/Examples.CounterApp/Main.fs), is based on the current master so the second message (Increment produced from the Reset handler) is ignored and therefore even iterations of Reset produce counter equals to 0 (and not to expected 1).
The second branch, cmd-ofmsg-is-not-ignored (https://github.com/Thecentury/Avalonia.FuncUI/blob/cmd-ofmsg-is-not-ignored/src/Examples/Component Examples/Examples.CounterApp/Main.fs) is based on the branch of the fix. The Increment produced from the Reset handler is not ignored, so even iterations of Reset produce counter = 1.
Please let me know if you'd like to have anything else in these sample programs.

Ok, I see the issue now. It was a naive implementation, so thank you for improving it.
Btw, I got a little confused debugging your example, so I changed it to this:
module Main =
    open Avalonia.Controls
    open Avalonia.FuncUI
    open Avalonia.FuncUI.DSL
    open Avalonia.Layout
    open Avalonia.FuncUI.Elmish.ElmishHook

    type Model = { Count: int }
    type Msg =
        | Increment
        | Decrement
        | Reset
        | Output of string

    let init = { Count = 0 }, Cmd.none

    let update msg model =
        match msg with
        | Increment ->
            let model = { model with Count = model.Count + 1 }
            if model.Count >= 5
            then model, Cmd.ofMsg Reset
            else model, Cmd.none
        | Decrement -> { model with Count = model.Count - 1 }, Cmd.none
        | Reset ->
            { model with Count = 0 }, Cmd.ofMsg (Output "Resetting")
        | Output msg ->
            printfn "OUPUT: %s" msg
            model, Cmd.none

    let view =
        Component
            (fun ctx ->
                let model, dispatch = ctx.useElmish (init, update)

                DockPanel.create [
                    DockPanel.children [
                        Button.create [
                            Button.dock Dock.Bottom
                            Button.onClick (fun _ -> dispatch Reset)
                            Button.content "reset"
                            Button.horizontalAlignment HorizontalAlignment.Stretch
                        ]
                        Button.create [
                            Button.dock Dock.Bottom
                            Button.onClick (fun _ -> dispatch Decrement)
                            Button.content "-"
                            Button.horizontalAlignment HorizontalAlignment.Stretch
                        ]
                        Button.create [
                            Button.dock Dock.Bottom
                            Button.onClick (fun _ -> dispatch Increment)
                            Button.content "+"
                            Button.horizontalAlignment HorizontalAlignment.Stretch
                        ]
                        TextBlock.create [
                            TextBlock.dock Dock.Top
                            TextBlock.fontSize 48.0
                            TextBlock.verticalAlignment VerticalAlignment.Center
                            TextBlock.horizontalAlignment HorizontalAlignment.Center
                            TextBlock.text (string model.Count)
                        ]
                    ]
                ])


Upgrade com.newrelic.agent.java:newrelic-api 8.0.1 -> 8.1.0

This PR contains the following updates:

Package
Type
Update
Change

com.newrelic.agent.java:newrelic-api
compile
minor
8.0.1 -> 8.1.0

Release Notes

newrelic/newrelic-java-agent
v8.1.0
Compare Source
New features and improvements

Added support for Webflux 6 1181

Added support for Spring JMS 6 1088

Added support for Mongodb Reactive Streams 1164

Added support for Kafka Streams 1170
Support for Kafka Streams comes in two flavors, metrics and spans. Metrics are enabled by default, while spans are disabled by default. To enable spans add the following to your newrelic.yml configuration under the common stanza:

common:
  class_transformer:
    com.newrelic.instrumentation.kafka-streams-spans:
      enabled: true

Error fingerprint - supply your own errors inbox group names 1195
Are your error occurrences grouped poorly? Set your own error fingerprint via a callback function. A new public API method has been added that will accept a user defined proc. The proc will be invoked for each noticed error and whenever it returns a string, that string will be used as the error group name for the error and will take precedence over any server-side grouping that takes place with the New Relic errors inbox. This gives users much greater control over the grouping of their errors. For more information check our API: Error Grouping and APM: Group errors tab pages.

User tracking 1188
You can now see the number of users impacted by an error group. Identify the end user with a new public API method that will accept a string representation of a user id and associate that user id with the current transaction. Transactions and errors will then have a new enduser.id agent attribute associated with them. This will allow agent users to tag transactions and errors as belonging to given user ids in support of greater filtering and alerting capabilities. For more information check the [Newrelic.setUserId ](https://newrelic.github.io/java-agent-api/javadoc/com/newrelic/api/agent/NewRelic.html#setUserName(java.lang.String) documentation and the Track users impacted with errors inbox page.

Invoking token.link() outside a transaction will instrument that method to start an async transaction 1140

The Kafka clients instrumentation has new metrics to list the nodes: MessageBroker/Kafka/Nodes/<node> 1130

Fixes

Fix ClassCircularityError when agent attaches 1137
Fix NullPointerException thrown when calling addCustomAttributes 1115
Make sure TokenAndRefCount.token is never null 1149
Using a time based cache to store database connection data to prevent a memory leak when instrumenting MySQL client with replication 1114
Decreased the number of threads used in the HttpUrlConnection instrumentation 1145
Fix an issue when HttpUrlConnection is used with the legacy cross application tracing 1142
Performance improvement in Netty’s RequestWrapper 1163
Gracefully shutdown the agent if it encounters issues on startup 1136
Fix WeavedMethod and InstrumentedMethod annotations when applied to constructors.  1153
Performance improvements when using Tomcat 1131
Fixed a bug that caused the agent to not report some exceptions 1176
Updated DockerData to increase the number of container IDs detected 1178
Reduce the number of threads used in Kafka clients instrumentation 1056
Grammar changes 1175 and 1190

Full Changelog: https://github.com/newrelic/newrelic-java-agent/compare/v8.0.1...v8.1.0

[ ] If you want to rebase/retry this PR, check this box

Suggested commit message:
Upgrade New Relic Java Agent 8.0.1 -> 8.1.0

See:
- https://github.com/newrelic/newrelic-java-agent/releases/tag/v8.1.0
- https://github.com/newrelic/newrelic-java-agent/compare/v8.0.1...v8.1.0


Following instructions on sideloading office on the web results in error

Article URL
https://learn.microsoft.com/en-us/office/dev/add-ins/testing/sideload-office-add-ins-for-testing#sideload-a-yeoman-created-add-in-to-office-on-the-web
Issue
Steps:

Create yo office template Word, Javascript

Create new file on Office for the Web, copy link to url

Run npm run start:web -- --document '{url}' with single quotes results in:

Run npm run start:web -- --document {url} without single quotes on the url:

@justmars Are you working on a Mac or a Windows computer? Also, are you able to manually sideload the add-in as described in Manually sideload an add-in to Office on the web ?

Hi @Rick-Kirkham , I'm working on a Mac

I've barely touched a Mac. I'm going to assign this to someone who works with them. I'm pretty sure this is not a documentation issue anyway.

This issue was likely resolved with #4141. If you're still encountering this problem, we can reopen this issue.


nolearn has removed dbn in master branch

we should also remove this benchmark in the example

Feel free :-)

#149 , for this issue


Failed Authentication

I noticed my integration stopped working this morning (couldn't see devices in the integration any more).  I deleted the integration and removed it from HACS, rebooted, re-installed in HACS, rebooted, followed the instructions to get the auth/refresh/user/session ids, closed chrome, re-opned chrome and tried to add the integration again in HA with the data pasted from note pad.  Tried several times and always get a failed authorization response.

Oh no, I also just lost communication (says "Unavailable"). We just lost power for a few hours and thought that was it, but I guess not. My phone app still works fine, so it shouldn't be a Cielo server issue. I don't know where the authentication error you are seeing shows up, maybe I can check mine also, if you tell me where to look.

When mine went unavailable, I deleted the integration and started over with the integration freshly installed.  First step in adding the integration is to set up authentication...that is where it fails.

I'm in the same boat as @yodashut
I've deleted and re-added the integration, but it fails.

I am seeing the same thing. I had thought it might be related to an os update so I rolled the core back to 2023.12.2, removed integration, and reinstalled and still get the same issue.

same comment as vitalmem81. lost power, uninstalled, rebooted, reinstalled, rebooted, got tokens, etc. no joy.

@bodyscape having the same issue. Not sure if cielo was doing this before but I noticed they have a X-Api-Key request header. Perhaps that's another auth config value we need to save that they recently added?

All my Cielo devices I just noticed today are now saying unavailable as well.  I have not gone down the path of uninstalling and re-configuring a new auth token yet..., but based on what I'm seeing here I'm going to wait until this gets debugged a bit further.  Sounds like something changed again in the auth mechanism with Cielo.  I don't know why they won't just publish an API for us to use :(.

Okay, so I'm able to call the https://api.smartcielo.com/web/devices?limit=420 url directly in postman with the Authorization and x-api-key header values set and get a successful response from Cielo's api. So I strongly suspect it's something to do with the integration itself.

They move the api key in the js file so the integration don't find it anymore.. i'll fix it.

not exactly, it's seem now they have 2 different X-Api-Key before it was the same key
for login request : X-Api-Key:
XiZ0PkwbNlQmu3Zrt7XV3EHBj1b1bHU9k02MSJW2
for devices request
X-Api-Key:
7EORvce3Cm80izjdODnGSafHYggxGSKw7U23BVzi
weird!

Are you using a tool to be able to read the main.js file?   Than you!

Thanks again @bodyscape 😁👍🏻


__declspec(dllimport) public: __thiscall google::base::CheckOpMessageBuilder::CheckOpMessageBuilder(char const *)

I include the .h directory,and the .lib library in QtCreator,but appear this bug.Can you put forward some suggestion about this problem.I appreciate it.

is this still an issue?
if yes, please try with the latest commit from master, and please provide more information about your build setup (Compiler used, Operating System, ...)


Can't uninstall / disable IntelliCode

I have the issue described in https://github.com/MicrosoftDocs/intellicode/issues/4
Regular Intellisense is not working, so I am trying to disable or uninstall IntelliCode until a solution is available (and hoping that Intellisense will be enabled). This gives me the message:

Cannot uninstall extension 'Visual Studio IntelliCode - Preview'. Extension 'Python Extension Pack' depends on this.

Do I have to revert back to VS Code 1.24 in order to get regular Intellisense back, or is there some other way to remove IntelliCode?

@firasrb , sorry that you're hitting issues with regular Python Intellisense.
Installing IntelliCode turns on the new Python language service, and it may be that the problems you are seeing with regular IntelliSense relate to that. For issues with the new Python language service itself, rather than the IntelliCode recommendations, please can you report at their GitHub Issues Repo - any messages you're seeing in the Python output window in Visual Studio Code when the failure occurs may be helpful.
We are working on a simple way to disable IntelliCode without having to uninstall it (watch for updates), but in the meantime:

Set 'jediEnabled': true in your VS Code user settings (you'll find its set to false right now) to turn off the new Python Language Service.

Reload the VS Code window (vscode-python will also prompt when jediEnabled changes)

Unfortunately, you'll find that each time VS Code is re-opened for Python work, it will ask you if you wish to re-enable the new language service so IntelliCode can run - say no to these requests. We'll provide a way to disable IntelliCode and prevent these prompts from appearing shortly.
Mark

Thanks for the replay. As I mentioned in the other issue, I found a workaround to get the IntelliCode model.  This means I no longer need to resolve this issue.
It's great to know that you are working on an easier way to disable IntelliCode so that regular Intellisense may be used if need be.

Hi @firasrb, we just released a new version of the extension which adds a setting you can use to turn off VSCode IntelliCode without having to remove the extension (such as, if it was installed as part of the Python Extension Pack).
Just add this to user settings:
"vsintellicode.python.completionsEnabled": false
Viv

@vivlimmsft setting works great in combination with jedi. Thanks


Image, output, script and text updates; stable Cilium release.

Signed-off-by: Cynthia Thomas<EMAIL_ADDRESS>

In general, I'd suggest that the commit message mention something about "Mesos GSG" or similar.


Crash when selecting any manga from any source

Steps to reproduce
Browse any source, and select any manga/gallery
Expected behavior
Manga is opened
Actual behavior
Crash
Crash logs

tachiyomi_crash_logs.txt
Tachiyomi version
1.9.0
Android version
8.1
Device
Samsung Galaxy Tab A10 / SM-T580
Other details
Problem did not exist prior to latest update.
Does not occur in latest base Tachiyomi.
Tested a dev version as well.
In addition to crash, app in general is general is slow to load anything, particularly browsing sources.
This problem also does not occur in base Tachiyomi.
Acknowledgements

[X] This is a TachiyomiSY specific issue that does not happen in Tachiyomi Preview.
[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
[X] I have tried the troubleshooting guide.
[X] I have updated the app to version 1.9.0.
[X] I have updated all installed extensions.
[X] I will fill out all of the requested information in this form.

Use Settings -> Advanced -> Debug -> Force upgrade migrations


Restrict host to listen on localhost only

Is there a way to bind the listen address to localhost instead of 0:0:0:0:9000 ?
sample logs:
[info] k.m.a.DeleteClusterActor - Scheduling updater for 10 seconds
[info] k.m.a.KafkaManagerActor - Adding kafka manager path cache listener...
[info] play.api.Play - Application started (Prod)
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
[info] k.m.a.KafkaManagerActor - Updating internal state...

haven't tried it myself, but you should be able to use -Dhttp.address=<IP_ADDRESS>

haven't tried it myself, but you should be able to use -Dhttp.address=<IP_ADDRESS>


K8s helm extending configs

@ptrovatelli
Related to https://github.com/DefectDojo/django-DefectDojo/pull/2584
Additional to previous PR test for pqsql replicas  and test for extra configs have been added
Old PR can can be closed.

fyi @ccojocar

@madchap,  after we did two days ado some changes inside of travis files i need to reflect the same into this PR `or tests will fail :/

@madchap, after we did two days ado some changes inside of travis files i need to reflect the same into this PR `or tests will fail :/

Fixed

@dsever sorry to insist, but are those commits on dev branch? if yes, you should rebase rather than picking commits. It makes the review much easier
as per the PULL_REQUEST_TEMPLATE.md, you only need to:
this first part is just to "erase" the commits you just picked/merged (assuming your clone is the remote myOrigin and the main github remote is origin;  check the remotes aliases with git remote -v )
git checkout k8s-helm-extending-configs
git rebase -i origin/dev

a file should open, replace in it "pick" by "drop" to erase the commits
Check the result with git log. You should be in the same state as yesterday
Then follow the PULL_REQUEST_TEMPLATE.md  :
git rebase dev k8s-helm-extending-configs
In case of conflict:
 git mergetool
 git rebase --continue

Check the result with git log: again you should see the exact same commits as yesterday, just now they are placed after dev (except if you resolved conflicts)
When everything's fine on your local branch, force push to your myOrigin remote:
git push myOrigin --force-with-lease

To cancel everything:
git rebase --abort

thanks!

lgtm too. Squash and merge anyways. @ptrovatelli you want to have a last look? @alles-klar ?

Please take a look https://github.com/DefectDojo/django-DefectDojo/pull/2847
It is squashed

https://github.com/DefectDojo/django-DefectDojo/pull/2847 is easier to review; closing this one


Test empty attachment reference files

Continuation of https://github.com/opendata-mvcr/ssp/pull/491 as well as trello ticket. It includes:

Tests for "empty attachment reference file"
Fixes done by execution tests with the environment variable FIX_ERRORS=true, i.e.
FIX_ERRORS=true gradle test --tests AttachmentsConsistencyTests

Note that I decided not to warn the user but fail with an error on "empty attachment reference file". (Can change if you disagree) The reasoning behind this is the following:

nobody will notify the warning or notify and ignore it. In GitHub action I don't know of any nice warning option to include.
we implement publishment of vocabularies in one tool (SGoV server) so if we implement it once correctly we don't have to care about it anymore.

It is currently not used in SSP-deploy script so it can be safely merged assuming that SGoV server will work same if empty files are removed.

I have added to SSP commit:
"[New] Add attachments consistency tests"


Using aria2c as a downloader when writing to a subdirectory

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I'm running yt-dlp version 2022.04.08 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
I think there's a problem passing an output path with a slash in it to aria2c.
yt-dlp https://www.youtube.com/channel/UCGNPgdt9OqPNeFuUqG9r0Mw/playlists --downloader aria2c --downloader-args aria2c:'-j 16 -s 16 -x 16 -k 1M' -o '%(uploader)s/%(title)s.%(ext)s'
ERROR: Unable to open fragment 0; [Errno 2] No such file or directory: 'Didsbury Art Studio/HOW TO MAKE A SUFFOLK PUFF OR (YO YO)  _ Creative Textile Art Technique _ Didsbury Art Studio.f243.webm.part-Frag0'
If I had to guess, aria2c is expecting yt-dlp to create the path for it. If that's the case, it's a toss-up whether yt-dlp should be creating the directories, or aria2c should be accepting a mkdir-style --parents switch.

ERROR: Unable to open fragment 0; [Errno 2] No such file or directory: 'Didsbury Art Studio/HOW TO MAKE A SUFFOLK PUFF OR (YO YO)  _ Creative Textile Art Technique _ Didsbury Art Studio.f243.webm.part-Frag0'
Traceback (most recent call last):
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/external.py", line 159, in _call_downloader
    src, _ = self.sanitize_open(fragment_filename, 'rb')
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/common.py", line 221, in inner
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/common.py", line 238, in sanitize_open
    f, filename = sanitize_open(filename, open_mode)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/utils.py", line 691, in sanitize_open
    stream = locked_file(filename, open_mode, block=False).__enter__()
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/utils.py", line 2239, in __init__
    self.f = os.fdopen(os.open(filename, flags), mode, encoding=encoding)
FileNotFoundError: [Errno 2] No such file or directory: 'Didsbury Art Studio/HOW TO MAKE A SUFFOLK PUFF OR (YO YO)  _ Creative Textile Art Technique _ Didsbury Art Studio.f243.webm.part-Frag0'

ERROR: aria2c exited with code -1
  File "/home/d/.local/bin/yt-dlp", line 11, in <module>
    sys.exit(main())
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/__init__.py", line 869, in main
    _real_main(argv)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/__init__.py", line 859, in _real_main
    retcode = ydl.download(all_urls)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 3265, in download
    url, force_generic_extractor=self.params.get('force_generic_extractor', False))
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 3237, in wrapper
    res = func(*args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1399, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1492, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1613, in process_ie_result
    return self.__process_playlist(ie_result, download)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1812, in __process_playlist
    entry_result = self.__process_iterable_entry(entry, download, extra)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1835, in __process_iterable_entry
    entry, download=download, extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1570, in process_ie_result
    extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1399, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1492, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1613, in process_ie_result
    return self.__process_playlist(ie_result, download)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1812, in __process_playlist
    entry_result = self.__process_iterable_entry(entry, download, extra)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1835, in __process_iterable_entry
    entry, download=download, extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1570, in process_ie_result
    extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1399, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1492, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1548, in process_ie_result
    ie_result = self.process_video_result(ie_result, download=download)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 2648, in process_video_result
    self.process_info(new_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 3120, in process_info
    partial_success, real_download = self.dl(fname, new_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 2846, in dl
    return fd.download(name, new_info, subtitle)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/common.py", line 457, in download
    ret = self.real_download(filename, info_dict)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/dash.py", line 52, in real_download
    return fd.real_download(filename, info_dict)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/external.py", line 70, in real_download
    self.get_basename(), retval))
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/common.py", line 178, in report_error
    self.ydl.report_error(*args, **kargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 950, in report_error
    self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 884, in trouble
    tb_data = traceback.format_list(traceback.extract_stack())

[debug] Invoking downloader on "https://rr1---sn-aigl6nek.googlevideo.com/videoplayback?expire=1649724375&ei=d3dUYozxL9CKvdIPwcqD0AY&ip=<IP_ADDRESS>&id=o-AFBu3DugroDcDUg0lnPZ8JZfsAv7rKo66gx65sgkN_aH&itag=251&source=youtube&requiressl=yes&mh=ZO&mm=31%2C26&mn=sn-aigl6nek%2Csn-5hne6nsy&ms=au%2Conr&mv=m&mvi=1&pl=16&pcm2=yes&initcwndbps=2120000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=10877262&otfp=1&dur=890.441&lmt=1636216421000421&mt=1649702454&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=6211224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&sig=AOq0QJ8wRQIhALPne3bbrfQbYEqPiddvF3OzmouKnGXkpdpykmc4n-T_AiAI2PsGBDcxsQG-TmmCYIkb8_EmHDK8QntaCPhdthI9lQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgYNVg6SdYpJDPlZD-3ihv1JHxrNfJJcrAzbdxjzfP-IICIE_0tDCDkQ2e_4Nz1s0fksQtcOQbLaC20d8OJlvWe2x7"
[download] Destination: Didsbury Art Studio/HOW TO MAKE A SUFFOLK PUFF OR (YO YO)  _ Creative Textile Art Technique _ Didsbury Art Studio.f251.webm
[debug] aria2c command line: aria2c -c --console-log-level=warn --summary-interval=0 --download-result=hide --http-accept-gzip=true --file-allocation=none -x16 -j16 -s16 --min-split-size 1M --header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: en-us,en;q=0.5' --header 'Sec-Fetch-Mode: navigate' --check-certificate=true --remote-time=true --show-console-readout=true -j 16 -s 16 -x 16 -k 1M --dir './Didsbury Art Studio/' --out './HOW TO MAKE A SUFFOLK PUFF OR (YO YO)  _ Creative Textile Art Technique _ Didsbury Art Studio.f251.webm.part' --auto-file-renaming=false -- 'https://rr1---sn-aigl6nek.googlevideo.com/videoplayback?expire=1649724375&ei=d3dUYozxL9CKvdIPwcqD0AY&ip=<IP_ADDRESS>&id=o-AFBu3DugroDcDUg0lnPZ8JZfsAv7rKo66gx65sgkN_aH&itag=251&source=youtube&requiressl=yes&mh=ZO&mm=31%2C26&mn=sn-aigl6nek%2Csn-5hne6nsy&ms=au%2Conr&mv=m&mvi=1&pl=16&pcm2=yes&initcwndbps=2120000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=10877262&otfp=1&dur=890.441&lmt=1636216421000421&mt=1649702454&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=6211224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&sig=AOq0QJ8wRQIhALPne3bbrfQbYEqPiddvF3OzmouKnGXkpdpykmc4n-T_AiAI2PsGBDcxsQG-TmmCYIkb8_EmHDK8QntaCPhdthI9lQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgYNVg6SdYpJDPlZD-3ihv1JHxrNfJJcrAzbdxjzfP-IICIE_0tDCDkQ2e_4Nz1s0fksQtcOQbLaC20d8OJlvWe2x7'

04/11 18:46:18 [ERROR] CUID#7 - Download aborted. URI=https://rr1---sn-aigl6nek.googlevideo.com/videoplayback?expire=1649724375&ei=d3dUYozxL9CKvdIPwcqD0AY&ip=<IP_ADDRESS>&id=o-AFBu3DugroDcDUg0lnPZ8JZfsAv7rKo66gx65sgkN_aH&itag=251&source=youtube&requiressl=yes&mh=ZO&mm=31%2C26&mn=sn-aigl6nek%2Csn-5hne6nsy&ms=au%2Conr&mv=m&mvi=1&pl=16&pcm2=yes&initcwndbps=2120000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=10877262&otfp=1&dur=890.441&lmt=1636216421000421&mt=1649702454&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=6211224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&sig=AOq0QJ8wRQIhALPne3bbrfQbYEqPiddvF3OzmouKnGXkpdpykmc4n-T_AiAI2PsGBDcxsQG-TmmCYIkb8_EmHDK8QntaCPhdthI9lQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgYNVg6SdYpJDPlZD-3ihv1JHxrNfJJcrAzbdxjzfP-IICIE_0tDCDkQ2e_4Nz1s0fksQtcOQbLaC20d8OJlvWe2x7
Exception: [AbstractCommand.cc:403] errorCode=16 URI=https://rr1---sn-aigl6nek.googlevideo.com/videoplayback?expire=1649724375&ei=d3dUYozxL9CKvdIPwcqD0AY&ip=<IP_ADDRESS>&id=o-AFBu3DugroDcDUg0lnPZ8JZfsAv7rKo66gx65sgkN_aH&itag=251&source=youtube&requiressl=yes&mh=ZO&mm=31%2C26&mn=sn-aigl6nek%2Csn-5hne6nsy&ms=au%2Conr&mv=m&mvi=1&pl=16&pcm2=yes&initcwndbps=2120000&vprv=1&mime=audio%2Fwebm&gir=yes&clen=10877262&otfp=1&dur=890.441&lmt=1636216421000421&mt=1649702454&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=6211224&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cgir%2Cclen%2Cotfp%2Cdur%2Clmt&sig=AOq0QJ8wRQIhALPne3bbrfQbYEqPiddvF3OzmouKnGXkpdpykmc4n-T_AiAI2PsGBDcxsQG-TmmCYIkb8_EmHDK8QntaCPhdthI9lQ%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgYNVg6SdYpJDPlZD-3ihv1JHxrNfJJcrAzbdxjzfP-IICIE_0tDCDkQ2e_4Nz1s0fksQtcOQbLaC20d8OJlvWe2x7
  -> [RequestGroup.cc:760] errorCode=16 Download aborted.
  -> [AbstractDiskWriter.cc:224] errNum=13 errorCode=16 Failed to open the file ./Didsbury Art Studio//./HOW TO MAKE A SUFFOLK PUFF OR (YO YO)  _ Creative Textile Art Technique _ Didsbury Art Studio.f251.webm.part, cause: Permission denied

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.

ERROR: aria2c exited with code 16
  File "/home/d/.local/bin/yt-dlp", line 11, in <module>
    sys.exit(main())
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/__init__.py", line 869, in main
    _real_main(argv)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/__init__.py", line 859, in _real_main
    retcode = ydl.download(all_urls)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 3265, in download
    url, force_generic_extractor=self.params.get('force_generic_extractor', False))
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 3237, in wrapper
    res = func(*args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1399, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1492, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1613, in process_ie_result
    return self.__process_playlist(ie_result, download)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1812, in __process_playlist
    entry_result = self.__process_iterable_entry(entry, download, extra)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1835, in __process_iterable_entry
    entry, download=download, extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1570, in process_ie_result
    extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1399, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1492, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1613, in process_ie_result
    return self.__process_playlist(ie_result, download)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1812, in __process_playlist
    entry_result = self.__process_iterable_entry(entry, download, extra)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1835, in __process_iterable_entry
    entry, download=download, extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1570, in process_ie_result
    extra_info=extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1399, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1408, in wrapper
    return func(self, *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1492, in __extract_info
    return self.process_ie_result(ie_result, download, extra_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 1548, in process_ie_result
    ie_result = self.process_video_result(ie_result, download=download)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 2648, in process_video_result
    self.process_info(new_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 3120, in process_info
    partial_success, real_download = self.dl(fname, new_info)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 2846, in dl
    return fd.download(name, new_info, subtitle)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/common.py", line 457, in download
    ret = self.real_download(filename, info_dict)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/external.py", line 70, in real_download
    self.get_basename(), retval))
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/downloader/common.py", line 178, in report_error
    self.ydl.report_error(*args, **kargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 950, in report_error
    self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
  File "/home/d/.local/lib/python3.6/site-packages/yt_dlp/YoutubeDL.py", line 884, in trouble
    tb_data = traceback.format_list(traceback.extract_stack())

Provide non-DRM example

Cannot reproduce. Check that you have access to the directory
> ./yt-dlp.sh --ignore-conf https://www.youtube.com/channel/UCGNPgdt9OqPNeFuUqG9r0Mw/playlists --downloader aria2c --downloader-args aria2c:'-j 16 -s 16 -
x 16 -k 1M' -o '%(uploader)s/%(title)s.%(ext)s' -vU
[debug] Command-line config: ['--ignore-conf', 'https://www.youtube.com/channel/UCGNPgdt9OqPNeFuUqG9r0Mw/playlists', '--downloader', 'aria2c', '--downloader-args', 'aria2c:-j 16 -s 16 -x 16 -k 1M', '-o', '%(uploader)s/%(title)s.%(ext)s', '-vU']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.07.18 [135f05ef6] (source)
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Git HEAD: 464bc479a
[debug] Python 3.8.10 (CPython 64bit) - Linux-4.4.0-22000-Microsoft-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2019.11.28, mutagen-1.45.1, pyxattr-0.6.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.07.18, Current version: 2022.07.18
yt-dlp is up to date (2022.07.18)
[debug] [youtube:tab] Extracting URL: https://www.youtube.com/channel/UCGNPgdt9OqPNeFuUqG9r0Mw/playlists
[youtube:tab] UCGNPgdt9OqPNeFuUqG9r0Mw: Downloading webpage
[debug] [youtube:tab] Final URL: https://www.youtube.com/channel/UCGNPgdt9OqPNeFuUqG9r0Mw/playlists
[download] Downloading playlist: Didsbury Art Studio - Playlists
[youtube:tab] Playlist Didsbury Art Studio - Playlists: Downloading 24 videos of 24
[download] Downloading video 1 of 24
[debug] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLo5nZIU3ojGIJ9iowCjSNCRyN-SioK-qF
[youtube:tab] PLo5nZIU3ojGIJ9iowCjSNCRyN-SioK-qF: Downloading webpage
[debug] [youtube:tab] Final URL: https://www.youtube.com/playlist?list=PLo5nZIU3ojGIJ9iowCjSNCRyN-SioK-qF
[youtube:tab] PLo5nZIU3ojGIJ9iowCjSNCRyN-SioK-qF: Downloading API JSON with unavailable videos
[download] Downloading playlist: 24 FUN FACTS ABOUT ME!
[youtube:tab] Playlist 24 FUN FACTS ABOUT ME!: Downloading 1 videos of 1
[download] Downloading video 1 of 1
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=Ha0Mit_Z85c
[youtube] Ha0Mit_Z85c: Downloading webpage
[youtube] Ha0Mit_Z85c: Downloading android player API JSON
[youtube] Ha0Mit_Z85c: Downloading MPD manifest
[youtube] Ha0Mit_Z85c: Downloading MPD manifest
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] Ha0Mit_Z85c: Downloading 1 format(s): 244+251
[download] Didsbury Art Studio/24 FUN FACTS ABOUT ME! _ Didsbury Art Studio.webm has already been downloaded
[download] Finished downloading playlist: 24 FUN FACTS ABOUT ME!
[download] Downloading video 2 of 24
[debug] [youtube:tab] Extracting URL: https://www.youtube.com/playlist?list=PLo5nZIU3ojGKYFeHRoJdXHB5-MEKbD-JK
[youtube:tab] PLo5nZIU3ojGKYFeHRoJdXHB5-MEKbD-JK: Downloading webpage
[debug] [youtube:tab] Final URL: https://www.youtube.com/playlist?list=PLo5nZIU3ojGKYFeHRoJdXHB5-MEKbD-JK
[youtube:tab] PLo5nZIU3ojGKYFeHRoJdXHB5-MEKbD-JK: Downloading API JSON with unavailable videos
[download] Downloading playlist: Macrame
[youtube:tab] Playlist Macrame: Downloading 1 videos of 1
[download] Downloading video 1 of 1
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=tuLL5GdV6jE
[youtube] tuLL5GdV6jE: Downloading webpage
[youtube] tuLL5GdV6jE: Downloading android player API JSON
[youtube] tuLL5GdV6jE: Downloading MPD manifest
[youtube] tuLL5GdV6jE: Downloading MPD manifest
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] tuLL5GdV6jE: Downloading 1 format(s): 243+251
[debug] Invoking dashsegments downloader on "https://manifest.googlevideo.com/api/manifest/dash/expire/1659340689/ei/MTPnYoKZLOWA4-EP3rC40As/ip/<IP_ADDRESS>/id/b6e2cbe46755ea31/source/youtube/requiressl/yes/playback_host/rr4---sn-gwpa-jv36.googlevideo.com/mh/Go/mm/31%2C29/mn/sn-gwpa-jv36%2Csn-gwpa-h55r/ms/au%2Crdu/mv/m/mvi/4/pl/20/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/initcwndbps/237500/spc/lT-KhhTnYyI4Unlal4fTUOC8vEJYa0I/vprv/1/mt/1659319010/fvip/2/keepalive/yes/fexp/24001373%2C24007246/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cspc%2Cvprv%2Citag/sig/AOq0QJ8wRQIhALmNV27XswvkkxiqOlncUxkt3a_wRnF46IxZeGjWWyZVAiBeUDaHmUXcFKdeU8oDDAridlevkNyhod4nunWEHNBTHQ%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIgGC8DfJoKUrp-0fTRcFitDA4gV9wXFvJKl8x7rLywLPoCIQD8rROX7gWZ_RwWPh8QVgCqGc_W0jRlwZh8e5RMKBOavw%3D%3D"
[dashsegments] Total fragments: 172
[dashsegments] Fragment downloads will be delegated to aria2c
[download] Destination: Didsbury Art Studio/HOW TO MAKE 5 BASIC MACRAME BEGINNER KNOTS _ Easy Step By Step Tutorial _ Didsbury Art Studio.f243.webm
[debug] aria2c command line: aria2c -c --console-log-level=warn --summary-interval=0 --download-result=hide --http-accept-gzip=true --file-allocation=none -x16 -j16 -s16 --allow-overwrite=true --allow-piece-length-change=true --header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.115 Safari/537.36' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: en-us,en;q=0.5' --header 'Sec-Fetch-Mode: navigate' --check-certificate=true --remote-time=true --show-console-readout=true -j 16 -s 16 -x 16 -k 1M --dir './Didsbury Art Studio/' --auto-file-renaming=false --file-allocation=none --uri-selector=inorder -i 'Didsbury Art Studio/HOW TO MAKE 5 BASIC MACRAME BEGINNER KNOTS _ Easy Step By Step Tutorial _ Didsbury Art Studio.f243.webm.part.frag.urls'
[DL:3.3MiB][#179252 192KiB/0B][#0fff22 144KiB/0B][#bf0f16 160KiB/0B][#ff4270 48KiB/0B][#61b84a 112KiB/0B](+11)^C
ERROR: Interrupted by user


(FACT-1926) Get primary interface on FreeBSD

Executes "route -n get default" to get primary interface on FreeBSD. Using OS X implementation as both OSes are BSD-based and command output is identical.
Build and tested on FreeBSD 11.2.
[root@freebsd /usr/ports/sysutils/facter]# ./work/.build/bin/facter ipaddress --debug
...
2019-06-10 07:57:14.788301 DEBUG leatherman.execution:93 - executing command: /sbin/route -n get default
2019-06-10 07:57:14.789743 DEBUG | - route to: <IP_ADDRESS>
2019-06-10 07:57:14.789800 DEBUG | - destination: <IP_ADDRESS>
2019-06-10 07:57:14.789820 DEBUG | - mask: <IP_ADDRESS>
2019-06-10 07:57:14.789837 DEBUG | - gateway: <IP_ADDRESS>
2019-06-10 07:57:14.789853 DEBUG | - fib: 0
2019-06-10 07:57:14.789870 DEBUG | - interface: em0
2019-06-10 07:57:14.789894 DEBUG leatherman.execution:469 - completed processing output: closing child pipes.
2019-06-10 07:57:14.790542 DEBUG leatherman.execution:563 - process exited with status code 0.
2019-06-10 07:57:14.790663 DEBUG puppetlabs.facter - got primary interface: "em0"

CLA signed by all contributors.

jenkins please test this


Experiencing a error on: "must have at least one possible schema"

Describe the bug
Im running my code in and end to end test and experience this error
com.github.avrokotlin.avro4k.internal.AvroSchemaGenerationException: Polymorphic descriptor 'ContextDescriptor(kClass: class kotlinx.serialization.KSerializer, original: kotlinx.serialization.Polymorphic(type: kotlin.String, value: kotlinx.serialization.Polymorphic<KSerializer>))' must have at least one possible schema

Code in running, and it happens on the Avro.encode line.e
    @OptIn(ExperimentalSerializationApi::class)
    fun sendAuditEvent(auditEvent: AuditEvent): Boolean {
        val className = auditEvent::class.simpleName
        try {
            val genericData: Any? = Avro.encodeToGenericData(auditEvent)
            val topic = auditEvent.topic
            if (topic.isEmpty()) {
                throw IllegalArgumentException("Topic for audit event must be set, preferably in the event class")
            }

Stack trace
0 = {StackTraceElement@39829} "com.github.avrokotlin.avro4k.internal.schema.PolymorphicVisitor.endPolymorphicVisit(PolymorphicVisitor.kt:21)"
1 = {StackTraceElement@39830} "com.github.avrokotlin.avro4k.internal.schema.SerialDescriptorValueVisitor$DefaultImpls.visitValue(SerialDescriptorVisitor.kt:100)"
2 = {StackTraceElement@39831} "com.github.avrokotlin.avro4k.internal.schema.ValueVisitor.visitValue(ValueVisitor.kt:98)"
3 = {StackTraceElement@39832} "com.github.avrokotlin.avro4k.Avro.schema(Avro.kt:51)"
4 = {StackTraceElement@39833} "com.github.avrokotlin.avro4k.AvroKt.schema(Avro.kt:135)"

Expected behavior
Expected to have a genericData object
Desktop (please complete the following information):

Kotlin version: 2.0.20
Avro4k version: 2.1.0
Other kotlinx-version: json 1.7.3

Additional context
Add any other context about the problem here.

Can you provide at least AuditEvent class (completely with the annotations)  ?
I suspect a wrong definition of the definition or a misusage of contextual serializers, as the errors shows a try to serialize a KSerializer: [...] ContextDescriptor(kClass: class kotlinx.serialization.KSerializer [...] instead of a concrete or abstract class.

@Chuckame you were completly right. I ended up fixing this where a sub class I used did not have serializable annotation on it. AuditEvent is primarily an interface. And my inherited event had some data classes made by me in their fields, which were not annotated. After annotating them It was all good in the hood.
Closing this for now.

For sure that's totally unclear. I'll create a ticket to understand the path of what is the issue!

@vongohren can you provide a minimal example to reproduce your error ?  I don't need all your subclasses and all the fields for sure

Of course! I think this was the main error.
I was also fighting version overriding from Spring, but I think this was the reason things did not work out.
I removed audit event, as it was used as an interface to be able to override a specific value with some configuration class. But I dont think this was affecting the error.
If this does not reproduce, I will provide you with the abstract data class and so on
@Serializable
data class SearchEvent(
val memberPair: MemberPair,
val tripPair: TripPair,
val searchedList: List<List>,
val valid: Boolean,
val id: String
)
data class MemberPair (
val from: String,
val to: String
)
data class TripPair (
val from: String,
val to: String
)

Thank you for helping me fix the exact same issue that you had!!

@SergiioDev what was the error and the related code in error, and what did you do to fix that?

The same error, I was missing the Serializable annotations on my interfaces but again like the error message could be a little bit more!

Are you using the serialization plugin in your gradle configuration ? On my side, I cannot reference a non-serializable class in another serializable class' field -> compilation error 🤔


Add support for Under Filesystem eventual consistency issue

#8426

Merged build finished. Test FAILed.

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

Merged build finished. Test FAILed.

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

Merged build finished. Test FAILed.

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

Merged build finished. Test FAILed.

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

Merged build finished. Test PASSed.

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

Merged build finished. Test PASSed.

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

Merged build finished. Test FAILed.

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

Merged build finished. Test PASSed.

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

Merged build finished. Test FAILed.

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

Jenkins, test this please

Merged build finished. Test PASSed.

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

@aaudiber
Main Changes:

Added the integration tests in the AbstractUnderFileSystemContractTest and tested against S3.
Remove the listExistingStatus.
After we create directory, we use listExistingStatus will not help us to gain the latest written files in the directory. listExistingStatus give us the exact same results as listStatus.
After we create a file, listStatus on this file will return null in the ObjectUnderFileSystem.
Retry on null is strange.

Addressed the other comments, PTAL, thanks

Merged build finished. Test FAILed.

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

Merged build finished. Test PASSed.

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

@aaudiber Addressed the comments, please take another round of review, thanks

@LuQQiu I left one last comment, otherwise looks good to me

Merged build finished. Test PASSed.

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

@aaudiber Removed the default implementations from BaseUnderFileSystem to force overwrite in ConsistentUnderFileSystem and ObjectUnderFileSystem. PTAL, thanks

Thanks @aaudiber
@calvinjia PTAL, thanks

alluxio-bot, merge this please.


[Obsidian] ...

Extension
https://www.raycast.com/marcjulian/obsidian
Description

Error:

Steps To Reproduce
No response
Current Behaviour
No response
Expected Behaviour
No response

There is no error and no description. Will close this.

@raycastbot close this issue


[Feature] Stage as entity follow up work

[ ] As pointed out by @rasmusgo, our audio system needs to take into account the position of the Stage in the world

[ ] Additionally, I think currently the rigid bodies & transforms of the hands are desynchronised when the Stage moves away from the origin. This needs to be addressed

The hands and their rigid bodies become desynchronised because rigid bodies do not play well with hierarchies.
Instead of trying to update all the local-transforms, at least for now, the decision was made to simply avoid/disallow any physics object to be part of a hierarchy.


Add support for stateless components

Addresses #15 & #30 by allowing for stateless components to be used as the Container. This does make the query fire from the width of it's parent, i.e., the intermediate HoC rather than the Container itself, but the added flexibility is a good pay off imho.
I've added react-addons-test-utils also, for the use of findRenderedComponentWithType which makes the tests make a lot more sense with the addition of the intermediate HoC.
Props to @moimael for the suggested solution.

@d6u Looks like the tests failed because Firefox didn't launch. I don't seem to be able to rerun it either to see if it was a one off or not. Any ideas on what needs to be done to get CI to pass?

Hi @rdjpalmer, thanks for looking into this. I don't know why FF wouldn't launch for me as well. I will merge this PR as is so it would get into our way. It might take me couple days to release a new version, though, because as I mentioned it's a breaking change, and I need some time to update the doc and API. Let me know if you have any concerns.

@d6u More than welcome! No problem with the release delay, if there's anything I can help with, let me know 👍


Threading for AWS state deletion

Terminating both EC2 instances and Elasticache clusters takes time with the clusters taking a very long time.  I should investigate ways to background these tasks so that the user can move onto to other tasks.

Some example code to illustrate what I want to do:
import os
import multiprocessing
from tqdm import tqdm

def delete_resource(resource):
    # Simulate long deletion process
    os.remove(resource)
    return 1

resources = [self.aws_state_path, key_pair_path]  # Add all resources to delete here

with multiprocessing.Pool() as pool:
    with tqdm(total=len(resources)) as pbar:
        for i, _ in enumerate(pool.imap_unordered(delete_resource, resources)):
            pbar.update()


Allow multiple arguments to be substituted in one run

TL;DR
A query like
     SELECT
        	COUNT(*) as total_count
    	FROM
        	hive.events.{{ .Inputs.table }}
    	WHERE
        	ds = '{{ .Inputs.ds }}' AND hr = {{ .Inputs.hr }} AND min = {{ .Inputs.min }}

should be substituted.
Type

[x] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[x] Code completed
[x] Smoke tested
[x] Unit tests added
[x] Code documentation added
[x] Any pending items have an associated Issue

Complete description
How did you fix the bug, make the feature etc. Link to any design docs etc
Tracking Issue
https://github.com/lyft/flyte/issues/320
Follow-up issue
https://github.com/lyft/flyte/issues/321

Codecov Report

Merging #92 into master will increase coverage by 0.35%.
The diff coverage is 88.88%.

@@            Coverage Diff             @@
##           master      #92      +/-   ##
==========================================
+ Coverage   55.00%   55.35%   +0.35%
==========================================
  Files          91       92       +1
  Lines        4663     4666       +3
==========================================
+ Hits         2565     2583      +18
+ Misses       1821     1809      -12
+ Partials      277      274       -3

Impacted Files
Coverage Δ

go/tasks/pluginmachinery/utils/template.go
71.25% <86.36%> (+9.05%)
:arrow_up:

go/tasks/pluginmachinery/utils/error_collection.go
100.00% <100.00%> (ø)

go/tasks/pluginmachinery/utils/transformers.go
100.00% <0.00%> (+50.00%)
:arrow_up:

Continue to review full report at Codecov.

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


Add Widgets to Dashboard

Sales/Buys on Community Market + Store-Buys
Games added (all accounts) over time
Games added (main)
Bot Level vs. Bot unlimited
News from /r/steam
Giveaways from /r/FreeGamesOnSteam/ & others
Badge-Crafting (History)

Games added for all accounts would only make sense if there is an update on daily basis, since the real dates when games got added can only be retrieved through account-details OR daily update of our database via Steam-API. This would cause to much traffic for only creating a statistic-widget about when games got added.
I'm now focusing on Master-Account

add hidden table-field for "data_added" and get the data from account-details
add additional task after getting owned games
maybe automate the owned-games-task via API

Found out some Game-Titles on Account-Details-Page aren't matching the names provided by API and also some Titles include HTML-Entities.
Current fix to decode HTML-Entities:
function htmlDecode(string, pass){ 	while(pass--){ string=jQuery('<div/>').html(string).text(); } 	return string; } htmlDecode("Tom Clancy&amp;rsquo;s The Division&amp;trade;", 3)

Since the Accountdetails-Page doesn't provide Appids, those games would only be Unique by their names. The current approach is to retrieve the detailed timestamps via Steam Support-Page - so we need one iteration for every game. That could cause a long BUT abortable and later restartable run, which saves the data after each item of the iteration. When in example all data got added after first run and the user adds 10 games right after, the next run will only scan those 10 added games.
So two widgets are almost complete now:

Games added (main) over time
Bot Levels


Markdown viewer v1.0.0: Update changelog

This is an automated PR that merges changelog update to master.

update package.json with proper appNumber ID once released to marketplace here.


[#855] 3) request flow backend start

This one

permissions: add can_request_membership
resources: [#855] add POST request_membership

Previous ones

settings-ui: [#855] set membership policy
header-ui: [#855] add inert request membership button+modal

rebased

Closed via https://github.com/inveniosoftware/invenio-communities/pull/1132


make sure to watch/trigger reconcile for DataVolumes not owned by VM

Signed-off-by: Michael Henriksen<EMAIL_ADDRESS>
What this PR does / why we need it:
VM controller should make sure to trigger reconcile for DataVolumes referenced (but not owned by the VM) so that printableStatus is set/unset when DataVolume provisioning is in progress.  See bz below
VM snapshot controller should behave similarly in order to update snapshot status values
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
https://bugzilla.redhat.com/show_bug.cgi?id=2010908
Special notes for your reviewer:
Release note:

NONE

/retest

https://bugzilla.redhat.com/show_bug.cgi?id=1938263

@mhenriks can it be that the mentioned bugzilla is not the one you had in mind?

@mhenriks can it be that the mentioned bugzilla is not the one you had in mind?

Yeah sorry, here's the correct one: https://bugzilla.redhat.com/show_bug.cgi?id=2010908
Update description as well

/retest

/retest

/retest

/retest

/lgtm
/approve
looks excellent!

/cherry-pick release-0.49

/retest

/retest

/test pull-kubevirt-e2e-k8s-1.23-sig-compute-cgroupsv2

/test pull-kubevirt-e2e-kind-1.19-vgpu

/test pull-kubevirt-e2e-k8s-1.21-sig-storage


Placeholder with Bootstrap UI not showing

Question
Hello,
I'm using formly with bootstrap UI on Angular 9 and using JSON Schema source.
Here's a simplified example of my JSON Schema:
{
"schema": {
"type": "object",
"properties": {
"ip": { "title": "My IP", "placeholder": "<IP_ADDRESS>", "type": "string", "pattern": "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$", "description": "My awesome IP description" },
}
}
}
I simply load the JSON like this :
this.http.get('/assets/exemple.json').pipe (
tap(({schema}) => {
this.myForm = new FormGroup({});
this.fields = [this.formlyJsonschema.toFieldConfig(schema)]
this.options = {};
}),
).subscribe();
With very little tweaks:
FormlyModule.forRoot({
...
types: [
{ name: 'string', extends: 'input', component:CustomInputComponent},
...
]
And a custom template:
<input class="form-control" [type]="type" [formControl]="formControl" [formlyAttributes]="field">
Everything is working well except the placeholder... I can't set it visible... 😢
I can force a default value with templateOptions but can't read the value from the JSON Schema.
Even if I try to set the to.placeholder in another field it's not working.
Non working example (with placeholder):
<input class="form-control" placement="top" [ngbTooltip]="to.placeholder" [type]="type" [formControl]="formControl" [formlyAttributes]="field">
Working example (with description):
<input class="form-control" placement="top" [ngbTooltip]="to.description" [type]="type" [formControl]="formControl" [formlyAttributes]="field">
I'm maybe missing something, but I couldn't found solution or similar problem since days....
Thank you.

placeholder is not part of json-schema, instead pass it through widget option https://github.com/ngx-formly/ngx-formly/issues/1982#issuecomment-566048527