✨ New create_commit API

What's new

HfApi.create_commit method to upload / delete several files at once to the HF Hub
HfApi.upload_folder method: convenience wrapper around the previous method to upload a folder to the HF Hub, preserving its structure
commit_api module with utility functions handling upload of large files via the git LFS protocol

TODO

Progress reporting with TQDM
With the current implementation, upload is single-threaded and happens sequentially, file by file
It would be faster to perform uploads in parallel, either with asyncio or multi-processing
Update moon-staging so that CI can pass

cc @coyotte508 @nateraw @lewtun @julien-c @osanseviero

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

IMO upload_file should also use the new APIs (as well as delete_file)

Also cc @Wauplin 🤗

I implemented a very naive multi-threaded upload in 05a040e
It's not very elegant, so let me know if you want to handle that in a different PR @adrinjalali @LysandreJik @nateraw @lewtun
cc @julien-c, @lhoestq @Wauplin who might have more experience with multi-threading in Python

@adrinjalali @LysandreJik can this be merged ?

https://github.com/huggingface/moon-landing/pull/3144 introduced an optional parentCommit feature that adds safety when committing - it rejects when the latest commit on the branch does not match parentCommit.
It'd be nice to have that soon in the API, either allowing to specify the parent commit directly on the hub library side or checking the local state (if we still use git repos?)
In another PR of course.
btw cc @lhoestq for when you want to implement the commit API on datasets.

Merging this, given comments on Slack: https://huggingface.slack.com/archives/C02V5EA0A95/p1655717469105299

Since we are not going to have this in the current release, a few more hours wouldn't change anything, and @TristanThrush had explicitly mentioned the request (I have no idea of the reasoning behind it), and that it's the middle of the night for him right now, it would have been nice to wait for him to have a chance to respond. We also really try to not merge our own PRs @SBrandeis .

We also really try to not merge our own PRs @SBrandeis .

Sorry, @adrinjalali 😓 I'll keep this in mind next time


[Enhancement] Support delete sql for primary key table with sort key

What type of PR is this:

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes:

Fixes #
Problem Summary(Required):

Primary key table with sort key does not support partial update so far, so we need to provide all columns data when we doing data import. But the delete sql only provide primary key columns and the delete request will be reject because the request is consider as partial update request. This pr will support the delete request for primary key table with sort key.
Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[x] 2.5
[ ] 2.4
[ ] 2.3

@Mergifyio backport branch-2.5


When encountering a typechecking error, print an approximate type anyways

