[Testing] Solve problems because of Spring Tests running multi-threaded

With the current setup, workers run in a separate thread, even if started up within a test case, as they are constructed normally.
The multi-thread setup leads to issues when asserting state or waiting for idle, like:

Wired issues with the InMemoryEngine of Zeebe: https://github.com/camunda-cloud/zeebe-process-test/issues/110
WaitForIdle method on the InMemoryEngine does not work, as the workers are independent, leading to workaround like: https://github.com/berndruecker/camunda-cloud-zeebe-tests-playgorund/blob/main/src/test/java/io/berndruecker/playground/zeebe/tests/SimpleSpringBootTest.java#L75

 public void waitForCompletion(ProcessInstanceEvent processInstance) {
        Awaitility.await().atMost(Duration.ofMillis(1000)).untilAsserted(() -> {
            RecordStreamSourceStore.init(engine.getRecordStream());
            assertThat(processInstance).isCompleted();
            Thread.sleep(500L); // required to avoid https://github.com/camunda-cloud/zeebe-process-test/issues/110
        });
    }

This needs to be solved differently.
Still, my goal would be to allow workers to use the @ZeebeWorker annotation normally.

What do you mean by "workers"? I feel we are missing part of the picture here.

Hey @pihme: I actually wasn't even thinking about that you look into that - so that's why I kept it cryptic so that I (and maybe @zambrovski or @jangalinski) can understand :-)
But the short version is: In the spring environment I envision to run the normal worker code, but then inject mocks or fakes into those (to not do real service calls). I still need to write a realistic example (like XX  for Camunda Platform), but a bit like this: https://github.com/berndruecker/camunda-cloud-zeebe-tests-playgorund/blob/main/src/test/java/io/berndruecker/playground/zeebe/tests/SimpleSpringBootTest.java#L68

Thanks @berndruecker for the example and explanation. I guess what I am trying to understand is why you want to inject mocks vs. something like:
      final ActivateJobsResponse jobActivationResponse =
          client
              .newActivateJobsCommand()
              .jobType(ProcessPackLoopingServiceTask.JOB_TYPE)
              .maxJobsToActivate(1)
              .send()
              .join();

      final ActivatedJob actual = jobActivationResponse.getJobs().get(0);

      client.newCompleteCommand(actual.getKey()).send().join();

Which gives you precise control over job execution, results and success or failure of individual calls.
This is relevant for us, because you are using the library different to assumptions I had.
So thank you for that, because this is always interesting to learn!
Like in my head, I was thinking:

Ok, if I want to test a worker, I will use https://github.com/camunda-community-hub/zeebe-worker-java-testutils and I can test them without a process engine
And if I want to test the process, I use https://github.com/camunda-cloud/zeebe-process-test and I can test the process without any worker

And because of that mindset, there is no assertion in Zeebe process test like: assertThat(job).completed().withVariables(variables. I felt it wasn't needed, because simulating the worker is part of my test setup when I test the process.
And now I learn from you that you want to run mocked workers. Or maybe you want to at least enable users to test processes and workers in one go?
I am interested to learn more about how you will use the library for testing. In particular, once you feel like you have a good grip on "this is how I want to write my tests" I suggest we look again if anything is missing in the library to help you achieve that.
/cc @remcowesterhoud

Hi @pihme! Let me give you a quick gist here - but also happy to hop on a Zoom call to discuss!
I want to write a test case, that tests all process-related artifacts, which for me is the process model, and all glue code around it. If you look at https://github.com/berndruecker/camunda-cloud-zeebe-tests-playgorund/blob/main/src/test/java/io/berndruecker/playground/zeebe/tests/SimpleSpringBootTest.java you can see, that this simple uses the process model and then I could make assumptions on the side effects. In this case, I would just mock the REST-Client injected in https://github.com/berndruecker/camunda-cloud-zeebe-tests-playgorund/blob/main/src/main/java/io/berndruecker/playground/zeebe/tests/ServiceTaskAGlueCode.java#L16.
This is inline to how many customers write test cases with Camunda Platform, see https://github.com/berndruecker/camunda-spring-boot-amqp-microservice-cloud-example/blob/master/src/test/java/com/camunda/demo/springboot/OrderProcessTest.java#L103 as an example. There you test all surrounding glue code together with the process model - this gives you a good confidence that your process solution works. This is also described as "Scope 1" in https://camunda.com/best-practices/testing-process-definitions/# (just that so far I struggled to switch to single-threaded workers in spring-zeebe, which is kind of this issue).
Testing the adapters would be nice, but I don't see many people doing this in isolation. Same for the process model. I find the sketched scope the most pragmatic approach to test all important aspects in one go - and thus I find it most likely that people are really doing it.


Allow for generation of a constrained decimal with decimal_places argument for hypothesis plugin

Change Summary

Enable the Hypothesis plugin to generate a constrained decimal when the decimal_place argument is specified.
Related issue number

fix https://github.com/samuelcolvin/pydantic/discussions/2520
Checklist

[x] Unit tests for the changes exist
[x] Tests pass on CI and coverage remains at 100%
[x] Documentation reflects the changes where applicable
[x] changes/<pull request or issue id>-<github username>.md file added describing change
(see changes/README.md for details)

awesome, thank you so much.


custom function check_fn passed to S3KeyTrigger is not executed

check_fn if not None is not executed to S3KeyTrigger
                    if self.check_fn is None:
                        yield TriggerEvent({"status": "success"})
                    s3_objects = await hook.get_files(
                        client, self.bucket_name, self.bucket_key, self.wildcard_match
                    )
                    yield TriggerEvent({"status": "success", "s3_objects": s3_objects})

Thank you @maa2m for creating this issue. We will look into this and provide an update soon.

@maa2m Custom function passed to the trigger won't be in executable because it is serialised it will be string


Multiple configurations for both mobile and desktop

We are currently setting up Carina for running our mobile clients' tests, including iOS, Android and web app.
As suggested in qaprosoft/carina-demo#48, we intend to leave configs.properties blank, and use separated configuations files for each testing device. Then we will pass the configuration file name to the test and use CapabilitiesLoader to load the appropriate capabilities.
This approach works, but we need to workaround a bit to bypass the MobileFactory's Configuration.getPlatform() call, since it doesn't load the platform name from our custom capabilities.
Moreover, using separate config files makes the shared configs between platform (Selenium host, Jira host, Environment config...) duplicated over and over again, which is not good.
So what is the proper way for such a situation like this? Can we have a shared config file for all the platforms, and another extra config file for each of them?

adjusted Configuration.getPlatform() to pay attention to capabilities platform and platformName:
https://github.com/qaprosoft/carina/pull/1004
changes can be tested using 6.4.793-SNAPSHOT carina build

merged to master: https://github.com/qaprosoft/carina/commit/75b36b8a5e664af99bda7900db262aa29a38e42b


feat: allow users to close a chat on the home screen

My PR closes #677
👨💻 Changes proposed(What did you do ?)
Updated the useEffect hook in the Start.jsx file to check if the app has a currentChatId key. If it does, the user is now automatically redirected to the chat page, removing the need to manually open the chat. Consequently, I've removed the conditional display of the "Open Chat" and "Start" options in the Link, as the app now handles the redirection based on the presence of currentChatId key in app object.
✔ Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] This PR does not contain plagiarized content.
[x] The title and description of the PR is clear and explains the approach.

Note to reviewers
📷 Screenshots

Your PR doesn't solve the issue, please read the issue description carefully and fix your PR as needed

Your PR doesn't solve the issue, please read the issue description carefully and fix your PR as needed

Could you please elaborate the issue a bit, that would be really helpful

Your PR doesn't solve the issue, please read the issue description carefully and fix your PR as needed

Could you please elaborate the issue a bit, that would be really helpful
Do I need to create a button which gives option to close the chat on homepage next to open chat?

That's what the issue says

@kartik-raj7 are you still interested in this?

@kartik-raj7 are you still interested in this?

Yes I am, will do the necessary changes

@kartik-raj7 you have 4 more days


[scripts] Add new ways to report build failures and giving hint messages from portfile.cmake

Depends on https://github.com/microsoft/vcpkg-tool/pull/1016
Docs PR: https://github.com/microsoft/vcpkg-docs/pull/60

Convert this PR to draft since there is no progress. Please ping us if this PR is ready for review again.


chore: relax react peer deps

closes https://github.com/hi-ogawa/vite-plugins/issues/520

todo

[x] test on app-router demo
[x] more cleanup for other packages e.g. packages/vite-glob-routes
[ ] test stackblitz (after new release)
[ ] update dependencies (later)

#522  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @hi-ogawa and the rest of your teammates on  Graphite

Merge activity

Jul 8, 9:39 PM EDT: @hi-ogawa started a stack merge that includes this pull request via Graphite.


flutter run -d linux gives ninja-related warnings but flutter doctor is happy

When I run flutter run -d linux I get:
ianh@burmese:~/dev/blankcanvas/example$ flutter run -d linux
Launching lib/main.dart on Linux in debug mode...
fatal: not a git repository (or any of the parent directories): .git
depot_tools/ninja.py: Fallback to a deprecated legacy ninja binary. Note that this ninja binary will be removed soon.
Please install ninja to your project using DEPS. If your project does not have DEPS, Please install ninja in your PATH.
See also https://crbug.com/1340825
Building Linux application...

...but flutter doctor says everything is peachy:
ianh@burmese:~$ flutter doctor -v
[✓] Flutter (Channel master, 3.7.0-9.0.pre.12, on Ubuntu 22.04.1 LTS 5.15.0-56-generic, locale C.UTF-8)
    • Flutter version 3.7.0-9.0.pre.12 on channel master at /home/ianh/dev/flutter
    • Upstream repository git@github.com:flutter/flutter.git
    • Framework revision 2a13282202 (2 hours ago), 2022-12-14 14:37:43 -0800
    • Engine revision 0a6a4a58f4
    • Dart version 3.0.0 (build 3.0.0-21.0.dev)
    • DevTools version 2.20.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at /home/ianh/Android/Sdk
    • Platform android-33, build-tools 33.0.1
    • Java binary at: /home/ianh/bin/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 14.0.0-1ubuntu1
    • cmake version 3.22.1
    • ninja version 1.8.2
    • pkg-config version 0.29.2

