Fixed gizmo forced implicit normalization and inconsistent rotation

Ref #18987.
The current behavior of Godot's Gizmo is inconsistent.
For example, if you do scaling in global transform mode and then rotate in local transform mode, implicit normalization will be done internally, resulting in an abbreviated transformation.
https://user-images.githubusercontent.com/61938263/127789631-23fe581d-4a18-4ea4-8ebd-caa546a8d29e.mov
Also, the rotation in the global transform and the rotation in the local transform perform completely different transformations. In a child node with a scaled parent node, rotation in global transform mode will rescale the node and cause an implicit skew.
https://user-images.githubusercontent.com/61938263/127789650-2a0444fb-007b-4d80-b5e0-aa93414ef636.mov
Correct rotation in a child node with a scaled parent node was considered to cause skew in the looks, ref: #32995.
With this PR, implicit normalization is no longer worked. So, skew will keep when transform, and matrix value will not change suddenly like first video. Moreover since the behavior of global and local transforms will be unified, I consider that it will be possible to implement something like auto-normalizing mode, keep-orthogonal mode (I think it will mainly be an option for the global transform scaling) for prevent to be generated local skew, and keep-looks mode for rotation #32995.

I did a quick test and this PR breaks multi-node editing in global transform mode.
I'm OK with removing implicit normalization, but we need to make sure we don't break existing behavior.
Ideally, we need to test the 4 combinations of single/multi node and local/global transform and make sure it works on a scene with non-uniform scaled  and rotated nodes.
I think the issue comes from using _edit.center as the new origin when doing global scales and rotates. _edit.center is the global position of the transform gizmo, so it should be the center of rotation and scale when editing multiple nodes.

@JFonS Fixed multiple-transform so that it retains its previous behavior.
As for multiple-local-transform, it seems to be inconsistent from the beginning. Shouldn't this also be fixed? For example, multiple-local-translate works the same as multiple-global-translate, but multiple-local-rotate does individual rotation, unlike multiple-global-translate. As for scale, I think it is broken because it does not convert between input and axis.

Yup, multiple-local-scale seems to be broken.
Multiple-local-translate is inconsistent with the rest, but I think that's fine. If we change it to move all the nodes in their own local axis, it can result in each node moving in completely different directions and the transform gizmo will move around in a random direction, making it confusing for the user. I can't think of any use case for local translate on multiple nodes, usually when you want to move a group of nodes you want them to stay together, even if you are in local edit mode.
Unless we find a good use-case for it, so I would make an exception for the local "translate" tool and keep it global.

I can't think of any use case for local translate on multiple nodes

If you make the animation of explosives object manually, this could be useful as you can move them evenly in any axis direction. Blender's local transform + Individual origin option can be a good reference.

If multiple-local-scale adopt the reference, I think we can make it a consistent system as well, how do you think?

For now, I think I fixed the multiple-global-transform to keep the previous behavior (global-rotation is changed to not implicitly change the scale in this PR).

I found a bug in local-rotation, so I'm fixing it..

Most of the bugs have been removed.
The only remaining problem is that the child nodes with scaled parent nodes have shaky local Y-axis rotation. Oddly enough, the problem does not occur in the X and Z axes rotation. I suspected it had something to do with Euler's conversion order, but that may not be the case. Does anyone know anything about it?

Thanks!


AttributeError: module 'collections' has no attribute 'MutableMapping'

WHen I run python -m medusa.inference.cli --model FasterDecoding/medusa-vicuna-13b-v1.3', I get AttributeError: module 'collections' has no attribute 'MutableMapping'`
Seems like a fastchat related issue?
Using WSL python 3.11.5 in a n anaconda environment

I searched it and seems like python version issue. It happens when your python >= 3.10.

ah thank you, I was overthinking it!


#526 - Fix typos in the README.md file

I solved the issue #526 !
Do not hesitate to tell me if I have to modify something else. :blush:

@timotheeMM Thank you! 🥳


impl Send+Sync

I believe this PR is safe but I'd appreciate some more eyes on this crate to confirm that.
Fixes #2

Thanks!


Add Response classes

From a caller perspective checking the status of legacy API responses is currently a bit clunky:
if response.status == '0'

This would be much easier to read and type with a method to check the status:
if response.success?

Ditto for enumerating objects in newer API list responses:
response._embedded.applications.each do |item|

This would be much easier to read and type with an enumerable response:
response.each do |item|

TODO:

SMS API responses (status == '0' for each item)
Application API list response (_embedded.applications)
Calls API list response (_embedded.calls)
Secret Management API list response (_embedded.secrets)
Number Insight API responses (status == 0)
Numbers API responses (error_code == '200')
Verify API responses (status == '0' || status == 'SUCCESS')

Implemented in v6


Enable caching for staticcodevalue dao search

Hi @jayantchaudhuri, per our discussion checking in the change to cache the static code value lookup calls see if it helps with performance. if perf shows improvement, we can discuss and optimize the caching settings/impl.

You did it @rakeshnpatel!
Thank you for signing the Anthem Opensource Software CLA.


Issue with Rune Etching Not Reflecting on Explorers After Successful API Call

Description
I am encountering an issue where a rune etching transaction was successfully submitted and confirmed on the blockchain, but the etched runes are not visible on any rune explorers. I used the runes_etch API method from the Sats Connect library.
Environment

Network: Testnet
Sats Connect Version: 2.2.1

API Payload - runes_estimateEtch
{
    "destinationAddress": "tb1qzjhm26d90dga8dp3tgx07n76aky7psz4clagaz",
    "feeRate": 2,
    "runeName": "CCCCXCXCSXCZ",
    "divisibility": 8,
    "symbol": "C",
    "premine": "1000",
    "isMintable": true,
    "terms": {
        "amount": "1000",
        "cap": "1000"
    }
}

Expected Behavior
The rune etching should be visible on the rune explorers such as Bitrune and RuneBTC after the transaction is confirmed on the blockchain.
Actual Behavior
The transaction was confirmed as seen in the transaction on Mempool:
67e6cc2a7e4beaec8afccf28aba579b81a377550c5bdff635c04799087614e05
However, the runes are not listed in the following rune explorers:

Bitrune Explorer
RuneBTC Testnet

Taking a look now

Etching runes with custom name uses a commit & reveal scheme enforced by protocol. The reveal transaction is not yet confirmed and it uses very low fee rate.
The order was submitted with fee rate of 2.
Testnet fees are crazy in last couple of days, please ensure you use correct fee rates so it gets confirmed.
This is the reveal transaction: https://mempool.space/testnet/tx/322c74678a49b0320b6d9f46b36aded6f11d8ba7c579f23e8841a94761ec95ac

The transaction you linked, which is confirmed is the funding transaction which sends funds to the backend to etch the rune. Please also note that in order to be considered a valid rune, the reveal transaction should not be broadcasted earlier than 6 blocks after the commit transaction is confirmed.

The fees used by funding transaction is good (67sat/vb), and you can choose it when signing the transaction. The fees used by subsequent commit & reveal transactions are controlled via feeRate parameter. You can check commit & reveal transaction by monitoring transactions made by the funding address on your behalf:
https://mempool.space/testnet/address/tb1p8lqryngkf8ejkcy0jnla75mvffgct7sz3y827jw8yn4lcfn6yk6sw9cksh

Probably at the current testnet mempool of 600.000 pending transactions it will take a very long time for it to be confirmed at 2sat/vb. Please retry with a different feeRate.

Please try with a different fee and let us know. We have multiple etches that were already etched via sats connect and all of them are visibile on public explorers.


.editorconfig is not working or respected

Issue Description
We are attempting to use .editorconfig in vscode, but are not having success with it. I have attempted to boil the issue down to the core, by implementing a sample project here: https://github.com/mifriis/editor-config
Instead of our custom editorconfig, in the sample i am using the simple one from this blogpost: https://www.strathweb.com/2019/07/editorconfig-support-in-omnisharp-and-c-extension-vs-code/
[*.cs]
dotnet_style_qualification_for_field = false
dotnet_naming_style.instance_field_style.capitalization = camel_case
dotnet_naming_style.instance_field_style.required_prefix = _

But without success. It seems the analyzers are running, but not based on the editorconfig file. When using our production editorconfig we are seeing it being respected in VS, but not VSCode. We have not installed any plugins to make it work.
Steps to Reproduce
open Class1.cs and Ctrl + . on myField
You should see the option for Create and assign field for myField
Expected Behavior
 public class Class1
    {
        private readonly string _myfield;

        public Class1(string myfield) {
            _myfield = myfield;
        }
    }

Actual Behavior
    public class Class1
    {
        private readonly string myfield;

        public Class1(string myfield) {
            this.myfield = myfield;
        }
    }

Logs
OmniSharp log
[info]: OmniSharp.Roslyn.CSharp.Services.Refactoring.V2.RunCodeActionService
        Applying code action: Create and assign field 'myfield'
C# log
None, the log is empty
Environment information
VSCode version: 1.57.0
C# Extension: 1.23.13
Dotnet Information
.NET SDK (reflecting any global.json):
 Version:   5.0.302
 Commit:    c005824e35
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.19043
OS Platform: Windows
RID:         win10-x64
Base Path:   C:\Program Files\dotnet\sdk\5.0.302\
Host (useful for support):
Version: 5.0.8
Commit:  35964c9215
.NET SDKs installed:
2.1.617 [C:\Program Files\dotnet\sdk]
3.1.411 [C:\Program Files\dotnet\sdk]
5.0.202 [C:\Program Files\dotnet\sdk]
5.0.302 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.24 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.27 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.24 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.27 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.24 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.27 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.8 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download

Visual Studio Code Extensions

Extension
Author
Version

code-coverage
markis
1.3.3

code-spell-checker
streetsidesoftware
1.10.2

csharp
ms-dotnettools
1.23.13

jupyter
ms-toolsai
2021.6.999662501

markdown-all-in-one
yzhang
3.4.0

python
ms-python
2021.7.1060902895

remote-wsl
ms-vscode-remote
0.56.5

vscode-drawio
hediet
1.6.1

vscode-github
KnisterPeter
0.30.6

vscode-nuget-package-manager
jmrog
1.1.6

vscode-pylance
ms-python
2021.7.7

vsliveshare
ms-vsliveshare
1.0.4631

@mifriis Naming style configuration can be tricky to configure (See the docs). Below is an excerpt from Roslyn's .editorconfig.
# Instance fields are camelCase and start with _
dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style

dotnet_naming_symbols.instance_fields.applicable_kinds = field

dotnet_naming_style.instance_field_style.capitalization = camel_case
dotnet_naming_style.instance_field_style.required_prefix = _

