add support for TS0601 _TZE200_n9clpsht MS-K1AZ Wireless Zigbee Keypad

Product: https://www.immax.eu/immax-neo-smart-keyboard-zigbee-3-0-p11155/
Fixes: #1852

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

41 of 41 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.09%) to 82.984%

Totals

Change from base Build<PHONE_NUMBER>:
0.09%

Covered Lines:
6340

Relevant Lines:
7640

💛  - Coveralls

Are you planning to show up the attributes in HA?

Thank you so much for the feedback.
It's still very much a work-in-progress (hence the draft status).
So far I have only gotten the configuration reading/writing to work, but I am still unable to figure out how to map the incoming DP's to arming/disarming updates in the IasAce cluster - if you have any tips on how to do this, I would really appreciate it, as I haven't been able to find any examples of similar doings.

Are you planning to show up the attributes in HA?

I haven't yet figured out how to get them to show up in HA.

Codecov Report
Base: 82.89% // Head: 82.98% // Increases project coverage by +0.09% :tada:

Coverage data is based on head (b1834e5) compared to base (c2de1b2).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev    #1908      +/-   ##
==========================================
+ Coverage   82.89%   82.98%   +0.09%
==========================================
  Files         245      246       +1
  Lines        7599     7640      +41
==========================================
+ Hits         6299     6340      +41
  Misses       1300     1300

Impacted Files
Coverage Δ

zhaquirks/tuya/ts0601_keypad.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

I could really use some help on this one. I'm stuck in two places.
First problem is that I don't know how to expose the attributes for configuring the keypad in Home Assistant.
Second problem is how to control the status of the IasAce entity in Home Assistant.
So far I've tried sending both the "arm" server command, and the "panel_status_changed" client command, but none of them triggers a change of the alarm control panel in Home Assistant.
class TuyaAlarmControlPanelCluster(IasAce, TuyaLocalCluster):
    """Tuya Alarm Control Panel cluster."""

    def __init__(self, *args, **kwargs):
        """Init."""
        super().__init__(*args, **kwargs)
        self.endpoint.device.ias_bus.add_listener(self)

    def arm(self, value):
        """Arm."""
        _LOGGER.warning("arm: %s", value)
        self.create_catching_task(self.command(0x00, value, "1234", 0))

Any input on either issue is very welcome!

I am curious about this device but I don't have free time to help.
Probably that will need some custom command and additional mappings.
Maybe over the weekend I can check it out.

First problem is that I don't know how to expose the attributes in the GUI for configuring the keypad in Home Assistant without using the cluster management.

This part can be quite easy. Don't worry for now, I'll take a look if I can get some spare time.

Second problem is how to control the status of the IasAce entity in Home Assistant.

Enable the debug logs for ZHA and take a look a it, there will be som info about the commands and reports from device.

So far I've tried sending both the "arm" server command, and the "panel_status_changed" client command, but none of them triggers a change of the alarm control panel in Home Assistant.

How are you doing it?
I would try to enable the debug logs and arm/disarm from the phisycal device.
Attach the logs to see what is the device doing. Then we can try to map reports/commands to Zigbee standar cluster.
IasAce doesn't really have a status attribute, so in HA ZHA is caching status and updating according to the commands. So it will be needed to nail all the steps from device to HA (that will be a lot of logs and trial and error).

@javicalle This are the events you can see in the DEBUG log that the keypad is sending when pressing the following buttons.