[✓] Android Studio (version 2020.3)
    • Android Studio at /home/ianh/bin/android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] IntelliJ IDEA Community Edition (version 2022.1)
    • IntelliJ at /home/ianh/bin/idea-IC-221.5921.22
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Ubuntu 22.04.1 LTS 5.15.0-56-generic
    • Chrome (web)    • chrome • web-javascript • Google Chrome 107.0.5304.121

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!
ianh@burmese:~$

I get the same problem...

Depot_tools is planning to remove the ninja binary soon.  But until that happens the version of ninja from depot_tools will still work, so flutter doctor is reporting it as usable.
If ninja is no longer present then flutter doctor will show a warning:
[✗] Linux toolchain - develop for Linux desktop
    ✗ ninja is required for Linux development.
      It is likely available from your distribution (e.g.: apt install ninja-build), or can be
      downloaded from https://github.com/ninja-build/ninja/releases

FWIW I added a devicelab test to ensure there are no unexpected warnings to flutter run -d linux: https://github.com/flutter/flutter/pull/118279

I added a devicelab test to ensure there are no unexpected warnings to flutter run -d linux: #118279

nice!

Closing this per comments above, especially since having a local depot_tools is unlikely to be a common case.


blocktower game push

PR Description 📜
Please include summary related to the issue you have fixed and describe your PR in brief over here by specifying the issue number on which you were working below
Fixes # 2898
Block tower game in which i have created a block game in which have to make  block tower and score point.

Mark the task you have completed ✅

[x] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[x] I have added screenshot for website preview in assets/images
[x] I have added entries for my game in main README.md
[x] I have added README.md in my folder
[ ] I have added working video of the game in README.md (optional)
[x] I have specified the respective issue number for which I have requested the new game.

Thank you soo much for contributing to our repository 💗

Thank you @Rahulbiya ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Hey @Rahulbiya,
Please make sure to link the relevant issue using the appropriate syntax, such as "#issueNumber" 👀.
Follow the proper guideline and make a new PR again 😀.
Happy Hacking 💗

Thank you  @Rahulbiya , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


VT vizapp improvements

Some improvements for the VT portion of the vizapp:

Analogously to the gaussian_masses, add a log_normal_masses distribution. (A nice bonus would be the ability to switch between these distributions as a widget)
Add a bokeh NumericInput widget for the standard deviation of the distribution.
Fix this bug where the m2 mean was set as m1 that @rafia17 nicely pointed out.
Remove the time component from the VT. (Maybe make the livetime an Optional parameter in the VolumeTimeIntegral).
Add the gstlal or pycbc VT's from the catalog paper. I think this might be best as a table next to the VT plot. The rows could be the (m1, m2) pair and the columns individual pipelines. This should also be normalized by the livetime which can be found in the catalog paper as well.

Some more things:

Add a HoverTool (See here in the background project) so we can see the exact values of the VT, n_eff, and uncertainty.
Remove the second y-axis  that plots the n_eff (doesn't make sense here)

Just turning this into a checklist for tracking:

[x] Analogously to the gaussian_masses, add a log_normal_masses distribution. (A nice bonus would be the ability to switch between these distributions as a widget)
[x] Add a bokeh NumericInput widget for the standard deviation of the distribution.
[x] Fix this bug where the m2 mean was set as m1 that @rafia17 nicely pointed out.
[ ] Remove the time component from the VT. (Maybe make the livetime an Optional parameter in the VolumeTimeIntegral).
[ ] Add the gstlal or pycbc VT's from the catalog paper. I think this might be best as a table next to the VT plot. The rows could be the (m1, m2) pair and the columns individual pipelines. This should also be normalized by the livetime which can be found in the catalog paper as well.
[x] Add a HoverTool (See here in the background project) so we can see the exact values of the VT, n_eff, and uncertainty.
[x] Remove the second y-axis that plots the n_eff (doesn't make sense here)


No such file or directory: 'curl'

Sorry to bother you, I'm new to this, when I run the demo.py, I got this problem, may you please tell me how to fix it ?thank you
Using gpu device 0: GeForce GTX 1050 Ti (CNMeM is disabled, cuDNN 6021)
/home/tony/.local/lib/python3.5/site-packages/theano/sandbox/cuda/init.py:600: UserWarning: Your cuDNN version is more recent than the one Theano officially supports. If you see any problems, try updating Theano or downgrading cuDNN to version 5.
warnings.warn(warn)
Downloading a pretrained model
Traceback (most recent call last):
File "demo.py", line 84, in
main()
File "demo.py", line 55, in main
download_model(DEFAULT_WEIGHTS)
File "demo.py", line 34, in download_model
'--create-dirs', '-o', fn])
File "/usr/lib/python3.5/subprocess.py", line 557, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.5/subprocess.py", line 947, in init
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'curl'

I have solved the problem, sorry for the trouble that I may bring, thank you!

Hi Tony, I am also having the same issue while running demo.py.Could you please tell me how you solved the problem. Thank you.

@tansinjahan Hello, I solve this problem by create a folder named output, and put the trained model into this path (output/ResidualGRUNet/default_model/weights.npy), hope this can solve your peoblem

@tansinjahan   @Tony1Q84  If you install curl (using sudo apt get in ubuntu), you don't have to create output/ResidualGRUNet/default_model/weights.npy as it will be created once the pre-trained model is downloaded.

for me this solved the issue on ubuntu 16.04
sudo apt-get install curl
maybe this also helps the first command
sudo apt install libcurl4-openssl-dev libssl-dev

Hi eveyone, someone know how i can resolve this problem, I'm beginner and I'm bloked.... please i'm waiting yours response and thanks in advance
Can not use cuDNN on context None: cannot compile with cuDNN. We got this error:
b'/tmp/try_flags_unc47ff0.c:4:19: fatal error: cudnn.h: No such file or directory\ncompilation terminated.\n'
Mapped name None to device cuda: GeForce 920MX (0000:01:00.0)
Downloading a pretrained model
You don't have permission to create output/ResidualGRUNet.
/home/phd/3D-R2N2/lib/layers.py:353: UserWarning: DEPRECATION: the 'ds' parameter is not going to exist anymore as it is going to be replaced by the parameter 'ws'.
padding=self._padding)
/home/phd/3D-R2N2/lib/layers.py:353: UserWarning: DEPRECATION: the 'padding' parameter is not going to exist anymore as it is going to be replaced by the parameter 'pad'.
padding=self._padding)
loading network parameters from output/ResidualGRUNet/default_model/weights.npy
Traceback (most recent call last):
File "demo.py", line 84, in
main()
File "demo.py", line 62, in main
net.load(DEFAULT_WEIGHTS)                        # load downloaded weights
File "/home/phd/3D-R2N2/models/net.py", line 71, in load
params_cpu_file = np.load(filename)
File "/home/phd/anaconda3/envs/py3-theano/lib/python3.6/site-packages/numpy/lib/npyio.py", line 422, in load
fid = open(os_fspath(file), "rb")
PermissionError: [Errno 13] Permission denied: 'output/ResidualGRUNet/default_model/weights.npy'

close the terminal and try again


[C++] export symbols for Windows shared library

The main change here is adding CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS which exports everything on Windows without adding a bunch of __declspec(dllexport) to the api, described further here
The other tweaks were basically trial and error to get it to find the dependencies and build/test.  I'm not very experienced with cmake, so if something I've changed looks bad/strange, please let me know!

[Current coverage][cc-pull] is 85.33%

