Extending the cross() function - please give advice

Two years ago a colleague and I created a feature request (#1289) and a pull request (#1294) to extend the cross function to support multi-valued cells which was followed by a long discussion. The original cross function expects normalized data (one foreign key per cell in base column). If you have multiple key values in one cell you need to split them first in multiple rows before you apply cross (and join results afterwards). This can be quite "expensive" if you work with bigger datasets.
Finally, we all agreed upon keeping the cross function unchanged and aim for general performance improvements (https://github.com/OpenRefine/OpenRefine/projects/1#card-5380183). In the meanwhile I created a fork including the pull request to solve my use case. It is based on the OpenRefine development version of October 10, 2017 (something between OpenRefine 2.7 and 2.8):

Code: https://github.com/opencultureconsulting/openrefine/
Documentation: https://github.com/opencultureconsulting/openrefine/wiki

We use this fork within a data pipeline for the German Literature Archive to extract, transform, enrich and load data from an integrated library system into a search index for a new catalog, which will be published in a few months. Slides from a library conference are available here: http://doi.org/10.5281/zenodo.2678113 (cross on p. 16). The amount of data is big enough that it just don't work (within a time frame of 24 hours / daily updates of the catalog) without the extended cross (e.g. split, cross and join separately takes too much time, see some stats here https://github.com/OpenRefine/OpenRefine/issues/1289#issuecomment-340018966).
The project will end in June 2020 and I would like to find a sustainable solution by then. Currently the staff at the German Literature Archive is stuck at OpenRefine ~2.7 and merging the pull request #1294 with the current master got a bit more difficult because of other changes to Cross.java and the InterProjectModel.java.
Regarding the recent OpenRefine funding and plans to work on the core data model in 2020 what approach would you recommend?

merge fork with current master (not very easy to maintain)
just wait until the end of 2020 (because general performance improvements with Apache Beam will solve the issue)
create an extension with an additional GREL function, e.g. crossSplit (not sure if this is possible because of the changes to InterProjectModel.java; will be broken in 2020 due to planned changes to the core?)

OpenRefine team, could you please give an advice here?

Thanks for opening this! I would like to understand better why @ostephens' GREL-based solution is so slow - I haven't looked in detail but I think there should be ways to make cross more efficient in that respect.

I chatted to @felixlohmeier about this yesterday, and while I agree @wetneb it would be good to understand exactly why the performance degrades, I would like to see a solution in place for an active user of OR.
Because of this I'm in favour of a new crossSplit function to OR (core) right now (as we know this meets the immediate need), and investigate the issue at a slower pace

Also worth noting that from the stats @felixlohmeier reports, the real problem is the length of time it takes to split and join cells - the cross takes slightly longer, but it is not really the problem here

Thanks @wetneb and @ostephens for your comments. Yes, it's actually the performance of the split and join functions. Cross is fast but expects normalized data. The GREL in https://github.com/OpenRefine/OpenRefine/issues/1289#issuecomment-339962903 does not produce the desired outcome if there are keys in the from column that are only present in multi-value form (e.g. mary, anne in one cell but no cell containing mary alone -> mary will fail to be crossed), see https://github.com/OpenRefine/OpenRefine/issues/1204#issuecomment-316012444 for some screenshots and https://github.com/opencultureconsulting/OpenRefine/wiki#usage for example data.

I am totally OK with introducing NEW functions that help some use cases.  That is what we have traditionally done.  While we sometimes expand functions, we never try to break them for backward compatibility, and if we do, we state this upcoming change and ask users what they think on our mailing list during the bikeshedding phase.
I agree with @ostephens that we can introduce the new crossSplit() to OpenRefine now to help users of larger datasets while maintaining existing cross() as is.
This allows us to explore performance separately going into 2020 as well as tackling lookups with a more elegant UI/dialogs and set of commands, if we decide that this could fall into one of our 2020 goals in http://openrefine.org/images/czi-eoss-proposal.pdf

Also, we could even give users an option on any operation to not even store a com.google.refine.history.Change (although no Undo would be available, the overhead of objects and new Strings is greatly reduced during processing) or even let users set it in preferences for however long they need, or just a Toggle checkbox along the top of the grid somewhere that says "Store Changes [x]"

@felixlohmeier for your use case, I constantly use Pentaho for doing mass operations of lookups with further operations applied.  OpenRefine as I previously discussed was never designed for batching operations, but for Humans to inspect messy data and have safety nets for undoing and exploring.  When you know exactly what you need to do, you don't need to store Changes, or Logs, but just perform the work.
I think long term Beam DoFn's will help us quite a bit for users of large data jobs.
If you want to get this sort of functionality now...I'd recommend Pentaho or Apache NiFi.

I'm sorry it's been so long. I'm on parental leave and had the opportunity to think about this issue once again and do some experiments with Jython. And actually I found a solution for my use case (fast cross with multi-valued cells in source project and foreign project) based on Jython and the openrefine-client. It is not as fast as the former fork of the cross function, but still fast enough (20 seconds for 1.6 million rows crossed against 500.000 rows with i7-7500U CPU @ 2.70GHz and 8GB java heap space).
Maybe it is helpful for others (or other contexts), so I created a Gist with code and sample data: https://gist.github.com/felixlohmeier/a5a893190e4aa8e26091664908d04e20
Owen (@ostephens), Thad (@thadguidry) and Antonin (@wetneb), thank you very much for the discussion and your support! I will close the ticket, as no other potential users left comments here.

What. The. Actual. Hell. :-D This is pretty incredible.

@felixlohmeier Nice Felix!  An iter-generator for the win that yields 2-tuples, yeah, that's gonna be fast.


False positive error from oas3-schema rule with http security scheme with bearerFormat property

Type: Bug
The Spectral VSCode extension reports an error in an OAS v3.0.1 OpenAPI description for the following security scheme:
      "Bearer": {
        "type": "http",
        "scheme": "Bearer",
        "bearerFormat": "JWT"
      }

but this scheme is valid and in fact exactly matches the example of a JWT Bearer security scheme in the OpenAPI Specification.
I ran the Spectral CLI (version 6.13.1) on the same file and it does not flag this error.

Here are some screen shots:

@mikekistler thanks for reporting.
We'll be releasing a new version to the marketplace including latest spectral dependencies soon and will validate following that. If it's still an issue then, we'll dig deeper.

@mikekistler I've tried this with v1.1.4 of the extension and no issue is being reported for that security scheme

Thank you @frankkilcommins ! Confirmed in my setup too!


Status Code is always 404

Even if I explicitly tell call a function that sets the code to 200, it is still 404. Try it out at<EMAIL_ADDRESS>by running it and then running curl -I localhost:8080/healthz in the terminal.

Sidenote: I love how simple routing is, it's a beautifully minimalistic way to get a server started.


keep getting "letsencrypt_webfaction: command not found" error

I previously successfully set up using SSL certificates using your instructions.  But I never set up the CRON job to automatically renew them so the certificates have now expired.  When I SSH into my Webfaction server though, any letsencrypt_webfaction command results in an error message, "letsencrypt_webfaction: command not found".  I went back and repeated the install instructions using:
GEM_HOME=$HOME/.letsencrypt_webfaction/gems RUBYLIB=$GEM_HOME/lib gem2.2 install letsencrypt_webfaction
After that, running letsencrypt_webfaction --version or letsencrypt_webfaction --help both result in the above error message.
I checked my .bash_profile and confirmed it contains the following:
function letsencrypt_webfaction {
PATH=$PATH:$GEM_HOME/bin GEM_HOME=$HOME/.letsencrypt_webfaction/gems RUBYLIB=$GEM_HOME/lib ruby2.2 $HOME/.letsencrypt_webfaction/gems/bin/letsencrypt_webfaction $*
}
I also ran source $HOME/.bash_profile but I still get the error message.

Guess I forgot this only works with your root account, not with an SSH account you create.

That would be an interesting situation. Presumably, if you create an additional SSH account, you'd need to set up your bash profile on that account. You might be able to share the actual Gem installation. I've never tried it this way.


APCuL1: Better handling of deletion failures

Coverage remained the same at 100.0% when pulling 19dba39c745f2861eabfaea571be019caefb6777 on smarter-apcu-deletion into 435dacda9d0f56ab22ece0ae8da769fba2612e21 on master.


apmplanner2: fix build

see https://github.com/ArduPilot/apm_planner/issues/1166
Motivation for this change
https://github.com/NixOS/nixpkgs/issues/56826
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

https://nixos.org/nixpkgs/manual/#ssec-qt-applications
You need to instead use libsForQt59.callPackage in the all-packages.nix
Upstream ticket suggests that this can be also fixed by simply applying this patch
https://github.com/Arne-W/apm_planner/commit/21c487a6b69ffed8f30cac32dd3238d978b67355.diff

@veprbl thanks for the help!
i switched package in all-packages.nix, figuring it's probably better to just get the patch as part of the next release

In that case can you please leave a "TODO" comment somewhere in https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/science/robotics/apmplanner2/default.nix#L8 so we don't forget.
cc @wucke13 as maintainer

A comment to remind us to reinstate latest qt version on next release.

@veprbl no worries, done

@GrahamcOfBorg build apmplanner2

Thank you!


Inquiry about RLBench .dat file format and considerations for real-world experiment

Hi
Could you kindly provide information on the format of the .dat files(for example: close_jar+10/ep0.dat)   in the RLBench dataset? Additionally, if I were to conduct experiments using real-world data, what would be the essential considerations to keep in mind? Would I need to collect and preprocess data in a format similar to the simulation data used in RLBench for training purposes?

Hi,
The content of .dat files is directly loaded through our dataset classes. You can find a reference on its format here https://github.com/nickgkan/3d_diffuser_actor/blob/master/datasets/dataset_engine.py#L133-L141.
For real-world experiments, if you want to use our data loaders, then you can try to package the data into the same format. Otherwise, writing your own data loader is also an option.
Some considerations: make sure the point cloud looks normal and visualize the gripper annotations on the point cloud. Also, make sure to compute the gripper location bounds correctly. These are the most common bugs.
Good luck!


gather and scatter

Hi，the readme mentions that triton-linalg LinalgExt supports linalg_ext.gather and linalg_ext.scatter, and load.mlir shows the test case of load gather：
tt.func @load_gather_1d(%arg0: !tt.ptr<f32>, %arg1: tensor<128xi32>) {
%0 = tt.splat %arg0 : !tt.ptr<f32> -> tensor<128x!tt.ptr<f32>>
%1 = tt.addptr %0, %arg1 : tensor<128x!tt.ptr<f32>>, tensor<128xi32>
%2 = tt.load %1 {cache = 1 : i32, evict = 1 : i32, isVolatile = false} : tensor<128x!tt.ptr<f32>>
tt.return
}

What should the test case of scatter (scatter store?)look like?

What should the python triton code corresponding to gather and scatter look like? Are there any examples?

How are linalg_ext.gather and linalg_ext.scatter implemented in Cambrian hardware? Are there any special Cambrian hardware instructions called?

Thank you!

What should the test case of scatter (scatter store?)look like?

The following testcase is scatter store:
tt.func @store_scatter_1d(%arg0: !tt.ptr<f32>, %arg1: tensor<128xi32>, %arg2: tensor<128xf32>) {
  %0 = tt.splat %arg0 : !tt.ptr<f32> -> tensor<128x!tt.ptr<f32>>
  %1 = tt.addptr %0, %arg1 : tensor<128x!tt.ptr<f32>>, tensor<128xi32>
  tt.store %1, %arg2 {cache = 1 : i32, evict = 1 : i32, isVolatile = false} : tensor<128x!tt.ptr<f32>>
  tt.return
}

What should the python triton code corresponding to gather and scatter look like? Are there any examples?

To implement operators similar to torch.gather and torch.scatter, where we load data from user-provided indices, we need to use discrete load and store operations. For example:
    @triton.jit
    def gather(input, indices, output, SIZE: tl.constexpr):
        # Get index.
        index = tl.load(indices + tl.arange(0, SIZE)
        # Load input.
        value = tl.load(input + index)
        # Store result.
        tl.store(output + tl.arange(0, SIZE), value)

For more complex examples, you can refer to the FlagGems repository.

How are linalg_ext.gather and linalg_ext.scatter implemented in Cambrian hardware? Are there any special Cambrian hardware instructions called?

Yes, Cambricon has specialized hardware instructions for accelerating gather/scatter access.


Errors when running local_colmap_and_resize on windows 11

I'm getting errors when running local_colmap_and_resize.sh
Something with xargs: mogrify
Do I need to install xargs/mogrify?
(multinerf) C:\Users*****\OneDrive\Skrivebord\multinerf-main>bash scripts/local_colmap_and_resize.sh C:/Users/*****/OneDrive/Skrivebord/multinerf-main/dataset
scripts/local_colmap_and_resize.sh: line 29: colmap: command not found
scripts/local_colmap_and_resize.sh: line 39: colmap: command not found
scripts/local_colmap_and_resize.sh: line 58: colmap: command not found
~/OneDrive/Skrivebord/multinerf-main/dataset/images_2 ~/OneDrive/Skrivebord/multinerf-main
xargs: mogrify: No such file or directory
~/OneDrive/Skrivebord/multinerf-main
~/OneDrive/Skrivebord/multinerf-main/dataset/images_4 ~/OneDrive/Skrivebord/multinerf-main
xargs: mogrify: No such file or directory
~/OneDrive/Skrivebord/multinerf-main
~/OneDrive/Skrivebord/multinerf-main/dataset/images_8 ~/OneDrive/Skrivebord/multinerf-main
xargs: mogrify: No such file or directory
~/OneDrive/Skrivebord/multinerf-main

getting the same issue.

update colmap library, i had the same issue ,but its solved now by updating

Did you resolve your errors? I encountered the same error but had no idea how to fix it in Linux
scripts/local_colmap_and_resize.sh: line 29: colmap: command not found
scripts/local_colmap_and_resize.sh: line 39: colmap: command not found
scripts/local_colmap_and_resize.sh: line 58: colmap: command not found
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 79: pushd: my_dataset_dir/images_2: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 81: popd: directory stack empty
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 85: pushd: my_dataset_dir/images_4: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 87: popd: directory stack empty
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 91: pushd: my_dataset_dir/images_8: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 93: popd: directory stack empty

Did you resolve your errors? I encountered the same error but had no idea how to fix it in Linux
scripts/local_colmap_and_resize.sh: line 29: colmap: command not found
scripts/local_colmap_and_resize.sh: line 39: colmap: command not found
scripts/local_colmap_and_resize.sh: line 58: colmap: command not found
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 79: pushd: my_dataset_dir/images_2: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 81: popd: directory stack empty
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 85: pushd: my_dataset_dir/images_4: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 87: popd: directory stack empty
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 91: pushd: my_dataset_dir/images_8: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 93: popd: directory stack empty

Sadly not, but I am also not the most technically experienced with this.

Did you resolve your errors? I encountered the same error but had no idea how to fix it in Linux
scripts/local_colmap_and_resize.sh: line 29: colmap: command not found
scripts/local_colmap_and_resize.sh: line 39: colmap: command not found
scripts/local_colmap_and_resize.sh: line 58: colmap: command not found
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 79: pushd: my_dataset_dir/images_2: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 81: popd: directory stack empty
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 85: pushd: my_dataset_dir/images_4: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 87: popd: directory stack empty
cp: cannot stat ‘my_dataset_dir/images’: No such file or directory
scripts/local_colmap_and_resize.sh: line 91: pushd: my_dataset_dir/images_8: No such file or directory
xargs: mogrify: No such file or directory
scripts/local_colmap_and_resize.sh: line 93: popd: directory stack empty

Sadly not, but I am also not the most technically experienced with this.

Thanks for your reply!!!!  I really don't know what to do next.

有友友解决这个问题了吗？我也出现了


Featuresupport nereids event for logging the cascades states and transformation.

Proposed changes
Issue Number: close #xxx
Problem summary
Add an event producer, channel, consumer system to support the feature as title and you can turn it on using set enable_nereids_event = true;
Checklist(Required)

Does it affect the original behavior:

[ ] Yes
[x] No
[ ] I don't know

Has unit tests been added:

[x] Yes
[ ] No
[ ] No Need

Has document been added or modified:

[ ] Yes
[x] No
[ ] No Need

Does it need to update dependencies:

[ ] Yes
[x] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[x] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 39.68 seconds
load time: 578 seconds
storage size:<PHONE_NUMBER>8 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20221027094234_clickbench_pr_34723.html

plz solve conflict


Version 2.0

After some time using this script, I think the best approach is to create a modular environment where "plugins" can be written to scan other tools such as Nmap outputs, PRTG and NetXMS and sync to NetBox. Since other tools have a more reliable database of IP and descriptions, the idea is to sync that data to NetBox, which will lead to a 2.0 version.
For instance, when using Nmap the configuration file (~/.netbox-scanner.conf) will be read to load the parameters for NetBox and the file containing the scan, thus the sync will start. This means the users will need to run Nmap apart (like using cron and Shell Script) and use the output file as input to netbox-scanner. Command line will be like:
$ netbox-scanner [MODULE]
# where MODULE can be nmap, prime, netxms, prtg, or any other existing module.

This new version will also focus on using the Python Standard Library, to reduce security issues, and to streamline installation. Needless to say this version will be compatible to Python 3.8+, although older versions could be compatible too.
Hope you guys have patience, since I'm trying to do this in my spare time, which is scarce due to other projects, but I'll do my best. The objective of this new version is to create the main environment, along with Nmap e Cisco Prime modules. I'll try to create the PRTG and NetXMS modules too, but don't take it as a promise, okay?

[x] Create command line script for the main environment
[x] Improve the search for the configuration file
[x] Create Nmap module
[x] Link Nmap module to main environment
[x] Write tests
[x] Update documentation
[x] Create Cisco Prime module

Suggestions are welcome.
Updates

2020.05.25: added the idea to permit the configuration file to be put on ~ or in /opt/netbox. netbox-scanner will look for this file in the first directory and if it's not there, it'll search on the second directory.

Version 2.0 is alive. New bugs or requests should be based on this version.


feat!: compute borrow limit and borrowed value using safer logic during mixed price movement

Description
Major changes:

In leverage module, borrow limits use the lower of spot or historic price for EACH collateral token, not just the lower of the borrow limits computed using spot-only and historic-only
Same for borrowed value (except the higher price is used for each borrowed token)
Account summary returns the new (smarter) borrow limit and no longer bothers with the former two extra fields

Consensus-breaking:

Alters borrow limit calculations

Proto-breaking:

Removed account summary fields
Only proto breaking compared to v4.0.0-rc2, not to v3.3.0 or v4.0.0-rc1
This is fine

Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...

[ ] included the correct type prefix in the PR title
[ ] added ! to the type prefix if API or client breaking change
[ ] added appropriate labels to the PR
[ ] targeted the correct branch (see PR Targeting)
[ ] provided a link to the relevant issue or specification
[ ] added a changelog entry to CHANGELOG.md
[ ] included comments for documenting Go code
[ ] updated the relevant documentation or specification
[ ] reviewed "Files changed" and left comments if necessary
[ ] confirmed all CI checks have passed

Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
I have...

[ ] confirmed the correct type prefix in the PR title
[ ] confirmed all author checklist items have been addressed
[ ] reviewed state machine logic
[ ] reviewed API design and naming
[ ] reviewed documentation is accurate
[ ] reviewed tests and test coverage
[ ] manually tested (if applicable)

Codecov Report

Merging #1723 (2de363a) into main (a7f86d1) will decrease coverage by 0.19%.
The diff coverage is 69.14%.

@@            Coverage Diff             @@
##             main    #1723      +/-   ##
==========================================
- Coverage   58.07%   57.88%   -0.19%
==========================================
  Files          74       74
  Lines        7924     7872      -52
==========================================
- Hits         4602     4557      -45
+ Misses       2967     2965       -2
+ Partials      355      350       -5

Impacted Files
Coverage Δ

x/leverage/client/tests/tests.go
100.00% <ø> (ø)

x/leverage/keeper/oracle.go
59.37% <52.00%> (-6.15%)
:arrow_down:

x/leverage/keeper/limits.go
60.68% <68.75%> (+3.42%)
:arrow_up:

x/leverage/keeper/borrows.go
77.77% <100.00%> (-1.89%)
:arrow_down:

x/leverage/keeper/collateral.go
66.03% <100.00%> (ø)

x/leverage/keeper/grpc_query.go
65.72% <100.00%> (-0.73%)
:arrow_down:

x/leverage/keeper/iter.go
60.86% <100.00%> (ø)

x/leverage/keeper/liquidate.go
83.62% <100.00%> (ø)

x/leverage/keeper/msg_server.go
79.58% <100.00%> (+0.71%)
:arrow_up:

x/leverage/simulation/operations.go
76.95% <100.00%> (ø)

... and 4 more


selectNodesOnDrag={false} deselects all elements when dragging

Describe the Bug
When selectNodesOnDrag is set to true, it selects the element when you are dragging it.
When it is set to false:

if the element is already selected -> it does nothing while dragging
if the element is not selected -> it deselect all the other elements!

I might be wrong but I would expect no selection to happen -> !selectNodesOnDrag !== deselectAllNodesOnDrag
If this is the expected behaviour, it would be nice to have a preventNodesSelectionOnDrag prop to be able to drag nodes without modifying the selection.
Your Example Website or App
https://codesandbox.io/s/condescending-shaw-tflms
Steps to Reproduce the Bug or Issue

Set selectNodesOnDrag to false on ReactFlow component.
Select a node
Drag the node (node is still selected)
Drag a different node (selection is reset)

Expected behavior

Set selectNodesOnDrag to false on ReactFlow component.
Select a node
Drag the node (node is still selected)
Drag a different node (previously selected node is still selected)

Screenshots or Videos
No response
Platform

OS: macOS
Browser: Chrome
Version: 9.7.3

Additional context
No response

I think the same, this is the expected result.

Hi @moklick
I think, when selectNodesOnDrag=false and multiSelectionActive=false expected behaviour is:

move all selected nodes, if the dragging node is selected too or multiselection key is pressed
move only the dragging node, if it isn't selected and multiselection key is not pressed too

We use a multiselection key to control want or don't to move all selected nodes.
What do you think about this option?

Thanks for raising this issue! The issue is still there in v12. I agree we need to streamline the current behavior. Also, the behavior in v12 is very strange when selecting some nodes and dragging an unselected node.


added commonJs module output

added commonJs module output.
Context: we have ssr with express js and there common js modules are used, so at the moment server fails to work with current version of the lib from npm. think it may be usefull to distribute 2 kinds of modules as even mui have 2 version :) not sure if all changes are needed, maybe same thing could be done with less changes in package.json

@viclafouch JFYI at the moment we use SSR with express js that is build as commonjs module and it breaks due to absence of the commonjs module for this library. just wanted to avoid any hacks and use the input in our code :)


[GPT-62] Experiment with Switching Position of Title and tags

Switch the position of the title and tags and paste an image in a related PR so that we can decide if this is the direction to head in
Feel free to experiment with various combinations and paste their screenshots. Paste screenshots with various posts/ screensizes too
Sample ordering
[Title]
[info]
[Tags]

or
[title]
[tags]
[info]

From SyncLinear.com | GPT-62

Title, Info, Tags:
![image](https://github.com/AdvisorySG/dawn-advisory-theme/assets/73103636/2272b6c8-6743-4dd5-8a80-80f052f76511)

 Title, Tags, Info:

As mentioned in https://github.com/AdvisorySG/dawn-advisory-theme/issues/306#issuecomment-1822873509:
The 2nd layout would look nicer with single tags left-justified

Resending for mobile view with all changes collated (from various PRs)
 Original

 Title, Info, Tags

 Title, Tags, Info

No PR has been opened yet since the design has not been confirmed yet

Tags to be either above the title or below the title. Might want to explore changing the bubble text look away

For now there's not much negative feedback on PCSC from this, so I'll close this issue, and reopen/ recreate it as needed


fix/trade fill CSV export columns

Before submitting this PR, please make sure:

[x] Your code builds clean without any errors or warnings
[x] You are using approved title ("feat/", "fix/", "docs/", "refactor/")

A description of the changes proposed in the pull request:
PR created to solve the issue https://github.com/hummingbot/hummingbot/issues/5057
Change in the markets recorder to use a fixed list of fields from the TradeFill object to include in the export file, instead of determining it dynamically based on the content of each trade fill.
Tests performed by the developer:
Added unit tests to check the list of fields to export is the expected one, and that the fields' content can be accessed without problems.
Manually tested by running a PMM strategy connected with Binance.
Tests performed:

Setup pure market making bots running long term and confirmed only one CSV file for each running bot is created for trades that are executed
Also did the same test locally on paper trade exchanges with the same result
Checked the CSV file and confirmed that it matches with the trades executed on the client and exchange
Tried to reproduce the issue using the steps provided on the issue ticket and wasn't able to replicate during testing

Tips for QA testing:
The scenario can be reproduced following the description of the original issue.
This PR comes from https://github.com/CoinAlpha/hummingbot/pull/68
Fixes #5057

Proposal created: https://snapshot.org/#/hbot-prp.eth/proposal/0x5ae5d349f8798f65d0fc2537782e3d048c0462c51b12e614a1d261caff95c2bf

PR update: on-going test


process was killed after several gradio request

At first the scribble2image gradio process works fine, but ram comsumption grows after every gradio request and finally be killed. So does it have a memory leak of ram?

Fixed it!
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/6850#issuecomment-1432435503


Create Paper + Balsamiq wireframes for frontend

Come up with first cut wireframes of frontend to drive product discussion + requirements

Subsumed by https://github.com/onggunhao/enable/issues/13

This can be closed, then


closes #4386

Hi @matentzn. I recently did the upgrade to Protege 5.6 for this repository following your instructions in #4366. I saved the file with Protege and that made a lot of changes in the formatting in https://github.com/pombase/fypo/pull/4385, as expected.
However, now I have edited the ontology in the same computer, without other changes going in, and there is a few changes in the diff that simply switch the positions of annotations of a term without making a real change, see this PR's diff. Will this stop in the future after all inconsistencies are picked up, or is this something like the xsd_string that will happen every time we save the ontology in Protege?
cc: @ValWood

I cant tell you that unfortunately @manulera - some things look odd, like you are using a wrong annotation property for your pmids in some cases (rdfs:comment instead of hasDbXref));
This kind of serialisation fluctuation should not generally happen! cc @anitacaron if she has an idea

I have seen this happens in other ontologies too. Somehow, Protégé doesn't apply all changes for the new serialization in the whole file. Checking the diffs, these are expected and will stop in the future.

Thanks both@anitacaron and @matentz for the very fast response, as usual! And thanks nico for catching that those were errors (some of my first fypo edits). I have fixed them and will do the release after the merge. Thanks!

And thanks nico for catching that those were errors (some of my first fypo edits).

Is it possible to get error messages if we use the wrong properties. We get those with the GO pull requests is there something we need to do to make that happen?

In mondo we have a strict system:
Test for permitted properties:
https://github.com/monarch-initiative/mondo/blob/master/src/sparql/qc/general/qc-permitted-properties.sparql
Test for illegal axiom annotations:
https://github.com/monarch-initiative/mondo/blob/master/src/sparql/qc/general/qc-illegal-axiom-annotation.sparql
You could adapt them to FYPO and integrate in QC!


Enable achievents dont work , or ?? (Beta patch)

Just finished quest that should give me " Devoured by Darkness " achievment  , but it didnt. I made new game with mod enabled , finished quest and still no steam notification about achiv earned. Im playing on unfair difficulty. Beta patch.

All achievements are disabled on Beta.


Turn on header parsing by default in ArmoredInputStream.Builder

I noticed, that when constructing an ArmoredInputStream via the old constructor ArmoredInputStream(inputStream), header parsing is enabled by default, while ArmoredInputStream.builder().build(inputStream) disables header parsing.
This PR brings the builder in line with the old constructor by enabling header parsing by default.

Yes, good point. Merged!


Add support for calendar-style recurring datetimes to Interval

This would permit expressing intervals like "the third Sunday of every month"

Dear bitwalker, I am implementing recurring events for a phoenix project using timex. Is this the right place to ask you about your thoughts on future compatibility? I basically follow the iCalendar feature set currently.

Yes definitely :), feel free to post your thoughts/questions here and we can discuss the implementation