It seems that this should happen already...
(Though I created this issue because there was an example were it didn't - the question is, what was ist?)

Example:
julia> typecheck_hs_from_string("
       module L
       function foo(M,G)
          (d,_) = size(M)
          for i in 1:d
             internal_mutate!(M)
             M = 1/2 * M
             G = 1/2 * M[i,:]
          end
          return
       end
       end")

The problem is not that we don't have a result. The problem is that we dont't print it.


Fix ByteBuffer incompatible issue

It seems that compiling the code with SDK 9+ in a JDK 8 JVM will produce a NoSuchMethodError.
This can be reproduced by running any integration tests locally.
Casting ByteBuffer to Buffer for the following methods fixes the issue (verified after running integration test again):
position(int)
limit(int)
mark()
reset()
clear()
flip()
rewind()

Similar issue from other repo: https://github.com/eclipse/jetty.project/issues/3244

This looks like a fix for a compile time problem. The issue reported recently in open source was a runtime issue. How are they related?

This is the exception reported recently
Got exception to kick off standalone data ingestion job - java.io.IOException: Input/output error     at java.nio.MappedByteBuffer.force0(Native Method) ~[?:1.8.0_232]     at java.nio.MappedByteBuffer.force(MappedByteBuffer.java:203) ~[?:1.8.0_ 232]     at org.apache.pinot.core.segment.memory.PinotByteBuffer.flush(PinotByteB uffer.java:327) ~[pinot-all-0.4.0-SNAPSHOT-jar-with-dependencies.jar:0.4.0-SNAPS HOT-7fd2110de66c2bb0b49ee340bac492fafe1f0693]     at org.apache.pinot.core.segment.memory.PinotDataBuffer.close(PinotDataB uffer.java:271) ~[pinot-all-0.4.0-SNAPSHOT-jar-with-dependencies.jar:0.4.0-SNAPS HOT-7fd2110de66c2bb0b49ee340bac492fafe1f0693]     at org.apache.pinot.core.io.util.PinotDataBitSet.close(PinotDataBitSet.j ava:247) ~[pinot-all-0.4.0-SNAPSHOT-jar-with-dependencies.jar:0.4.0-SNAPSHOT-7fd 2110de66c2bb0b49ee340bac492fafe1f0693]     at org.apache.pinot.core.io.util.FixedBitIntReaderWriter.close(FixedBitI ntReaderWriter.java:67) ~[pinot-all-0.4.0-SNAPSHOT-jar-with-dependencies.jar:0.4 .0-SNAPSHOT-7fd2110de66c2bb0b49ee340bac492fafe1f0693]     at org.apache.pinot.core.io.writer.impl.v1.FixedBitSingleValueWriter.clo se(FixedBitSingleValueWriter.java:45) ~[pinot-all-0.4.0-SNAPSHOT-jar-with-depend encies.jar:0.4.0-SNAPSHOT-7fd2110de66c2bb0b49ee340bac492fafe1f0693]     at org.apache.pinot.core.segment.creator.impl.fwd.SingleValueUnsortedFor wardIndexCreator.close(SingleValueUnsortedForwardIndexCreator.java:47) ~[pinot-a ll-0.4.0-SNAPSHOT-jar-with-dependencies.jar:0.4.0-SNAPSHOT-7fd2110de66c2bb0b49ee 340bac492fafe1f0693]     at org.apache.pinot.common.utils.FileUtils.close(FileUtils.java:95) ~[pi not-all-0.4.0-SNAPSHOT-jar-with-dependencies.jar:0.4.0-SNAPSHOT-7fd2110de66c2bb0 b49ee340bac492fafe1f0693]     at org.apache.pinot.core.segment.creator.impl.SegmentColumnarIndexCreato r.close(SegmentColumnarIndexCreator.java:577) ~[pinot-all-0.4.0-SNAPSHOT-jar-wit h-dependencies.jar:0.4.0-SNAPSHOT-7fd2110de66c2bb0b49ee340bac492fafe1f0693]     at org.apache.pinot.core.segment.creator.impl.SegmentIndexCreationDriver Impl.handlePostCreation(SegmentIndexCreationDriverImpl.java:223) ~[pinot-all-0.4 .0-SNAPSHOT-jar-with-dependencies.jar:0.4.0-SNAPSHOT-7fd2110de66c2bb0b49ee340bac 492fafe1f0693]

@siddharthteotia Thanks for reminding. While I do see the error I described in the PR when I ran the integration test locally, which seems different from what it shows on the user’s message. But that PR is still valid.
Exception in thread "pool-32-thread-5" java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
	at org.apache.pinot.core.segment.memory.PinotByteBuffer.view(PinotByteBuffer.java:306)
	at org.apache.pinot.core.segment.memory.PinotDataBuffer.view(PinotDataBuffer.java:380)
	at org.apache.pinot.core.io.writer.impl.v1.FixedBitMultiValueWriter.<init>(FixedBitMultiValueWriter.java:92)
	at org.apache.pinot.core.segment.creator.impl.fwd.MultiValueUnsortedForwardIndexCreator.<init>(MultiValueUnsortedForwardIndexCreator.java:38)
	at org.apache.pinot.core.segment.creator.impl.SegmentColumnarIndexCreator.init(SegmentColumnarIndexCreator.java:169)
	at org.apache.pinot.core.segment.creator.impl.SegmentIndexCreationDriverImpl.build(SegmentIndexCreationDriverImpl.java:172)
	at org.apache.pinot.integration.tests.ClusterIntegrationTestUtils.lambda$buildSegmentsFromAvro$0(ClusterIntegrationTestUtils.java:276)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

@fx19880617 Can you please take a look at this PR? I'm not sure if this is the correct way to fix this issue, or should we not support compiling the code with SDK 9+ in a JDK 8 JVM?

It seems ByteBuffer is widely used in the code and some methods only in ByteBuffer but not in Buffer get used as well.

In this case, shall we considering get a wrapper layer on top of bytebuffer&buffer, as what we did before in CleanerUtil.
Also, in which case that the user will build it with jdk9 but run with jdk8?  From reading the existing discussion, people can specify --release 8 when doing jdk9 build to ensure the bytecode works with jdk8.

If we have to cast is everywhere why not change the type of the variable?

+1, casting seems very hacky.

Here are some plans for this PR.
To solve casting issue:

Use a util function to avoid showing casting everywhere like

ByteBufferUtils.position(byteBuffer, byteBuffer.position() + size);

While this approach couldn't stop people from calling the native methods in ByteBuffer.

Use a class wrapper to hide the methods

CompatibleByteBuffer.position(byteBuffer.position() + size)

While ByteBuffer is an abstract class. If a new wrapper is needed, the subclasses also need to inherit the new wrapper as well, which seems unrealistic.
To compile with the same jdk version:
I have a local branch to compile with jdk8 whenever jdk9+ is used, and that works perfectly. But this doesn't seem like the right approach to build on higher jdk and runs on lower.
lmk what are your thoughts?

@jackjlli @xiangfu0 @Jackie-Jiang Hello, has there been any progress with this PR?
We are experiencing the issue when creating the star-tree index. We use Pinot 0.7.1 and Spark 2.4.6, both using Java 8.
Should we then proceed by compiling Pinot with JDK9/JDK11 with the --release 8 flag as suggested earlier in this discussion?


Assumptions

· Centralization of Control - A single SDN controller (or a centralized cluster acting as a single logical entity) can maintain a comprehensive view of the entire network and make decisions accordingly.
· Scalability - The SDN controller can scale to manage large networks spread over geographically dispersed locations.
· Real-Time Network State Information - The SDN controller has timely and accurate information about the network state to make informed decisions. Requires reliable and immediate data from network sensors and devices.
· Reliability and High Availability - The need for robust failover and redundancy strategies is critical so that the network remains operational even if individual components fail. The network devices (switches, routers) and the connections to the SDN controller must be reliable.
· Security - Network communications between the SDN controller and network devices are secure from unauthorized access and threats. Assuming secure environment for optimal controller performance.
· Compliance with Protocols and Standards - All components in the SDN architecture adhere to established protocols and standards to ensures that different network devices from various vendors can work together seamlessly. Any deviation by devices from these standards can disrupt network operations.
· Programmability - Network devices are programmable and can dynamically adjust their operations based on commands from the SDN controller to facilitate the implementation of sophisticated, dynamic network management strategies.
· Decoupling of Data and Control Planes - Effective separation of the data plane (traffic handling) and the control plane (traffic management) should be maintained to allow independent scaling and optimization of each plane. which requires careful implementation to prevent issues arising from the interdependencies.
· Underlying OS - The SDNC is hosted on an underlying operating system that is up to date with recommended security patches and is not compromised.

Looks like we still need to add:

Real-Time Network State Information - The SDN controller has timely and accurate information about the network state to make informed decisions. Requires reliable and immediate data from network sensors and devices.
· Underlying OS - The SDNC is hosted on an underlying operating system that is up to date with recommended security patches and is not compromised.


Added Suckless Simple Terminal (st) to list of ansi terminals

The suckless simple terminal (st) wasn't recognized as na compatible ansi terminal. I've added it to the _regexes array in AnsiDetector.cs

 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.

The build problems should have been resolved now.
Could you rebase your PR branch against main?

Closing this since you submitted a new PR (#1013).


virtualbox: virtualbox-hostonly-no-dhcp flag

This PR add a virtualbox-hostonly-no-dhcp flag to disable the creation of the DHCP server. This is useful in case you want to use the DHCP server of Dnsmasq to resolve the machine name.
$ docker-machine create -d virtualbox --virtualbox-hostonly-no-dhcp test
Running pre-create checks...
Creating machine...
(test) Copying /Users/asiragusa/.docker/machine/cache/boot2docker.iso to /Users/asiragusa/.docker/machine/machines/test/boot2docker.iso...
(test) Creating VirtualBox VM...
(test) Creating SSH key...
(test) Starting the VM...
(test) Check network to re-create if needed...
(test) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: bin/docker-machine env test
$ docker-machine restart test
Restarting "test"...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

Then you can do the following from the host and inside the vm:
$ ping test.vm
PING test.vm (<IP_ADDRESS>): 56 data bytes
64 bytes from <IP_ADDRESS>: icmp_seq=0 ttl=64 time=0.337 ms

The docker-machine restart is necessary because the hostname is set up after the interface has been configured.
BTW it is not possible to have machines on the same CIDR that have use the vbox dhcp server, as it kicks in before the dnsmasq's one.
The dnsmasq.conf I use is the following:
interface=vboxnet0
bind-interfaces
dhcp-range=<IP_ADDRESS>,<IP_ADDRESS>,12h
dhcp-leasefile=/var/lib/dnsmasq.leases
dhcp-option=3
local=/vm/
expand-hosts
domain=vm
address=/host.vm/<IP_ADDRESS>

Then I configure my host's resolver to use dnsmaqs for the domain vm this way:
$ echo 'nameserver <IP_ADDRESS>' | sudo tee /etc/resolver/vm

Signed-off-by: Alessandro Siragusa<EMAIL_ADDRESS>

I'm interested, but will have to wait til after the 0.8.0 release.  Feel free to ping me then if I'm still being slow.  Thanks!

Needs a rebase and then I'll re-review -- thanks

Please rebase and re-open if still interested.  Thanks


RFC: Internalize step creation to significantly reduce API surface

This will also improve diagnostics through less macro-based open coding, but it will also imply a change of the actual interface even though no change to the effective interface if one sticks to the macros.

I would ask that you don't bump the version in a commit and instead do it in a separate commit.
I will bump the version on release based on what has happened since the last release based on semver rules, so you need not worry about that.
Do open an issue if you want me to do a release and I haven't done one yet though! :smile:

I would ask that you don't bump the version in a commit and instead do it in a separate commit.

Agreed. Will refrain from touching the field outside of the actual release process.

Do open an issue if you want me to do a release and I haven't done one yet though! smile

Since we are currently prototyping ourselves for now, we'll probably start using a { git = ... } dependency pointing here. But I'll be happy to take up the offer when we actually start merging things. Thanks!

I also just noticed while reviewing this that my earlier PR #15  had a bug insofar https://github.com/bbqsrc/cucumber-rust/blob/9bfb2f502c1c9b20a2d42f7671d1dc8c0a4453bc/src/lib.rs#L625 is missing .skip(1). Sorry for that.

We tend to use git master at the moment as well, so you can ensure it is going to be "vaguely stable" for now as well. Crazy stuff happens on develop or feature branches as one might expect. :smile:


python function publish failing

Following the steps for creating a python function results in an error.
Step 1: Create function using Azure Core Tools and run locally. This works fine.
Step 2: Create storage account and function app from az cli. This works fine.
Step 3. Publish function app. This results in error.
Command: func azure functionapp publish <app_name>
Error:
Your app is configured with Azure Files for editing from Azure Portal. To force publish use --force. This will remove Azure Files from your app.
Command: func azure functionapp publish <app_name> --force
Error:
Getting site publishing info...
pip download -r /root/MyFunctionProj/requirements.txt --dest /tmp/azureworkerutd62dze
There was an error restoring dependencies.
ERROR: ['pip', 'download', '-r', '/root/MyFunctionProj/requirements.txt', '--dest', /tmp/azureworkerutd62dze'] failed with exit code 1
Function Runtime Version: 2.0.12175.0

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4a509bdc-f8b8-8488-7ab4-2c03cae6bfb5
Version Independent ID: 3174a893-394c-c622-6c96-0b89955edfb5
Content: Create your first Python function in Azure
Content Source: articles/azure-functions/functions-create-first-function-python.md
Service: functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

The requirements.txt file created by the core functions utility includes all pip packages installed for the python environment. Removing the extra packages and only keeping azure-functions and azure-functions-worker seems to work.

Hello @eragonriddle
Thank you for your feedback! We will investigate and get back to you with our findings.

The debugging functionality is not working with VSCode + Windows10 +User Settings as "terminal.integrated.shell.windows": "C:\Program Files\Git\bin\bash.exe", however it works with powershell.exe ONLY. Can this be addressed or is it something for me only?
Full details of the issue posted in StackOver Flow thead:
https://stackoverflow.com/questions/53677160/debug-on-python-azure-function-httptrigger-in-vscode-is-not-starting-func-host/53692472#53692472

@PramodValavala-MSFT On running the pip command manually  pip download -r /root/MyFuncProj/requirements.txt --dest /tmp/tmpdir1  there is no error and the whl files are downloaded to the temporary directory.

@eragonriddle Hmm... That's weird.
You mentioned that it worked when you removed some dependencies from requirements.txt. Did you add them back when running the pip command manually?
Also, could share what dependencies you have?
Since it works without them, they must be the problem but then again, you would have installed them using pip right?

@eragonriddle Just following up... Any update?

@PramodValavala-MSFT , sorry for the delay.
Here's the contents of requirements.txt
azure-functions==1.0.0a5
azure-functions-worker==1.0.0a6
azure-cosmosdb-table==1.0.5
Here's the contents of HttpTrigger/init.py
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

name = req.params.get('name')
if not name:
    try:
        req_body = req.get_json()
    except ValueError:
        pass
    else:
        name = req_body.get('name')

if name:
    return func.HttpResponse(f"Hello {name}!")
else:
    return func.HttpResponse(
         "Please pass a name on the query string or in the request body",
         status_code=400
    )

`
When I try pip download -r /root/MyFuncProj/requirements.txt --dest /tmp/tmpdir1 there is no error and the whl files are downloaded properly.
When I try to publish the function  func azure functionapp publish <function-name> then I get the following error:
There was an error restoring dependencies.ERROR: cannot install cryptography-2.4.2 dependency: binary dependencies without wheels are not supported.  Use the --build-native-deps option to try building the binary dependencies using a Docker container.

@eragonriddle This error is thrown when you have dependencies without manylinux-compatible wheels from PyPI. This doc talks about this in more detail.
The reason being that such dependencies are sure to work only if compiled in an environment similar to the one used when running on Azure.
Hence the docker based build as suggested in the doc and that is what the --build-native-deps option mentioned in the error message does.
In these scenarios, you would need docker installed on your development machine and then run this command instead
func azure functionapp publish <function-name> --build-native-deps

Glad that I could help! 😄


Updated sample for TelemetryInitializer

Updated sample to reflect API-changes in Application Insights. Changed from using IContextInitializer to using ITelemetryInitializer.

Hi @HenrikWM, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@HenrikWM sorry for the delay in getting to your bug fix. In the meantime, it looks like the fix that you suggested has already been made by someone on the Azure team. As such, I am closing your PR. Thank you for your attempt to contribute, we appreciate it and will try to respond in a more timely manner in the future so that you can get credit for the fix.


multiple maps

Hello! I wanted to know if it was possible to add more than one kind of map in the same page. Currently I have each map identified with a unique id, but after getting the map data only the last map appears, the other two appear empty in the div.  This is the data I have stored in an objetct to display the map.

Edit: did it! but when the second one is being rendered, it messes up the first one!

any tips I could use?

Hi @juanpablo64

but when the second one is being rendered, it messes up the first one! any tips I could use?

In which way does it mess up the first one? If you mean the positioning, you probably just need to style the containers into which you're rendering your maps. With flexbox it should be relatively easy.

Is it possible to have more sc per page?

Yes, there's no problem in creating multiple instances of Seatchart.

the first one has the color of the seats changed. The correct map should have the first two rows colored from columns 25 to 28. When the second map is loaded the first map is messed around. Here's the funciton that draws the maps:
mapDrawData.map.rows = dataPost.rows.split(",");
mapDrawData.map.columns = dataPost.columns.split(",");
mapDrawData.map.disabled.seats = dataPost.disabled_seats.split(",");
mapDrawData.map.disabled.rows = dataPost.disabled_rows != null ? dataPost.disabled_rows.split(",") : [];
mapDrawData.map.disabled.columns = dataPost.disabled_columns != null ? dataPost.disabled_columns.split(",").map(e=>{ return parseInt(e,10)}) : [];
mapDrawData.types[0].selected = assigned;
mapDrawData.types[1].selected = disponible;
mapDrawData.types[2].selected = teamleader;
mapDrawData.types[3].selected = supervisor;
mapDrawData.types[4].selected = dataPost.pecera     != null ? dataPost.pecera.split(",") : [];
mapDrawData.types[5].selected = dataPost.columna    != null ? dataPost.columna.split(",") : [];
                    let sc = new Seatchart(mapDrawData);
                    console.debug(sc)

                    map.mapPositions = dataPost.positions;

I obtain the map data from an ajax (datapost) and draw it with tje new SeatChart(). Each draw is done synchronic using async await

The problem is, every time  let sc = new Seatchart(mapDrawData); the previous map data gets overwritten or something. I have checked the calls and it happens right after creating the Seatchart element. How can I create multiple, different SeatChart objects in the same page?

I have a question about this? when you say it's posible to have multiple maps, it's with the 0.1.0 release? Because I am working with an older code, and I am pretty sure the problem lies in there. Been debugging for days and the maps keeps getting corrupted.

Yes, it should still work. Are you sharing options between maps? If so try by deep cloning the object before passing it to other maps.

nope, I actually didn't want to share any options between maps! I used Object.assign to that end. Here's a little map I made, with the results on the image:
                let map_config_data = Object.assign(res.data),
                map_options = Object.assign({
                    map     : {},
                    types   : {},
                });

                map_options.map.id      = `map-container-${mapId}`;
                map_options.map.rows    =  (mapId === '4')? 5 : 10;
                map_options.map.columns =  (mapId === '4')? 5 : 10;

                map_options.map.front = {
                    visible: false,
                };

                map_options.map.disabled = {
                   seats:    [],//(mapId === '4')? [2,3,4,5] : [12,13,14,15],
                    rows:     (mapId === '4')? [0] : [1],
                    columns:  (mapId === '4')? [0] : [1],
                }

                map_options.map.cart = {
                    height: "15",
                    width : "15",
                }

var sc = new Seatchart(map_options);


feat(wip): import ozw devices database

fixes: #414

@AlCalzone This is a work in progress, unfortunally zml2json hasnt a type definition and I'm not able to register the type I have created on maintenance/@types/xml2json, could you tell me what I'm doing wrong?

There you go:

@AlCalzone Still not working, had tried that too, same error :confounded:

Did you restart the TypeScript editor features?

Damn, now it stopped working for me too

The joy of typescript :rofl:

then //@ts-ignore the import for now while I figure out wtf is happening

@AlCalzone By removing rootDir: '../' it works

Or you could just npm i -D @types/xml2json :D

Yep essentially I just had to install the missing types in that way :cry:
Now I have fixed it, my question now how do you update manufacturers.json? there are lot missing manufacturers

@AlCalzone Actually I'm able to read eveything, what is missing now is how to edit/create the config files

lerna run config -- ozw download: download ozw archive to tmp dir
lerna run config -- ozw manufacturers: parse manufacturers and products
lerna run config -- ozw download manufacturers: donwload and parse manufacturers and products
lerna run config -- clean: clean temporary directory

I'm wondering if there are utilities for Config Database Updates to update and create both manufacturers/devices files

I'm wondering if there are utilities for Config Database Updates to update and create both manufacturers/devices files

Nothing special. The existing code just creates a JS object in the correct format and saves it as JSON.

What about adding a method to Manufactures.ts to set manufacturer keys and one to write the actual map to json file? And the same for devices?

Sounds good

@AlCalzone I have saw that manufacturers id stored in manufacturers.json are upper cases hex, them are lower cases in devices folders and in devices json files. Is this correct?

@AlCalzone The script has imported 800 devices, would you like to test it or would you like me to also add the created files?

In some cases the default value is 0x09 0x00 0x09 0x00 this happens for values with the label Temperature Reporting Filter.
How should I handle them?

There is a REALLLLLY strange bug with the parse of number<PHONE_NUMBER>, seems it's impossible to parse it :confused:

@AlCalzone I have saw that manufacturers id stored in manufacturers.json are upper cases hex, them are lower cases in devices folders and in devices json files. Is this correct?

Huh, I wouldn't mind if it was all the same.

The script has imported 835 devices, would you like to test it or would you like me to also add the created files?

I'd like to take a look at the files first, but my schedule is quite full today. Maybe tonight.

In some cases the default value is 0x09 0x00 0x09 0x00 this happens for values with the label Temperature Reporting Filter.
How should I handle them?

I'm not sure, can you show an example?

There is a REALLLLLY strange bug with the parse of number<PHONE_NUMBER>, seems it's impossible to parse it 😕

where?

@AlCalzone I'm done here, let me know if you want me to upload the parsed configurations or not

Should I do something with this values?

  <CommandClass id="96">
    <Compatibility>
      <MapRootToEndpoint>true</MapRootToEndpoint>
    </Compatibility>
    <Instance index="1" label="Load" />
    <Instance index="2" label="i2" />
    <Instance index="3" label="i3" />
    <Instance index="4" label="Temp Sensor" />
  </CommandClass>

  <CommandClass action="add" id="113">
    <Compatibility>
      <GetSupported>false</GetSupported>
    </Compatibility>
  </CommandClass>

the only thing that ozw db doesn't have is a reference to the devices firmware version so all versions are '0.0' and '255.255'

I think that is okay for now. We can be on the lookout for conflicts when reviewing the config file PRs.

<CommandClass id="96">

I don't have any mechanism to overwrite the reported endpoints, so I would leave that out for now

<CommandClass action="add" id="113">

I also don't have any mechanism to add CCs the device does not report (or remove ones they don't support). Would be interesting to do - maybe add a new key under the (undocumented 😅) compat property?

    <Compatibility>
      <GetSupported>false</GetSupported>

This looks like a compat flag which requires code that uses it - I think this is out of scope of this PR for now.

As for the config files - I would like to review this PR in-depth first before having to look at another 800 files :)

This looks like a compat flag which requires code that uses it - I think this is out of scope of this PR for now.

Ok Was just for reference :) Will wait for the review so :crossed_fingers:  Be kind :rofl:

@AlCalzone Fixed, sorry :confounded: I suggest to squash and merge when it's ready for a cleaner master

Also you should tell me how I should parse bitmask values:
<Value bitmask="55" genre="config" index="87" instance="1" label="Sensor is triggered the buzzer will alarm" max="55" min="0" size="4" type="bitset" value="55">
      <Help>What Sensors Trigger the Buzzer</Help>
      <BitSet id="1">
        Water Leak
        <Help>If the Water leak is triggered, the buzzer will alarm.</Help>
      </BitSet>
      <BitSet id="2">
        Vibration
        <Help>If the vibration is triggered, the buzzer will alarm.</Help>
      </BitSet>
      <BitSet id="3">
        Tilt Sensor
        <Help>If the Tilt Sensor is triggered, the buzzer will alarm.</Help>
      </BitSet>
      <BitSet id="5">
        UnderHeat
        <Help>If the Under Heat Temperature is triggered, the buzzer will alarm.</Help>
      </BitSet>
      <BitSet id="6">
        OverHeat
        <Help>If the Over Heat Temperature is triggered, the buzzer will alarm.</Help>
      </BitSet>
    </Value>

* Should I parse this file too?

no, I've got definitions for all of them (straight from the specifications)
About the bitsets: How are the OZW values supposed to be understood?

I didn't set the flag supportsZwavePlus on products as I didn't find any reference of it on xml files

I don't think it is really necessary. I'm not using it anywhere, it is more of a hint to devs who edit the device config files that associations don't need to be defined. Except for devices which support Z-Wave+ but require more lifelines than group 1.

About the bitsets: How are the OZW values supposed to be understood?

What do you mean? In Z2M I created checkboxes for bitmask values, and then I converted the bits to an integer to write

I will do the edits tomorrow

@AlCalzone Only yargs part is missing, could I do that in another PR? Once this will be merged I will start working at the github action that will create the PR

What do you mean?

I mean we could use the bitset information to create our partial param values. But I'm not sure which bit <BitSet id="1"> is targeting. Bit 0 (1<<0) or Bit 1 (1<<1)? Big endian or little endian?

But I'm not sure which bit  is targeting. Bit 0 (1<<0) or Bit 1 (1<<1)? Big endian or little endian?

Bit 1 is bit[0], the index starts from +1. The rappresentation is 00000001 bit[0] is 1

we could use the bitset information to create our partial param values

Example?

--> https://zwave-js.github.io/node-zwave-js/#/development/config-files?id=partial-parameters
An example can be found in the config file for Aeotec Multi Sensor 6, where I split the report groups from one param into several 1-bit values

Do we need to implement updating for already-existing configs from OpenHAB aswell

Good question, I think that it would be good yes, but could you do it in another PR as you better know openhab dbs?

Ok, just one more thing:
Updating the index must also be done if one manually changes a json config file. This does not depend on any source file format, so I think regenerating the index should be moved out of parseOzwConfig and be done after all the imports are done.

Updating the index must also be done if one manually changes a json config file

I don't understand what you mean

Updating the index must also be done if one manually changes a json config file

I don't understand what you mean

I'm talking about this part:
https://github.com/zwave-js/node-zwave-js/blob/5db20fa52117e6f628cf4562d3645d5012649a00/maintenance/importConfig.ts#L958-L985
and this line specifically
https://github.com/zwave-js/node-zwave-js/blob/5db20fa52117e6f628cf4562d3645d5012649a00/maintenance/importConfig.ts#L983
Updating index.json must also be done if you manually edit a config file (correct a typo for example). The way this is set up now, it happens as part of the OZW or the OpenHAB import. IMO this should be a separate step after importing the config files - You should be able to run the script to only update the index.

This file is an exampe: /packages/config/config/devices/0x0086/zw100.json

Updating index.json must also be done if you manually edit a config file (correct a typo for example). The way this is set up now, it happens as part of the OZW or the OpenHAB import. IMO this should be a separate step after importing the config files - You should be able to run the script to only update the index.

Ok I understand now, based on this so it's useless for me to call the method to write the devices index to file that I'm using now, I will remove it

This file is an exampe for bitsets: /packages/config/config/devices/0x0086/zw100.json

Did you commit that file or should I try to import it?

@AlCalzone Was more a reference for a file to check that has bitsets :)

That's good to see the changes, since it was hand edited

For reference, the correct command to run the script is npm run config import -- <options>. Without --, the dashed options seem to be dropped at least partially

the dashed options seem to be dropped at least partially

I think it's caused by my yargs.parse function, I just saw you have removed it so it sholdn't be a problem now

@robertsLando A few points regarding the config files we need to discuss/change:
0x0001/lfm20.json (and several others):
{
    "manufacturer": "ACT",
    "manufacturerId": "0x0001",
    "label": "LFM20",
    "description": "LFM-20 Relay Fixture Module",
    "devices": [
        {
            "productType": "0x5246",
            "productId": "0x3133"
        }
    ],
    "firmwareVersion": {
        "min": "0.0",
        "max": "255.255"
    }
}

These files just configure the name of the devices. Do you see a point in that or should we leave them out?

many, many devices:
    "label": "ZDM230",
    "description": "ZDM230 Wall Dimmer Module",

I'd remove the label from the description if the description starts or ends with the label

0x010f/fgrm222.json and many others:

Please place defaultValue directly under min and max value.
If allowManualEntry is false, minValue should be equal to the lowest option value (here it is) and maxValue should be equal to the highest option value (here it is not)

    "paramInformation": {
        "1": {
            "label": "Local Protection",
            "description": "...",
            "valueSize": 1,
            "minValue": 0,
            "maxValue": 100,
            "readOnly": false,
            "writeOnly": false,
            "allowManualEntry": false,
            "defaultValue": 0,
            "options": [
                {
                    "label": "No protection. Roller Shutter responds to push buttons",
                    "value": 0
                },
                {
                    "label": "Not supported",
                    "value": 1
                },
                {
                    "label": "Local protection active. Roller Shutter does not respond to push buttons",
                    "value": 2
                }
            ]
        },

0x0001/zdw103.json and many others:

The key units should be called unit without s
Please place unit under valueSize (if unit exists)
"units": "" should be removed (might be due to my proposed || to ?? change)

        "7": {
            "label": "On/Off Command Dim Step",
            "description": "Indicates how many levels the dimmer will change for each dimming step.",
            "valueSize": 1,
            "minValue": 1,
            "maxValue": 99,
            "defaultValue": 1,
            "readOnly": false,
            "writeOnly": false,
            "allowManualEntry": true,
            "units": ""
        },

0x000c/hs-wd100plus.json and probably a bunch more:

Please place the key "associations" before "paramInformation"

A bunch of units need to be automatically normalized or changed during the import (I realize that we need to do that for the existing files too):

"Minutes" -> "minutes" (lowercase)
"Seconds" -> "seconds" (lowercase)
"Decimal" -> drop entirely
"int" -> drop entirely
"cs" -> any idea WTF that unit is?
"fahrenheit" -> "°F"
"F" -> "°F"
"Degrees Celsius" -> "°C"
"Watt"/"watts" -> "W"
"Volt"/"volts" -> "V"
"Percent" -> "%"
"dimmer level %" -> "%"
"degrees" -> "°" (no idea if those devices talk about C or F)

When splitting config params, the label of the original param should be included somehow.
Example in 0x0086/zw100.json, param 101:
        "101[0x01]": {
            "label": "Battery",
            "description": "Send Battery Report",
            "valueSize": 1,
            "minValue": 0,
            "maxValue": 1,
            "defaultValue": 1,
            "readOnly": false,
            "writeOnly": false,
            "allowManualEntry": true
        },

This is for group 1, but you can't see that here.
Also, we should sort the params by the param number without the bitmask and after that by bitmask, e.g.: 99, 100[0x01], 100[0x02], 101

There's probably more things, but we'll need to reduce the noise first :)

the dashed options seem to be dropped at least partially

I think it's caused by my yargs.parse function, I just saw you have removed it so it sholdn't be a problem now

No, these params don't even make it into process.argv, so there's nothing to parse them from.

These files just configure the name of the devices. Do you see a point in that or should we leave them out?

Humm nope, it could be left unchanged if exists IMO

I'd remove the label from the description if the description starts or ends with the label

I agree, easy to do with a regex with g and i flags

If allowManualEntry is false, minValue should be equal to the lowest option value (here it is) and maxValue should be equal to the highest option value (here it is not)

I saw this, even in existing files, I think that we could create a method like normalizeParams that check for this thing and the params order

should be removed (might be due to my proposed || to ?? change)

I think it's caused by a ?? that need to be replaced with ||

A bunch of units need to be automatically normalized or changed during the import (I realize that we need to do that for the existing files too):

Here too, I suggest to do such things in the normalizeParams method

When splitting config params, the label of the original param should be included somehow.

Ok it's easy, we already have that

Also, we should sort the params by the param number without the bitmask and after that by bitmask, e.g.: 99, 100[0x01], 100[0x02], 101

Maybe this too can be added in the normalizeParams method?

@robertsLando I think we might need the ability to remove CCs sooner than I expected: https://github.com/zwave-js/node-zwave-js/issues/1107
So while you're at it, we should try to parse this information from the OZW DB. Don't worry about the implementation in the interview.
I suggest we put it under the "compat" property (which can be seen in packages\config\config\devices\0x0002\lc-13.json) like this:
{
  // ...
  "compat": {
    "cc": {
      "add": [ /* array of CC IDs to be added */ ]
      "remove": [ /* array of CC IDs to be removed */ ]
    }
  }
}

I think some OZW configs add CCs aswell - does this information include the CC version?

@AlCalzone Do you mean:
 <CommandClass action="add" id="113">
    <Compatibility>
      <GetSupported>false</GetSupported>
    </Compatibility>
  </CommandClass>

This?

@AlCalzone Check it now

Codewise LGTM. Looking at the config files, there are a couple of small TODOs left:
Partial params should be used instead of normal config params, not in addition to them.
For example (packages\config\config\devices\0x000c\hs-fc200.json):
        "31": {
            "label": "LEDs to blink in status mode",
            "description": "Sets LEDs 1-4 to blink in Status mode. Bitmask defines specific LEDs to enable for blinking. Note: this decimal value is derived from a hex code calculation based on the following: \n              Bit 0 = LED 1\n              Bit 1 = LED 2\n              Bit 2 = LED 3\n              Bit 3 = LED 4\n              IE: value of 1 = first LED, 8 = LED 4",
            "valueSize": 1,
            "minValue": 0,
            "maxValue": 15,
            "defaultValue": 0,
            "readOnly": false,
            "writeOnly": false,
            "allowManualEntry": true
        },
        "31[0x01]": {
            "label": "LED 1 Blink Status",
            "description": "LED 1 Blink Status (bottom)",
            "valueSize": 1,
            "minValue": 0,
            "maxValue": 1,
            "defaultValue": 0,
            "readOnly": false,
            "writeOnly": false,
            "allowManualEntry": false,
            "options": [
                {
                    "label": "Solid",
                    "value": 0
                },
                {
                    "label": "Blink",
                    "value": 1
                }
            ]
        },

It is a bit unfortunate that comments are not preserved when merging the config files, but I see no way of fixing that when parsing and serializing JSON. Maybe an enhancement for a future PR.

Do you sort the devices array somehow? packages\config\config\devices\0x0002\lc-13.json for example. I would prefer sorting by productType, then by productId.

Some devices have a space at the start or end of their description, e.g.
packages\config\config\devices\0x0175\mt2651.json

Partial params should be used instead of normal config params, not in addition to them.

Totally missed this, need to fix it

It is a bit unfortunate that comments are not preserved when merging the config files, but I see no way of fixing that when parsing and serializing JSON. Maybe an enhancement for a future PR.

I would add a json field for that, like "comments" or "info". I could read the file as a plain text, read all first lines that start with a // and add that to "comments" in the json

Do you sort the devices array somehow

Nope, TODOs

Some devices have a space at the start or end of their description

Need to trim it so :)

I would add a json field for that, like "comments" or "info". I could read the file as a plain text, read all first lines that start with a // and add that to "comments" in the json

I meant the specific comments like for the compat options (see the file I linked in https://github.com/zwave-js/node-zwave-js/pull/1093#issuecomment-724098925) for an example.
As I said, I can just be on the lookout for that when merging PRs. It is not that critical.

@AlCalzone Should be ready now

TODOs:

Override reported endpoints:

<CommandClass id="96">
    <Compatibility>
      <MapRootToEndpoint>true</MapRootToEndpoint>
    </Compatibility>
    <Instance index="1" label="Load" />
    <Instance index="2" label="i2" />
    <Instance index="3" label="i3" />
    <Instance index="4" label="Temp Sensor" />
</CommandClass>

Override some command classes:

 <CommandClass id="64">
    <Value genre="user" index="0" instance="1" label="Mode" max="0" min="0" read_only="false" size="1" type="list" units="" value="0" write_only="false">
      <Item label="Off" value="0"/>
      <Item label="Heat (Default)" value="1"/>
      <Item label="Cool" value="2"/>
      <Item label="Energy Heat" value="11"/>
    </Value>
    <SupportedModes>
      <Mode index="0" label="Off"/>
      <Mode index="1" label="Heat"/>
      <Mode index="2" label="Cool"/>
      <Mode index="11" label="Energy Heat"/>
    </SupportedModes>
    <Compatibility/>
  </CommandClass>
  <CommandClass id="67">
    <Instance index="1"/>
    <Value genre="user" index="1" instance="1" label="Heating" max="40" min="5" read_only="false" type="decimal" units="C" value="20" write_only="false"/>
    <Value genre="user" index="2" instance="1" label="Cooling" max="40" min="5" read_only="false" type="decimal" units="C" value="21" write_only="false"/>
    <Value genre="user" index="11" instance="1" label="Energy Heat" max="40" min="5" read_only="false" type="decimal" units="C" value="16" write_only="false"/>
    <Compatibility>
      <Base>0</Base>
      <CreateVars>true</CreateVars>
    </Compatibility>
  </CommandClass>

Eventually parse metadata:

  <MetaDataItem name="OzwInfoPage">http://www.openzwave.com/device-database/019B:0001:0001</MetaDataItem>
    <MetaDataItem name="ProductPic">images/thermofloor/heatit021.png</MetaDataItem>
 <MetaDataItem name="ExclusionDescription">INCLUSION/EXCLUSION
To include the thermostat to your home automation gateway, press Center (confirm) for 10 seconds.
The display will show OFF. Press Right (down) 4 times till you see Con in the display.
Now start add device in your home automation software. Start inclusion mode by pressing Center (confirm) for approximately
2 seconds. The inclusion/exclusion icon will appear in the display. Confirmation will show Inc/EcL in the display. If inclusion
fails, Err (error) will appear.
Leave programming mode by choosing ESC in menu. Your thermostat is ready for use with default settings.</MetaDataItem>
    <MetaDataItem name="ProductManual">https://Products.Z-WaveAlliance.org/ProductManual/File?folder=&filename=Manuals/1234/Manual_Multireg Z-Wave_Ver2015-A.pdf</MetaDataItem>
    <MetaDataItem id="0001" name="FrequencyName" type="0001">CEPT (Europe)</MetaDataItem>
    <MetaDataItem name="Name">Heatit Z-Wave</MetaDataItem>
    <MetaDataItem id="0001" name="Identifier" type="0001">TF021</MetaDataItem>
    <MetaDataItem name="ResetDescription">FACTORY RESET - RES
By pressing buttons Left and Center (up and confirm) for 20 seconds, the thermostat will perform a complete factory reset.
NB! Please use this procedure only when the primary controller is missing or otherwise inoperable.</MetaDataItem>
    <MetaDataItem name="InclusionDescription">INCLUSION/EXCLUSION
To include the thermostat to your home automation gateway, press Center (confirm) for 10 seconds.
The display will show OFF. Press Right (down) 4 times till you see Con in the display.
Now start add device in your home automation software. Start inclusion mode by pressing Center (confirm) for approximately
2 seconds. The inclusion/exclusion icon will appear in the display. Confirmation will show Inc/EcL in the display. If inclusion
fails, Err (error) will appear.
Leave programming mode by choosing ESC in menu. Your thermostat is ready for use with default settings.</MetaDataItem>
    <MetaDataItem name="WakeupDescription">If Er2 appears in the display, touch any button to restart the display.</MetaDataItem>

You can leave the TODOs for another PR

You can leave the TODOs for another PR

TODOs need some thoughts with you to understand where and how to add those informations

@AlCalzone Hope it's almost ready now :rofl:

I have noticed some weird things:

OZW values (min max and default) are always unsigned
The param sorting function doesn't always sort in the correct order :thinking:

I have a couple of small things in mind I want to change (mainly formatting) when merging. I'll check the open points while I'm at it.

* OZW values (min max and default) are always unsigned

I forgot - zwave-js tries to be smarter here. Nothing to worry about.

Do we add unsigned: true for the imports

Nope, should I do?

The param sorting function doesn't always sort in the correct order

About this, I have find a typo in the code and fixed that, the keys now are sorted in the correct order but the result file still parse the params in a wrong order (sometimes). The zw100.json is an example file that has this problem

Nope, should I do?

Yes, please. Otherwise the config linter might complain.

the result file still parse the params in a wrong order (sometimes)

I'll take a look at that later, if you don't find the reason.

I'll take a look at that later, if you don't find the reason.

Haven't been able to find out wtf is going wrong. As I said the sort algorithm sorts the paramInformations keys correctly, then i iterate them in a for of loop to assign the values. Dunno what breaks the order

Dunno what breaks the order

Does this only affect merged config files or also completely new ones?

Does this only affect merged config files or also completely new ones?

I have saw this on a merged config, cannot find a new one with the same problem

If it only affects existing config you might have to delete and re-add the Params in the sorted order.

It's not the the problem as I completely recreate the object from start in normalizeConfig function

Seems like there's nothing we can do about the sort order, except maybe represent numeric keys as hex too:
https://stackoverflow.com/a/23202095/10179833

Integer keys in ascending order (and strings like "1" that parse as ints)
String keys, in insertion order (ES2015 guarantees this and all browsers comply)
Symbol names, in insertion order (ES2015 guarantees this and all browsers comply)

Seems like there's nothing we can do about the sort order, except maybe represent numeric keys as hex too:

:cry:

I'm in the process of merging, please don't add anything else :)

Sorry just synced the master of the fork with the main one. No more commits now :)

I've identified a couple of issues I've fixed. Once the tests pass, I'll merge. Although I'm a bit scared of the config update, that will be quite a bit of work.

I've identified a couple of issues I've fixed. Once the tests pass, I'll merge. Although I'm a bit scared of the config update, that will be quite a bit of work.

Let me know if I can help you somehow :) also @chrisns may help with that when he can


Question: QR Code

Please let me know if your nuget supports adding QRCode to the receipt? Thanks.

Got it. The below line worked.
printer.Write(ByteSplicer.Combine(e.Print2DCode(TwoDimensionCodeType.QRCODE_MICRO, document.DocNumber)));
Is there a way to increase the size of the QR Code?

hey @varunbhoopalam3  glad you answered your own question, and thanks to @igorocampos for the QR code implementation!

Any time

@lukevp maybe we could provide some default parameters to that Print2DCode, or an alias like PrintQRCode that would call Print2DCode with some default parameters. I think people would embrace it better


Build issue

Suddenly, out of the blue,  I'm getting:
The package product 'SwiftUIX' cannot be used as a dependency of this target because it uses unsafe build flags.
Using Xcode 15.3
I've tried resetting all the packages.
This is a showstopper.

+1, same for us

@easiwriter @corentios I'm on it, I'll have a fix up in a couple of hours.
It's technically an Xcode bug, it doesn't complain if SwiftUIX is used as an implicit dependency.

@easiwriter @corentios I just release 0.2.1 which should fix this.


[Raycast Icons] AI Icon Search

Extension
https://www.raycast.com/petr/raycast-icons
Description
The current behaviour only searched the icons by their name.
A beneficial feature would be to implement simply AI suggestions as well. This would operate the same to how AI emoji searching functions, where icons similar or related to the search queries concepts would be returned.
Who will benefit from this feature?
This feature can make it easier to identify appropriate icons to use in certain scenarios. The AI suggestions can help to find emojis that fit in a scenario but may not be returned in the usual name search.
For example, in normal behaviour, searching for beach returns nothing.
In this new behaviour, the AI suggestions section could return the umbrella, the sun ...
It would also feel familiar to pro users due to the similarity it would have to the emoji picker's behaviour.
Anything else?
No response

This was implemented by #14045. Please let me know if you face any problems.

@raycastbot close this issue


enclave-tls: support LA for occlum build

Require to implement target info exchange by high level logic.

The same as #955


Release notes for 1.0 could make it more clear that "Fix URL generation (#592)" is a breaking change

The release notes for 1.0 mention "Fix URL generation (#592)".
I think it could help the upgrade journey for developers if it was made more clear that this is a significant change to how URLs are generated, rather than just a fix. This is because it now leverages the Laravel internals code which can return a different URL to the requestUri() used previously by this package.

Release notes at time of writing.

The PR itself mentions what's changed, so I don't really see why that would need to be explained in the release notes? It's not really a breaking change that would require changes in user-land code.

I'm not really sure I see a breaking change either.

I specifically made this issue because it did cause a breaking change in an application's user-land code.
Example is if you use trailing slashes (for some reason, Laravel makes using them really hard).
Request URI: https://example.com/test/
$request->getBaseUrl().$request->getRequestUri(): /test/ (expected)
Str::start(Str::after($request->fullUrl(), $request->getSchemeAndHttpHost()), '/'): /test (trailing slash lopped off)
Not sure if there are other consequences. All I'm suggesting is editing the release notes to make this more obvious, instead of requiring a developer to dig deep into each individual PR and notice obscurities like this.

@driesvints @RobertBoes
I specifically made this issue because it did cause a breaking change in an application's user-land code.
Example is if you use trailing slashes (for some reason, Laravel makes using them really hard).
Request URI: https://example.com/test/
$request->getBaseUrl().$request->getRequestUri(): /test/ (expected)
Str::start(Str::after($request->fullUrl(), $request->getSchemeAndHttpHost()), '/'): /test (trailing slash lopped off)
Not sure if there are other consequences. All I'm suggesting is editing the release notes to make this more obvious, instead of requiring a developer to dig deep into each individual PR and notice obscurities like this.

I'm sorry @tanerkay but I don't think that's a valid use case. You should avoid using trailing slashes and redirect to urls without them. Here's a good article on how to do that: https://stefanbauer.me/tips-and-tricks/a-middleware-for-removing-trailing-slashes

@driesvints not my decision to make, I wish it was that simple.
anyway, up to you, it was just a suggestion to change "fix URL generation" to "change URL generation behaviour" in the release notes, didn't realise it would be so controversial


⚠ Bofrost.lu has degraded performance

In 9c11ae9, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2247 ms

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


Kotlin Version

Hi,
Is there any possibility that you make a Kotlin version of this? I tried few times with convert to Kotlin and solving the dependencies. I am a total novice and unable to get Dagger up properly.
Thanks .

Hey @gnanakeethan!
I've just forked and made some changes for this project:

it's now Kotlin-based
updated dependencies
migrated to AndroidX

Available here: https://github.com/aspix2k/DaggerAndroidMVVM


⚠ Bofrost.es has degraded performance

In 6ea78d4, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1543 ms

Resolved: Bofrost.es performance has improved in 7c90a42 after 13 minutes.


Spanner: Provide a way to get the gRPC status code from a SpannerException

Is your feature request related to a problem? Please describe.
I wanted to convert exceptions thrown by google-cloud-spanner to instances of io.grpc.Status.  For example, I wanted to set the status on OpenCensus tracing spans, and OpenCensus provides a utility that takes a gRPC Status.
I wasn't able to find an easy way to get the io.grpc.Status.Code from a SpannerException.  However, I noticed that SpannerException has a getErrorCode() method that returns a com.google.cloud.spanner.ErrorCode, and ErrorCode has a field of type io.grpc.Status.Code:
https://github.com/googleapis/google-cloud-java/blob/b6a364a101560f0eb7499176649b53f3cab08854/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ErrorCode.java#L58
Describe the solution you'd like
I'm not sure what is the best solution.  I assume that SpannerException.getErrorCode() doesn't return a io.grpc.Status.Code because io.grpc.Status.Code includes OK and an exception is always an error.  One solution is to make the existing ErrorCode.getGrpcStatus()
method public.
Describe alternatives you've considered
I am currently working around this issue by parsing the enum name, though it is fragile:
Status.Code.valueOf(((SpannerException) e).getErrorCode().toString())

Additional context
Add any other context or screenshots about the feature request here.

/cc @olavloite @skuruppu

The error code used by SpannerException always corresponds to the status code, so what you can do is the following:
SpannerException se = ...;
Status status = Status.fromCodeValue(se.getCode());


PipsPager: Fix border being visible on controls in new style

Description

Set bordethickness to 0 and borderbrush to SystemControlTransparentBrush. Since those styles will eventually replace the 2.5, I also added them to the 2.5 files as suggested by @mdtauk.
Motivation and Context

Closes #3922
How Has This Been Tested?

Screenshots (if appropriate):

/azp run

/azp run


feat: add mdx support

closes #211
This line may causes problem if some users where only using doctoc for .md files, I didn't  check for it, should I?

@AndrewSouthpaw would you please review this?

This line may causes problem if some users where only using doctoc for .md files, I didn't check for it, should I?

So, if I understand, this means that users would all of a sudden start getting TOCs in their .mdx files, which they weren't before... I could see how this would be considered a "breaking change" at worst, and annoying at best to users 😅.
I don't think it's worth forcing a MAJOR version bump, so to keep it backwards compatible, you may want to make the MDX support "opt-in", so the doctoc command does the same thing by default, and you have to explicitly enable mdx support?

This line may causes problem if some users where only using doctoc for .md files, I didn't check for it, should I?

So, if I understand, this means that users would all of a sudden start getting TOCs in their .mdx files, which they weren't before... I could see how this would be considered a "breaking change" at worst, and annoying at best to users 😅.
I don't think it's worth forcing a MAJOR version bump, so to keep it backwards compatible, you may want to make the MDX support "opt-in", so the doctoc command does the same thing by default, and you have to explicitly enable mdx support?

I can think of two approaches:

.mdx is only matched if --syntax mdx is provided, but would also still match .md
the more expected behavior, only match .mdx if --syntax mdx and only match .md and .markdown if --syntax md (default)

That seems reasonable to me. Not breaking the default behavior is important.

@AndrewSouthpaw hi!
fixed the issue mentioned before here a6ee89ccf7c5f3e0f2bcba4df67bd473979a8b7f, so now mdx files won't get matched unless --syntax mdx is explicitly specified.

Hi there! Sorry it took so long to get back to you. The code looks good, all it needs now is some test coverage and we can ship it! 🥳

Hi~ @AndrewSouthpaw
added some tests, should cover the new change, would you like me to add more?

Hi @AndrewSouthpaw !
thanks for the thorough review, can you please go through the new commits to check if they cover the review?

Perfect! One quick lint cleanup and this is good to go. Thanks @I-3B.


Added version doc.

Added version doc.

There are changes missed in this. I'm going to abandon this and resubmit.


[#4287] feat(catalog-lakehouse-paimon): Support Paimon table with partitions in Gravitino

What changes were proposed in this pull request?
Support Paimon table with partitions in Gravitino
Why are the changes needed?
Fix: https://github.com/apache/gravitino/issues/4287
Does this PR introduce any user-facing change?
No.
How was this patch tested?
New UTs and ITs.

Hi @FANNG1 could you help review this pr? Thanks

comments have been addressed, and could you help review again?  @FANNG1


Cannot reference ${construct:{myBucket}.bucketName}/* directly when setting IAM permissions

Description
I'm using the storage construct to create an S3 bucket and need to refer to the ARN + /* for various IAM permissions.
Referring to ${construct:myBucket.bucketArn}/*, though, throws a MalformedPolicyDocument error that says Resource [object Object]/* must be in ARN format or "*"
Is there a way to get the full ARN and then append the /* for things like s3:GetObject and s3:PutObject without doing the whole Fn::Join dance?
How to Reproduce
The following yaml will reproduce this error:
iam:
  role:
    statements:
      - Effect: Allow
        Action:
          - s3:GetObject
          - s3:PutObject
        Resource:
          - "${construct:myBucket.bucketArn}/*"

Referencing the construct and appending /* will throw the Resource [object Object]/* must be in ARN format or "*" error mentioned above.
Additional Information
Versions:

Serverless Framework v3.29.0
serverless-lift v1.25.1

Fn::Join workaround:
iam:
  role:
    statements:
      - Effect: Allow
        Action:
          - s3:GetObject
        Resource:
          - Fn::Join:
            - ''
            - - "${construct:myBucket.bucketArn}"
              - "/*"

Hey Ryan!
Unfortunately the workaround is the right approach. Since Lift variables are resolved into !Ref ..., you cannot use them inside strings with interpolation like you did.
I'm going to close this one as this is the expected behavior, let me know if you have other ideas!


Update Icons and Feature Graphic

There was an update to the icons from #6 but it got switched out while updating. Let me know if you want to update to this icon.
Here's a preview

Yes. This icon is better.

Ok fixed in #17

@jtmcn Do you have any ideas for a feature icon?


Malformed host header reported from Docker

The 0.3.2-RC3 release was built using Go 1.6. If using this in combination with Docker 1.9 or before, it may result in the following error. Docker 1.10 looks to not be impacted with this problem.
Error response from daemon: Error looking up volume plugin rexray: Plugin Error: Plugin.Activate, 400 Bad Request: malformed Host header

@akutz It looks like Go 1.6 is enforcing a new Host header requirement. See conversation here https://groups.google.com/forum/#!topic/golang-codereviews/CPeFXzMJRzI
If we are going to compile against Go 1.6, then let's see about modifying our behavior to ensure that requests that do not specify a Host still work as expected.
Manually issuing requests to rexray-0.3.2-RC3 does not work.
echo -e "POST /Plugin.Activate HTTP/1.1\r\n" | socat unix-connect:/run/docker/plugins/rexray.sock STDIO
HTTP/1.1 400 Bad Request
Content-Type: text/plain
Connection: close

400 Bad Request: missing required Host header

Manually issuing requests to rexray-0.3.2-RC2 works.
echo -e "POST /Plugin.Activate HTTP/1.1\r\n" | socat unix-connect:/run/docker/plugins/rexray.sock STDIO
HTTP/1.1 200 OK
Content-Type: application/vnd.docker.plugins.v1.2+json
Date: Wed, 24 Feb 2016 22:41:01 GMT
Content-Length: 33

{"Implements": ["VolumeDriver"]}

Hi @clintonskitson,
As this release includes patches specifically for Docker 1.10, REX-Ray 0.3.2 should raise the minimum requirement for Docker to 1.10 and require the host header. I don't care about manual invocations against the module -- people can adjust their calls to include a valid Host header. The Host header is a required part of the HTTP 1.1 specification, and we're not going to be backwards compatible with invalid use cases. This issue will be documented as "Won't Fix" as it is simply a case where Golang has updated its server code to HTTP 1.1 spec-compliant.

@akutz The functionality addressed here does account for Docker 1.10 enhancements, but it is still backward compatible with previous versions. I don't see a need to instantiate a compatibility matrix at this point.

Fix here for now could be to revert to Go 1.5x for 0.3 and make that choice explicitly for the 0.4 releases.

Hi @clintonskitson,
This is an issue of previous versions of Golang not being compliant with the HTTP 1.1 specification. Golang 1.6 is compliant. I closed this issue because we're not going to subvert a language's adherence to the HTTP, or any other, specification. It would be like bypassing some aspect of TLS because it's inconvenient. What is your suggestion?

Restrict REX-Ray to Golang 1.5 until such time that Docker and all other consumers of REX-Ray is X number of versions of Go ahead of 1.5?
Copy and then keep up-to-date the source for the Golang stdlib HTTP server so we can provide a version of that with the HTTP/1.1 specification required HOST header removed?

I dislike both of the above issues, and my decision is to enforce the HOST header.

Hi @clintonskitson,
There is no reason that the requirement cannot be made explicit for this release. Again, this is a requirement of the HTTP specification to which Go merely caught up.

@akutz What is our benefit to enforcing the Header considering the state of the eco-system?

Hi @clintonskitson,

Accurate logging
Accurate auditing
Handling reverse-proxy scenarios (not possible without the Host header set)
Multiple server-side end-points

@akutz We are talking about communication that occurs over a local socket file for 0.3.2.

Hi @clintonskitson,
That's the default configuration, but nothing restricts it to that. A user could configure it differently.

@akutz The volume driver interface is not useful in a remote fashion today. I am going to repeat, there is no benefit today for enforcing a Header and Go 1.6 and its impact was not a properly planned change.

was not a properly planned change

Actually, this is an inaccurate statement. I researched the aspects of 1.6, and I was actually aware of the changes with the HTTP library, and they were in fact my primary impetus for making the change. I was performing perf tests with 1.6 RCs to see where the inclusion of HTTP/1.2  enhanced even local performance as well as how it would impact future inclusion of the TLS overhead.
I'll repeat, I have no problem excluding the manual invocations of curl with this change -- these are not valid or supported use cases and exist only for people debugging or testing the product. Consumers can easily add a host header to these calls. If that is the only reason for reverting to 1.5, then I'll re-close this ticket.
However, if it's truly not present in versions of Docker prior to 1.10, then we should consider reverting to Golang 1.5 for the time being as Docker 1.10 has only been available for 20 days as of today. However, I'm not certain this is the case (the absent Host header). Cursory research shows that Docker 1.9 does in fact send the host header properly, so I'm not sure why other tests show it does not.
Can you please provide a simple and straight-forward example to show how Docker 1.9 fails to provide the Host header?

Closed with 0.3.2-RC4

@akutz It is Docker making calls to us, it is not configurable.
On Wednesday, February 24, 2016, Schley Andrew Kutz <
<EMAIL_ADDRESS>wrote:

Hi @clintonskitson https://github.com/clintonskitson,
That's the default configuration, but nothing restricts it to that. A user
could configure it differently.
—
Reply to this email directly or view it on GitHub
https://github.com/emccode/rexray/issues/317#issuecomment-188517397.

FYI - Docker is tracking this at https://github.com/docker/docker/issues/20865

Just hit this myself. Working around compiling 0.3.3 with go1.5 to see if that works. Will update this thread for future folks.

That will work. Rex 0.4 is compatible with Docker 1.10+ because of this.
On Tuesday, June 21, 2016, Darshan Sanghani<EMAIL_ADDRESS>wrote:

Just hit this myself. Working around compiling 0.3.3 with go1.5 to see if
that works. Will update this thread for future folks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/emccode/rexray/issues/317#issuecomment-227598270, or mute
the thread
https://github.com/notifications/unsubscribe/ABVMMYB_reaTd2kQhBv-32teze0ebAhhks5qOG3bgaJpZM4HiN39
.

You can download the pre built binaries instead of compiling as well.
On Tuesday, June 21, 2016, Clinton Kitson<EMAIL_ADDRESS>wrote:

That will work. Rex 0.4 is compatible with Docker 1.10+ because of this.
On Tuesday, June 21, 2016, Darshan Sanghani<EMAIL_ADDRESS><javascript:_e(%7B%7D,'cvml','notifications@github.com');>> wrote:

Just hit this myself. Working around compiling 0.3.3 with go1.5 to see if
that works. Will update this thread for future folks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/emccode/rexray/issues/317#issuecomment-227598270,
or mute the thread
https://github.com/notifications/unsubscribe/ABVMMYB_reaTd2kQhBv-32teze0ebAhhks5qOG3bgaJpZM4HiN39
.

it worked well. Here is the dockerfile I used to build with go1.5. as @clintonskitson mentioned, you are better off using your pre-built binaries, but if you have a bunch of business-specific changes in your fork then you might have to run your own build. Here is what I did.
FROM ubuntu:14.04

 ENV GOVERSION 1.5

 RUN apt-get update -y && apt-get install --no-install-recommends -y -q \
     build-essential \
     ca-certificates \
     curl

 RUN mkdir /goroot && \
     mkdir /gopath && \
     curl https://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz | \
          tar xzf - -C /goroot --strip-components=1

 ENV CGO_ENABLED 0
 ENV GOPATH /gopath
 ENV GOROOT /goroot
 ENV PATH $GOROOT/bin:$GOPATH/bin:$PATH

 RUN mkdir -p $GOPATH/src/github.com/emccode/rexray
 WORKDIR $GOPATH/src/github.com/emccode/rexray

 CMD make

Then I did:
docker build -t rexray -f Dockerfile .
export CURDIR=$(pwd)
docker run --rm -it -v $CURDIR:/gopath/src/github.com/emccode/rexray --name rexray rexray bash

Inside the container, run the make and copy the binary to the mount path after it succeeds:
root@996dc3046eda:/gopath/src/github.com/emccode/rexray# make
root@996dc3046eda:/gopath/src/github.com/emccode/rexray# cp /gopath/bin/rexray ./
root@996dc3046eda:/gopath/src/github.com/emccode/rexray# exit

You should now have your binary in your mount path on your host.


nuxi build: Very high  memory usage

Environment
Tested both on Windows and Linux, nuxt 3.5.1, 3.5.5 (but the same problem is also int 3.4.x and 3.3.x).

Operating System: Windows_NT
Node Version:     v19.9.0
Nuxt Version:     3.5.1
Nitro Version:    -
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      server, loadingIndicator, css, app, modules, i18n, vite, nitro, experimental
Runtime Modules<EMAIL_ADDRESS>Build Modules:    -

Operating System: Linux
Node Version:     v19.9.0
Nuxt Version:     3.5.3
Nitro Version:    2.4.1
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      server, loadingIndicator, css, app, modules, i18n, vite, nitro, experimental
Runtime Modules<EMAIL_ADDRESS>Build Modules:    -

Reproduction
Look at the memory usage of nuxi build on large project.
Describe the bug
I am building the project on windows (32GB RAM) and linux (4GB RAM  production server).
In  the Windows   it was works.  In the Linux it started to crash with Out Of Memory in the server build stage.
Look at this screenshot:

The build of the project is using above 3.8GB of RAM. before some of my optimizations (in the code)  the build was crashed with Out Of Memory.
I am starting nuxt build.
The client is built after some seconds,  then it go to the server build.
The memory still grow  to the maximum until the server is built. In linux (I do not have a screenshot) it uses the maximum RAM also until the half of the Nitro server built.
then it goes to the "flat" memory usage when it created the  i Building Nitro Server (preset: node-server) step.
I think in low-memory servers, or in Lambda, Dockers,  and similar  the nuxt build (vite? esbuild? )  of the client can clean the memory before or when the build of the server code is starting so the  max memory usage by the process will be cut to half.
Additional context
Workaround:
put heavy client-only code with process.client?, as the esbuild ignore   imports this code in the build process. this also make the build step of the server faster and used less memory.
process.client ? defineAsyncComponent(() => import('~/components/CKEditor.vue')) : null;
Thanks for all !
Logs
No response

let's track in https://github.com/nuxt/nuxt/issues/18507.


Switch to parallel gem

#26 originally removed all traces of parallelism in favor of less file-descriptor contention. It turns out Ruby has gems, and some of those provide ready-made, easy-to-use wrappers for parallel processing.
Use https://github.com/grosser/parallel instead of rolling our own, or removing parallelization altogether.
(Note that this is based on #39, for historic reasons. I can rebase that on top of master if it makes it easier to go in).

Yeah I'd rather see this against master, otherwise there's random changes that make it hard to see what's actually changing here.
Is file descriptor contention an issue you're seeing with the current multi-process scheme rather than oversubscription of the processors?

I'm pretty sure the issue is that the current master code does is :

spawn n processes, where n= # of valid tags
each subprocess goes through each "documentable" blob in the tagged commit, "unpacks" all the trees/blobs for each of those, sends the parse results back and exits. Clearly, we start an unbounded # of processes, repeatedly writing the same data over and over for each version.

I remember getting a sluggish machine, and it would sometimes start throwing "Too many open file descriptors errors" out of this. Don't know if it's CPU contention, SSD thrashing or whatever, but docurium was definitely mostly-unusable here, as there are no guarantee any run will be a complete success, thus sometimes causing complete versions to be missing from the final repository.

Right, I was curious as to how you pinpointed file description contention as the source of the issue. I'm pretty sure it's due to CPU oversaturation, but I'd be impressed if we managed to thrash on an SSD ;)
The issue with too many open files is most likely due to lack of garbage collection on the repository, unless your ulimits are low.
This gem seems really useful, but I'd still want the ability to set how many processes I want to run.

It's possible, via either in_processes: or in_threads:. But I'd like to post-pone that to at least the option support (part of #44), and the auto-detection makes it less intrusive.

It looks like we had some mismerges into master but as I'm currently restricted to my work laptop, the master branch makes it really unhappy so a patch is gonna make it here to fix things


Is it possible to change HTTP response code in Progressive rendering?

When using progressive rendering we make a call to service in <async-renderer> and the dataprovider method called by <async-renderer> dosent have access to HTTP request and response object.
In this case how can we set HTTP response code if service fails?

Hey @SunnyGurnani, you wouldn't be able to change the HTTP response code after the first byte has been committed. When the first byte is committed to the HTTP response the HTTP response headers are committed. If a particular part of the page fails then it is best to flush an error message for that async fragment. If the problem is severe enough you can do one of the following:

Show a modal to force the user to reload the page (and hope the problem is resolved for the next request)
Flush a <script> block that redirects to an error page using client-side JavaScript

Error handling with progressive HTML rendering is a little tricker, so it is definitely a tradeoff. While buffering everything let's you do better server-side error handling it will perform much worse for pages that make async calls. It's usually better to optimize for the success case even if the error handling for the failure case is a little more complicated.
I'm going to go ahead and close this issue, but feel free to add more comments here if you would like to discuss further.


Update Set-CsUser.md

Minor formatting updates to attempt to clear repo Warning errors

Docs Build status updates of commit 7499a17:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

skype/skype-ps/skype/Set-CsUser.md
:white_check_mark:Succeeded
View (skype-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Drop support for PHP 7.0

Fixes the following error in https://github.com/php-curl-class/php-curl-class/pull/879:
+ composer self-update
You are already using the latest available Composer version 2.2.24 (stable channel).
+ composer install --prefer-source --no-interaction
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - vimeo/psalm[2.0.0, ..., 2.0.17, 3.0.0, ..., 3.2.12] require muglug/package-versions-56 1.2.4 -> satisfiable by muglug/package-versions-56[1.2.4].
    - muglug/package-versions-56 1.2.4 requires composer-plugin-api ^1.0 -> found composer-plugin-api[2.2.0] but it does not match the constraint.
    - vimeo/psalm[3.3.0, ..., 3.5.1] require php ^7.1 -> your php version (7.0.33) does not satisfy that requirement.
    - vimeo/psalm[3.5.2, ..., 3.8.3] require php ^7.1.3 -> your php version (7.0.33) does not satisfy that requirement.
    - vimeo/psalm[3.8.4, ..., 3.18.2] require php ^7.1.3|^8 -> your php version (7.0.33) does not satisfy that requirement.
    - vimeo/psalm[4.0.0, ..., 4.0.1] require php ^7.3|^8 -> your php version (7.0.33) does not satisfy that requirement.
    - vimeo/psalm[4.1.0, ..., 4.30.0] require php ^7.1|^8 -> your php version (7.0.33) does not satisfy that requirement.
    - vimeo/psalm[5.0.0, ..., 5.13.1] require php ^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 -> your php version (7.0.33) does not satisfy that requirement.
    - vimeo/psalm[5.14.0, ..., 5.25.0] require php ^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 -> your php version (7.0.33) does not satisfy that requirement.
    - Root composer.json requires vimeo/psalm >=2 -> satisfiable by vimeo/psalm[2.0.0, ..., 2.0.17, 3.0.0, ..., 3.18.2, 4.0.0, ..., 4.30.0, 5.0.0, ..., 5.25.0].

Error: Your requirements could not be resolved to an installable set of packages.

from https://wordpress.org/about/stats/


Remove cmwell_current_0 and cmwell_history_0 indices creation

You should add another issue of removing all "data" keyspace.


zIndex of parent doesn't get inherited by children

When setting the zIndex on a parent node, and omitting the zIndex on the children, the children don't seem to properly inherit the zIndex of the parent and the parent is placed on top of it's children.
The expected behaviour would be that the children inherit the same zIndex as their parent.
This issue can easily be recreated by removing the zIndex of rectThree in the zIndex example (examples/tests/zIndex.ts)

@erikhaandrikman - When we discussed this it was up to the framework to do this. Right now Solid is adding zIndex to all elements to properly place elements.
https://github.com/lightning-js/solid/blob/main/src/core/node/index.ts#L399

This seems to be fixed in v0.6.0 - not sure it was on purpose or just a happy side effect of the renderer optimizations 😄
@MLangendijk, I believe you were also waiting for this fix - does the latest Blits (which contains renderer 0.6.0) solve the issue you were running into?

@michielvandergeest my specific case indeed works with 0.6.0, the calcZIndex function added looks to have solved this :)


MBARI-23797: Handle null values for configurations in the Execution C…

…ommand API
What changes were proposed in this pull request?
Execution_command api can handle dictionary null value now
How was this patch tested?
UT

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/2204/
Test FAILed.
Test FAILured.


Namespaces for translations

Currently, Localize's readme file does not mention anything about namespacing translation keys.
Without using namespaces there will be collisions of 3rd party SL elements  sooner or later.
Mainly because of letter case problems. For example one package uses name: 'name' while an other package uses name: 'Name', or cases where the same English word has different meanings in different contexts.
Therefore, I think it's important to always namespace translation keys.
Of course namespacing is already possible with Localize out of the box, but a little syntactical sugar and additional utility functions could be useful to prevent that the namespaces have to be repeated over and over again in the code.
One solution could be (feel free to prefer any other solution you like and also use your preferred function names .. it's only an example):

Using lit
import { localizer }  from '@shoelace-style/localize/dist/lit'

const { t, formatDate } = localizer('core.sl-date-picker') // <- namespace

@customElement('sl-date-picker')
  ...
    // use as directive
    ... html`<div>${t('whatever')}</div>`
    ... html`<div>Current date: ${formatDate(today)}</div>`
  ...
    // use as "normal" function
    alert(t(this, 'whatever'))
    alert(formatDate(this, someDate))
  ...
}

Using `haunted` (things are syntactically easier here - no directives needed)
function DatePicker(...) {
  const { t, formatDate } = useI18n('core') // '.sl-date-picker' will be added automatically by convention

  ... alert(t('whatever'))
  ... alert(formatDate(someDate))

  ...
${t('whatever')}

  ...
${formatDate(someDate}>

}

I personally use for example the following syntax
const { i18n, t, g } = useI18n('core') // `.sl-date-picker` will be added automatically

... alert(t('whatever'))
... alert(g('some.fully.qualified.translation.key'))
... alert(i18n.formatDate(someDate))

... html`<div>${t('whatever')}</div>`
... html`<div>${i18n.formatDate(someDate)}</div>`

This might need a bit of rethinking regarding type safety and others. This can be handled some other time when requirements are clearer and be opened as new issue then.


Fixed build warnings related to links

@CamSoper @gewarren - This fixes the build warnings issue from earlier (and lots of thanks to Cam for helping me through it)

@CamSoper @gewarren - This fixes the build warnings issue from earlier (and lots of thanks to Cam for helping me through it)


Autospecify table to select data from bug

Hi again,
I find one bug. I try to use this code:
type User struct {
	Uid      int64
	Email    string
	Password string
}

func (u *User) TableName() string {
	return "users"
}

func main() {
	dbCon, _ := dbx.Open("postgres", fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=%s",
		"localhost", "postgres", "mysecretpassword", "demo", "disable"))
	dbCon.LogFunc = log.Printf

	var user User
	if err := dbCon.Select().Where(dbx.HashExp{"email": "my@email.com"}).One(&user); err != nil {
		log.Printf("Error: %s", err)
	}
	log.Println(user)
}

But receive SQL-error:
[5.88ms] Query SQL: SELECT * WHERE<EMAIL_ADDRESS>Error: pq: SELECT * with no tables specified is not valid

As I see in manual dbx should add table name automatically from TableName() method or by struct name:
// SELECT * FROM order_item WHERE order_id=100 AND item_id=20
db.Select().Where(dbx.HashExp{"order_id": 100, "item_id": 20}).One(&orderItem)

Please check this issue. Thank you

Are you using the latest code?

You right. This is my mistake. Thank you)

Are you sure that TableName() working at standard Select() query?
I tried this, but has a error too...

@kolkov Yes, after code update TableName() method works fine.


PSCP is not working thru supperputty session

What steps will reproduce the problem?
1.Configure pscp.exe within supperputty settings
2.Initiate a file transfer
3.

What is the expected output? What do you see instead?
File transferred.

What version of the product are you using? On what operating system?
Supperputty v1.3/Windows 7

Please provide any additional information below.

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 14 Sep 2013 at 9:05
Attachments:

pscp-not-working-thru-supperputty.png

Closing this issue but all hope is not lost! We still want to help.
See: https://github.com/jimradford/superputty/wiki/Legacy-Imported-Issues on how to help us to help you!


Two instances of tmux using tmux-continuum on the same machine

Hi,
thanks for resurrect/continuum, the are really needed functionality for tmux.  After reading https://github.com/tmux-plugins/tmux-continuum/blob/master/docs/multiple_tmux_servers.md, I think this might be the reason for this behaviour: If two different users on the same machine use tmux with resurrect/continuum enabled, only the first to start tmux gets the autosave feature enabled. So maybe you use some per machine locking mechanism. Is there a way to do this per user? On a multuser system this would be perfectly reasonable and safe as well.

thanks for resurrect/continuum, the are really needed functionality for tmux

Thanks, I'm glad you find them useful.

Is there a way to do this per user?

I'm not sure, there might be a way. Frankly, I don't need this feature and I'm not the right candidate to implement it.
Let's see if other users would find this useful (please upvote with :+1:). If yea then we'd be looking for someone to implement this.
Just a note: when initially working on the feature of preventing 2 (or more) tmux servers doing autosave it was hard-ish to make it work properly. Adding process ownership to the mix could make this even more complicated.

Hi,
We are also using one central access server for several users, where anyone can run tmux, so it was a problem also for us. This can be fixed with a simple and safe change.
Edit .tmux/plugins/tmux-continuum/scripts/helpers.sh scroll to all_tmux_processes function and change it contents from:
all_tmux_processes() {
        # ignores `tmux source-file .tmux.conf` command used to reload tmux.conf
        ps -Ao "command pid" |
                \grep "^tmux" |
                \grep -v "^tmux source"
}

to:
all_tmux_processes() {
        # ignores `tmux source-file .tmux.conf` command used to reload tmux.conf
        ps -Ao "command user pid" |
                \grep `whoami` |
                \grep "^tmux" |
                \grep -v "^tmux source"
}

This function is used for searching if another tmux instance is running. By default it searches all processess and filters them only to tmux, so it catches all tmux instances started on machine. I have extended filter to match only tmux started by current user. This change is safe because each user has it's own save directory (default $HOME/.tmux/resurrect) and still only first tmux started by a user will save it's contents to this directory.
Feel free to create a pull request and merge this change to tmux-continuum code.
Globally allowing tmux-continuum to save multiple tmux instnaces is much more complicated because this will need multiple tmux-resurrect save directiories (one per tmux instnace), and some logic in tmux-continuum to choose right directory. I also agree with argument that normally running (and saving) multiple tmux instances is not required.
Best regards
Szymon

Hi @szimonek thanks for the patch, I think it will do the work!
I applied it locally and will test it today. If all is good I'll push it by tomorrow.

Implemented via 1531b3770a7cf7373d15fedd239c5331b99342d1
Sorry for the 3 year wait


Release blogpost for v11.1.x

Suggestion committed!
But at the last contributors sync meeting, I think @cknitt wanted to deprecate more things that should also be mentioned. Was it just the OCaml stdlib functions or something else too?

See #6999 (but maybe there is more that I forgot to put on the list)


[GlobalOptimization] Support ExpandVectors matvec cases with producer CastOpInterface ops

This PR is related to https://github.com/openxla/iree/pull/15371 and https://github.com/openxla/iree/pull/15339. In https://github.com/openxla/iree/pull/15339, we lift linalg.generic ops into linalg.batch_matvec with the CastOpInterface ops as separate producer ops. We need to keep the CastOpInterface ops as the producer of the linalg.batch_matmul ops in order to recognize this sequence of ops as a matmul with casted types in SetEncoding.

This PR can wait until https://github.com/openxla/iree/pull/15371 has landed so we can remove 22a15f9960694b73d5c409ccf9ed90fe5f992615 and use the utils there

This PR can wait until #15371 has landed so we can remove cb83f4c and use the utils there

Just landed and rebased so this is ready for review now.

rebased on main


Css text size

When viewing in phone css text size its initially too small.
Think its absolute and should be relative.

Think I fixed it. Need to test.

Nope, I had't fixed it.
I tried changing the body font-size in the css to 1em but not working.
Will need a css man @ianisted B-)


[AnVIL DX] Terms of Service Acceptance - Terra

If the user has a Terra account, we can assume they have accepted the Terra Terms of Service. The Data Explorer will not track acceptance of the Terra Terms of Service; Terra will track this instead.

Approach discussed and approved with team on 05/23 call.


Android Discovery Mode "Share Results" returns unstructured text

Describe the bug
When selecting "Share Results" in the Discovery Mode Results view, data is shared to an email without formatting.
To Reproduce
Steps to reproduce the behavior:

Go to Discovery Mode page, select any result in "Previous Sessions" with more than 1 response.
Select "Share Results".
Email client will open with raw results.
Example: funny-hotspot-name Packets Heard: 4 RSSI: -110 SNR: -1 funny-hotspot-name Packets Heard: 1 RSSI: -105 SNR -1

Expected behavior
Previously a structured list was reported. Ideally, something like comma separated data with line breaks between hotspots would be optimal for copying data from the email and parsing in software like Python, Excel, or Google sheets.
Screenshots

Smartphone (please complete the following information):

Device: Pixel 4 XL
OS: Android 11 (Build Number RQ3A.210605.005)
App Version: 3.3.0

Additional context
N/A

A friend who uses an iPhone showed me the new share results email format in 3.3.0. It looks perfect! I think if possible it would be great to see the exact same table format for Android.


Getting requirements to build wheel did not run successfully.

C:\Users\murat\Dropbox\PC\Downloads\RVC-beta0717>pip install -r requirements.txt
Collecting joblib==1.1.0 (from -r requirements.txt (line 1))
Using cached joblib-1.1.0-py2.py3-none-any.whl (306 kB)
Collecting numba==0.56.4 (from -r requirements.txt (line 2))
Using cached numba-0.56.4.tar.gz (2.4 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... error
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [22 lines of output]
Traceback (most recent call last):
File "C:\Users\murat\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 353, in
main()
File "C:\Users\murat\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\murat\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip_vendor\pyproject_hooks_in_process_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\murat\AppData\Local\Temp\pip-build-env-1im_w15z\overlay\Lib\site-packages\setuptools\build_meta.py", line 341, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=['wheel'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\murat\AppData\Local\Temp\pip-build-env-1im_w15z\overlay\Lib\site-packages\setuptools\build_meta.py", line 323, in _get_build_requires
self.run_setup()
File "C:\Users\murat\AppData\Local\Temp\pip-build-env-1im_w15z\overlay\Lib\site-packages\setuptools\build_meta.py", line 488, in run_setup
self).run_setup(setup_script=setup_script)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\murat\AppData\Local\Temp\pip-build-env-1im_w15z\overlay\Lib\site-packages\setuptools\build_meta.py", line 338, in run_setup
exec(code, locals())
File "", line 51, in
File "", line 48, in _guard_py_ver
RuntimeError: Cannot install on Python version 3.11.4; only versions >=3.7,<3.11 are supported.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.

Install python 3.9 (Tested) it will not work on python 3.11.4


fix: moved stylelint-config-standard-scss to dev dependency

Fixes Codeclimate check
Describe the changes you have made in this PR -
Moved stylelint-config-standard-scss to dev dependency

@niladrix719 It seems that Codeclimate may have some issue, so we have removed that package for now


Tracing QC's determination of reference coordinates is wrong

In the tracing QC, there's computation of distance between each individual spot and the center of its corresponding regional barcode's spot. For each reference point, though, the only variable considered is the trace ID. But since trace IDs count uniquely for each regional barcode and in each field of view, the reference points need to also key on this information. Namely, rather than simply building a mapping from trace ID to reference coordinates, we need to build one in which the keys are a composite of field of view, trace ID, and regional barcode.

This appears to cause an enormous data loss, something like 196000 of 202000 spots data points from a recent experiment. Namely, this causes the ref_dist criterion to fail for a huge number of points, since the distance explodes and is a null value.