First, Roslyn declares a naming rule instance_fields_should_be_camel_case which suggests that instance_fields symbols have the instance_field_style naming style applied. Next, Roslyn declares a naming symbol configuration instance_fields which applies only to fields. Finally, Roslyn declares a naming style instance_field_style which is camel case and requires a _ prefix. Each part is necessary to have a working naming rule.
Also, let me recommend that you begin your .editorconfig with root = true. This tells editors that it can stop walking up the filesystem looking for applicable configurations and will ensure that only the settings defined in the file will be applied to your code.

Hi @JoeRobich
Using Roslyn's editorconfig just kicks in and works. I wonder if there's a, bad,  setting in our .editorconfig that Visual Studio can interpret or ignore, while VSCode doesn't. I don't suppose there's a more verbose log or way to see more in depth what is going on?

@mifriis I believe things are working as expected here. A naming rule requires information about what the style is and which symbols it applies to. I believe the sample from the blog post may have been incomplete.


Adding vooplayer

Hello, can you add support for vooplayer?
This is an example URL: https://lds.cdn.vooplayer.com/publish/MTEwNTMw
Thanks

Can you make a PR for the stubs and add a test case?
Thank you.

Sorry but I don't know how to do that...

You just add one here and see if it works:
https://github.com/dereuromark/MediaEmbed/blob/master/src/Data/stubs.php
You can make this as fork and then make a Pull Request to this repo.

I am not a dev, I have no idea how to do that.

Oh i see. How did you get this lib installed and in use? Maybe that dev can help out.
Otherwise I will try to see into it in the next weeks.

I am using phpBB which uses this library in an extension
https://www.phpbb.com/customise/db/extension/mediaembed/

Are you sure?
looking at https://github.com/s9e/TextFormatter/blob/master/src/Plugins/MediaEmbed/Parser.php this is its own thing, and unrelated to my library (even though I am using it for my own cakephp forum solutions so far).

Please check the FAQ
https://www.phpbb.com/customise/db/extension/mediaembed/faq/2421

The functionality is handled entirely by the 3rd-party library, known as MediaEmbed, bundled within phpBB.
But not sure...

They just happen to use the same name :)

So not using this library? These are not the sites you support?
https://www.phpbb.com/customise/db/download/136051

I tried
[
	'name' => 'Vooplayer',
	'website' => 'https://vooplayer.com/',
	'url-match' => 'https:\/\/lds\.cdn\.vooplayer\.com/publish/([0-9A-Za-z-]+)',
	'iframe-player' => 'https://lds.cdn.vooplayer.com/publish/$2',
	'embed-src' => '',
	'embed-width' => '480',
	'embed-height' => '270',
],

Doesnt seem to like being iframed...

@dereuromark you got two options

Simply append ?fallback=true to the source of the iframe
Alternatively, include the supporting script
<script src="https://app.vooplayer.com/assets/vooplayer.js"></script>

furthermore, for the best matching you should try and avoid user subdomains
*.cdn.vopplayer.com could map to anything.cdn.vooplayer.com

@petarsubotic That actually worked, thx: https://github.com/dereuromark/media-embed/commit/f6fef9fba134819bc2428c58f98b6f568d37c85d


 not added to network when creating a domain

Version Reports:
Distro  version of host:
 Debian GNU/Linux 9.5 (stretch)
Terraform Version Report
terraform v0.11.8

provider.libvirt (unversioned)

I built this provider from source since Debian ships with libvirt 3.0.0, which doesn't work with the pre-built binaries.
Libvirt version
3.0.0
terraform-provider-libvirt plugin version (git-hash)
4cc6d3ba0180c5c1afcbd2f37cbe8f6f8d93ccae

Description of Issue/Question
Setup
main.tf:
provider "libvirt" {
  uri = "qemu:///system"
}

# Default VM Network
resource "libvirt_network" "default" {
  name = "default"
  addresses = ["<IP_ADDRESS>/24"]
  domain = "vm"
  bridge = "virbr0"
  autostart = true
  dhcp {
    enabled = true
  }
}

module "cloud_vm" {
  source = "./vm"

  name      = "cloud"
  cores     = 2
  memory    = 1024
  address   = "<IP_ADDRESS>"
  os_disk   =<PHONE_NUMBER> # 4 GB
  data_disk = 1024

  network_name = "${libvirt_network.default.name}"
}

Module vm (vm/main.tf):
variable "network_name" {
  type = "string"
  description = "Name of the network this machine should be in"
}

variable "name" {
  type = "string"
  description = "Name of the virtual machine"
}

variable "cores" {
  type = "string"
  description = "Number of cores"
}

variable "memory" {
  type = "string"
  description = "RAM in Megabytes"
}

variable "address" {
  type = "string"
  description = "IP address"
}

variable "os_disk" {
  type = "string"
  description = "Size of the OS disk in bytes"
}

variable "data_disk" {
  type = "string"
  description = "Size of the data disk in bytes"
}

variable "data_disk" {
  type = "string"
  description = "Size of the data disk in bytes"
}

resource "libvirt_volume" "os_disk" {
  name = "${var.name}_os"
  pool = "vg0"
  size = "${var.os_disk}"
}

resource "libvirt_volume" "data_disk" {
  name = "${var.name}_data"
  pool = "data"
  size = "${var.data_disk}"
  format = "qcow2"

  lifecycle {
    prevent_destroy = true
  }
}

resource "libvirt_domain" "domain" {
  name = "${var.name}"

  running   = false
  autostart = false

  disk {
    file = "/home/tyrant/salt-minion-debian-preseed/images/debian-9.5-amd64-CD-1.iso"
  }

  disk {
    volume_id = "${libvirt_volume.os_disk.id}"
  }

  #disk {
  #  volume_id = "${libvirt_volume.data_disk.id}"
  #}

  console {
    type        = "pty"
    target_type = "serial"
    target_port = "0"
  }

  console {
    type        = "pty"
    target_type = "virtio"
    target_port = "1"
  }

  graphics {
    type        = "spice"
    listen_type = "address"
    autoport    = true
  }

  network_interface {
    network_name = "${var.network_name}"
    addresses = ["${var.address}"]
    hostname  = "${var.name}"
  }

  vcpu  = "${var.cores}"
  memory  = "${var.memory}"

  boot_device = {
    dev = ["hd", "cdrom"]
  }
}

Steps to Reproduce Issue

Run terraform apply. This will create the network "default" and a domain called "cloud"
Run sudo virsh net-dumpxml default:

<network>
  <name>default</name>
  <uuid>c0f7fabf-69fc-4499-a3ab-a949925655c3</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:6d:80:38'/>
  <domain name='vm'/>
  <ip family='ipv4' address='<IP_ADDRESS>' prefix='24'>
    <dhcp>
      <range start='<IP_ADDRESS>' end='<IP_ADDRESS>'/>
    </dhcp>
  </ip>
</network>

Run terraform apply again
Run sudo virsh net-dumpxml default again:

<network>
  <name>default</name>
  <uuid>c0f7fabf-69fc-4499-a3ab-a949925655c3</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:6d:80:38'/>
  <domain name='vm'/>
  <ip family='ipv4' address='<IP_ADDRESS>' prefix='24'>
    <dhcp>
      <range start='<IP_ADDRESS>' end='<IP_ADDRESS>'/>
      <host mac='2A:40:25:3F:0E:CE' name='cloud' ip='<IP_ADDRESS>'/>
    </dhcp>
  </ip>
</network>

Observe that the line <host mac='2A:40:25:3F:0E:CE' name='cloud' ip='<IP_ADDRESS>'/> was added at the second run, but not at the first

I expect  to be added on the first run.
This could be related to #389 or #402. I tried adding a dependency on the network to the VM but the result was the same.

Try out the wait for lease param

https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/domain.html.markdown#handling-network-interfaces

I tried that, but it doesn't fix my problem. The  line is still missing, and will only be added when I run terraform apply a second time.

Let me try to make it more clear: The issue is not, that the domain does not get a DHCP lease - it gets one, but not the one I defined. And that's because the  entry is not being added to the network's XML definition. When I run it a second time, it will be added and the domain will get the correct IP and hostname over DHCP.

Ok thx i will check  i dont have terminal now ;)

https://github.com/MalloZup/ceph-open-terrarium/pull/31 I have the feeling this was more o less related to what I experiment there but not sure, need to check

@ghtyrant once you have time can you attach logs with TF_LOG=debug terraform apply? thx

Here you go, sorry for the delay:
net-dumpxml before running terraform apply:
<network>
  <name>default</name>
  <uuid>3706f7f6-ef9b-474b-9cb5-5e4ed926df4e</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:05:53:9d'/>
  <domain name='vm' localOnly='yes'/>
  <ip family='ipv4' address='<IP_ADDRESS>' prefix='24'>
    <dhcp>
      <range start='<IP_ADDRESS>' end='<IP_ADDRESS>'/>
      <host mac='86:6A:9A:00:1A:6B' name='mail' ip='<IP_ADDRESS>'/>
      <host mac='66:D4:98:7F:CE:B1' name='auth' ip='<IP_ADDRESS>'/>
      <host mac='86:A5:DB:1C:78:71' name='git' ip='<IP_ADDRESS>'/>
      <host mac='86:38:60:96:C4:C3' name='web' ip='<IP_ADDRESS>'/>
      <host mac='1A:BA:63:F2:50:35' name='cloud' ip='<IP_ADDRESS>'/>
      <host mac='86:63:2d:10:86:0a' name='database' ip='<IP_ADDRESS>'/>
    </dhcp>
  </ip>
</network>

Terraform output on the first run: https://gist.github.com/ghtyrant/118dca9360596b8807212780fb719c16
net-dumpxml does not change after the first run.
Terraform output on the second run: https://gist.github.com/ghtyrant/3ebc5cb6e522f79ad8fbe4dbd234bb15
net-dumpxml after running terraform apply a second time:
<network>
  <name>default</name>
  <uuid>3706f7f6-ef9b-474b-9cb5-5e4ed926df4e</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:05:53:9d'/>
  <domain name='vm' localOnly='yes'/>
  <ip family='ipv4' address='<IP_ADDRESS>' prefix='24'>
    <dhcp>
      <range start='<IP_ADDRESS>' end='<IP_ADDRESS>'/>
      <host mac='86:6A:9A:00:1A:6B' name='mail' ip='<IP_ADDRESS>'/>
      <host mac='66:D4:98:7F:CE:B1' name='auth' ip='<IP_ADDRESS>'/>
      <host mac='86:A5:DB:1C:78:71' name='git' ip='<IP_ADDRESS>'/>
      <host mac='86:38:60:96:C4:C3' name='web' ip='<IP_ADDRESS>'/>
      <host mac='1A:BA:63:F2:50:35' name='cloud' ip='<IP_ADDRESS>'/>
      <host mac='86:63:2d:10:86:0a' name='database' ip='<IP_ADDRESS>'/>
      <host mac='86:5A:1C:E5:85:4E' name='test' ip='<IP_ADDRESS>'/>
    </dhcp>
  </ip>
</network>

@MalloZup Same issue here. Hosts entries are only created in the second apply (even using the network ID)