Just wondering how progression of this feature has been going. I've been trying to implement a similar thing to find the 2nd Saturday of each month, and I'd rather use Timex to do that, but I'm not exactly sure how to implement it either....

Ah, I forgot about this there.
I could give it a go, have code around here somewhere.
But I am not so sure anymore timex is the place this should be in.
What are your thoughts by now bitwalker?

I'd love to see this. I started using the recurring_events library, but soon discovered that it does not handle DST transitions at all because it doesn't have any real awareness of time zones or daylight saving time (https://github.com/pbogut/recurring_events/issues/14).
If the goal is to have an event that repeats "at 3am every day", that should be done in a way that respects DST transitions in the timezone. Or at least there should be an option to do so, because I can understand there may be cases where this is not desirable.


Feature/table insertion

First version of the table insertion, it adds 5 buttons to the toolbar (Sorry they are all equal waiting for dieter icons :P).
The first that appears adds a 2x2 table.
Then when you are inside a table 4 more appear on the toolbar
From left to right:

Adds a row below the cursor
Adds a row above the cursor (note you can't add a row above if you are on the first row as that's the header)
Adds a column after the cursor
Adds a column before the cursor

most other editors also place the cursor in the first cell after inserting

also perhaps for now, just add text instead of repeating the same icon over and over? :)

