Fix error UI - do not show double "x"

When do we show the ❌  Unexpected error occurred. line?
It looks weird to show two ❌ on the page. In this case, I only want to see the first error.

Fixed in 0.0.228


[Bug]: Thumbnails Downloadgröße nur 27B

Adapter version

JS-Controller version

Node version

Operating System type
Linux
Operating system version
Ubuntu 22
Describe the bug
Wie angedroht :o) Thumbnail download von Doorbells funktioniert nicht mehr.  Komischerweise funktioniert das Ganze bei den Cams schon noch?!  Homebase laufen.
To reproduce

Go to '...'
Click on '...'
Scroll down to '....'
See error

Screenshots & Logfiles
.
Additional context
.

Hilft das weiter?  In der Eufy App taucht es aber auf.

eusec.0
2022-11-27 11:09:46.625
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.person_name changed: (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:46.570
debug
[euSec.onStateChange] state eusec.0.xxcameras.xx.person_detected changed: false (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:31.691
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.person_name changed: Unknown (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:31.631
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.picture_url changed: https://security-app-eu.eufylife.com/v1/s/g/4xmexMPzKxQ (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:31.631
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.person_detected changed: true (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:31.622
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.last_event_pic_html changed:  (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:31.622
debug
[euSec.onStateChange] state eusec.0.x.cameras.x.last_event_pic_url changed: /eusec.0/x/last_event/x.jpeg (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:31.477
debug
[EufySecurity.onPushMessage] Received push message [{"name":"Doorbell","event_time":1669543770565,"type":91,"station_sn":"x","device_sn":"x","title":"Eufy Security","content":"Doorbell:hunman has been spotted ","push_time":1669543771410,"channel":1,"cipher":147,"event_session":"20221127_110930","event_type":3102,"file_path":"/media/mmcblk0p1/Camera01/h265_20221127110919.dat","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/4mexxMPzKxQ","push_count":1,"notification_style":3}]

eusec.0
2022-11-27 11:09:31.477
debug
[PushNotificationService.onMessage] Normalized push message received [{"name":"Doorbell","event_time":1669543770565,"type":91,"station_sn":"x","device_sn":"xx","title":"Eufy Security","content":"Doorbell:hunman has been spotted ","push_time":1669543771410,"channel":1,"cipher":147,"event_session":"20221127_110930","event_type":3102,"file_path":"/media/mmcblk0p1/Camera01/h265_20221127110919.dat","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/4mexMPzKQ","push_count":1,"notification_style":3}]

eusec.0
2022-11-27 11:09:31.477
debug
[PushNotificationService.onMessage] Raw push message received [{"id":"BF55EC36","from":"348804314802","to":"dUsK_9mbPFfdjCU581TAi-","category":"com.oceanwing.battery.cam","persistentId":"0:1669543771425221%0d2a775cf9fd7ecd","ttl":3600,"sent":"1669543771419","payload":{"device_sn":"xx","payload":{"event_type":3102,"device_sn":"xx","name":"Doorbell","channel":1,"cipher":147,"session_id":"20221127_110930","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/4xmexMxPzKQ","create_time":1669543770565,"file_path":"h265_20221127110919","notification_style":3,"push_count":1,"faceid":0},"station_sn":"T8010P2322161489","google.c.sender.id":"348804314802","title":"Eufy Security","type":"91","push_time":"1669543771410","event_time":"1669543770565","content":"Doorbell:hunman has been spotted "}}]

eusec.0
2022-11-27 11:09:31.477
debug
[PushClient.handleParsedMessage] DataMessageStanza [{"tag":8,"object":{"id":"BF55EC36","from":"348804314802","to":"dUsK_9mbPFfdjCU581TAi-","category":"com.oceanwing.battery.cam","appData":[{"key":"device_sn","value":"T8213P21223805CA"},{"key":"payload","value":"eyJldmVudF90eXBlIjozMTAyLCJkZXZxpY2Vfc24iOiJUODIxM1AyMTIyMzgwNUNBIiwibmFtZSI6IkRvb3JiZWxsIiwiY2hhbm5lbCI6MSwiY2lwaGVyIjoxNDcsInNlc3Npb25xfaWQiOiIyMDIyMTEyN18xMTA5MzAiLCJwaWNfdXJsIjoiaHR0cHM6Ly9zZWN1cml0eSx1hcHAtZXUuZXVmeWxpZmUuY29tL3YxL3MvZy80bWV4TVB6S1EiLCJjcmVhdGVfdGltZSI6MTY2OTU0Mzc3MDU2NSwiZmlsZV9wYXRoIjoiaDI2NV8yMDIyMTEyNzExMDkxOSIsIm5vdGlmaWNhdGlvbl9zdHlsZSI6MywicHVzaF9jb3VudCI6MSwiZmFjZWlkIjowfQ=="},{"key":"station_sn","value":"T8010P2322161489"},{"key":"google.c.sender.id","value":"348804314802"},{"key":"title","value":"Eufy Security"},{"key":"type","value":"91"},{"key":"push_time","value":"1669543771410"},{"key":"event_time","value":"1669543770565"},{"key":"content","value":"Doorbell:hunman has been spotted "}],"persistentId":"0:1669543771425221%0d2a775cf9fd7ecd","ttl":3600,"sent":"1669543771419"}}]

eusec.0
2022-11-27 11:09:21.454
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.last_event_pic_html changed:  (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:21.409
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.last_event_pic_url changed: /eusec.0/xx/last_event/xx.jpeg (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:21.339
debug
[euSec.onStateChange] state eusec.0.xx.cameras.xx.picture_url changed: https://security-app-eu.eufylife.com/v1/s/g/3BxuYalq6xa (ack = true) was already acknowledged, ignore it...

eusec.0
2022-11-27 11:09:21.286
debug
[BatteryDoorbellCamera.processPushNotification] Unhandled doorbell push event [{"name":"Doorbell","event_time":1669543760394,"type":91,"station_sn":"xx","device_sn":"xx","title":"Eufy Security","content":"Doorbell:Something triggered your device","push_time":1669543761206,"channel":1,"cipher":147,"event_session":"20221127_110920","event_type":3308,"file_path":"/media/mmcblk0p1/Camera01/h265_20221127110919.dat","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/3BxfuYalxq6a","push_count":1,"notification_style":3}]

eusec.0
2022-11-27 11:09:21.286
debug
[EufySecurity.onPushMessage] Received push message [{"name":"Doorbell","event_time":1669543760394,"type":91,"station_sn":"xx","device_sn":"xx","title":"Eufy Security","content":"Doorbell:Something triggered your device","push_time":1669543761206,"channel":1,"cipher":147,"event_session":"20221127_110920","event_type":3308,"file_path":"/media/mmcblk0p1/Camera01/h265_20221127110919.dat","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/3BfguYvalqd6a","push_count":1,"notification_style":3}]

eusec.0
2022-11-27 11:09:21.286
debug
[PushNotificationService.onMessage] Normalized push message received [{"name":"Doorbell","event_time":1669543760394,"type":91,"station_sn":"T8010P2322161489","device_sn":"T8213P21223805CA","title":"Eufy Security","content":"Doorbell:Something triggered your device","push_time":1669543761206,"channel":1,"cipher":147,"event_session":"20221127_110920","event_type":3308,"file_path":"/media/mmcblk0p1/Camera01/h265_20221127110919.dat","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/3BuYafglq6xa","push_count":1,"notification_style":3}]

eusec.0
2022-11-27 11:09:21.285
debug
[PushNotificationService.onMessage] Raw push message received [{"id":"BF558AFE","from":"348804314802","to":"dUsK_9mbPFfdjCU581TAi-","category":"com.oceanwing.battery.cam","persistentId":"0:1669543761229786%0d2a775cf9fd7ecd","ttl":3600,"sent":"1669543761222","payload":{"device_sn":"xx","payload":{"event_type":3308,"device_sn":"xx","name":"Doorbell","channel":1,"cipher":147,"session_id":"20221127_110920","pic_url":"https://security-app-eu.eufylife.com/v1/s/g/3BuvYaldxq6a","create_time":1669543760394,"file_path":"h265_20221127110919","notification_style":3,"push_count":1,"faceid":0},"station_sn":"xx","google.c.sender.id":"348804314802","type":"91","title":"Eufy Security","push_time":"1669543761206","content":"Doorbell:Something triggered your device","event_time":"1669543760394"}}]

eusec.0
2022-11-27 11:09:21.285
debug
[PushClient.handleParsedMessage] DataMessageStanza [{"tag":8,"object":{"id":"BF558AFE","from":"348804314802","to":"dUsK_9mbPFfdjCU581TAi-","category":"com.oceanwing.battery.cam","appData":[{"key":"device_sn","value":"T8213P21223805CA"},{"key":"payload","value":"eyJldmVudF90eXBlIjozMzA4LCJkZXZpY2Vfc24iOiJUODIxM1AyMTIyMzgwNUNBIiwibmFtZSI6IkRvb3JiZWxsIiwiY2hhbm5lbCI6MSwiY2lwaGVyIjoxNDcsInNlc3Npb25faWQiOiIyMDIyMTEyN18xMTA5MjAiLCJwaWNfdXJsIjoiaHR0cHM6Ly9zZWN1cml0eS1hcHAtZXUuZXVmeWxxpZmUuY29tL3YxL3MvZy8zQnVxZYWxxNmEiLCJjcmVhdGVfdGltZSI6MTY2OTU0Mzc2MDM5NCwiZmlsZV9wYXRoIjoiaDI2NV8yMDIyMTEyNzExMDkxOSIsIm5vdGlmaWNhdGlvbl9zdHlsZSI6MywicHVzaF9jb3VudCI6MSwiZmFjZWlkIjowfQ=="},{"key":"station_sn","value":"T8010P2322161489"},{"key":"google.c.sender.id","value":"348804314802"},{"key":"type","value":"91"},{"key":"title","value":"Eufy Security"},{"key":"push_time","value":"1669543761206"},{"key":"content","value":"Doorbell:Something triggered your device"},{"key":"event_time","value":"1669543760394"}],"persistentId":"0:1669543761229786%0d2a775cf9fd7ecd","ttl":3600,"sent":"1669543761222"}}]

The download of notification images has been temporarily removed as decryption of these is not yet supported. It will be added back as soon as it is supported.
Due to changes from Eufy it is currently not possible to get the thumbnails. More about this https://github.com/bropat/eufy-security-client/issues/273.


hide some commands behind @

you shouldn't use \makeatletter/\makeatother in your cls. That is quite unnecessary, @ has catcode letter there anyway, and if you do it wrong you will break the LaTeX handling of @ for subsequent packages.


hwdata: 0.360 -> 0.363

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Note: This change may be affected by https://github.com/NixOS/nix/issues/6572.
nix-shell -I nixpkgs=... -p hwdata correctly produces the expected files in /nix/store/acgi1g8vkllzmlhvi8kla0n0qga853hk-hwdata-0.363, however it warns build input /nix/store/5w9wnk36rx4ycyg2p7hf034yviphk9x2-hwdata-0.363 does not exist and pciutils for instance requires the files to be in the latter location instead of the former.
I don't know how to debug this.

This probably needs to target staging due to the mass rebuild.

Awesome, thank you for tending to this pull request, @SuperSandro2000!
I can confirm that building hwdata and pciutils work correctly and without warnings. (I don't quite understand why it didn't work as a FOD, even though it had been that way for quite some time.)


Add CONTRIBUTING.md

This PR adds guidelines for contributing to the project.
Resolves: #20

@haltakov good guidelines


Power supply option for Dragon 32 and other retro pc's

Hi mate,
firstly, thanks for all your efforts.
I have been following your blog but can't find a way to contact you directly.  After your power issues with the dragon, and having had the same problems myself with ti99/4a (Just brought a Dragon32 from UK), i found this little board.
TPS5430 Positive Negative Dual Power Supply Module with Switching 5V 12V 15V Output
https://www.aliexpress.com/item/1005003152185470.html?spm=a2g0o.order_list.0.0.46801802Os4TVj
I have ordered 3 to try, but from my reading you simply get as 12v adaptor, and wire this in parallel to get +12 +5 -5.
Seems very neat.
Take care,
I will built you rom emulator when the dragon 32 arrives.
Paul

Hey Paul. Thanks. Those PSU modules look pretty cool. I'll have to order some myself.
You've reminded me I haven't written anything on my blog for a year ;-)
You can usually email me at kernel@
Good luck building the ROM emulator.


Transaction history view needs viewmodel and bindings

This view is currently entirely unimplemented, other than the visual design.  Need to add:

[ ] viewmodel
[ ] bindings

Moved to decerd repo.


Mcheeseman sles12p2 ml

Added and/or modified existing cygnet files for Machine Learning workflows on Athena

You need to resolve the pandas.cyg from sles12sp2 as it has a conflict, resubmit!


chore: hook for soft warning on circular dependency

chore(internal): hook for soft warning on circular dependency
BREAKING: adds madge as a dev-dependency; requires madge installation in your local dev environment
Simple hook for now to add warning text to the husky hook with a madge report on the count of circular dependencies. Adding a delta is a bit more involved (need to modify local git state), so I'll defer on that for now.

Pull Request Checklist
If this is your first time submitting a pull request to Dendron, copy and paste the full Dendron Review Checklist into this request and check off each item as necessary.
This template contains the short checklist which is used by the Dendron core team.
Testing

[ ] Write Tests
[ ] Confirm existing tests pass
[ ] Confirm manual testing
[ ] If your tests changes an existing snapshot, make sure that snapshots are updated
[ ] If you are adding a new language feature (graphically visible in VS Code/preview/publishing), make sure that it is included in the test workspace

Docs

[ ] if your change reflects documentation changes, also submit a PR to dendron-site and mention the doc PR link in your current PR

Analytics

[ ] if you are adding analytics related changes, make sure the Telemetry docs are updated

looks like this is a breaking change for dev (in the sense that when I run it, it will fail if madge isn't installed).
For dev related breaking changes, can we do the following?

mark it as BREAKING
chore(internal): add circ dep checker

BREAKING: requires madge to be installed

can you add a new note inside dendron.docs under dev.process.close-loop and setup a process for how we close the loop on BREAKING internal changes?

we can later expand this to also add features and other processes as well

notice that this was pre-commit. are we sure this is where we want it (vs pre-push) since it directly impacts the dev workflow?

to close the loop on this, we should also do the following

update [[PR Checklist|dendron://dendron.docs/dev.process.review.checklist]]
make an announcement in the #dev channel about this

updated the PR description, will add to commit message of merge commit when this is merged.
On second thought, push is probably better / less intrusive.
I can make the announcement after merge. Dendron Docs Updates: https://github.com/dendronhq/dendron-docs/commit/16d561a7aac634b64efa76ef21ac99b2e42dfdaf

maybe it would be useful to add an npm script that we can run through Tasks: Run Task
Do you think it's worth mentioning this in the PR template? (especially for external contributors)

@hikchoi - good suggestions. Lemme add a vs code task as a next; I've updated the PR template and also added a link in the husky hook console log to this note which I just added: https://docs.dendron.so/notes/773e0b5a-510f-4c21-acf4-2d1ab3ed741e/#avoiding-circular-dependencies

looks good, we might want to update the documentation in dendron-docs to mention that we want folks to copy the output of the pre-commit hook into the review (vs just running madge)


Reduce Buffering in SDKs

Description
This PR aims to reduce the number of instances the SDKs buffer memory or optimize the cases where buffering is required.
Current Changes

New method writeByteBufferToStream added to CoreUtils. Contains optimizations on accessing or writing the contents of the ByteBuffer into an OutputStream.
FluxUtil.toFluxByteBuffer added an optimization when the InputStream is a FileInputStream. The FileChannel backing the FileInputStream is used to get MappedByteBuffers which defers loading the file's contents into memory until it's used.

All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

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

Testing Guidelines

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

API changes have been detected in com.azure:azure-core. You can review API changes here
API changes
+         public static Mono<Void> writeToOutputStream(Flux<ByteBuffer> content, OutputStream stream)

/azp run java - storage - tests

API changes have been detected in com.azure:azure-core. You can review API changes here
API changes
+         public static Mono<Void> writeToOutputStream(Flux<ByteBuffer> content, OutputStream stream)


Review token refresh flow for OAuth strategy

As a user, I want that my accounts are kept connected, while the service accepts my saved credentials
As a user, I need to reconnect the account when the service does not accept my credentials anymore.
As a user, I need to refresh my tokens automatically.
As a developer, I need to revoke the token when the user disconnects the account to keep compliance with OAuth specifications.
Review the refresh token flow to make sure that
1 - With HTTP 401 response the strategy tries to refresh the token.
2 - Accounts with tokens that can't be refreshed are disconnected.
Acceptance criteria
1 - Integration test with expired token refreshing.
2 - Integration test that disconnects accounts that can't refresh tokens

Added an error parameter to the onRefresh callback to disconnect the accounts that can't be refreshed


Image cmp to use asset description, title and tags

As an author, when adding an image to a page, if that image comes from the DAM and already has a title, a description, I want the image component to reuse that information, so that I don't need to re-enter it in the edit dialog of my image component.

The alt text should be taken:
** from the image description if it is not empty
** from the image title if the description is empty
The caption text should be taken:
** from the image title

h6. Requirements

The author should have the possibility to preview the values coming from DAM, and either take them, or to overwrite them with custom values.
The author should also have the possibility to revert the values to the ones coming from DAM.

completed with https://github.com/Adobe-Marketing-Cloud/aem-core-wcm-components/commit/9e1e9f387e2480b3639d470692d5357c6b751fca


Fresh project fails to build because of unsuported tokio flags in wasm

Describe the bug
i just created the project yesterday. cargo leptos watch fails in the build step because of the following error:

Leptos Dependencies
Please copy and paste the Leptos dependencies and features from your Cargo.toml.
For example:
[workspace.dependencies]
leptos = { version = "0.6", features = ["nightly"] }
leptos_meta = { version = "0.6", features = ["nightly"] }
leptos_router = { version = "0.6", features = ["nightly"] }
leptos_axum = { version = "0.6" }

axum = "0.7"
cfg-if = "1"
console_error_panic_hook = "0.1.7"
console_log = "1"
http = "1"
log = "0.4.20"
simple_logger = "4.2.0"
thiserror = "1"
tokio = { version = "1.33.0", features = ["full"] }
tower = { version = "0.4.13", features = ["full"] }
tower-http = { version = "0.5", features = ["full"] }
wasm-bindgen = "=0.2.92"

To Reproduce
Steps to reproduce the behavior:

create a new project using the following command cargo leptos new -n somename -g "https://github.com/leptos-rs/start-axum-workspace"
accept the nightly features
run cargo leptos watch

Expected behavior
The expected cargo leptos watch behavior.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
now im no tokio expert, but im pretty sure the features = ["full"] part of the tokio dependency is the problem...

Running the provided commands does not reproduce the given error.
cargo leptos new -n somename -g "https://github.com/leptos-rs/start-axum-workspace"
cd somename
cargo leptos watch

Am I misunderstanding something?

Am I misunderstanding something?

i re-created a project today and it works...
the old project still gives me the error though. heres a repo with it in it: https://github.com/cidit/conconway

The repo you linked to contains only a README.

whoopsie daisy, here you go

You probably only want to activate the axum feature on leptos-use in your ssr feature.
https://github.com/cidit/conconway/blob/c8e1064e6e806be04fd36a7b262861e06340a278/app/Cargo.toml#L14C1-L14C73


Serializing response data as a string

This PR fixes #7 by serializing response data into String instead of Vec to transfer responses back to the host.
Sample response from Booster:
{"code":0,"data":"{\"vgs\":-1.189,\"ids\":0.049717817}"}

Opened https://github.com/quartiq/minireq/issues/10 to track this.


Refactor StreamField get_prep_value for closer alignment with JSONField

Follow @laymonage's option 3 from https://github.com/wagtail/wagtail/pull/12216#discussion_r1709619063
Supersedes #12216

Merged in 05d40271aed23098d24456b68068b6f8a2929d6f


Feature/update readme

Update readme.md
Description
Update Readme with instructions about how to install and how to run pygrid
Type of change
Please mark options that are relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist:

[x] I did follow the contribution guidelines
[ ] New Unit tests added. Does not apply
[ ] Unit tests pass locally with my changes. Does not apply

Hi @Benardi . I have updated this PR according to GridNode in order to be consistent

👀


[QUESTION] No format prop for LineChart.Tooltip

Hi. I am trying to customize the value shown when pressing down on a point in the graph. In specific, I want to add a dollar sign in front of the value to indicate a currency value. Please let me know if anyone has been able to accomplish this or if I am looking at the wrong prop object. Thank you.

Hey @shivansal yes that's indeed possible to change the formatting on the cursor tooltip. You can do so as follows:
  const format = ({ value }) => {
    'worklet'
    return `$${value}`
  };

	return (
		...
	        <LineChart.Tooltip textProps={{ format }}  />
		...
	);

Ah okay. thank you


Goals can appear in the wrong channel

Because goals uses a default channel to spit its report out, it can appear in a channel different from where the counter item is incremented. Counter needs to send its connector and channel along so that this does not happen.

I think I fixed this somewhere along the line.


Implement a CCP

If no arguments are supplied then fall back to running a CCP - i.e. command-prompt.
I can almost certainly take the one built from my other project:

https://github.com/skx/z80-playground-cpm-fat

I guess after this I could consider a virtual filesystem, so that when launched with no arguments we had ZORK1, etc, available inside the binary.  That will be a seperate issue, if it seems like a good idea.

Made the minimal required changes, but no joy:

CCP loads
Internal commands work (DIR, ERA[se], TYPE, CLS)
Loading external commands fail with "loading error"

Either our file/read primitives are broken or I'm missing something.
A task for future-steve.

We could just read a line of input and fake a REPL of course ..

Need to rework the work I did here, since file-loading being broken could have been to blame.  Too bad it was a hacky thing, not a real PR
CCP comes from the repo above, but looking into it the original was from here:
http://www.cpm.z80.de/source.html
The only change I made was to remove the  console check for input, and revert my SRCH handler which was pointless.

OK I have something that almost works, but it throws up some problems:

FileOpen should fail if the file doesn't exist.

Creating a file there is wrong.

FileMake should create a file if it is missing.
Casing continues to be a pain

type readme.md fails because the command becomes TYPE README.MD and the suffix of my file is lower-case on-disk.

For the moment I'm gonna do something gross:
	//
	// Ok we have a filename, but we probably have an upper-case
	// filename.
	//
	// Run a glob, and if there's an existing file with the same
	// name then replace with the mixed/lower cased version.
	//
	files, err2 := ioutil.ReadDir(".")
	if err2 == nil {
		for _, n := range files {
			if strings.ToUpper(n.Name()) == fileName {
				fileName = n.Name()
			}
		}
	}

Really I guess I need an "fcb2host" function, which would also do matching.  And of course I need to look at my logging because this stuff is a pain to debug.
I think I can change things a little:

A:FOO.COM -> A/FOO.COM
B:FOO:COM -> B/FOO.COM

However that will require a new CLI flag, something like "-subdirectories" or similar.  We'll see.  That could almost be a different issue as this is getting big and churning, but it feels related as the drive-handling is part of the FCB...

Okay subdirectories are limping into life, but once again I've started to notice some annoying omissions:

ERA needs wildcard support.

Too many changes, I'll take stock again tomorrow, but i think this is a passion project and so I can be a bit loser with decent commits - will rebase and squash - and try to do better.


[OSB/BSO] +monster 4% no food boost

🐛 Bug Report
Eventually will be moved to slash so either prior or during its migration include the new 4% no food boost to monsters without a food cost :)

Is done i think.


The Class Table Spellcasting Progression is Slightly Off

The default class table full spellcasting progress is slightly off from full spellcasting.  Please fix this, it's mildly infuriating to go in and tweak it.

The Sorcerer
| Level | Proficiency Bonus | Features | Cantrips Known | Spells Known | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | 9th |
|:---:|:---:|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| 1st | +2 | Spellcasting, Sorcerous Origin | 4 | 2 | 2 | — | — | — | — | — | — | — | — |
| 2nd | +2 | Font of Magic | 4 | 3 | 3 | — | — | — | — | — | — | — | — |
| 3rd | +2 | Metamagic | 4 | 4 | 4 | 2 | — | — | — | — | — | — | — |
| 4th | +2 | Ability Score Improvement | 5 | 5 | 4 | 3 | — | — | — | — | — | — | — |
| 5th | +3 | Metamagic | 5 | 6 | 4 | 3 | 2 | — | — | — | — | — | — |
| 6th | +3 | Sorcerous Origin feature | 5 | 7 | 4 | 3 | 3 | — | — | — | — | — | — |
| 7th | +3 | Metamagic | 5 | 8 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| 8th | +3 | Ability Score Improvement | 5 | 9 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| 9th | +4 | — | 5 | 10 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| 10th | +4 | Metamagic | 6 | 11 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| 11th | +4 | — | 6 | 12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| 12th | +4 | Ability Score Improvement | 6 | 12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| 13th | +5 | Metamagic | 6 | 13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| 14th | +5 | Sorcerous Origin feature | 6 | 13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| 15th | +5 | Metamagic | 6 | 14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| 16th | +5 | Ability Score Improvement | 6 | 14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| 17th | +6 | Metamagic | 6 | 15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| 18th | +6 | Sorcerous Origin feature | 6 | 15 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| 19th | +6 | Ability Score Improvement | 6 | 15 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| 20th | +6 | Sorcerous Restoration | 6 | 15 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
Here is the correct progression

Looks about right
https://5thsrd.org/character/classes/sorcerer/
https://5thsrd.org/character/classes/druid/
https://5thsrd.org/character/classes/cleric/


http to https redirection added.

http to https redirection added.

Task linked: DUPLO-4315 TF: Add HTTPS redirect support to duplocloud_service_params


Adds Types

Related to: https://github.com/moleculerjs/moleculer/pull/1064

@shawnmcknight Thanks you for pointing this out 😉
Fixed: https://github.com/moleculerjs/moleculer-repl/commit/adb2541ddcdabb9c14bf717a25bc698b509f9e3e


Error on RailsMiniProfiler::Badge trying to render the badge on a redirect response

Rails <IP_ADDRESS>
ruby 2.7.3p183
Hi, I am facing an error on the following line on one of my company apps https://github.com/hschne/rails-mini-profiler/blob/069f9faf0c9843b1b1be5bef70660580bb2598c0/lib/rails_mini_profiler/badge.rb#L49
Looks like the middleware is trying to write the badge to a redirect response that does not responds to the method .body
@original_response.response
["You are being redirected."]

Maybe the problem is on the app internals and not on the profiler middleware, for now I monkey patched the method with the following guard clause
    def modified_body
+     return unless @original_response.response.respond_to?(:body)

      body = @original_response.response.body
      index = body.rindex(%r{}i) || body.rindex(%r{}i)
      if index
        body.dup.insert(index, badge_content)
      else
        body
      end
    end

I will try to find out why our redirect is not a proper rack object and setup a reproducible repo if its apropriate

Hey @cpgo! Thanks for the bug report!
That's interesting. I could imagine that all redirects cause this error, but if you had any steps to reproduce this that would still be awesome! :raised_hands:

Hi @hschne I'm a bit busy today but will try to create something in the next days.
Thank you

@cpgo I could not reproduce this, unfortunately, so I did the next best thing and basically ported your monkey patch :wink:
Rails mini profiler will now ignore responses that don't respond to body and not try to inject a badge into those.

Hi @hschne, I tried  reproducing with a simple redirection from devise but no luck.
We must have a weird middleware on this application, I couldnt track it yet because its a huge codebase


OLS-419: E2e tests for provider and model

Description
E2e tests for provider and model
Type of change

[ ] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library
[x] e2e tests

Related Tickets & Documents

Related Issue #OLS-419
Closes #

/test ?

/test e2e-ols-watsonx-granite13b-chat-v2

/test e2e-ols-openai-gpt35

/approve
/lgtm
thanks for adding these

ci infra issues
/retest


Requesting Smokeping container

Application Name
Smokeping
Application Source Code URL
https://oss.oetiker.ch/smokeping/index.en.html
Application Language
Other
Application Architectures
linux/arm64, linux/amd64
Additional Information
It's written in Perl, but it's widely used. I couldn't find any non-root containers though. :(
Assign to self

[ ] I will create a PR to containerize this application myself

Code of Conduct

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

I don't really have much interest in adding this sorry, maybe there's a image out there you can use instead?


Redisson cluster cannot recover from "missing slot"

A test program is pushing a bunch of requests (evalSha for lock-free evaluation) repeatedly. Then bounced Redis Cluster in the middle of it. The connections were lost, then discovered within seconds, as expected. However, Redisson is stuck unable to recover from this condition:
org.redisson.client.RedisNodeNotFoundException: Node for slot: 13907 hasn't been discovered yet. Check cluster slots coverage using CLUSTER NODES command. Increase value of retryAttempts and/or retryInterval settings.
	at org.redisson.connection.MasterSlaveConnectionManager.createNodeNotFoundException(MasterSlaveConnectionManager.java:554)
	at org.redisson.connection.MasterSlaveConnectionManager.connectionWriteOp(MasterSlaveConnectionManager.java:508)
	at org.redisson.command.RedisExecutor.getConnection(RedisExecutor.java:534)
	at org.redisson.command.RedisExecutor.execute(RedisExecutor.java:121)
	at org.redisson.command.RedisExecutor$2.run(RedisExecutor.java:251)
	at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:672)
	at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:747)
	at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:472)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	... 1 more

Redis cluster state is fine:
<IP_ADDRESS>:6379> cluster nodes
fe0223c0b542837bd94699d1af3c19e4ac31178f <IP_ADDRESS>:6379@16379 master - 0<PHONE_NUMBER>643 2 connected 5461-10922
5d8b390298d2962cf69385d3e15b71dc432d5280 <IP_ADDRESS>:6379@16379 slave af2498fa4bb5ad08751bfb52a954a36964510e59 0<PHONE_NUMBER>000 1 connected
af2498fa4bb5ad08751bfb52a954a36964510e59 <IP_ADDRESS>:6379@16379 myself,master - 0<PHONE_NUMBER>000 1 connected 0-5460
9e3493660fd571eb3454de79fd85776bfe3f81e5 <IP_ADDRESS>:6379@16379 master - 0<PHONE_NUMBER>000 3 connected 10923-16383
9e23832ccbefdd2d20a410848fecc092efd78b1e <IP_ADDRESS>:6379@16379 slave 9e3493660fd571eb3454de79fd85776bfe3f81e5 0<PHONE_NUMBER>000 3 connected
76585e6d75f61b98178df0c6aafcba6a0de0d8b3 <IP_ADDRESS>:6379@16379 slave fe0223c0b542837bd94699d1af3c19e4ac31178f 0<PHONE_NUMBER>541 2 connected

Expected behavior
Eventually discover the hash slot is available.
Actual behavior
Retrying the same sequence of operations does not recover even after 5 minutes.
Steps to reproduce or test case

Start Redis cluster
Loop evalSha across all cluster nodes.
Bounce Redis cluster in the middle of the loop
Observe the failures

Observe that restarting the Redisson (bounce microservice in this case) recovers - so the issue is not in Redis cluster.
Redis version
<IP_ADDRESS>:6379> info
# Server
redis_version:6.2.1
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:fa5dfffb0053744e
redis_mode:cluster
os:Linux 4.14.35-1902.3.1.el7uek.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:8.3.0
process_id:1
process_supervised:no
run_id:84f6b708cd93f23cb33317537d55220e8bd94b61
tcp_port:6379
server_time_usec:1619718169208450
uptime_in_seconds:1922
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:9105433
executable:/data/redis-server
config_file:/usr/local/etc/redis/redis.conf
io_threads_active:0

Redisson version
3.15.4
Redisson configuration
@ApplicationScoped
public class RedissonClientProvider {
   public RedissonClientProvider() {
   }

   @Produces
   @ApplicationScoped
   public RedissonClient cluster(@ConfigProperty(name = "jedis.cluster.addresses") String[] addresses) {
      Config config = new Config();
      config.useClusterServers()
            .addNodeAddress(Arrays.stream(addresses).map(a -> "redis://" + a).toArray(n -> new String[n]))
            .setRetryAttempts(3);
      return Redisson.create(config);
   }
}

Config: just a bunch of hostname:port, no password.
Cluster is the minimal set of nodes: 6 redis containers, dataset is tiny (100K 10Byte strings).
/usr/local/etc/redis/redis.conf:
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

Unable to reproduce. Can you share Redisson log with logging level debug for org.redisson package?

Can you try it with version attached?
redisson-3.15.5-SNAPSHOT.jar.zip

This version appears to recover from this type of failure, thanks.

Thanks for testing! Fixed


CIRCT & Chisel bumping needs to be re-enable

The latest Chisel on master branch will breaks our arithmetic module with following error:
> [error]            ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt4/SRT4.scala:9:8: object leftShift is not a member of package chisel3.utils
> [error] import utils.leftShift
> [error]        ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt8/SRT8.scala:7:8: object leftShift is not a member of package chisel3.utils
> [error] import utils.leftShift
> [error]        ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt16/SRT16.scala:6:8: object leftShift is not a member of package chisel3.utils
> [error] import utils.leftShift
> [error]        ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt16/QDS.scala:8:8: object extend is not a member of package chisel3.utils
> [error] import utils.{extend, sIntToBitPat}
> [error]        ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt16/QDS.scala:19:32: not found: value sIntToBitPat
> [error]         case x => bitPatToUInt(sIntToBitPat(-x, rWidth))
> [error]                                ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt16/SRT16.scala:96:7: not found: value leftShift
> [error]       leftShift(a(1), radixLog2).head(rWidth),
> [error]       ^
> [error] /build/source/dependencies/arithmetic/arithmetic/src/division/srt/srt16/SRT16.scala:97:7: not found: value leftShift
> [error]       leftShift(a(0), radixLog2 + 1).head(rWidth),
> [error]       ^
> [error] 36 errors found

But currently we have no plan to rewrite the arithmetic module, so that the Chisel bump action will never success. Before we migrate to DWBB, the CIRCT & Chisel bumping action is disabled.

To re-enable action, goes to the action page and scroll down to Chisel and CIRCT bumping page, click the "Enable workflow" button.


Allow for a generic request sender instead of only allowing Hyper

Motivation

Allows users to use clients other than Hyper to send requests if they choose
Allows users to create their own sender implementation that wraps the existing Hyper one, perhaps to log outgoing requests.
Lets us drop yup-hyper-mock as a dependency, as it was causing dependency version issues. The tests are simplified as a result.

Breaking Changes

Errors have changed quite a bit. Error::Internal is gone. Error::Http has been replaced with Error::HttpRequest, which now contains an HttpRequestError instead of a hyper::Error. This is to allow SlackWebRequestSender implementors to only need to implement a conversion of their client's errors into HttpRequestError. In addition, the error enums now contain a non-exhaustive hidden field. This allows future expansion of the enums without needing to make future breaking changes.

cc: @BenTheElder @kiyoto

I dropped the newtype wrapper and things work fine. The only issue is if the trait in in scope, in which case you should get an ambiguous method call error message on compile, and can use UFCS to call the correct method.

Might not be necessary for this PR, but we should probably add an example snippet with hyper somewhere.
I think being flexible on the http client is nice, and having our own mocking is a win. Looks pretty nice to me.

Side note: we should probably pick a stable point in all the refactoring soon and get a release out to crates.io soonish, there are a lot of changes since the last release.

Sorry for the delay! Went through a move at the beginning of the month and have been tied up with a few big projects at work. I'm going to resolve the conflict that came up and merge this in tonight. Will cut a 0.15.0 release after merge.


Stop messages are not being sent to webhook

    I believe this is still not functional running v2, the started messages still come through, nothing for stopped.

Originally posted by @jbarnes in https://github.com/mbround18/valheim-docker/discussions/633#discussioncomment-5226432

@jbarnes how are you stopping your server? if i use ctrl+c on window it doesnt trigger stop notification but if i stop using kubernetes it does.

Running on ubuntu 20.04 LTS
I am running docker compose up, docker-compose down to start/stop gracefully
Start message comes through no problems, nothing for stop when using the latter
Additionally even with a full server shutdown (Container is running on an EC2 instance) no change in behaviour

I would have anticipated this shutdown behaviour likely would induce a failure to send a stop message, but alas, even the graceful docker-compose down is not producing the message.

@jbarnes can you try upping your stop grace period?
stop_grace_period: 3m

I can confirm, upping that limit on a server on windows with a xxl world will let it stop

Can confirm this has resolved the issue.
Thanks @mbround18, may be worth a documentation update to save you from more whingers like me.
Thanks again.


Messenger Bot Not sending message

I activated debug to see what is going on... sometimes the bot user receive message but sometimes it doesn't. This is the output when a user send a message and the bot has to reply...the reply is not being send
App 5736 stdout: debug: RECEIVED MESSAGE
App 5736 stdout: debug: CUSTOM FIND CONVO<PHONE_NUMBER>210080<PHONE_NUMBER>210080
App 5736 stdout: debug: WEBHOOK SUCCESS { recipient_id: '1668776163210080' }
On messenger side when the user sent the message it is not blue ticking :

The bot starts working well(sending message again) after me restarting the application . I am using passenger on my server. I am confused, I would like to know what is the problem or where the problem may be.

@MagSag your bot should respond back to facebook every time. make sure that you don't have an error and if so you respond back to fb with 200 status.
I had the same problem each time my local botkit fork and fb doesn't got a response from the server, and i think (not sure as is not officially mentioned in fb documentation) that fb blacklist the server for a while in this case.
I hope that helps

@ouadie-lahdioui I think the error is what I have reported here #1347 I don't know why this error.

let's talk in the other thread


Fix incorrect global read of i8 and f8 on gfx1201

Since the modification in PR #913, the expected amount of data that a VGPR can store has changed to 1 * 8-bit. Although gfx1201 is capable of storing 2 * 8-bit values in a VGPR, it is difficult to maintain two different methods in the current generator. The better way to implement a vgpr storing 2 * 8-bit probably is to refactor the current code. This PR's modification is to patch the missing parts of PR #913. Without it, the VGPR index will be calculated incorrectly. The description needs confirmation from @cmingch and @TonyYHsieh.

The left-hand side shows the code generated by grvw = 1 before modification, where the data will override 3 times in a VGPR. The right-hand side is enable ECCHALF.

gfx1201
[----------] Global test environment tear-down
[==========] 22565 tests from 13 test suites ran. (400003 ms total)
[  PASSED  ] 22565 tests.
hipBLASLt version: 1000

command line: build_615639/release/clients/staging/hipblaslt-test

MI200
[----------] Global test environment tear-down
[==========] 13061 tests from 13 test suites ran. (366684 ms total)
[  PASSED  ] 13061 tests.
hipBLASLt version: 1000

command line: build_615639/release/clients/staging/hipblaslt-test


Randomly generate k8s names for classes and plans

This PR changes service catalog to start generating the k8s.name field as a random guid, rather than using the OSB API ExternalID, as the ExternalID can contain characters or be formatted in ways that are not valid k8s names.
This also removes the option to filter based on k8s.Names, as its no longer a useful feature.

/retest

/re-test


Fixing social icons in footer

Problem in social icons please assign me to solve this issue.

#235 already there


[BUG] Duplicated MOTD after ssh to servers

Describe the bug
I'm getting duplicated MOTD (Thea Head) when logging even on fresh installed machines.
Looks like this:
$ ssh operations@someip
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1041-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Aug  9 09:52:43 UTC 2021

  System load:  0.0               Processes:           121
  Usage of /:   6.6% of 30.84GB   Users logged in:     0
  Memory usage: 10%               IP address for eth0: <IP_ADDRESS>
  Swap usage:   0%

 * Super-optimized for small spaces - read how we shrank the memory
   footprint of MicroK8s to make it the smallest full K8s around.

   https://ubuntu.com/blog/microk8s-memory-optimisation

 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

15 packages can be updated.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable

New release '20.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

       .ed"""" """$$$$be.
     -"           ^""**$$$e.
   ."
Last login: Mon Aug  9 09:52:03 2021 from <removed>
       .ed"""" """$$$$be.
     -"           ^""**$$$e.
   ."

How to reproduce
Steps to reproduce the behavior:

Install cluster
SSH to newly created machine(s)
check MOTD

Expected behavior
The Head should be printed only once
Environment

Cloud provider: All
OS: Ubuntu

Additional context
/etc/motd looks fine:
[operations@xxxx ~]$ cat /etc/motd
       .ed"""" """$$$$be.
     -"           ^""**$$$e.
   ."

DoD checklist

[ ] Changelog updated (if affected version was released)
[ ] COMPONENTS.md updated / doesn't need to be updated
[ ] Automated tests passed (QA pipelines)

[ ] apply
[ ] upgrade

[ ] Case covered by automated test (if possible)
[ ] Idempotency tested
[ ] Documentation updated / doesn't need to be updated
[ ] All conversations in PR resolved
[ ] Backport tasks created / doesn't need to be backported

Currently, deployment creates /etc/motd file with the skull directly. I think is the wrong approach.
Ubuntu uses  update-motd package and creates /etc/update-motd.d dir to store motd in right order. Creating eg. 99-epiphany script seems to be the right way.
In addition, I would add displaying epicli version at the end of this script.


Type Checking with mypy

closes #3
This PR:

Adds mypy to the project's dev dependencies
Adds a mypy config to pyproject.toml to ignore nucypher
Fixes the various errors that running mypy identified
Adds a mypy run to the 'check codebase' github action

It doesn't add anything to the pre-commit config - there are issues running mypy within pre-commit because each hook is run within its own virtualenv and so mypy wouldn't have access to the various project dependencies

Phew. The github action put up a bit of fight but I think I've wrestled it into submission.

I'm not sure why it's still running against 3.7. I think it's just because this pr covers both before and after moving from that to 3.8

any chance we could squash some of these commits? It's a lot of history for what amounts to only ~30 lines changed (outside of lockfile)

sure. I had some grief getting the gh action to behave!


Suggestion on how to incorporate data-dependent (unknown) dimensionality

Previous discussion: https://github.com/data-apis/array-api/issues/97
Resolution was to ignore the case of data-dependent (unknown) dimensionalities.
I have a suggestion how to implement it by adding a new function to the API with a specific interface.
This allows to support variable dimensionality in a large number of practical cases.
Additionally, it allows to partially control dimension sizes that are currently unknown.
Example 1:
x, [d1, d2, d3] = xp.enforce_shape(x, [None, None, None])

enforces dimensionality to be 3, will fail for inputs of other dimensionalities.
If dimensionality is not yet known - will fail in runtime at this operation.
Elements d1, d2 and d3 are integers or symbols, not Nones.
Returned x is either the same tensor, or tensor with attached information about shape.
Main reason for returning a tensor is that operation could not be cut out of the graph if resulting shape is not used to obtain result.
Example 2:
x, [d1, d2, d3] = xp.enforce_shape(x, [d1_input, None, 4])

expects input to have 3 dimensions, first axis matches to (maybe) symbol d1_input, last axis of length 4.
Example 3:
x, [d1, d2, (axes, n_elements), d3] = xp.enforce_shape(x, [1, None, ..., 3])

expects input to have 3 or more dimensions. First axis is of length 1, second of any length, last of length 3.
Note here, that for ellipsis a tuple with two objects is returned: axes corresponds to x.shape[2:-1], and n_elements is a product of elements in axes.
axes is either a tuple of Union[int, Symbol] (if dimensionality is known)
or a Symbol for a tuple of unknown size (if dimensionality is unknown), same type as used to represent unknown shape.
n_elements is either int (if size of all axes is known) or symbol for axis.
Signature
Tensor, List[Union[int, None, AxisSymbol, ellipsis]] -> Tuple[Tensor, List[Union[int, AxisSymbol, EllipsisTuple]]]
EllipsisTuple = Tuple[TupleSymbol, AxisSymbol]
              | Tuple[Tuple[SizeOrSymbol, ...], SizeOrSymbol]
SizeOrSymbol = Union[int, AxisSymbol]

I see this as a good intermediate point: sufficient to deal with multiple practical cases while requiring framework developers to maintain very little.
Downstream package dev perspective

there are cases when a dimensionality should be enforced (e.g. 1d/2d). This is covered by proposed function
there are cases when axes can be split into operation-important and non-important.
There is a generic path to deal with these cases by first reducing to a fixed dimensionality, and converting back afterwards.
Example: last dimension should be rgb, should convert to hsl. Assuming we have a function that implements conversion for 2d array.

x_rgb, [(axes, n_elements), last_axis] = xp.shape_components(x_rgb, [..., None])
x_rgb_2d = xp.reshape(x_rgb, (n_elements, last_axis))
x_hsv_2d = convert_rgb_to_hsv(x_rgb_2d) # or any other function that works with 'fixed' dimensionality
result = xp.reshape(x_hsv_2d, axes + (last_axis,))

if there is a need to e.g. specify last or first dimension, now it is possible with graph-based frameworks too. Standard way is to add validations like tf.assert(...) and bind them in the graph, which can't be done in a cross-framework manner

Frameworks perspective
While the function is novel, it does not introduce any new entities: symbols for axes and symbols for shapes (like TensorShape) should exist anyway.
Function behavior overlaps with and extends tf.set_shape by supporting ellipsis.
For frameworks without data-dependent shapes, this is straightforward to implement based on already exposed shape property.

Hi @arogozhnikov, thanks for your interesting proposal. I have a few questions:

Based on our prior discussion (#97) we landed on the decision that ndim must be statically known but the sizes along each dimension (shape) can be unknown, meaning len(x.shape) == x.ndim always. Therefore, I fail to see why we need enforce_shape. To me introducing it would be cumbersome, ex: what happens if x.ndim is not equal to len([None, None, None]?
In your Example 2, allowing d1 to appear on both sides implies that array libraries must support symbolic operations, which I think is out of scope and also an overkill.

Perhaps I missed something obvious...?

Hi @leofang

In your Example 2, allowing d1 to appear on both sides implies that array libraries must support symbolic operations, which I think is out of scope and also an overkill.

Proposal does not introduce any new requirement for any backend.
Maybe you were confused by using same variable for input and output? I've just renamed input variable.
If backend is define-by-run, d1 can be a number or None. Returned axis is a number. As I mention, for non-graph frameworks, this can be implemented as a plain python function, no obstacles for them.
If backend is symbolic, d1 can be a number, a symbol or None. Symbol support can be marked as optional, but I expect that computations on shapes are too common to ignore the case. Returned axis is a number or symbol.

we landed on the decision that ndim must be statically known but the sizes along each dimension (shape) can be unknown

That's what I mention in the first line.

This drops support for any dynamic shapes in graph computations (which is still quite a lot). If you check how may people talk/ask/comment about ellipsis in einops, you'll see how wide is it. Building something that can work with eager tf, but not symbolic is a so-so solution, same for mxnet and torch.fx. In case API gets traction, you'll get this request immediately
Now why was this decision (allow only known dimensionality) was taken: previously, there was no cross-framework API design that could work for static and dynamic shapes. In this proposal I show that there is a minimalistic solution to this technical problem that isn't too complex and that is sufficient for a number of downstream scenarios, thus decision to ignore dynamic shapes should be reevaluated.

Thanks @arogozhnikov, interesting proposal. I have to admit I find it a little hard to wrap my head around - probably because I have worked with and on eager libraries a lot, and don't have concrete use cases in mind where I've needed something like this.

there are cases when axes can be split into operation-important and non-important.
There is a generic path to deal with these cases by first reducing to a fixed dimensionality, and converting back afterwards.
Example: last dimension should be rgb, should convert to hsl. Assuming we have a function that implements conversion for 2d array.

Let me try to unpack this a little.

There, x_rgb is an N-dimensional array, we don't know what N is, and the same is (n1, n2, ...,  n_N, 3).
And prod(n1, n2, ..., n_N) == n_elements.
To figure out n_elements you introduce shape_components (is this a typo, should it also be enforce_shape?).
Isn't n_elements also calculable as xp.prod(xp.shape(x_rgb)[:-1])? I think yes, and that happens to be easy here because of [..., None] - but if that expression gets more complex, it's harder to express without enforce_shape.

If you have more real-world code example to point at, that would help me I think.
On a more philosophical level - we don't have APIs that produce arrays with unknown dimensionality, so do we actually need to be able to deal with that? I may be missing something here, but it seems to me like we should also want/need APIs that produce such arrays in order to need a function to parse those shapes?

To figure out n_elements you introduce shape_components

There are two parts: n_elements (to combine these axes) and axes (to reconstruct original shape, that's also important).

is this a typo, should it also be enforce_shape?

Thanks, this was a typo (changed name while writing proposal), just corrected that, now it is enforce_shape.

Isn't n_elements also calculable as xp.prod(xp.shape(x_rgb)[:-1])

That's right, it should be calculable like that, but for unknown shapes (symbols) xp.shape may contain Nones.
And if dimensionality is unknown (number of components in tuple), it may return None as standard says nothing about it (and some frameworks do just return None in their current interface). This prevents reshape-containing manipulation on such tensors.

happens to be easy here because of [..., None] - but if that expression gets more complex, it's harder to express without enforce_shape

For cases I want to address here, you only need to compute prod(x.shape[start:end]), and that's enough (indices start and end may be positive or negative). Again, problem is just this can't be computed with a current standard.
Additionally, currently there is no way to enforce minimal or exact dimensionality. E.g. if first axis is batch, and the last axis is channel, but between them there may be >= 0 axes, there is no way to express this requirement. Expression x.shape[1:-1] does not fail for 1d tensors. Proposed enforce_shape incorporates this (get necessary components, enforce minimal or exact dimensionality, bake check into graph).

On a more philosophical level - we don't have APIs that produce arrays with unknown dimensionality, so do we actually need to be able to deal with that?

You mean - do you need to deal with arbitrary shapes? I am thinking from einops perspective (probably the first adoption would come from lib devs). Einops gets tensors from user, and users define tensors in whatever framework, and can pass tensors of any dimensionality, symbols too, so that's an important piece for me.

If you have more real-world code example to point at, that would help me I think.

Some common cases:

checking dimensionality (and maybe some components) is common, just too common. Currently standard proposes using .shape, x that will not work for graph frameworks. assert x.ndim == 2 is meaningless for symbolic tracing.
Einsum with ellipsis can be can be implemented with this functionality for any framework. Like 'b ... c, c c_out -> b ... c_out '
attention that works over an arbitrary dimensionality (e.g. input can be text, image, or video. This translates to making query to 3d, 4d, 5d tensors). Usually users squash these tensors to 3d and then reshape back, but with proposal that can be done automatically.
picking elements according to criteria (like hard attention). E.g. for every image tensor in a batch we want to pick the vector with highest norm. (input: 'b ... c', output: 'b c')
other functions that require shape (reshape as tensor, repeat as tensor). For symbolic frameworks this currently won't work.

Now, to be fair, there is a number of cases that this proposal won't address. Like, if you have ndimage, and want to make subsampling / upsampling over one specific axis, this is doable with tools currently in a standard. But if one wants to do this for every axis, unfortunately I see no simple universal tool for it right now.
In other words, when axes of variable dimensionality should be manipulated, it's hard to put into symbolic tracing without specific functionality. A bit hard to do this without some kind of generic ifelse operation or dimensionality-dependent dispatching.

and axes (to reconstruct original shape, that's also important).

Agreed, that matters too.

Proposed enforce_shape incorporates this (get necessary components, enforce minimal or exact dimensionality, bake check into graph).

For minimal dimensionality, I've never been too happy with np.atleast_2d & co. But probably that has to do with it also using np.asarray to coerce to ndarray. If enforce_shape would be shorthand for:
if x.ndim < 2:   # example for atleast_2d
    x = reshape_to_2d_by_prepending_axes(x)

then that does seem useful.

You mean - do you need to deal with arbitrary shapes? I am thinking from einops perspective (probably the first adoption would come from lib devs). Einops gets tensors from user, and users define tensors in whatever framework, and can pass tensors of any dimensionality, symbols too, so that's an important piece for me.

Dealing with arbitrary shapes - kind of, but perhaps not exactly. You must as a library author indeed anticipate getting array inputs which can have any dimensionality. I think the difference between "arbitrary shape" and "unknown shape" here is whether input_array.ndim is an integer or unknown.

Einsum with ellipsis can be can be implemented with this functionality for any framework.

@leofang is planning to propose a linalg.einsum function for the standard soon, so that should have synergy here.

In other words, when axes of variable dimensionality should be manipulated, it's hard to put into symbolic tracing without specific functionality. A bit hard to do this without some kind of generic ifelse operation or dimensionality-dependent dispatching.

Thanks for the examples @arogozhnikov. My intuition here is that your proposed function has two goals here:

Make it easier to deal with arbitrary-but-known-dimensionality inputs to array-consuming libraries,
Expand support for delayed/graph-based execution from "unknown axis size is allowed" to "unknown dimensionality is allowed",

(2) is probably a superset of (1). I have to think more about the implications here, and whether the API surface added for (2) also makes sense in eager libraries, or if that's then always a "do-nothing function call".
It'd be great to get some input from maintainers of MXNet, Dask, and TensorFlow here - I think those are the main beneficiaries of (2).

If enforce_shape would be shorthand for: [reshape_to_2d_by_prepending_axes] then that does seem useful.

Hmm, didn't think about it, that's a good point. I can imagine adding one more constant like xp.OptionalAxis:
x, [d1, d2] = xp.enforce_shape(x, [xp.OptionalAxis, None])

with a restriction that all OptionalAxis should be on the left.

My intuition here is that your proposed function has two goals here:

Make it easier to deal with arbitrary-but-known-dimensionality inputs to array-consuming libraries,

yes

Expand support for delayed/graph-based execution from "unknown axis size is allowed" to "unknown dimensionality is allowed",

That's correct.
Additionally: known dimensionality with unknown components still precludes a number of operations.
E.g. einops operation i j k -> i (j k) requires knowing dimensions or having symbols. Nones returned by xp.shape are not sufficient.
So the goal is to have a function that can address points above and deal with all scenarios (known shape, unknown components, unknown number of dimensions).

It'd be great to get some input from maintainers of MXNet, Dask, and TensorFlow here - I think those are the main beneficiaries of (2).

Completely agree.
Symbolic tracing libs are the ones to benefit, but also the ones who need to make additional steps, so their input is critical.


Add Backup feature back

Looks good to merge. And by the way, there're some extra work can be added in the future.

support old backup import
electron github login support
loading indicate and notify when import/export progress and finish


High CPU usage with Jedi and MPLS

I'm still experiencing this issue: https://github.com/microsoft/vscode-python/issues/10263
It's making this plugin completely unusable.
Environment data

VS Code version: 1.44.2
Extension version (available under the Extensions sidebar): 2020.5.80290
OS and version: Mac OSX 10.15.1
Python version (& distribution if applicable, e.g. Anaconda): 3.6.3
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): venv
Jedi or Language Server? (i.e. what is "python.jediEnabled" set to; more info #3977): Jedi Enabled = True
Value of the python.languageServer setting: Microsoft

Expected behaviour
The plugin takes an undetectable amount of CPU capacity. I can open many tabs of python code. Tests run in a minute or two and don't make the fan run or slow down the laptop.
Actual behaviour
Enabling the plugin and running tests spawns many python threads that use 100% of CPU capacity. Tests take 10+ minutes. The fan runs. Everything on the laptop slows down.
CPU usage appears to possibly be correlated to the number of tabs open.
Steps to reproduce:

Enable the plugin.
Open several tabs of python code.
Run tests with the test explorer.
Observe CPU usage.

With VS Code open, plugin disabled, no tabs open:

After opening 10 tabs:

After enabling plugin and reloading (no tabs open):

After opening 10 tabs with plugin enabled:

After starting tests with the test explorer:

After completing tests:

CPU usage stays maxed out even after the tests are done.
Logs

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

User belongs to experiment group 'ShowPlayIcon - start'
User belongs to experiment group 'DebugAdapterFactory - experiment'
User belongs to experiment group 'PtvsdWheels37 - experiment'
User belongs to experiment group 'LS - control'
User belongs to experiment group 'UseTerminalToGetActivatedEnvVars - control'
User belongs to experiment group 'WebHostNotebook - control'
User belongs to experiment group 'LocalZMQKernel - control'
User belongs to experiment group 'NativeNotebook - control'
User belongs to experiment group 'CollectLSRequestTiming - control'
User belongs to experiment group 'CollectNodeLSRequestTiming - experiment'
User belongs to experiment group 'EnableIPyWidgets - experiment'
User belongs to experiment group 'RunByLine - control'
> conda --version
> pyenv root
> python3.7 ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python3.6 ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python3 ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python2 ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
> conda info --json
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
Starting Jedi Python language engine.
Python interpreter path: ~/mypackage/venv/bin/python
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import notebook"
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import jupyter"
> conda --version
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir ~/mypackage/venv/mypackage-data -s --cache-clear
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.prefix)"
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.prefix)"
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "import sys;print(sys.executable)"
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py site --user-site
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py site --user-site
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py jupyter kernelspec --version
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/completion.py
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/completion.py
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py flake8 --format=%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s ~/mypackage/venv/mypackage-data/mypackage_data/pipe/models.py
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py flake8 --format=%(row)d,%(col)d,%(code).1s,%(code)s:%(text)s ~/mypackage/venv/mypackage-data/mypackage_data/pipe/models.py
cwd: ~/mypackage/venv/mypackage-data
> ~/mypackage/venv/bin/python ~/.vscode/extensions/ms-python.python-2020.5.80290/pythonFiles/pyvsc-run-isolated.py pytest --rootdir ~/mypackage/venv/mypackage-data --junitxml=/var/folders/xp/3xpd2x4j4zsf7vvvzd328cmh0000gn/T/tmp-243b2FToho3FOPs.xml
cwd: ~/mypackage/venv/mypackage-data

Output from Console under the Developer Tools panel (toggle Developer Tools on under Help; turn on source maps to make any tracebacks be useful by running Enable source map support for extension debugging)

XXXX

Note: I don't know where to run Enable source map support for extension debugging.
Also, in the previous issue, @karrtikr asked me to use the "Process Picker UI" to post more information but I don't know where that is.

@valerierose, thanks for the update.  Do you have the same problem regardless of the project, or is it specific to a particular project?  (I'd expect that you would not see this problem for smaller projects.)  If a specific project is causing the problem then what kind of project is it (e.g. app, django, datascience)?

The other projects that I work on regularly are written in JavaScript. I haven't tried the plugin lately with other Python projects.
This is a data science type project. It uses numpy and pandas but doesn't use notebooks. Many of the tests are for functions that use these libraries.

The likely culprit here is Jedi.  What happens if you use the setting "python.jediEnabled": false" in your workspace settings.json?  What about when you set that to false and set "python.languageServer": "None"?

I've tried this.
    "python.jediEnabled": false,
    "python.languageServer": "None",

CPU usage isn't off the charts, but also the plugin isn't doing what I usually use it for the most. I'm not seeing lint errors pop up in the "Problems" tab. Also, the test explorer isn't showing up.

I have the same issue on a freshly installed machine:
MacOS: 10.15.5
VS Code: 1.46.1
Python plugin: v2020.6.91350
Python: /usr/local/opt/python/bin/python3 (homebrew) 3.7.7
python.languageServer: Microsoft
python.jediEnabled: this seems to be deprecated
One core is 100% used all the time.
Changing python.languageServer to None helped, but that is not a solution I guess.
Sampled the process while it was spinning: https://gist.githubusercontent.com/teki/2c55c322c018f5a0be5174288ee420aa/raw/4f912c5877b93b49e05f244ae0f7bd631c8c7342/sample_mslsp_python.txt

Switching to Jedi solved the issue too: "python.languageServer": "Jedi"

Thanks @teki! Are you able to use linting and testing with  "python.languageServer": "Jedi"?

I can't get linting to work.

Hi everyone,
Is this issue still happening with the latest version of the extension?
We have also released a more performant language server called Pylance. You can download it from the marketplace and install it alongside the core Python extension. Feel free to give it a try instead of Jedi or MPLS and see if it helps 🙂
Thank you!

@kimadeline It is still happening. I just open a Python file, wait for 5-10 seconds, then quit VS Code. That initiated Python process' CPU usage skyrockets to 100% right away. I will definitely give a try to Pylance! It has been such a headache for some time.

Since this was reported we have replaced our own custom Jedi integration with jedi-language-server, and deprecated the Microsoft option. I will be closing this issue, if you still encounter this problem with this new Jedi or Pylance, please open a new issue, so we can triage it appropriately.
Thanks!


ContentType missing in fasthttp example

res, err := es.Count(
		es.Count.WithIndex(idx),
		es.Count.WithDocumentType("event"),
		es.Count.WithIgnoreUnavailable(true),
	)

The third parameter will add ?ignore_unavailable=true to the request. The fasthttp example is not setting the Content-Type and fasthttp will assume application/x-www-form-urlencoded and therefore not allowing query parameters:

When Content-Type:application/x-www-form-urlencoded, URL cannot include query-string parameters (after '?'): '/4dcd04c11d9148d2aa5ed100d38726f9/event/_count?ignore_unavailable=true'

Adding dst.Header.SetContentType("application/json") to the copyRequest function will solve this problem.

The fasthttp example is not setting the Content-Type (...)

That is surprising, since the copyRequest() method copies also the headers, which should include the Content-Type header, when it's set.
https://github.com/elastic/go-elasticsearch/blob/d562df6cd230ff351819a129a1d836c719b01704/_examples/fasthttp/fasthttp.go#L55-L59
I've improved the test a little bit in d562df6c, and verified manually with something like fmt.Printf("Content-Type: %s\n", dst.Header.Peek("Content-Type")) inside the copyRequest() method.
It looks like fasthttp is a bit too eager, if it adds the Content-Type header here. I've tried your example with es.Count() and I'm not getting an error response. Can you share more info or more complete code?

Sorry for the late response.
I am using the fasthttp package of your example and the go library in version v6.8.5
I added your given Printf to get the Content-Type in the copyRequest() and it is empty.
here is why:
if r.Body != nil {
req.Header[headerContentType] = headerContentTypeJSON
}
https://github.com/elastic/go-elasticsearch/blob/6.x/esapi/api.count.go#L178
The body is of course nil, that's why the Content-Type is not set.

I'm still wondering how to reproduce the error you're seeing with missing URL parameters...

Have you tried it including the parameter: es.Count.WithIgnoreUnavailable(true)? if you omit this, it won't fail.
Here is some example code:
package main

import (
	"encoding/json"
	"fmt"
	"issue-fasthttp/fasthttp"
	"log"

	"github.com/elastic/go-elasticsearch/v6"
)

var es *elasticsearch.Client

func init() {
	cfg := elasticsearch.Config{
		Transport: &fasthttp.Transport{},
	}
	var err error
	es, err = elasticsearch.NewClient(cfg)
	if err != nil {
		log.Fatal(err)
	}
}

func main() {
	result, err := doDocumentsCount("3b9fcfc36eb4455a9c8c9fe779c29cdb")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(result)
}

func doDocumentsCount(index string) (map[string]interface{}, error) {
	res, err := es.Count(
		es.Count.WithIndex(index),
		es.Count.WithDocumentType("event"),
		es.Count.WithIgnoreUnavailable(true),
	)

	if err != nil {
		return nil, err
	}
	defer res.Body.Close()

	var r map[string]interface{}
	if err := json.NewDecoder(res.Body).Decode(&r); err != nil {
		return nil, err
	}

	return r, nil
}

Yes, I did run it with es.Count.WithIgnoreUnavailable(true).
I've added fmt.Printf("> %s; %s\n", freq.URI(), freq.Header.Peek("Content-Type")) to the RoundTrip method in the example, and I'm not seeing the Content-Type set:
> http://localhost:9200/_search?pretty=true; application/json
> http://localhost:9200/test/_count?ignore_unavailable=true;
[200 OK] {"count":0,"_shards":{"total":0,"successful":0,"skipped":0,"failed":0}}

Any news?

I am using it with the workaround by manually setting the content-type. if you want, you can close it. but I think the content-type should be set without a body as well?

So the mystery to me is that I can't replicate the error you've mentioned — in my case, fasthttp is not setting the Content-Type to application/x-www-form-urlencoded.
I don't think we should set the content type when there's no body being sent?

According to the RFC 7231 it is optional for GET. fasthttp is not setting the content-type in my example, it is using it as fallback because no content-type is set (my assumption, haven't checked the fasthttp library regarding this).

Closing this as issue was not reproducible.


[chip-test] chip_sw_alert_handler_crashdump

Test point name
chip_sw_alert_handler_crashdump
Host side component
None Required
OpenTitanTool infrastructure implemented
No response
Contact person
@msfschaffner
Checklist
Please fill out this checklist as items are completed. Link to PRs and issues as appropriate.

[ ] Check if existing test covers most or all of this testpoint (if so, either extend said test to cover all points, or skip the next 3 checkboxes)
[ ] Device-side (C) component developed
[ ] Bazel build rules developed
[ ] Host-side component developed
[ ] HJSON test plan updated with test name (so it shows up in the dashboard)
[ ] Test added to dvsim nightly regression (and passing at time of checking)

is this test duplicated by https://github.com/lowRISC/opentitan/blob/8365ac4e97ca340e441ff3355fa07862449b9c8d/hw/top_earlgrey/data/chip_testplan.hjson#L1175?

Yeah it looks like this is already covered by chip_sw_rstmgr_alert_info. Should we just cross ref the test-point, or do you want to remove it entirely?

Feels like X-ref is what we usually do, but wanted to confirm that the existing test covers the spirit of the test point.

I think so yes. @cindychip to confirm.

Closed by #14894

@engdoreis
When you have a chance, can you checkout the alert_info_test
I heard you might want to add more feature(https://github.com/lowRISC/opentitan/pull/14903#discussion_r969976669)

@HU90m is working on it to add more feature from the point of view of rv_core_ibex, the issue #13218 and #13219 are tracking that.

@HU90m is working on it to add more feature from the point of view of rv_core_ibex, the issues #13218 and #13219 are tracking that.

@engdoreis @tjaychen , that's good. Just to clarify, you are referring to crashdump from ibex, is that correct?

@HU90m is working on it to add more feature from the point of view of rv_core_ibex, the issues #13218 and #13219 are tracking that.

@engdoreis @tjaychen , that's good. Just to clarify, you are referring to crashdump from ibex, is that correct?

Yes, but it would also affect the test reffered in the comment. Thats why @tjaychen tagged me there.


CLI fails when connection URL is set via env var in Prisma 2 schema

After running successfully through the SQL migration steps, I get the following error due to the connection URL set as an env var:
Let's transition Prisma 1's Json type to a json type in the database. Run the following SQL command against your database:

  ALTER TABLE User CHANGE jsonData jsonData json;

✔ Done migrating Json? Press 'y' to continue … yes

Error: datasource [object Object] "url" attribute must be a string, but got function_value
    at Datasource.get url [as url] (/Users/nikolasburk/Desktop/upgrade-guide/nexus-prisma/graphql/node_modules/prisma-upgrade/dist/index2.js:82:15)
    at reintrospect (/Users/nikolasburk/Desktop/upgrade-guide/nexus-prisma/graphql/node_modules/prisma-upgrade/dist/index.js:1465:19)
    at Object.upgrade (/Users/nikolasburk/Desktop/upgrade-guide/nexus-prisma/graphql/node_modules/prisma-upgrade/dist/index.js:1394:24)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
    at async main (/Users/nikolasburk/Desktop/upgrade-guide/nexus-prisma/graphql/node_modules/prisma-upgrade/dist/cli/index.js:121:18)

fixed in<EMAIL_ADDRESS>


Add memberlist secret for metallb

Without this, the pod never starts. The test seems to pass though, so
not sure what exactly this is needed for. This matches the instructions
on https://metallb.universe.tf/installation/ though. If we don't want
it, we should probably remove the deployment that is depending on this

@howardjohn: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-multicluster-k8s-tests_istio
9dbcff5f94710e9753d04ffc989118e91e1b20fa
link
/test integ-multicluster-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-multicluster-k8s-tests_istio
9dbcff5f94710e9753d04ffc989118e91e1b20fa
link
/test integ-multicluster-k8s-tests_istio

lint_istio
9dbcff5f94710e9753d04ffc989118e91e1b20fa
link
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-local-tests_istio
50fca50445daa950238ed852523a40d0fbab5a91
link
/test integ-local-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

From the MetalLB docs:

The metallb-system/speaker daemonset. This is the component that speaks the protocol(s) of your choice to make the services reachable.

Sounds like that pod is needed. Maybe it still performs its function even in an unready state.

The memberlist secret contains the secretkey to encrypt the communication between speakers for the fast dead node detection.

Sounds like that secret is for speaker-to-speaker communication and we wouldn't be running multiple nodes/speakers.

Maybe it still performs its function even in an unready state.

The pod doesn't start, seems like the secret is a required mount so its blocked.

If the tests pass without it, maybe it's better to just remove it from the deployment. We're pretty much using MetalLB for IP assignment here and Speaker is for answering ARP requests. We handle routing with ip route add in connect_metallb

/retest


⚠ Bofrost.be has degraded performance

In ff888c7, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1244 ms

Resolved: Bofrost.be performance has improved in 0244942 after 58 minutes.


fix(Curriculum): make sure the nested input element in the form is th…

…e existing element given in the editor
Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

Closes #38478

Once we get this approved, we will need the Chinese team to make the applicable changes to the Chinese file to match the English changes to the text that has been changed.  I have added a status: blocked label in the mean time, so we know not to merge it until the Chinese team has added a commit.

Thanks @RandellDawson

@freeCodeCamp/chinese Since we now have 2 approvals of the English version, we need one member on the Chinese team to a commit and another member approve the commit, so we can merge this PR.
The Instructions section and the one text in the Tests section needs translating.
Thank you.

@freeCodeCamp/chinese Still waiting on the necessary translations of this challenge.

Still waiting on the necessary translations of this challenge.

IMHO we should create an issue and move ahead to respect everyones volunteer contributions and time?

@freeCodeCamp/chinese Still waiting on the necessary translations of this challenge.

I've talked with @ZhichengChen 10 hours ago. It looks like we should commit to his repo first since it hasn't been merged to master. He'll figure out how to handle it. I agree with Mrugesh we can create issues when there're more tasks like this. Thanks!

@raisedadead I thought we agreed to keep the English and Chinese in sync.  Am I missing something.

It looks like we should commit to his repo first since it hasn't been merged to master. He'll figure out how to handle it.

I thought all the Responsive Web Design Chinese translation PRs have already been merged.

I thought we agreed to keep the English and Chinese in sync. Am I missing something.

Yes we did. And after having talks with the community members (like Miya mentioned) we concluded that we would be lagging behind in the translations. This is simply because our contributors are volunteers and its a logistical issue to get in the translations right away.
We should hence track changes that need i18n as issues to avoid undue delays in the english version.

@raisedadead I sent you message on Gitter.

I resolved the merge conflict, but then the PR was failing for linting issue involving the use of a bare url being used in the markdown.  I replace  with single backticks and the linting passed.  I created a separate commit for the change to backticks.

@moT01 @ojeytonwilliams @nhcarrigan @Sky020 Can one of you review the PR and either approve or request changes?
Thank you.

@RandellDawson Please lemme know if we need to apply the same changes to this file. If so, I should be able to create a PR for it by EOD today.
Or instead, should we wait on merging this PR first?

This passes the tests (both before the changes in this PR and after) - is this something we want to take into consideration and account for, while we are making changes to this challenge?

As far as the HTML5 specification goes, you could technically leave off the closing main tag and it will render just fine in all modern browsers.  There are elements that must have closing tags (i.e h1-h6), there are elements that never have a closing tag (i.e. self-closing tags like input and br, and per the HTML5 specification most other elements (with some very specific edge cases) the closing tag is optional.   Having a matching closing tag on an element where it is optional is more about making the code more readable that a syntax requirement.  See below using @Sky020's example.  The out-of-place closing main tag is literally ignored (does not display in the browser) and when the DOM is constructed, a closing main tag is put into the proper location.

You could easily the closing main tag is optional by removing it from the HTML code:

We currently have many challenges where we validate the closing tags are present even when technically leaving them off would be perfectly valid HTML.  An HTML validator might possibly flag HTML with closing tags in the wrong order or missing, but we only check in those challenges to avoid trying to explain the cases where it does not matter.  Plus, as I said before, adding closing tags makes the code more readable just as indenting code does.
I said all the above to see, we do not have to worry about writing a test for an out of place closing main tag for this challenge.

@S1ngS1ng Yes, let's wait until this PR is merged, then you can make the changes to the Chinese version to keep everything in sync.
Thanks.

Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉


feat(types): let property of RouteParams optional (fix #1184)

BREAKING CHANGE: Users will have to write undefined type guards against route.param
close #1184

Thanks for the PR. Having the breaking change is, unfortunately, going to be a no-go. We will instead go for something that enables

https://github.com/vuejs/router/issues/1160


refactor: remove old docs and update the ones in the readme

Type of PR

[ ] feature
[ ] enhancement
[ ] bug fix
[x] other

Description

Adds on to #158 by removing some missed files
Fixes #157
Fixes #154
Swaps Rubocop for Standard in development

Checklist

[x] My code follows the style guidelines of this project
[x] Actions are passing
[x] I have updated the documentation if applicable

Tests

[x] I have added tests
[ ] I have a sample app to demonstrate this is working and the link is:
[ ] I did not test it but I have a good reason.. (please let me know below :smile:)

@excid3 are you proud? I did it.


Update training-textclassification-smalltext-activelearning notebook links

update links in smalltext-active-learning tutorial

Description
Fixing two links in tutorial notebook for status and refresh.
Type of change

[x] Documentation update

How Has This Been Tested
Fixing small typo in notebook comments.

Hi @splevine, thanks for this PR💪🏽 Normally we work with local references for the redirections. Could you have a look if it is possible for you to correct the reference to the correct local file paths?


Security Vulnerabilities

We are using version 2.11.2 of this library, and there are several security vulnerabilities flagged by npm audit that are a result of this package's dependency tree.
Node: 12.20.0
NPM: 7.0.15
$ npm audit
# npm audit report

mem  <4.0.0
Denial of Service - https://npmjs.com/advisories/1084
fix available via `npm audit fix --force`
Will install<EMAIL_ADDRESS>which is a breaking change
node_modules/mem
  os-locale  2.0.0 - 3.0.0
  Depends on vulnerable versions of mem
  node_modules/os-locale
    yargs  4.0.0-alpha1 - 12.0.5 || 14.1.0 || 15.0.0 - 15.2.0
    Depends on vulnerable versions of os-locale
    Depends on vulnerable versions of yargs-parser
    node_modules/swagger2openapi/node_modules/yargs
      swagger2openapi  <=6.0.1
      Depends on vulnerable versions of node-fetch
      Depends on vulnerable versions of yargs
      node_modules/swagger2openapi
        api-spec-converter  >=1.3.1
        Depends on vulnerable versions of raml-to-swagger
        Depends on vulnerable versions of swagger2openapi
        node_modules/api-spec-converter

node-fetch  <=2.6.0 || 3.0.0-beta.1 - 3.0.0-beta.8
Denial of Service - https://npmjs.com/advisories/1556
fix available via `npm audit fix --force`
Will install<EMAIL_ADDRESS>which is a breaking change
node_modules/swagger2openapi/node_modules/node-fetch
  swagger2openapi  <=6.0.1
  Depends on vulnerable versions of node-fetch
  Depends on vulnerable versions of yargs
  node_modules/swagger2openapi
    api-spec-converter  >=1.3.1
    Depends on vulnerable versions of raml-to-swagger
    Depends on vulnerable versions of swagger2openapi
    node_modules/api-spec-converter

static-eval  <=2.0.1
Severity: moderate
Sandbox Breakout / Arbitrary Code Execution - https://npmjs.com/advisories/548
Sandbox Breakout / Arbitrary Code Execution - https://npmjs.com/advisories/758
fix available via `npm audit fix --force`
Will install<EMAIL_ADDRESS>which is a breaking change
node_modules/raml-to-swagger/node_modules/static-eval
  jsonpath  <=1.0.0
  Depends on vulnerable versions of static-eval
  node_modules/raml-to-swagger/node_modules/jsonpath
    raml-to-swagger  *
    Depends on vulnerable versions of jsonpath
    node_modules/raml-to-swagger
      api-spec-converter  >=1.3.1
      Depends on vulnerable versions of raml-to-swagger
      Depends on vulnerable versions of swagger2openapi
      node_modules/api-spec-converter

yargs-parser  <=13.1.1 || 14.0.0 - 15.0.0 || 16.0.0 - 18.1.1
Prototype Pollution - https://npmjs.com/advisories/1500
fix available via `npm audit fix --force`
Will install<EMAIL_ADDRESS>which is a breaking change
node_modules/swagger2openapi/node_modules/yargs-parser
  yargs  4.0.0-alpha1 - 12.0.5 || 14.1.0 || 15.0.0 - 15.2.0
  Depends on vulnerable versions of os-locale
  Depends on vulnerable versions of yargs-parser
  node_modules/swagger2openapi/node_modules/yargs
    swagger2openapi  <=6.0.1
    Depends on vulnerable versions of node-fetch
    Depends on vulnerable versions of yargs
    node_modules/swagger2openapi
      api-spec-converter  >=1.3.1
      Depends on vulnerable versions of raml-to-swagger
      Depends on vulnerable versions of swagger2openapi
      node_modules/api-spec-converter

Up, this is a concern for my team as well. What can we do to help @rbren?

Up, this is a concern for my team as well. What can we do to help @rbren?

Just pushed a new version, 2.9.4 - npm audit is showing no issues there. Thanks!

Just pushed a new version, 2.9.4 - npm audit is showing no issues there. Thanks!


Interfaces getter is failing

Description of Issue/Question
Did you follow the steps from https://github.com/napalm-automation/napalm#faq

[ ] Yes
[ ] No

Setup
napalm-panos version
(Paste verbatim output from pip freeze | grep napalm-panos between quotes below)

PanOS version
(Paste verbatim output from show system info between quotes below)

Steps to Reproduce the Issue
Error Traceback
(Paste the complete traceback of the exception between quotes below)

Hi, can you edit the issue to be legible?

Hi,
I have palo alto devices and i am runing in salt using napalm of commands like test.ping , net.facts and net.interfaces for some devices net.interfaces working but for other devices getting error like below
Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/salt/utils/napalm.py", line 167, in call out = getattr(napalm_device.get('DRIVER'), method)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/napalm_panos/panos.py", line 528, in get_interfaces interface_info_json = json.dumps(interface_info_xml['response']['result']['hw']) KeyError: u'hw

@shanmukha511 please follow the template given and provide the standard information.

napalm-panos version
You are using pip version 8.1.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
"napalm-panos==0.5.2"

And the show system info?

Please find system info
hostname: test.cn.panos
ip-address: <IP_ADDRESS>
netmask: <IP_ADDRESS>
default-gateway: <IP_ADDRESS>
ip-assignment: static
ipv6-address: unknown
ipv6-link-local-address: fe80::290:bff:fe39:b4ae/64
ipv6-default-gateway:
mac-address:
time: Wed Mar  6 16:51:53 2019
uptime: 179 days, 3:34:20
family: 5000
model: PA-5050
serial:<PHONE_NUMBER>08
sw-version: 8.0.10
global-protect-client-package-version: 0.0.0
app-version: 8129-5331
app-release-date: 2019/03/01  15:23:01
av-version: 2900-3410
av-release-date: 2019/02/25  04:00:18
threat-version: 0
threat-release-date: 2019/03/01  15:23:01
wf-private-version: 0
wf-private-release-date: unknown
url-db: paloaltonetworks
wildfire-version: 0
wildfire-release-date: unknown

I think this is fixed in https://github.com/napalm-automation-community/napalm-panos/pull/62


Aes fvsr data

Add support for capture aes-fvsr-data

Thanks for your work, I've copied your changes into #366 as I did not manage to rebase (missing permissions).


Enable dependabot in Settings

You should be able to enable dependabot via Settings -> Code security and analysis on the repo. You'll then need to enable Dependabot alerts, and Dependabot security updates. This should then start creating merge requests when hadolint gets updated, as well as when github actions themselves get updated.

Thanks, done :)


Could you introduce what file or folder dish-cfg in emulate.sh is?

As mentioned in the title. THX!

Since the dumped image is marked as read-only, the emulator has no partition in which it can write (except for the temporary ones).
For this reason, I've added to "mapped folders", one containing the whole rootfs and one that in my case is mounted instead of the "dish-cfg" partition, with r/w permissions.
You can remove those two lines and everything should work anyway. Still, if you want to add some persistency to experiment inside the emulator and analyze the produced data, you may want to add one or more "mapped folders".
Here is a guide on how you can do it: https://wiki.qemu.org/Documentation/9psetup


reflect-config.json in ai.djl:model-zoo:0.12.0 seems to refer to nonexistent class

When trying to use DJL with Quarkus (https://quarkus.io) and using the native image build, it seems to fail with following error:
Error: Error parsing reflection configuration in jar:file:/project/lib/ai.djl.model-zoo-0.12.0.jar!/META-INF/native-image/ai/djl/basicmodelzoo/reflect-config.json:
Could not resolve ai.djl.basicmodelzoo.ZooProvider for reflection configuration. Reason: java.lang.ClassNotFoundException: ai.djl.basicmodelzoo.ZooProvider. To allow unresolvable reflection configuration, use option -H:+AllowIncompleteClasspath
Verify that the configuration matches the schema described in the -H:PrintFlags=+ output for option ReflectionConfigurationResources.
com.oracle.svm.core.util.UserError$UserException: Error parsing reflection configuration in jar:file:/project/lib/ai.djl.model-zoo-0.12.0.jar!/META-INF/native-image/ai/djl/basicmodelzoo/reflect-config.json:
Could not resolve ai.djl.basicmodelzoo.ZooProvider for reflection configuration. Reason: java.lang.ClassNotFoundException: ai.djl.basicmodelzoo.ZooProvider. To allow unresolvable reflection configuration, use option -H:+AllowIncompleteClasspath

The native image build is really a black magic for me ... but my guess is that this is caused by a typo in the reflect-config.json file which refers to class ai.djl.basicmodelzoo.ZooProvider which does not exist. There is either class ai.djl.basicmodelzoo.BasicZooProvider or the class ai.djl.repository.zoo.ZooProvider which is in different JAR. I guess one of those was supposed to be used here?

@scholzj
Thanks for reporting this issue. This is typo. I will raise a PR to address this issue.