I failed to reproduce the issue with this:
provider "libvirt" {
  uri = "qemu:///system"
}

# Default VM Network
resource "libvirt_network" "bah" {
  name = "bah"
  addresses = ["<IP_ADDRESS>/24"]
  domain = "vm"
  bridge = "bah0"
  autostart = true
  dhcp {
    enabled = true
  }
}

The 2nd run of terraform apply says:
ibvirt_network.bah: Refreshing state... (ID: 3024dd47-4bbd-4dd5-9896-96f03f4e906a)

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

and XML dump of the bah network remains exactly the same. @MalloZup So unless I missed something, this can be closed.

closing thx


feat: Add excel export

SUMMARY
Add options to export charts data in xlsx format (similarly to already implemented csv export) with xlsxwriter library. xls export wasn't included in this PR as a legacy format.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
https://user-images.githubusercontent.com/102555782/215083643-f1386f77-76ff-44e1-972f-4da19553affc.mov
TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[x] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[x] Introduces new feature or API
[ ] Removes existing feature or API

Hello, I have some questions:

Is it working on Dashboard? (not only in edit mode)

In what format are pivot tables exported? (raw or pivoted data)

Thank you!

/testenv up

@dpgaspar @villebro Can you review and merge the PR?

Hi @EugeneTorap this is a nice feature, as mentioned here : https://github.com/apache/superset/issues/14415, is it planned to bring excel export to the dashboard?

Hi @mathieudruart! Thanks!
Feel free to open a PR for it.

Hi,
discovered htat on 2.1.0-rc2 it's great.
I would have a question though : how would it be possible to choose a locale to export xls to ?
Meaning decimal separator mainly.
Maybe it's something feasible globally in superset, I didn't find.

may I suggest this
https://github.com/apache/superset/issues/23375

Hello, is it possible to incorporate Excel functionality into SQLab as well? #25863

A PR for that would be awesome/welcomed!

@igorsinc I got the row limit set for the chart was reached. #29409


stuck in installation

after past 4 hours, I'm writing this issue,
when I hit npm install package, installation process stuck in this line and does not past after 4 hours, through this process my CPU worked in 100% power and does not go down for a sec!
windows 10 sdk:10.0.14393.0
c:\users\hossein\desktop\face_me\new\node_modules\native-node-utils\src\Workers.h(33): warning C4996: 'Nan::Callback::C all': was declared deprecated (compiling source file ..\cc\FaceRecognizerNet.cc) [C:\Users\Hossein\Desktop\face_me\new\ node_modules\face-recognition\build\facerec.vcxproj]   C:\Users\Hossein\Desktop\face_me\new\node_modules\nan\nan.h(1618): note: see declaration of 'Nan::Callback::Call' (co   mpiling source file ..\cc\FaceRecognizerNet.cc)   c:\users\hossein\desktop\face_me\new\node_modules\native-node-utils\src\Workers.h(30): note: while compiling class te   mplate member function 'void GenericAsyncWorker<FaceRecognizerNet::ComputeFaceDescriptorWorkerRGB>::HandleErrorCallba   ck(void)' (compiling source file ..\cc\FaceRecognizerNet.cc)   ..\cc\FaceRecognizerNet.cc(82): note: see reference to class template instantiation 'GenericAsyncWorker<FaceRecognize   rNet::ComputeFaceDescriptorWorkerRGB>' being compiled c:\users\hossein\desktop\face_me\new\node_modules\native-node-utils\src\Workers.h(27): warning C4996: 'Nan::Callback::C all': was declared deprecated (compiling source file ..\cc\FaceRecognizerNet.cc) [C:\Users\Hossein\Desktop\face_me\new\ node_modules\face-recognition\build\facerec.vcxproj]   C:\Users\Hossein\Desktop\face_me\new\node_modules\nan\nan.h(1618): note: see declaration of 'Nan::Callback::Call' (co   mpiling source file ..\cc\FaceRecognizerNet.cc)   c:\users\hossein\desktop\face_me\new\node_modules\native-node-utils\src\Workers.h(24): note: while compiling class te   mplate member function 'void GenericAsyncWorker<FaceRecognizerNet::ComputeFaceDescriptorWorkerRGB>::HandleOKCallback(   void)' (compiling source file ..\cc\FaceRecognizerNet.cc)
what's the problem?

Looks like the compiler hung up your cpu while compiling the dnn module of dlib. I guess you tried to compile it again and still running into this issue?


Fix EscapeAnalysis verification assert at unreachable blocks

If EscapeAnalysis verification runs on unreachable code, it asserts
with "Missing escape connection graph mapping" because the connection
graph builder only runs on reachable blocks.
Add a ReachableBlocks utility and use it during verification.
Fixes rdar://problem/60373501 EscapeAnalysis crashes with CFG with
unreachable blocks

@swift-ci test

Build failed
Swift Test Linux Platform
Git Sha - cd67d0c64f5cd8b05d4290bb100ef29f6af8690a

@swift-ci smoke test linux

@swift-ci smoke test


FIX - Add cluster - password is not masked

Open for https://github.com/apache/cloudstack-primate/issues/612
@rhtyd cc @svenvogel I've completed fixed. Please review it. Thanks.

@blueorangutan package

@davidjumani a Jenkins job has been kicked to build primate packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark:centos :heavy_check_mark:debian :heavy_check_mark:archive.
QA: http://primate-qa.cloudstack.cloud:8080/client/pr/613 (JID-3367)

@blueorangutan package

@utchoang a Jenkins job has been kicked to build primate packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark:centos :heavy_check_mark:debian :heavy_check_mark:archive.
QA: http://primate-qa.cloudstack.cloud:8080/client/pr/613 (JID-3370)


Mathematical symbols and equations are not shown correctly in the search results

Bug Report
Description
The search results do not display mathematical symbols and equations correctly.
Steps to Reproduce
Steps to reproduce the behaviour:

Search for "matrix"
Look at the results
See error

Screenshots

Environment
Tested on newest Firefox and Chrome.
For Algorithm Archive Developers

[x] The bug can be reproduced
[ ] The bug can be fixed (if not, please explain why not in a comment below)
[ ] There is a timeline to fix the bug
[ ] The bug has been fixed (Please link the PR)

Hi. I would like to work on this.


docs(md): add prismjs usage

How to enable the highlight option on md plugin
PR Checklist
Please check if your PR fulfills the following requirements:

[x ] The commit message follows our guidelines: https://github.com/scullyio/scully/blob/main/CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[ x] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ x] Other... Please describe:
improve docs for md plugin.

What is the current behavior?
md plugin page without detailed description
Issue Number: N/A
What is the new behavior?
add description on how to use the highlight option.
Does this PR introduce a breaking change?

[ ] Yes
[x ] No

Other information

seems i missing something
 > 18 |         expect(replace).toMatchSnapshot();

i did a quick mod on GitHub


JBMETA-403 - fix invalid schema jbxb_1_0.xsd

Signed-off-by: Rob Stryker<EMAIL_ADDRESS>

You need a version bump since this file has already been released


Add providers configuration.

Q
A

Is bugfix?
❌

New feature?
❌

Breaks BC?
❌

Fixed issues
-

Reason: when use yii-console in app without providers-console configuration throws exception:
Fatal error: Uncaught Error: Failed opening required '.../runtime/config/console/providers-console.php' (include_path='.') in ...\vendor\yiisoft\yii-console\bin\yii:70

Just remove providers-console from composer.json in your app.

Just remove providers-console from composer.json in your app.


Add a guideline that recommends against using Positional Parameters in cmdlets