I quickly solved the problem with position is null, I added that bug trying to avoid the typescript warning and I forgot about the 0

I didn't know either where to put the functions, I just added them as static methods but will need to discuss where they should be.
About the methods I don't have any preference, I didn't put table because I thought it might be too long, but I will add it if it's more clear :)
About the cursor, I tried not to make it more complex than it should be as we are aiming for a simple version of the table, but yeah we can move the cursor to the added row, what should happen when I add a column?
And yeah, I will add text instead of the icon :)

ah for adding rows/colums I would keep the cursor at the current position, I was referring to when a table was inserted. should have made that more clear :).


Cannot Add Tileset Physics Layer (4.0)

Godot version
4.0.3
System information
Windows 10
Issue description
As I try to add a physics layer to my tileset for collision properties, I am not able to select physics as shown in the picture attached below.

Steps to reproduce
I have a reproduction product below.
Minimal reproduction project
reproduction-product.zip

Duplicate of: #75592
You need to add a layer before you can paint with them, this is done in the tileset resource in the inspector


SVG stroke-alignment attribute

https://svgwg.org/svg2-draft/painting.html#SpecifyingStrokeAlignment

+1

+1

It has been moved into a stroke module: https://svgwg.org/specs/strokes/#SpecifyingStrokeAlignment