Merging [#165][cc-pull] into [master][cc-base-branch] will increase coverage by 4.02%

@@             master       #165   diff @@
==========================================
  Files            48         18     -30
  Lines          2798       1179   -1619
  Methods         339        339
  Messages          0          0
  Branches         60         60
==========================================
- Hits           2275       1006   -1269
+ Misses          488        138    -350
  Partials         35         35

Powered by Codecov. Last updated by [2045f3b...a239fb1][cc-compare]
[cc-base-branch]: https://codecov.io/gh/wesm/feather/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/wesm/feather/compare/2045f3bb29d53673f056be21c1d94d76a78e841a...a239fb1ebef5930c31eed7bbadada4f442c03ab5
[cc-pull]: https://codecov.io/gh/wesm/feather/pull/165?src=pr

Cool; I figure at some point we may want to do explicit visibility macros but this helps for now

Do you have the inclination to work on an Appveyor setup for Feather?

It will be next week, but yes, I can try to get Appveyor working too.

@wesm - it's a bit hacked together, but here's an Appveyor build working.
https://ci.appveyor.com/project/chris-b1/feather/build/1.0.5

Sweet, thank you! I will merge this and enable appveyor for the repo


shell improvement #2

shell improvement.
When using run.sh you will receive a notice that you have update.
try to add support for Cygwin.
setup.sh reset will force sync to user based branch not dev.

:+1:


4.2.0 release tasks

Working on the 4.2.0 release...

[x] Update CHANGELOG
[x] Cut a rug tag
[x] Add tag release notes
[x] Blog post on Planet (not big enough for this kind of fanfare)
[x] Submit PR to update BLT
[x] Update www.drupalvm.com (needed?)

I just realized the php_packages_extra command—which is super handy—isn't yet in a tagged release.

Eek, there's actually a lot in here—Tideways support, revamped docs, new functionality. Luckily backwards-compatible, but still enough to warrant a minor bump.

Release notes: https://github.com/geerlingguy/drupal-vm/releases/tag/4.2.0

BLT PR: https://github.com/acquia/blt/pull/1018

Woot!


Update package URL to point to appropriate readthedocs site hosting jupyter-alabaster-theme docs

This will need to be done after theme documentation is done, repo is moved to Jupyter organization, and hosted on readthedocs.

@charnpreetsingh Just to clarify this issue... does this an issue to keep track of:

[ ] Create theme documentation
[ ] Move repo from jupytercalpoly to jupyter org
[ ] Update any links in theme documentation to reference the jupyter org repo

@willingc Yes, but to clarify I mean to update the link in setup.py

I'll be around on Thursday and Friday morning if you feel ready to move to the Jupyter org. We can always have a note at the top of the README indicating how ready this is for production use.


[feature] Fix Logs for Files Moved from Private Components [OSF-4582]

Purpose

Currently on the OSF, if user A moves a file from within private component X (which user B does not have access to) to parent project or other component Y (which user B does have access to), the file moved log for project/component Y will display the name of private component X to user B.
This PR checks if the viewing user (user B) should be able to view the name of private component X in the file moved log on project/component Y.
If user B does not have access to private component X, the file moved log on project/component Y will read (generally) "user A moved (file name) from a private component to (name of project/component Y).
Screenshots provided below for clarification.
user A = Me
user B = Harry Styles
private component X = Private -- Casey
project/component Y = 1D

Before

My view:

Harry Styles' view (bad):

After

My view (unchanged):

Harry Styles' view (good):

JIRA

OSF-4582

Notes

@brianjgeiger, I think the can_view/canView variables used in this PR could use more descriptive names but I've struggled to come up with something that isn't too verbose -- suggestions would be much appreciated.

The only suggestion I would make for can_view is to make it more descriptive of what you can view. If it means the user can view the thing that the variable is stored on, then it's fine. If it means they can view something else, then add what that is to the end.

Just from the After view, it seems like Harry's view should also include a middle log reading

Casey Rollins moved test.pdf from OSFStorage in 1D to a private component

Also via Jira:

The name and link of the private component also appears in the email notifications that go out for file updates, which are dependent on the logs.

Please add one or more test(s) (probably to both tests/test_notifications.py:TestSendEmails for transactional emails and :TestSendDigest for digest emails) to make sure that:

the proper logs are being sent out in this case
<private_component.title> not in <email.message>

Since there'll be more development on this, I'm going to move this to 0.68.0

I think the into/out from logs need to show on the nodes, but without the private components' names. That is to say, I agree with @caseyrollins implementation above (provided that @mfraezz's comment that Harry Styles should see a middle log is included)
Example: I am an admin on both of Casey's nodes above.
I upload a file to public project, 1D. Then I move it to Private -- Casey. To a non-contributor, the file does not appear in the project. The logs must reflect that the file has been moved from the project, otherwise there is a mysterious disappearing file.

@saradbowman @mfraezz I originally left out the middle log regarding the file storage provider because it gives additional information about a private component that a non-contributing user wouldn't know otherwise (i.e. if the middle log says that a file was moved from Dropbox, the non-contributing user now knows that Dropbox is enabled on the private component -- whether this really matters or not, I don't know, but I erred on the side of being overly private). But I also agree it seems inconsistent without the middle log reading, and I can definitely include it.

After discussion with @caseyrollins, we agree Harry should see the middle log, in the form:
Casey Rollins moved test.pdf from a private component to test.pdf in OSF Storage in 1D
Harry should not see the storage provider name for the private component nor the private components name.

if the middle log says that a file was moved from Dropbox, the non-contributing user now knows that Dropbox is enabled on the private component

I'm not sure if that's true. Compare the newest log in your view to the newest log in Harry's -- the bracketed (with []) text in moved <filename> from [<provider> in <private_component.title>] to <provider> in <viewable_node.title> is replaced with a private component. The only info they receive about what provider the file is stored in is (or at least, should be) info for the node they have read access to.
Either way, with my suggested params sanitization method, you shouldn't need to worry about that.

I've chatted with @mfraezz about the sanitization approach, and it seems the most sane of the options that came up. Keeping it on the model is good, and ensuring that there are enough layers of logic to prevent unnecessary calculations is also good. Details may change, but it seems a sound approach.

Just for clarity in this thread, I believe @mfraezz and I were talking about different things when referring to the mysterious "middle log", and therefore my previous comment can be disregarded.

Yeah, my bad. "(hidden|unshown) log" would've probably been clearer.


[Datagrid] using useSortableColumns and useCustomizeColumns hooks together breaks column customization.

What package(s) are you using?

[x] Carbon for IBM Products (or Carbon for IBM Cloud & Cognitive)
[ ] Legacy/CDAI
[ ] Legacy/Security

Detailed description

Describe in detail the issue you're having.

Using useSortableColumns and useCustomizeColumns hooks together breaks column customization. Both work fine independently but when trying to use both at the same time, the column customization tearsheet fails to populate the columns. Sorting works independently or combined.

Is this issue related to a specific component?

Datagrid

What did you expect to happen? What happened instead? What would you like to
see changed?

The exception is for both hooks to work in harmony 😄

What browser are you working in?

Chrome

What version of the @carbon/ibm-products (or @carbon/ibm-cloud-cognitive)
package are you using?

"@carbon/ibm-products": "1.47.0",

What offering/product do you work on? Any pressing ship or release dates we
should be aware of?

CP4WAIOps
Steps to reproduce the issue

Step one:
Load a datagrid and enable either useSortableColumns or  hooks and notice they work as expected
Step two
Use both hooks at the same time, then notice the columns are not customizable anymore.

Please create a reduced test case in CodeSandbox
https://codesandbox.io/s/github/carbon-design-system/ibm-cloud-cognitive/tree/main/examples/cloud-cognitive/codesandbox

https://codesandbox.io/s/angry-stallman-muehg2?file=/src/Example/Example.js
Additional information

Screenshots or code

Datagrid with both hooks enabled

Datagrid with just useCustomizeColumns enabled

Notes

The useCustomizeColumns doesn't work with useColumnCenterAlign hook.  If the latter is present and centerAlignedColumn is set for a column, this column won't be displayed in the Customize Columns tearsheet.
To reproduce add useColumnCenterAlign and the following column:
  {
    Header: 'First Name',
    accessor: 'firstName',
    centerAlignedColumn: true,
  }

The column doesn't pass the following filter since centerAlignedColumn prop makes colDef.Header a function.
https://github.com/carbon-design-system/ibm-cloud-cognitive/blob/cfaefc9db5475ea66248757847f0330beb4b9f5c/packages/ibm-products/src/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js#L33-L40
I thought it makes sense to address this case under this issue, as well. Please let me know if I should create a separate issue.

@K-Markopoulos If this is still an issue, can we open this as a new issue. :)

Waiting to close until #3348 is merged.


feat: add send email Hook

What kind of change does this PR introduce?
Adds a custom email sender at an API layer. Hook invocation happens on the API so the abstraction is done at the API level instead of on the mailer to avoid having the mailer import API.
The custom hook email sender serves as a substitute for the default email sender across all endpoints. It is not possible to selectively enable the hook on certain email flows.
Supercedes #1496  as it was simpler to visualize the PR when starting from scratch

Reverting to draft to do some manual testing  and maybe add a few automated tests

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

26 of 64 (40.63%)  changed or added relevant lines in 2 files are covered.
114 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-1.1%) to 64.012%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

internal/api/hooks.go
0
16
0.0%

internal/api/mail.go
26
48
54.17%

Files with Coverage Reduction
New Missed Lines
%

internal/api/mail.go
1
55.66%

internal/mailer/template.go
113
42.97%

Totals

Change from base Build<PHONE_NUMBER>:
-1.1%

Covered Lines:
7908

Relevant Lines:
12354

💛  - Coveralls


Fix StackTwoRasters

Output raster is messed up. Example from A. californica:

Image comes from scripts/examples/Adelpha_californica-sdm-pairwise.R; butterfly and plant rasters are fine (print the outputs from these two lines to see):
butterfly_raster <- SDMRaster(data = butterfly_data)
plant_raster <- SDMRaster(data = plant_data)

Quite idiosyncratic - only seems to come about when plotting contemporary model of A. californica + Q. chrysolepis. :thinking:

Try going through a terra::sprc()...?


fix readme python version to avoid error

summary
py 3.9 caused the error below due to the use of the | operator for type hinting in Python, which is not compatible with the version 3.9. The | operator for type union was introduced in Python 3.10
error:
GPT-SoVITS-Inference/webuis/builders/gradio_builder.py", line 28, in GradioTabBuilder
    def __init__(self, component_name_list: List[str|List[str]], params_config: Dict[str, ParamItem]):
TypeError: unsupported operand type(s) for |: 'type' and '_GenericAlias'

test
conda create -n GPTSoVits10 python=3.10

I have removed the Python type hints in the new version. Thank you.


Allow importing falsey values from CSV

The existing import code changed all falsey values to empty string.  It looks like we need to do that to undefined, but other values, like 0 or false, should be let through as-is.
This was reported in #242.

Awesome, thanks! :D


Option to add level as text for configuration with json file

Hi!
Could you please add an option of storing log event level as text when configuring logger via json or provide any workarounds?
As far as I can see here, currently level can be stored in the database only as int if it is configured via json file.
I will appreciate any response.
Olga.

I can try to add a new option to change this behaviour. I'm not sure if I should really do this, however.
I'm not a fan of reoccuring texts in the database if they can be handled by an enum. In my opinion, changes to this behaviour would violate the 2NF of SQL databases (Check e.g. https://www.edureka.co/blog/normalization-in-sql/).
There are two options now:

You can create a table to store the enum values as key value tables by your own. Something like this:

CREATE TABLE loglevel
(
    Id INT NOT NULL,
    Description TEXT NOT NULL
);

INSERT INTO loglevel (Id, Description) VALUES (0, 'Verbose');
INSERT INTO loglevel (Id, Description) VALUES (1, 'Debug');
INSERT INTO loglevel (Id, Description) VALUES (2, 'Information');
INSERT INTO loglevel (Id, Description) VALUES (3, 'Warning');
INSERT INTO loglevel (Id, Description) VALUES (4, 'Error');
INSERT INTO loglevel (Id, Description) VALUES (5, 'Fatal');

When you query, you do so by e.g. querying:
SELECT * FROM logs INNER JOIN loglevel ON logs.Level = loglevel.Id WHERE ...