Using positional parameters instead of named parameters in most cases reduces code readability and is recommended against in most cases (e.g. https://blogs.technet.microsoft.com/heyscriptingguy/2012/04/22/the-problem-with-powershell-positional-parameters/).
I did not see a policy in the StyleGuidelines.md document against using positional parameters, but I think there should be one - e.g. don't use positional parameters (always use named parameters). PSScriptAnalyzer will also throw warnings against against this as well.

:+1: - Maybe add something to PSScriptAnalyzer as a warning or informational or something?

That is a good idea. I know there is a PSSCriptAnalyzer informational rule for this already, but at the moment the meta.tests.ps1 is configured to only run Error rules.

I'd thought there was some proposal to have meta.tests.ps1 run to fail warnings as well? Could be mis-remembering something.

Oh, you might well be right. I think I recall it being mentioned as well. Perhaps it is something worth logging?
Slightly off topic: I did a quick (well, it takes about 20 minutes) PSSCriptAnalyzer run with warning level output on the xNetworking repo to see what currently comes up and there are a lot of things showing up. We'll want to do a few tests on existing resource modules before going to far down that path.

The plan is to enable warnings for PSSA as well, so this will be covered, but we need to resolve them first as enabling now would cause most of test passes to fail.
Regarding temporary solution, please add the rule to StyleGuidelines.md

I figured. :grin: Unfortunately I don't have WMF 5.0 on my normal workstation so I haven't had time to dive that far into PSScriptAnyalzer.

@tysonjhayes PSScriptAnalyzer is supported from v3 as from the latest release (in case you didn't know)
You can install from Github or you can install the PackageManagement modules - details are in this blog post http://bit.ly/PSPackManBlog which includes a 1 liner to actually install it - and then install from the Gallery.

True, that will also allow us to enable PSSA runs on all other repos where they are currently disabled without moving them to WMF5 test VMs

@kilasuit - I was aware we were workign on it, not that we'd released it. Thanks for the tip!

@tysonjhayes No Problem - luckily PSScriptAnalyzer is one of those Repos that I follow almost religiously because I believe that it is a key component to making the PowerShell EcoSystem Sustainable in future. That and Pester & all the DSCResources Repos

@KarolKaczmarek - I'll submit a PR for the StyleGuidelines.md change.
Regarding the PSSA warning level change, should I open an issue so it can be discussed further? I've done a few tests on the xNetworking repo and running PSSA on warning level and there are definitely a number of tests that don't make sense to run against DSC resources.

@PlagueHO Sure, open issue and we can discuss it there. We may need to come up with specific set of rules we want to run across all DscResources as as you've noticed not all of them may make sense for us - please mention the ones you think we shouldn't run to get it started.

@KarolKaczmarek - will do. I'll add it to the DSCResources.Tests repo though as that is where the change will be made.

Guideline to use named parameters instead of positional parameters has been included in the Best Practices document. (And it's also still in the style guidelines as well.) The PSSA rule severity list for the DSC Resource Kit has also now been posted.


man page

I loved online documentation pages, but I still stumbled configuring way-cooler because it's missing man page.
Maybe it's just me but for example I didn't find a way to get screenshot working  even though I'm aware of the work done in #278. (Sorted out: I'm using scrot instead of  way-cooler-grab 🤦)
Anyway in my opinion man page lack pushes away beginners from this awesome WM.

Thanks for the insight! I've been meaning to write man pages, especially ones that can be generated from eg markdown and hosted on the site as well (so you can have man pages for offline documentation, and the same documentation on the website).
Unfortunately I don't really have the time for that right now, especially as I don't know the man page format. I'm pretty busy right now trying to add am awesomeWM compatibility layer to Way Cooler.
If you, or anyone else, is willing to write documentation though I will happily assist on any questions you have and any pull requests you open to include it. Feel free to ping me on the gitter chat if you need any help.

Do you find the man pages satisfactory? If not, what would you have more detailed?

Ah just didn't realize this wasn't closed automatically.
Feel free to add a "fixes #<issue_number>" in your future PRs that actually fix said issue.

I did, I think you overlooked it? It is in the PR's description


AzTS Setup - PowerShell ConstrainedLanguage restriction

AzTS setup scripts require PowerShell's FullLanguage mode to run and hence they are should be added as a preqrequisite for AzTS setup in the documentation.

Prerequisite added in documentation.


Refactor should not call finalize in const functions

finalize may change the inner data structure in ColumnObject, and lead to heap use after free in some scenario
Proposed changes
Issue Number: close #xxx

run buildall

run buildall


Don't show settings in admin interface which are not connected

As a PLATFORM ADMINISTRATOR I want to see only options that I can use. This is good for general usability, but also for troubleshooting - I don't want to spend time troubleshooting my input on a feature which is not connected.
As a IoGT SOFTWARE DEVELOPER I want to see these options so that I can troubleshoot them during development. <- seems right to me
Maybe this is done as a permissions setting, where standard admins don't see these settings options.
Some examples I see now (please correct me if I'm mistaken):

[x] Editing Flat Menu > Color
[x] Editing Flat Menu > Color text
[ ] Editing Flat Menu > Header

Check more areas where settings are not connected

Icons on quizzes, polls, and surveys should either be added back into the front-end display when embedded or removed from the CMS as an option for data collection tools.

Survey/poll/quiz icons are used if the s/p/q is used as a footer (either directly or via a PageLinkPage).

@cbunicef These settings are not connected in admin panel.
Site Settings:

Show only translated pages
Fb analytics app id
Social media links
Social media content sharing button
Allow anonymous comment

Flat Menu Settings:

Heading

Show only translated pages

My understanding is that we do this all the time right? But there is no option to turn it off?


[Bug] The node can stall while syncing blocks

🐛 Bug Report
I'm not sure this is strictly sync-related, but I observed this while syncing blocks with a regular node with ~100 peers:
Aug 11 11:23:39.259  INFO Received block from <peer 1> of epoch<PHONE_NUMBER> with hash 44457d6b1953ebce125621b11c9e7f228d0d32f4755ce641fa5a1086b4d9311a (current head 24036)
Aug 11 11:23:43.062  INFO Updating peers
Aug 11 11:23:43.062  INFO Connected to 103 peers
Aug 11 11:23:43.401  WARN unrecoverable failure communicating to inbound peer '<peer 2>': 'Io(Kind(UnexpectedEof))'
Aug 11 11:23:44.496  WARN did not receive block 1/8 'e1be3133178d467a316ee1e4927a0b3fd299da62b62815173b3abad11517034d' by deadline for sync from <peer 3>
Aug 11 11:23:44.496  WARN did not receive block 2/8 '092134fddb052fe33f4a6931646520828e9b2accbf8ea2dc568b9f2d64c53823' by deadline for sync from <peer 4>
Aug 11 11:23:44.496  WARN did not receive block 3/8 '0756e71c32e8ccbcf6ad1f7ca47cf64cbc09ad142eed05a0b2242a5597d139ed' by deadline for sync from <peer 5>
Aug 11 11:23:44.496  WARN did not receive block 4/8 '8ec6953cbdb93d254d5b24152842a46eb5a8543ac5070771f38a8902bac7c728' by deadline for sync from <peer 6>
Aug 11 11:23:44.496  WARN did not receive block 5/8 'e1bed543e4a63369e7167acf927fb5ce504b69d76907456af5036d21a43ff535' by deadline for sync from <peer 7>
Aug 11 11:23:44.496  WARN did not receive block 6/8 '26025434160fbc9863f78869d7331c5c98534470d4ce1737ddb2a4be3d23c9df' by deadline for sync from <peer 8>
Aug 11 11:23:44.496  WARN did not receive block 7/8 '20470d8e5b5f0cdaddfa5901b0fb3b8605289ef71328ac817782ae9b0a9baf2c' by deadline for sync from <peer 9>
Aug 11 11:23:46.325  WARN unrecoverable failure communicating to outbound peer '<peer 10>': 'Io(Kind(UnexpectedEof))'
Aug 11 11:23:47.867  WARN unrecoverable failure communicating to outbound peer '<peer 3>': 'Io(Kind(UnexpectedEof))'
Aug 11 11:23:58.164  INFO Updating peers
Aug 11 11:23:58.164  INFO Connected to 100 peers
Aug 11 11:23:59.028  INFO Connected to peer <peer 2>
Aug 11 11:24:05.864  INFO Connected to peer <peer 11>
Aug 11 11:24:13.267  INFO Updating peers
Aug 11 11:24:13.267  INFO Connected to 102 peers
Aug 11 11:24:26.421  INFO Connected to peer <peer 12>
Aug 11 11:24:28.369  INFO Updating peers
Aug 11 11:24:28.369  INFO Connected to 103 peers
Aug 11 11:24:43.471  INFO Updating peers
Aug 11 11:24:43.471  INFO Connected to 103 peers
Aug 11 11:24:58.573  INFO Updating peers
Aug 11 11:24:58.573  INFO Connected to 103 peers
Aug 11 11:25:13.675  INFO Updating peers
Aug 11 11:25:13.675  INFO Connected to 103 peers
Aug 11 11:25:28.777  INFO Updating peers
Aug 11 11:25:28.777  INFO Connected to 103 peers
Aug 11 11:25:43.879  INFO Updating peers
Aug 11 11:25:43.880  INFO Connected to 103 peers

The node was stalled like this for a few minutes, after which it just recovered:

was this node a miner? worried about cpu starvation

no, this one was a plain node

I haven't encountered this in a while now; marking the issue as likely fixed; also, closing in favor of https://github.com/AleoHQ/snarkOS/issues/1066 which describes the same problem.


Bug/msft lod extension used

At the moment the MSFT_lod extension is only registered with the nodes and materials that use it. But the model itself does not expose it as a used extension. Add MSFT_lod to the model's extensionsUsed, if one or more nodes/materials employ MSFT_lod.

Good find! Thanks for PR! Merged!


[Bug]: "Access has been blocked by Conditional Access policies. The access policy does not allow token issuance."

This issuance is not about a bug in the application, but as an issue I'm having in my specific use case. It must be an error on my side and something I'm not doing right.
I was installing Monkey365 for the first time and trying to use it against a test M365 account, NOT on Azure. The user has Global Reader for Microsoft 365 tenant, not on Azure. This user does not have access to any Azure service.
When I try to authenticate using Monkey365, I get an authentication error, stating the Sign-in was successful but there are no sufficient permissions.

Client PC running Monkey365: Windows 10 Pro VM
Permissions on user: Microsoft 365 only, Global reader & Security reader
Versions: Latest Powershell and latest Monkey365 (I just installed it from Main branch on 22 Nov)

The Monkey365 Docs does not state additional permissions, Conditional Access allowance, etc. That I should kick the tires on before I use it.
Monkey365 states that users can audit Microsoft 365 OR Azure. That's why I think I should be able authenticate and review a Microsoft 365 Tenant without the need for any Azure authentication, but Monkey365 is using Azure Powershell (Image no. 3)

Image 1: Screenshot for Monkey365 authentication & Error:

Image 2: Upon reviewing the alerts in the Microsoft Console (Admin center), I see the following marker, which is interesting:

Image 3: Full error log on Authentication error:

Hi @Argandov thanks for submitting this.
It's not a bug, and it's more about conditional access issues with your tenant.
Firstly, and according to the error message, it seems that you are trying to pass all option to the -Analysis flag. Please, note that the All option is not available yet in Microsoft 365 scans.
Secondly, Azure AD authentication (Graph and MSGraph APIs) is mandatory in order to get information about your Tenant, so this is by design. If your tenant is configured with Conditional Access policies targeting these applications (i.e. Azure AD), your user should be part of allowed groups or should be excluded from these policies.
And finally, documentation about Conditional Access was not included in document because It's obvious that you must know that the user must be created before a role and/or conditional access policies can be assigned to him. So, if conditional access policies are in place, your user should be part of allowed groups or should be excluded from these policies in order to be allowed to sign into isolated portals.
Please, read the Microsoft 365 options, as well as the basic usage sections in docs.
As an example, and if your user is allowed to login into Azure Ad and SharePoint online, the following command will work
$asset = Invoke-Monkey365 -ExportTo PRINT -PromptBehavior SelectAccount -Instance Microsoft365 -Analysis SharepointOnline
Hope that helps.
Cheers,

Hi, Thank you for your response. I'll try to address your comments one by one

For the "All" flag, yes, I made the mistake of sharing the wrong Powershell screenshot (Please ignore what flags and errors I get in Monkey365)
Is it mandatory that my user being allowed to log into Azure AD? This user's scope is only for Microsoft 365 (At the moment I am testing the M365 scanning functionality of Monkey, not on Azure - That comes later). This is the first time I work with Microsoft 365 through Powershell, so I am getting familiar with the process. This user can access the Web UI for Office, Admin Center, Purview, etc. But NO Azure (This was on purpose). So, according to the Monkey 365 Docs, I should be able to audit exclusively M365 environment with no need for an Azure permission, since they are sepparate (That is what I understand from the docs).

What am I missing or doing wrong?
I will check out the CAPs tonight

So I just checked on my CAPs and there are none that wouldn't allow this dummy user to access anything. What else should I check?
Maybe this issue can help document in a little bit more detailed way how Monkey365 operates?

Hi @Argandov and @JArmandoG,
As far as I can see from your comments, I think that you might have misunderstood some concepts. Microsoft 365 uses Azure AD to manage all identities. This is by design and this is how Microsoft 365 has always worked. Please see the Microsoft docs about how Azure AD integrates with Microsoft 365.
On the other hand, probably you both both don't know which policy is blocking you, since it's not specified in the error message. So in order to get more details, you should go to your Azure AD and check the policy:

Go to Sign-in Logs blade (https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/SignIns)
Search for failed logon attempts, or filter by your username
Click on the failed log-in request and click on Conditional Access to see which policies have been applied
The Policies that have as a result Failure and Grant Controls set on Block are the ones that are preventing the user from login successfully

See example below:

Hope that helps,
Cheers

Hi @silverhack thank you so much for your detailed response! 🙏 I will be working on this! I'm still learning the Microsoft universe

I fixed this on my side, and now I get a new error because my user, although has access to the web consoles, has no active subscriptions. Is there an option for using Monkey365 with something similar to the --allow-no-subscriptions in the Azure-cli?

Hey @Argandov happy to see you fixed it :D
Regarding your question, the -IncludeAzureActiveDirectory flag in Monkey365 will do the trick. The following command can be used to scan an Azure AD tenant with an user with no active subscriptions assigned:
Invoke-Monkey365 -ExportTo CSV -PromptBehavior SelectAccount -IncludeAzureActiveDirectory
Cheers,

As you can see, I'm testing Monkey 365 for 2 different, desired scenarios in my use case:

Azure CIS Benchmark compliance
Microsoft 365 CIS Benchmark compliance


#gradient > .radial broken

The mixin parameter names is are @innerColor and @outerColor, but the body refers to @centerColor and @outsideColor.

Resolved, thanks!


Fix #313 - glutInit to allow LCMGL text rendering

Pat, thanks for the prompt response and fix - this worked :)
Resolves #313

Closing this PR as it can otherwise sometimes lead to freeglut (director): illegal glutInit() reinitialization attempt - the fix needs to be more elaborate/careful than this

The issue is that lcmgl is mostly self contained without any dependencies, until you try to render text.  For text rendering, the lcmgl-renderer library uses glut, and it expects glut to be initialized.  I would assume it's possible to do this safely, but I've never really looked at how.

If you want, I'd be fine with adding this code, but leave it commented out, so that future users can uncomment and use at their own risk.
was the problem just that the glutInit call was being triggered twice?  You could put a static bool to prevent that from happening.

In case it's helpful, I've used this type of code to deal with a library that needed to be initialized exactly once on startup and freed exactly once on shutdown:
namespace {
  struct cdd_global_constants_initializer {
    cdd_global_constants_initializer() {
      dd_set_global_constants();
      std::cout << "Loading cdd global constants" << std::endl;
    }
    ~cdd_global_constants_initializer() {
      std::cout << "Freeing cdd global constants" << std::endl;
      dd_free_global_constants();
    }
  };
  static cdd_global_constants_initializer cdd_init;
}


New Crowdin updates

WOAH @onein528 Multilingual App Toolkit works??

WOAH @onein528 Multilingual App Toolkit works??

No, added en-us manually and crowd in automatically added others.

WOAH @onein528 Multilingual App Toolkit works??

@DeveloperWOW64 No, added en-us manually and crowdin in automatically added others.

So how will you be able to actually use the resources?

Using resource extension. I will add few resources for example.


(Generated?) Unit tests

Here's a request to see if we can maybe add automated unit tests (not necessarily added to gh pipeline yet) to test the generated code with some test framework (I'm not sure what EVerest is used to. I use a lot of GTest, but its build times leave something to be desired).
The proposal is to:

Have a script that builds the library cbv2g
Have a bunch of unit tests (in C, C++ or python) to test the generated code. ie:

Encode specific messages and compare to a known good output
Decode a known stream and check the fields
Encode then decode and compare the input and output

The last type may even be generated by the generator (a procedure that sets a default value in each field and a test that generates the test.

I may want to work on this if you guys think this is a good idea (you'd be able to enable/disable the generation of these tests of course, not running existing ones would also make that optional)
Also do tell what test framework you'd like me to use. I know GTest, but I love to learn something new too.

Since I also had the idea, I think it's generally a good idea.
But I don't know if the cbexigen repo is the right repo for it. Because the c code has to be generated every time.
My plan was to open another repo in EVerest with the generated cbexigen code. And to create a library "libexi" from it, which can then use e.g. the libiso15118 lib or the EvseV2G module. That's where I would see the unit tests.
In Everest we have not decided on a single unit testing framework. Some use Gtest, I use catch2 for the unit tests in libiso15118. So use the test framework that makes the most sense for you.

I don't really see the issue with re-generating the code every time. We can consider it another build step.
Keeping the code "as is" to me is like keeping a binary in the repo, the C code is supposed to be the product of the build step, in my opinion, like a binary executable is.
The code in the other repo would go out of date with every commit, adding a step of updating that repo every time this repo is updated. I think that's not ideal.
What these tests should be testing is:

Is the code still generating without errors?
Can this code build?
Did the API change? (may be fine, but we should know and a build error will tell us that)
Does the generated code do what we expect?
This test script can be used as reference to how to use this repo (config, generate, use)

If we put the generated code in another repo we can't test the first test automatically, it all involves manual effort.
So I do see a lot of advantages to at least link the tests directly to this repo.  This can be as a submodule of the test repo and still have those tests generate the schemas, but again, that's extra effort to update the submodule every time.
Or am I missing something? Or outright wrong 😐

There were also no objections from the EVerest Car<->Charger Communication WG. I'm looking forward to your PR(s) :smiley:


utf8.decoder errors

Hi @hagyao520
from the error you posted seems quite self-explanatory,
try passing the right type of object in the stream transformer.
This platform is not met for assistance on personal code,
please see https://flutter.dev/community for resources for asking questions like this,
you may also get some help if you post it on Stack Overflow.
Closing, as this isn't an issue with Flutter itself,
if you disagree please write in the comments and I will reopen it.
Please refrain from posting pictures if not necessary.
Thank you

After updating the version, the utf8.decoder method reports an error

Hi @hagyao520
could you please provide your updated  flutter doctor -v
and your flutter run --verbose ?
Also, to better address the issue, would be helpful
if you could post a minimal code sample to reproduce the problem
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact descriptions what happens, logs and the output of 'flutter doctor -v'  please.
All system setups can be slightly different so its always better to open new issues and reference related issues.


[stable/spinnaker] Chart fails to render with or without encryptedKubeConfig

Describe the bug
A clear and concise description of what the bug is.
When running a helm install of the stable/spinnaker template with a provided values.yaml the install fails in rendering dude to some problem with encryptedKubeconfig and the spinnaker.kubeconfig helper function.

Error: render error in "spinnaker/templates/configmap/halyard-config.yaml": template: spinnaker/templates/_helpers.tpl:63:14: executing "spinnaker.kubeconfig" at <.Values.kubeconfig.encryptedKubeconfig>: nil pointer evaluating interface {}.encryptedKubeconfig

Version of Helm and Kubernetes:
Helm: 2.14.3
Kubernetes 1.14
Which chart:
[stable/spinnaker]
What happened:
I am trying to install the helm chart using my values.yaml, and whether I try to use an Encrypted S3 bucket or Kube Secrets I get the same error.

Error: render error in "spinnaker/templates/configmap/halyard-config.yaml": template: spinnaker/templates/_helpers.tpl:63:14: executing "spinnaker.kubeconfig" at <.Values.kubeconfig.encryptedKubeconfig>: nil pointer evaluating interface {}.encryptedKubeconfig

What you expected to happen:
Spinnaker to install with the expected behavior based on inputs from values.yaml
How to reproduce it (as minimally and precisely as possible):
helm upgrade --install --namespace ci --values values.yaml --wait spinnaker stable/spinnaker with kubeconfig.enabled: true
Anything else we need to know:

Hi @jzangari ,
I got the same issue because of values.yaml file having kubeConfig instead of kubeconfig as it is available in the helm template. I changed the values.yaml file to kubeconfig and it worked. Please check if that is the issue.

Hi @johnsonvino, if you change this variable, it will be ignored and will not fall into configMap/halyard-config

Hi @EricLemieux, if I understand correctly, then these changes lead to the error above.
https://github.com/helm/charts/commit/2f4d58c751239796b12e0ff7e90a85ee94cdfa3d

Fix: https://github.com/helm/charts/commit/2f4d58c751239796b12e0ff7e90a85ee94cdfa3d


JSX indentation

I'm not sure if this changed in the most recent update or what.  It had been working.  But I'm getting inconsistent indentation in return statements now:

I'm expecting an else clause on the second return shown above. It's never worked without an explicit else as a means of resetting the language indentation.

Ahhh, yes.  Ok, thanks.

Is this case something you want supported?

I actually put the else back in and that's fine with me.  I could see it coming up in some other case though.

Yeah!  I've actually just made a commit https://github.com/gandm/language-babel/commit/01db126882dac7fb9cb023d72859588d5c39f296 with a change to support this. Not sure when I'll publish as I know people get annoyed when I update frequently.

:-)
(FWIW, frequent updates don't bother me...)


How do I handle the first message sent to installing user on successful install?

Issue: I am unclear on how to send the first message to a user on a successful installation. The end goal would be, upon successful OAuth installation of an App build with bolt-python, a private chat message would be sent to the installing users describing the first steps with the app.
Reproducible effect desired with the following snippet of example code:
pip install slack_bolt
export SLACK_SIGNING_SECRET=***
export SLACK_CLIENT_ID=111.111
export SLACK_CLIENT_SECRET=***
export SLACK_SCOPES=app_mentions:read,channels:history,im:history,chat:write
python oauth_app.py

The slack_bolt version
slack-bolt==1.0.1
Python runtime version
Python 3.8.6
OS info
ProductName:	Mac OS X
ProductVersion: 10.15.7
Steps to reproduce:

Run the oauth_app.py example script.

Expected result:
The desired outcome is a message sent to installing user on successful installation through OAuth. That is, once the app is installed and the user sees the 'Thank you! Redirecting to the Slack App... click here' screen... how can I send that first message to them?
Actual result:
DM between installing user and App opens.
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Hi @korymath, thanks for asking a question (and thanks a lot for your contribution at #163 )!
You can use oauth_settings.callback_options.success for this. See this example for details: https://github.com/slackapi/bolt-python/blob/v1.0.1/examples/oauth_app_settings.py#L20-L45

Thank you for the very fast reply; #163 was the least I could do.
bolt-python has made building these sorts of interactions so fun and easy. Thank you for the incredible scaffolding. I feel like I am standing on the shoulders of giants! Great work on the libraries.
I think that I understand. So, once I call the success callback, then I can Do anything...™  ... which is great. This sounds exactly like what I want.
But, I am not clear what I have access to in that callback? I assume that because this is not one of the events, then I do not have the conventional client or other args that I have gotten used to having access to?
Does this mean I will need to parse that manually and then build a Web API call manually? (Sorry if these terms that not right... I am still learning)

args.request.context provides most of them! Here is an example to send DM to the user who installed your app. That being said, the installation is not happening in a Slack channel (in other words, even not inside Slack). So, the methods like say(), respond(), and so on are not available. Also, the client does not hold a valid bot token yet. To perform Web API calls here, you need to use the token in the args.installation object.
def success(args: SuccessArgs) -> BoltResponse:
    installation = args.installation
    client = args.request.context.client
    try:
        client.chat_postMessage(
            token=installation.bot_token, # Use the token you just got from oauth.v2.access API response
            channel=installation.user_id,  # Only with chat.postMessage API, you can use user_id here
            text="Thanks for installing this app!"
        )
        return args.default.success(args)
    except SlackApiError as e:
        # TODO error handling


Feature Request: Clean specific rooms / zones

Due to the layout of my home, I typically clean one or a subset of rooms at a time, and recently Roomba has added "Clean Zones" that you can target as well.
It'd be cool if rooms and zones could appear as individual switches to clean, allowing us to either clean the whole home or one specific zone.

Not sure how tricky it is to list the rooms and dynamically add switches, but at least for rooms this seems possible with the node API: https://github.com/koalazak/dorita980#cleanRoom
Looks like "Clean Zones" aren't supported yet, but it's also in beta so may take some time.

Agreed.   The coolest feature i would see for now from what's suggested out there.  As a 2nd suggestion maybe make the rooms parameters in the HB config settings.

Please add Clean specific rooms / zones feature. It take 3 house to clean the whole house, without specific room feature then this plugin is bit unrealistic.

+1
In order to remove the opportunity to use the app this is a valid feature for the newer models (s7, s9).
From my perspective, I only use the app for instructing the Roomba to clean specific rooms at certain times or situations during the day.

On Oct 13, 2020, at 3:09 PM, wallacepost<EMAIL_ADDRESS>wrote:
Please add Clean specific rooms / zones feature. It take 3 house to clean the whole house, without specific room feature then this plugin is bit unrealistic.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/stvmallen/homebridge-roomba-stv/issues/65#issuecomment-707979561, or unsubscribe https://github.com/notifications/unsubscribe-auth/APK2HVW42UH6BQT6TJ4JXUDSKSXXLANCNFSM4OVA6PYQ.


Other outdated links

"If you're not already there, [select a restore point](#restore-a vm-with-special-network-configurations) before you begin to create a new VM from a restore point."
This link is not created properly.
"c. Create a VM with multiple NICs.
d. Create a VM with multiple reserved IPs."
The two links here (bottom of the page) point to classic VM docs - is that intended?

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

ID: 66081bde-1e22-dd9c-8357-a0485b23b0a7
Version Independent ID: eb2a52a5-d290-84fb-c3fe-2a5d8512669a
Content: Azure Backup: Restore virtual machines by using the Azure portal
Content Source: articles/backup/backup-azure-arm-restore-vms.md
Service: backup
GitHub Login: @GeethalakshmiG
Microsoft Alias: geg

Thanks for the feedback! We are currently investigating and will update you shortly.

@dcbrown16 Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

Thanks for your feedback!
This is now fixed
#please-close


Documentation for Multiplatform support.

We are developing a mobile application and for now, we face an issue with supporting web application in production. We need in suitable project structure to support both applications in one project. It should be flexible for different functionality/layout, reduce as much as possible code duplication and mobile build size.
We should change some screens, replace packages which don't support web application ( local notifications, using camera so on).
We investigate this issue and have several ideas:

Use 2 different projects
Use platform checks in the existing project
Use modules

We still in the process of finding the appropriate solution. It would be great if you send us some suggestions regarding this issue and an example of the Project with the similar structure.

I am not sure if this is the right place to ask for suggestions. If you are requesting documentation, you can checkout this medium article

Hi @AndrewVasilevskii
Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you

@TahaTesser
Hello, thanks for fast response. This question is very critical for us right now. We want to receive the advice from the Flutter-team, how to construct application supporting mobile and web platform with less code duplication.
How i see these problem, that the community needs the real example in case of platforms flows differ and logic too. Could you provide maybe emails of Flutter-devs to answer them through mails and so on?

Hi @AndrewVasilevskii
It really depends on your project and requirements. Requires experimentation from your side


Fix for gray

fix tunable.py for gray image with dim of (H, W) and add example for testing.

@ojh6404

I think the example file is not working. Please check if example code is working. (why do you use  /tmp/... dir??)
you deleted ./example directory. Please recover the directory and put the renamed example script file inside that directory.
in your example, in your example, instead of writing if-else conditioning two times depending on if gray or not, you could determines the type of the filter in the beggining of the script depending on gray or not. like:

filter_type = BlurCropResolFilter if gray else HSVBlurCropResolFilter

and now that you could write  as follows without if-else conditioning:
...
tunable = filter_type.from_image(img)
...
f = filter_type.from_yaml(yaml_file_path)
...


How to increase the max paths to avoid the OSError: [Errno 5] 500 request size exceeded, max paths is set to 1000

What happened?
I have been trying to use LakeFS in conjunction with Xarray and Zarr, but I'm getting the following error when I try to write a Zarr file with many chunks:
OSError: [Errno 5] 500 request size exceeded, max paths is set to 1000.
I would like to know how can I drop that limitation, I need it to be able to write Zarr files with many chunks (every chunk is an individual file).
Additionally, I would like to know if you think that LakeFS is a good option to use with Zarr. I'm asking this because this format can create many files to represent a single Array. In my particular case I have more than 300 data fields and all of them have more than 10K chunks which is equivalent to 10K files, so I'm not sure if it can affect the performance of LakeFS.
import xarray as xr
import dask.array as da

from lakefs_spec import LakeFSFileSystem

lfs = LakeFSFileSystem(
    host="<IP_ADDRESS>:8000",
    username="AKIAIOSFOLQUICKSTART",
    password="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
    access_key_id="AKIAIOSFOLQUICKSTART",
    secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
    # endpoint_url="http://<IP_ADDRESS>:8000",
    use_listings_cache=False
)

for folder in ["test-zarr", "test-zarr"]:
    # The first execution is going to work
    path = f"lakefs://quickstart/main/{folder}"
    print(path)
    arr = da.zeros(shape=(100, 30), chunks=(2, 1))
    arr = xr.DataArray(
        arr,
        dims=["a", "b"],
        coords={
            "a": list(range(arr.shape[0])),
            "b": list(range(arr.shape[1]))
        }
    ).to_dataset(name="data")

    fs_map = fsspec.FSMap(root=path, fs=lfs)

    # The error comes when it tries to clean the whole directory to rewrite the data
    arr.to_zarr(fs_map, mode="w")

    print(xr.open_zarr(fs_map).compute())

I deployed LakeFS using the quickstart docker command:
docker run --name lakefs --pull always --rm --publish 8000:8000 treeverse/lakefs:latest run --quickstart
What did you expect to happen?
I would expect that there is an env variable that allows to modify the max_paths to drop the limitation on the number of requests.
lakeFS-spec version
0.9.0
lakeFS version
1.28.2

Thanks for the report. Could you share a stack trace or something similar? Just to be sure that this is a limitation on our end (I'm a bit skeptical because of the OSError tbh).

Hi Thanks for your reply, here is the complete traceback:
---------------------------------------------------------------------------
ServiceException                          Traceback (most recent call last)
File ~\.conda\envs\tensordb\Lib\site-packages\lakefs\exceptions.py:141, in api_exception_handler(custom_handler)
    140 try:
--> 141     yield
    142 except lakefs_sdk.ApiException as e:

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs\branch.py:90, in _BaseBranch.delete_objects(self, object_paths)
     89 with api_exception_handler():
---> 90     return self._client.sdk_client.objects_api.delete_objects(
     91         self._repo_id,
     92         self._id,
     93         lakefs_sdk.PathList(paths=object_paths)
     94     )

File ~\.conda\envs\tensordb\Lib\site-packages\pydantic\v1\decorator.py:40, in validate_arguments.<locals>.validate.<locals>.wrapper_function(*args, **kwargs)
     38 @wraps(_func)
     39 def wrapper_function(*args: Any, **kwargs: Any) -> Any:
---> 40     return vd.call(*args, **kwargs)

File ~\.conda\envs\tensordb\Lib\site-packages\pydantic\v1\decorator.py:134, in ValidatedFunction.call(self, *args, **kwargs)
    133 m = self.init_model_instance(*args, **kwargs)
--> 134 return self.execute(m)

File ~\.conda\envs\tensordb\Lib\site-packages\pydantic\v1\decorator.py:206, in ValidatedFunction.execute(self, m)
    205 else:
--> 206     return self.raw_function(**d, **var_kwargs)

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\api\objects_api.py:424, in ObjectsApi.delete_objects(self, repository, branch, path_list, force, **kwargs)
    423     raise ValueError("Error! Please call the delete_objects_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data")
--> 424 return self.delete_objects_with_http_info(repository, branch, path_list, force, **kwargs)

File ~\.conda\envs\tensordb\Lib\site-packages\pydantic\v1\decorator.py:40, in validate_arguments.<locals>.validate.<locals>.wrapper_function(*args, **kwargs)
     38 @wraps(_func)
     39 def wrapper_function(*args: Any, **kwargs: Any) -> Any:
---> 40     return vd.call(*args, **kwargs)

File ~\.conda\envs\tensordb\Lib\site-packages\pydantic\v1\decorator.py:134, in ValidatedFunction.call(self, *args, **kwargs)
    133 m = self.init_model_instance(*args, **kwargs)
--> 134 return self.execute(m)

File ~\.conda\envs\tensordb\Lib\site-packages\pydantic\v1\decorator.py:206, in ValidatedFunction.execute(self, m)
    205 else:
--> 206     return self.raw_function(**d, **var_kwargs)

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\api\objects_api.py:547, in ObjectsApi.delete_objects_with_http_info(self, repository, branch, path_list, force, **kwargs)
    539 _response_types_map = {
    540     '200': "ObjectErrorList",
    541     '401': "Error",
   (...)
    544     '420': None,
    545 }
--> 547 return self.api_client.call_api(
    548     '/repositories/{repository}/branches/{branch}/objects/delete', 'POST',
    549     _path_params,
    550     _query_params,
    551     _header_params,
    552     body=_body_params,
    553     post_params=_form_params,
    554     files=_files,
    555     response_types_map=_response_types_map,
    556     auth_settings=_auth_settings,
    557     async_req=_params.get('async_req'),
    558     _return_http_data_only=_params.get('_return_http_data_only'),  # noqa: E501
    559     _preload_content=_params.get('_preload_content', True),
    560     _request_timeout=_params.get('_request_timeout'),
    561     collection_formats=_collection_formats,
    562     _request_auth=_params.get('_request_auth'))

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\api_client.py:407, in ApiClient.call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_types_map, auth_settings, async_req, _return_http_data_only, collection_formats, _preload_content, _request_timeout, _host, _request_auth)
    406 if not async_req:
--> 407     return self.__call_api(resource_path, method,
    408                            path_params, query_params, header_params,
    409                            body, post_params, files,
    410                            response_types_map, auth_settings,
    411                            _return_http_data_only, collection_formats,
    412                            _preload_content, _request_timeout, _host,
    413                            _request_auth)
    415 return self.pool.apply_async(self.__call_api, (resource_path,
    416                                                method, path_params,
    417                                                query_params,
   (...)
    425                                                _request_timeout,
    426                                                _host, _request_auth))

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\api_client.py:222, in ApiClient.__call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_types_map, auth_settings, _return_http_data_only, collection_formats, _preload_content, _request_timeout, _host, _request_auth)
    221         e.body = e.body.decode('utf-8')
--> 222     raise e
    224 self.last_response = response_data

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\api_client.py:212, in ApiClient.__call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_types_map, auth_settings, _return_http_data_only, collection_formats, _preload_content, _request_timeout, _host, _request_auth)
    210 try:
    211     # perform request and return response
--> 212     response_data = self.request(
    213         method, url,
    214         query_params=query_params,
    215         headers=header_params,
    216         post_params=post_params, body=body,
    217         _preload_content=_preload_content,
    218         _request_timeout=_request_timeout)
    219 except ApiException as e:

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\api_client.py:451, in ApiClient.request(self, method, url, query_params, headers, post_params, body, _preload_content, _request_timeout)
    450 elif method == "POST":
--> 451     return self.rest_client.post_request(url,
    452                                  query_params=query_params,
    453                                  headers=headers,
    454                                  post_params=post_params,
    455                                  _preload_content=_preload_content,
    456                                  _request_timeout=_request_timeout,
    457                                  body=body)
    458 elif method == "PUT":

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\rest.py:278, in RESTClientObject.post_request(self, url, headers, query_params, post_params, body, _preload_content, _request_timeout)
    276 def post_request(self, url, headers=None, query_params=None, post_params=None,
    277          body=None, _preload_content=True, _request_timeout=None):
--> 278     return self.request("POST", url,
    279                         headers=headers,
    280                         query_params=query_params,
    281                         post_params=post_params,
    282                         _preload_content=_preload_content,
    283                         _request_timeout=_request_timeout,
    284                         body=body)

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_sdk\rest.py:235, in RESTClientObject.request(self, method, url, query_params, headers, body, post_params, _preload_content, _request_timeout)
    234 if 500 <= r.status <= 599:
--> 235     raise ServiceException(http_resp=r)
    237 raise ApiException(http_resp=r)

ServiceException: (500)
Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json', 'X-Content-Type-Options': 'nosniff', 'X-Request-Id': '586c5cf7-a698-4d84-97af-d4e6de8e6eb2', 'Date': 'Sun, 14 Jul 2024 17:56:29 GMT', 'Content-Length': '62'})
HTTP response body: {"message":"request size exceeded, max paths is set to 1000"}

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

ServerException                           Traceback (most recent call last)
File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_spec\spec.py:168, in LakeFSFileSystem.wrapped_api_call(self, rpath, message, set_cause)
    167 try:
--> 168     yield
    169 except ServerException as e:

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_spec\spec.py:718, in LakeFSFileSystem.rm(self, path, recursive, maxdepth)
    717 if maxdepth is None:
--> 718     branch.delete_objects(obj.path for obj in objgen)
    719 else:
    720     # nesting level is just the amount of "/"s in the path, no leading "/".

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs\branch.py:89, in _BaseBranch.delete_objects(self, object_paths)
     88     object_paths = [o.path if isinstance(o, StoredObject) else o for o in object_paths]
---> 89 with api_exception_handler():
     90     return self._client.sdk_client.objects_api.delete_objects(
     91         self._repo_id,
     92         self._id,
     93         lakefs_sdk.PathList(paths=object_paths)
     94     )

File ~\.conda\envs\tensordb\Lib\contextlib.py:155, in _GeneratorContextManager.__exit__(self, typ, value, traceback)
    154 try:
--> 155     self.gen.throw(typ, value, traceback)
    156 except StopIteration as exc:
    157     # Suppress StopIteration *unless* it's the same exception that
    158     # was passed to throw().  This prevents a StopIteration
    159     # raised inside the "with" statement from being suppressed.

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs\exceptions.py:148, in api_exception_handler(custom_handler)
    147 if lakefs_ex is not None:
--> 148     raise lakefs_ex from e

ServerException: code: 500, reason: Internal Server Error, body: {'message': 'request size exceeded, max paths is set to 1000'}

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

OSError                                   Traceback (most recent call last)
Cell In[56], line 23
     20 fs_map = fsspec.FSMap(root=path, fs=lfs)
     22 # The error comes when it tries to clean the whole directory to rewrite the data
---> 23 arr.to_zarr(fs_map, mode="w")
     25 print(xr.open_zarr(fs_map).compute())
     27 time.sleep(5)

File ~\.conda\envs\tensordb\Lib\site-packages\xarray\core\dataset.py:2549, in Dataset.to_zarr(self, store, chunk_store, mode, synchronizer, group, encoding, compute, consolidated, append_dim, region, safe_chunks, storage_options, zarr_version, write_empty_chunks, chunkmanager_store_kwargs)
   2404 """Write dataset contents to a zarr group.
   2405
   2406 Zarr chunks are determined in the following way:
   (...)
   2545     The I/O user guide, with more details and examples.
   2546 """
   2547 from xarray.backends.api import to_zarr
-> 2549 return to_zarr(  # type: ignore[call-overload,misc]
   2550     self,
   2551     store=store,
   2552     chunk_store=chunk_store,
   2553     storage_options=storage_options,
   2554     mode=mode,
   2555     synchronizer=synchronizer,
   2556     group=group,
   2557     encoding=encoding,
   2558     compute=compute,
   2559     consolidated=consolidated,
   2560     append_dim=append_dim,
   2561     region=region,
   2562     safe_chunks=safe_chunks,
   2563     zarr_version=zarr_version,
   2564     write_empty_chunks=write_empty_chunks,
   2565     chunkmanager_store_kwargs=chunkmanager_store_kwargs,
   2566 )

File ~\.conda\envs\tensordb\Lib\site-packages\xarray\backends\api.py:1661, in to_zarr(dataset, store, chunk_store, mode, synchronizer, group, encoding, compute, consolidated, append_dim, region, safe_chunks, storage_options, zarr_version, write_empty_chunks, chunkmanager_store_kwargs)
   1659     already_consolidated = False
   1660     consolidate_on_close = consolidated or consolidated is None
-> 1661 zstore = backends.ZarrStore.open_group(
   1662     store=mapper,
   1663     mode=mode,
   1664     synchronizer=synchronizer,
   1665     group=group,
   1666     consolidated=already_consolidated,
   1667     consolidate_on_close=consolidate_on_close,
   1668     chunk_store=chunk_mapper,
   1669     append_dim=append_dim,
   1670     write_region=region,
   1671     safe_chunks=safe_chunks,
   1672     stacklevel=4,  # for Dataset.to_zarr()
   1673     zarr_version=zarr_version,
   1674     write_empty=write_empty_chunks,
   1675 )
   1677 if region is not None:
   1678     zstore._validate_and_autodetect_region(dataset)

File ~\.conda\envs\tensordb\Lib\site-packages\xarray\backends\zarr.py:483, in ZarrStore.open_group(cls, store, mode, synchronizer, group, consolidated, consolidate_on_close, chunk_store, storage_options, append_dim, write_region, safe_chunks, stacklevel, zarr_version, write_empty)
    464 @classmethod
    465 def open_group(
    466     cls,
   (...)
    480     write_empty: bool | None = None,
    481 ):
--> 483     zarr_group, consolidate_on_close, close_store_on_close = _get_open_params(
    484         store=store,
    485         mode=mode,
    486         synchronizer=synchronizer,
    487         group=group,
    488         consolidated=consolidated,
    489         consolidate_on_close=consolidate_on_close,
    490         chunk_store=chunk_store,
    491         storage_options=storage_options,
    492         stacklevel=stacklevel,
    493         zarr_version=zarr_version,
    494     )
    496     return cls(
    497         zarr_group,
    498         mode,
   (...)
    504         close_store_on_close,
    505     )

File ~\.conda\envs\tensordb\Lib\site-packages\xarray\backends\zarr.py:1332, in _get_open_params(store, mode, synchronizer, group, consolidated, consolidate_on_close, chunk_store, storage_options, stacklevel, zarr_version)
   1330     zarr_group = zarr.open_consolidated(store, **open_kwargs)
   1331 else:
-> 1332     zarr_group = zarr.open_group(store, **open_kwargs)
   1333 close_store_on_close = zarr_group.store is not store
   1334 return zarr_group, consolidate_on_close, close_store_on_close

File ~\.conda\envs\tensordb\Lib\site-packages\zarr\hierarchy.py:1581, in open_group(store, mode, cache_attrs, synchronizer, path, chunk_store, storage_options, zarr_version, meta_array)
   1578         raise GroupNotFoundError(path)
   1580 elif mode == "w":
-> 1581     init_group(store, overwrite=True, path=path, chunk_store=chunk_store)
   1583 elif mode == "a":
   1584     if not contains_group(store, path=path):

File ~\.conda\envs\tensordb\Lib\site-packages\zarr\storage.py:682, in init_group(store, overwrite, path, chunk_store)
    679     store["zarr.json"] = store._metadata_class.encode_hierarchy_metadata(None)  # type: ignore
    681 # initialise metadata
--> 682 _init_group_metadata(store=store, overwrite=overwrite, path=path, chunk_store=chunk_store)
    684 if store_version == 3:
    685     # TODO: Should initializing a v3 group also create a corresponding
    686     #       empty folder under data/root/? I think probably not until there
    687     #       is actual data written there.
    688     pass

File ~\.conda\envs\tensordb\Lib\site-packages\zarr\storage.py:704, in _init_group_metadata(store, overwrite, path, chunk_store)
    701 if overwrite:
    702     if store_version == 2:
    703         # attempt to delete any pre-existing items in store
--> 704         rmdir(store, path)
    705         if chunk_store is not None:
    706             rmdir(chunk_store, path)

File ~\.conda\envs\tensordb\Lib\site-packages\zarr\storage.py:212, in rmdir(store, path)
    209 store_version = getattr(store, "_store_version", 2)
    210 if hasattr(store, "rmdir") and store.is_erasable():  # type: ignore
    211     # pass through
--> 212     store.rmdir(path)
    213 else:
    214     # slow version, delete one key at a time
    215     if store_version == 2:

File ~\.conda\envs\tensordb\Lib\site-packages\zarr\storage.py:1549, in FSStore.rmdir(self, path)
   1547 store_path = self.dir_path(path)
   1548 if self.fs.isdir(store_path):
-> 1549     self.fs.rm(store_path, recursive=True)

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_spec\spec.py:714, in LakeFSFileSystem.rm(self, path, recursive, maxdepth)
    711 path = stringify_path(path)
    712 repository, ref, prefix = parse(path)
--> 714 with self.wrapped_api_call(rpath=path):
    715     branch = lakefs.Branch(repository, ref, client=self.client)
    716     objgen = branch.objects(prefix=prefix, delimiter="" if recursive else "/")

File ~\.conda\envs\tensordb\Lib\contextlib.py:155, in _GeneratorContextManager.__exit__(self, typ, value, traceback)
    153     value = typ()
    154 try:
--> 155     self.gen.throw(typ, value, traceback)
    156 except StopIteration as exc:
    157     # Suppress StopIteration *unless* it's the same exception that
    158     # was passed to throw().  This prevents a StopIteration
    159     # raised inside the "with" statement from being suppressed.
    160     return exc is not value

File ~\.conda\envs\tensordb\Lib\site-packages\lakefs_spec\spec.py:170, in LakeFSFileSystem.wrapped_api_call(self, rpath, message, set_cause)
    168     yield
    169 except ServerException as e:
--> 170     raise translate_lakefs_error(e, rpath=rpath, message=message, set_cause=set_cause)

OSError: [Errno 5] 500 request size exceeded, max paths is set to 1000: 'quickstart/main/test-zarr'

Thanks. As you can see at the start of the trace, the rm call (a POST to '/repositories/{repository}/branches/{branch}/objects/delete' under the hood) fails, presumably because of a max-paths limitation on the lakeFS server.
I don't know the details about how to increase the max paths number (specifically, whether it is set at compile time or if it is a configurable attribute on the server), so I'd raise that question on the lakeFS repo.
But tl,dr: This is a lakeFS server-side issue, not a lakefs-spec one.

Thanks, I will raise the question on the LakeFS repo.

Hi I'm from the lakeFS team, here because of treeverse/lakeFS#7992.  This error is indeed generated by lakeFS, when you attempt to call deleteObjects over >1000 objects.  Note that AWS S3 has the exact same limitation in its DeleteObjects call.
I agree that this is a limitation, but it is unavoidable on the lakeFS side.  We might be able to make it configurable.  But the run-time behaviour will not be good.  I believe that this line from the stacktrace should actually call deleteObjects in "chunks".
Please consider re-opening this issue.

Thanks for the source @arielshaqed! Should be easily doable with an itertools slice or something similar.

@nicholasjng Sorry for bothering you, but I was reading the following forum of LakeFS https://forum.lakefs.io/t/15556053/hello-i-m-new-to-lakefs-and-would-like-to-ask-does-anyone-ha, which mentions that they write directly on S3 using s3fs instead of lakefs-spec, so I would like to know if that is the recommended approach or if I should use LakeFS-spec. What is strange to me is how LakeFS can handle/update the metadata automatically if I write directly to the bucket using the code on the forum. (If need it I can open a separate issue for this question)

Regarding metadata, I would assume that lakeFS tracks the bucket state very closely in its metadata model, so they will pick up changes you write by hand.
The s3fs approach is just another way of accessing the underlying storage at this point I think. We used to have a fallback that wrote and read files to/from lakeFS directly using s3fs if the pre-signed URL feature was selected, but not anymore since the new lakefs wrapper library was created.
So you should go with whatever you find most convenient. Going directly through S3 is probably also fine, if you don't consider switching to a different cloud provider anytime soon. (It also becomes a little harder to spin up working local instances.)

Sorry for not replying for lakeFS, @nicholasjng proceeded much faster than I tracked this issue!  tl;dr: Prefer lakefs-spec if at all possible.
Everything Nicholas wrote about accessing lakeFS is of course accurate.  To give context from the lakeFS side to your questions:
The sample use of S3FS predates lakefs-spec AFAIR; I would prefer to use lakefs-spec.
This setup does not go directly to the underlying S3 bucket!  The configuration option endpoint_url points to the S3-compatible endpoint which lakeFS provides.  Your upload goes through the lakeFS server, and that's how it tracks metadata from that upload.  lakeFS provides this endpoint even when your backing store is not S3 compatible, so it will work.
But it will typically be slower than using lakefs-spec!  Depending on lakeFS configuration, this fsspec implementation can upload data using a presigned URL, and then notifies lakeFS about the new object.  This way lakeFS only handles metadata and never data, which is considerably more efficient and reliable.

lakefs-spec v0.10.0 is out with the fix from #284, please let us know if there are any further issues.

That was fast, I tested, and everything worked as expected, thanks!


email after registry webapp panic

See https://github.com/docker/docker-registry/blob/master/ADVANCED.md#email-exceptions for history

That should be a simple package that catches exceptions and mail them (see how bugsnag does that).

That should be a simple package that catches exceptions and mail them (see how bugsnag does that).

There are no exceptions in Go. Thus, the registry implementation already sends all exceptions. ;)
(Assume you mean panic)

See? Too much python :)
Yeah, I meant panic.