:+1:

:+1:

+1

+1

:+1:

+1 https://www.w3.org/TR/svg-strokes/#SpecifyingStrokeAlignment

+1 doesn't work.
<svg style="background: light-blue;" height="500" width="500">   <circle cx="250" cy="250" r="250" stroke="black" stroke-width="10" stroke-alignment="inner" fill="none" /> </svg>
tried Chrome & Safari

👍

:+1:

Have added a search result for this at http://caniuse.com/#search=stroke-align . Currently there don't appear to be any plans from any browsers to support this property, couldn't even find implementation bugs for them. If this changes I'll re-open this bug and add a proper support table.

bummer .. ):
On Mon, Apr 3, 2017 at 12:33 AM Alexis Deveria<EMAIL_ADDRESS>wrote:

Closed #1772 https://github.com/Fyrd/caniuse/issues/1772.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Fyrd/caniuse/issues/1772#event-1025831830, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEwadRviHGr_xWargZVZPXC_vB_twRXPks5rsHaagaJpZM4FjQHR
.


⚠ Bofrost.lu has degraded performance

In 3c011cd, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1322 ms

Resolved: Bofrost.lu performance has improved in d7435b7 after 6 minutes.


Github workflow fails for a link that results in 404

Hi everyone 👋,
I noticed the GitHub Workflow for checking the markdown links is failing with this link, since it results on a 404 response. Is the correct link for this channel this one?
I double-checked and saw @codyseibert added it to the Up and Coming section, so I just wanted to make sure if the link is correct.
Would love your feedback 🙂,
Thanks.

@BOLT04 Thanks I see that! I went ahead and removed it. Let's see if the link checker works now. thanks!


set_locale() and db/ColumnSchema decimal bug while using comma as a decimal separator with DECIMAL columns

We are currently working on a multilingual website with Yii2. Everything is great except that we are running into some database issues when using setlocale(LC_ALL, $language).
The problems occur when we are using a locale that uses the comma as decimal seperator (nl_NL for instance). The problems do not occur when a country is used that has a point as decimal seperator. For example:
// The BAD
setlocale(LC_ALL, 'nl_NL');

$model = new Model();
$model->decimal_column = 0.1; // DECIMAL(9,8)
$model->save();

$model->refresh();

var_dump($model->decimal_column); // 0.00000000

VS
// The GOOD
setlocale(LC_ALL, 'en_US');

$model = new Model();
$model->decimal_column = 0.1; // DECIMAL(9,8)
$model->save();

$model->refresh();

var_dump($model->decimal_column); // 0.10000000

The problem seems to be that db/ColumnSchema->phpTypecast is using (string) to cast a DECIMAL MySQL column.
/vendor/yiisoft/yii2/db/ColumnSchema.php:97
        // $this->type = 'decimal'
        // $this->phpType = 'string'

        switch ($this->phpType) {
            case 'resource':
            case 'string':
                return is_resource($value) ? $value : (string) $value;
            case 'integer':
                return (int) $value;
            case 'boolean':
                return (bool) $value;
            case 'double':
                return (double) $value;
        }

When the save is called on an activerecord, the db/ColumnSchema->phpTypecast parses a column that needs to be DECIMAL with (string). The value coming out of the STRING parse is directly used in the MySQL INSERT (or UPDATE). When 0.1 is parsed as string when en_US is the locale, the result is 0.1 - which MySQL processes corretly, but when nl_NL is used as the locale, the result is 0,1 - which MySQL processes as 0. So data is corrupted. See:
setlocale(LC_ALL, 'en_US');
var_dump((string) 0.1); // 0.1

setlocale(LC_ALL, 'nl_NL');
var_dump((string) 0.1); // 0,1

Is this expected behaviour and shouldn't I use set_locale()? Or is this a bug that needs to be fixed.
PS. This is before the refactoring of ColumnSchema->setType()

This does look like a bug, but when I was thinking about how to properly cast numbers to string when there is precision/scale defined for them in the db I thought you shouldn't store numbers with fixed precision as doubles in PHP in the first place. In some corner cases they will have to be rounded to the fixed precision.

