File closes on save when working via gvfs

VSCode Version:  0.10.10 (git 5b5f4db87c10345b9d5c8d0bed745bcad4533135)
OS Version:Ubuntu 15.10, gvfs 1.24.2 (the os is freshly installed)

I'm mounting another linux machine via gvfs-mount to edit files. After several saves, the file closes and I have to reopen it.  The file was opened in the "working files" area of the explorer tree.
I don't see any disconnection of the mounted connection. dmesg has no messages.
Steps to Reproduce:
(On another Ubuntu 15.10 machine, I can reproduce the issue exactly)

Save the file several (about 5 or more) times ("force saving" aka hammering CTRL+S or the save menu does not reproduce this issue)

@squarerootfury maybe there is a delete file event being sent for some reason. Can you run code --verbose and look at the output in the developer console for file events when this happens?

VS Code prints following output to the console, seems to be nothing suspicous.
### VSCode main.js ###
/home/sqf/Downloads/VSCode-linux-x64/resources/app { pathArguments: [],
  programStart: 0,
  workers: -1,
  enablePerformance: false,
  verboseLogging: true,
  debugPluginHostPort: undefined,
  debugBrkPluginHost: undefined,
  logPluginHostCommunication: false,
  firstrun: false,
  openNewWindow: false,
  openInSameWindow: false,
  gotoLineMode: false,
  pluginHomePath: undefined,
  pluginDevelopmentPath: undefined,
  pluginTestsPath: undefined,
  disablePlugins: false,
  locale: undefined }
Lifecycle#unload() 1
IPC#vscode-workbenchLoaded