@stevvooe
feature of Email exceptions, like docker-registry, seems not in V2 yet.

email configuration;
sending function;

If it is in any schedule or progress, or any conception?
Thanks a lot!

@xiekeyang no progress so far. It's up for the take if someone wants to start working on it.

@xiekeyang This is the issue covering it. It is not currently on the roadmap.
If you would like the feature, please submit a proposal as an issue, referencing this one. Please cover how it will work, configuration, etc.
As an aside, it might be useful to integrate with the logging system, which has a lot of contextual information that may be useful for reporting.

Got it, Thanks a lot! I would present the proposal.

##Proposal
Features

The Exception Notification gem provides a set of notifiers for sending email notifications after webapp panic.
EmailException is used as a panic response, or in the context you want it to run.
The sending Emails includes information about the current session, error type, and inforamtion that developer defines.

###Implementation

it depends on net/smtp package, which supports SMTP mailbox.
The package methods as PlainAuth, and SendMail may be used.
it may be configurated in app package, and run sending function after critical errors.

Neither log nor github.com/Sirupsen/logrus seems including sending mail functionality. As some other opening project like github.com/cihub/seelog can do.
Therefore, The first patch realese may only support feature of mail sending manually. Then, research and set up full logging system with functionality of mail sending and local log file storage.
###Configuration
you can make it work by putting the following lines, in the file of config.yml.
email_exceptions:
    smtp_host: _env:SMTP_HOST
    smtp_port: _env:SMTP_PORT:25
    smtp_login: _env:SMTP_LOGIN
    smtp_password: _env:SMTP_PASSWORD
    smtp_secure: _env:SMTP_SECURE:false
    from_addr: _env:SMTP_FROM_ADDR
    to_addr: _env:SMTP_TO_ADDR