After quick googling it looks like all DB's expect numbers with a dot as a decimal separator, regardless of locale.
I was thinking about using number_format() when scale is set but following (PostgreSQL docs on numeric)[http://www.postgresql.org/docs/9.1/static/datatype-numeric.html] there can be NUMERIC db type without scale. In other cases the db performs rounding and typechecking itself, so it's not necessary to be too precise here.
So it's just about casting to string with a constant dot decimal separator.

Your findings seem indeed to be correct. Thanks for researching the issue.
A temporary fix for us would be to check if the $this->type === 'decimal' and then do a str_replace(",", "." $value) after the (string).
And I'm not sure I following your PostgreSQL comment. Wouldn't it be possible to always use number_format according to the scale variable? In the case of a numeric without scale, the decimal count would be 0.

It's not only decimal. All numeric types needs to be detected properly. I think a str_replace() is sufficient here.
From the PostgreSQL manual:

Specifying: NUMERIC without any precision or scale creates a column in which numeric values of any precision and scale can be stored, up to the implementation limit on precision. A column of this kind will not coerce input values to any particular scale, whereas numeric columns with a declared scale will coerce input values to that scale. (The SQL standard requires a default scale of 0, i.e., coercion to integer precision. We find this a bit useless. If you're concerned about portability, always specify the precision and scale explicitly.)

So I'd say we shouldn't do any kind of rounding and leave it to the db.


Translations update from Mattermost Weblate

Translations update from Mattermost Weblate for mattermost-languages-work-in-progress/mattermost-desktop-wip.
Current translation status:

Hello @weblate,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.

@devinbinnie do we merge this even though the pipeline fails?

Yeah, the pipeline is failing because we haven't updated the imports for these files yet. We'll do that once we merge into master.


Fix inconsistent variables in task name and task message

The boolean variable docker_dns_servers_strict has different types in different places.

'false' in inventory/sample/group_vars/all.yml
'yes' in roles/docker/defaults/main.yml
'no' in roles/docker/tasks/set_facts_dns.yml

This commit makes them all be true | false.

ci check this

ci check this

pipeline shows failed while passed :(

@chechiachang it's passed, just here status shows wrong


Propagate start/end/step arguments from get_standard() to individual …

…getters

@wheirman Thank you for this. I'll test this an intend to merge it if it's working correctly. It's been a while since I looked at the data set, but my only concern is that I seem to remember it not being standardized as to which was the oldest/newest data point.


Fill gaps on opcodes related to velocity and aftertouch triggers

Much like with the CC situation before, there could be situations were an instrument defined as
<region> ... lovel=0 hivel=50
<region> ... lovel=51 hivel=127

would not play any note sent with a high resolution velocity of 50.5f/127.0f.
This impacts the crossfade gain calculations, so tests will fail and I have to check with Sforzando at least to not completely screw up the volumes on crossfades.

Ok seems good now!


incorrect information

"There are no division operations because there are no overflow conditions."
for division there are one or two cases causing erroneous results:

division by zero

for signed integers: division of the smallest value (INTMIN etc) by -1 which causes overflow

so the above text is wrong stating there are no overflow confitions

Are you talking about Using Safe Integer Functions?
These functions are provided to prevent operation overflows, not buffer overflows.
In first case, Division by zero raises arithmetic exception, not arithmetic overflow.
In second case, Division by -1 does not cause arithmetic overflow.

I doubt that statement
in two's complement the most negative number cannot be multiplied or divided by minus one, because it cannot be represented with negated (now positive) sign. I would call that overflow. with wrapping the resulting value is mathematically incorrect eg -2^31 instead of 2^31 on a 32bit integer.

You are right. I was wrong about the second case.

The incorrect text ("There are no division operations because there are no overflow conditions.") has been removed.


TypeScript types need to be exposed for entrypoint

id3.js has no associated type definitions so TS consumers must import id3js/lib/id3.js instead.
This is a pain, we should instead ship a tiny types file (id3.d.ts) which exports lib/id3.d.ts.

Closed by #46


[WIP] Fix nth child selector in data grid header

For debugging #14695

What does the pull request do?

Experimenting with getting nth child selector to work with data grid column headers.
What is the current behavior?

If you add, remove or change visibility of columns nth child applies to the wrong element.
What is the updated/expected behavior with this PR?

That we'll see.
Fixed issues

@appel1 for debugging, you can also use src/Samples/Sandbox. You may need to add a reference to DataGrid project. Just fyi.

@timunie Thanks for that, made things easier.
But why was the PR closed when I added another commit to it?

Not sure if this is the correct approach, but as far as I can tell it works after these changes.

Realized that taking visibility might be a bad idea. If you change visibility in the selector for example.
I'll check how this is handled elsewhere in Avalonia and update the PR.
I think nth child in CSS counts elements even if they are hidden.

Yes, nth child does count elements if they are hidden. The same goes with avalonia nth child, IIRC.

What about the hidden DataGridFillerColumn? Should that also be taken into account? So that nth-last-child(1) matches the filler column.

@cla-avalonia recheck

@appel1,
Please read the following Contributor License Agreement (CLA). If you agree with the CLA, please reply with the following:
@cla-avalonia agree

Contributor License Agreement
Contribution License Agreement
This Contribution License Agreement ( “Agreement” ) is agreed to by the party signing below ( “You” ),
and conveys certain license rights to the AvaloniaUI OÜ ( “AvaloniaUI OÜ” ) for Your contributions to
AvaloniaUI OÜ open source projects. This Agreement is effective as of the latest signature date below.
1. Definitions.
“Code” means the computer software code, whether in human-readable or machine-executable form,
that is delivered by You to AvaloniaUI OÜ under this Agreement.
“Project” means any of the projects owned or managed by AvaloniaUI OÜ and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any
Project, including but not limited to communication on electronic mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
discussing and improving that Project, but excluding communication that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material Submitted by You, including any
associated comments and documentation.
2. Your Submission. You must agree to the terms of this Agreement before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now or in the future (except as
described in Section 4 below), Submit to any Project.
3. Originality of Work.  You represent that each of Your Submissions is entirely Your
original work. Should You wish to Submit materials that are not Your original work,
You may Submit them separately to the Project if You (a) retain all copyright and
license information that was in the materials as you received them, (b) in the
description accompanying your Submission, include the phrase "Submission
containing materials of a third party:" followed by the names of the third party and any
licenses or other restrictions of which You are aware, and (c) follow any other
instructions in the Project's written guidelines concerning Submissions.
4. Your Employer. References to “employer” in this Agreement include Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your employer has intellectual
property rights in Your Submission by contract or applicable law, You must secure permission from Your
employer to make the Submission before signing this Agreement. In that case, the term “You” in this
Agreement will refer to You and the employer collectively. If You change employers in the future and
desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
and secure permission from the new employer before Submitting those Submissions.
5. Licenses.
a. Copyright License. You grant AvaloniaUI OÜ, and those who receive the Submission directly
or indirectly from AvaloniaUI OÜ, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable
license in the Submission to reproduce, prepare derivative works of, publicly display, publicly perform,
and distribute the Submission and such derivative works, and to sublicense any or all of the foregoing
rights to third parties.
b. Patent License. You grant AvaloniaUI OÜ, and those who receive the Submission directly or
indirectly from AvaloniaUI OÜ, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license
under Your patent claims that are necessarily infringed by the Submission or the combination of the
Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the Project.
c. Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.
6. Representations and Warranties. You represent that You are legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
have disclosed under Section 3 ). You represent that You have secured permission from Your employer to
make the Submission in cases where Your Submission is made in the course of Your work for Your
employer or Your employer has intellectual property rights in Your Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6 , THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
7. Notice to AvaloniaUI OÜ. You agree to notify AvaloniaUI OÜ in writing of any facts or
circumstances of which You later become aware that would make Your representations in this
Agreement inaccurate in any respect.
8. Information about Submissions. You agree that contributions to Projects and information about
contributions may be maintained indefinitely and disclosed publicly, including Your name and other
information that You submit with Your Submission.
9. Governing Law/Jurisdiction. This Agreement is governed by the laws of the Republic of Estonia, and
the parties consent to exclusive jurisdiction and venue in the courts sitting in Talinn,
Estonia. The parties waive all defenses of lack of personal jurisdiction and forum non-conveniens.
10. Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
supersedes any and all prior agreements, understandings or communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may be assigned by AvaloniaUI OÜ.
AvaloniaUI OÜ dedicates this Contribution License Agreement to the public domain according to the Creative Commons CC0 1.

@cla-avalonia agree


FlowChart

Cross region retries
Current behavior
Any failure response from the transport that matches the conditions for cross-region communication are handled in ClientRetryPolicy. You can think of ClientRetryPolicy decides which region the request is going to happen. The cross region retry happens sequentially. A new request is being created for each region.
graph TD;
    subgraph ClientRetryPolicy
        subgraph RegionA
        end
        subgraph RegionB
        end
        subgraph RegionC
        end
    end
    RegionA --> Request1
    Request1 --> B[StoreClient]
    B --> C[GoneAndRetryPolicy]
    C --> D[ConsistencyReader]
    D --> E[SessionTokenMismatchRetryPolicy]
    E --> F[StoreReader]
    F --> G[RntbdTransportClient]
    RegionB --> Request2
    Request2 --> H[StoreClient]
    H --> I[GoneAndRetryPolicy]
    I --> J[ConsistencyReader]
    J --> K[SessionTokenMismatchRetryPolicy]
    K --> L[StoreReader]
    L --> M[RntbdTransportClient]
    RegionC --> Request3
    Request3 --> N[StoreClient]
    N --> O[GoneAndRetryPolicy]
    O --> P[ConsistencyReader]
    P --> Q[SessionTokenMismatchRetryPolicy]
    Q --> R[StoreReader]
    R --> S[RntbdTransportClient]

timeline
    RegionA : Request1 : StoreClient : GoneAndRetryPolicy : ConsistencyReader
    RegionB : Request2 : StoreClient : GoneAndRetryPolicy : ConsistencyReader
    RegionC : Request3 : StoreClient : GoneAndRetryPolicy : ConsistencyReader

Future
With the new E2E time out retry policy, speculative processing in another region may happen at the same time.
timeline
    section 1
        RegionA : Request1 : StoreClient : GoneAndRetryPolicy : ConsistencyReader
        RegionB : Request2 : StoreClient : GoneAndRetryPolicy : ConsistencyReader
    section 2
        RegionC : Request3 : StoreClient : GoneAndRetryPolicy : ConsistencyReader

Current region failover flow
graph TD;
    subgraph ClientRetryPolicy
        subgraph RegionA
        end
        subgraph RegionB
        end
    end
    RegionA --> A[Request1]
    A --> B[StoreReader]
    B --> D{Address from cache}
    D -- Yes --> C[Send request to replica]
    C --> E{Success response}
    E -- Yes --> F[End]
    E -- No --> G{Exhausted all replicas}
    G -- Yes --> H[GoneAndRetryPolicy]
    G -- No --> C
    H --> B
    D -- No --> J{AddressRefresh succeeded}
   J -- Yes --> C
   J -- No --> RegionB

API change check
API changes are not detected in this pull request.

@xinlian12   we should merge this, it looks good!

do not close

@xinlian12 - why close this? It looked good. Shouldn't we merge it in the docs.

@kushagraThapar - planning to have one PR for the region flow PR + the replica validation flow PR, will move them in a .md file. Do not worry, it will not be lost :)


[Feature Request]Download the infoq presentation slides together

The infoq presentation is combined with a video and a set of slides. It'd be great if youtube-dl could download the slides and create a offline web page to play the video synced with the slides.

https://github.com/cykl/infoqscraper

@vdm, thanks

Infoqscraper doesn't work anymore (ever since InfoQ switched to HTML5 videos). Would like to see this reopened for visibility.

@yegortimoshenko if it's not working for then you can open a new with all the necessary information, and make sure that you're using the latest version.


No error in analyzer on wrong type of the initialyzing value of covariant parameter

The following code produces no issues in analyzer
class A {
  void m2([num a = 0]) {}
  void m3({num a = 0}) {}
}

mixin B on A {
  void m2([covariant Object a = ""]); // CFE: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
  void m3({covariant Object a = ""}); // CFE: Error: A value of type 'String' can't be assigned to a variable of type 'num'.
}

class C extends A with B {
  void m2([int a = 0]) {}
  void m3({int a = 0}) {}
}

main() {
  print(C);
}

cc @eernstg to confirm
Tested on the edge SDK (July 13, 2023) on linux x64

It's the analyzer that treats the situation correctly: A default value must be assignable to the declared type of the parameter at the location where the default value occurs, in this case Object. And String is assignable to Object.
Conceptually, this makes sense: We would be allowed to pass a String as an actual argument to the parameter m2.a when the receiver has static type B, so why shouldn't we be able to use it as the default value?
So the CFE does something which is not correct. I'm not quite sure what it is doing, because it isn't obvious how it generalizes to an algorithm that it is using the declared type of A.m2.a in this case.


HTTP Error 429

Please follow the guide below

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

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2016.08.28. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2016.08.28

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
root@zitnik:~# youtube-dl -v
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v']
[debug] Encodings: locale ANSI_X3.4-1968, fs ANSI_X3.4-1968, out ANSI_X3.4-1968, pref ANSI_X3.4-1968
[debug] youtube-dl version 2016.08.28
[debug] Python version 2.7.9 - Linux-2.6.32-042stab116.1-x86_64-with-debian-8.5
[debug] exe versions: none
[debug] Proxy map: {}
Usage: youtube-dl [OPTIONS] URL [URL...]

youtube-dl: error: You must provide at least one URL.
Type youtube-dl --help to see a list of all options.
root@zitnik:~#

---

### Description of your *issue*, suggested solution and other information

I have this error when I try to dl / play youtube video
Unable to download webpage HTTP Error 429: Too Many Requests [caused by HTTPError]

https://github.com/rg3/youtube-dl#http-error-429-too-many-requests-or-402-payment-required
#5138.


feat: support exporting lists as markdown

What has changed
Added a menu button which, when clicked, allows the user to save their list as a markdown file
Connected Issues
Closes #52
QA Steps

Open a list.
There should be an item in the "more" popup menu (at the top right) which, when clicked, brings up a dialog to export the current list to markdown.
When the user finishes exporting the list to markdown, there should be a .md file that:

has the name the user gave it
should contain a reasonable representation of the list in markdown.

At the current moment, it does not work on android and, in theory, doesn't work on iOS.

TODO:

[ ] Make the "Export as Markdown" button show a dialog on Desktop.
[ ] Allow the user to select whether they want the lists labels (tags) in the markdown

At the current moment, labels are not put into the markdown.

[ ] ?Allow the user to be able to preview the markdown before it is saved to a file?

Ready for review!

One question: At the current moment, repeat info is not stored in the markdown. Should it?

One question: At the current moment, repeat info is not stored in the markdown. Should it?

I think it's fine to leave it out.

When I run on my Android phone, it doesn't give me any option to select a folder to save the file. It just saves it to my Downloads folder. Is that normal?

When I run on my Android phone, it doesn't give me any option to select a folder to save the file. It just saves it to my Downloads folder. Is that normal?

That's what I had originally settled on, but it certainly makes more sense that the user should be able to choose a directory to save their file into. Changing...

Ready for review! I think after this PR, I'll pause and head over to React. Do you think this is a good decision?

Ready for review! I think after this PR, I'll pause and head over to React. Do you think this is a good decision?

Nope. I think it's a GREAT decision! It's always good to broaden your knowledge base. I think you are pretty good at Flutter now.

The markdown generation works great!

Your app doesn't display any error message when I try to save a file to my SD card.
I see this error in the logs:
Unhandled Exception: PathAccessException: Cannot open file, path = '/storage/394A-F45D/ObsidianVault/alphabet.md' (OS Error: Operation not permitted, errno = 1)

Can you please take a look at my error with saving to the SD card? That is where I keep my Obsidian files, so it's pretty important. Maybe you need additional Android permissions to save to an SD card?

Will look into it.

Also, the markdown generation works great! The one thing I noticed - my custom ordering of items doesn't seem to be saved in the markdown file. Can you make asMarkdown use the correct ordering?
Will do!

Hmm... I haven't been able to reproduce the sdcard saving issue. I made a small tweak in the android manifest file, which might change results on older versions of android.

Ah, I was able to reproduce!

Okay, I was able to get the app to work by requesting ALL permissions (though I lose connection to the app in the process when I run from vscode through a USB cable). Seems to indicate that there is/are some permission(s) that I need to request. Digging...

There might also be a problem in the way I am saving files...


Updates to processing code for Obs

Initial rough draft for demo documents to include. Uploading data, acccesing data and a file to be updated which will make sure the object store is populated with the correct files prior to the demo.
Updating demo for accessing to data to include more details of ranking the data sources
WIP: Adding to demo notebooks
Some small updates to notebooks
Made the inlet input to get_obs_surface optional to allow for cases where the ranking has been set
Updated uploading data notebook to demo the get_obs_surface workflow when the ranking has been used
Update to beginner_workflow/footprint_workflow to tidy up footprints data merge inputs
Updating accessing of local files on Blue Pebble to load into object store
Fixed a missed merge conflict
WIP: Adding local search of data files for processing
Adding in helpers for processing local files
Small fixes for reading LGHG data

Codecov Report

Merging #133 (77fc5eb) into devel (c4e9bb8) will decrease coverage by 0.72%.
The diff coverage is 24.03%.

@@            Coverage Diff             @@
##            devel     #133      +/-   ##
==========================================
- Coverage   75.98%   75.25%   -0.73%
==========================================
  Files         116      117       +1
  Lines        7026     7118      +92
==========================================
+ Hits         5339     5357      +18
- Misses       1687     1761      +74

Impacted Files
Coverage Δ

openghg/objectstore/_local_store.py
62.85% <0.00%> (-2.82%)
:arrow_down:

tests/util/test_export.py
100.00% <ø> (ø)

openghg/localclient/_file_search.py
16.21% <16.21%> (ø)

openghg/localclient/__init__.py
100.00% <100.00%> (ø)

openghg/modules/_npl.py
97.82% <100.00%> (+0.15%)
:arrow_up:

openghg/processing/_attributes.py
88.46% <100.00%> (ø)

openghg/processing/_enums.py
100.00% <100.00%> (ø)

openghg/util/_export.py
100.00% <100.00%> (ø)

tests/services/test_searchfn.py
100.00% <100.00%> (ø)

openghg/modules/_noaa.py
87.12% <0.00%> (-4.29%)
:arrow_down:

... and 1 more

Continue to review full report at Codecov.

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

I think this can now be merged into devel.


Embed enhancements

For the case where a FrameView(id: A) is registered and then a different FrameView(id: A) is registered. Now We call reset() for the first FrameView which removes the appcues content and removes the state machine without triggering any analytics. This essential resets the first FrameView back to how it was before it was registered. This is ideal because the newly registered second frame replaces the first in the state machine directory.
AppcuesFrame (the SwiftUI implementation) doesn't need the non-zero preferredContentSize, and having it created an additional gap in the layout.
EDIT: There's also the case where the same FrameView is registered for multiple IDs. Previously that meant the same StateMachineOwning would be in the directory for multiple RenderContexts, causing all kinds of issues. Now if a frame is registered for a new ID, we reset the contents (if there was something showing for ID A, but the ID is now B, it shouldn't show the content for A. This is essentially the prepareForReuse scenario). We also enforce uniqueness in the StateMachineDirectory, removing the old RenderContext reference before adding the new one.