And here is the developer console output, VS Code seems to throw a deletion event.
Service Library: Watcher] [CHANGED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/path.file
service.cp.ts:140[Service Library: Watcher]  >> normalized [CHANGED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/path.file
service.cp.ts:140[Service Library: Watcher] [DELETED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/path.file
service.cp.ts:140[Service Library: Watcher]  >> normalized [DELETED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/path.file

@squarerootfury that is an interesting path, can you attach a screenshot how the explorer looks like?

@bpasero sorry, I forgot that I had to censor the paths and filenames, because it contained the full fqdn.

@squarerootfury sure. so there is a file delete event and so it is expected that vs code as a result, removes the file from the working files section and closes it because it thinks it was deleted. any idea who deletes this file? does it come back later?

The file isn't really deleted, it exists the complete time. Do you think this could be more a gvfs related problem than a VS Code one?

@squarerootfury well, it could be that or an issue with our file watching library. something makes the library think that the file is deleted. are you sure there are no further events when this happens?
One theory I have is maybe that the order of events is flipped: E.g. I see a change followed by a delete. Some editors (like Sublime) tend to first delete the file and then change it, and the library's job is to normalize those events to a simple change event.

@bpasero I cleared the dev console to get a clearer ouput and reproduced the issue, it prints still the same steps that the change event is followed by the deleted event. What does >> normalized mean?
[Service Library: Watcher] [CHANGED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file
service.cp.ts:140 [Service Library: Watcher]  >> normalized [CHANGED]  /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file
service.cp.ts:140 [Service Library: Watcher] [DELETED]  /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file
service.cp.ts:140 [Service Library: Watcher]  >> normalized [DELETED] / /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file

The normalized indicates what happens when multiple events for the same file occur. E.g. a delete followed by a change gets normalized to a change.
Can you show timestamps in the console so that we understand how large the timespan is between those events?
In our next release you are able to explicitly disable the file watcher on certain folders. This would certainly help here.

Can I explicit display timestamps? Or do you mean an start+end timestamp?

In our next release you are able to explicitly disable the file watcher on certain folders. This would certainly help here.
nice to hear!

Click the configure button in the console and then "Show Timestamps".

Thanks, here is the log with timestamp:
2016-03-22 15.17:20.947 service.cp.ts:140 [Service Library: Watcher] [CHANGED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file
2016-03-22 15:17:20.989 service.cp.ts:140 [Service Library: Watcher]  >> normalized [CHANGED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file
2016-03-22 15:17:21.042 service.cp.ts:140 [Service Library: Watcher] [DELETED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file
2016-03-22 15:17:21.145 service.cp.ts:140 [Service Library: Watcher]  >> normalized [DELETED] /run/user/1000/gvfs/sftp:host=host.tld,user=srf/file

@squarerootfury ok the events are close to each other but their ordering is weird, I suspect the correct order would be a delete and change instead of the other way around. What tool is causing these events? Or do they happen out of nowhere.

I can trigger them with saving in VS Code

@squarerootfury ok that is weird, so you say just saving the file from VS Code causes the delete and change event. Seems like maybe gvfs is doing something weird. If you want to give our new files.watcherExclude feature a try, you could try our insiders release: http://code.visualstudio.com/insiders
Note however that disabling file events might have other consequences, specifically changes to settings.json, task.json and launch.json within the .vscode folder of the workspace will not be reflected until restart. Maybe you could scope it down to the one folder that is connected via gvfs.

I'm using VS Code only for some "basic" development for my php files, so I'm should be fine with this. I will test it and then I will provide feedback!

Sounds good.

The issue is still present, the developer console still shows  2 "Changed" followed by 2 "Deleted" events

@squarerootfury how does you exclude setting look like?

@bpasero see above.

@squarerootfury did you restart after making the change?

Yes, but I saw that the debug information changed. Now, the message comes from workbench.main.js:29 instead of service.cp.ts:140.

Sorry, out of ideas here. Excluding a path should stop file events. And it seems gfvs is doing something weird. Maybe the path that our watcher receives from this setup is different. You can disable all file events with /: true but that will cause quite a bad experience.

Well, then I have to find a new way for mounting the servers, but good to know this isn't a problem with VS Code but rather one of gvfs.
Regardless that the issue is still present, thank your very much for your help and your time!

Something similar seems to be happening to me, but not using gvfs. I save a file, and suddenly all open files are closed. This is on Windows 7, Code version 0.10.11.
Here are the relevant logs from when it happened last. File paths edited for confidentiality.
[File Watcher] [CHANGED] c:\Users\Some.User\src\project\tslint.json csharpWatcherService.ts:76 [File Watcher]  >> normalized [CHANGED] c:\Users\Some.User\src\project\tslint.json csharpWatcherService.ts:76 [File Watcher] [ADDED] c:\Users\Some.User\src\project\.git\index.lock csharpWatcherService.ts:76 [File Watcher] [CHANGED] c:\Users\Some.User\src\project\.git\index.lock csharpWatcherService.ts:76 [File Watcher] [ADDED] c:\Users\Some.User\src\project\.git\index csharpWatcherService.ts:76 [File Watcher] [DELETED] c:\Users\Some.User\src\project\ csharpWatcherService.ts:76 [File Watcher]  >> normalized [DELETED] c:\Users\Some.User\src\project\ csharpWatcherService.ts:76 [File Watcher]  >> normalized [ADDED] c:\Users\Some.User\src\project\.git\index.lock csharpWatcherService.ts:76 [File Watcher]  >> normalized [ADDED] c:\Users\Some.User\src\project\.git\index

@dchw  I never had the editor in Split view, so this may be a different issue with smiliar result.

@squarerootfury I also get it when working with a single document, it just seems to happen more when working with multiple documents. Definitely more often when performing the scenario I mentioned in my last post, but its still there when not in split mode.

@squarerootfury The more I think about it, the more I realized you are right. If this does seem to be a more general issue, then its worth filing a more general bug. I'll go do that.


No validation of circuit size using backend.run()

Information

qiskit-ibm-provider version: 0.4.0
Python version:
Operating system: OSX

What is the current behavior?
It is possible to send a circuit wider than the target backend supports, and there is no validation until the circuit actually hits the backend.  This could be hours later due to the queue.  The error msg is also not very helpful
Steps to reproduce the problem
Try sending a circuit with more qubits than a backend can support.
I accidentally did that here: cg87r1l7vlu95bbfnn9g and it only failed once hitting the device with the error:
Failure during build: 'reverse: 39 is not mapped.'

What is the expected behavior?
A call to backend.run() should raise / error before hitting the device if the width is larger than the device supports
Suggested solutions
Check the circuit widths before submission.

@kt474 - I think this issues can be closed.

closed by #629


Unable to set submenuTemplate in Menu widget

Both linkTemplate and labelTemplate can be changed, but submenuTemplate isn't. I have changed the following code
protected function renderItems($items) {
...
  if (!empty($item['items'])) {
     $menu .= strtr($this->submenuTemplate, [
        '{items}' => $this->renderItems($item['items']),
     ]);
  }
...
}

to
protected function renderItems($items) {
...
  if (!empty($item['items'])) {
     $template = ArrayHelper::getValue($item, 'submenuTemplate', $this->submenuTemplate);
     $menu .= strtr($template, [
         '{items}' => $this->renderItems($item['items']),
     ]);
  }
...
}

In the array that you pass to the widget, you can simply set the submenuTemplate to the parent item, like this
echo Menu::widget([
    'items' => [
        ['label' => 'Parent', 'url' => ['site/index'], 'submenuTemplate' => '<div>{items}</div>', 'items' => [
            ['label' => 'Child', 'url' => ['site/index']],
            ['label' => 'Second child', 'url' => ['site/index']],
        ]],
    ],
]);

PR #5897 is a 2 lines patch. Can it get reviewed and merged if the code is correct?

Looks like we forgot to tag it for a milestone. Thanks for pointing it out, will review for 2.0.3 release soon.


CE-RKE2-updates-3.16

RKE2 updates for 3.16
https://deploy-preview-378--tigera.netlify.app/calico-enterprise/3.16/getting-started/install-on-clusters/rke2

Update version per QE to 2.6.5 and later (CC and CE)
Update RKE2 product name (exposed only in CE)
CE 3.16/next
CC RKE2 version only, 3.16

LGTM


Updates CHANGES.md for I3S support

Updates CHANGES.md for the updates introduced in https://github.com/CesiumGS/cesium/pull/9634

Thanks for the pull request @sanjeetsuhag!

:heavy_check_mark: Signed CLA found.
:grey_question: Unit tests were not updated.

Make sure you've updated tests to reflect your changes, added tests for any new code, and ran the code coverage tool.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.


Remove set but otherwise unused variable

Recent Clang versions have enhanced -Wunused-but-set-variable which now
warns about this.

Thank you for your pull request.  This change landed upstream and got migrated as https://github.com/google/quiche/commit/b4bd5edb194e06edda7b6c2fc7b48d4f80b26084.


[App Config] Inconsistency: Throttling policy at app-config retries multiple times but not core-http

Reference: https://github.com/Azure/azure-sdk-for-js/pull/15832#issuecomment-865652173
@jeremymeng pointed out a difference with app-config vs core-http where the throttling policy retries multiples times vs once respectively.
This issue is to track

investigating the differences
bring the consistency between the two
add tests

Policies are now merged


Add appveyor

@kellyselden fyi, all green! 🤔
Will add another test for the bin/ command (mostly "stealing" the work you did for ember-modules-codemod), but that command does not seem to be the issue behind the failing tests in https://github.com/kellyselden/ember-cli-update/pull/281 afaict...


FlexAttention results do not match FlashAttention results

Hi,
I noticed that for certain sequence lengths, given the same inputs, FlexAttention's output differs from FlashAttention's output.
For example, with an input sequence of length 137, FlexAttention with a causal mask will, by default, create a block mask of length 256. In this case, when inputting the same set of Q, K, and V to both FlexAttention and FlashAttention, the first 128 tokens of their output will be identical, but the remaining 9 tokens will show slight differences.
I’m wondering if this discrepancy is due to some specific handling of FlexAttention's attention mask, and how we can address it. Thanks!

Do you a repro? Since they are two different implementations with potentially different reduction orders it is expected that there will be some slight numerical differences within the bounds specified here: https://pytorch.org/docs/stable/notes/numerical_accuracy.html
No BlockM and BlockN aligned shapes do need special care (padding and masking locally) to handle which is the case that you run into with sequence length = 137

Do you think you could provide a runnable example, we did have some early bugs when we initially added non multiple of 128 sequence length support, however they should be resolved on nightly.


saga: 9.1.1 -> 9.2.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/saga-gis/versions.
meta.description for saga is: System for Automated Geoscientific Analyses
meta.homepage for saga is: https://saga-gis.sourceforge.io
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 9.2.0 with grep in /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0
found 9.2.0 in filename of file in /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
saga

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A saga https://github.com/r-ryantm/nixpkgs/archive/cbe482b9668a957bcc5825f68d180b1eb6fee475.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/cbe482b9668a957bcc5825f68d180b1eb6fee475#saga

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0
ls -la /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

saga

Maintainer pings
cc @imincik @sikmir @nh2 @willcohen @michelk @mpickering for testing.

Saga built and tested with QGIS test data:
nix-build -A saga

./result/bin/saga_cmd ta_lighting 0 -ELEVATION=../../../osgeo/qgis/code/tests/testdata/3d/dtm.tif -SHADE=shade.tif
____________________________

   #####   ##   #####    ##
  ###     ###  ##       ###
   ###   # ## ##  #### # ##
    ### ##### ##    # #####
 ##### #   ##  ##### #   ##
____________________________

SAGA Version: 9.2.0

____________________________
library path: /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0/lib/saga/
library path: /nix/store/c5ykl13vkicaaa1ap6saknn5s9nwv5i7-saga-9.2.0/lib/saga/
library name: libta_lighting
library     : ta_lighting
tool        : Analytical Hillshading
identifier  : 0
author      : O.Conrad, V.Wichmann (c) 2003-2013
processors  : 16 [16]
____________________________

loading: dtm

100%
[Analytical Hillshading] Execution started...

__________
[Analytical Hillshading] Parameters:

Grid System: 2; 900x 900y;<PHONE_NUMBER>33x<PHONE_NUMBER>70y
Elevation: dtm
Analytical Hillshading: Analytical Hillshading
Shading Method: Standard
Sun's Position: azimuth and height
Azimuth: 315
Height: 45
Exaggeration: 1
Unit: radians

100%
__________
total execution time: 0 milliseconds (less than 1 millisecond)

[Analytical Hillshading] Execution succeeded (less than 1 millisecond)

Saving grid: shade.tif...
Export GeoTIFF
Band 1

100%
100%
okay

file shade.tif
shade.tif: Big TIFF image data, little-endian

It would be great to add some package test.


Count distinct 1891

[x] Tests
[x] Refactor several areas of new redundant code checks
[x] Add test for select count(distinct(too, many, arguments))
[x] Add test for select count()

Fixes #1891, https://github.com/influxdb/influxdb/issues/2596

+1


terrascan: 1.18.7 -> 1.18.8

Diff: https://github.com/accurics/terrascan/compare/refs/tags/v1.18.7...v1.18.8
Changelog: https://github.com/tenable/terrascan/blob/v1.18.8/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 274696 run on x86_64-linux 1

1 package built:

terrascan


Follow-up 2 to #1363 (update from spack dev 20241031): fix JEDI CI container builds for gcc and clang, and work towards fixing intel

Summary
This PR is a follow up to the update from spack develop in #1363. It removes the external gmake packages so that the new requirement for gmake to be one of 4.2.1 or 4.4.1 can be honored.
Testing

[x] ubuntu-clang-mpich with jedi-ci specs: https://github.com/JCSDA/spack-stack/actions/runs/11836736765/job/32982264182
[x] ubuntu-gcc-openmpi with jedi-ci specs: https://github.com/JCSDA/spack-stack/actions/runs/11849699792/job/33023385023
[ ] ubuntu-intel-impi with jedi-ci specs: https://github.com/JCSDA/spack-stack/actions/runs/11856641403/job/33043320658 - Failed with an unrelated error that JCSDA needs to fix (also a result of the update from spack develop as of 2024/10/31:

#18 ERROR: process "docker-shell cd /opt/spack-environment && spack env activate . && spack install --fail-fast && spack gc -y" did not complete successfully: exit code: 1
------
 > [builder 6/8] RUN cd /opt/spack-environment && spack env activate . && spack install --fail-fast && spack gc -y:
33.03 ==> Error: failed to concretize<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>for the following reasons:
33.03      1. rust: Rust not compatible with Intel Classic compilers
33.03      2. rust: Rust not compatible with Intel Classic compilers
33.03         required because conflict is triggered when %intel
33.03         required because conflict constraint  . You could consider setting `concretizer:unify` to `when_possible` or `false` to allow multiple versions of some packages.

Applications affected
JEDI CI
Systems affected
JEDI CI containers
Dependencies
n/a
Issue(s) addressed
n/a
Checklist

[x] This PR addresses one issue/problem/enhancement, or has a very good reason for not doing so.
[x] These changes have been tested on the affected systems and applications.
[ ] All dependency PRs/issues have been resolved and this PR can be merged.

Thanks for the quick review!

Created a follow-up issue for the remaining Intel error: https://github.com/JCSDA/spack-stack/issues/1383


refactor: switch common.extend() to Object.assign ponyfill

Not a big deal, but I figure we may as well rely on the native implementation when it's available.
We could consider using this package instead, but it's probably not a big concern either way.

LGTM


[Rule] Identify consecutive whitelines

Would be great to have a rule which can verify that there are no consecutive whitelines in place in your robot/resource file.

Do you mean this:
*** Keywords ***
Keyword
    Keyword1

     # second empty line in a row
     Keyword1

That is indeed the proposal.
Ideally applicable on the entire file, so not limited to a particular section (keywords / test cases / ... )

Awesome, thx.


add more recent idioms including successive Try and for with blocks for embedding stateful steps such as logging

might need monad transformers
this should go into the functional chapter


Fix netlify builds

Requirements

[ ] Fix netlify builds

Dependencies

Must be done by an admin

looking at this now


NEXT-38490 - Add close to single-select component & improve chevron

1. Why is this change necessary?
Single select currently has no way to close it other than clicking on page body or selecting a value
2. What does this change do, exactly?
Implement click handler on the chevron icon.
Implement proper change of the chevron icon (down when closed, up when open)
3. Describe each step to reproduce the issue or behaviour.
Go to any administration page which is translateable or has another single select. Open single select, click on chevron

4. Please link to the relevant issues (if any).
https://github.com/shopware/shopware/issues/4886
5. Checklist

[X] I have rebased my changes to remove merge conflicts
[X] I have written tests and verified that they fail without my change
[X] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[X] I have read the contribution requirements and fulfill them.

@runelaenen Thats "Screen Studio" for mac. Regular screen recording, but can nicely export to Gif and Padding / BG image :)

Hey @florianliebig 👋
Thank you for your contribution 💙 We just recently solved this ourselves.
https://github.com/shopware/shopware/commit/58b8b0d4db05776041253bad7395da959783498f


Source switch for gzipped index pages

I wanted to allow for ['index.html', 'index.htm', 'index.html.gz', 'index.htm.gz', 'index.gz'] to be used as root source. If no --source option is made it will pick from this list (the first to be found). If you want to specify what root source to use just give the file name (must be in the list of possible sources).

For info. I use it here: https://github.com/letscontrolit/GUIEasy

I don't know why I missed this PR but I did. I appreciate the work done here, but I am not accepting changes to the project. You should not be using this code as anything other than an example of how to add gzip to an existing project. Not only is it python 2.x specific, but, if you need a proper configurable webserver you should use Nginix or Apache instead.

I don't know why I missed this PR but I did. I appreciate the work done here, but I am not accepting changes to the project. You should not be using this code as anything other than an example of how to add gzip to an existing project. Not only is it python 2.x specific, but, if you need a proper configurable webserver you should use Nginix or Apache instead.

I'm using it for testing changes, but yeah it's python 2. I will make a new
version for this based on python 3+ ... We'll see. Thanks for the feedback
Den fre 22 jan. 2021 19:45Kevin Smith<EMAIL_ADDRESS>skrev:

Closed #10 https://github.com/ksmith97/GzipSimpleHTTPServer/pull/10.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ksmith97/GzipSimpleHTTPServer/pull/10#event-4239922891,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGLYCYWDCEYZXDPKYAX7AU3S3HBU5ANCNFSM4MJNKDSA
.

I'm using it for testing changes, but yeah it's python 2. I will make a new
version for this based on python 3+ ... We'll see. Thanks for the feedback
Den fre 22 jan. 2021 19:45Kevin Smith<EMAIL_ADDRESS>skrev:

Closed #10 https://github.com/ksmith97/GzipSimpleHTTPServer/pull/10.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ksmith97/GzipSimpleHTTPServer/pull/10#event-4239922891,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGLYCYWDCEYZXDPKYAX7AU3S3HBU5ANCNFSM4MJNKDSA
.


Not responsive

when I check at a deployed link site is not completely responsive in mobile view, I can able to fix this error and make the site as completely responsive so i request you to assign me this issue under Gssoc'24.

someone is already working on this


show accounts that liked a post in a dropdown

This PR will close #22
Preview:

@ailisp Let's replicate the UI instead of mixing the two:
Desired state:

@frol Does red heart play well with blue "Reply" & "Expand Replies"? I feel my version looks more consistent. @ori-near what is your opinion?

We may keep the heart blue, but "Like (100)" duplicates the avatars and "and 97 others", and the hover blue background makes it impossible to read the text:

Current preview:
A post without likes:

A post with 1 like:

A post with 3 likes:

A post with more than 3 likes:

Hi @frol and @ailisp – thanks for the discussion above. I think @ailisp's latest solution is a good solution for now. And I think we can revisit the general UI / branding in the near future.


All fields are updated on "edit plan" when I add or edit a workout via modal

Currently the underlying "edit plan" grid gets somewhat updated when mutations happen in the modal. Some fields get updated, but not all of them, but new workouts don't show up at all.
All fields should be updated, even for new workouts.

Addressed in #32


Integrating outcome from different scripts

At the moment all checking scripts run independently, but the results from them need to be integrated into a single object.
We should build a Class which calls the different scripts and integrates the results.

done in https://github.com/fair-software/badge/tree/a40dbd03aba35cdb282d3c7c894f81fe90ae3048, closing this issue.


Will this support for IOS?

I find that there are no cordova plugs can watch phone status for IOS.
Will this plugin support IOS?

Currently the codebase only is configured for Android. No iOS support yet.

@Louis-7 Did you find any plugin that works with iOS ?

@ElieSauveterre  Sorry, I didn't find any yet.

@Louis-7 I started a fork to add support of iOS. It's a bit hard to test because i don't have an iPhone.
https://github.com/ElieSauveterre/cordova-phone-call-trap

Hi @ElieSauveterre,
I look forward to this pull request :)

@ElieSauveterre Cool, thanks for try to make this support IOS.

@ElieSauveterre   hello.
Do you still working on the fork with IOS support?
Thank you

@De-Lac Unfortunately no, we changed the way our app works and we don't need this plugin anymore.

@ElieSauveterre , thanks for try to make this support IOS.


How does a DPT with 10.000 lines look like?

Is your feature request related to a problem? Please describe.
We don't know, how well our visualization will scale. This could be a good occasion to develop scaleble, linear positioning.

goes into a comming milestone.


Write a Julia program to convert string to pathcase

Description
Write a Julia program to convert string to pathcase
Pathcase is a style of writing in which all letters are lowercase and spaces are replaced with forward slashes.
Input  : "hello world"
Output : "hello/world"

How to contribute

Save the solution in program/convert-string-to-pathcase.jl file
Add convert-string-to-pathcase.jl file in convert-string-to-pathcase folder

!assign


[Event Request] - OnAfterSetFALedgEntryFiltersInCalcFAPostedOriginalAcqCostAmount Codeunit 5626 "FA General Report"

Hello, please consider adding the following event to Codeunit 5626 "FA General Report"
   [IntegrationEvent(false, false)]
    local procedure OnAfterSetFALedgEntryFiltersInCalcFAPostedOriginalAcqCostAmount(var FALedgEntry: Record "FA Ledger Entry"; Period: Option "Before Starting Date","Net Change","at Ending Date"; StartingDate: Date; EndingDate: Date)
    begin
    end;

and call it accordingly inside the "CalcFAPostedOriginalAcqCostAmount" procedure:
    procedure CalcFAPostedOriginalAcqCostAmount(FANo: Code[20]; Period: Option "Before Starting Date","Net Change","at Ending Date"; StartingDate: Date; EndingDate: Date; DeprBookCode: Code[10]): Decimal
    var
        FALedgEntry: Record "FA Ledger Entry";
    begin
        with FALedgEntry do begin
            if EndingDate = 0D then
                EndingDate := 99991231D;
            SetRange("FA Posting Category", "FA Posting Category"::" ");
            SetRange("FA No.", FANo);
            SetRange("Depreciation Book Code", DeprBookCode);
            SetRange("Part of Book Value", true);
            SetRange("FA Posting Type", "FA Posting Type"::"Acquisition Cost");
            case Period of
                Period::"Before Starting Date":
                    SetRange("FA Posting Date", 0D, StartingDate - 1);
                Period::"Net Change":
                    SetRange("FA Posting Date", StartingDate, EndingDate);
                Period::"at Ending Date":
                    SetRange("FA Posting Date", 0D, EndingDate);
            end;
            SetRange("Reclassification Entry", true);
            if FindFirst() then
                SetRange("Entry No.", 0, "Entry No." - 1);
            SetRange("Reclassification Entry");

            **OnAfterSetFALedgEntryFiltersInCalcFAPostedOriginalAcqCostAmount(FALedgEntry, Period, StartingDate, EndingDate);**

            CalcSums(Amount);
            exit(Amount);
        end;
    end;

Thanks!

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


Should this work with Mixed precision training (AMP)

Hi just a question is this optimizer compatible with Mixed precision training or AMP. I tried to use in in combination with lucidrains' lightweight-gan implementation which uses the PyTorch version of this optimizer. But after a few 100 iterations my losses go to NaN and eventually causes a Division by Zero error. Don't see the same problem with using the standard adam optimizer

Hi, it's likely to cause problems with low-precision. Note that we have (gt-mt)^2 in the denominator, it's likely to be 0 because of the low-precision, then it's just dividing 0 which will cause explosion. In Adam the denominator is gt^2, as long as one of gt in the history is not 0 then the denominator is not 0.

Automatic Mixed Precision (AMP)

@FilipAndersson245 @Mut1nyJD Thanks for help.
A question regarding AMP, if I understand if correctly from the documentation, AMP first scales up loss by a factor, say scale by 63335, then backward to get the gradient, then divide by 65535 to get the gradient, and perform update (all operation in float16). Is this true? Or they get the scaled gradient in float16, convert to float32, update parameter in float32, then convert to float16?
The first case is slightly tricky with eps, I quickly tested that if eps<1e-8, then it will be underflowed to 0 in float16 in numpy, same for pytorch, which means the eps=0 (though set as 1e-16).

@juntang-zhuang
Not 100% sure but I would have thought in my naive view it is the later one. To keep precision high initially the gradient would be computed in float32 then scaled to float16 and backproped through the network.
But might be worth checking the official PyTorch repository to see what they are doing.
But yes you are right if you do the first one and you do not have a special float16 where there is more precision in the exponent you certainly would run into these problems with epsilon check

@Mut1nyJD
Thanks a lot. I'll continue watching this issue, hopefully can understand the AMP better and find a way to make it compatible.

@Mut1nyJD Hi, I just tried a by-pass to deal with the mixed precision issue, that is to cast weight and gradient to float32, update, then cast to float16. In this way the float32 burden is only applied to the weight update, but not the backward, so the computation overload would not be too much. See the code below:
import math
import torch
from torch.optim.optimizer import Optimizer

version_higher = ( torch.__version__ >= "1.5.0" )

class AdaBelief(Optimizer):
    r"""Implements AdaBelief algorithm. Modified from Adam in PyTorch

    Arguments:
        params (iterable): iterable of parameters to optimize or dicts defining
            parameter groups
        lr (float, optional): learning rate (default: 1e-3)
        betas (Tuple[float, float], optional): coefficients used for computing
            running averages of gradient and its square (default: (0.9, 0.999))
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-8)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        amsgrad (boolean, optional): whether to use the AMSGrad variant of this
            algorithm from the paper `On the Convergence of Adam and Beyond`_
            (default: False)
        weight_decouple (boolean, optional): ( default: False) If set as True, then
            the optimizer uses decoupled weight decay as in AdamW
        fixed_decay (boolean, optional): (default: False) This is used when weight_decouple
            is set as True.
            When fixed_decay == True, the weight decay is performed as
            $W_{new} = W_{old} - W_{old} \times decay$.
            When fixed_decay == False, the weight decay is performed as
            $W_{new} = W_{old} - W_{old} \times decay \times lr$. Note that in this case, the
            weight decay ratio decreases with learning rate (lr).
        rectify (boolean, optional): (default: False) If set as True, then perform the rectified
            update similar to RAdam

    reference: AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients
               NeurIPS 2020 Spotlight
    """

    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,
                 weight_decay=0, amsgrad=False, weight_decouple = False, fixed_decay=False, rectify = False ):
        if not 0.0 <= lr:
            raise ValueError("Invalid learning rate: {}".format(lr))
        if not 0.0 <= eps:
            raise ValueError("Invalid epsilon value: {}".format(eps))
        if not 0.0 <= betas[0] < 1.0:
            raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0]))
        if not 0.0 <= betas[1] < 1.0:
            raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1]))
        defaults = dict(lr=lr, betas=betas, eps=eps,
                        weight_decay=weight_decay, amsgrad=amsgrad)
        super(AdaBelief, self).__init__(params, defaults)

        self.weight_decouple = weight_decouple
        self.rectify = rectify
        self.fixed_decay = fixed_decay
        if self.weight_decouple:
            print('Weight decoupling enabled in AdaBelief')
            if self.fixed_decay:
                print('Weight decay fixed')
        if self.rectify:
            print('Rectification enabled in AdaBelief')
        if amsgrad:
            print('AMS enabled in AdaBelief')
    def __setstate__(self, state):
        super(AdaBelief, self).__setstate__(state)
        for group in self.param_groups:
            group.setdefault('amsgrad', False)

    def reset(self):
        for group in self.param_groups:
            for p in group['params']:
                state = self.state[p]
                amsgrad = group['amsgrad']

                # State initialization
                state['step'] = 0
                # Exponential moving average of gradient values
                state['exp_avg'] = torch.zeros_like(p.data,
                                   memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)

                # Exponential moving average of squared gradient values
                state['exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)
                if amsgrad:
                    # Maintains max of all exp. moving avg. of sq. grad. values
                    state['max_exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)

    def step(self, closure=None):
        """Performs a single optimization step.

        Arguments:
            closure (callable, optional): A closure that reevaluates the model
                and returns the loss.
        """
        loss = None
        if closure is not None:
            loss = closure()

        for group in self.param_groups:
            for p in group['params']:
                if p.grad is None:
                    continue

                # cast data type
                half_precision = False
                if p.data.dtype == torch.float16:
                    half_precision = True
                    p.data = p.data.float()
                    p.grad = p.grad.float()

                grad = p.grad.data
                if grad.is_sparse:
                    raise RuntimeError('AdaBelief does not support sparse gradients, please consider SparseAdam instead')
                amsgrad = group['amsgrad']

                state = self.state[p]

                beta1, beta2 = group['betas']

                # State initialization
                if len(state) == 0:
                    state['rho_inf'] = 2.0 / (1.0 - beta2) - 1.0
                    state['step'] = 0
                    # Exponential moving average of gradient values
                    state['exp_avg'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)
                    # Exponential moving average of squared gradient values
                    state['exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)
                    if amsgrad:
                        # Maintains max of all exp. moving avg. of sq. grad. values
                        state['max_exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)

                # get current state variable
                exp_avg, exp_avg_var = state['exp_avg'], state['exp_avg_var']

                state['step'] += 1
                bias_correction1 = 1 - beta1 ** state['step']
                bias_correction2 = 1 - beta2 ** state['step']

                # perform weight decay, check if decoupled weight decay
                if self.weight_decouple:
                    if not self.fixed_decay:
                        p.data.mul_(1.0 - group['lr'] * group['weight_decay'])
                    else:
                        p.data.mul_(1.0 - group['weight_decay'])
                else:
                    if group['weight_decay'] != 0:
                        grad.add_(group['weight_decay'], p.data)

                # Update first and second moment running average
                exp_avg.mul_(beta1).add_(1 - beta1, grad)
                grad_residual = grad - exp_avg
                exp_avg_var.mul_(beta2).addcmul_(1 - beta2, grad_residual, grad_residual)

                if amsgrad:
                    max_exp_avg_var = state['max_exp_avg_var']
                    # Maintains the maximum of all 2nd moment running avg. till now
                    torch.max(max_exp_avg_var, exp_avg_var, out=max_exp_avg_var)

                    # Use the max. for normalizing running avg. of gradient
                    denom = (max_exp_avg_var.add_(group['eps']).sqrt() / math.sqrt(bias_correction2)).add_(group['eps'])
                else:
                    denom = (exp_avg_var.add_(group['eps']).sqrt() / math.sqrt(bias_correction2)).add_(group['eps'])

                if not self.rectify:
                    # Default update
                    step_size = group['lr'] / bias_correction1
                    p.data.addcdiv_(-step_size, exp_avg, denom)

                else:# Rectified update
                    # calculate rho_t
                    state['rho_t'] = state['rho_inf'] - 2 * state['step'] * beta2 ** state['step'] / (
                            1.0 - beta2 ** state['step'])

                    if state['rho_t'] > 4: # perform Adam style update if variance is small
                        rho_inf, rho_t = state['rho_inf'], state['rho_t']
                        rt = (rho_t - 4.0) * (rho_t - 2.0) * rho_inf / (rho_inf - 4.0) / (rho_inf - 2.0) / rho_t
                        rt = math.sqrt(rt)

                        step_size = rt * group['lr'] / bias_correction1

                        p.data.addcdiv_(-step_size, exp_avg, denom)

                    else: # perform SGD style update
                        p.data.add_( -group['lr'], exp_avg)

                if half_precision:
                    p.data = p.data.half()
                    p.grad = p.grad.half()

        return loss

@Mut1nyJD Hi, I just tried a by-pass to deal with the mixed precision issue, that is to cast weight and gradient to float32, update, then cast to float16. In this way the float32 burden is only applied to the weight update, but not the backward, so the computation overload would not be too much. See the code below:
import math
import torch
from torch.optim.optimizer import Optimizer

version_higher = ( torch.__version__ >= "1.5.0" )

class AdaBelief(Optimizer):
    r"""Implements AdaBelief algorithm. Modified from Adam in PyTorch

    Arguments:
        params (iterable): iterable of parameters to optimize or dicts defining
            parameter groups
        lr (float, optional): learning rate (default: 1e-3)
        betas (Tuple[float, float], optional): coefficients used for computing
            running averages of gradient and its square (default: (0.9, 0.999))
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-8)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        amsgrad (boolean, optional): whether to use the AMSGrad variant of this
            algorithm from the paper `On the Convergence of Adam and Beyond`_
            (default: False)
        weight_decouple (boolean, optional): ( default: False) If set as True, then
            the optimizer uses decoupled weight decay as in AdamW
        fixed_decay (boolean, optional): (default: False) This is used when weight_decouple
            is set as True.
            When fixed_decay == True, the weight decay is performed as
            $W_{new} = W_{old} - W_{old} \times decay$.
            When fixed_decay == False, the weight decay is performed as
            $W_{new} = W_{old} - W_{old} \times decay \times lr$. Note that in this case, the
            weight decay ratio decreases with learning rate (lr).
        rectify (boolean, optional): (default: False) If set as True, then perform the rectified
            update similar to RAdam

    reference: AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients
               NeurIPS 2020 Spotlight
    """

    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,
                 weight_decay=0, amsgrad=False, weight_decouple = False, fixed_decay=False, rectify = False ):
        if not 0.0 <= lr:
            raise ValueError("Invalid learning rate: {}".format(lr))
        if not 0.0 <= eps:
            raise ValueError("Invalid epsilon value: {}".format(eps))
        if not 0.0 <= betas[0] < 1.0:
            raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0]))
        if not 0.0 <= betas[1] < 1.0:
            raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1]))
        defaults = dict(lr=lr, betas=betas, eps=eps,
                        weight_decay=weight_decay, amsgrad=amsgrad)
        super(AdaBelief, self).__init__(params, defaults)

        self.weight_decouple = weight_decouple
        self.rectify = rectify
        self.fixed_decay = fixed_decay
        if self.weight_decouple:
            print('Weight decoupling enabled in AdaBelief')
            if self.fixed_decay:
                print('Weight decay fixed')
        if self.rectify:
            print('Rectification enabled in AdaBelief')
        if amsgrad:
            print('AMS enabled in AdaBelief')
    def __setstate__(self, state):
        super(AdaBelief, self).__setstate__(state)
        for group in self.param_groups:
            group.setdefault('amsgrad', False)

    def reset(self):
        for group in self.param_groups:
            for p in group['params']:
                state = self.state[p]
                amsgrad = group['amsgrad']

                # State initialization
                state['step'] = 0
                # Exponential moving average of gradient values
                state['exp_avg'] = torch.zeros_like(p.data,
                                   memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)

                # Exponential moving average of squared gradient values
                state['exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)
                if amsgrad:
                    # Maintains max of all exp. moving avg. of sq. grad. values
                    state['max_exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)

    def step(self, closure=None):
        """Performs a single optimization step.

        Arguments:
            closure (callable, optional): A closure that reevaluates the model
                and returns the loss.
        """
        loss = None
        if closure is not None:
            loss = closure()

        for group in self.param_groups:
            for p in group['params']:
                if p.grad is None:
                    continue

                # cast data type
                half_precision = False
                if p.data.dtype == torch.float16:
                    half_precision = True
                    p.data = p.data.float()
                    p.grad = p.grad.float()

                grad = p.grad.data
                if grad.is_sparse:
                    raise RuntimeError('AdaBelief does not support sparse gradients, please consider SparseAdam instead')
                amsgrad = group['amsgrad']

                state = self.state[p]

                beta1, beta2 = group['betas']

                # State initialization
                if len(state) == 0:
                    state['rho_inf'] = 2.0 / (1.0 - beta2) - 1.0
                    state['step'] = 0
                    # Exponential moving average of gradient values
                    state['exp_avg'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)
                    # Exponential moving average of squared gradient values
                    state['exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)
                    if amsgrad:
                        # Maintains max of all exp. moving avg. of sq. grad. values
                        state['max_exp_avg_var'] = torch.zeros_like(p.data,
                                    memory_format=torch.preserve_format) if version_higher else torch.zeros_like(p.data)

                # get current state variable
                exp_avg, exp_avg_var = state['exp_avg'], state['exp_avg_var']

                state['step'] += 1
                bias_correction1 = 1 - beta1 ** state['step']
                bias_correction2 = 1 - beta2 ** state['step']

                # perform weight decay, check if decoupled weight decay
                if self.weight_decouple:
                    if not self.fixed_decay:
                        p.data.mul_(1.0 - group['lr'] * group['weight_decay'])
                    else:
                        p.data.mul_(1.0 - group['weight_decay'])
                else:
                    if group['weight_decay'] != 0:
                        grad.add_(group['weight_decay'], p.data)

                # Update first and second moment running average
                exp_avg.mul_(beta1).add_(1 - beta1, grad)
                grad_residual = grad - exp_avg
                exp_avg_var.mul_(beta2).addcmul_(1 - beta2, grad_residual, grad_residual)

                if amsgrad:
                    max_exp_avg_var = state['max_exp_avg_var']
                    # Maintains the maximum of all 2nd moment running avg. till now
                    torch.max(max_exp_avg_var, exp_avg_var, out=max_exp_avg_var)

                    # Use the max. for normalizing running avg. of gradient
                    denom = (max_exp_avg_var.add_(group['eps']).sqrt() / math.sqrt(bias_correction2)).add_(group['eps'])
                else:
                    denom = (exp_avg_var.add_(group['eps']).sqrt() / math.sqrt(bias_correction2)).add_(group['eps'])

                if not self.rectify:
                    # Default update
                    step_size = group['lr'] / bias_correction1
                    p.data.addcdiv_(-step_size, exp_avg, denom)

                else:# Rectified update
                    # calculate rho_t
                    state['rho_t'] = state['rho_inf'] - 2 * state['step'] * beta2 ** state['step'] / (
                            1.0 - beta2 ** state['step'])

                    if state['rho_t'] > 4: # perform Adam style update if variance is small
                        rho_inf, rho_t = state['rho_inf'], state['rho_t']
                        rt = (rho_t - 4.0) * (rho_t - 2.0) * rho_inf / (rho_inf - 4.0) / (rho_inf - 2.0) / rho_t
                        rt = math.sqrt(rt)

                        step_size = rt * group['lr'] / bias_correction1

                        p.data.addcdiv_(-step_size, exp_avg, denom)

                    else: # perform SGD style update
                        p.data.add_( -group['lr'], exp_avg)

                if half_precision:
                    p.data = p.data.half()
                    p.grad = p.grad.half()

        return loss


switch to github actions for building jekyll

also switches us up to jekyll 4.3.0

not quite ready yet!


Investigate possible hang in tt_lib falcon40b 4 chip decoder

https://github.com/tenstorrent/tt-metal/actions/runs/8835020320/job/24261345302
likely was something that was checked in past couple of days because we were having trouble in multi-chip pipelines for a bit as this test was fine before.
@johanna-rock-tt @s-jovic could you please help us out?

We have the same issue for the end_to_end test, I'll skip only the decode+4chip tests in CI so that we still cover the rest.

@TT-BrianLiu can we just drop support for 4 chip decode entirely and remove the test? 4 chips are not our target anymore since we have the 8 chip version and t3000 is never gonna be used for 4 chips as far as I understand. Prefill doesn't even support running on 4 chips.

Is 8 chip in CI? There's no reason 4 chip shouldn't work if 8 does.

@TT-BrianLiu yes, 8 chips is in CI and working fine.

Ok sounds good


S3NG performs cross-storage move on uploads

Describe the bug
The S3NG storage driver performs a cross-storage move on uploads.
Steps to reproduce

Use oCIS with S3NG storage driver
Upload a file

Expected behavior
The file is written directly on the final storage (no cross-storage move happens)
Actual behavior
A cross storage move happens
Additional context
When the upload is finished, the blob is written:
https://github.com/cs3org/reva/blob/5eb6e708af1f7cdd4ae1f950610b0fceff96c28e/pkg/storage/utils/decomposedfs/upload.go#L552
In case of the S3 blobstore, it's a cross storage move:
https://github.com/cs3org/reva/blob/5eb6e708af1f7cdd4ae1f950610b0fceff96c28e/pkg/storage/fs/s3ng/blobstore/blobstore.go#L62-L79

@wkloucek hm, we could use pre-signed URLs or try to implement other means of bypassing the provider storage when uploding files to S3NG, but the data has to be available at some point anyway for checksuming and post-processing (in experimental). So we need the payload on the provider before offloading it to the blobstore by design, no?

@micbar after some discussion we came up with 3 approaches for handling that issue:

Bypass the dataprovider completely during upload by using presigned URLs. That minimizes load and traffic on the provider but will require bigger changes, including changes to the clients to support that kind of upload.
Make the clients upload to the data provider as before but stream the data directly to the S3 blobstore instead of holding it locally until the upload has been finished. That will reduce the amount of disk space required for uploads but still cause load and traffic on the provider.
Keep the process as it currently is and just document the requirements for storage in relation to the number and size of uploads that should be supported.

Please let us know how to proceed here.

The upload process will become async in the near future. So copying from the blobstore to s3 is ok for now.
That being said, it would makes sense to improve the S3NG implementation to use the native object versioning to implement file versions. File objects should use the fille id as the object name and versions should be written to that object. For that the tus upload should directly stream to S3 to the final object ... 💥
That would be a violation against the existing requirements: A file must remain in a quarantine area until a workflow moves it to the final destination. Otherwise the file (potentially carrying a virus) may aready have been downloaded by another client.
The cross storage move is by design.
We could however store the upload blob on S3 and use the s3 COPY from RPC call to leave the copy to the s3 server, omitting streaming back and fourth data.

ok, @wkloucek @pmaier1 @hodyroff
From my POV the requirement, that the file is uploaded to the upload area before we move it to the final storage has more weight. It is important for preprocessing steps like virus scanning. Especially if we have WORM storage.
Closing this ticket.

Yes, lateron we might want to have a storage driver in addition to this one who takes the direct route and where we delete again or just call the file lost if we want to get rid of it later ...


Messaging: 3000 & Notebooks announcement

Messaging
Context
As per https://github.com/PostHog/meta/issues/139 this is an email we'll send one week after launch.
I've tweaked this from the initial 7+ days since log in targeting because it's too noisy. It would hit 88,000+ users.
This now targets all users who have logged in 1+ times in the last 60 days, but not within the last 7 days. 13,000 users.
Goal is to tell them, briefly, about 3000 and the notebooks launch.
Goal
Login within 7 days.
Format
1x email, 7 days after 3000 roll out to 100% users.

Would love a quick check @ivanagas @andyvan-ph
The video image is placeholder. That'll be updated to embed or link to Ian's video.

Looks good, will the thumbnail on the video automatically generate?

Video: https://youtu.be/B73WnVRi0ko

Updated header.

Scheduling this in.


not able to install with python 3.11.1

python 3.11.1 doesn't seem to be able to install grpcio==1.48.1
(ubuntu)
grpcio==1.51.1 does work
Can you bump the grpcio version?

got the same error with python 3.11.2 so I guess former title "not able to install with python 3.11" was ok

Hi there! @rvorias @mariorojas At the moment we aren't supporting 3.11.x, but versions between 3.7 and 3.10 should work.

@rvorias Happy to hear that you were able to get it running! At the moment however, to my knowledge we are only testing compatibility between versions 3.7 and 3.10 for our releases.

Resolved with #209


operation error S3: PutObject - api error AccessDenied: Access Denied

I'm running into an error with initial deployment of a new Next app: github repo
sst version == sst 3.0.102
I am logged into aws-cli with an IAM Identity Center account via SSO. The account has the AdminAccess IAM permission.
When deploying, I'm getting the following error:
OpenNext build complete.
|  Updated     EcoworksMonitoring sst:aws:Nextjs → EcoworksMonitoringBuild sst:Run (24.1s)
|  Error       EcoworksMonitoring sst:aws:Nextjs → EcoworksMonitoringAssetFiles sst:aws:BucketFiles
|  operation error S3: PutObject, https response error StatusCode: 403, RequestID: ..., HostID: ..., api error AccessDenied: Access Denied
|  Created     EcoworksMonitoring sst:aws:Nextjs → EcoworksMonitoringRevalidationSeederCode aws:s3:BucketObjectv2
|  Created     EcoworksMonitoring sst:aws:Nextjs → EcoworksMonitoringRevalidationEventsSubscriberBasbbmFunctionCode aws:s3:BucketObjectv2a

sst.config.ts
export default $config({
  app(input) {
    return {
      name: "ecoworks-monitoring",
      home: "aws",
      removal: "remove",
      providers: {
        aws: {
          region: "eu-west-2",
          profile: "aws-personal"
        }
      }
    };
  },
  async run() {
    new sst.aws.Nextjs("EcoworksMonitoring");
  },
});

~/.aws/config
[profile aws-personal]
sso_session = aws-personal
sso_account_id = ...
sso_role_name = AdministratorAccess
region = eu-west-2
output = json
[sso-session aws-personal]
sso_start_url = ...
sso_region = eu-west-2
sso_registration_scopes = sso:account:access

I'm struggling to debug this. I've tried the --verbose flag for the deployment but it doesn't provide any more insight.
Any help is much appreciated. Thanks!

I appreciate that these issues take time to prioritise and review.
This is preventing the deployment of my current project via sst. Do you have any suggestions for things I could try to work around or fix the issue?
Today I have updated to the --latest version of sst = 3.1.10 and am still experiencing the same problem.

Managed to fix this today after some more debugging.
When I initially deployed I had used a different app name and it looks like there was a conflict.
I manually deleted the asset and state buckets via the AWS console and then had to delete the /sst/bootstrap parameter from parameter store in order to force sst to deploy everything from scratch.
I also changed the project name to ecoworks-monitoring-system.
Let me know if there's any more info I can add to help with preventing the issue going forward.


Remove now outdated performance warning in Kotlin DSL doc

This was fixed back in Kotlin IntelliJ Plugin 1.3.60 ...
This demo shows those requests being queued instead of run in parallel:

The sequential execution of requests with progress indicator can be seen at the bottom because 1.3.60 is way slower than 1.3.70.

Your PR is queued. See the queue page for details.


Proposal for getExternalContent action

I'd like to reuse and misuse the content reducer to integrate with an external server (assumes no CORS issues). So I came up with this action that would put the "external content" in the store.content.subrequests path. I think it's worth having this in Volto as a generic helper for async requests.
import { GET_CONTENT } from '@plone/volto/constants/ActionTypes';

/**
 * Get some content or data from an external source
 * @function getExternalContent
 * @param {string} url Content url
 * @param {string} subrequest Key of the subrequest. Defaults to value of url
 * @param {Object} request Additional parameters for the request
 * @returns {Object} Get external content action
 */
export function getExternalContent(url, request = {}, subrequest = null) {
  return {
    type: GET_CONTENT,
    subrequest: subrequest || url,
    request: {
      op: 'get',
      path: url,
      ...request,
    },
  };
}

I'm implementing an extended version of this idea in volto-corsproxy (see relevant action) but the principle still stands: fetch third-party content and push it in the redux store under the content.subrequests key.


Update Anthropic Client

Anthropic changed their python sdk - making this code line outdated.
https://github.com/jw782cn/MyClaude/blob/1697d26c509f979c9aaa6a65351584a568fbcbc3/config.py#L21
Would love to know if this might help - https://github.com/BerriAI/litellm
~Simple I/O library, that standardizes all the llm api calls to the OpenAI call
from litellm import completion

## set ENV variables
# ENV variables can be set in .env file, too. Example in .env.example
os.environ["OPENAI_API_KEY"] = "openai key"
os.environ["ANTHROPIC_API_KEY"] = "anthropic key"

messages = [{ "content": "Hello, how are you?","role": "user"}]

# openai call
response = completion(model="gpt-3.5-turbo", messages=messages)

# anthropic call
response = completion("claude-v-2", messages)

cc: @jw782cn

Happy to see you point out. However, i tested again, seems current version still works. I guess because I didn't use claude client version / python SDK. I will try litellm in my next project~


Clarify bevy::ui::Node field and documentation

Objective
Fixes #5820
Solution
Change field name and documentation from bevy::ui::Node struct

Changelog

What changed as a result of this PR?
Now bevy::ui::Node size field has renamed to calculated_size

Migration Guide
All references to the old size name has been changed, but now to access bevy::ui::Node size field use calculated_size

If you think I haven't missed anything, I'm going to change the PR description and documentation.

Should everything be renamed to calculated_size? I think it would made more sense to hide the calculated_size field, and the accessor be renamed to size(). Additional docs should be provided to tell the user that size() is calculated.

That makes sense, I will work on that


Spike: Confirm OCR works

Summary
Confirm that Full Text Search is working. Record findings. Close this ticket if:

it's working
it's not working but implementation tickets have been created

Acceptance Criteria

[ ] When a user searches for text of a PDF/image and there's a match, it should be highlighted in the UV
[ ] When a user searches for child metadata and there's a match, it should be highlighted in the UV

Screenshots or Video
Testing Instructions

Create a work. Upload an image that has text. OCR should run. Confirm that json coordinates are created as its derivatives. Confirm that a user can search for the text in the UV, and find a match.
Create a work. Attach a child. Confirm that a user can visit the parent's UV, search for the child's metadata and find a match.

Notes
Confused how to fill this out? Check out the playbook

A ticket is needed to implement this/figure out why it's not working. It should be, given the code that was ported over from Louisville.
This was tested against the following work in staging, commit b3bff3dc: https://demo.hyku-iiif.notch8.cloud/concern/images/b7a700be-d352-4c9b-ad8d-0c24de917f2f

ref https://github.com/scientist-softserv/iiif_print/issues/81


[Dependency Scanning] Post-process imports that fail to resolve against the cache entries added by other resolved imports

It is possible that import resolution failed because we are attempting to resolve a module which can only be brought in via a .modulemap of a different Clang module dependency which is not otherwise on the current search paths. For example, suppose we are scanning a .swiftinterface for module Foo, which contains:
@_exported import Foo
import Bar
...

Where Foo is the underlying Framework clang module whose .modulemap defines an auxiliary module Bar. Because Foo is a framework, its .modulemap is under <some_framework_search_path>/Foo.framework/Modules/module.modulemap. Which means that lookup of Bar alone from Swift will not be able to locate the module in it. However, the lookup of Foo will itself bring in the auxiliary module because the Clang scanner instance scanning for clang module Foo will be able to find it in the corresponding framework module's .modulemap and register it as a dependency which means it will be registered with the scanner's cache. To handle such cases, we first add all successfully-resolved modules and (for Clang modules) their transitive dependencies to the cache, and then attempt to re-query imports for which resolution originally failed from the cache. If this fails, then the scanner genuinely failed to resolve this dependency.

@_exported import Foo
import Bar
...

Notably, if the order of imports here is reversed then an implicit module build too will fail. Any such cases that happen to build today do so out of luck of getting the import statement ordering right.

@swift-ci smoke test

@swift-ci smoke test


Can we set "enable extras repo for centos" task to variable?

https://github.com/ceph/ceph-ansible/blob/3c6f2854feb9c46ab1e1ccd3ed0fde650b01bcfa/roles/ceph-osd/tasks/pre_requisite.yml#L2-L9
Because I actually don't need this task due self mirrored centos/epel/ceph repos and repos configured via my ansible yum role.
I PR if this okay for ceph-ansible.
Thanks.

@k0ste this task is just a leftover and can be simply removed.
see #2202

Nice.


PIZ7: Create a template for PRs

Ticket:
PIZ7 - Create a template for PRs
Activities done:

Created a template for PRs

Changed files:

.github/pr_template.md

 PIZ7 - Create a template for PRs


Where is executable?

Is it compiled or what?

It's source code, you have to compile it yourself using the go compiler.

Got it, thanks!!

Getting this error?

Builds cleanly for me. Please make sure your development environment is set up correctly. The README contains links to the documentation which will help you get your go build environment set up.


layers: GH384 Fix to correctly recognize immutable samplers

Actual fix this time. If a binding is immutable samplers
skip over it when verifying descriptor bindings.

Yeah, I like that better, Michael. Pushed updated.

+1

cherry-picked and pushed to master


feat: disable buildkit merge op when using moby builder

Describe the feature
Currently, we use docker instead of moby builder because https://github.com/tensorchord/envd/issues/1547.

track the upstream issue https://github.com/moby/moby/issues/45111

The downside is that we need to convert the image type which may take a long time for large CUDA-based images.
A possible solution is to disable the merge op when using moby builder.
Currently, merge op is used by:

system package & language installation
extra HTTP sources (rare)
language packages (when the build has multiple languages, i.e. python + r) (rare)

Why do you need this feature?
No response
Additional context
No response

cc @pingsutw

Let me know once you open a pr. I can test it


Cannot get individual light bulbs

Issue

I am using the latest version of homebridge, v0.4.42, the latest version of homebridge hue v0.9.2. up to date node.js v9.11.1 (as its required for my other plugins)
I cannot get the individual light bulbs to show. I can get the rooms, entertainment areas, senors, hue tap, groups all to show. And the light bulbs operate as the groups etc. But i want them to show individually in the home app. I have tried all i can think off with no success, and i didnt know where to post.  Can you help?
My config.jsn for hombridge-hue looks like this (i have masked the hue bridge access codes):
{
"platform": "Hue",
"users": {
"xxxxxxxxxxxxxxxx": "xxxxxxxxxxxxxxxxxxxxxxxxx"
},
"sensors": true,
"nativeHomeKitLights": true,
"nativeHomeKitSensors": true,
"linkButton": false,
"excludeSensorTypes": [
"CLIPPresence",
"Geofence",
"Daylight"
],
"lights": true
}
Log Messages

Debug Files

Setting nativeHomeKitLights will prevent homebridge-hue from exposing Philips lights on a v2 Hue bridge.  See https://github.com/ebaauw/homebridge-hue/wiki/Configuration.


Not working with new firmware Evolution/44.0

First of all, thank you for your hard work on this project!  Being able to control the lights with HomeKit and other integrations has been fantastic, and not having this ability now is quite a pain.
Issue Description
I upgraded all lights' firmware from Evolution/43.0 to Evolution/44.0 today. After rebooting Home Assistant, the Casambi integration stopped working.
It was still working BEFORE rebooting, I could still control the lights. So I believe the error raises during init.
The integration now shows the following error:
Unexpected error creating network 2A:CC:3F:C4:84:12

Debug Log
I enabled debug logging, and here's the relevant output:
Logger: homeassistant.config_entries
Source: config_entries.py:604
First occurred: 4:42:47 PM (2 occurrences)
Last logged: 5:29:19 PM
Error setting up entry *my network name* for casambi_bt: Unexpected error creating network 2A:CC:3F:C4:84:12
Traceback (most recent call last):
  File "/config/custom_components/casambi_bt/__init__.py", line 102, in connect
    await self.casa.connect(device, self.password)
  File "/usr/local/lib/python3.12/site-packages/CasambiBt/_casambi.py", line 147, in connect
    await self._connectClient()
  File "/usr/local/lib/python3.12/site-packages/CasambiBt/_casambi.py", line 158, in _connectClient
    raise e
  File "/usr/local/lib/python3.12/site-packages/CasambiBt/_casambi.py", line 154, in _connectClient
    await self._casaClient.exchangeKey(self._casaNetwork.getKeyStore())  # type: ignore[union-attr]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/CasambiBt/_client.py", line 158, in exchangeKey
    raise ProtocolError(
CasambiBt.errors.ProtocolError: Unexpected answer from device! Wrong device or protocol version?
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/casambi_bt/__init__.py", line 31, in async_setup_entry
    await api.connect()
  File "/config/custom_components/casambi_bt/__init__.py", line 115, in connect
    raise ConfigEntryError(
homeassistant.exceptions.ConfigEntryError: Unexpected error creating network 2A:CC:3F:C4:84:12

Additional Information
I've attempted to modify the code locally, but I'm new to the Home Assistant ecosystem and wasn't able to resolve the issue. I decided to post this issue for assistance.
Thank you for your help!

I'm glad to hear that you like this library this much. Regarding your error it seems like Casambi modified the protocol (or more precisely increased the protocol version). This means I will have to find time to discover the changes and implement them. In the meantime I would recommend going back to the previous version.

Thanks for the swift response.
I also thought downgrading to the old firmware would be the easiest thing to do. However, the app does not seem to offer an option to do so. Perhaps I'll have to contact Casambi support then.

I thought it was possible with an older version of the app but I'm not sure and can't check right now.

@schoenis Your running into lkempf/casambi-bt#28. Using the new Casambi firmware won't work with the integration currently. Maybe that also has something to do with the fact that your network no longer uses email and password. Is it possible to change the authentication mode in the settings somewhere?

Unfortunately not...

Thanks for the swift response. I also thought downgrading to the old firmware would be the easiest thing to do. However, the app does not seem to offer an option to do so. Perhaps I'll have to contact Casambi support then.

please tell me if there is a way to downgrade to the last firmware version!

I've submitted a ticket on Casambi's support website. Last time I emailed them about unpairing devices from previous owner, they helped me out with a super admin account. I'm betting that they are willing to help me this time too. I'll let you know if this worked out for me.

Ok thanks to @rankjie I now know that the new version doesn't seem to change much except for the protocol version. I'll try to publish an updated version check in the next couple of days.

That's brilliant news! I'm glad to have provided at least some useful information.
Thanks for your time maintaining the integration! @lkempf

It should work as of 23570917e19d0797225810d5fb4d207937be8898. Can someone test that?

Thank you for your response, Lukas. I've tested the changes, but I'm still encountering issues. Here's a summary of my testing process and the errors I encountered:
Testing steps:

SSH'd into HA VM, then ran docker exec -it homeassistant /bin/bash

In the shell, executed pip install -e git+https://github.com/lkempf/casambi-bt.git@2357091 (new dependency installed successfully)

Returned to HASS web interface and rebooted HASS

After reboot, the settings page showed casambi_bt was not loaded

I checked the system log, here are the relavent errors:

Detailed Log of the Detected blocking call to import_module...

Logger: homeassistant.util.loop
Source: util/loop.py:77
First occurred: 10:23:20 PM (2 occurrences)
Last logged: 10:23:29 PM

Detected blocking call to import_module with args ('custom_components.casambi_bt',) in /usr/src/homeassistant/homeassistant/loader.py, line 1067: ComponentProtocol, importlib.import_module(self.pkg_path) inside the event loop; This is causing stability issues. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/setup.py", line 165, in async_setup_component result = await _async_setup_component(hass, domain, config) File "/usr/src/homeassistant/homeassistant/setup.py", line 334, in _async_setup_component component = await integration.async_get_component() File "/usr/src/homeassistant/homeassistant/loader.py", line 1019, in async_get_component comp = self._get_component() File "/usr/src/homeassistant/homeassistant/loader.py", line 1067, in _get_component ComponentProtocol, importlib.import_module(self.pkg_path)
Detected blocking call to import_module with args ('custom_components.casambi_bt.config_flow',) in /usr/src/homeassistant/homeassistant/loader.py, line 1296: return importlib.import_module(f"{self.pkg_path}.{platform_name}") inside the event loop; This is causing stability issues. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/util/async_.py", line 112, in sem_task return await task File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1296, in async_init flow, result = await self._async_init(flow_id, handler, context, data) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1321, in _async_init flow = await self.async_create_flow(handler, context=context, data=data) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1462, in async_create_flow handler = await _async_get_flow_handler( File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2913, in _async_get_flow_handler await _load_integration(hass, domain, hass_config) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2892, in _load_integration await integration.async_get_platform("config_flow") File "/usr/src/homeassistant/homeassistant/loader.py", line 1100, in async_get_platform platforms = await self.async_get_platforms((platform_name,)) File "/usr/src/homeassistant/homeassistant/loader.py", line 1165, in async_get_platforms platforms.update(self._load_platforms(platform_names)) File "/usr/src/homeassistant/homeassistant/loader.py", line 1090, in _load_platforms platform_name: self._load_platform(platform_name) File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform cache[full_name] = self._import_platform(platform_name) File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform return importlib.import_module(f"{self.pkg_path}.{platform_name}")

Detailed log of Error occurred loading flow for integration casambi_bt
Logger: homeassistant.config_entries
Source: config_entries.py:2894
First occurred: 10:23:29 PM (1 occurrences)
Last logged: 10:23:29 PM

Error occurred loading flow for integration casambi_bt: cannot import name 'ConnectionState' from partially initialized module 'CasambiBt._client' (most likely due to a circular import) (/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/_client.py)

Detailed log of Error doing job: Task exception was never retrieved (None)
Logger: homeassistant
Source: config_entries.py:2899
First occurred: 10:23:29 PM (1 occurrences)
Last logged: 10:23:29 PM

Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2892, in _load_integration
    await integration.async_get_platform("config_flow")
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1100, in async_get_platform
    platforms = await self.async_get_platforms((platform_name,))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1177, in async_get_platforms
    import_future.result()
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1165, in async_get_platforms
    platforms.update(self._load_platforms(platform_names))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1090, in _load_platforms
    platform_name: self._load_platform(platform_name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform
    cache[full_name] = self._import_platform(platform_name)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/config/custom_components/casambi_bt/__init__.py", line 10, in <module>
    from CasambiBt import Casambi, Group, Scene, Unit, UnitControlType
  File "/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/__init__.py", line 6, in <module>
    from ._casambi import Casambi
  File "/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/_casambi.py", line 12, in <module>
    from ._client import CasambiClient, ConnectionState, IncommingPacketType
  File "/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/_client.py", line 24, in <module>
    from ._network import Network
  File "/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/_network.py", line 15, in <module>
    from .errors import (
  File "/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/errors.py", line 5, in <module>
    from ._client import ConnectionState
ImportError: cannot import name 'ConnectionState' from partially initialized module 'CasambiBt._client' (most likely due to a circular import) (/usr/local/lib/python3.12/src/casambi-bt/src/CasambiBt/_client.py)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/discovery_flow.py", line 108, in _async_start
    await gather_with_limited_concurrency(FLOW_INIT_LIMIT, *init_coros)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 114, in gather_with_limited_concurrency
    return await gather(
           ^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 112, in sem_task
    return await task
           ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1296, in async_init
    flow, result = await self._async_init(flow_id, handler, context, data)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1321, in _async_init
    flow = await self.async_create_flow(handler, context=context, data=data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1462, in async_create_flow
    handler = await _async_get_flow_handler(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2913, in _async_get_flow_handler
    await _load_integration(hass, domain, hass_config)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2899, in _load_integration
    raise data_entry_flow.UnknownHandler from err
homeassistant.data_entry_flow.UnknownHandler

Thas was stupid, sorry. Should be fixed now.

Now it loads but new error:
Logger: homeassistant.config_entries
Source: config_entries.py:604
First occurred: 11:58:31 PM (2 occurrences)
Last logged: 11:59:37 PM

Error setting up entry hou for casambi_bt: Unexpected error creating network 2A:CC:3F:C4:84:12
Traceback (most recent call last):
  File "/config/custom_components/casambi_bt/__init__.py", line 102, in connect
    await self.casa.connect(device, self.password)
  File "/usr/local/lib/python3.12/src/casambi-bt/src/src/casambi-bt/src/CasambiBt/_casambi.py", line 144, in connect
    self._casaClient = CasambiClient(
                       ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/src/casambi-bt/src/src/casambi-bt/src/CasambiBt/_client.py", line 54, in __init__
    self._checkProtocolVersion(network.protocolVersion)
  File "/usr/local/lib/python3.12/src/casambi-bt/src/src/casambi-bt/src/CasambiBt/_client.py", line 92, in _checkProtocolVersion
    self._logger.warning(
    ^^^^^^^^^^^^
AttributeError: 'CasambiClient' object has no attribute '_logger'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/casambi_bt/__init__.py", line 31, in async_setup_entry
    await api.connect()
  File "/config/custom_components/casambi_bt/__init__.py", line 115, in connect
    raise ConfigEntryError(
homeassistant.exceptions.ConfigEntryError: Unexpected error creating network 2A:CC:3F:C4:84:12

Digged a bit into the code, and I see the const for MIN/MAX protocol version is the same, probably forgot to changed?
https://github.com/lkempf/casambi-bt/blob/0bc1c2a06ed59962c6981020ae476116d24c9dd5/src/CasambiBt/_client.py#L42
MIN_VERSION: Final[int] = 10
MAX_VERSION: Final[int] = 10

And I've pushed another fix

Digged a bit into the code, and I see the const for MIN/MAX protocol version is the same, probably forgot to changed?
https://github.com/lkempf/casambi-bt/blob/0bc1c2a06ed59962c6981020ae476116d24c9dd5/src/CasambiBt/_client.py#L42
MIN_VERSION: Final[int] = 10
MAX_VERSION: Final[int] = 10

No if MAX_VERSION is exceeded that just causes a warning

Installed d7b46f, now it's not throwing erros but stucked at init.
Firstly saw expected warning:
Logger: CasambiBt._client
Source: src/casambi-bt/src/CasambiBt/_client.py:92
First occurred: 12:39:24 PM (1 occurrences)
Last logged: 12:39:24 PM

Version too new. Your network version is 11. Highest supported version is 10. Continue at your own risk.

Then an error:
Logger: CasambiBt._client
Source: src/casambi-bt/src/CasambiBt/_client.py:171
First occurred: 12:39:26 PM (1 occurrences)
Last logged: 12:39:26 PM

Unexpected answer from device! Wrong device or protocol version? Trying to continue.

Logger: CasambiBt._client
Source: src/casambi-bt/src/CasambiBt/_client.py:260
First occurred: 12:39:26 PM (1 occurrences)
Last logged: 12:39:26 PM

Unhandled notify in state 99: b'02fffda8a70733658885976b19547c7f953c584797cbe306898724c2b5aa6212c54253a9b162452843bc150da6d090300e53d87cc99737477d69263deb90689150'

It seems to become unresponsive from this point
Logger: homeassistant.setup
Source: runner.py:189
First occurred: 12:39:33 PM (1 occurrences)
Last logged: 12:39:33 PM

Setup of rest is taking over 10 seconds.

Logger: homeassistant.bootstrap
Source: bootstrap.py:738
First occurred: 12:40:20 PM (5 occurrences)
Last logged: 12:44:20 PM

Waiting on integrations to complete setup: {('casambi_bt', 'fc8461de92e186495147fdb327fddea9'):<PHONE_NUMBER>58721}

Finally it finally gave up/killed by hass:
Logger: homeassistant.config_entries
Source: config_entries.py:604
First occurred: 12:44:21 PM (1 occurrences)
Last logged: 12:44:21 PM

Error setting up entry hou for casambi_bt
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/casambi_bt/__init__.py", line 31, in async_setup_entry
    await api.connect()
  File "/config/custom_components/casambi_bt/__init__.py", line 102, in connect
    await self.casa.connect(device, self.password)
  File "/config/src/casambi-bt/src/CasambiBt/_casambi.py", line 150, in connect
    await self._connectClient()
  File "/config/src/casambi-bt/src/CasambiBt/_casambi.py", line 157, in _connectClient
    await self._casaClient.exchangeKey()
  File "/config/src/casambi-bt/src/CasambiBt/_client.py", line 192, in exchangeKey
    await self._notifySignal.wait()
  File "/usr/local/lib/python3.12/asyncio/locks.py", line 212, in wait
    await fut
asyncio.exceptions.CancelledError: Global task timeout

Logger: homeassistant
Source: runner.py:147
First occurred: 12:44:22 PM (1 occurrences)
Last logged: 12:44:22 PM

Error doing job: Task was destroyed but it is pending! (<Task pending name='Task-264' coro=<CasambiClient._processCallbacks() running at /config/src/casambi-bt/src/CasambiBt/_client.py:236> wait_for=<Future pending cb=[Task.task_wakeup()]>>)

And another fix. Sorry, I'm really bad at writing code when I can't test it myself.

Haha, please don't be sorry. You're working on a fix that benefits a lot of other people, that's amazing work. Also, that's just how coding works, isn't it. lol
Good news, it's working all fine for me, incl. on/off, dimming.
Btw, I noticed a warning in the log, I'll just leave it here since I don't want to post another issue in the -hass repo.
Logger: homeassistant.components.light
Source: components/light/__init__.py:1172
integration: Light (documentation, issues)
First occurred: 12:55:42 PM (30 occurrences)
Last logged: 12:55:42 PM

None (<class 'custom_components.casambi_bt.light.CasambiLightUnit'>) sets invalid supported color modes {'brightness', 'onoff'}, this will stop working in Home Assistant Core 2025.3, please report it to the author of the 'casambi_bt' custom integration
None (<class 'custom_components.casambi_bt.light.CasambiLightGroup'>) sets invalid supported color modes {'brightness', 'onoff'}, this will stop working in Home Assistant Core 2025.3, please report it to the author of the 'casambi_bt' custom integration

Amateur question: How do I get the update installed? Thanks for your help and good work!

@schoenis
I'm not sure how you run HA. From what I've learnt, you can try:

SSH'd into HA VM or use the SSH & Web Terminal add-on (https://community.home-assistant.io/t/home-assistant-community-add-on-ssh-web-terminal/33820), after installing the add-on, head back to its settings(Settings - Add-ons - Advanced SSH & Web Terminal - disable Protection mode)

2 . In the terminal, run docker exec -it homeassistant /bin/bash

Then in the docker's shell, execute pip install -e git+https://github.com/lkempf/casambi-bt.git#egg=casambi-bt

Returned to HASS web interface, go to Developer tools - Restart

the solution works

Amateur question: How do I get the update installed? Thanks for your help and good work!

The new release is out now. Just update with HACS.


Development Roadmap

A development roadmap for the project would be great, giving anyone - such as myself - an idea of the kind of contribution the author is seeking for this project.

This version is a "development" version that doesn't really have much. I've been slowly making a better version that doesn't have the downsides of this one, but I've just started my semester and I don't have much time.


Deposite Reagents still broken for Evoker

Addon Version
v0.1.45
World of Warcraft Version
Retail
Describe the bug
As stated in this bug report https://github.com/Cidan/BetterBags/issues/217 I can still not deposite reagents to the bank on my evoker.
Steps to reproduce

Open Bank
Click on deposite reagents
Nothing happens, but the bag sorting sound is playing

@karaktaka Can you report if this is still an issue?
Reagent bank UI was recently updated to support Warband bank, so fresh information, and/or screenshots would help

It is actually not. The issue was that my reagent bag was set to be ignored by cleanup. But BetterBags does not seem to show this kind of setting. So it looks like some other Addon might have set (or even I did set it and forgot about it) this.
I just found the setting in the normal Blizzard UI (as I thought it could also be a Blizzard Bug) and I didn't even know this setting existed.

Great news. Thanks for reporting back and glad you got it solved.
I had also forgotten this setting exists, but I'll see if it can be included with a feature request for a similar setting on the Warbank


F-Droid

Please add this app to the F-Droid main repository.

Hello @xmha97, the app's metadata is already merged in the fdroid main data repo. Added it few days back, the app will appear on fdroid shortly.

Thank you, this app is really great, especially the programmer tab.

Glad to hear you like it ;)


Add API documentation

To test locally, npm install && npm run docs.
Check out these instructions if you want it to build docs and deploy to GitHub Pages automatically.
Closes #6

Coverage remained the same at 100.0% when pulling 4bc9e0a8c62be5d48d4894fdad80d9ab1113d382 on r24y:master into d9d2849e450a34399ec298bbbaea0a35f49b1c77 on BondAnthony:master.


BUG: Using 0.52.1 and prompt caching to hold a large data file for reference, edits are no longer applying

Issue
I have a 5000 line data file that contains organization names and id strings.  I have loaded it in to the cache via /read and I then want to query it with dirty data strings.  I have that working fine.
However I now have aider helping me write a small client/server setup so I can send the queries to the server and have it return the desired match result or error.  But I noticed something really strange.  Sonnet is giving me nice code and explanations, as always, but it doesn't seem to be triggering the actual diffs and updates.
I have to prompt it explicitly to provide the updates.  Here is how I am starting aider 0.52.1:
--sonnet
--cache-prompts
--no-stream
--dark-mode
--edit-format udiff
This is on Debian on WSL2.  Very small repo, <10 files.  Just a sandbox trying to make this script.
Version and model info
No response

Try —edit-format diff

Try —edit-format diff

Will do, but  is there a reason udiff wouldn't work due to a recent change?

I think this is being addressed here: https://github.com/paul-gauthier/aider/issues/1169


[9.x] Dont recompile view if lastModified is same as cache file

as discussed in: #38270
this change also makes the code adhere to the comment above it:

we will verify the last modification of the views is less than the modification times of the compiled views

Honestly I'm not sure I'm comfortable changing this behavior that has been present for so many years based on one user request. 😅

@taylorotwell I get it, the code has been there for a long time :)
most users will have their VIEW_COMPILED_PATH in a storage folder that is excluded from git, docker, rsync etc and wont notice this change. (or need it)
Vapor would also benefit from this change, because currently the storage path is fixed to /tmp/.
So views always need to be compiled on the fly.
It would make more sense to me when i can run ./artisan view:cache and include the cached files in my deploy :)


Fixed the message printed when deploying ClusterIP

In the instructions, it printed
Visit http://<IP_ADDRESS>:8080 to use your application
kubectl port-forward $POD_NAME 8080:80
for ClusterIP deployment,
but it is not 80 but 9851.

Thank you