DISARM:
(MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x7ADB), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=48, profile_id=260, cluster_id=61184, data=Serialized[b'\t\x08\x01\x00:\x1a\x04\x00\x01\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=255, rssi=-19)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received ZCL frame: b'\t\x08\x01\x00:\x1a\x04\x00\x01\x00'
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=8, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame: WirelessZigbeeKeypadManufCluster:get_data(data=TuyaCommand(status=0, tsn=58, datapoints=[TuyaDatapointData(dp=26, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received command 0x01 (TSN 8): get_data(data=TuyaCommand(status=0, tsn=58, datapoints=[TuyaDatapointData(dp=26, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] No attribute mapping for 26 data point

ARM AWAY:
(MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x7ADB), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=51, profile_id=260, cluster_id=61184, data=Serialized[b'\t\x0b\x01\x00=\x1b\x04\x00\x01\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=140, rssi=-65)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received ZCL frame: b'\t\x0b\x01\x00=\x1b\x04\x00\x01\x00'
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=11, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame: WirelessZigbeeKeypadManufCluster:get_data(data=TuyaCommand(status=0, tsn=61, datapoints=[TuyaDatapointData(dp=27, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received command 0x01 (TSN 11): get_data(data=TuyaCommand(status=0, tsn=61, datapoints=[TuyaDatapointData(dp=27, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] No attribute mapping for 27 data point

ARM HOME:
(MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x7ADB), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=52, profile_id=260, cluster_id=61184, data=Serialized[b'\t\x0c\x01\x00>\x1c\x04\x00\x01\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=108, rssi=-73)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received ZCL frame: b'\t\x0c\x01\x00>\x1c\x04\x00\x01\x00'
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=12, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame: WirelessZigbeeKeypadManufCluster:get_data(data=TuyaCommand(status=0, tsn=62, datapoints=[TuyaDatapointData(dp=28, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received command 0x01 (TSN 12): get_data(data=TuyaCommand(status=0, tsn=62, datapoints=[TuyaDatapointData(dp=28, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] No attribute mapping for 28 data point

SOS:
(MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x7ADB), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=53, profile_id=260, cluster_id=61184, data=Serialized[b'\t\r\x01\x00?\x1d\x04\x00\x01\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=88, rssi=-78)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received ZCL frame: b'\t\r\x01\x00?\x1d\x04\x00\x01\x00'
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False, *is_reply=True), tsn=13, command_id=1, *direction=<Direction.Client_to_Server: 1>, *is_reply=True)
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Decoded ZCL frame: WirelessZigbeeKeypadManufCluster:get_data(data=TuyaCommand(status=0, tsn=63, datapoints=[TuyaDatapointData(dp=29, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] Received command 0x01 (TSN 13): get_data(data=TuyaCommand(status=0, tsn=63, datapoints=[TuyaDatapointData(dp=29, data=TuyaData(dp_type=<TuyaDPType.ENUM: 4>, function=0, raw=b'\x00', *payload=<enum8.undefined_0x00: 0>))]))
(MainThread) [zigpy.zcl] [0x7ADB:1:0xef00] No attribute mapping for 29 data point

I got event handling working now, and I am able to disarm/arm/arm away from the device, and have the state update in HA.
I've added a custom method _dp_2_event that is added to the data_point_handlers for the arm/disarm events in the TuyaMCUCluster. The method tries to look up the user code from the attribute cache, and defaults to "1234" if it can't find it in the attribute cache. It then sends an event to the IasAce implementation over a bus, which then sends the event as a cluster command that is caught by Home Assistant and triggers the state change for the alarm panel in HA.
I'm not sure if this is the best way to handle it, as it requires you to have the same user code configure in your alarm panel, and in the ZHA settings in HA (as the user code is global, and not per-panel as I believe it should be).

It would be nice if it worked as in Zigbee2mqtt, when the keypad triggers and event you have a property that is updated, I’m using this property to trigger some automations to enable disable “Alarmo”, I’m not using HA alarm system, this way you can integrate it with other devices not just with HA security integration, you could also use the triggered events to activate automations as the keypad will only trigger the events if you type a correct password or fast arm/disarm is enabled.

It would be nice if it worked as in Zigbee2mqtt, when the keypad triggers and event you have a property that is updated, I’m using this property to trigger some automations to enable disable “Alarmo”, I’m not using HA alarm system, this way you can integrate it with other devices not just with HA security integration, you could also use the triggered events to activate automations as the keypad will only trigger the events if you type a correct password or fast arm/disarm is enabled.

You could always just base your automations on state changes from the HA alarm entity that is created by ZHA.
But it should be possible to implement events directly using device_automation_triggers - I'll look into it after I figure out how to expose the alarm panel settings in the HA UI - @javicalle, you say that "This part can be quite easy.", could you give me any pointers?

What are you trying to expose in the UI? We already expose configs for alarm panels in the UI when an alarm panel is paired

He would like to expose the keypad settings, it would be nice to be able to set them without having to do it manually from the cluster, these settings are

Fast arm/disarm (no code required) this could be a toggle
If the keypad should beep
The delay in seconds before arm
If the delay should beep
And all the other settings that are exposed in the custom cluster.

@javicalle, you say that "This part can be quite easy.", could you give me any pointers?

I'm away from mu PC right now, but I will try to guide you.
Take a look at:

https://github.com/home-assistant/core/blob/de48ae2e53f5b35df5892df1f96daf033198a5bd/homeassistant/components/zha/switch.py#L272-L284

I'd like to try a slightly different approach.
My approach would be:

overwrite in the WirelessZigbeeKeypadManufCluster class the ep_attribute adding it like ep_attribute = "tuya_manufacturer_alarm"
add a new class in the homeassistant/components/zha/switch.py file will be something like:

@CONFIG_DIAGNOSTIC_MATCH(
    channel_names="tuya_manufacturer_alarm",
)
class OnOffKeypadBeepsConfigurationEntity(
    ZHASwitchConfigurationEntity, id_suffix="on_off_keypad_beeps"
):
    """Representation of a ZHA alarm keypad beeps configuration entity."""

    _zcl_attribute: str = "keypad_beeps"

The point 2 would require to copy all the zha HA component as a custom component.
I have not fully tested the validity of point 1.
It's something I'd like to try to avoid having to keep the list of manufacturers in 2 places. If it has problems, you can remove the ep_attribute definition in cluster and use the implementation with the channel_names and manufacturers.
I believe that you can create any entity type from a ZHA cluster attribute.

I've added a custom method _dp_2_event

I've been waiting for this case to come out for a while and here it is.
I have another approach in mind, but I have to figure out how to pass the required attributes to the command, I don't know if that could be done with a converter:

_dp_2_event
    def _dp_2_event(self, datapoint: TuyaDatapointData) -> None:
        """Handle data point to cluster command."""
        try:
            dp_map = self.dp_to_event[datapoint.dp]
        except KeyError:
            self.debug("No attribute mapping for %s data point", datapoint.dp)
            return

        endpoint = self.endpoint
        if dp_map.endpoint_id:
            endpoint = self.endpoint.device.endpoints[dp_map.endpoint_id]
        cluster = getattr(endpoint, dp_map.ep_attribute)
        value = datapoint.data.payload
        if dp_map.converter:
            value = dp_map.converter(value)

        cluster.commands_by_name[dp_map.attribute_name](value)

This way, the DPs can be mapped to commands like that:

dp_to_event
    dp_to_event: Dict[int, DPToAttributeMapping] = {
        DISARMED_DP_ID: DPToAttributeMapping(  # Probably another mapping type DPToCommandMapping
            IasAce.ep_attribute,
            "arm",
            TuyaDPType.ENUM,  # not needed
            converter=lambda x: {IasAce.ArmMode.Disarm, user_code, zone_id},  #
        ),
        ARMED_DP_ID: DPToAttributeMapping(  # Probably another mapping type DPToCommandMapping
            IasAce.ep_attribute,
            "arm",
            TuyaDPType.ENUM,  # not needed
            converter=lambda x: {IasAce.ArmMode.Arm_All_Zones, user_code, zone_id},  #
        ),
        .../...
    }

One goal would be to avoid the use of the ias_bus and call the command directly.

It would be nice if it worked as in Zigbee2mqtt, when the keypad triggers and event you have a property that is updated, I’m using this property to trigger some automations to enable disable “Alarmo”, I’m not using HA alarm system, this way you can integrate it with other devices not just with HA security integration, you could also use the triggered events to activate automations as the keypad will only trigger the events if you type a correct password or fast arm/disarm is enabled.

You could always just base your automations on state changes from the HA alarm entity that is created by ZHA. But it should be possible to implement events directly using device_automation_triggers - I'll look into it after I figure out how to expose the alarm panel settings in the HA UI - @javicalle, you say that "This part can be quite easy.", could you give me any pointers?

Just tried the quirk and it's working nice, with the actual implementación I can use it as I had with Z2M 👍

I've added a custom method _dp_2_event

I've been waiting for this case to come out for a while and here it is.
I have another approach in mind, but I have to figure out how to pass the required attributes to the command, I don't know if that could be done with a converter:
_dp_2_event
This way, the DPs can be mapped to commands like that:
dp_to_event
One goal would be to avoid the use of the ias_bus and call the command directly.

Seems like a really good idea, but I believe that this should be a separate PR to keep the scope of this PR small.

Have you been able to figure out how to expose the device settings in HA UI? It would be nice to be able to change values from HA in a friendly way,  not having to send the values through the clusters manually.

Hm, seems like I missed something.. the alarm panel doesn't send events when it's pending, which means that I won't be able to get the "arming" state in Home Assistant. I'd really like to have this state, so I can play an "arming" sound on my Sonos when it's arming. Question is if it would be better for this quirk to just send out events instead of exposing an IasAce entity, and then people could use the manual alarm control panel component in Home Assistant to allow for more flexibility in their automations.
This would also solve the issue I'm currently having which is that the ZHA component's alarm_control_panel doesn't support the trigger event (currently discussing this issue in the HA Discord), which means I am unable to actually get the alarm control panel into the triggered state..

I was facing the same problem and was using the keypad integrated beeping timeout system, before I used google devices to play the arming / timeout, actually i'm using the state of the alarm_control_panel to trigger automations and change Alarmo states.

I was facing the same problem and was using the keypad integrated beeping timeout system, before I used google devices to play the arming / timeout, actually i'm using the state of the alarm_control_panel to trigger automations and change Alarmo states.
BTW: Have you been able to find out the event for "manipulation" when the keypad is detached?

I'll take a spin at it tonight after work, and try to implement all DP's from the Keypad as events (including the tamper alert)

I haven't been able to figure out how to trigger device_automation_triggers from a Tuya cluster, so I've decided to just go with the current IasAce implementation.
If people, like me, want to be able to handle the arming state with a delay inside Home Assistant, they will have to create a manual alarm in Home Assistant, which they can then trigger by the armed state from the IasAce device.
I believe that this isn't the most optimal solution, so any pointers to a better one is appreciated.
P.S. @PonyOny I've added handling of the anti-remove alarm, so it sets the alarm entity to triggered.

Nice, have you also exposed this state as entity? so you can trigger events for the anti-remove alarm, not just triggering the alarm state.

I haven't been able to figure out how to trigger device_automation_triggers from a Tuya cluster, so I've decided to just go with the current IasAce implementation.
If people, like me, want to be able to handle the arming state with a delay inside Home Assistant, they will have to create a manual alarm in Home Assistant, which they can then trigger by the armed state from the IasAce device.
I believe that this isn't the most optimal solution, so any pointers to a better one is appreciated.
P.S. @PonyOny I've added handling of the anti-remove alarm, so it sets the alarm entity to triggered.

Nice, have you also exposed this state as entity? so you can trigger events for the anti-remove alarm, not just triggering the alarm state.

No. I wanted to expose everything as events in HA, but haven't been able to figure out how.
But the Alarm entity will only become triggered if the tamper-alarm is triggered, or the SOS button triggered.
Not ideal, but I might need help to get it working with events.

The TuyaDPType is now set automatically, there is no need for the mapping.

Thanks for the input 👍
I'm currently working in the home-assistant/core repo to get the configuration of the entity into the GUI:

The TuyaDPType is now set automatically, there is no need for the mapping.

Thanks for the input 👍
I'm currently working in the home-assistant/core repo to get the configuration of the entity into the GUI:

Wow amazing work, that is great news ☺ keep on with the good work 💪🏻

The TuyaDPType is now set automatically, there is no need for the mapping.

Thanks for the input 👍
I'm currently working in the home-assistant/core repo to get the configuration of the entity into the GUI:

Have you considered implementing the "Quick XXXX" controls as buttons?

Those quick should be toggles, they are on or off, if on password is not necessary for the action to be triggered from the keypad, it’s to be able to arm away without the password.

I've been looking at updating the zha component in home-assistant/core, but am not quite sure how to proceed.
Implementing the toggles wasn't really a problem, but handling the user_code and admin_code attribute from the panel is.
At the moment, the ZHAAlarmControlPanel in the zha component reads the code and quick-arm settings from a configuration set globally for the zha component, which means that I currently have to manually ensure that the code in the zha config matches the one I have configured directly on the panel, which seems unintuitive. I believe that it would be more fitting to have this as a configuration directly on the ZHAAlarmControlPanel, as it can then be set on the individual alarm panel, and differ from panel to panel as well, if desired.
I'm not really sure how this change would affect existing entities, as they might not have the option of setting a pincode, but maybe @dmulcahey who did the ZHAAlarmControlPanel can help me with some input here? - do you think it would be better to update ZHAAlarmControlPanel such that it has it's own config, and remove the global alarm config completely?
Also, I believe that the _attr_code_format and _attr_supported_features should also be possible to update from a quirk, such that each quirk can expose the correct code format and list of supported features for that specific quirk.

I haven't been able to get any input on this, and in the meantime I've moved over to zigbee2mqtt.

So will this PR be merged into ZHA? or will I have to use always a custom quirk? because this version is functional, it does not expose all the settings but it's better to have this kind of support than nothing.

Preferably I'd like to do a good implementation instead of an "good enough" one, but yeah, might be better to just merge it, but that's not up to me.
If someone has some input on my thoughts about the ZHAAlarmControlPanel implementation in the zha component in Home Assistant, I might take a look at it again, but I believe it needs to be changed to work better with alarm panels like this, where the panel code can be configured directly on the panel device. Another solution would be to write the panel code configured in HA into the device, so they match.


Confine urlParams references to browser-specific files

urlParams is obviously intended for browser utilization, but we have some references to it elsewhere. Most pressing is test.js:Test#valid (which should be using a QUnit.config property), but I'd also like to see getUrlParams and the other core references (core/config.js & core.js#L1) move into e.g. a "browser reporter" that sets and initializes configuration from QUnit.urlParams (which will probably require testing conflict resolution for cases where both inline Javascript and URL parameters try to affect the same QUnit.config property).

move into e.g. a "browser reporter" that sets and initializes configuration from QUnit.urlParams

So would it make sense to introduce something like reporter/url-params.js? This would keep that functionality confined to the browser and give a clear separation.

(which will probably require testing conflict resolution for cases where both inline Javascript and URL parameters try to affect the same QUnit.config property)

What should be the resolution here? I tend to think inline JS values would trump the URL params.


Add node expansion and listing of pods for nodes.

@itowlson this mostly works, but selecting the pods doesn't work correctly. I see the virtual FS that does this, but I don't know how it is triggered, so I don't know how to pass the right namespace along...

@brendandburns You shouldn't need to do anything around selection, because selection delegates to the Load command which does all the work (and knows how to form the URIs for the virtual file system).  Are the pods you tested on in the active namespace?  There is an limitation at the moment where we don't pass a namespace to the Load command and so it always issues a get without namespace flag for the resource YAML/JSON... we will need to update the Load command and the VFS URIs to handle this.  I can plumb that in unless you fancy it...

Comments addressed, please re-check.
Thanks!

@itowlson It's up to you, if you can tell me how to fix it, I'm happy to add it to this PR, but it was kind of opaque to me...

@brendandburns let's file it as a separate issue, as Ivan had suggested.


Template review feedback

Thanks for submitting a template to the gallery, there were a few issues in your template that needed to be resolved ahead of approving the template for the gallery.

We see console error whn we run the code. Can you please resolve the issue.

@500apps-RahulVangari - Pl look into this


Cannot build account meta during transaction decoding

Assume I have a code simply fetches a transaction. Then I take specific instruction and try to call ResolveInstructionAccounts method. It returns me an error: cannot build account meta list without address tables.
Code running:
tx, err := rpcService.GetTransactionInfo(logEvent.Value.Signature)
if err != nil {
  return err
}

idoPurchase := tx.Message.Instructions[4]
accounts, err := idoPurchase.ResolveInstructionAccounts(&tx.Message) // Error returns here!
if err != nil {
  return err
}

inst, err := system.DecodeInstruction(accounts, idoPurchase.Data)
if err != nil {
  return err
}

spew.Dump(inst)

Transaction I fetch using code from docs. Code for fetching transaction looks like this:
func (s *SolanaRpcService) GetTransactionInfo(signature solana.Signature) (*solana.Transaction, error) {
	version := uint64(0)
	out, err := s.rpcClient.GetTransaction(
		context.Background(),
		signature,
		&rpc.GetTransactionOpts{
			Encoding:                       solana.EncodingBase64,
			MaxSupportedTransactionVersion: &version,
		},
	)
	if err != nil {
		return nil, err
	}

	tx, err := solana.TransactionFromDecoder(bin.NewBinDecoder(out.Transaction.GetBinary()))
	if err != nil {
		return nil, err
	}

	return tx, nil
}

I am not quite sure what am I doing wrong? Please, elaborate me or give me a reference to the doc part which I missed.

You need to resolve the address table lookups first
https://github.com/gagliardetto/solana-go#address-lookup-tables


fix(rpc): AccountOverride nonce type is Quantity

also makes fields optional, via serde attributes, because they're not required to be null and can be missing entirely.

Codecov Report

Merging #1948 (89ef4b5) into main (8e4e5e0) will decrease coverage by 0.01%.
The diff coverage is 0.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1948      +/-   ##
==========================================
- Coverage   73.13%   73.13%   -0.01%
==========================================
  Files         424      424
  Lines       51860    51880      +20
==========================================
+ Hits        37930    37940      +10
- Misses      13930    13940      +10

Flag
Coverage Δ

integration-tests
19.46% <0.00%> (-0.01%)
:arrow_down:

unit-tests
67.42% <0.00%> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

crates/rpc/rpc-types/src/eth/state.rs
0.00% <ø> (ø)

crates/rpc/rpc/src/eth/api/call.rs
51.35% <0.00%> (ø)

... and 12 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


cucumber-messages: Add testResult to the TestCaseFinished message

Summary
The TestCaseFinished message should have a testResult field.
Details
Also the TestCaseFinished message should have a testResult field, not only the TestStepFinished.
Motivation and Context
Since the summary is printed:
xxx scenarios (x1 Passed, ...)
yyy steps (y1 Passed, ...)

the concept of test cases having result clearly exists. It should be the responsibility of the cucumber-engine to calculate that result, not each and every listener to the message stream. The cucumber-engine need to know the result of the test case (so far) anyway to be able to decide how to treat the next step (run, skip ...).
How Has This Been Tested?
Still WIP
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue).
[ ] New feature (non-breaking change which adds functionality).
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected).

Is adding a field to a message a "new feature" or a "breaking change"?
Checklist:

[ ] I've added tests for my code.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

I think this makes sense.
@brasmusson there is a script to sync copies of the master messages.proto file into module directories.
source scripts/functions.sh
rsync_files

Could you try running that and commit the changes?
@jaysonesmith tried doing this yesterday, but the command gave no output and didn't modify any files, so there is a possibility you'll have the same problem. It works fine on my machine™.


Semantic: don't find type parameter in alias

Fixes #3502
Similar to #4974
When we have code like:
class Gen(T)
end

class A(T)
  alias B = Gen(T) # here
end

In the "here" line, T shouldn't be the same as the T from A(T). Types in Crystal simply don't work like that. An alias must be solved from the current type (A(T) in this case) but without considering type parameters. alias is not generic. And nested types don't know about type parameters of parent types.

The snippet in #3502 was solved by #4974, my comments below are the ones that still break the compiler and which this PR fixes.

LGTM :+1: ?

@sdogruyol Even though the wiki says one other core team member must approve, I'd like to always get approval from two other core team members.

That makes sense, we should update wiki to "two core members other than the PR owner" then :smile:

It also states: "In some cases they may not feel sure to merge even when it looks good to them: in those cases it is totally ok to leave the PR approved and ask for another member to look at it for further assurance.", in this case Ary wants two reviewers and that is totally fine.
There's a tradeoff in this rule between core team consensus and agility: if we require 2 approvers for a PR submitted by a core team member, that means involving 3 members to get one thing done, which might be too much for small things.
Also, there are many parts of Crystal that are really well understood only by 1 or 2 members, so it'd become a bit cumbersome to gather all the approvals. See for example here: https://github.com/crystal-lang/crystal-random/pull/2
Julien sent a PR and konovod approved it. I'm not sure how many other members would be capable of "really" reviewing that PR. I read the code and thought it was fine, but I'd probably wouldn't have merged it without konovod's approval.

Thanks for the great explanation @mverzilli :+1:

@asterite

In the "here" line, T shouldn't be the same as the T from A(T)

I think it should be same because it is T.
When we want different type, we should use other parameter like this.
class A(T)
  alias B = Gen(U)
end

Otherwise, in short 0.24.0, it breaks basic generic use case like this.
class SomeElementFolder(T)
  alias List = Array(T)
end

# 0.23.x or less : works
# 0.24.0 or this PR: ` undefined constant T`

I think this problem should be solved before releasing 0.24.0, or many users may be confused.
Best regards,

Sorry, no. Types are nested without type parameters. SomeElementList::List is a valid type on its own, and there's no T there.

And nothing really breaks, just write List(T) instead of List and problem solved.

Actually, maybe this can be "fixed". I don't know how, though.

In this case, do you mean that it should be written like this?
class SomeElementFolder(T)
  alias List = Array
  property list : List(T) # not `List`

Well, I agree that it works with the case of name aliasing.
If so, what would you do to use aliasing for representing complex structures?
class CandidatesProducer(T)
  alias CandidateRules = Hash(String, Hash(T, Array(T)))

  def initialize(@resolver : CandidateRules)
  end
end

Thank you,

The solution is generic aliases:
class CandidatesProducer(T)
  alias CandidateRules(T) = Hash(String, Hash(T, Array(T)))

  def initialize(@resolver : CandidateRules(T))
  end
end

ore much less confusingly
class CandidatesProducer(T)
  alias CandidateRules(U) = Hash(String, Hash(U, Array(U)))

  def initialize(@resolver : CandidateRules(T))
  end
end


Remove handling code for mismatched nested schemas

Handling mismatched nested schemas is supported in libcudf by https://github.com/rapidsai/cudf/pull/17348, thus we no longer need it here.
Depends on:

https://github.com/rapidsai/cudf/pull/17348

build


"Copy to Clipboard" just puts a PNG in your clipboard.

I pasted this into the editing box from ScreenToGif. This is not a gif, this is a PNG.

Duplicated #251 Basically, it's not possible to copy gifs to the clipboard, maintaining all frames.

Well, is there really a point of having the feature if it doesn't work as implied by the name?

If you are talking about Save As > Copy to clipboard > File, then yes. Because it copies the file, allowing you to paste it somewhere else, using the File Explorer.
I could remove the single frame being copied too, to avoid this issue.

I think the clipboard function has it's uses so I wouldn't remove it.  Maybe change "Copy to clipboard" to "Copy frame to clipboard" or "Copy current frame to clipboard" to avoid confusion?


DateTime.AddDays() results are not comparable with DateTime instances

The result of a DateTime instance's AddDays() call triggers an exception if compared to the initial DateTime instance value. This is probably worth double-checking when the fix is applied, if it no longer happens also for other operations like AddMinutes(), and so on.
Steps To Reproduce
https://dev.deck.net/017a4e267727bec86a8bb2b40867833e
public class Program
{
    public static void Main()
    {
        DateTime d = DateTime.Now;
        DateTime d2 = d.AddDays(3);

        Console.WriteLine(DateTime.Compare(d, d2));
    }
}

Expected Result
According to this dotnet fiddle: https://dotnetfiddle.net/kh2znn
-1

Actual Result
System.Exception: TypeError: Cannot read property 'low' of null
    at o (https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:127838)
    at i.n.compare (https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:130212)
    at System.Int64.compareTo (https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:136434)
    at Object.compare (https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:19499)
    at Object.compare (https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:19046)
    at Function.Main (https://dev.deck.net/RunHandler.ashx?h=8703483:12:45)
    at https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:42674
    at HTMLDocument.i (https://dev.deck.net/resources/js/bridge/bridge.min.js?17.4.0-201810040712:7:6515)
    at i (https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js:2:27151)
    at Object.add [as done] (https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js:2:27450)

See also
DateTime.Compare exception Bridge forums' thread.

This scenario has been fixed. After another review and final testing, the fix will be included in the upcoming Bridge 17.8.0 release.
You can confirm with the following dev.deck.net sample:
https://dev.deck.net/017a4e267727bec86a8bb2b40867833e

A full test over all time zones have been undegone and all looks good, so the fix for this will be available next Bridge release!


Why media id has two composite?

I noticed that the id method of Media returns combination of  id + '_' + user_id.
Is there a reason for doing that?
It really confuses me. Because I think the id should be real id of this item. If people want user_id, they can get it from item.user.id
Or Is it because media id does not always unique, so that it need user_id to distinguish it?
Thanks

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.


Add code coverage

Tests first, of course.

Nah, too much effort for nearly no reward. The output is a static site; there is no dynamic code anywhere.


Added 3d direction dropdown code

Switched translate and change x blocks in project
Translate now uses 3d direction dropdown

You will need to approve the change, and merge it... then save the relevant application.


Window A/C always resets to Auto/Eco climate mode when turned on with automation.

I have a few automations set up for my window A/C, and Ive noticed that almost every time an automation triggers a parameter change the unit will switch from whatever climate setting it was on to eco mode, regardless of if the automation is set to change the climate mode or not. If I add in an action to set it to a specific climate mode (other than eco) it will briefly go to that mode, and then switch itself to eco mode.
I am running v0.6.11 and have tried a few older versions with no difference in behavior.

Hey I'm having a similar issue but only with the 'Set HVAC Mode' option. When I've set it to 'Cool', the automation will trigger but the mode is always set to Eco. I was able to control fan speed and set that to 'High' and that sticks. Below is the YAML for my automation. Has anyone else been able to get the HVAC mode to work correctly?
`alias: Office AC On
description: ""
triggers:

trigger: numeric_state
entity_id:

sensor.office_temperature_sensor_temperature
above: 75
conditions:

condition: state
entity_id: binary_sensor.office_presence_sensor_occupancy
state: "on"
actions:
action: climate.turn_on
metadata: {}
data: {}
target:
entity_id:
- climate.office_ac_climate
action: climate.set_fan_mode
metadata: {}
data:
fan_mode: High
target:
entity_id:
- climate.office_ac_climate
action: climate.set_hvac_mode
metadata: {}
data:
hvac_mode: cool
target:
entity_id: climate.office_ac_climate
mode: single
`


Searching after canceling the index download only searches open files

Testing microsoft/vscode#143575
Maybe I'm misunderstanding what the github api would return but I think there's an issue here.
Repro steps:

On desktop use github remote to connect to https://github.com/plotly/plotly.js/
Open search panel
Type in module.exports
Hit return
Cancel the download of the full index

Actual result:
Search results will be empty
Expected result:
I think it should find all the 'module.exports' in all of the js files. If you open a single js file, it will find 'module.exports' in that file.

Closing as there's nothing we can do about this now. We can revisit whenever the new GitHub code search API becomes available.


Add typecast to freezable

Codecov Report
Patch coverage: 94.73% and project coverage change: +0.13 :tada:

Comparison is base (156fe66) 76.53% compared to head (a81bf26) 76.67%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #328      +/-   ##
==========================================
+ Coverage   76.53%   76.67%   +0.13%
==========================================
  Files          29       29
  Lines        2131     2148      +17
==========================================
+ Hits         1631     1647      +16
- Misses        500      501       +1

Flag
Coverage Δ

unittests
76.67% <94.73%> (+0.13%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

elfpy/types.py
98.30% <94.73%> (-1.70%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


members with no error returns an error

Traceback (most recent call last):
File "/app/cogs/utils.py", line 852, in _eval
ret = await func()
File "", line 4, in func
File "/app/.heroku/python/lib/python3.6/site-packages/crasync/core.py", line 65, in get_profile
return Profile(self, data)
File "/app/.heroku/python/lib/python3.6/site-packages/crasync/models.py", line 36, in init
self.from_data(data)
File "/app/.heroku/python/lib/python3.6/site-packages/crasync/models.py", line 258, in from_data
self.clan_tag = clan.get('tag')
AttributeError: 'NoneType' object has no attribute 'get'

Should return None if profile has no clan.

if clan == None:
    self.clan_name = None
    self.clan_tag = None
else:
    self.clan_name = clan.get('name')
    self.clan_tag = clan.get('tag')

should work, need to do the same for Clan object.

Yeah that's a good idea, made it is as my code editor kept asking me to :/


update to 0.20.0

pyrsistent 0.20.0
Destination channel: defaults
Links

PKG-3704
Upstream repository
Upstream changelog/diff

Linter check found the following problems:
ERROR conda.cli.main_run:execute(124): `conda run conda-lint /tmp/abs_6bjs6r7mfj/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:20: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.

===== ERRORS =====

clone/recipe/meta.yaml:47: http_url: http://github.com/tobgu/pyrsistent is not https
===== Final Report: =====
1 Error and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(124): `conda run conda-lint /tmp/abs_c65e0grxsb/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:20: host_section_needs_exact_pinnings: Linked libraries host should have exact version pinnings.
===== Final Report: =====
0 Errors and 1 Warning were found


Everyone should comment at-least on one element in the html and CSS.

removing the default margin and padding can help you to get the exact height and length of all elements.


request: keyboard shortcut for right mouse click

when my screen turns off I don't like having to raise my hands from my keyboard ....

cf adc547fa6e8e6167cd9633a97d98de6665b8c23a
#1302 #1613


Rename signals_linux.go to signals_posix.go

Commit 00adde7 added signals support and used the go:build directive
to handle different GOOS.  However, since the signals_linux.go files uses
one of Golang's magic file name OS endings (_linux.go), it is ignored when
GOOS=darwin.
To remedy this, I simply renamed the file to signals_posix.go since it includes
POSIX signals such as SIGHUP and SIGTERM.

Thanks Evan @neomantra !


A slightly more real pass at caching the sensor list

Store the sensor list in localstorage. Hopefully fail gracefully when it goes wrong. Throw away the cached data if it's been more than a day or there's a version mismatch.

It looks like Prettier didn't hate it, but just failed to run. (Of course, Prettier -may- hate it)

It looks like Prettier didn't hate it, but just failed to run. (Of course, Prettier -may- hate it)

Ah weird, seems like the action fails to run. I think this is due to a limitation of GitHub actions not running in a fork. I'll go ahead and disable it for PRs for less noise. The clean up will still happen when code lands in main.

❤ Overall this looks great! I think maybe we should still add some manual way to clear out the cache. Maybe we can detect a key bind or add a URL parameter or something. Thank you so much for this!

❤ Overall this looks great! We can do this in a follow up, but I think maybe we should still add some manual way to clear out the cache. We can detect a key bind or add a URL parameter or something. Thank you so much for this!

Key binds and URL params aren't workable for PWAs that have been saved to a homescreen on a phone. Instead, I added clickable link in the lower right corner of the page.

(This is once again ready for review)


Add NonEmptyString type

Hello 👋🏼
Have you consider including a NonEmpty as a string constrain?
In the project I am working right now we have defined the type as follows:
type NonEmptyString = String :| Not[Empty]
We use it as a control type until we come up with a better refinement. It can be useful for early phases of design.
Thank you!

I'm unsure about the goal of it. Empty implies Blank (althrough the given Implication is not present in the codebase) so Not[Blank] already implies Not[Empty].
Therefore, NonEmpty is just Not[Empty] with a description so what is its purpose compared to just using Not[Empty]?

Closed due to inactivity. See #214


License on pypi incorrectly marked as GPLv3

As mentioned in https://github.com/dswah/pyGAM/issues/269, the license on PyPi is still GPLv3. A new version of pyGAM would need to be published to PyPi to reflect the latest license.

Thanks! finally fixed!


QGB posting confirms to a reserved namespace ADR

Currently, we're posting Valset Confirms and DataCommitment Confirms directly in state. This is posing us with limitations such as: state grows and increasingly high gas fees.
Thus, we can think of posting the confirms to a reserved namespace to solve the above issues.
So, we will need to formalize the decision in an ADR.

Update, we decided to update the ADR to reducing the QGB module state.

no longer relevant as per the new design


Have a common storage module across streamline and registry

The storage module code between registry and streamline has diverged. Bring in changes from streamline and maintain a common storage across streamline and registry.

#270 resolves this issue.

@arunmahadevan Thanks for addressing this issue.


Compilation error under c++20 with constexpr

Hello,
I have compilation errors for the following code:
#include <iostream>
#include <boost/static_string.hpp>

constexpr auto getString()
{
    boost::static_strings::static_string<1024> content;
    content.append("Hello world");
    return content;
}

constexpr auto msg = getString();

int main()
{
    std::cout << msg.c_str() << std::endl;
    return 0;
}

The code fails to compile under:

clang 13.1.6
VS2022 17.2.6

The walk around I've found is to allow an array initialisation of static_string_base class, meaning replacing:
#ifdef BOOST_STATIC_STRING_CPP20
    value_type data_[N + 1];
#else
    value_type data_[N + 1] {};
#endif

with
    value_type data_[N + 1] {};

It looks like the issue is that boost config is using BOOST_STATIC_STRING_STANDARD_VERSION which is essentially __cplusplus with fixes for MSVC.  This does not tell us that the compiler supports anything in C++20 other than the -std=c++20 flag has been set.  I think for the init stuff in C++20, there is a feature flag set by the compiler __cpp_constexpr_dynamic_alloc >= 201907L, but not 100% that is the correct flag.

Ah ok, I see now.  I thought it might have came with the allocator support in More Constexpr Containers, I didn't know about Permitting trivial default initialization in constexpr contexts

This should have been fixed in #32


fix fix routine load job state can not changed correctly

Proposed changes
If meets some error like out of range, routine load job state should change from running to pause.
When rollback transaction, the RPC will send to meta service directly, which can not change state by transaction information.
This pr sends RPC to FE first to solve this problem.

run buildall


What happened to attributes?

 Now all entities attributes seems to be missing.
Any way they can be fixed?

Nothing was touched in the code base for a very long time now. Did you recently update your version of home assistant?

I update it every month with the new releases however do read the breaking changes thoroughly. I don't recall seeing anything that would affect it however it could be the cause.
Will the integration support newer versions of HA?

I'm just trying to isolate the cause. There we report earlier of something being deprecated showing up in the logs a couple of releases ago. Likely this deprecation went through in the last update.
I haven't updated in a while, so i haven't seen this.
Unfortunately there is always a possibility that things in Home Assistant will change and break community plugins like your experiencing.
Would you be able to roll back your last update of HA? That would restore your service at least.
As per this software being future proof, this might be a bit trickier. Would love any help from the community on this one.

I'm using a few of the newer features so can't really roll back.
It's not mission critical for me but has been super handy. My team also use it for our business, so I'm willing to contribute some $$ if someone can get it up to date

These issue should be fixed. I also had the same issue, but with one of the updates that happened it got solved I think.
Is it possible to add a version number to the integration? Would be easier to follow up everything aswell :)

Valid point @stefdewilde ; i just created a tag and a release here


Incorrect annotation of shapes in Unet in lesson #7?

Hi! It's me again.
I'm creating an annotated version of the UNet in lesson #7 (diffusion models). I'm adding more comments + assertions for the shapes of all inputs/outputs/weights/intermediate steps.
While doing this, I noticed there might be a mistake in some of the comments?
Here's the code that runs the UNet on dummy data (from the lesson):
# A dummy batch of 10 3-channel 32px images
x = torch.randn(10, 3, 32, 32)

# 't' - what timestep are we on
t = torch.tensor([50], dtype=torch.long)

# Define the unet model
unet = UNet()

# The foreward pass (takes both x and t)
model_output = unet(x, t)

Inside the actual UNet this is the forwad pass
    def forward(self, x: torch.Tensor, t: torch.Tensor):
        """
        * `x` has shape `[batch_size, in_channels, height, width]`
        * `t` has shape `[batch_size]`
        """

        # Get time-step embeddings
        t = self.time_emb(t)

It says that the shape of t is [batch_size]. But the shape of t is 1, which is to be expected if we look at the code that is testing the UNet.
Specifically, the assertion:
        batch_size = x.shape[0]
        print(t.shape)
        assert t.shape[0] == batch_size

fails.
I'm not sure exactly what's going on here. My hypothesis is as follows: The UNet is being trained on a batch of images. Each image in the batch should be accompanied by its own time step number. However, it looks like only a single time-step is being passed into the UNet.
Somewhere along the line, this time-step is being accidentally broad-casted by Pytorch to fit the batch dimension and being used as the time-step for all images.
Does that sound correct to you?

I think the accidental broadcast is happening here (code is messy b/c I added my own annotations, but it's inside of ResidualBlock):
        batch_size = 1

        # First convolution layer
        h = self.conv1(self.act1(self.norm1(x)))

        time_emb = self.time_emb(t)
        assert t.shape == (batch_size, self.time_channels)
        assert time_emb.shape == (batch_size, self.out_channels)
        time_emb = time_emb[:, :, None, None]
        assert time_emb.shape == (batch_size, self.out_channels, 1, 1)
        # This looks like:
        # [ [[a]], [[b]], [[c]], [[d]], [[e]], [[f]] ]
        # when self.out_channels = 6

In general, you'd have a separate random t for each image (so it would be shape [batch_size]). But for the demo and during sampling it's the same t for the whole batch, so it's convenient to also accept a single value. An alternative would be to force the right shape (as you're doing with the assert) and tweak the sampling code to pass in t as a tensor of shape [batch_size] instead of [1].
During training, t has the shape described:
t = torch.randint(0, n_steps, (batch_size,), dtype=torch.long).cuda()

(I could be mistaken on this, will take a look at the code in more depth when I have a bit more time)

Got it! This make sense. You allow the NN to accept a single value of t, which makes the assumption that all images are at the same timestep. This makes it more convenient to use. Sounds good!


Fix input map settings theming

Currently, it does not update when theme is changed, which leads to the results like:

Thanks!


Fix tests failing on Java 8 + small test refactoring

the order of elements in the JSON string is not defined
and on Java 8 it is different that before. The tests
are now checking separately for all specific parts of
the string, instead of the string as a whole

@tsurdilo, @jlindop could you please take a look?

@psiroky Thanks for fixing these unit tests
+1

master: f7761cc95949413da943e75dfb73a53a413d8655


Update write HTTP Request for ElasticSearch 6.x

ElasticSearch 6.x has changed to enable strict content-type checking; need to set the header in the request

I had the same issue and the solution fixed it.


Installer stuck after "started authorization manager" on VirtualBox

Issue:
Trying to install latest ISO on VirtualBox, after the "Started Authorization Manager" there is no visual updates. Ubuntu installer works on the same VirtualBox
And question:
I want to install manjaro sway in headless mode on VPS, to access it with wayvnc. Initial idea were to export image to the hosting: https://www.vultr.com/docs/import-a-server-to-vultr-vps/, but I could just install it with pacman. Is there any guideline on how to install manjaro sway over regular archlinux (including video-drivers for the headless mode)?

Update:
I followed another guide: https://www.vultr.com/docs/requirements-for-uploading-an-os-iso-to-vultr and followed installation steps, so it is easier with vultr. But my question above is still open ;)

Regarding the OP: No, there is no guide on how to install over archlinux and honestly I don't think that would be a good idea. It could, however, work with another manjaro edition (like gnome). You'd first need to install all the packages as listed here. Afterwards you'd need to create the files according to our desktop-overlay. It should ™ be possible to create a little bash script doing both. Would you be interested in that?
Regarding the whole topic: I have no experience at all with those kinds to automated installs. I know them tho, for example if you install Windows or Ubuntu in Gnome Boxes, that seems to work pretty well. I have no idea how to cater that to be honest. I you guys have any insights as to what we'd have to do from an OS side, we eventually could provide for this.

^^ updated my initial comment with some more information across the several different questions you had. please next time try to create separate issues for different topics, as I don't really understand if/how the virtualbox and the VPS topic are connected.

closing due to no reaction and not any focus of mine.

I have the same issue.
Trying to install manjaro-sway-21.3.2-221023-linux515.iso ISO on VirtualBox, but after the "Started Authorization Manager" there are no visual updates. Other distros are working fine.
Host Fedora 36 + VirtualBox 7.0

I had the same problem using gnomeboxes/kvm on a pop-os 22.04 host.
Turning on 3D accel. in guest prefrences in gnomeboxes fixes the problem for some reason.

No success for me either. It keeps staing a start job is running to initialise Pacman keyring, but that never succeeds, so you can't login.

Success with using gnome-boxes, instead of virtualbox.


Compatibility with Capacitor 5

Describe the bug
The plugin has configured source & target compatibility with JDK 11 (https://github.com/capacitor-community/photoviewer/blob/main/android/build.gradle#L45) as well as kotlinOptions with jvmTarget 17 (https://github.com/capacitor-community/photoviewer/blob/main/android/build.gradle#L49). Capacitor 5 requires AGP 8, which has JDK 17 as a prerequisite.
To Reproduce
Install the plugin in an app with capacitor 5 (or upgrade an existing project with the plugin to capacitor 5).
Expected behavior
Installation should work as expected. Either by no longer specifying the source & target compatibility within the plugin or by changing to JDK 17.
Additional context
Additionally, the package name should be moved from the AndroidManifest.xml file to build.gradle in the android DSL with namespace (though some capacitor 5 auto-magically does this with a migration script for plugins which have not already done it themselves). This is a breaking change with AGP 8. And the peer dependencies should be updated to signal compatibility with capacitor 5.

@adnbrownie it has not been converted yet to Capacitor5

When is the conversion to Capacitor 5 scheduled to happen?

@anthonyplews @adnbrownie You have a beta version published under the tag next can you please test it and revert to me in case of issues or success.

@jepiqueau I can confirm that it works on both Android and iOS, thanks for the quick response.

@anthonyplews thanks for your feedback i will publish it soon as the latest release

closing since version 3.0.0 of the plugin was released with Capacitor 5 support


UAT | CSS Issue | Maps

Module: E-filing
Screen: Complainant and Respondent Details
Issue:
CSS Message displayed above map

This issue is fixed and working as excepted in UAT env.

resolved


chore: update readme to include a features section

This PR

adds a new banner
Adds a feature section

Related Issues

Part of #179
Notes

Follow-up Tasks

Move docs to the wiki section of the repo. It's easier to maintain and structure.
How to test

Signed-off-by: Michael Beemer<EMAIL_ADDRESS>

I would like some feedback on this to see what everyone thinks. I would also like to move most of the docs to the wiki section of the repo. This would allow us to more easily manage and structure the docs.

:fire:

I started the wiki but it's taking a bit longer than expected. I'll try and have it wrapped up by tomorrow.


PORTING namelist_anav13jclim to v2

Depends on #580

Diagnostic two_variables.ncl dependes on #531.

fgco2 diagnostics depend on #550.

IPSL-CM5B-LR (nbp and lai) depend on #538.

[ ] Reading HadGEM2-ES and fx_files depends on #580.
[ ] Diagnostic two_variables.ncl depends on #531.
[ ] tos and fgco2 diagnostics depend on #550.
[ ] nbp and lai for IPSL-CM5B-LR depend on #538.

I started implementing the ocean variables and got some errors. Since I don't have experience in evaluating ocean models at all it would be nice to get some help from you guys @zklaus @ledm. Can you give me some tips ? :smile:
tos of bcc-csm1-1 and bcc-csm1-1-m:
Traceback (most recent call last):
  File "ESMValTool/esmvaltool/preprocessor/_regrid.py", line 209, in regrid                                   │
    result = _regrid_esmpy.regrid(src_cube, target_grid, scheme)                                                                         │
  File "ESMValTool/esmvaltool/preprocessor/_regrid_esmpy.py", line 349, in regrid                             │
    regridder = build_regridder(src_rep, dst_rep, method)                                                                                │
  File "/ESMValTool/esmvaltool/preprocessor/_regrid_esmpy.py", line 255, in build_regridder                    │
    regrid_method, mask_threshold)                                                                                │
  File "ESMValTool/esmvaltool/preprocessor/_regrid_esmpy.py", line 150, in build_regridder_2d                 │
    src_field = cube_to_empty_field(src_rep)                                                                                │
  File "ESMValTool/esmvaltool/preprocessor/_regrid_esmpy.py", line 128, in cube_to_empty_field                │
    circular = is_lon_circular(lon)                                                                                │
  File "ESMValTool/esmvaltool/preprocessor/_regrid_esmpy.py", line 112, in is_lon_circular                    │
    seam = (lon.bounds[1:-1, -1, (1, 2)]                                                                                │
TypeError: 'NoneType' object is not subscriptable

The raw input file looks like this:
netcdf tos_Omon_bcc-csm1-1_historical_r1i1p1_185001-201212 {
dimensions:
        time = UNLIMITED ; // (1956 currently)
        rlat = 232 ;
        rlon = 360 ;
        bnds = 2 ;
variables:
        double time(time) ;
                time:bounds = "time_bnds" ;
                time:units = "days since 1850-01-01" ;
                time:calendar = "noleap" ;
                time:axis = "T" ;
                time:long_name = "time" ;
                time:standard_name = "time" ;
        double time_bnds(time, bnds) ;
        double rlat(rlat) ;
                rlat:bounds = "rlat_bnds" ;
                rlat:units = "degrees_north" ;
                rlat:axis = "Y" ;
                rlat:long_name = "latitude in rotated pole grid" ;
                rlat:standard_name = "grid_latitude" ;
        double rlat_bnds(rlat, bnds) ;
        double rlon(rlon) ;
                rlon:bounds = "rlon_bnds" ;
                rlon:units = "degrees_east" ;
                rlon:axis = "X" ;
                rlon:long_name = "longitude in rotated pole grid" ;
                rlon:standard_name = "grid_longitude" ;
        double rlon_bnds(rlon, bnds) ;
        float lat(rlat, rlon) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "latitude coordinate" ;
                lat:units = "degrees_north" ;
        float lon(rlat, rlon) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "longitude coordinate" ;
                lon:units = "degrees_east" ;
        float tos(time, rlat, rlon) ;
                tos:standard_name = "sea_surface_temperature" ;
                tos:long_name = "Sea Surface Temperature" ;
                tos:comment = "\"this may differ from \"\"surface temperature\"\" in regions of sea ice.\"" ;
                tos:units = "K" ;
                tos:original_name = "SST" ;
                tos:cell_methods = "time: mean" ;
                tos:cell_measures = "area: areacello" ;
                tos:missing_value = 1.e+20f ;
                tos:_FillValue = 1.e+20f ;
                tos:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_ocean_fx_bcc-csm1-1_historical_r0i0p0.nc areacello: areacello_fx_bcc-csm1-1_historical_r0i0p0.nc" ;
                tos:coordinates = "lat lon" ;
}

Apparently there are no bounds for lat and lon, only rlat and rlon have them. How do I calculate them?

Hi @schlunma,
I think you diagnosed the problem correctly; it is the missing bounds for lat and lon.
As for calculating them:
rlat and rlon tell us that it is a rotated grid, and so I had written a nice description here how to transform the bounds. Unfortunately, looking at the coordinates I discovered that contrary to the claims of the coordinate variables, this is not a rotated grid at all and rather a different version of tri-polar grid.
At this point your options are:

Remove the model from consideration (recommended)
Hunt down the gridspec file (gridspec_ocean_fx_bcc-csm1-1_historical_r0i0p0.nc, see comment in ncdump) or enough detail in the model documentation (ES-DOC, official)
Use some interpolation scheme (scipy's map_coordinates comes to mind) to guesstimate bounds.

If you can solve this in a fix script, it would of course be quite useful as it opens up both versions of the bcc model.
Also, it seems the 4 GFDL models might have a similar metadata problem, though the bounds are present in that case.
Good luck!

I've spotted similar problems when testing the irregular regridding with sic (see #550).
Since this is very model- and variable-specific, I support @zklaus suggestion to address this in a fix script, if possible.
Please open an issue for each case (or group of similar cases), so we can document them for future application.

Thanks @zklaus for your help, I will try to write a fix for it and open a new issue :+1:

Has this name list been ported to the new version? I am not able to see this in the list of recipes yet though.

I think it is still work in progress.

Ok. Thanks.

If I want to use  a new dataset for observed GPP (FLUXCOM), is there any other recipe I can use? I know this recipe uses the MTE data set and the FLUXCOM data is the new replacement for MTE. This is for the paper.

I am trying to generate GPP based plots for the paper if possible with the FLUXCOM data set. As per @schlunma's suggestion, I cloned the branch at
https://github.com/ESMValGroup/ESMValTool/blob/Anav13JClim_v2/esmvaltool/recipes/recipe_anav13jclim.yml
created a new env and ran a reduced version of the original recipe_anav13jclim. This version only has gpp based diagnsotics. I found that the program hangs in an ncl script at a point where copyVar is called. I am not an ncl expert so am not sure why this is happening. Am attaching the log reporting the error and recipe I used in two subsequent comments.
@valeriupredoi - I have copied over the cmorized fluxcom files into a temporary directory (fluxcom-cmorized-test) under esmeval. Once the pull request is approved I can move it under obsdata-v2. I was wondering if the chunking issue for this data( https://github.com/SciTools/iris/issues/3362)  played a role in this or if it was something else. Hence tagging you.

Log file
DEBUG   <<< Entering mvi_nh
DEBUG   <<< Entering select_metadata_by_name (interface_scripts/interface.ncl)
DEBUG   <<< Entering select_metadata_by_atts (interface_scripts/interface.ncl)
DEBUG   >>> Leaving select_metadata_by_atts (interface_scripts/interface.ncl)
DEBUG   >>> Leaving select_metadata_by_name (interface_scripts/interface.ncl)
DEBUG   <<< Entering metadata_att_as_array (interface_scripts/interface.ncl)
INFO    ++++++++++++++++++++++++++++++++++++++++++
INFO    mvi_nh (var: gpp_grid)
INFO    ++++++++++++++++++++++++++++++++++++++++++
DEBUG   <<< Entering exit_if_missing_atts (interface_scripts/logging.ncl)
DEBUG   >>> Leaving exit_if_missing_atts (interface_scripts/logging.ncl)
DEBUG   <<< Entering select_region (diag_scripts/shared/latlon.ncl)
DEBUG   >>> Leaving select_region (diag_scripts/shared/latlon.ncl)
INFO    Restricting mean calculation to time period 1980-2005
INFO    Restricting mvi calculation to time period 1980-2005
DEBUG   Processing FLUXCOM-GPP-ANN
DEBUG   <<< Entering read_data (interface_scripts/data_handling.ncl)
INFO    Reading in file = /home/users/ranjinis/projects/src/anav13/ESMValTool/esmvaltool/esmvaltool_output/fluxcom-gpp-ann/recipe_test_fluxcom_20190806_205713/preproc/diag_mvi_gpp/gpp_grid/OBS_FLUXCOM-GPP-ANN_reanaly_v1_T2Ms_gpp_grid_1980-2005.nc
DEBUG   >>> Leaving read_data (interface_scripts/data_handling.ncl)
DEBUG   <<< Entering time_operations (diag_scripts/shared/statistics.ncl)
DEBUG   >>> Leaving time_operations (diag_scripts/shared/statistics.ncl)
DEBUG   Processing bcc-csm1-1-m
DEBUG   <<< Entering read_data (interface_scripts/data_handling.ncl)
INFO    Reading in file = /home/users/ranjinis/projects/src/anav13/ESMValTool/esmvaltool/esmvaltool_output/fluxcom-gpp-ann/recipe_test_fluxcom_20190806_205713/preproc/diag_mvi_gpp/gpp_grid/CMIP5_bcc-csm1-1-m_Lmon_historical_r1i1p1_T2Ms_gpp_grid_1980-2005.nc
DEBUG   >>> Leaving read_data (interface_scripts/data_handling.ncl)
DEBUG   <<< Entering time_operations (diag_scripts/shared/statistics.ncl)
DEBUG   >>> Leaving time_operations (diag_scripts/shared/statistics.ncl)
fatal:Assignment type mismatch, right hand side can't be coerced to type of left hand side
fatal:Assignment type mismatch, right hand side can't be coerced to type of left hand side
fatal:["NclVar.c":1390]:Assignment type mismatch, right hand side can't be coerced to type of left hand side
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 120 in file /home/users/ranjinis/anaconda3/envs/fluxcom-anav13/lib/ncarg/nclscripts/csm/contributed.ncl
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 228 in file /home/users/ranjinis/projects/src/anav13/ESMValTool/esmvaltool/diag_scripts/carbon_cycle/mvi.ncl

Recipe ( I reduced the number of data sets for this comment)
documentation:
description: |
This recipe reproduces most of the figures of Anav et al. (2013).
authors:
- anav_al
- wenz_sa
- righ_ma
- schl_ma
references:
- anav13jclim
projects:
- embrace
preprocessors:
noop:
{}
landmask_and_regrid:
mask_landsea:
mask_out: sea
regrid:
target_grid: 2x2
scheme: linear
regridding:
regrid:
target_grid: 2x2
scheme: linear
landmask:
mask_landsea:
mask_out: sea
grading:
regrid:
target_grid: ref_dataset
regrid_scheme: linear
mask_fillvalues: true
regrid_to_ref:
regrid:
target_grid: reference_dataset
scheme: linear
mask_fillvalues:
threshold_fraction: 0.95
diagnostics:
diag_mvi_gpp:
description: MVI scatter plot for gpp (Figure 8).
themes:
- phys
realms:
- land
variables:
gpp_grid : &regrid_Lmon_1980_2005_FLUXCOM
preprocessor: regridding
project: CMIP5
mip: Lmon
field: T2Ms
exp: historical
ensemble: r1i1p1
start_year: 1980
end_year: 2005
reference_dataset: FLUXCOM-GPP-ANN
plot_units: PgC y-1
derive : true
additional_datasets: &gpp_datasets
- {dataset: FLUXCOM-GPP-ANN, project: OBS, type: reanaly, version: v1, tier: 3}
- {dataset: bcc-csm1-1}
- {dataset: bcc-csm1-1-m}
scripts:
mvi_global: &mvi_global
script: carbon_cycle/mvi.ncl
legend_year_outside: true
sort: true
styleset: CMIP5
region: Global
mean_time_range: [1980, 2005]
mvi_time_range: [1980, 2005]
mvi_nh: &mvi_nh
<<: *mvi_global
region: Northern Hemisphere
mvi_sh: &mvi_sh
<<: *mvi_global
region: Southern Hemisphere
mvi_trop: &mvi_trop
<<: *mvi_global
region: Tropics
diag_main_gpp:
description: Error bar, sasonal cycle and evolution plots for gpp (Figure 9).
themes:
- phys
realms:
- land
variables:
gpp_grid:
<<: *regrid_Lmon_1980_2005_FLUXCOM
preprocessor: noop
reference_dataset: FLUXCOM-GPP-ANN
plot_units: PgC y-1
additional_datasets: *gpp_datasets
scripts:
main_global: &main_global
script: carbon_cycle/main.ncl
legend_year_outside: false
legend_outside: false
sort: true
seasonal_cycle_plot: true
errorbar_plot: true
mean_IAV_plot: true
styleset: CMIP5
region: Global
evolution_plot: true
evolution_plot_ref_dataset: FLUXCOM-GPP-ANN
evolution_plot_anomaly: false
evolution_plot_volcanoes: false
main_nh: &main_nh
<<: *main_global
region: Northern Hemisphere
evolution_plot_ref_dataset: FLUXCOM-GPP-ANN
evolution_plot_anomaly: false
evolution_plot_volcanoes: false
main_sh: &main_sh
<<: *main_global
region: Southern Hemisphere
evolution_plot_ref_dataset: FLUXCOM-GPP-ANN
evolution_plot_anomaly: false
evolution_plot_volcanoes: false
main_trop: &main_trop
<<: *main_global
region: Tropics
evolution_plot_ref_dataset: FLUXCOM-GPP-ANN
evolution_plot_anomaly: false
evolution_plot_volcanoes: false

@rswamina please don't copy&paste yaml formatted text into plain text as gitHub comment; it is impossible for me to run your recipe since I am not going to spend an hour editing it back to yaml format :beer:
Also, have you tried debugging yourself ie just throw in a couple print statements see how the from variable looks as compared to the to variable
I have loaded your FLUXCOM data from one file and can access the data no problem, no such issue related to chunking

@valeriupredoi - Apologies, I thought the yml file or recipe was needed for anyone else to check and I did not know how to format it as yml text. I have hidden the comment now.

you can post it as code snippet eg
preprocessors:
  pp_rad:
    regrid:
      target_grid: 1x1
      scheme: linear
  pp_rad_derive_var:
    # use this not to overwrite variables that are used both
    # for derivation and as standalone diag vars
    regrid:
      target_grid: 1x1
      scheme: linear

or attach it as a file attachement

I have also noticed that the bounds for latitude are in reverse eg        [ 89.5,  89. ],        [ 90. ,  89.5]] - any idea why? DOn't think this is affecting the run but it's something to look into

Do you mean the bounds array in the OBS data for latitude?

yep, those guys, each doublet is in reverse order

The guess_bounds function called from the fix_coords function sets the bounds array that way since it is called before flipping coordinates. This is now fixed. However I continue to have the error. Initially I thought the bounds array might be causing it because the error occurs in the call to a function called copyVarCoords. I am not able to find the definition for that function in the library. Is there some way other than using grep to find it?

Ranjini, can you pls post the yml-formatted recipe here so I can try
running it myself? :beer:
Dr Valeriu Predoi.
Computational scientist
NCAS-CMS
University of Reading
Department of Meteorology
Reading RG6 6BB
United Kingdom
On Fri, 9 Aug 2019, 00:26 rswamina<EMAIL_ADDRESS>wrote:

The guess_bounds function called from the fix_coords function sets the
bounds array that way since it is called before flipping coordinates. This
is now fixed. However I continue to have the error. Initially I thought the
bounds array might be causing it because the error occurs in the call to a
function called copyVarCoords. I am not able to find the definition for
that function in the library. Is there some way other than using grep to
find it?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ESMValGroup/ESMValTool/issues/473?email_source=notifications&email_token=AG5EFIYJUOBZTLKOMS5ZRNLQDSTTXA5CNFSM4FGJSNGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD35FNEY#issuecomment-519722643,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AG5EFIYOLMFCYZJL6PMQIHLQDSTTXANCNFSM4FGJSNGA
.

Ok..I am finding pasting it as code very hard. So I put the recipe (recipe_test_fluxcom.yml) and the fixed data under esmeval/fluxcom-cmorized-test on JASMIN. Apologies.

that's perfect, I'll have a stab at it now :beer:

Thanks. Also I was wondering if this could be an issue with other data sets. For e.g. if latitude values go from 90 to -90 and no bounds array is specified, we fix coords (where bounds are added). These bounds form pairs like [90,89.5] and so on because the lat values start at 90. Then we flip the coord points but the pairs in bounds still remain the same, just go in reverse order. I don't know if this is a problem when we use the data in recipes.

it should be fine, no problems with any of the cmor checkers and the inverted nature of the bounds should not matter at diagnostic level either.
I am getting this when running your recipe:
INFO    ++++++++++++++++++++++++++++++++++++++++++
INFO    main_global (var: gpp_grid)
INFO    ++++++++++++++++++++++++++++++++++++++++++
INFO    Reading in file = /home/users/valeriu/esmvaltool_var_test/LEE/recipe_test_fluxcom_20190809_104217/preproc/diag_main_gpp/gpp_grid/OBS_FLUXCOM_reanaly_ANN-v1_T2Ms_gpp_grid_1980-2005.nc
INFO    Reading in file = /home/users/valeriu/esmvaltool_var_test/LEE/recipe_test_fluxcom_20190809_104217/preproc/diag_main_gpp/gpp_grid/CMIP5_bcc-csm1-1-m_Lmon_historical_r1i1p1_T2Ms_gpp_grid_1980-2005.nc
INFO    Wrote variable gpp_grid to /home/users/valeriu/esmvaltool_var_test/LEE/recipe_test_fluxcom_20190809_104217/work/diag_main_gpp/main_global/_yearly_gpp_grid_Glob.nc
INFO    Wrote variable gpp_grid to /home/users/valeriu/esmvaltool_var_test/LEE/recipe_test_fluxcom_20190809_104217/work/diag_main_gpp/main_global/_monthly_gpp_grid_Glob.nc
 CDFT_T: bad input parameter, IER=          -5
fatal:divide: Division by 0, Can't continue
^Mfatal:Div: operator failed, can't continue
^Mfatal:["Execute.c":8637]:Execute: Error occurred at or near line 2542 in file ;

^Mfatal:["Execute.c":8637]:Execute: Error occurred at or near line 706 in file /home/users/valeriu/esmvaltool/esmvaltool/diag_scripts/carbon_cycle/main.ncl

any clue?

also note that the preprocessed output file has correct bounds due to cmor fixes

I think it fails in function get_wks in file aux_plotting.ncl when computing npages.

the cmor fix routines do not flip the order of each element in a pair. I thought they did which is why I got the results differently the first time. I had to add this bit in my cmorizer script for this data set.

I think it fails in function get_wks in file aux_plotting.ncl when computing npages.

Bamboozled. Why is it failing for me and not for you? Did you implement a fix for this but forgot to commit&push to branch?

No. it is failing for me as well. I found that the script fails in two different places - one is the copyVarCoord and the second is this. Unfortunately I am not able to reproduce the same errors each time. I have made no code changes to this branch. Only modified the original recipe to use just the gpp bits.

I couldn't run the whole recipe because we are missing some of the obs data needed (LAI ) and also I only need to plot gpp data.

I've changed the recipe a bit to have two CMIP models, and now NH goes through OK, it seems you need more than one CMIP model to do the plotting; still hitting the Var error, will look into it

That is interesting...I wanted to test with just one and wasn't quite sure what I expected to see. This may explain why I could not reproduce the error. I tried different data sets and must have included more than one.

the two variables that cause the crash are:
Variable: var_to (parameter)
Type: float
Total Size: 1684800 bytes
            421200 values
Number of Dimensions: 3
Dimensions and sizes:   [year | 26] x [lat | 90] x [lon | 180]
Coordinates:
            year: [1980..2005]
            lat: [-89..89]
            lon: [ 1..359]
Number Of Attributes: 8
  _FillValue :  1e+20
  dataset :     bcc-csm1-1
  typeConversion_op_ncl :       double converted to float
  coordinates : day_of_month day_of_year month_number year
  cell_methods :        time: mean (interval: 20 mintues) area: mean where land
  units :       kg m-2 s-1
  long_name :   Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land (relative to grid cell area)
  average_op_ncl :      dim_avg_wgt_n over dimension(s): time

Variable: var_from (parameter)
Type: float
Total Size: 1684800 bytes
            421200 values
Number of Dimensions: 3
Dimensions and sizes:   [year | 26] x [lat | 90] x [lon | 180]
Coordinates:
            year: [1980..2005]
            lat: [ -89..  89]
            lon: [   1.. 359]
Number Of Attributes: 6
  _FillValue :  1e+20
  coordinates : day_of_month day_of_year month_number year
  cell_methods :        time: mean (interval: 20 mintues) area: mean where land
  units :       kg m-2 s-1
  long_name :   Carbon Mass Flux out of Atmosphere due to Gross Primary Production on Land (relative to grid cell area)
  average_op_ncl :      dim_avg_wgt_n over dimension(s): time

It looks to me (by visual inspection of the way the lat-lon coordinates are written that they are of different formats (in seems to be float, from seems to be something else) - anyone with NCL experience (I am a n00b at NCL) can please comment?

I'm afraid I am not an expert either. @schlunma may be able to shed some light, perhaps?
Does this mean there are just a couple of problem datasets then?

Also are these regridded/derived vars from gpp? I don't recognize "var_to" and "var_from".

I will have a look at this soon. The branch is really old right now and needs to be updated. There were major changes in the tool (especially the whole core/tool separation), so it's not really surprising that something goes wrong.

@schlunma - Should I check this branch out to generate the plot using the FLUXCOM data once its CMOR-ization code has been approved ?


SES_UNCAUGHT_EXCEPTION what is this

im using chat gpt-4o but i get the error SES_UNCAUGHT_EXCEPTION what does this mean?

found anything?

i have this error too


cannot import caffe2.python.core for Error: caffe2/python/caffe2_pybind11_state.so

Build successfully, but when run with:
python -c "from caffe2.python import core" 2>/dev/null && echo "success" || echo failure

shows error:
WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
WARNING:root:Debug message: No module named caffe2_pybind11_state_gpu
CRITICAL:root:Cannot load caffe2.python. Error: caffe2/python/caffe2_pybind11_state.so:
undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKSs

I don't know why, although I find little same issue like #197, #346, their solution seems not useful.
help wanted...
platform information:

centos 7
python 2.7.5
gcc 4.8.5

python -m caffe2.python.operator_test.relu_op_test
WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
WARNING:root:Debug message: /home/work/caffe2_bin/caffe2/python/caffe2_pybind11_state_gpu.so: undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKSs
CRITICAL:root:Cannot load caffe2.python. Error: /home/work/caffe2_bin/caffe2/python/caffe2_pybind11_state.so: undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKSs

platform information:

centos 7
python 2.7.5
gcc 4.8.5

from caffe2.python import core
WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
WARNING:root:Debug message: /usr/local/caffe2/python/caffe2_pybind11_state_gpu.so: undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKSs
CRITICAL:root:Cannot load caffe2.python. Error: /usr/local/caffe2/python/caffe2_pybind11_state.so: undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKSs
python - 2.7.6
gcc 4.8.4
Ubuntu 14.04.3

Build successfully, and run the following command:
from caffe2.python import core

got error:
WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
WARNING:root:Debug message: caffe2/python/caffe2_pybind11_state_gpu.so: undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
CRITICAL:root:Cannot load caffe2.python. Error: caffe2/python/caffe2_pybind11_state.so: undefined symbol: _ZN6caffe26script15CompilationUnit6defineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

Environment:

Python 2.7.12
gcc 5.4.0
Ubuntu 16.04.2
cuda 8.0.61
cudnn 6.0.21

#1540 is a fix I sent last night, will take a moment to merge

This fixes this build issue for me - please reopen if it's still a problem

I am still having the same issue

from caffe2.python import core
WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
WARNING:root:Debug message: No module named caffe2_pybind11_state_gpu
CRITICAL:root:Cannot load caffe2.python. Error: libcaffe2.so: cannot enable executable stack as shared object requires: Invalid argument

@samarjeet Could you please try execstack --clear-execstack /path/to/libcaffe2.so and tell us if it works?

@samarjeet
If you find your *.so files are right in /usr/local/lib, try to ldconfig your new dynamic lib to make it available at once.
sudo ldconfig  # then the new addin *.so will be available


Checking submitted logo

Hello team! I have a question about our team logo.
Though #1288 has been merged, the token logo in the metamask seems to be different as we expected.
The file I submitted has a white background, but the logo in the metamask still is the logo I submitted before.
Which displays different logo background color depending on system theme (dark/light).
Will it take a while for our submitted logo to show up in Metamask?

@picardcapt1212 it should be solved now


Dont' skip setup group when userid is number

The PR #283 accidently skipped setting the group and caused bug.
Also add the code to set the group if the group is also number.
Signed-off-by: Lai Jiangshan<EMAIL_ADDRESS>

LGTM


i18n(ko-KR): update internationalization.mdx and api-reference.mdx

Description (required)

update internationalization.mdx
update api-reference.mdx
#7846

Related issues & labels (optional)

Closes #
Suggested label:

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File
Note
Locale

src/content/docs/ko/guides/internationalization.mdx
Localization changed, will be marked as complete.
ko

src/content/docs/ko/reference/api-reference.mdx
Localization changed, will be marked as complete.
ko

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


fixing up maxcut notebook

The notebook at least now executes for me locally.

@notmgsk Any idea who an approving reviewer would be?


routineStages is actually exported as defaultRoutineStages

Had an issue trying to grab routineStages from redux-saga-routines like so...
import {  routineStages, ... } from 'redux-saga-routines'
// routineStages is not exported from...

This is how it is referenced in the documentation^
After some digging, I tried:
import { defaultRoutineStages } ...

And it worked :) I can make a PR to update the docs?

@talor-hammond thank you!


Updated BetterCI Config

Signed-off-by: Soumya Ghosh Dastidar<EMAIL_ADDRESS>Proposed changes
Updated BetterCI config
Types of changes
What types of changes does your code introduce to Litmus? Put an x in the boxes that apply

[x] New feature (non-breaking change which adds functionality)
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Update (if none of the other choices applies)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I have read the CONTRIBUTING doc
[x] I have signed the commit for DCO to be passed.
[x] Lint and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works (if appropriate)
[ ] I have added necessary documentation (if appropriate)

/preview

/preview

/preview

/preview

/preview 20


backspace not working in the plot pane

When rendering a textbox in the plot pane, I can't use backspace.
To reproduce the issue you need the WebIO package:
using WebIO
dom"input"() |> display

The keybinding resolver gives this output:

cc @pfitzseb

For now you can add something like
'.ink-plot-pane webview':
  'backspace': 'native!'
  'delete': 'native!'
  'right': 'native!'
  'tab': 'native!'
  'down': 'native!'
  'up': 'native!'
  'left': 'native!'
  'enter': 'native!'

to your keymap.cson. I'm not entirely sure if that's the best solution in the long term though since whitelisting keybindings seems awkward.
This is also a similar issue to how we treat keybindings in the built-in terminals (except that the terminals listen to the keyboard events first and then hand them to Atom's resolver, which is the opposite order to the plot pane).


Setting to chunk sentences from agent to synth even when generate_responses=False

In cases where the synth is significantly slower than the agent, would be good to have an option to have the agent return a full, un-streamed block of text, but then chunk it based on sentences before sending to the synth, so the synth can return and start playing quickly.

this is fixed after the refactor to decouple agent response from synthesis


V1.2.1

Added convert_to and register_converters functions

Pull Request Test Coverage Report for Build 49

57 of 57 (100.0%) changed or added relevant lines in 7 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 44:
0.0%

Covered Lines:
352

Relevant Lines:
352

💛  - Coveralls


Docs link goint to Landing Page from Demo sublinks

http://mobileangularui.com/demo/#/
Go to any sublinks... like Scroll, Toggle, Tabs etc... Docs link in footer going to Landing Page of Mobile Angular.

I will fix it! Thanks


Switch from ANSI-styles to ANSI-256-colors

https://github.com/jbnicolai/ansi-256-colors
Would it be convenient  to switch to using ansi 256 in order to have more colors provided?

ansi-styles already supports 256 colors and more. We just need to find time to do a new release and use it in Chalk.

Ooh, great. Any expected time? 1mth or so?

FWIW -- Instead of options, perhaps something like chalk.customconfig.with.lots.of.dots(...) we could do chalk.extend() and let them extend the module ( or similar ) ?


GraphNode slots don't account for rotation

Tested versions
Reproducible in v4.3.dev6.official [89850d553], 4.2.2.stable.official [15073afe3]
System information
Godot v4.3.dev6 - Windows 10.0.19045 - Vulkan (Forward+)
Issue description
If a GraphNode has any kind of rotation in its transform, the slots will behave as if the GraphNode was not rotated at all, and you will only be able to interact with them from the positions they would have if the GraphNode was not rotated, despite the slots appearing to be visually rotated. In the example below, the output slots cannot even be interacted with as the GraphNode itself covers them.

Steps to reproduce

Create a scene with GraphEdit as the top-level node
Add a GraphNode
Add Control child nodes to the GraphNode
Enable at least one slot
Set the rotation in GraphNode to any number other than 0
Test the scene and attempt to drag a connection from one of the slots

Minimal reproduction project (MRP)
graphnode_rotation.zip

CC @Geometror

Hello, has anyone made any progress regarding this issue?
I'd like to try to solve it this week.

Not from my side, so go ahead :)
Although I'm not really sure whether this is worth fixing since I have a feeling this complicates things a lot for a very rare use case. I'd add a configuration warning instead, but maybe I'm wrong and this can be implemented elegantly.

https://github.com/godotengine/godot/pull/93774


Unattractive rendering in proteome comparison

Notice the contig numbers in the top left:

Now if i zoom in as far as I can with the browser, it never resolves itself.
BTW, this also brings up the old gripe that if we don't have a way to zoom into the diagram, then there is no point having the links to the protein page.

Also look at the numbers in dark lettering.  What does 0.0, 0.1, 0.2 etc. mean?  How can all of the smaller contigs be 0.0?

The outer most track shows contigs for the reference genome. This is useful in some cases to distinguish between two chromosomes or chromosomes and plasmids. However, If you select a crappy reference with hundreds of contigs, it is going to mess up the display.
Possible solutions:

Advise users to select high quality genomes as reference.
Highlight reference/complete genomes in the genome selector to make it easier to find them.
Or, in worst case, remove the outer contig track to provide better view

your preference?

The fix is needed from the server side.

The outer most track contains information about the size/scale of the contigs. This rendering is a fitting reminder of a bad reference choice. I would recommend no fix for now.


Increase number of metric per maas check

What version (commit) do you encounter this issue on?
All
What type of issue is this (bug, feature, documentation, regression)?
Feature
What is the expected behavior?
Increase the limit to the current allowed number.
I'm currently asking the MAAS team what the limit is
What is actually happening?
Disk util checks fail on large swift deployments
How can we reproduce this issue?
Install a disk util check with has large number scsi devices and verify inside the intelligence console
How can we verify your issue is addressed?
All disk util checks return OK
If this is a large issue, what can be done immediately to alleviate the issue while working on a longer-term solution?
Low prio
What is your evaluation on the importance of this issue, and why?

What branches / milestones do you believe this issue should target?
The list below is what is currently supported for backports
Remove branches (lines) you do not wish to target.

[ ] Master
[ ] liberty-12.1
[ ] liberty-12.0
[ ] kilo

https://github.com/rcbops/rpc-openstack/issues/1180 has a PR for this issue. The monitoring team increased the limit from 30 to 50.

As referenced above, there is another issue tracking this same work so I will close this issue in favour of https://github.com/rcbops/rpc-openstack/issues/1180


implement function for extracting MFCCs in dart

Hello, i being able to perform extractions of MFCCs with a lot of performance on android smartphones.
I advise you to look at an implementation I made in this repository. I've used this same implementation to classify bee audio and have achieved 90% accuracy so far.
This implementation follows the study of another implementation in python that I found in Kaggle that is in this link.
What makes this implementation really efficient is the FFT used. This implementation of the FFT is not naive. Look at the repository of this implementation here.

Hi @certainlyWrong
Looks good. If you can integrate the two libraries together and do a pull request, I’m more than happy to accept. I’ve been meaning to replace the native implementations (due to low accuracy) but never had the time to do so.

I also tried implementing it in C, but there's no need. The function in dart already has a lot of performance and is simpler to maintain. I tested it with a model trained using tflite_flutter and it gave great results on the smartphone.
It would be great to fork it and add it here, in which case we would have more tools for audio processing in one place, but I made the code in a hurry and there are a lot of things to fix. So maybe it will take a while.

No problems at all. It would be of great help to the community if you can provide more tools for audio processing in one place. Do let me know once you’re confident with your work.


[stable/filebeat] added optional annotations to daemonset

What this PR does / why we need it: adds optional annotations to daemonset
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #6700
Special notes for your reviewer:

/assign @unguiculus

/ok-to-test

/lgtm


[ENH] Add optional removal of accents on functions.clean_names, enabled by default.

Brief Description

I'd like to suggest an option to remove accents from column names on the clean_names function.
It could be implemented using the normalize function of the standard library unicodedata:
What is the best way to remove accents in a Python unicode string?
I have created a branch called strip_accents and checked that the code addition does not break any tests.
mralbu/pyjanitor/tree/strip_accents
Example API

# create test DataFrame
df = pd.DataFrame({"João": [1, 2], "Лука́ся": [1, 2], "Käfer": [1, 2]})

# remove column name accents
df = df.clean_names(strip_accents=True)
expected_columns = ["joao", "лукася", "kafer"]
assert set(df.columns) == set(expected_columns)

Thanks for pinging in, @mralbu!
Yes, I think this would be a great addition to the library. Would you like to submit in a PR?

Thank your for the great library! I use rstats janitor, and I did miss some of its functionality in python. (particularly cleaning column names and removing accents, which the R package does by default)
I'd be happy to submit a pull request, thanks!


Can't get customers who have agreed to Customer Agreements

Steps to reproduce
Connect-PartnerCenter
# New Customer Agreement
New-PartnerCustomerAgreement -CustomerId "<Customer's ID>" -AgreementType "MicrosoftCustomerAgreement" -ContactEmail "<Customer's Email>" -ContactFirstName "<Customer's FirstName>" -ContactLastName "<Customer's LastName>" -ContactPhoneNumber "<Customer's PhoneNumber>" -TemplateId "117a77b0-9360-443b-8795-c6dedc750cf9"

Expected behavior
Get-PartnerCustomerAgreement -CustomerId "<Customer's ID>"
# Display CloudAgreement & CustomerAgreement

Actual behavior
Get-PartnerCustomerAgreement -CustomerId "<Customer's ID>"
# Only showing CloudAgreement

Diagnostic logs
What should I do get diagnostic logs?
Environment

@jaehungim31 when this feature was added it was done in a way to avoid breaking existing functionality. So, you will need to specify the agreement type you can do this by running the following
Get-PartnerCustomerAgreement -AgreementType MicrosoftCustomerAgreement

@jaehungim31 when this feature was added it was done in a way to avoid breaking existing functionality. So, you will need to specify the agreement type you can do this by running the following
Get-PartnerCustomerAgreement -AgreementType MicrosoftCustomerAgreement

Thank you. Is working now.


Adds support of XSD element xs:all

Currently the element xs:all is not supported by the library.

Implemented with release/v1.1.0.