@iujames I added a new commit and pt 3 in the description if you don't mind taking another look.


What to do with presentation strategy logic?

I am working on silencing some clippy lints, which is pointing me to consider what is happening with regards to presentation strategy in druid-shell:
https://github.com/linebender/glazier/blob/15306d13e229b29d82195bb05b787f0d71da412d/src/backend/windows/window.rs#L741
compared to in unpiet, where presentation strategy logic goes out the window:
https://github.com/linebender/glazier/blob/03691e73f5cde398b65162fe0aaea4dd31eab3f5/src/backend/windows/window.rs#L689
Tracing various threads back, I am lead to the blocker being create_dxgi_state, particularly the creation of a D3D11Device, as explained by Raph here.
Which leads me to wonder: does the presentation strategy logic also not belong in glazier? That seems to clash with my understanding of the purpose of glazier, so I'm wondering if I can have some insight.

The presentation logic probably doesn't belong in glazier now, but it should likely be revisited when we tackle how to integrate frame pacing (and window resize, which really isn't a problem any Windows GPU integration designed in the last 5 years even attempts to tackle).


[BUG] build 311cdh failed: unable to find valid certification path to requested target

Describe the bug
mvn -U -B clean install -Dcuda.version=cuda11 -Dbuildver=311cdh -DskipTests=false
[2022-04-19T03:26:57.021Z] [ERROR] Failed to execute goal on project rapids-4-spark-sql_2.12: Could not resolve dependencies for project com.nvidia:rapids-4-spark-sql_2.12:jar:22.06.0-SNAPSHOT: Failed to collect dependencies at org.apache.spark:spark-avro_2.12:jar:<IP_ADDRESS>.1.7270.0-253: Failed to read artifact descriptor for org.apache.spark:spark-avro_2.12:jar:<IP_ADDRESS>.1.7270.0-253: Could not transfer artifact org.apache.spark:spark-avro_2.12:pom:<IP_ADDRESS>.1.7270.0-253 from/to cloudera-repo (https://repository.cloudera.com/artifactory/cloudera-repos/): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]

the jar seems to exist there:
https://repository.cloudera.com/artifactory/cloudera-repos/org/apache/spark/spark-avro_2.12/<IP_ADDRESS>.1.7270.0-253/
Perhaps this was temporary issue with their repo...

I successfully build against 311cdh, closing this


Problem with private url link

Uploaded file with private option and send it as attachment, yesterday it is working, today it stoped playing video, when tried open link in browser, it gives below error
{"errors":{"base":["Required session does not exist"]}}
The url is : https://api.quickblox.com/blobs/14dad7a45be94f92af7020588dfc5afd00.json?token=060c5aab6b5e9eb6a66441d2511329b60200bb9b

@phiren, Hello. The private link consists of blob id and token. The token is taken from QBSession.
The session can expire and generate a new token. So this link will be broken.

You should save link without the token.

//Saving link
 - (NSURL *)remoteURLWithString:(NSString *)stringURL {
    NSURLComponents *components = [NSURLComponents componentsWithString:stringURL];
    components.queryItems = nil;
    return components.URL;
}

The you can get correct link by using the method below:


Touch Events buggy?

Seems there is a problem with the latests versions with touch events. Please check these plunkers with Dev Tools Touch events activated in Chrome:
Version 1.8.3 (don't work, 1.8.0 neither)
http://next.plnkr.co/edit/zSzKX6RvDtTM3uWk?preview
Version 1.4.4 (works ok)
http://plnkr.co/edit/8c6WnxtisdQlxFyX8tzm?p=preview

Confirmed, will try to make fix as soon as possible.

Fixed in 1.8.4.

Now, only in a real touch device it increase / decrease the value twice.
it seems that mousedown and touchstart events are triggered on touch.
Check it on mobile: http://dalirium.com/touchspin/

Again confirming the bug. Forgot to test on an actual device. Hope to fix it in the following days.


How cool is this package!

Oh my god, how cool is this package? I made a note of this some time ago after stumbling upon this, but finally got the time to check out the ICU parser in types implementation in detail. Mind. blown. 🤯
For some context, I maintain an i18n library for Next.js called next-intl. I think it has quite some similarities with your package, also being based on the Format.js parser. Currently, the library provides type-safe message keys/namespaces, but ICU args aren't extracted so far. I finally have some time for this, that's why I landed here again.
I prototyped a quick integration based on your implementation here, and I think this works absolutely fantastic. I was quite impressed when I saw that {now, date} extracts the arg as a date value, but when I saw that you even implemented a union type for select args, I think that's when I lost it 😄
I was wondering if you're in any way interested in collaborating? I'd really like to give you credit for the implementation. Would you be interested in publishing the ICU parser as a standalone package that could be consumed by libraries that only need the types?
I think there'd be a few details about the API that we'd have to define, e.g. next-intl doesn't support Temporal yet, so e.g. injecting the types for ICU values could be something. Extracting tags like Hello could be another one (that one's easy). I think the relevant part of the ICU parser for next-intl would be around 160 LoC.
Do you think it would generally make sense to share the ICU parser type implementation? Or do you think it's easier if I just fork and adapt the relevant parts?

Hi, glad you like it 😉. Note that there might be an edge case with escaping # in plurals not covered right now. See the discussion in #23.
Sure, I can publish the ICU parser as a separate package. I already did some preparation, but it probably needs some more cleanup and testing. Providing the supported ICU Values is also not a problem, I just needs to pass a config object down. I expect I can finish this in the next days.
Regarding extraction of tags - I would need to investigate this some more, because I simply ignored those when I built this library. What would you expect to the extracted there? E.g. what should the result of GetICUArgs<'Hello'> be?

Ok, I have published a separate type parser library now: https://www.npmjs.com/package/@schummar/icu-type-parser
I spent most of the time fighting the tooling 😬
Passing in the types work like this:
import { GetICUArgs } from '@schummar/icu-type-parser';

interface Options {
  ICUNumberArgument: 'mynumbertype';
  ICUDateArgument: 'mydatetype';
  ICUArgument: 'mydefaulttype';
}

type Result = GetICUArgs<'some string with {var}', Options>;

Demo: https://stackblitz.com/edit/vitejs-vite-ijpy9g?file=index.ts

Regarding tag extraction: I've currently implemented this separately via ICUTags.tsx and merged extracted arguments as well as tags. So if you prefer to leave that out, that'd be fine too!

I'll definitely look into this. It would be nice to have for my lib as well. Not sure when, but also contributions are welcome 😉

Awesome, thank you so much @schummar! Just gave it a go and it works flawlessly 👌
Just maybe one thing to mention—I found the other day that this check is quite important:
https://github.com/schummar/schummar-translate/blob/bb611c81666684ddffe8a4ab8a725aa4af909e43/packages/schummar-translate/src/types.ts#L125-L126
Without this, calling GetICUArgs with an unknown string resulted in an infinite loop for me. I'm currently handling this check myself though before calling GetICUArgs, so it's fine to leave that out.
Many many thanks again for your implementation, I'm honestly not sure if I could have pulled this off on my own!


explain error output plz for renamed wrong extension .heic to .jpeg

I don't get this error output and why this is a fatal error .. plz advise... thx!
npx google-photos-migrate@latest full 'Takeout' './output' './error' --timeout 60000
Started migration.
Processing photos...
Renamed wrong extension .heic to .jpeg: /home/steve/gphotos/output/Photos/IMG_2443.HEIC
node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

[Error: ENOENT: no such file or directory, rename '/home/steve/gphotos/output/Photos/IMG_2443.HEIC' -> '/home/steve/gphotos/error/Photos/IMG_2443.HEIC'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'rename',
  path: '/home/steve/gphotos/output/Photos/IMG_2443.HEIC',
  dest: '/home/steve/gphotos/error/Photos/IMG_2443.HEIC'
}

Node.js v18.19.0

the original HEIC is present in the takeout export.
fd IMG_2443
Takeout/Google Photos/Photos from 2022/IMG_2443.HEIC
Takeout/Google Photos/Photos from 2022/IMG_2443.HEIC.json

nvm, decided to use immich-go cli. thx tho for the efforts.

I'm seeing the same error

should be fixed now

Thanks @garzj. I ended up with a quick and dirty fix of not renaming at all.
If I understood the code right, it tries to rename the file based on the MIME type correct? I had some files with wrong MIME types that ended up renaming some MOV files to JPEG which obviously caused issues.
Assuming that's correct, would it make sense to add an option to opt-in / opt-out of that?

Thanks @garzj. I ended up with a quick and dirty fix of not renaming at all.
If I understood the code right, it tries to rename the file based on the MIME type correct? I had some files with wrong MIME types that ended up renaming some MOV files to JPEG which obviously caused issues.
Assuming that's correct, would it make sense to add an option to opt-in / opt-out of that?

Yep, ExifTool identifies the type by the file contents, comparable with the file command in Linux i guess.
Seems like a good idea, I added a flag.


Week test fails randomly

The test "Weekly evaluation Case 1" (see https://github.com/ActiDoo/gamification-engine/blob/master/gengine/app/tests/test_achievement_integration_tests.py) sometimes fails.
For example, the run on Monday failed (see https://travis-ci.org/ActiDoo/gamification-engine/jobs/220583885) while the run on Saturday succeded (see https://travis-ci.org/ActiDoo/gamification-engine/jobs/220083583). In between there are no relevant changes (the commits only effect the Readme file).
I guess that the success depends on the weekday of the test execution, but this isn't verified. Either the test has some undeterministic behavior or the implementation of the evaluation itself.

Resolved in #27 and https://github.com/ActiDoo/gamification-engine/releases/tag/v0.2.2


restarting itorch while running

I have no problem restarting itorch from jupyter's restart commands when the kernel's not running. But when it's running, for example, getting stuck in a loop, restarting itorch gives the following error on the terminal
[I 14:40:33.750 NotebookApp] Kernel restarted: d446a392-051f-4318-80dd-b214319e1c88
[D 14:40:33.751 NotebookApp] 200 POST /api/kernels/d446a392-051f-4318-80dd-b214319e1c88/restart (<IP_ADDRESS>) 1017.48ms
[D 14:40:33.766 NotebookApp] Initializing websocket connection /api/kernels/d446a392-051f-4318-80dd-b214319e1c88/channels
[I 14:40:33.767 NotebookApp] Adapting to protocol v4.0 for kernel d446a392-051f-4318-80dd-b214319e1c88
[D 14:40:33.768 NotebookApp] Opening websocket /api/kernels/d446a392-051f-4318-80dd-b214319e1c88/channels
[D 14:40:33.768 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:37672
[D 14:40:33.769 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:34314
[D 14:40:33.769 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:45267
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f3d961bd970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/IOHandler.lua:45: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
[I 14:40:36.750 NotebookApp] KernelRestarter: restarting kernel (1/5)
WARNING:root:kernel d446a392-051f-4318-80dd-b214319e1c88 restarted
[D 14:40:36.755 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:52275
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f765b224970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/IOHandler.lua:45: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f96ab2ef970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/main.lua:51: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
[I 14:40:39.756 NotebookApp] KernelRestarter: restarting kernel (2/5)
WARNING:root:kernel d446a392-051f-4318-80dd-b214319e1c88 restarted
[D 14:40:39.764 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:52275
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f4280dbb970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/IOHandler.lua:45: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f870db2f970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/main.lua:51: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
[I 14:40:42.764 NotebookApp] KernelRestarter: restarting kernel (3/5)
WARNING:root:kernel d446a392-051f-4318-80dd-b214319e1c88 restarted
[D 14:40:42.776 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:52275
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f8cd70b0970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/IOHandler.lua:45: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f0244830970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/main.lua:51: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
[I 14:40:45.776 NotebookApp] KernelRestarter: restarting kernel (4/5)
WARNING:root:kernel d446a392-051f-4318-80dd-b214319e1c88 restarted
[D 14:40:45.782 NotebookApp] Connecting to: tcp://<IP_ADDRESS>:52275
Torch 7.0  Copyright (C) 2001-2011 Idiap, NEC Labs, NYU
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f83ac676970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/IOHandler.lua:45: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
qlua: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: at 0x7f8607257970
        [C]: in function 'zassert'
        /home/greg/torch/install/share/lua/5.1/itorch/main.lua:51: in main chunk
        [C]: in function 'require'
        [string "arg={'/run/user/1000/jupyter/kernel-d446a392-..."]:1: in main chunk
[W 14:40:48.782 NotebookApp] KernelRestarter: restart failed
[W 14:40:48.783 NotebookApp] Kernel d446a392-051f-4318-80dd-b214319e1c88 died, removing from map.
ERROR:root:kernel d446a392-051f-4318-80dd-b214319e1c88 restarted failed!

After the 5 tries of restarting kernel, jupyter prompts to "manually restart", which works, but it'd be nice not to shorten the time to actually restart.

+1
I have exactly the same problem when I try to restart the kernel during training a model with cuda(when I can see the process with nvidea-smi command).
/home/wei/torch/install/bin/luajit: [ZMQ][EADDRINUSE] Address already in use (98)
stack traceback:
        [C]: in function 'zassert'
        /home/wei/torch/install/share/lua/5.1/itorch/main.lua:53: in main chunk
        [C]: in function 'require'
        (command line):1: in main chunk
        [C]: at 0x00406670
[W 2016-02-18 17:33:55.950 wei restarter:95] KernelRestarter: restart failed

+1, Same error message.


Function result does not get saved into variable if function call spans two lines

In the interest of staying under a certain line-length I tried to split a statement as follows:
product_overview_url = self.generate_filtered_product_overview(
    chosen_menu_item_url)

However, when I then attempt to print or otherwise use the result of said function, the variable is empty and typed None.
Everything works correctly when I change it to this:
product_overview_url = self.generate_filtered_product_overview(chosen_menu_item_url)

In pure python, this works as expected: splitting the line after opening brackets is no problem. It would seem that locust does something strange here?

That sounds really strange. I'm not able to reproduce it. Could you give a minimal example of a locustfile.py that reproduces it?

will re-open if additional details are provided.


fixing and adding some in-source documentation

Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)

Checklist:

[ ] Pull request is titled "<TICKET-ID> Feature title"
[ ] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

Description:
There are some minor issues with the in-source documentation which I tried to fix, but there needs to be additional input especially in instance.h where docu comment was missing for the second factory function.
Please feel free to work on it.

 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.


Hot Exit: push renderer backup logic into new backup service

I notice that many backup related tasks are spread and tightly coupled in many places of untitled world and files world. This is a larger issue where I think the theme should be to LOOSEN the tight coupling of backup to the rest by leveraging more events and services. I am not a big fan of adding all backup matters into the pieces we have today. Instead this should be an optional service that is plugged in from the outside as much as that is possible.
I suggest to introduce a new service for backup handling from the renderer that deals with all these matters.
It should contain all the methods of IFileService for backup related work and just use the IFileService where appropriate.
It should listen to dirty events from the untitled and text file land and start the business of doing a backup (after a delay - for that take a look into async.ts/RunOnceScheduler) as well as cleaning up backups when a file is no longer dirty or the model gets disposed. This also makes it possible to reuse the same code between backing up untitled and text files.
It should answer to the question if hot exist is enabled or not for the workspace.
It should participate in the shutdown lifecycle and do the things that ITextFileServices today does. I do not expect to see any backup related code in ITextFileServices, the only thing it should do is check for the hot exit flag to ask for confirmation or not.

https://github.com/Microsoft/vscode/pull/14115


Server-side light level system

About the PR

Adds a system for calculating how much "light" is in a certain position on the map.
is based on a pretty rudimentary estimation using pointlightcomponents
Perhaps not all that efficient; i really don't know.
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

no cl no fun

would be nice to have a clientside overlay for this to see how good of an estimate it is

to the shed

just going to close this considering how large the change in scope will be


Revert "Update SECURITY.md"

Reverts TeamCodeArena/DeliverEase#138
For new change

@SID262000 Please review it


Glyph appears off-screen on iPads in Landscape on iOS 9.0.2

The LockGyph appears off-screen on iPads in Landscape on iOS 9.0.2.
Adjusting Landscape Y to 700 can fix this, but the glyph is still not centered in the middle of the screen.
Attached please find a picture of the problem. Thanks! ^_^

There is the same problem under iOS 9.3.3 with iPad Air 2.
It's a shame because this tweak is really great !

i can reproduce this issue. simple fix as well - just need to use the same position for the glyph in portrait and landscape.

Thanks! I have an iPad Pro 12.9" (iOS 9.3.3) now and can help test on it! ^_^

Fixed in commit 4e30f1a.

Unfortunately, it seems this issue is still not fixed on my iPad Pro. :/

bug is still present on 9.3.3, latest commit has not fixed the issue.

It's OK for me on iPad Air 2 with the latest version (1.1.13-2  2016/08/08) and without ajusting Landscape.
Thanks !

@emeoleb Did you test in both Portrait and Landscape view on the lockscreen?

@ReddestDream Yes, in both Portrait and Landscape.
The glyph appears in the bottom middle (centered).

Hmm. Your right. Seems to be fixed. Wow. I'll keep testing to totally confirm, but yes, it seems fixed for me too . . .

yes, apparently optimo published the wrong update, or i sent the wrong update. either way, the bug is 100% fixed, and i really should install a build from my Mac onto my iPad next time.


Enable Assignment of Predefined Static IPv4 Addresses for Control Plane and Worker Nodes

/kind feature
Description:
Currently, the Hetzner Cluster API (CAPI) provider automatically assigns primary IPv4 and IPv6 addresses to control plane and worker nodes during provisioning. There is no option to specify predefined static IPv4 addresses for these nodes. This limitation affects users who need specific IP addresses for integration with existing network infrastructures, DNS configurations, firewall rules, or compliance with organizational policies.
Proposed Feature:
Introduce the ability to assign predefined static IPv4 addresses to both control plane and worker nodes, independent of the load balancer configuration. This enhancement would provide users with greater control over their network setups and IP address management.
Example Configuration
Below is an example of how the configuration might look with the proposed feature:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: HetznerCluster
metadata:
  name: my-cluster
spec:
  controlPlaneEndpoint:
    host: "control-plane.somehost.com"
    port: 6443
  controlPlaneStaticIP:
    address: "<IP_ADDRESS>"  # Predefined static IPv4 address for control plane
  workerNodeStaticIPs:
    - name: "worker-node-1"
      address: "<IP_ADDRESS>"  # Predefined static IPv4 address for worker node 1
    - name: "worker-node-2"
      address: "<IP_ADDRESS>"  # Predefined static IPv4 address for worker node 2

Use Cases

Controlled Network Environments: Environments where IP addresses are tightly controlled, such as corporate networks with strict security policies.
Integration with External Services: Nodes need to communicate with external systems that require whitelisted IP addresses.
Consistent Addressing for Monitoring and Logging: Consistent IP addresses facilitate easier monitoring, logging, and troubleshooting.

Environment:

cluster-api-provider-hetzner version: 1.0.0
Kubernetes version: Any

Thank you for your prompt response and for considering this feature request.
Clarification on Requirements:

Target Platform: I am looking to have this feature implemented for Hetzner Cloud (HCloud) instances.

IPAM Provider:
I believe that leveraging the in-cluster IPAM provider for Cluster API could be a viable solution. It appears to offer the flexibility needed for IP address management within the cluster. It may allow for dynamic assignment of predefined static IP addresses during node provisioning and could streamline the implementation process and align with Cluster API best practices.
Questions:

Are there any known compatibility considerations when integrating the in-cluster IPAM provider with CAPH?
What would be the expected effort to integrate this IPAM provider into CAPH? Do you have examples?


HHH-13361 Audited entities that use composite identifiers to support

Support audited entities using composite identifiers based on nested relations

Thanks for the PR but can you re-open the PR against master rather than 5.1, @kbenahmedPalm ?

Superseded by PR #3060


Retry support for Delayed tasks

Draft proposal for transparent retrying of Delayed tasks. The actual retrying logic (when to stop, how long to wait between retries, etc.) is provided by tenacity. Docs and tests to be added if there are no objections to the idea.
Usage:
import logging
import random
import time
from tiledb.cloud.compute import Delayed

from tenacity import (
    Retrying,
    wait_fixed,
    stop_after_attempt,
    before_log,
    before_sleep_log,
)

logging.basicConfig(level=logging.INFO, format="%(asctime)s: %(message)s")

def f(x, p):
    v = random.random()
    if v < p:
        raise ValueError(f"Value less than {p}: {v}")
    time.sleep(v * 10)
    return v ** x

retrying = Retrying(
    stop=stop_after_attempt(3),
    wait=wait_fixed(2),
    before=before_log(logging, logging.INFO),
    before_sleep=before_sleep_log(logging, logging.INFO),
)

nodes = [Delayed(f, name=f"node_{i}", retrying=retrying)(i, 0.4) for i in range(3)]
print(Delayed(sum, local=True)(nodes).compute())

Sample output:
2021-02-04 14:07:42,161: Starting call to 'node_1', this is the 1st time calling it.
2021-02-04 14:07:42,171: Starting call to 'node_2', this is the 1st time calling it.
2021-02-04 14:07:42,266: Starting call to 'node_0', this is the 1st time calling it.
2021-02-04 14:07:47,219: Retrying node_0 in 2.0 seconds as it raised TileDBCloudError: Docker logs: Running UDF.
Error executing UDF:
------------------- UDF Backtrace -------------------
Traceback (most recent call last):
  File "/opt/python_generic_udf_entry.py", line 486, in main
    result = udf_function(*(udf_args_parsed[0]))
  File "retry_demo.py", line 21, in f
ValueError: Value less than 0.4: 0.23205460161491887

------------------- End Backtrace -------------------
Error(s): docker container exited with non-zero code: 1. - Code: 4010.
2021-02-04 14:07:49,221: Starting call to 'node_0', this is the 2nd time calling it.
2021-02-04 14:07:54,510: Retrying node_0 in 2.0 seconds as it raised TileDBCloudError: Docker logs: Running UDF.
Error executing UDF:
------------------- UDF Backtrace -------------------
Traceback (most recent call last):
  File "/opt/python_generic_udf_entry.py", line 486, in main
    result = udf_function(*(udf_args_parsed[0]))
  File "retry_demo.py", line 21, in f
ValueError: Value less than 0.4: 0.024038032335790716

------------------- End Backtrace -------------------
Error(s): docker container exited with non-zero code: 1. - Code: 4010.
2021-02-04 14:07:56,512: Starting call to 'node_0', this is the 3rd time calling it.
1.9224380470427413

I'm not sure if it's possible to determine what the "correct" exception types are in general. A TypeError most likely is a user error, a ValueError may or may not be. I think for preventing flooding it would make more sense to limit the number of retries? Perhaps this can be enforced on the server side (since all retries of send the same task_id of the initial failed task).

I also have a concern about any automatic retry support. There of course will always be transient failures no matter what we do, but I think its more likely for there to be user code errors and the user might end up rerunning a task that costs them which is going to always fail because of a programing mistake in their UDF.
I think you can provide similar benefit with automatic retry by allowing the graph to retry a failed node, and then if it succeeds to resume the graph execution and restart all cancelled tasks.

If we do end up needing a hook like this, my concern was just to make sure it is hidden enough to prevent someone casually running up a bill by accident.

I'm not sure if it's possible to determine what the "correct" exception types are in general

We can have a pretty good idea whether an error happens "inside" user code (the code itself throws an exception) or "outside" the user code (for example if there is a problem in executor setup, or if container is killed due to resource limits) because we have catch block(s) around the user code execution. However, I suspect the differences are not yet exposed in a way that is useful for this decision on the client side right now (eg TileDB-Cloud specific, enumerated error types).

We can have a pretty good idea whether an error happens "inside" user code (the code itself throws an exception) or "outside" the user code (for example if there is a problem in executor setup, or if container is killed due to resource limits) because we have catch block(s) around the user code execution.

Assuming we can distinguish between inside and outside user code, is the argument that we shouldn't attempt to support retries for the inside case at all, i.e. let "inside" error handling be the responsibility of the user function ?


Fix128

Still busted :smile:

this is becoming a ridiculous

Still busted :\

I must check if we are really using the same version of the formatter everywhere

Yay! :D :clap:


Change the default news route

Is it possible to change the routes "/news" "news/title" to a custom route like "/something-else" "/something-else/title"?
For example the Inquiries extension has that nicely solved in a .rb config file.
I am using the latest master branch version and I hope I didn't missed a trivial solution to this issue :).

It's a missing feature, you could develop it or use refinerycms-blog who have this feature : https://github.com/refinery/refinerycms-blog