##Proposal
Features

The Exception Notification gem provides a set of notifiers for sending email notifications after webapp panic.
EmailException is used as a panic response, or in the context you want it to run.
The sending Emails includes information about the current session, error type, and inforamtion that developer defines.

###Implementation

it depends on net/smtp package, which supports SMTP mailbox.
The package methods as PlainAuth, and SendMail may be used.
it may be configurated in app package, and run sending function after critical errors.

Neither log nor github.com/Sirupsen/logrus seems including sending mail functionality. As some other opening project like github.com/cihub/seelog can do.
Therefore, The first patch realese may only support feature of mail sending manually. Then, research and set up full logging system with functionality of mail sending and local log file storage.
###Configuration
you can make it work by putting the following lines, in the file of config.yml.
email_exceptions:
    smtp_host: _env:SMTP_HOST
    smtp_port: _env:SMTP_PORT:25
    smtp_login: _env:SMTP_LOGIN
    smtp_password: _env:SMTP_PASSWORD
    smtp_secure: _env:SMTP_SECURE:false
    from_addr: _env:SMTP_FROM_ADDR
    to_addr: _env:SMTP_TO_ADDR

@xiekeyang This proposal looks good. A few items:

We will not be changing to logging package. github.com/Sirupsen/logrus does support hooks that can intercept log messages and send mail. This would be the best place to hook into errors.
In addition to intercepting error logs, we'd need an http handler that intercepts panics and emits error level logs with the error information for use in logrus.
The environment variables aren't necessary in the Go registry implementation. Environment variables are automatically generated in the form of REGISTRY_EMAIL_EXCEPTIONS_SMTP_HOST based on the yaml configuration path.
As far as configuration goes, it might be better to position these as log handlers:

log:
  level: debug
  fields:
    service: registry
    environment: development
  handlers:
    error:
      - type: email
        smtp_host: mail.example.com
        smtp_port: 25
        smtp_login: mailuser
        smtp_password: password
        smtp_secure: true
        from_addr: registry@$HOSTNAME # We may need to have special handling for hostname or test this
        to_addr<EMAIL_ADDRESS>
This will allow use to add future extensions that can be a part of logging hooks.
As an aside, I noticed the sentence "The Exception Notification gem provides a set of notifiers for sending" is directly from https://github.com/smartinez87/exception_notification. It's okay to use such a project for inspiration or as an example but please make sure your work is your own or properly cited.

@stevvooe Thanks a lot for your help!
I analyze and try logrus/hooks packages, and find that it can handle the panic (besides error, fatal).
Here I'm in progress.
Question:

would you like to,

add recover() before each panic();
or keep only panic() without recover() ?
Maybe recover() way is better?

for your proposal "http handle", may I use httptest.NewServer method in app.go ? I prefer it, because we needn't care listen port assignment. httptest can assign a free port, and httptest server can listen port during web app life.  Otherwise, would you propose to use http.ListenAndServe method, don't use httptest in app package?

Just use the standard panic/recover pattern. You can read about it here.
httptest should only be used for testing. I'm not sure why you'd need it app.go.