I can integrate the option to store the texts in the database but it might take some time.

Thanks for your reply!

This will be added automatically in version 2.4.0 (The LogLevel table). I might add the feature to store the log levels really as texts as well, but I'm still not sure if I should.

My underlying idea is that: as far as this option is available via code configuration, probably it is a good idea to have the same option for json configuration, which will provide the same agility for it. At the moment I don't have a need in the described behaviour, though I was considering it.
Thank you for your response! I am grateful for your taking care of the users needs.

Yes, that makes sense. I was about to already add this, but I'm still busy at the moment. Let's see when I get the time to add this.

I was looking at the latest release and the changes. It seems that log level table will always be created. I think it should be optional as not all user will want to do that. In some cases the database account might not even have permissions to create tables. Can you please make this optional?

@shouaib-ahmed You're right. I will need to change the configuration therefore as well.

And I should probably add some tests to read the json settings to avoid such things in the future...

This should be possible now with version 2.5.0 and the column property LevelAsText. I have created a test that creates the table successfully :)
@shouaib-ahmed: I have removed the log event level lookup table completely again as I don't think it's really neccessary.


fix(zendesk): Fix title for Zendesk integration

:star2: What does this PR do?

In my previous fix I was grabbing the title from this element because it was an easy to reach element, but it looks like it can somehow differ from the ticket title (I didn't try to find out how), so now I'm getting it from the title element of the ticket itself.
:bug: Recommendations for testing
Make sure the correct title of the ticket is grabbed when starting a timer in zendesk.
:memo: Links to relevant issues or information
closes #1689

Good point :D


Features collecting thread

If you have any ideas about this extension, please write it here.

An idea: use UAR as Alfred

add the availability detection of  the target link

Is it okay to put a PayPal/Alipay/ApplePay donation qr? @lzb

[ ] Use webRequest instead
[ ] Make "Prompt mark" configurable


Get poor performance after running simple_run.sh

+--------+--------+----------+---------+--------+----------+---------+
| Method | J_mean | J_recall | J_decay | F_mean | F_recall | F_decay     |
+--------+--------+----------+---------+--------+----------+---------+
| final      | 0.429    |  0.434     |  0.095     | 0.439   |  0.405      |  0.095    |
+--------+--------+----------+---------+--------+----------+---------+
Hi, Jonathon, after running the scripts in simple_run.sh, I indeed get the final results. Yet as shown in the table, the performances on sequences in  Davis 2017 val.txt are poor, and far from the best results as reported in your papers, any tips for me? Thanks!

Hey hey. I just made some minor bug fixes and then evaluated the simple_run.sh script. I get the following results.
Mean J: 0.7363
Mean F: 0.80044
Mean J&F: 76.8366
This is mostly the same as the "Fast-finetuned" version presented in table 5 of the ACCV/arXiv version of the paper. In the paper this has J&F of  73.7, a fixed bug (https://github.com/JonathonLuiten/PReMVOS/issues/2) results in this number now being 3.1% better.
One thing to check is, when you run the script, make sure to delete output/final and output/intermediate to make sure you are actually re-running everything when you run it.
If your environment is set up correctly, just running the simple_run.sh you should get the same results as I got above.

Thanks for your reply, and I will have a try:)Sent from my Huawei Mobile-------- Original Message --------Subject: Re: [JonathonLuiten/PReMVOS] Get poor performance after running simple_run.sh (#4)From: JonathonLuiten To: JonathonLuiten/PReMVOS CC: Wenji Wang ,Author Hey hey. I just made some minor bug fixes and then evaluated the simple_run.sh script. I get the following results.
Mean J: 0.7363
Mean F: 0.80044
Mean J&F: 76.8366
This is mostly the same as the "Fast-finetuned" version presented in table 5 of the ACCV/arXiv version of the paper. In the paper this has J&F of  73.7, a fixed bug (#2) results in this number now being 3.1% better.
One thing to check is, when you run the script, make sure to delete output/final and output/intermediate to make sure you are actually re-running everything when you run it.
If your environment is set up correctly, just running the simple_run.sh you should get the same results as I got above.
—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or mute the thread.
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/JonathonLuiten/PReMVOS","title":"JonathonLuiten/PReMVOS","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/JonathonLuiten/PReMVOS"}},"updates":{"snippets":[{"icon":"PERSON","message":"@JonathonLuiten in #4: Hey hey. I just made some minor bug fixes and then evaluated the simple_run.sh script. I get the following results.\r\n\r\nMean J: 0.7363\r\nMean F: 0.80044\r\nMean J\u0026F: 76.8366\r\n\r\nThis is mostly the same as the "Fast-finetuned" version presented in table 5 of the ACCV/arXiv version of the paper. In the paper this has J\u0026F of  73.7, a fixed bug (https://github.com/JonathonLuiten/PReMVOS/issues/2) results in this number now being 3.1% better.\r\n\r\nOne thing to check is, when you run the script, make sure to delete output/final and output/intermediate to make sure you are actually re-running everything when you run it.\r\n\r\nIf your environment is set up correctly, just running the simple_run.sh you should get the same results as I got above."}],"action":{"name":"View Issue","url":"https://github.com/JonathonLuiten/PReMVOS/issues/4#issuecomment-482822661"}}}
[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/JonathonLuiten/PReMVOS/issues/4#issuecomment-482822661",
"url": "https://github.com/JonathonLuiten/PReMVOS/issues/4#issuecomment-482822661",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]

Closed due to lack of Activity, and I confirmed it worked


chore(main): release 1.5.6

:robot: I have created a release beep boop
1.5.6 (2022-11-18)
Miscellaneous Chores

deps: bump laravel/framework from 9.39.0 to 9.40.1 (b301a72)
deps: bump laravel/framework from 9.39.0 to 9.40.1 (#190) (a5a0bd0)
deps: bump laravel/tinker from 2.7.2 to 2.7.3 (bb70b99)
deps: bump laravel/tinker from 2.7.2 to 2.7.3 (#188) (f92264f)
deps: bump vite from 3.2.3 to 3.2.4 (0ac8e9b)
deps: bump vite from 3.2.3 to 3.2.4 (#189) (3c3029c)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/rotex1800/registration/releases/tag/v1.5.6 :sunflower:


Migrate from open-color to colar

Overview
This PR attempts to migrate from using open-color to colar.
The latter is based on the former and extends the color palette.

Notes
Here are some changes that I thought were worth highlighting:

Replace --grape with --purple (palette values are unchanged)
Add colorjs.io, required by props.colors.src.js, as a devDependency as its CDN seems to be unavailable
Set .color-swatch inline-size as 7% 6.7%, to account for 13 luminosity steps.

I decided not to make changes to any theming (including the documentation).
It could use some love:

Related Issues
Should fully/partially address #247 & #308
Conclusion
I tried to be as systematic and careful as possible.
Any feedback is appreciated!

Hey
Not sure why there are so many commits. I'll try to get this fixed ASAP

this looks awesome. did a visual review of the code, nice work in there being minimal but getting the work done, ty 🙏🏻
i'll pull your work down onto a local machine soon and give it a peep and get back to you 🙂

the dark side of the grays are really muddy don't you think? didnt notice that when reviewing colar before. we may need to intervene and supply our own. i took a quick stab at updating the normalize surfaces and text and it's just all so brown feeling. the light theme is mostly unaffected, except the dark text colors look a little muddy too.

also, the darkest variants dont look perceptually equal, like orange 12 vs sand 12.
that was my 5m review hehe, will dig in and provide more specific feedback later. it's definitely a step forward!

so it looks like just the darker grays that go warm in colar, why the dark theme was so noticable, you can even see the hue tilt in the angle of hsl:

we could keep the colar set and just call it warm gray, then keep using the open color grays as a base? this would mean all the current normalize uses would look the exact same, but there'd be 3 new darker colors available. i've been making darker grays for various reasons and have some ready to go. i plugged them into a favorite tool of mine and tweaked them a bit, then tried them out in the site.
--gray-10 #16191d
--gray-11 #0d0f12
--gray-12 #030507
i need to test them on some different screens, make sure they're not over saturated. might also try doing the adjustment in oklch instead of hsl, see if i can get a little bit more of a steady color ramp. thoughts on appending 3 colors to open-color like this, keeping the gray set like it was, and adding colar as a warm set?

what's cool here at first, was that the dark theme looked the same as it did before. but i updated the surfaces to use some of the darker variants i show above, and it's nice i felt:

todo:

[ ] update docsite gradients from what was something like --indigo-5 to the newer bright swatch in colarlikely --indigo-6 but maybe 7. will need an eye, as i noticed because some of the gradient had lost some vibrancy on the docsite.

Hey Adam
Thank you for the detailed feedback!

the dark side of the grays are really muddy don't you think? didnt notice that when reviewing colar before. we may need to intervene and supply our own. i took a quick stab at updating the normalize surfaces and text and it's just all so brown feeling. the light theme is mostly unaffected, except the dark text colors look a little muddy too.

Yes, it feels much warmer than a neutral gray.
Not a fan of Tailwind's class-based approach, but they actually have a nice palette of grays.
https://tailwindcss.com/docs/customizing-colors

we could keep the colar set and just call it warm gray, then keep using the open color grays as a base? this would mean all the current normalize uses would look the exact same, but there'd be 3 new darker colors available. i've been making darker grays for various reasons and have some ready to go. i plugged them into a favorite tool of mine and tweaked them a bit, then tried them out in the site.
i need to test them on some different screens, make sure they're not over saturated. might also try doing the adjustment in oklch instead of hsl, see if i can get a little bit more of a steady color ramp. thoughts on appending 3 colors to open-color like this, keeping the gray set like it was, and adding colar as a warm set?

I like this solution. Just to be clear, the final palette would be something like:

colar.gray -> open-props.warm-gray (or a one-word name for warm-gray to stick with the pattern)
open-color.gray + open-props.gray{10-12} -> open-props.gray
everything else from colar

Giving developers the choice of a warmer gray is really nice.
Do you think open-props should provide an option for a cooler gray, with its hue tending towards blue, similar to Tailwind's slate ?

what's cool here at first, was that the dark theme looked the same as it did before. but i updated the surfaces to use some of the darker variants i show above, and it's nice i felt:

The new surfaces look really clean!

I have a few questions:

How are the .min.css files in the docsite folder generated? Are they among the output files of  npm build?
What tool(s) do you use to study colors? I really like the a11y ratio chart.

I'll try to make the following changes over the coming weekend:

updating tests to account for new colors
accounting for gray from open-color and warm gray from colar

If there's anything else you'd want me to try out, please let me know.
Thank you for your time!

just tested the 3 new dark grays in a variety of situations and screens, they're g2g

they actually have a nice palette of grays

they do, agree, but it's also too many options maybe? we can def get away with a warm and a cool set. i do like their name of "stone"

colar.gray -> open-props.warm-gray (or a one-word name for warm-gray to stick with the pattern)
open-color.gray + open-props.gray{10-12} -> open-props.gray
everything else from colar

yep! what do you think of calling colar's gray palette "stone" as the one word name?

How are the .min.css files in the docsite folder generated? Are they among the output files of npm build?

they jump up a directory and grab open props from src like. and i think this answers the question?!
@import "../src/index.css";
@import "../src/extra/normalize.css";

What tool(s) do you use to study colors? I really like the a11y ratio chart.

i dont have a favorite, but for this task i used https://components.ai/theme

thanks again, lovin this progress. i'm excited to merge it and update a couple things 💯

they do, agree, but it's also too many options maybe? we can def get away with a warm and a cool set. i do like their name of "stone"
yep! what do you think of calling colar's gray palette "stone" as the one word name?

stone is nice!

How are the .min.css files in the docsite folder generated? Are they among the output files of npm build?
they jump up a directory and grab open props from src like. and i think this answers the question?!

@import "../src/index.css";
@import "../src/extra/normalize.css";

Ah yes, that makes sense for the .css files that aren't minified.
Are the files in docsite/public generated by the lib:* scripts?
I only just noticed that their paths match the path supplied via the -o option in those commands.
docsite
└── public
    ├── media.min.css # npm:lib:media
    ├── normalize.min.css # npm:lib:normalize
    └── open-props.min.css # npm:lib:all

If this is the case, should I update them to reflect the new palette?

i dont have a favorite, but for this task i used https://components.ai/theme

Wow, this is really awesome, I really like their interface!
Thank you for sharing it!

Updates
The palette is updated as follows:
// Combine `open-color` and `colar` palettes
const colors = Object.entries({
  // Extend `openColor.gray`
  gray: {
    ...openColor.gray,
    10: "#16191d",
    11: "#0d0f12",
    12: "#030507",
  },
  // Use `colar.gray` as "stone"
  stone: colar.gray,
  // Use all other colors in `colar`
  ...Object.fromEntries(
    Object.entries(colar).filter(([hueName]) => hueName != "gray")
  ),
});

Also, updates were made to:

generated props.[color].css files
package exports and scripts
Colors section in documentation

Tests
The changes so far, update the palette by:

Adding 3 shades for each existing color, (13 colors in open-color) [3 * 13 = 39]
Add 6 new hues (stone, choco, brown, sand, camo, & jungle) each with 13 shades [6 * 13 = 78]

In total, there are 117 new shades, or open-props tokens.
@@ -24,7 +24,7 @@ test('Import should have colors', async t => {
 })

 test('JSON Import should have colors', async t => {
-  t.is(Object.keys(OPtokens).length, 280)
+  t.is(Object.keys(OPtokens).length, 397)
   t.assert(Object.keys(OPtokens).includes('--orange-0'))
 })

Each color token contributes 4 to this count, so a difference of [3 * 117 = 468]:
@@ -4,7 +4,7 @@ const OpenProps = require('../dist/open-props.cjs')
 const OPtokens = require('../open-props.tokens.json')

 test('Should have an all included import', t => {
-  t.is(Object.keys(OpenProps).length, 1098)
+  t.is(Object.keys(OpenProps).length, 1566)
 })

Notes

update docsite gradients from what was something like --indigo-5 to the newer bright swatch in colar
likely --indigo-6 but maybe 7. will need an eye, as i noticed because some of the gradient had lost some vibrancy on the docsite.

I assumed you'd want to do this together with the updates to --surface and other derived color props.

I think docsite/public/*.min.css files might need an update

Updates
The palette is updated as follows:
// Combine `open-color` and `colar` palettes
const colors = Object.entries({
  // Extend `openColor.gray`
  gray: {
    ...openColor.gray,
    10: "#16191d",
    11: "#0d0f12",
    12: "#030507",
  },
  // Use `colar.gray` as "stone"
  stone: colar.gray,
  // Use all other colors in `colar`
  ...Object.fromEntries(
    Object.entries(colar).filter(([hueName]) => hueName != "gray")
  ),
});

Also, updates were made to:

generated props.[color].css files
package exports and scripts
Colors section in documentation

Tests
The changes so far, update the palette by:

Adding 3 shades for each existing color, (13 colors in open-color) [3 * 13 = 39]
Add 6 new hues (stone, choco, brown, sand, camo, & jungle) each with 13 shades [6 * 13 = 78]

In total, there are 117 new shades, or open-props tokens.
@@ -24,7 +24,7 @@ test('Import should have colors', async t => {
 })

 test('JSON Import should have colors', async t => {
-  t.is(Object.keys(OPtokens).length, 280)
+  t.is(Object.keys(OPtokens).length, 397)
   t.assert(Object.keys(OPtokens).includes('--orange-0'))
 })

Each color token contributes 4 to this count, so a difference of [3 * 117 = 468]:
@@ -4,7 +4,7 @@ const OpenProps = require('../dist/open-props.cjs')
 const OPtokens = require('../open-props.tokens.json')

 test('Should have an all included import', t => {
-  t.is(Object.keys(OpenProps).length, 1098)
+  t.is(Object.keys(OpenProps).length, 1566)
 })

Notes

update docsite gradients from what was something like --indigo-5 to the newer bright swatch in colar
likely --indigo-6 but maybe 7. will need an eye, as i noticed because some of the gradient had lost some vibrancy on the docsite.

I assumed you'd want to do this together with the updates to --surface and other derived color props.

I think docsite/public/*.min.css files might need an update

Hey Adam,
Short summary of the changes:

Switched the target branch to beta
Applied suggested changes from the code review
Removed changes to .min.css files

I messed something up while pulling the changes from the main branch and running git rebase main from the local colar branch.
For some reason, there are 9 more commits than necessary, but the net changes are not affected.
If you find some issue please do let me know!

Hopefully, we're good to go!

the net changes are not affected

agreed, looks fine, and i'm gonna squash it anyway 👍🏻


File marked as changed but there is no diff

Environment:

VSCode Version:  1.15.1
OS Version: macOS Sierra 10.12.6

Steps to Reproduce:

Open a file
Remove any character and type it again
Tab will indicate that file is changed
Use undo to make tab indicate, that file was not changed

Looks like VSCode checks operations history instead of real diff
Reproduces without extensions: Yes

Code is possibly fixing your end-of-line markers. Can you check if you have mixed end-of-line markers on that specific file? Can you reproduce on another file?

Hey @joaomoreno,
Here is what I did:

I removed single quote on 13th line and typed it back:

git status is empty even if I save the file.

Oh. This has nothing to do with git.

https://github.com/Microsoft/vscode/issues/919


When compiled on arm memory shows zero

ctop version 0.7.7, build 59f00dd go1.19.2
Linux raspberrypi 5.15.61-v8+ #1579 SMP PREEMPT Fri Aug 26 11:16:44 BST 2022 aarch64 GNU/Linux

This is unrelated to the tool. You need to edit /boot/cmdline.txt & add cgroup_enable=memory cgroup_memory=1 at the end if you want to view resources of Docker containers on Raspberry Pi.

That did the trick. Thank you.


Dựa trên đây bạn có thể soạn chi tiết các nội dung pen testing checklist DLD ?

Trong 1 tài liệu hướng dẫn sử dụng DLD có một số nội dung:
Overviews:
WS is named after the WS's ability to catch mice, and it's good at catching external leaks of internal
data. WS provides the following features.
The WS system detects and logs all information leakage through the network, printers, and
media(providing visibility into leaked information)
Logging of leak information specifically records what files were leaked, when and how they were
leaked, by what route ((source information) leaked user PC information, (destination information)
Internet address (URL), storage media, etc.).
WS provides an analysis function for a large amount of leaked information on the centralized
management server to calculate the risk of information leakage and classify it in the top order so
that managers can identify and take action on dangerous leaks at an early stage.
In addition, WS offers the following features
Detect all leaks across network regardless of how communications are encrypted (VPN, SSL, etc.)
☞ leakage through websites via web browsers (mail, blogs, message boards, etc.), Outlook, Cloud,
Dark Web, etc.
Detect leakage from on-premises PCs to wireless communication channels via smartphone
tethering or unauthorized wireless LANs
Detect whether a leaked file contains personal information or important keywords
Business travelers who take their laptops with them are logged and automatically aggregated to
the server when they connect to the corporate network
Provides KPI dashboards and analytics to calculate the risk of a breach
1.2. Uses and Purposes
WS is a system that installs on endpoints (Windows 10, 11) to detect all types of information
leaks, effectively preventing information leaks without disrupting employee productivity. WS
ensures visibility into all Windows-based endpoints within your organization, detecting data leaks
across key channels like networks, email, USB devices, printers, and more. It also monitors file transfers
through webmail, blogs, forums, messengers, FTP, Windows sharing, and even the dark web.
All leak detections are stored and managed in WS Server, which analyzes the risk of leakage by
type by user using a scoring method and provides a dashboard that shows the aggregated view in
order of risky user PCs. These capabilities enable admins to quickly recognize and respond to realWS Information Leakage Detection System User Manual time breach risks. All detections are stored in the DB, along with a copy of the leaked file and a screen capture image of the moment of the leak, which can be used as evidence in the event of a technology theft case.
Dựa trên đây bạn có thể soạn chi tiết các nội dung pen testing checklist DLD ?

Với việc bổ sung thông tin về 4 chính sách bảo mật cụ thể (Chuẩn ISO 27002, Luật an ninh an toàn thông tin của Việt Nam 13/ NĐ-CP, Luật Bảo vệ Dữ liệu cá nhân và tổ chức, Nâng cao nhận thức về an toàn Awareness Cybersecurity Factory), bạn có thể mở rộng pen testing checklist cho hệ thống Weasel Information Leakage Detection System (DLD) như sau:

Pen Testing Checklist - Weasel Information Leakage Detection System (DLD) Incorporating Security Policies

Compliance with ISO 27002 Standard:
Verify that Weasel complies with the security controls outlined in ISO 27002 standard.
Test the implementation of controls related to information security policies, organization of information security, human resources security, access control, cryptography, physical and environmental security, and more.
Compliance with Vietnamese Information Security Law 13/NĐ-CP:
Ensure that Weasel aligns with the requirements specified in the Vietnamese Information Security Law 13/NĐ-CP.
Verify the implementation of security measures mandated by the law, such as data protection, access control, incident response, and compliance reporting.
Adherence to Personal Data Protection Laws:
Validate that Weasel adheres to regulations outlined in personal data protection laws.
Test the system's mechanisms for safeguarding personal data, ensuring consent management, data minimization, data subject rights, and data breach notification procedures.
Awareness and Training on Cybersecurity:
Evaluate Weasel's features that enhance cybersecurity awareness and training within organizations.
Test the effectiveness of awareness programs in educating users about cybersecurity best practices, data protection measures, and the proper use of Weasel for leak detection.
Integration of Security Policies:
Ensure that Weasel integrates the security requirements from ISO 27002, Vietnamese Information Security Law 13/NĐ-CP, personal data protection laws, and cybersecurity awareness initiatives.
Test the alignment of Weasel's security features and functionalities with the principles and guidelines set forth in the security policies.
Risk Assessment and Mitigation:
Evaluate Weasel's risk assessment capabilities in light of the security policies.
Test the system's ability to identify and mitigate risks associated with information leakage in accordance with the security standards and legal requirements.
Reporting and Compliance Monitoring:
Verify that Weasel provides reporting functionalities to monitor compliance with security policies.
Test the system's reporting capabilities to ensure visibility into adherence to ISO 27002, Vietnamese laws, personal data protection regulations, and cybersecurity awareness initiatives.
Bằng cách kết hợp các chính sách bảo mật cụ thể vào pen testing checklist cho Weasel Information Leakage Detection System (DLD), bạn có thể đảm bảo rằng hệ thống đáp ứng các yêu cầu bảo mật và tuân thủ các quy định pháp lý quan trọng một cách toàn diện.


Remove Expvars

if possible

Yes, it can be removed. I'll update the profiler script in our test utils to use the standard metrics.


UI is not touchable after the animation was executed

Describe the bug
When an animation was executed, I can't interact with my app anymore. It's like there is an invisible Container overall. I need to restart the app.
To Reproduce
I am using the runFiesta hook inside a navigating container/stack together with s button onPress.
Expected behavior
I can still interact with my app/UI after running an animation.
Do you have any idea how such behavior occurs?

I have the same problem using expo sdk50 beta with EmojiPopper

By default, the Canvas has pointer events that block the UI. For the Poppercomponent for example, the pointer events are now disabled by default to avoid this as the Fiesta components are not intended to have pointer events – but in case you are using an individual animation that doesn't have this property, you can disable it as below:
<Canvas pointerEvents="none">
  <YourSkiaComponent />
</Canvas>

Will be added to the docs as well for future reference.


UX for invalid RUSTFLAGS is poor

If RUSTFLAGS has a typo, then running cargo leads to error messages like:
$ RUSTFLAGS=wrong rustup run 1.9.0 cargo build
   Compiling blank v0.1.0 (file:///home/huon/projects/test-rust/blank)
error: multiple input filenames provided
error: Could not compile `blank`.

To learn more, run the command again with --verbose.

$ RUSTFLAGS=wrong rustup run beta cargo build
error: failed to run `rustc` to learn about target-specific information

To learn more, run the command again with --verbose.

$ RUSTFLAGS=wrong rustup run nightly cargo build
error: failed to run `rustc` to learn about target-specific information

To learn more, run the command again with --verbose.

Passing --verbose does give more info (i.e. one can see the invocation that failed and the actual rustc output, and hence hopefully connect the dots back to RUSTFLAGS). However, it seems like that info is always useful/shouldn't be hidden, since there's not much a user can do about "failed to run rustc to learn about target-specific information" (in beta and nightly).

If we've improved the output. I'm not sure what more there is for us to do.  Like with #2559, being too smart can be its own problem.  RUSTFLAGS should likely be viewed as an advanced workflow anyways with us finding ways to adapt that workflow to users more generally (https://github.com/rust-lang/cargo/issues/12739).
I'm going to propose to the cargo team that we close this.

RUSTFLAGS=wrong cargo +1.74.1 build
error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `/home/user/.rustup/toolchains/1.74.1-x86_64-unknown-linux-gnu/bin/rustc - --crate-name ___ --print=file-names wrong --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=split-debuginfo --print=crate-name --print=cfg` (exit status: 1)
  --- stderr
  error: multiple input filenames provided (first two filenames are `-` and `wrong`)

Confirmed that as of 1.74.1, the error message is like above, so should be sufficient good to tell it's something wrong in RUSTFLAGS.
Agree on closing.


mention that two demos don't work in Safari

Not sure if that is the correct spot, or if they should be fixed to support latest Safari. Just wanted to let it know

Thanks, but I'm a little bit bearish about that as the demo doesn't work in Safari only because of a lacking CSS implementation which has ~nothing to do with this library. In general, I prefer to be UA-agnostic and write the examples as they should be per spec.

perfectly reasonable


Catch Throwable

I'm not 100% sure about adding the catch everywhere, but here it is, let's have a discussion about it.

makes sense to me

With master being PHP 7 only (check composer.json), you can take out the \Exception call and only call \Throwable. I don't thing @Seldaek, or anyone else, has gone through the codebase yet to change all these over. I have #785 that does it in another file.

Though the change as it is right now could make sense in 1.x too.

@moderndeveloperllc cool, I didn't notice that :+1:

So, should I also open a PR against 1.x ?

@xabbuh Putting PHP 7 code into 1.x doesn't make much sense as the main reason (I believe) for going to a 2.x release is PHP 7. I'm not even sure the 1.x library works in 7. By bifurcating the code, it eliminates the need to have this kind of duplication or version checking.
@Seldaek, can we get a definitive ruling on putting PHP 7 code in the 1.x branch?

@moderndeveloperllc the 1.x branch is compatible with PHP 7 yes (it cannot depend on new features added in PHP 7).
Making this handler aimed at hiding errors hide all of them looks sensible to me.

We would have to catch both Exception and Throwable in 1.x though (which was done in this PR initially)


Searching by Time and other advanced google search functionalities.

Hello,
I was wondering if there was a option to search google results within a certain time-range. Is this possible as well as other advanced google search queries?
Also, is there a way to scrape the time stamps of results as well. See screenshot below:

Thanks for the great work!

Nvm, think I found the solution (for those who might be interested): https://github.com/NikolaiT/GoogleScraper/blob/master/GoogleScraper/search_engine_parameters.py#L97-L99


README and Gallery cosmetic changes + Renaming some examples

Change list:

Renaming: gesture_recognition >> action_recognition. This demo supports non-gesture classes, e.g. nodding, shaking head, so I guess this is a better name.
Renaming & Unifying: hand gesture event detection / gesture_detection >> gesture_control
Recorded new GIFs because the "Action Recognition" and "Gesture Control" ones were too similar (a lot of swipes in both cases). GIFs were also re-ordered (looked better with the fitness GIF in the middle)
Added a mosaic GIF to the "Gallery" section of the README
Added a preview  of the Virtual Race App to the gallery

You seem to have uploaded the weights for the gesture_control demo, which were just added to the SDK download page. Was that accidental?

That's accidental... Will remove and talk with Ingo to rename the folder

Ingo already made the changes on the website. Let's merge and address the remaining points in a follow up PR


Create hash table

          Data Structure - Recursion Basics

Some computer programming languages allow a module or function to call itself. This technique is known as recursion. In recursion, a function α either calls itself directly or calls a function β that in turn calls the original function α. The function α is called recursive function.
Example − a function calling itself.
int function(int value) {
if(value < 1)
return;
function(value - 1);
printf("%d ",value);
}
Example − a function that calls another function which in turn calls it again.
int function1(int value1) {
if(value1 < 1)
return;
function2(value1 - 1);
printf("%d ",value1);
}
int function2(int value2) {
function1(value2);
}
Properties
A recursive function can go infinite like a loop. To avoid infinite running of recursive function, there are two properties that a recursive function must have −
Base criteria − There must be at least one base criteria or condition, such that, when this condition is met the function stops calling itself recursively.
Progressive approach − The recursive calls should progress in such a way that each time a recursive call is made it comes closer to the base criteria.
Implementation
Many programming languages implement recursion by means of stacks. Generally, whenever a function (caller) calls another function (callee) or itself as callee, the caller function transfers execution control to the callee. This transfer process may also involve some data to be passed from the caller to the callee.
This implies, the caller function has to suspend its execution temporarily and resume later when the execution control returns from the callee function. Here, the caller function needs to start exactly from the point of execution where it puts itself on hold. It also needs the exact same data values it was working on. For this purpose, an activation record (or stack frame) is created for the caller function.
Activation Records
This activation record keeps the information about local variables, formal parameters, return address and all information passed to the caller function.
Analysis of Recursion
One may argue why to use recursion, as the same task can be done with iteration. The first reason is, recursion makes a program more readable and because of latest enhanced CPU systems, recursion is more efficient than iterations.
Time Complexity
In case of iterations, we take number of iterations to count the time complexity. Likewise, in case of recursion, assuming everything is constant, we try to figure out the number of times a recursive call is being made. A call made to a function is Ο(1), hence the (n) number of times a recursive call is made makes the recursive function Ο(n).
Space Complexity
Space complexity is counted as what amount of extra space is required for a module to execute. In case of iterations, the compiler hardly requires any extra space. The compiler keeps updating the values of variables used in the iterations. But in case of recursion, the system needs to store activation record each time a recursive call is made. Hence, it is considered that space complexity of recursive function may go higher than that of a function with iteration.
Tower of Hanoi, is a mathematical puzzle which consists of three towers (pegs) and more than one rings is as depicted −
Tower Of Hanoi
These rings are of different sizes and stacked upon in an ascending order, i.e. the smaller one sits over the larger one. There are other variations of the puzzle where the number of disks increase, but the tower count remains the same.
Rules
The mission is to move all the disks to some another tower without violating the sequence of arrangement. A few rules to be followed for Tower of Hanoi are −
Only one disk can be moved among the towers at any given time.
Only the "top" disk can be removed.
No large disk can sit over a small disk.
Following is an animated representation of solving a Tower of Hanoi puzzle with three disks.
Tower Of Hanoi
Tower of Hanoi puzzle with n disks can be solved in minimum 2n−1 steps. This presentation shows that a puzzle with 3 disks has taken 23 - 1 = 7 steps.
Algorithm
To write an algorithm for Tower of Hanoi, first we need to learn how to solve this problem with lesser amount of disks, say → 1 or 2. We mark three towers with name, source, destination and aux (only to help moving the disks). If we have only one disk, then it can easily be moved from source to destination peg.
If we have 2 disks −
First, we move the smaller (top) disk to aux peg.
Then, we move the larger (bottom) disk to destination peg.
And finally, we move the smaller disk from aux to destination peg.
Tower Of Hanoi with Two Disks
So now, we are in a position to design an algorithm for Tower of Hanoi with more than two disks. We divide the stack of disks in two parts. The largest disk (nth disk) is in one part and all other (n-1) disks are in the second part.
Our ultimate aim is to move disk n from source to destination and then put all other (n1) disks onto it. We can imagine to apply the same in a recursive way for all given set of disks.
The steps to follow are −
Step 1 − Move n-1 disks from source to aux
Step 2 − Move nth disk from source to dest
Step 3 − Move n-1 disks from aux to dest
A recursive algorithm for Tower of Hanoi can be driven as follows −
START
Procedure Hanoi(disk, source, dest, aux)
IF disk == 1, THEN
move disk from source to dest
ELSE
Hanoi(disk - 1, source, aux, dest)     // Step 1
move disk from source to dest          // Step 2
Hanoi(disk - 1, aux, dest, source)     // Step 3
END IF
END Procedure
STOP

vv

htr


content attribute empty in obsidian_markdown_notes

Describe the bug
I have some functionality where I display some parts of the content of markdown files with qatt. For that, I query obsidian_markdown_notes and the content attribute. It used to work but when I now log the results to the console, it seams like the the content is always just an empty string.
To Reproduce
Steps to reproduce the behavior:

Run the following query in obsidian

postRenderFormat: html
￼query: |
  SELECT *
  FROM obsidian_markdown_notes
￼template: |
  {{log result}}

Check the results in the console.

Expected behavior
The results should contain the content of each note.
Desktop (please complete the following information):

OS: Ubuntu 22.04.4 LTS
Obsidian Version: 1.6.5
Plugin Version 1.0.1

Looks like in commit<PHONE_NUMBER>54d01a1afc5a5188b066754ae90fef in src/note.ts, content is just being set to '' for some reason, maybe debugging.

Thanks for creating an issue, this is corrected in 1.0.2. It was emptied as I was trying to use the IndexDB for caching and it was too large. I neglected to set it back. Apologies for impacting on your workflows.
As part of this I also corrected an issue with the upsert of tasks and lists when a note is changed.
Documentation has been updated for the new tables as well. If you use obsidian_notes it also has a cleaner approach in the SQL queries. Longer term I will eventually remove the ones with markdown in them to keep it consistent. There will be warnings for this.

Release https://github.com/sytone/obsidian-queryallthethings/releases/tag/1.0.2 is now available.

Thank you so much for quickly fixing this :)

If you deprecate obsidian_markdown_notes will there be another way to query the content of the notes? AFAIK there is no other plugin that allows that

Technical details in coming...
TLDR: obsidian_notes contains the same data as obsidian_markdown_notes, obsidian_notes will get improvements over time, obsidian_markdown_notes will not.
The table obsidian_notes contains the same data as obsidian_markdown_notes. I am renaming the tables as I use a regex replace in the query for obsidian_markdown_notes and with obsidian_notes it is actually a in memory table and not a referenced object array.
The referencing of the object array while working dose cause some issues with more complex queries. This is another reason why I will depreciate it.

@gentzeng following up on this issue, is the resolution and information clear?

@sytone Yes, obsidian_note works perfectly fine :+1:

Awesome to hear!


how to add new function to helpers?

hi
tanx for good package
how can I add new function as helper function without edit source file of library (init_helpers.php)?

Have a look at the documentation

@jnvsor
yes I do that before and I test it  in laravel.
my problem is that in composer autoload_files.php init_helpers.php load before laravel helpers and so it's work fine, but when I define dd() function and add it to Kint::aliases I have redeclare function error because laravel helper define dd() function before and my target is to overwrite it.
If I can overwrite init_helpers.php and in init.php can load another init_helpers.php (with some configs) my problem resolve ...

No, that won't resolve your problem, it'll just cause a fatal error when laravel tries to define dd instead. Your conflict is an issue with laravel, not Kint. I don't know if there's a way to remove dd from laravel without creating a merge hell (I doubt it) but in either case your best option is to use a different name. (Kint 1 added ddd specifically because of the conflict with laravel)

Thanks you for reply @jnvsor
Yes, I know that my conflict is with laravel and because in composer auto load helpers.php of laravel load faster than my helper.php (where I define dd function) and my target is overwrite laravel dd. But if I can change path of init_helpers.php of kint and load another init_helpers.php my problem will be fixed.
for example if I can change KINT_DIR as result it will load another init_helpers.php (my helper file instead of kint helper file)
I point to here:
require_once KINT_DIR.'/init_helpers.php';

If we make KINT_DIR optional, Kint will be more flexible.

No. KINT_DIR is integral to... Well a whole lot of stuff. I won't bore you with the details but that's not the way to do this. Even if it was, how exactly were you planning on doing that? Set a global or define before calling composer? Because as soon as composer is required the autoload on laravel is going to trigger too, and without composer you don't have Kint either.
Even if you did insert your code into init_helpers it would break if you so much as reordered your composer requires. If you must use dd then you can make a local composer package and sandwich it between kint and laravel (And now you have an extremely order-sensitive composer.json - yuck)
Just name it ddd or something. IIRC dd from laravel uses symfony's vardumper which is a nice compliment to kint anyway.


setting.yaml base-url comment might want to refer to iOS notifications

When using the "upstream-base-url" option without using the "base-url" option ntfy serve will output:
if upstream-base-url is set, base-url must also be set

From settings.yaml:
# Public facing base URL of the service (e.g. https://ntfy.sh or https://ntfy.example.com)
# This setting is currently only used by the attachments and e-mail sending feature (outgoing mail only).
#
# base-url:

This^ section may need updating to refer to base-url use as part of the iOS notifications feature, in addition to the mention of attachments and email.
thank you

Fixed in https://github.com/binwiederhier/ntfy/commit/41096ef1b06eff9624612fae28a1fc740b5af6dd
If you can, why don't you try to create a pull request for things like this (docs updates, simple changes) next time. That'd help me a lot :-) If not, don't worry about it.
Thank you for reporting this (and the other tickets!!)

sure, I will try to figure it out, I am new to GitHub

This will probably help: https://www.youtube.com/watch?v=rgbCcBNZcdQ


RDKB-44513 - Free the memory leaks from rbus gtest

Reason for change: Gtest Suits listed in Jira RDKB-44513 Description were failing
Test Procedure: Build rtmessage, rbuscore and start rtrouted", Build Rbus Gtests with valgrind mentioned in Jira Description
Risks: Low
Priority: P2
Signed-off-by: Deepak<EMAIL_ADDRESS>

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Quickly reject paths not on route

Rails noisily rejects paths not on a route.  I recently modified it to be quieter (because they happen often) - it works in testing, but not in production.

Fixed by PR #616


ModuleNotFoundError: No module named '_regex'

I downloaded Trained Models to produce your paper results. However, for SemEval2010 Task 8, it is an error when evaluating:
File "/var/autofs/cl/work/TRE-master/train_utils.py", line 97, in load_model
text_encoder = pickle.load(f)
ModuleNotFoundError: No module named '_regex'
The above error is appeared when I try to run this command below:
CUDA_VISIBLE_DEVICES=0 python relation_extraction.py evaluate --dataset semeval_2010_task8 --test-file datasets/semeval_jsonl/semeval_2010_task8/test.jsonl --log-dir  logs/ --save-dir logs/official_model/tre_semeval
Please help me to consider this problem. Thank you so much.

It seems like you are missing the regex module.
Either install regex like this:
pip install regex==2017.4.5
or install all of the required dependencies (in case you are lacking others as well):
pip install -r requirements.txt

Thank you for the quick reply. I will try to fix this problem.


Missing onDidChangeSelection-like event

re #50580
Maybe slight off topic but given that there are events for collapse/expand and the selection-property I think the selection change event is missing (and it feels incomplete/unfinished)

Tree view has now onDidChangeSelection event with following object
/**
 * The event that is fired when there is a change in [tree view's selection](#TreeView.selection)
 */
export interface TreeViewSelectionChangeEvent<T> {

	/**
	 * Selected elements.
	 */
	readonly selection: T[];

}


Pod in crash loop

Bug Report
Description
After following the readme installation instructions, I get a crash loop
My config looks like so:
# proxmox-ccm.yaml

config:
  clusters:
  - url: https://<IP_ADDRESS>:8006/api2/json # (local IP, this is a proxmox cluster running locally for testing)
    insecure: true
    token_id: "kubernetes@pve!ccm"
    token_secret: "......"
    region: pve-local-dev

enabledControllers:
  # Remove `cloud-node` if you use it with Talos CCM
  # - cloud-node
  - cloud-node-lifecycle

# Deploy CCM only on control-plane nodes
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
tolerations:
  - key: node-role.kubernetes.io/control-plane
    effect: NoSchedule

Logs
I0718 16:34:12.127628       1 serving.go:380] Generated self-signed cert in-memory
W0718 16:34:12.127652       1 client_config.go:618] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0718 16:34:12.226455       1 requestheader_controller.go:244] Loaded a new request header values for RequestHeaderAuthRequestController
F0718 16:34:12.227966       1 main.go:71] Cloud provider could not be initialized: could not init cloud provider "proxmox": no Proxmox clusters found

Environment

Plugin version: 0.4.2
Kubernetes version: [kubectl version --short]

Client Version: v1.26.2
Kustomize Version: v4.5.7
Server Version: v1.29.3

Node describe: [kubectl describe node <node>]
OS version [cat /etc/os-release]
talos 1.6.7

erm, never mind
Seems that my configuration file wasn't correct
I mixed the csm with the ccm
:)


Minimize to system tray option

Minimize to system tray option does not have the expected behavior.
Expected Behavior
Minimize to system tray option enabled:

Clicks close : goes to system tray.

Clicks minimize : goes to taskbar.

Minimize to system tray option disabled:

Clicks close : Quit Franz.

Clicks minimize : goes to taskbar.

Current Behavior
Minimize to system tray option enabled:

Clicks close : goes to system tray.

Clicks minimize : goes to system tray.

Minimize to system tray option disabled:

Clicks close : goes to taskbar.

Clicks minimize : goes to taskbar.

Context
I think the current implementation is a little obnoxious
Your Environment

Franz Version used:5.0.0-Beta.16
Operating System and version: Windows 10, however I haven't evaluated the Linux version if the behavior is the same.

Why would you want to put the app in the taskbar on minimize if "minimize to system tray" is enabled ? That makes no sense at all.

I think it's not designed very well since beginning which in fact prevents me from using Franz, sadly. I agree what @AJRamos308 says doesn't make sense. But surely, Franz doesn't behave like apps usually on systems do. I would suggest following:

"Keep Franz in background when closing the window" option should affect closing functionality only. Franz on close should close window. If it's not checked, it should quit the app. Straightforward.
"Minimize Franz to system tray" option should affect minimize functionality only. In the end, it literally says that by checking this, you disable default window minimization to taskbar / dock.

Problem: minimization option affects also closing. Which is prevented when it is checked. So when you want to retain minimization to taskbar, you can't close window anymore.
Therefore, with options combination like this, you can't have both minimize to taskbar / dock and close functionality at the same time.
Solution: "Minimize Franz to system tray" should not affect close functionality.
I would suggest to raise priority of this issue as it breaks default system behavior / functionality.
It looks like issue #468 is about the very same problem, but I don't think another option is needed and also it should not be marked as a feature request then, from system view it's more like a bug. Right functionality should be achieved with offered solution. What do you think?

@closingin it would be great. I agree that devs and other users should look at this, in fact it could save time implementing other already submitted feature requests which won't make sense if options behaved like described. Thanks for reply, will wait.

Few months past, another related issue to this settings flaw. #1006


Control apigw db creation global variable and avoid accidents deletes to live db

PG1 997

LGTM

rebase and merged ce821692fdac06643d0ad6f3d1614b2faa743485


ValidationError.from_exception_data doesn't work with error type: 'ip_v4_address'"

Describe the bug
When constructing validation errors using ValidationError.from_exception_data, this fails when the error type is ip_v4_address.It will raise:
KeyError: "Invalid error type: 'ip_v4_address'

To Reproduce
Run the code below. It uses a custom model validator that manually constructs the validation error using ValidationError.from_exception_data
from pydantic import BaseModel, Field, model_validator, ValidationError
from ipaddress import IPv4Address
from pydantic_core import InitErrorDetails

class OutputStream(BaseModel):
    destination_ip: IPv4Address = Field(
        ...,
    )

class StreamingDevice(BaseModel):
    output_stream: OutputStream = Field(
        ...,
    )

    @model_validator(mode="before")
    @classmethod
    def validate_model(cls, data: dict) -> dict:
        validation_errors: list[InitErrorDetails] = []

        if data.get("output_stream") is not None:
            try:
                OutputStream.model_validate(data["output_stream"])
            except ValidationError as e:
                validation_errors.extend(e.errors())

        if validation_errors:
            raise ValidationError.from_exception_data(title=cls.__name__, line_errors=validation_errors)

        return data

streaming_device_payload = {"output_stream": {"destination_ip": "123"}}
streaming_device = StreamingDevice.model_validate(streaming_device_payload)

Expected behavior
Pydantic is capable of generating 'ip_v4_address' errors when using model validation without the custom model validator. Therefore, we should be able to manually construct the validation error using the error dictionary that contains the ip_v4_address error type as input into ValidationError.from_exception_data.
If you were to remove the custom model validator in the example above, Pydantic would successfully throw that error type:
pydantic_core._pydantic_core.ValidationError: 1 validation error for StreamingDevice
output_stream.destination_ip
  Input is not a valid IPv4 address [type=ip_v4_address, input_value='123', input_type=str

Haven't tested it, but should ip_v4_address be in this error list here?
https://github.com/pydantic/pydantic-core/blob/main/python/pydantic_core/core_schema.py#L3900
Version:

OS: Ubuntu 20.04.4 LTS
Python version: 3.9.16
pydantic version: 2.3.0

I'm running into a similar issue where ValidationError.from_exception_data doesn't work with other error types, specifically value_error and enum.
Reproducing the Errors:
(1) enum
from pydantic_core import InitErrorDetails
from pydantic import ValidationError

validation_errors = []

validation_errors.append(InitErrorDetails(
    type="enum",
    loc=("direction",),
    input="Z",
))

raise ValidationError.from_exception_data(
    title="example",
    line_errors=validation_errors
)

# Result:
Traceback (most recent call last):
  File ".../example.py", line 12, in <module>
    raise ValidationError.from_exception_data(
TypeError: Enum: 'expected' required in context

(2) value_error
from pydantic_core import InitErrorDetails
from pydantic import ValidationError

validation_errors = []

validation_errors.append(InitErrorDetails(
    type="value_error",
    loc=("direction",),
    input="Z",
))

raise ValidationError.from_exception_data(
    title="example",
    line_errors=validation_errors
)

# Result:
Traceback (most recent call last):
  File ".../example.py", line 12, in <module>
    raise ValidationError.from_exception_data(
TypeError: ValueError: 'error' required in context

Expected Behavior:
Instead of the TypeErrors raised above, I expect a pydantic ValidationError to be raised that shows relevant info for the respective enum and value_error types. For example, If I assign type in InitErrorDetails in the above code to an error that does not fully fit my use case (string_type), it does work and does produce the validation error I want to raise (but with the wrong message; I don't want the invalid string message for my use case):
from pydantic_core import InitErrorDetails
from pydantic import ValidationError

validation_errors = []

validation_errors.append(InitErrorDetails(
    type="string_type",
    loc=("direction",),
    input="Z",
))

raise ValidationError.from_exception_data(
    title="example",
    line_errors=validation_errors
)

# Result:
Traceback (most recent call last):
  File ".../example.py", line 12, in <module>
    raise ValidationError.from_exception_data(
pydantic_core._pydantic_core.ValidationError: 1 validation error for example
direction
  Input should be a valid string [type=string_type, input_value='Z', input_type=str]
    For further information visit https://errors.pydantic.dev/2.5/v/string_type

Versions:
OS: macOS Sonoma 14.1.1
Python version: 3.10.12
pydantic version: 2.5.2

I am having the same issues. The new things like @model_validator are an exciting direction, but we really need support on how to properly aggregate custom errors in this case.
When trying to aggregate errors, I am really struggling. Is this a sign I am using pydantic not as intended?  if not, are there more complex cases in the docs?

@dsayling awesome, thanks. Is Pydantic actually tring to move away from error aggregation? I notice _pydantic_core is semi private.
LMK if anyone knows the "right" way to aggregate errors for full feedback, or if theres an intentional break away from this.

What do you mean by "error aggregation"?
I didn't think we're trying to move anywhere with errors specifically, just allow people do to what want.
If you can give some context on what you're trying to do, I'll try to explain how I think you should proceed.

@samuelcolvin - I can't speak for OP, but for myself, I'd assume that I could define multiple field_validators to an attribute to verify it meets a few different criteria. However, I've noticed that once one field_validator raises a ValueError, the rest of the field_validators for that field do not execute. It would be nice to not have to aggregate errors in field_validator by being able to define multiple and allow them to just get aggregated.
Also, in the case of a model_validator, I collect errors into an array of InitErrorDetails with the attribute as the loc, and then call ValidationError.from_exception_data with the array of InitErrorDetails.
It’s been working for me for the most part, but explaining to others on my team has been a small challenge.

Yeah, that's fundamentally against how pydantic works, and has always worked.
I think your work around is the best solution.

I think in general, the documentation should be better. It is a challenge to understand how to properly use ValidationError.from_exception_data.
https://docs.pydantic.dev/latest/api/pydantic_core/#pydantic_core.ValidationError.from_exception_data does not go into any detail about what InitErrorDetails actually wants us to provide.
Maybe we can get a pointer to better documentation, here, so Google eventually gets people to something useful.

Following up here re the reason this doesn't work with ip_v4_address - that's associated with a PydanticCustomError, not an endorsed ErrorType from pydantic-core.
Definitely confusing from the user's perspective, though.