Got it.
I had liked add in app.go, for it is for reporting app web panic. But according to your proposal, I'd improve the design.
main.go:configureReporting is for reporting bugsnag handler. May I add the panic snag configuration, http handler(with mail sending) in it?

@xiekeyang Really, this reporting should not involve bugsnag. Bugsnag is already integrated. If you would like to modify the bugsnag configuration, just sumbit a PR with those changes. I don't think such a change would close this issue.


Missing __init__.py leads to ModuleNotFoundError: No module named xxx'

According https://docs.python.org/3/reference/import.html#regular-packages,

A regular package is typically implemented as a directory containing an __init__.py file.

If a directory contains no __init__.py, it won't be packaged into the built wheel, leading to ModuleNotFoundError when executed. This frequently causes CI failures, such as
E       ModuleNotFoundError: No module named 'azure.cli.core.sdk'

Previous occurrences:

https://github.com/Azure/azure-cli/pull/17817
https://github.com/Azure/azure-cli/pull/19285
https://github.com/Azure/azure-cli/pull/28462

Thank you for opening this issue, we will look into it.

If we move to native namespace packages, this issue can also be fixed.


JSON API install fails

I must be doing something wrong?  In the Grafana docker shell I entered "grafana-cli plugins install marcusolsson-json-datasource".  It was successful.  But when I try to add JSON API as a data source in Grafana GUI, I get this error:
An unexpected error happened
Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
in Unknown
in div
in t
in form
in div
in div
in t
in div
in div
in div
in t
in t
in div
in t
in t
in x
in ConnectWithCleanUp(Connect(t))
in r
in Unknown
in t
in Unknown
in h
in Unknown
in Unknown
in t
in t
in l

Help!
TIA!

Hi, and thanks for reporting!
What version of Grafana and the plugin are you running?

Looks like user error.  Closing.