Add NodOn SIN-4-FP-21 quirk

Proposed change
This PR adds a quirk for SIN-4-FP-21 (PilotWire). The device reports itself as a SmartPlug but it has special manufacturer-specific cluster which allows setting the following modes:
        Off = 0x00
        Comfort = 0x01
        Eco = 0x02
        FrostProtection = 0x03
        ComfortMinus1 = 0x04
        ComfortMinus2 = 0x05

Additional information
The result look like this in Home Assitant:

Checklist

[x] The changes are tested and work correctly
[x] pre-commit checks pass / the code has been formatted using Black
[x] Tests have been added to verify that the new code works

@TheJulianJES I've re-pushed commits to use the v2 interface of QuirkBuilder(). Unfortunately, I didn't find an example of how to write tests for it. So, if you think tests are necessary here, please give me an example of any test that uses the v2 interface.

Any news on this, I would love this to be merged, I myself own a bunch of those modules.

Please validate. I need this quirk as well

The none suffix is caused by the fact that HA doesn't have a value for the translation key. In future versions, HA will fall back to `fallback_name.
When your PR is merged, the quirks bump merged to ZHA, the ZHA bump merged to HA, we'd need to add the translation key to HA then.

The none suffix is caused by the fact that HA doesn't have a value for the translation key. In future versions, HA will fall back to `fallback_name.
When your PR is merged, the quirks bump merged to ZHA, the ZHA bump merged to HA, we'd need to add the translation key to HA then.

Thank you for the answer. Can you point out where I should add it in HA? I want to try it locally. I will change HA's code in my installation.

Hi @ikruglov thank you so much for this merge request. I'm waiting for it !
@TheJulianJES do you have any idea where this translation key is located, so that @ikruglov could test his code ?

Hi @ikruglov,
Tried to use the quirk, but got this in my home-assistant journal:
nov. 08 18:02:05 <host> hass[370001]: 2024-11-08 18:02:05.296 ERROR (SyncWorker_5) [zhaquirks] Unexpected exception importing custom quirk 'nodon.pilot_wire' nov. 08 18:02:05 <host> hass[370001]: Traceback (most recent call last): nov. 08 18:02:05 <host> hass[370001]:   File "/var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/__init__.py", line 479, in setup nov. 08 18:02:05 <host> hass[370001]:     spec.loader.exec_module(module) nov. 08 18:02:05 <host> hass[370001]:   File "<frozen importlib._bootstrap_external>", line 995, in exec_module nov. 08 18:02:05 <host> hass[370001]:   File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed nov. 08 18:02:05 <host> hass[370001]:   File "/var/lib/private/hass/zhaquirks/nodon/pilot_wire.py", line 5, in <module> nov. 08 18:02:05 <host> hass[370001]:     from zhaquirks.nodon import ( nov. 08 18:02:05 <host> hass[370001]: ImportError: cannot import name 'NodOnPilotWireCluster' from 'zhaquirks.nodon' (/var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/nodon/__init__.py)
Any idea what I might be doing wrong?

Hi @ikruglov, Tried to use the quirk, but got this in my home-assistant journal: nov. 08 18:02:05 <host> hass[370001]: 2024-11-08 18:02:05.296 ERROR (SyncWorker_5) [zhaquirks] Unexpected exception importing custom quirk 'nodon.pilot_wire' nov. 08 18:02:05 <host> hass[370001]: Traceback (most recent call last): nov. 08 18:02:05 <host> hass[370001]: File "/var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/__init__.py", line 479, in setup nov. 08 18:02:05 <host> hass[370001]: spec.loader.exec_module(module) nov. 08 18:02:05 <host> hass[370001]: File "<frozen importlib._bootstrap_external>", line 995, in exec_module nov. 08 18:02:05 <host> hass[370001]: File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed nov. 08 18:02:05 <host> hass[370001]: File "/var/lib/private/hass/zhaquirks/nodon/pilot_wire.py", line 5, in <module> nov. 08 18:02:05 <host> hass[370001]: from zhaquirks.nodon import ( nov. 08 18:02:05 <host> hass[370001]: ImportError: cannot import name 'NodOnPilotWireCluster' from 'zhaquirks.nodon' (/var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/nodon/__init__.py) Any idea what I might be doing wrong?

Try this :
"""NODON module for custom device handlers."""
from zigpy.quirks import CustomCluster
from zigpy.quirks.v2 import EntityType, QuirkBuilder
import zigpy.types as t
from zigpy.zcl.foundation import (
    BaseAttributeDefs,
    BaseCommandDefs,
    DataTypeId,
    Direction,
    ZCLAttributeDef,
    ZCLCommandDef,
)
class NodOnPilotWireMode(t.enum8):
    """Pilot wire mode."""
    OFF = 0x00
    COMFORT = 0x01
    ECO = 0x02
    FROST_PROTECTION = 0x03
    COMFORT_MINUS_1 = 0x04
    COMFORT_MINUS_2 = 0x05
NODON = "NodOn"
NODON_PILOT_WIRE_CLUSTER_ID = 0xFC00  # 64512
class NodOnPilotWireCluster(CustomCluster):
    """NodOn manufacturer specific cluster to set Pilot Wire mode."""
    name: str = "NodOnPilotWireCluster"
    cluster_id: t.uint16_t = NODON_PILOT_WIRE_CLUSTER_ID
    ep_attribute: str = "nodon_pilot_wire_cluster"
    class AttributeDefs(BaseAttributeDefs):
        """Attribute definitions."""
        pilot_wire_mode = ZCLAttributeDef(
            id=0x0000,
            type=NodOnPilotWireMode,
            zcl_type=DataTypeId.uint8,
            is_manufacturer_specific=True,
        )
    class ServerCommandDefs(BaseCommandDefs):
        """Server command definitions."""
        set_pilot_wire_mode = ZCLCommandDef(
            id=0x00,
            schema={"mode": NodOnPilotWireMode},
            direction=Direction.Client_to_Server,
            is_manufacturer_specific=True,
        )
(
    QuirkBuilder(NODON, "SIN-4-FP-21")
    .replaces(NodOnPilotWireCluster)
    .enum(
        attribute_name=NodOnPilotWireCluster.AttributeDefs.pilot_wire_mode.name,
        enum_class=NodOnPilotWireMode,
        cluster_id=NodOnPilotWireCluster.cluster_id,
        entity_type=EntityType.STANDARD,
        translation_key="pilot_wire",
        fallback_name="Pilot Wire",
    )
    .add_to_registry()
)

@Mookunicorn this time, I get no error in the logs, but my SIN-4-FP-21 module still shows a on/off switch, no modes alternative.

@Mookunicorn Naming the python file init.py seems to have corrected the issue, thanks!

But it looks like my heater does not support other modes, or the module fails to interpret the commands sent :(

Hi @ikruglov, Tried to use the quirk, but got this in my home-assistant journal: nov. 08 18:02:05 <host> hass[370001]: 2024-11-08 18:02:05.296 ERROR (SyncWorker_5) [zhaquirks] Unexpected exception importing custom quirk 'nodon.pilot_wire' nov. 08 18:02:05 <host> hass[370001]: Traceback (most recent call last): nov. 08 18:02:05 <host> hass[370001]: File "/var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/__init__.py", line 479, in setup nov. 08 18:02:05 <host> hass[370001]: spec.loader.exec_module(module) nov. 08 18:02:05 <host> hass[370001]: File "<frozen importlib._bootstrap_external>", line 995, in exec_module nov. 08 18:02:05 <host> hass[370001]: File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed nov. 08 18:02:05 <host> hass[370001]: File "/var/lib/private/hass/zhaquirks/nodon/pilot_wire.py", line 5, in <module> nov. 08 18:02:05 <host> hass[370001]: from zhaquirks.nodon import ( nov. 08 18:02:05 <host> hass[370001]: ImportError: cannot import name 'NodOnPilotWireCluster' from 'zhaquirks.nodon' (/var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/nodon/__init__.py) Any idea what I might be doing wrong?

Make sure that you got file names right. pilot_wire.py can't import classes from init.py (note there is double underscore on each size of 'init').

Hello @ikruglov,
After a thorough reading on the heater I'm using, it actually supports 6 modes of pilot wire, so every mode should work... But I only get Comfort/Frost protection, though HA shows all the modes... Don't know what is messing up with the mode...
I believe the quirk as you provide it should be placed in /var/lib/hass/.venv/lib/python3.12/site-packages/zhaquirks/nodon/ (on my machine), right? Because placing it in my custom_quirks_path produces the error I shown earlier...

@ikruglov In fact, placing the quirk in the correct path made everything work as expected. I'm now a happy 6 modes pilot wire user :)

Hello, I tried this https://github.com/zigpy/zha-device-handlers/pull/3364#issuecomment-2465425127 with a small customization for the Adeo device
    QuirkBuilder(NODON, "SIN-4-FP-21")
+   .also_applies_to("Adeo","SIN-4-FP-21_EQU")
    .replaces(NodOnPilotWireCluster)

Modes are showing up in the device, and react correctly when toggling the main switch (on => comfort & off=> frost protection)

But I get an error when trying to set a mode directly (comfort & frost protection included)
home-assistant  |   File "/usr/src/homeassistant/homeassistant/components/select/__init__.py", line 188, in async_handle_select_option
home-assistant  |     await self.async_select_option(option)
home-assistant  |   File "/usr/src/homeassistant/homeassistant/components/zha/helpers.py", line 1288, in handler
home-assistant  |     raise HomeAssistantError(err) from err
home-assistant  | homeassistant.exceptions.HomeAssistantError: Failed to write attribute pilot_wire_mode=<NodOnPilotWireMode.COMFORT: 1>: <Status.UNSUPPORTED_ATTRIBUTE: 134>

Running HA 2024.10.2, and I used "Reconfigure" on the device instead of removing / enrolling again as the nodes are already on the wall and I'd prefer not to take the heater off again ;)
I have some modules not mounted so I will probably test with a fresh enrolling to see if it makes any difference.

Hello, I tried this #3364 (comment) with a small customization for the Adeo device
    QuirkBuilder(NODON, "SIN-4-FP-21")
+   .also_applies_to("Adeo","SIN-4-FP-21_EQU")
    .replaces(NodOnPilotWireCluster)

Modes are showing up in the device, and react correctly when toggling the main switch (on => comfort & off=> frost protection)
But I get an error when trying to set a mode directly (comfort & frost protection included)
home-assistant  |   File "/usr/src/homeassistant/homeassistant/components/select/__init__.py", line 188, in async_handle_select_option
home-assistant  |     await self.async_select_option(option)
home-assistant  |   File "/usr/src/homeassistant/homeassistant/components/zha/helpers.py", line 1288, in handler
home-assistant  |     raise HomeAssistantError(err) from err
home-assistant  | homeassistant.exceptions.HomeAssistantError: Failed to write attribute pilot_wire_mode=<NodOnPilotWireMode.COMFORT: 1>: <Status.UNSUPPORTED_ATTRIBUTE: 134>

Running HA 2024.10.2, and I used "Reconfigure" on the device instead of removing / enrolling again as the nodes are already on the wall and I'd prefer not to take the heater off again ;) I have some modules not mounted so I will probably test with a fresh enrolling to see if it makes any difference.

Hi. Based on the error' Status. UNSUPPORTED_ATTRIBUTE: 134`, it seems that Adeo has different codes or attributes. I can't comment here or test because I don't have an Adeo device, only NodOn. But I don't think that "Reconfiguring" or re-enroling will help. One needs to find the correct attributes.

Hi. Based on the error' Status. UNSUPPORTED_ATTRIBUTE: 134`, it seems that Adeo has different codes or attributes. I can't comment here or test because I don't have an Adeo device, only NodOn. But I don't think that "Reconfiguring" or re-enroling will help. One needs to find the correct attributes.

I got it working "manually" using a manufacturer_id_override as seen here https://github.com/zigpy/zha-device-handlers/issues/2777#issuecomment-2358979497 Is it possible to use the field without overriding write_attributes / read_attributes ?

SIN-4-FP-21_EQU

I have a possible solution that should satisfy both NodOn and Adeo devices. But I can't test the latter, so I need to rely on you (or others) who have Adeo.
You can find the code for __init__.py and pilot_wire.py files below:
https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/__init__.py
https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/pilot_wire.py
Let me know if this works. If yes, I'll merge it with this PR.

SIN-4-FP-21_EQU

I have a possible solution that should satisfy both NodOn and Adeo devices. But I can't test the latter, so I need to rely on you (or others) who have Adeo.
You can find the code for __init__.py and pilot_wire.py files below: https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/init.py https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/pilot_wire.py
Let me know if this works. If yes, I'll merge it with this PR.

Same error as before homeassistant.exceptions.HomeAssistantError: Failed to write attribute pilot_wire_mode=<NodOnPilotWireMode.ComfortMinus1: 4>: <Status.UNSUPPORTED_ATTRIBUTE: 134>
Looking at the code in zigpy, it seems the override is only used if the  manufacturer parameter is not set https://github.com/zigpy/zigpy/blob/d0fa17bfcb5bfbda47146ec7dd6ef49dbedc298b/zigpy/quirks/init.py#L249
The device also sends bad information for the manufacturer_id (4727 here, but it responds only with 4747), it may explain why the override is not used ?
scan:
  ieee: 08:dd:eb:ff:fe:d7:fd:51
  nwk: "0x784e"
  model: SIN-4-FP-21_EQU
  manufacturer: Adeo
  manufacturer_id: "0x4727"

I'm willing to debug this but python is not my strong suit, is it possible to edit the files in /usr/local/lib/python3.12/site-packages/ directly to dump some variable values in the HA logs ? If so, how ?

Hi,
Made kind of mix from this thread and #2777 and seems to work without the <Status.UNSUPPORTED_ATTRIBUTE: 134>.
Here is my code, hope this will help :
    #20241116 - Quirk zha
    #Adeo/NodOn with correction after Python/Quirk regression

    from typing import Any, Final
    from zigpy.quirks import CustomCluster
    from zigpy.quirks.v2 import QuirkBuilder, EntityType, EntityPlatform
    from zigpy.zcl.foundation import (
        BaseAttributeDefs,
        BaseCommandDefs,
        ZCLAttributeDef,
        ZCLCommandDef,
        WriteAttributesStatusRecord,
        Status
    )

    from zigpy.zcl import ClusterType

    import zigpy.types as t

    import logging
    _LOGGER = logging.getLogger(__name__)

    class NodonPilotWireMode(t.enum16):
        OFF = 0x00
        COMFORT = 0x01
        ECO = 0x02
        FROST_PROTECTION = 0x03
        COMFORT_MINUS_1 = 0x04
        COMFORT_MINUS_2 = 0x05

    NODON_PILOT_WIRE_CLUSTER_ID = 0xfc00  #64512
    NODON = "NodOn"
    ADEO = "Adeo"

    class NodonPilotWireCluster(CustomCluster):
        """NodOn pilot wire manufacturer-specific cluster."""

        cluster_id: Final = NODON_PILOT_WIRE_CLUSTER_ID
        name: Final = "Pilot Wire"
        ep_attribute: Final = "pilot_wire_cluster"
        manufacturer_id_override: Final = 4747

        class AttributeDefs(BaseAttributeDefs):
            pilot_wire_mode: Final = ZCLAttributeDef(
                id=0x0000,
                type=NodonPilotWireMode,
                access="r"
            )

        class ClientCommandDefs(BaseCommandDefs):
            setMode: Final = ZCLCommandDef(
                id=0x0000,
                schema={"mode": NodonPilotWireMode},
                direction=True,
                is_manufacturer_specific=True
            )

        async def write_attributes(
            self, attributes: dict[str | int, Any], manufacturer: int | None = None
        ) -> list:
            """Override writes to the pilot_wire_mode attribute."""
            if "pilot_wire_mode" in attributes:
                await self.client_command(0, attributes.get("pilot_wire_mode"), manufacturer=4747)
                await self.read_attributes(attributes)
                return [[WriteAttributesStatusRecord(Status.SUCCESS)]]
            return await super().write_attributes(attributes, manufacturer=4747)

        async def read_attributes(
            self,
            attributes: list[int | str],
            allow_cache: bool = False,
            only_cache: bool = False,
            manufacturer: int | t.uint16_t | None = None,
        ) -> Any:
            return await super().read_attributes(attributes, allow_cache=False, only_cache=False, manufacturer=4747)

    (

        QuirkBuilder(ADEO, "SIN-4-FP-21_EQU")
        .also_applies_to(NODON,"SIN-4-FP-21")
        .replaces(NodonPilotWireCluster)
        .enum(
            attribute_name="pilot_wire_mode",
            enum_class=NodonPilotWireMode,
            cluster_id=NODON_PILOT_WIRE_CLUSTER_ID,
            entity_type=EntityType.STANDARD,
            translation_key="pilot_wire",
            fallback_name="Pilot Wire",
        )
        .add_to_registry()
    )

I'm willing to debug this but python is not my strong suit, is it possible to edit the files in /usr/local/lib/python3.12/site-packages/ directly to dump some variable values in the HA logs ? If so, how ?

Thanks for the info. I usually mount specific files directly from the host system to freely change them in a comfortable environment. But you can also try modifing files directly inside the container. Just restart HA after each change. It should work.

Made kind of mix from this thread and #2777 and seems to work without the <Status.UNSUPPORTED_ATTRIBUTE: 134>.
Here is my code, hope this will help :

This works because you explicitly specify manufacturer=4747 for each send and receive command. I'm pretty sure that the entire write_attributes() and read_attributes() code is unnecessary as long as we pass manufacturer=4747 for Adeo and don't pass it for NodOn (or pass a NodOn-specific one).

The device also sends bad information for the manufacturer_id (4727 here, but it responds only with 4747), it may explain why the override is not used ?
scan:
  ieee: 08:dd:eb:ff:fe:d7:fd:51
  nwk: "0x784e"
  model: SIN-4-FP-21_EQU
  manufacturer: Adeo
  manufacturer_id: "0x4727"

@papylhomme, so you say that Adeo device has manufacturer_id: "0x4727" but only replies to commands and setting/getting attributes when manufacturer_id=0x4747?
Also, can you show what's the output of this page for Adeo?

The device also sends bad information for the manufacturer_id (4727 here, but it responds only with 4747), it may explain why the override is not used ?
scan:
  ieee: 08:dd:eb:ff:fe:d7:fd:51
  nwk: "0x784e"
  model: SIN-4-FP-21_EQU
  manufacturer: Adeo
  manufacturer_id: "0x4727"

@papylhomme, so you say that Adeo device has manufacturer_id: "0x4727" but only replies to commands and setting/getting attributes when manufacturer_id=0x4747?

Yes exactly
{
  "node_descriptor": {
    "logical_type": 1,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 142,
    "manufacturer_code": 4727,
    "maximum_buffer_size": 82,
    "maximum_incoming_transfer_size": 500,
    "server_mask": 11264,
    "maximum_outgoing_transfer_size": 500,
    "descriptor_capability_field": 0
  },

I played with the code, and the manufacturer_id_override is not used where we want. It is used in the Device class when present, but the CustomCluster class reads directly from the value provided in the endpoint, so I end up using 4727 when sending zigbee messages

played with the code, and the manufacturer_id_override is not used where we want it to be. It is used in the Device class when present, but the CustomCluster class reads directly from the value provided in the endpoint, so I end up using 4727 when sending zigbee messages

Okay. This is what I suspected. We can override node_descriptor completely and set NodOn's 0x4747 manufacturer_code there. QuirkBuilder luckely allows this via .node_descriptor(). I'll push a patch later today when I'm done with work.

@papylhomme, I've pushed the updated fix. Try it out:
https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/pilot_wire.py
Note two things:

There is no longer __init__.py. All Pilot Wire-related code is in pilot_wire.py. I will update the PR later so it has all the code in a single file, but I'll do it when we settle on the Adeo code.
I'm using features that were added relatively recently. So, you need the most up-to-date version of HA. I'm running 2024.11.2

@papylhomme, I've pushed the updated fix. Try it out: https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/pilot_wire.py
Note two things:

There is no longer __init__.py. All Pilot Wire-related code is in pilot_wire.py. I will also update this PR later so it has all the code in a single file, but after settling on the Adeo code.
I'm using features that were added relatively recently. So, you need the most up-to-date version of HA. I'm running 2024.11.2

Just tested it quickly and still doesn't work :-/ I'll try to debug this further when I have some time, maybe this evening, definitely in the week. I'm running 2024.11.2 too, could you point to the new feature you are using in zigpy/zha, it would help the process.

Updated: If this doesn't work, then I see two ways out:

Fallback to the suggested code where read/write_attributes and commands are overwritten in the cluster class to pass manufacturer_id. In this case, I believe this should be a separate quirk (and PR) because this code is unnecessary for NodOn.

:+1: Agree for the separate PR, overriding the internal methods will be a mess to maintain

Patch zigpy (quite possibly, it's a bug), so manufacturer_id_override is used. I'm still deciding whether to invest time in this.

I will open an issue there and see what they think about it.

could you point to the new feature you are using in zigpy/zha, it would help the process.

clone() method in QuirkBuilder

@ikruglov it's working with a small fix, manufacturer_id is a decimal not an hexadecimal
NODON = "NodOn"
+NODON_MANUFACTURER_ID = 4747
-NODON_MANUFACTURER_ID = 0x4747
NODON_PILOT_WIRE_CLUSTER_ID = 0xFC00  # 64512

Both heaters are responding perfectly, it's really nice I will try some clever automation with this :)

Both heaters are responding perfectly, it's really nice I will try some clever automation with this :)

Perfect. Can you try commenting .node_descriptor(ADEO_NODE_DESCRIPTION_WITH_CORRECTED_MANUFACTURER_CODE)? Maybe decimal vs hexadecimal was the reason that the first approach with manufacturer_id_override didn't work.

I've re-pushed https://github.com/ikruglov/zha-device-handlers/blob/adeo-pilot-wire/zhaquirks/nodon/pilot_wire.py with fixing hexadecimal vs. decimal.

Both heaters are responding perfectly, it's really nice I will try some clever automation with this :)

Perfect. Can you try commenting .node_descriptor(ADEO_NODE_DESCRIPTION_WITH_CORRECTED_MANUFACTURER_CODE)? Maybe decimal vs hexadecimal was the reason that the first approach with manufacturer_id_override didn't work.

Sorry it doesn't work without the node_descriptor call

@papylhomme just to confirm. You've got working the following:

Enum in HA interface
set_pilot_wire_mode command available in "Manage ZigBee device" -> Cluster -> PilotWireCluster -> Command
Manually setting pilot_wire_mode attributes in the same window as (2)

Please let me know if all works or not.

@papylhomme just to confirm. You've got working the following:

Enum in HA interface

I didn't try to add this in a dashboard yet, but the enum is working in the device panel

set_pilot_wire_mode command available in "Manage ZigBee device" -> Cluster -> PilotWireCluster -> Command
Manually setting pilot_wire_mode attributes in the same window as (2)

Working without specifying a code

Please let me know if all works or not.

@papylhomme I see that https://github.com/zigpy/zigpy/pull/1505 got merged. Can you test the code with the commented node_descriptor() override?
Just comment out this part:
    # please read the comment in AdeoPilotWireCluster
    # .node_descriptor(ADEO_NODE_DESCRIPTION_WITH_CORRECTED_MANUFACTURER_CODE)

But you also need somehow get the most recent zigpy changes to HA. I guess you can copy-paste the changed file in https://github.com/zigpy/zigpy/pull/1505

@TheJulianJES I've removed node_override logic since @papylhomme confirmed that the PR works without it (but with https://github.com/zigpy/zigpy/pull/1505). I I believe this PR is ready for merging.

@TheJulianJES I've addressed your suggestions except for the enum. Let me know what you want to see there.

After some discussion, we might need to implement it as a climate entity, similar to the screenshots seen in the description of https://github.com/zigpy/zha-device-handlers/pull/3031. Since we can't expose climate devices via quirks v2, we'd need to partly implement this in ZHA.
I'm aware this is annoying, but can we remove the enum/select entity for now?
We could merge this and make the HA 2024.12 release then. With that, you could at least write the attribute manually or using some third-party components (like zha-toolkit), until support is properly implemented (or there's a decision to just implement it as select entity, like Z2M does).

Per my previous comment, I've removed the enum entity for now.
We can at least expose the additional Zigbee attributes by merging this initial version of a quirk then.
It needs to be discussed how the heating mode is handled: presets in a HA climate entity or just a select entity like Zigbee2MQTT provides for devices like this.

Opened the following issue for tracking and so this is not forgotten about:

https://github.com/zigpy/zha-device-handlers/issues/3553

@TheJulianJES. Thanks for merging, but it's unfortunate that you removed the enum.
I'm willing to investigate necessary changes in HA if you can tell me what is needed and give me some guidance.

It also really wasn't what I wanted, but we have to make sure to adhere to Home Assistant standards. We'll follow up in the issue on what to do next.

many thanks @ikruglov for proposing this PR. I am currently using the quirk defined in this comment.
I don't get what will happen when my home-assistant container will be upgraded to the december version:
can I keep the quirk and still get the enum definition and have the "select" available and working  ?

You can keep using the custom quirk with the select entity.
However, due to a bug in zigpy in connection with v2 quirks, you'll need to add the following lines to the custom quirk when using Home Assistant Core 2024.12:
from zigpy.quirks import DEVICE_REGISTRY
# other existing imports from custom quirk

# remove upstream quirk from registry
del DEVICE_REGISTRY._registry_v2[("NodOn", "SIN-4-FP-21")]

# original custom quirk code here

For more details on the issue, see: https://github.com/zigpy/zigpy/issues/1508
Custom quirks should always take priority over built-in ones. They do for "v1" quirks, but it doesn't properly work with v2 quirks, yet.

thanks @TheJulianJES and @ikruglov for your help.
I have now Home Assistant Core 2024.12.0 running with a custom quirk.
For reference, hereafter the main steps:
Enabling custom quirks in config/configuration.yaml
zha:
  custom_quirks_path: /config/custom_zha_quirks/
  enable_quirks: true

Adding two files in config/custom_zha_quirks/nodon
$ cat config/custom_zha_quirks/nodon/__init__.py
"""NODON module for custom device handlers."""
$ cat config/custom_zha_quirks/nodon/pilot_wire.py
"""NodOn pilot wire heating module."""
from zigpy.quirks import DEVICE_REGISTRY
# other existing imports from custom quirk

# remove upstream quirk from registry
del DEVICE_REGISTRY._registry_v2[("NodOn", "SIN-4-FP-21")]

from zigpy.quirks import CustomCluster
from zigpy.quirks.v2 import EntityType, QuirkBuilder
import zigpy.types as t
from zigpy.zcl.foundation import BaseAttributeDefs, DataTypeId, ZCLAttributeDef

NODON = "NodOn"
NODON_MANUFACTURER_ID = 4747
NODON_PILOT_WIRE_CLUSTER_ID = 0xFC00  # 64512
ADEO = "Adeo"

class NodOnPilotWireMode(t.enum8):
    """Pilot wire mode."""

    # Codes taken from
    # https://github.com/Koenkk/zigbee-herdsman-converters/blob/0f4833340a20db3dae625a61c41d9be0a6f952be/src/converters/fromZigbee.ts#L5285.

    Off = 0x00
    Comfort = 0x01
    Eco = 0x02
    FrostProtection = 0x03
    ComfortMinus1 = 0x04
    ComfortMinus2 = 0x05

class NodOnPilotWireCluster(CustomCluster):
    """NodOn manufacturer specific cluster to set Pilot Wire mode."""

    name: str = "PilotWireCluster"
    cluster_id: t.uint16_t = NODON_PILOT_WIRE_CLUSTER_ID
    ep_attribute: str = "pilot_wire_cluster"

    class AttributeDefs(BaseAttributeDefs):
        """Attribute definitions."""

        pilot_wire_mode = ZCLAttributeDef(
            id=0x0000,
            type=NodOnPilotWireMode,
            # need to explicitly set ZCL type
            zcl_type=DataTypeId.uint8,
            is_manufacturer_specific=True,
        )

class AdeoPilotWireCluster(NodOnPilotWireCluster):
    """Adeo manufacturer specific cluster to set Pilot Wire mode."""

    # Adeo SIN-4-FP-21_EQU has a weird setup where it reports 4727
    # manufacturer_code in node_descriptor(), but requires NodOn's (4747)
    # manufacturer_id to execute commands and get/set attributes.
    manufacturer_id_override: t.uint16_t = NODON_MANUFACTURER_ID

nodon = (
    QuirkBuilder(NODON, "SIN-4-FP-21")
    .replaces(NodOnPilotWireCluster)
    .enum(
        attribute_name=NodOnPilotWireCluster.AttributeDefs.pilot_wire_mode.name,
        enum_class=NodOnPilotWireMode,
        cluster_id=NodOnPilotWireCluster.cluster_id,
        entity_type=EntityType.STANDARD,
        translation_key="pilot_wire",
        fallback_name="Pilot wire",
    )
)  # fmt: skip

adeo = (
    nodon.clone(omit_man_model_data=True)
    .applies_to(ADEO, "SIN-4-FP-21_EQU")
    .replaces(AdeoPilotWireCluster)
)

nodon.add_to_registry()
adeo.add_to_registry()

Thank you, nice and clean workaround waiting for full upstream integration :)


Overlap between title and current indicator for narrow images

When an image is narrow and you have a multi image gallery the current indicator and title overlaps.
Couple suggestions:

Make a minimum width that it won't shrink below that is: title width + current indicator width + close button width + next/prev buttons width)
Allow user to set minium width and height
Allow the current indicator text to be hidden
Allow title to be displayed at the top.

Apologies if you can do any of these already but couldn't see anything so far.

I know this is an old post but I just modified the css for #cboxLoadedContend and #cboxTitle so that the title 'appears' on a different line and it worked for my purposes.  Hope it might help someone else.
       #cboxLoadedContent{margin-bottom:50px;} /* original margin-bottom was 28px */         #cboxTitle{position:absolute; bottom:28px; left:0; text-align:center; width:100%; color:#949494;} /* original bottom was 4px */


chore(textarea): create textarea

creates the md-textarea feature 546

@dharmeshpipariya it will probably be a bit before we can review this; we're all tied up preparing for Angular Connect next week.

CLA signed.

@dharmeshpipariya It looks like this is mostly copy-and-paste from md-input without any refactoring to reuse common parts between them. This kind of approach has a higher cost in the long run because you're now maintaining two sets of code that do the same thing. The two components should share code, potentially even being the same component with some conditionals. I'm going to close this PR since, at a high level, it's not really the way we want to approach the implementation. If you want to try a different approach, comment on #546 with your plan and we can discuss further.


Bump to func-go v0.20.0

Changes

as per title

/kind

Fixes #

Release Note

Docs

/assign @lkingland

@matzew how could we add you to approvers?

/approve
/lgtm


Add docs for new kubernetes connection

For when the SDK changes land.

Much cleaner!
Any reason why the name is not part of the connection? I suppose when I kubectl config view, I may have more than one user credential associated with the cluster.

Discussed in slack:

There could be multiple users with different roles that are authenticating to the same cluster. So the name would be the same, but the connection would be different
The connection token determines the authentication, so if different service accounts on the same cluster are used, it would be separate relay connections.
I can't imagine the exact same token being used with different spec names in the same step, actually
It makes sense that the cluster name is separated from the relay connection because of the case where different service accounts on the same cluster are used for different workflows.
If more connections were created, the !Connection name would need to be changed to the new connection, but the spec name could remain the same to avoid needing to update the name elsewhere in the workflow


your ruby docs are lacking the constructor params

I don't see the params here

Hi @pedrozath,
Actually the documentation is not really good at the moment. The documentation of the objects defined at the C level is rather nonexistent. I will close this ticket and cross-ref #482 ; we will handle that here.Thanks for spotting this!  :-)


Improved android advertising data

Description of Change
option to broadcast or not name and tx power
added to broadcast data as scanresponse if data is large no fit in direct advertising data
Platforms Affected

Android

Hi @dhaval2017 - There are reasons these features don't exist here, but I'm willing to take it in based on the code review already supplied by @dahlbyk - Please let us know if you're planning to update your PR (or just update it).  I'll leave this open for a few more days unless I hear back

No response from author.  I don't really want the headaches that come with this on android for initial release, thus I'm closing this off


Simplify client

This is a proposal to greatly simplify the EaaS client and move most of the logic to the server.
The most important change is here, where the interface to scoring is changed: https://github.com/inspired-co/eaas_client/blob/00eed624a111dd89563adf7c01b24dc6fd94075b/eaas/client.py#L27
@pfliu-nlp : does this interface (as specified by the docstring) look good? If so, I'll move towards implementing this on the client and server side.

Actually, I'm going to close this and just do the simplification all at once.

This PR:

Simplifies the client, removing extraneous code and moving more functionality to the server
It removes some functionality (e.g. attribute calculation and prompting. this may be added later in a clean way if we think it's necessary)
It points to a permanent URL, fixing https://github.com/inspired-co/eaas_client/issues/2
It adds the ability to request sufficient statistics, fixing https://github.com/inspired-co/eaas_client/issues/12
It makes server requests simultaneous, fixing https://github.com/inspired-co/eaas_client/issues/14

@pfliu-nlp : this is ready for review

looks good.


Redirect final to live

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

CONTRIBUTING.md
:white_check_mark:Succeeded

Details

README.md
:white_check_mark:Succeeded

Details

aspnetcore/client-side/yeoman.md
:white_check_mark:Succeeded

Details

aspnetcore/conceptual-overview/aspnet.md
:white_check_mark:Succeeded

Details

aspnetcore/conceptual-overview/choosing-the-right-dotnet.md
:white_check_mark:Succeeded

Details

aspnetcore/conceptual-overview/index.md
:white_check_mark:Succeeded

Details

aspnetcore/fundamentals/dependency-injection.md
:white_check_mark:Succeeded

Details

aspnetcore/fundamentals/dependency-injection/_static/lifetimes.gif
:white_check_mark:Succeeded

Details

aspnetcore/fundamentals/dependency-injection/_static/lifetimes.jpg
:white_check_mark:Succeeded

Details

aspnetcore/fundamentals/dependency-injection/_static/lifetimes_request1.png
:white_check_mark:Succeeded

Details

aspnetcore/fundamentals/dependency-injection/_static/lifetimes_request2.png
:white_check_mark:Succeeded

Details

aspnetcore/fundamentals/hosting.md
:white_check_mark:Succeeded

Details

aspnetcore/getting-started.md
:white_check_mark:Succeeded

Details

aspnetcore/getting-started/index.md
:white_check_mark:Succeeded

Details

aspnetcore/getting-started/installing-on-linux.md
:white_check_mark:Succeeded

Details

aspnetcore/getting-started/installing-on-mac.md
:white_check_mark:Succeeded

Details

aspnetcore/getting-started/installing-on-windows.md
:white_check_mark:Succeeded

Details

aspnetcore/intro.md
:white_check_mark:Succeeded

Details

aspnetcore/intro/index.md
:white_check_mark:Succeeded

Details

aspnetcore/migration/mvc.md
:white_check_mark:Succeeded

Details

aspnetcore/mvc/views/tag-helpers/authoring.md
:white_check_mark:Succeeded

Details

aspnetcore/mvc/views/working-with-forms.md
:white_check_mark:Succeeded

Details

aspnetcore/publishing/apache-proxy.md
:white_check_mark:Succeeded

Details

aspnetcore/publishing/iis-with-msdeploy.md
:white_check_mark:Succeeded

Details

aspnetcore/publishing/iis.md
:white_check_mark:Succeeded

Details

aspnetcore/publishing/linuxproduction.md
:white_check_mark:Succeeded

Details

aspnetcore/security/authentication/azure-active-directory/index.md
:white_check_mark:Succeeded

Details

aspnetcore/security/authentication/index.md
:white_check_mark:Succeeded

Details

aspnetcore/security/authentication/sociallogins.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/dotnet-watch.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/first-mvc-app/adding-controller.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/first-mvc-app/start-mvc.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/first-mvc-app/start-mvc/_static/new_project2.png
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/first-mvc-app/validation.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/first-web-api.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/web-api-help-pages-using-swagger.md
:white_check_mark:Succeeded

Details

aspnetcore/tutorials/your-first-aspnet-application.md
:white_check_mark:Succeeded

Details

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


build error : linking with cc failed

build error occurred.
log file attached

@muralikodali It says it cannot find xcb-errors. Do you have xcb-util-errors installed? Which disto are you using? I appreciate the report.

Thanks for pointing the error. After installing xcb-util-errors, build process went on smoothly without error.
My distro is Arch linux.


Fixing bad SVG XML namespace protocol change to HTTPS

Reverting bad SVG XML namespace protocol change to HTTPS, which is causing the AWS Logo to fail to render/load.

Ran a local preview build with the reverted SVG, and it is loading properly


TreeSelect is not keyboard navigable

Reproduction link
https://stackblitz.com/edit/gzhcqt--run?file=src/app/app.component.ts
Steps to reproduce

Click on a TreeSelect to open the dropdown
Press the down arrow key

What is expected?
The first item in the tree is highlighted and should be selectable with the Enter key.
What is actually happening?
Nothing happens.

Environment
Info

ng-zorro-antd
10.0.0

Browser
Any

This works as expected in Ant Design 4.6.6:

I am experiencing the same issue.


nodejs: Make cargo-cp-artifact a dev dependency

cargo-cp-artifact is only used in the 'build' npm run script which appears to be run as part of CI and packaging.
This change will remove cargo-cp-artifact as a transitive dependency to consumers of @minify-html/node.

Ahh I missed that. Thanks! Closing.


Backend errors with recursive default arguments for functional parameters

For a class parameter:
shared class C(
    shared Integer fact(Integer x)
        =>  if (x > 1)
            then x * fact(x-1)
            else x) {}
shared void run() {
    assert (C().fact(10) == 3628800);
}

source/simple/run.ceylon:8: error: Ceylon backend error: non-static variable fact cannot be referenced from a static context
            then x * fact(x-1)
                     ^
source/simple/run.ceylon:8: error: Ceylon backend error: bad operand types for binary operator '*'
            then x * fact(x-1)
                         ^
  first type:  long
  second type: CAP#1
  where CAP#1 is a fresh type-variable:
    CAP#1 extends Integer from capture of ? extends Integer

and a function parameter:
Integer factorial(Integer num,
        Integer fact(Integer x)
            =>  if (x > 1)
                then x * fact(x-1)
                else x)
    =>  fact(num);
shared void run() {
    assert (factorial(10) == 3628800);
}

source/simple/run.ceylon:31: error: Ceylon backend error: cannot find symbol
                then x * fact(x-1)
                         ^
  symbol: variable fact
source/simple/run.ceylon:31: error: Ceylon backend error: method invoked with incorrect number of arguments; expected 1, found 0
                then x * fact(x-1)
                             ^

I'm not sure how important this is to fix, but it's probably better to report it than leave it sitting in a scratch file on my hard drive where it's been for ages :)


some demos about SOT and VOS

@MasterBin-IIAU Hi, can you give some demos about SOT and VOS  ?

That would be reallyappreciated also by my side :)


Scale line issue in print preview

Please have a look at the openlayers example Scale Line.
On the screenshots below you can see that the length of the scale line in relation to the continents is different in browser window and print preview.
In the print preview the map is shrinked to fit onto the paper. That's appreciated.
But the scale line is not shrinked in the same way and remains wide. Therefore in the print preview the bar has not the right length in relation to the content shown in the map.
Is there something wrong or missing in the code of the scale-line-example?
(Tested in IE11, Firefox, Chrome and Opera)

[X] I am submitting a bug or feature request, not a usage question. Go to https://stackoverflow.com/questions/tagged/openlayers for questions.
[X] I have searched GitHub to see if a similar bug or feature request has already been reported.
[X] I have verified that the issue is present in the latest version of OpenLayers (see 'LATEST' on https://openlayers.org/).
[ ] If reporting a bug, I have created a CodePen or prepared a stack trace (using the latest version and unminified code, so e.g. ol-debug.js, not ol.js) that shows the issue.

To avoid the map deformation on print, you will need to update the size before printing.
See https://github.com/openlayers/openlayers/pull/6908#issuecomment-311806140


Can't set different max_count values for different sub-messages of the same type

For example, for this proto:
message FloatArray {
  repeated float xs = 1;
}
message Msg {
  FloatArray a = 1;
  FloatArray b = 2;
}

How can I set different max_count values for a and b? The following options file doesn't seem to work:
Msg.a.xs max_count:50
Msg.b.xs max_count:100

They both use the same submessage type, so it is not possible by just using nanopb options. Because the same C struct is used for both, they cannot have different sizes.
If the arrays were directly in the main message (instead of wrapped in a submessage), this would be possible. Another way would be to have separate submessage types in .proto.
You can do this with callback_datatype and a custom callback function, but that quickly gets pretty complex.


WPSException Unsupported Encoding UTF-8 for Unspecfied Encoding

When trying to make a WPS execute call, it seems that for inputs that do not have a specified coding (UTF-8, etc) in the DescribeProcess results in a owslib.wps.WPSException Unsupported encoding UTF-8 error. This seems to be the case with PyWPS4 and Geoserver 2.8.0, so I think it is OWSLib 0.9.2.
In the WPS 1.0.0 specification (Table 23), it seems that the encoding and schema fields are optional (when the input is using the same encoding as the responses), and indeed if I manually do the DescribeProcess I can see in the XML result that the encoding and schema fields are not included.
Is OWSLib perhaps over enforcing the encoding requirements? If you can provide me with a WPS service URL I would gladly put together an example.

This still seems to be the case with OWSLib 0.11.2.

This still seems to be the case with OWSLib 0.16.0.

Can you provide an example that we can use to reproduce?

Hi Tom,
I'm using OWSLib 0.16.0 with GeoServer 2.12.0 and the WPS plugin and trying to run the following code:
import owslib.wps

wps_url = "http://<IP_ADDRESS>:8080/geoserver/ows"
wps = owslib.wps.WebProcessingService(wps_url, verbose=False, skip_caps=True)

processid = "JTS:area"

polygon = [(-102.8184, 39.5273), (-102.8184, 37.418),
           (-101.2363, 37.418), (-101.2363, 39.5273),
           (-102.8184, 39.5273)]
featureCollection = owslib.wps.GMLMultiPolygonFeatureCollection( [polygon] )

inputs = [ ("geom", featureCollection)]
output = "OUTPUT"

execution = wps.execute(processid, inputs, output = "OUTPUT")

owslib.wps.monitorExecution(execution)

what I get is the following:
owslib.wps.WPSException : {'code': 'NoApplicableCode', 'locator': None, 'text': 'Unsupported encoding UTF-8'}
I'm I missing something?
If you need me to I can host an instance of GeoServer for you to test against.
Thank you!

@mlacayoemery thanks for the report.  Sure if you can point me to a WPS instance to test that would be valuable.

Thanks @mlacayoemery.  I've narrowed it down to:
diff --git a/owslib/wps.py b/owslib/wps.py
index b6c4736..7b6ed59 100644
--- a/owslib/wps.py
+++ b/owslib/wps.py
@@ -1591,7 +1591,7 @@ class GMLMultiPolygonFeatureCollection(FeatureCollection):
         dataElement = etree.Element(nspath_eval('wps:Data', namespaces))
         complexDataElement = etree.SubElement(
             dataElement, nspath_eval('wps:ComplexData', namespaces),
-                                              attrib={"mimeType": "text/xml", "encoding": "UTF-8", "schema": GML_SCHEMA_LOCATION})
+                                              attrib={"mimeType": "text/xml", "schema": GML_SCHEMA_LOCATION})
         featureMembersElement = etree.SubElement(
             complexDataElement, nspath_eval('gml:featureMembers', namespaces),
                                                  attrib={nspath_eval("xsi:schemaLocation", namespaces): "%s %s" % (DRAW_NAMESPACE, DRAW_SCHEMA_LOCATION)})

The encoding exception goes away however there is another (unrelated?) error. I don't have time to test further so if this works feel free to test further/issue a pull request.

Yes that does seem to fix that problem and I created a pull request. Have I done what you wanted correctly?
The new error seems to be an unrelated but similar specification implementation error, for which I created issue #419


DefaultByteBufferPool leak detection works properly at 100%

Previously the comparison was inverted such that passing 100%
detection would never instantiate a LeakDetector.

Windows Build 2182 outcome was FAILURE using a merge of 0cbf4353fe9228162e4109e96314b1ae8499f90d
Summary: Tests passed: 2909, ignored: 613; exit code 1 Build time: 00:28:16

Merged under https://issues.jboss.org/browse/UNDERTOW-1173


WslRegisterDistribution failed with error: 0xe000020b when launching Ubuntu

Windows Version
Microsoft Windows [Version 10.0.19042.2728]
WSL Version
<IP_ADDRESS>, but i'm not on Store version, I installed it via podman
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
<IP_ADDRESS>
Distro Version
Ubuntu 22.04 LTS, but honestly it happens with any distro
Other Software
Podman version 4.4.4
Repro Steps
Run following command:
wsl --install "Ubuntu-22.04"
Expected Behavior
Ubuntu is getting installed and working
Actual Behavior
wsl --install "Ubuntu-22.04"
Installing: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS has been installed.
Launching Ubuntu 22.04 LTS...
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0xe000020b
Error: 0xe000020b (null)
Press any key to continue...
Diagnostic Logs
WslLogs-2023-04-04_16-18-37.zip

Looks like an issue creating the virtual network, can you share the output of hnsdiag list all?

Sure,
hnsdiag list all
////////////////////////NETWORKS///////////////////////

///////////////////////ENDPOINTS///////////////////////

//////////////////////NAMESPACES///////////////////////

Namespace        : 910f7d92-ba2d-4c3f-98ae-7c0ac590d2dc

/////////////////////LOADBALANCERS/////////////////////

This seems to be similar to another issue
https://github.com/microsoft/WSL/issues/6089

This seems to be similar to another issue
https://github.com/microsoft/WSL/issues/6089

I tried steps in that issue without any luck. So any other advises are appreciated

Have you tried running the wsl --install command with administrator privileges

This seems to be similar to another issue
#6089

I tried steps in that issue without any luck. So any other advises are appreciated

Wanted to expand on it
I did
netsh winsock reset
netcfg -d

it didn't help.

Have you tried running the wsl --install command with administrator privileges

@mariorecinos tried right now, result is the same :(

Try resetting the WSL service by opening a PowerShell terminal with administrative privileges and running the following
command:
Get-Service LxssManager | Restart-Service

Try unregistering any existing Ubuntu distributions by running the following command in PowerShell with administrative privileges:
wsl.exe --unregister Ubuntu-22.04

and then running the installation command again.
If none of the above steps work, you could try resetting the WSL installation entirely by following the instructions in this
Microsoft article: https://docs.microsoft.com/en-us/windows/wsl/troubleshooting#resetting-your-installation-of-wsl.
Resetting the installation may help in case anything is corrupted or not setup correctly I hope these commands help!

Hi @mariorecinos sorry for late reply,
So I tried
Get-Service LxssManager | Restart-Service
Didn't help. I noticed that LxssManager wasn't even running before I run that command.
Unregistering didn't help either:
PS C:\Users\dmytett> wsl.exe --unregister Ubuntu-22.04
Unregistering.
There is no distribution with the supplied name.
Error code: Wsl/Service/WSL_E_DISTRO_NOT_FOUND

I run wsl --list, and it appears no distros are registered at all:
PS C:\Users\dmytett> wsl.exe --list
Windows Subsystem for Linux has no installed distributions.

Use 'wsl.exe --list --online' to list available distributions
and 'wsl.exe --install <Distro>' to install.

Distributions can also be installed by visiting the Microsoft Store:
https://aka.ms/wslstore
Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND

So it looks like distro is not even registering.
But I see this in "apps and features"

Any other thoughts?

Thank you for sharing so try uninstalling ubuntu from "apps and features"  then restart your computer and after restart  go to the Microsoft store and re install wsl Ubuntu again like mentioned in the commands
https://aka.ms/wslstore

@mariorecinos
The link is not opening on the machine I'm trying to install it to.
I tried to reinstall ubuntu, alas the same error.
I tried to completely reinstall WSL (remove WSL feature from "turn windows features on and off), with same outcome.
Switching to wsl1 helped, but it seems WSL1 has issues with podman. Rootless is not working and I can't launch any container.

Your kernel does not support pids limit capabilities or the cgroup is not mounted. PIDs limit discarded.
Error: error creating network namespace for container 24c13dfae069e458138e6bb7d66b00c19a51c87c76cb8113139e155ac7a1a514: failed to create namespace: failed to bind mount ns at /run/netns/cni-93ee72dd-e8dd-1a47-9265-d8d3d24b8649: invalid argument

I tried openSUSE Leap distro, rootless podman still doesn't work. But the issue is different when I try to run a container:

Error: filesystem type 0x53464846 reported for /var/lib/containers/storage is not supported with 'overlay': backing file system is unsupported for this graph driver

@mariorecinos I was able to find some useful traces for this issue in event viewer:

5:46:04, Host-Network-Service, event id 1055, event: RPC request received. Type: 'Create', Entity: 'Network', Id: '{b95d0c5e-57d4-412b-b571-18a81a16e005}', Access Level: 'Administrator', Data: '{"Name":"WSL","Type":"ICS","IsolateSwitch":true,"Flags":9}'

Then there are a bunch of entries from Hyper-V-VmSwitch, couple of most interest:

5:47:05, Hyper-V-VmSwitch, event id 67, event: Port 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL) successfully created on switch 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL).
5:47:05, Hyper-V-VmSwitch, event id 233, event: The operation 'Create' succeeded on nic 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL).
5:47:05, Hyper-V-VmSwitch, event id 232, event: NIC 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL) successfully connected to port 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL) on switch 44A32E0B-7D45-42BD-8AD9-A9B0086F814F(Friendly Name: WSL).
5:47:05, Hyper-V-VmSwitch, event id 9, event: Switch 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL) successfully initialized.

Then a bunch of verbose logs which I don't understand. Next logs indicate that switch was deleted. I assume something went wrong, thus system decided to clean up the switch:

5:47:05, Hyper-V-VmSwitch, event id 234, event: NIC 44A32E0B-7D45-42BD-8AD9-A9B0086F814F successfully disconnected from port 44A32E0B-7D45-42BD-8AD9-A9B0086F814F.
5:47:05, Hyper-V-VmSwitch, event id 69, event: Port 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL) successfully deleted - switch 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL).
5:47:05, Hyper-V-VmSwitch, event id 71, event: Delete complete for port 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL).
5:47:05, Hyper-V-VmSwitch, event id 233, event: The operation 'Delete' succeeded on nic 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL).
5:47:05, Hyper-V-VmSwitch, event id 62, event: Switch 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL) successfully deleted.
5:47:05, Hyper-V-VmSwitch, event id 66, event: Delete complete for Switch 44A32E0B-7D45-42BD-8AD9-A9B0086F814F (Friendly Name: WSL).

I really don't want to give up on this. If there any other ideas, I would gladly try them out

Forgot to mention, I'm trying to get this running on virtualization enabled VMWare virtual machine. Hope that helps.

I am also facing same issue, do anyone have found fix. Really helpful if any reply. @dmytroettcdw please.

I am also facing same issue, do anyone have found fix. Really helpful if any reply. @dmytroettcdw please.

I have lost my faith trying to make it work, so unfortunately I have no good news to share with you.

@dmytroettcdw , I've been looking at the original traces you provided. We can see that initially the request to create the switch for WSL (NAT) succeeded. But immediately afterwards there was an attempt to reset all switch extensions (normal process to startup a switch), and that failed with ERROR_NO_SUCH_DEVINST. Which looks like something ganked the switch from beneath us.
Do you have any switch extensions installed? This is a VM hosted by VMWare? (this is a guest VM - that VMWare is hosting?)
Did VMWare install any switch extensions or any software in the guest?

@keith-horton I'm really sorry for late reply, I lost access to this account for some time. Answering your questions.

Do you have any switch extensions installed?

I'm not sure. How do I check that?

This is a VM hosted by VMWare? (this is a guest VM - that VMWare is hosting?)

Yes, This is a guest VM running under VMWare hypervisor.

Did VMWare install any switch extensions or any software in the guest?

Not sure how to check. Is it possible to do from under guest VM?

WSL is hosted by vmSwitch in Windows. The fact you have VMWare installed suggests the 2 are in conflict somehow. You have a guest VM running, and you're trying to run WSL within the guest VM? I don't know VMWare - do they also have software running within the guest VM?
Not knowing about interop issues with VMWare, are you able to run other VMs or containers within this guest VM? For example, can you start Windows Sandbox?

Facing the same issue in the same Environment, as you, @dmytroettcdw. Looking forward for the resolution, but assuming, that you've covered the long way already, there are not a lot of hopes to get a fix, I suppose :(

@dmytroettcdw : as this is a virtual machine, this may be due to phantom PnP devices breaking us. Are you OK running this script which we found that does an OK job finding and removing "ghost adapters" (i.e. adapters marked as Phantoms by PnP)?
https://gist.github.com/alexjebens/a027f8757348bdacbcbb5aa85612d045

If you don't want to run someone's powershell script, you can check this by hand :)

Open device manager
Click the View menu item > check Show hidden devices
Expand Network adapters in the list
Ghosted network adapters will look 'disabled' / 'hidden'
Right click over the Ghosted network adapter and select Uninstall Device

Yes, this finally solved it! It has breen driving me crazy for the last 2 days. Thanks!


Warn explicitly that your addressbook's emails are uploaded for discovering matrix IDs if you enable that permission

https://github.com/vector-im/vector-ios/issues/551

SGTM


Bug in --js-args=full and faithful

I believe this bug exists:
If a flat function uses arguments.length, it is rewritten to materializedArguments.length, but materializedArguments is not defined.

Working on a fix for this.


How to disable OCR in prepdocs script?

This issue is for a: (mark with an x)
- [ ] bug report -> please search issues before submitting
- [x] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

Run prepdocs.sh script on some PDF files that contain images
Text from images embedded gets indexed

Any log messages given by the failure
n/a
Expected/desired behavior
I'd like to have a way to disable OCR of the images embedded in PDF files. Our use case is the application and training documentation that includes screenshots of application screens with random/example data displayed and we don't want it to be in the index.
OS and Version?
Linux Ubuntu
Versions
2024-08-23

I asked the Document Intelligence team, and they say there's no option for disabling OCR in the API. You would need to update the parsing code to ignore the text parsed from images. I haven't done much Doc Intelligence parsing code myself, but I'm hoping that it's returned back in a way that you can delineate image text versus the other text.


(PUP-6871) Fix transaction persistent unit test for non English Windows

Previously the unit test for transaction/persistence checked whether an error
was raised with specific text.  However the text was in English and the test
would fail if used on localized versions of Windows, such as French, where the
message is French.  This commit removes the text in the expectation so that it
will behave correctly on all language versions of Windows.
example error message in French is Accès refusé

CLA signed by all contributors.

Très bien, manifique

Sorry forgot to mention, should this target LTS-1.7?

I wouldn't have thought so.  There's limited guidance on what should and should not be going into that branch.

We generally merge test changes to long lived support branches if the test improves reliability, eliminates false negatives, etc. If we don't plan on doing/continuing localized testing for 1.7, then I'd  👍  to merge to stable.

Ok I'll retarget against LTS

@joshcooper Retargetted

@joshcooper CI is green.


Moved value to environment variable.

Checklist

[x] manage.py test passes
[x] documentation is changed or added

Affected app(s)
Scale Scheduler
Description of change
Moved the hard-coded value for max connections in the scheduler to an environment variable.
The hope is that by increasing this number that when a leader election happens that takes an extended amount of time, the framework will not be marked inactive.

Setting SCHEDULER_MAX_RECONNECT to a higher number (say 30) should fix the issue where the framework is going inactive. We set it to 30 and trigged a leader election several times and the framework did not going inactive. We set it to 1, triggered a leader election and the framework went inactive. Hopefully it works.


unnecessary warnings

cf https://github.com/harvimt/quamash/issues/110
fix was https://github.com/OxfordIonTrapGroup/quamash/commit/2ccf4410fb3912b78bb40db5da7a916c6d770904

Are you actively merging PRs, or should I stick to a fork?

Are you actively merging PRs, or should I stick to a fork?

I am merging PRs :-)

Cool! Okay, I'll spin up a PR shortly.


Feat: lambda@edge submodule

what

Add submodule for creating Lambda@Edge functions

why

Lambda@Edge are a potentially common use case for this repo, and a submodule for creating Lambda@Edge functions for use with the root module should be created.

references

N/A

/test all

/test all

/test all

/test all

/test all

/test all

/test all

/test all


VTOL: Front transition Ramp Up problem

@dagar and @sanderux
Because we fly without airspeed sensor, during the front transition everything is timing. So in Position / Auto modes the the ramp up of the front transition pusher motor is something like this:

Visible from the graph:

In the Log:
https://logs.px4.io/plot_app?log=4d974849-6f42-4b03-945d-8e0eb96e2f29
I could not find a way to make the ramp up of the pusher motor like this during the transition:

I found a parameter for the back transition ramp up:
VT_B_TRANS_RAMP which is the reverse to what I want to achieve.
Am I missing something?
Can I use VT_TRANS_P2_DUR to make it 1-2 seconds to achieve this?

you need to set VT_F_TRANS_DUR to 1 (thats the ramp-up time for front transition)

also 5 seconds is probably too little for a deltaquad

Strange...
Here is from parameters reference...
VT_F_TRANS_DUR
(FLOAT) |
Duration of a front transition
Comment:
Time in seconds used for a transition
Thanks for the info I will note it.


[Enhancement] Add local exchange for nest loop join's left child

What type of PR is this：

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

Problem Summary(Required) ：

Add local random exchange when cross join's distribution type is broadcast to increase the dop of NL Probe.

before  this patch
mysql> select count(*) from part right join dates on part.p_partkey > dates.d_datekey;
+----------+
| count(*) |
+----------+
|     2556 |
+----------+
1 row in set (4.506 sec)

mysql> select count(*) from part right join dates on part.p_partkey < dates.d_datekey;
+------------+
| count(*)   |
+------------+
|<PHONE_NUMBER> |
+------------+
1 row in set (9.004 sec)

after this patch
mysql> select count(*) from part right join dates on part.p_partkey > dates.d_datekey;
+----------+
| count(*) |
+----------+
|     2556 |
+----------+
1 row in set (0.62 sec)

mysql> select count(*) from part right join dates on part.p_partkey < dates.d_datekey;
+------------+
| count(*)   |
+------------+
|<PHONE_NUMBER> |
+------------+
1 row in set (1.11 sec)

Checklist:

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

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

Bugfix cherry-pick branch check:

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

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

@mergifyio rebase

@Mergifyio backport branch-3.0


I dont want to use Paypal Plus. How i can use it without?

I dont want to use Paypal Plus. How i can use it without?

I rebuild it at the product shop dict. and now it is working but it shows again "Zahlen Sie mit PayPal Plus"

Hello,
Thank you for your message.
Are you using a German PayPal seller account?
Best regards,
Tetiana

Yes German

Hello,
Unfortunately, you have to use PayPal Plus if you are using a German merchant account. Starting from the v5.0.0 of the PayPal Official module it is required to use PayPal Plus instead of PayPal Express Checkout.
Please learn more about PayPal Plus here : https://www.paypal.com/de/webapps/mpp/paypal-plus
Best regards,

That is sad.

I understand you disappointment.
Anyway PayPal Plus offers a very similar experience and also offers payments by card and invoice.
Have a nice evening.

Is it possible to use paypal plus in germany but disable SEPA and credit card payment?

Hello,
thank you fort your question.
In case of PayPal Plus, the module offers the payment options enabled in your PayPal account. It is not possible to manage them via the module settings.
I suggest you to contact PayPal directly for getting more information about payment methods available for PayPal Plus Germany.
Have a good day !
Regards,
Tetiana

Hello,
thank you fort your question.
In case of PayPal Plus, the module offers the payment options enabled in your PayPal account. It is not possible to manage them via the module settings.
I suggest you to contact PayPal directly for getting more information about payment methods available for PayPal Plus Germany.
Have a good day !
Regards,
Tetiana


Content missing in "Retrieve the results of the completed operation" section

The section "Retrieve the results of the completed operation" is empty. It looks like there should be content.

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

ID: ccad95fe-ccea-c668-17c3-90781dc6b416
Version Independent ID: cdd73909-251b-ed82-6a3b-778c7f5ce08a
Content: Calling long running actions - OneDrive API - OneDrive dev center
Content Source: docs/rest-api/concepts/long-running-actions.md
Product: onedrive
GitHub Login: @JeremyKelley
Microsoft Alias: JeremyKe

Ah I see this is covered by #1419


Couldn't mount that volume / triggered rule

Hi,
I'm not sure what I'm doing wrong, but the drive won't mount after sleep.
I'm getting this error -50 (in console)
Also, how can I make a rule, that should be triggered ONLY when computer goes to sleep AND the drive is unmounted?
Thnx,
Roger

First part, probably because the system is either not on the network yet (in the case of a network volume) or it isn't ready to attach any drives yet on USB. Either way, set the action to have a delay.
To make the second part work you need to play with the confidence values so that the context can only be entered when both conditions are met.

I have the same problem with a USB drive (even with a 30 seconds delay).
What is the syntax/form of the parameter of the Mount action when attempting to mount a USB drive?
The Unmount action works fine, and I assumed the parameter of the Mount action should be the same as for the Unmount action, but that will not work.

The thick plottens!
I noticed that the code in Source/MountAction.m calls FSMountServerVolumeSync. I don't think that function can be used to mount a local disk (i.e. a USB disk). If I read the reference documentation correctly it is used for mounting network volumes.


Refused to get unsafe header "x-ms-bot-id"

Screenshots

Version
BotFramework WebChat CDN 4.9.1
Describe the bug
I see an error under the console with message "Refused to get unsafe header 'x-ms-bot-id'".

It could be that this header does not exist but it is being read which causes this error. A simple case here.

In my case I had element  under the body tags, when I placed the web chat container just under the body tag , it worked fine for me.

@ckkashyap @compulim can you help take a look and comment?

@swagatmishra2007 can you look at this one? This seems rooted from your PR, https://github.com/microsoft/BotFramework-DirectLineJS/commit/41f5df397a413d8878b9d570dffad2d50a3bc87e#diff-4ea468cc7b0c950f26da99e8ca71ac57R621.

Any solution for this error?

@swagatmishra2007 Could you take a look at this ticket?

Freshstart using react and bot framework directline (it is working well using a legacy webchat), same error. Does anyone has an update?

It's an unused header..I will file a PR to remove it .

we had the same issue - and we set back to version 4.9.0 and its fine. it only appears in 4.9.1 due to the fact that botframework-directlinejs was updated to 0.12.0 instead of 0.11.6

Same issue here with botframework-webchat": "^4.9.0"</> version. But this only happens in the live server though. There's no issue in my local.

SAME ISSUES*** Same issue here with botframework-webchat": "^4.9.0" version. But this only happens in the live server though. There's no issue in my local.

Is there any solution to this issue?

Is there any updates for this issue? What is the time line?

I used the 4.8.0 version and this issue went away.

DLJS 0.12.0 is causing the issue, which was introduced in WebChat 4.9.1 (but not 4.9.0).
@swagatmishra2007 to get to this sooner.

Fixed with https://github.com/microsoft/BotFramework-DirectLineJS/pull/296


Server side service list construction

Allow the DVB-I client to enter a postcode of some DVB-T multiplex information and receive a service list suitably tailored.
For reference client purposes, this could be from a sonatrained set of configurable values.
See A177r6 clause <IP_ADDRESS> for Server-side Region Selection using postcode information and clause <IP_ADDRESS> for Server-side Region Selection using reception information

How is the postcode validation meant to work? Drop all the regions that don't match the postcode? But if the matching region is a tertiary sub region, we need to include the parent regions? Should the parent regions be marked with selectable=false if the parent regions do not match the postcode?

A177 clause <IP_ADDRESS> says

A DVB-I client may ask the user to enter their postcode. A DVB-I client can check for matches between the user entered postcode and the postcodes associated with regions in the region list. The region that matches with the user's postcode should automatically be selected by the DVB-I client. When there is more than one region matching the user's postcode, the DVB-I client should offer manual selection between those regions.

So, only display regions that match the specified postcode!

Example servicelist with regions, android and hbbtv-client implementation added


No notifications txt

Update to allow for user to specify message when no notifications exist.  Added unit test as well.

Thanks, Chris.
The patch looks good, but could you please elaborate a bit about which use case this is necessary for, as opposed to simply passing noNotificationText to the component, and rendering it plainly like before?
It would also be nice if you could base this on the latest master.

Sorry I've been MIA for a bit and my bad about the branches stuff - I definitely messed up with it.
Also, feel free to discard this pull request haha.  I was just playing around with it and must have not seen what it was doing before.  The way it was previously would be fine.


When I close the 'channel more' modal, the keyboard does not disappear.

Submit feature requests to http://www.mattermost.org/feature-requests/. File non-security related bugs here in the following format:
Summary
Click the Channel More button in the left sidebar. If you do nothing and close the modal(click left top button), the keyboard won't close.
Environment Information

Device Name: android emulator
OS Version:
Mattermost App Version: 1.32.0
Mattermost Server Version: 5.23.0

Steps to reproduce

Click the Channel More button in the left sidebar.
If you do nothing and close the modal(click left top button), the keyboard won't close.

On ios, when I close the modal, the keyboard disappears normally.
Regardless of the modal type, if the modal is closed while the keyboard is open, the keyboard should disappear.
Expected behavior
When the modal is closed, the keyboard should disappear.
Observed behavior
What did you see happen? Please include relevant error messages and/or screenshots.
Possible fixes
If you can, link to the line of code that might be responsible for the problem.

Thanks, opened https://mattermost.atlassian.net/browse/MM-26490.


requirements.txt needed

project requirements are not documented, looking to add a requirements.txt file to track project dependencies.

solved


auto-completing div tags doesn't work properly in nested scenarios

This issue has been moved from a ticket on Developer Community.

When working on markup on a razor page in a blazor wasm project the auto-closing of tags does not seem to work properly when inside a @{ } code block.
For example, if I am typing markup outside of a code block when I type a  the editor automatically adds the closing . If I am inside of a code block however the editor does not add the closing tag. Then when I go to add the closing tag myself, the editor changes the closing tag I typed in to an opening tag and then adds a closing tag. See screenshot.

Original Comments
Feedback Bot on 11/18/2021, 09:57 PM:
We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.

Original Solutions
(no solutions)

Any status update on this issue? Autocompletion of nested div is still broken as of the latest 2023 update.


Players revive with 19 hearts.

I believe that there should be a section in the config for how many hearts a player who is revived is on.

When I was testing it earlier, the player either spawned with 19 hearts or 0.5.

Can you give more information about the bug? A way to reproduce. I couldn't get it to reproduce.

I killed my alt and it spawned with 19 hearts - tried it another time and was on 0.5 hearts.

Did the alt get banned i.e changed gamemode to spectator at any point?

I banned them, revived them, and when they spawned in they had 19 hearts, and after being killed they had 0 hearts.

Okay, I will update it.

Are you certain this is my mod? In this mod, all of the messages appear on the player action bar, not in chat, and the heart-lost message in my mod shows only "You lost a heart!".

The latest patch fixes the bug. However players drop hearts when killed by anything other than players, e.g. fall damage, mobs, TNT minecarts.

Dropping hearts in this case is intentional. Config will be added soon.

Also reviving uses all the hearts/netherite in the players inventory.
Will there be a config option to make the player get banned from the server until revival instead of spectator - so teamed players can't abuse spectator?


Minor adjustments to SPRIND and GAIA-X logo style

add min-width to SPRIND and GAIA-X icons, so that they look good on mobiles
add new GAIA-X logo (resolves #70)
increase font size of GAIA-X quote origin

Please add the missing sign-off to the commit message.


Add the ACL directive

ACL is a middleware allowing to control access of locations to certain client addresses. See https://github.com/atenart/caddy-acl.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.

Is this not similar to what ipfilter does ?

@abiosoft It's similar but with a different implementation. I personally find ipfilter quite odd: it does not deal with CIDR subnets and do not uses golang net functions to check client IPs against the allowed/denied subnets. Patching ipfilter would be quite difficult, to keep its way of dealing with subnets in addition to the one proposed here.
I do not intend to replace ipfilter, as some may be happy with it, but I'd like to give an alternative closer to what's usually available when dealing with subnets in other softwares/devices.

@atenart Thanks for the PR! I agree with @abiosoft this seems quite similar to ipfilter and we do not want to duplicate or overlap functionality at this amount I think.

Patching ipfilter would be quite difficult, to keep its way of dealing with subnets in addition to the one proposed here.

Would a breaking change to ipfilter be accepted? Especially if it was an improvement? /cc @pyed  Or do these in fact have different purposes?

ipfilter serves the same propose and more.
it is right that ipfilter doesn't support CIDR notation, but it supports the better way of doing it in my opinion where you can write just 192.168.1 for <IP_ADDRESS>/24 or just 32 for <IP_ADDRESS>/8
also recently we added the use of multiple ipfilter blocks which allows more complicated use cases, thanks to @Merccy
ipfilter is well-tested, if you have a use-case that ipfilter fall short with, let's talk about it at https://github.com/pyed/ipfilter

@pyed I don't agree, but I understand your point. Let's close this PR.

@atenart And just to clarify, I think your plugin looks great; it's just that we're currently working through a transition with how add-ons (now called "plugins") work with Caddy, including the policies around adding them to the Caddy source or the download page.
Anyone is of course welcome to write plugins for Caddy, but we use discretion when choosing which ones to add to the download page or to the Caddy source. I don't intend to follow the "app store" model because of the tight integration with Caddy and also for the sake of the user's experience. I think this methodology will encourage developers to improve plugins already on the download page rather than creating discordant plugins leading to a dizzying number of choices for users.
We'll build a plugin manager that people can install for custom Caddy builds, including installing plugins that aren't on the download page, but we haven't gotten around to that yet. :)

@mholt Yes, I really understand your point of not having duplicated plugins, no worries :) I was not expecting to get on the Caddy download page, just to be able to integrate my middleware nicely without having a patch on top of Caddy.
Your plugin manager idea seems nice, keep up the good work :)
@pyed Well,  ipfilter does have use cases not supported: IPv6, or nice way to describe other than /32, /24, /16 and /8 IPv4 subnets. But that's use cases not supported by design. I'm usually a "patch the existing" guy, but I'm not convinced here. Don't get me wrong, ipfilter provides a nice feature and if people are happy with it, keep it :)


Sometime flutter app showing strange

Sometime my app showing like image below on startup for few seconds, after that its working well.

Someone can explain to me? My app was build release mode for ios.

Same for me

This is old issue (mainly on iOS) when you have Image in background in BoxDecoration. AFAIK this happens when native views integration is enabled and should be gone if disabled.

@daniilguit do you know what to do in order to avoid it?

There are bunch of already open tickes about this issue, some containing hacks, like
https://github.com/flutter/flutter/issues/29289

thank you, I'll see them

I can confirm this is fixed in 1.4.19

This is a skia bug. and fixed on channel master. Changing to channel master results in this issue -> #30840

I think this can be closed


fix(client): check correct errorFormat variable

Closes https://github.com/prisma/prisma-client-js/issues/885

Can we add a test that confirms this works and keeps working?

Yes, a test would be great.
It can be a simple integration test, that uses the default errorformat (not providing it) with a simple validation error, for example trying to create a user and not providing a field.
Then if you snapshot it, it shouldn’t include any ansi characters and the test should succeed both in CI and locally.

I had an issue where the Ansi characters were not showing up in the snapshot. So i ended up just using
    expect(stripAnsi(e.message) === e.message).toBeTruthy() // This is a workaround as snapshots seem to strip ansi characters


Non-standard confirmation prompt

Confirmation prompt is non-standard.
I'm talking about this particular passage:
echo "Install $docset docset" | xargs -p | grep -q . || continue # confirm

The current prompt feels noninformative and makes no mention that "something" is required for the answer to be positive.
You should adopt the commonly used Do thing? [Y/n] style. The capital Y means that an empty response will default to "yes". If appropriate, you can also use [y/N], where the empty response would default to "no".
I haven't checked, but if there are other prompts in your code, please do the same about them.
I personally use the following function, which is written for ZSH, but it serves to illustrate:
function confirm()
{
    echo -n "$@ [y/N] "
    read answer
    for response in y Y yes YES Yes Sure sure SURE OK ok Ok kk; do
	[[ "_$answer" == "_$response" ]] && return 0
    done

    return 1
}

Just for illustration purposes, a positive-default version:
function negate()
{
    echo -n "$@ [Y/n] "
    read answer
    for response in n no No NO nope omgno; do
	[[ "_$answer" == "_$response" ]] && return 1
    done

    return 0
}

Usage as follows:
confirm "Do thing?" && do_thing

Thanks for your suggestion.  Added [y/N] hint in ab82acf1162bb82ef95f95e59a35be14166598dd.


Can CUDArt be loaded with VS2015?

I have the following problem when I try to add CUDArt.
I have already installed VS2015. But it seems that I should install VS2013,2012 or 2010. I want to know if it necessary for me to install another version of Visual Studio. If not, what should I do?
Pkg.add("CUDArt")
INFO: Cloning cache of CUDArt from git://github.com/JuliaGPU/CUDArt.jl.git
INFO: Installing CUDArt v0.2.3
INFO: Building CUDArt
===============================[ ERROR: CUDArt ]================================
LoadError: Cannot find proper Visual Studio installation. VS 2013, 2012, or 2010 is required.
while loading C:\Users\Miller.julia\v0.4\CUDArt\deps\build.jl, in expression starting on line 10
================================================================================
================================[ BUILD ERRORS ]================================
WARNING: CUDArt had build errors.

packages with build errors remain installed in C:\Users\Miller.julia\v0.4
build the package(s) and all dependencies with Pkg.build("CUDArt")
build a single package by running its deps/build.jl script

================================================================================
INFO: Package database updated

I don't know much about Windows, so others may have to help you if you can't figure this out. But check out the build.jl script as listed in the backtrace; presumably it's just a matter of adding a check for a newer version of VS.
Assuming you do this in a way that doesn't break things for other users, please submit your fix as a pull request!

@timholy yeah.. I guess so. But I don't know what check should I add in my VS. I will continue trying.

I don't think you need to change your VS in any way, this seems to be an environment variable and/or path issue.
Before trying to load CUDArt you can do this:
julia> ENV["foo"] = "bar"
"bar"

julia> haskey(ENV, "foo")
true

So you could spoof having VS 2012 (VS120COMNTOOLS) until you figure out the magic incantation.

@liusihaoshiwo Did you get this to work? I think the problem is that CUDA 7.5 doesn't even properly work with VS 2015, thus I don't see why you would expect this to build too
julia> Pkg.build("CUDArt")
INFO: Building CUDArt

Microsoft (R) Program Maintenance Utility Version 14.00.23918.0
Copyright (C) Microsoft Corporation.  All rights reserved.

        nvcc --shared --compiler-options="/wd4819" --linker-options= wrapcuda.c -o libwrapcuda.dll
nvcc fatal   : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2010, 2012, and 2013 are supported
NMAKE : fatal error U1077: '"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.EXE"' : return code '0x1'
Stop.
========================================================[ ERROR: CUDArt ]========================================================

LoadError: failed process: Process(`cmd /C 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\..\..\VC\vcvarsall.bat' amd64 & nmake -f Windows.mk`, ProcessExited(2)) [2]
while loading C:\Users\Mustafa\.julia\v0.5\CUDArt\deps\build.jl, in expression starting on line 23

=================================================================================================================================

========================================================[ BUILD ERRORS ]=========================================================

WARNING: CUDArt had build errors.

 - packages with build errors remain installed in C:\Users\Mustafa\.julia\v0.5
 - build the package(s) and all dependencies with `Pkg.build("CUDArt")`
 - build a single package by running its `deps/build.jl` script

==================================================================================================

Yes, VS2015 has issues with CUDA 7.5 that would be hard to get around. CUDA 8 solves those issues, so CUDArt.jl should work pretty much out of the box with VS2015 once CUDA 8 is out.

CUDA 8 is out. Does VS2015 work with this package now? Can we add that line to build.jl? What about VS14?

@kshyatt finally VS2015 support for cuda:  https://devblogs.nvidia.com/parallelforall/cuda-8-features-revealed/

Yes, but has anyone actually built this package with it?

I've been using it for awhile (since I got a GTX 1080). It works. Never tried it with VS though.

I can certainly believe CUDA 8 works and this package works with gcc and CUDA 8. But the issue is about VS :). Can someone try it out?

I can confirm this works if add VS140COMNTOOLS
https://github.com/JuliaGPU/CUDArt.jl/blob/master/deps/build.jl#L3
yayy
Sans the slew of deprecation warnings

Thanks for checking! Do you mind opening a PR (and maybe fixing some depwarns?)

Also tests don't pass but that's another thing.

Troublesome test:
ERROR: MethodError: no method matching copy!(::CUDArt.CudaArray{Float64,2}, ::Array{Float32,2})
Closest candidates are:
copy!{T}(::Array{T,N}, ::Array{T,N}) at array.jl:68
copy!(::BitArray{N}, ::Array{T,N}) at bitarray.jl:457
copy!(::Base.PermutedDimsArrays.PermutedDimsArray{T,N,perm,iperm,AA<:AbstractArray}, ::AbstractArray{T,N}) at permuteddimsarray.jl:62

hopefully Tim can update the package with the pr for this fix

Not sure which PR you mean?
With all the work on Images and the zoo of associated changes to arrays/colors/numbers/io, GPUs are just beyond me to think about right now. I'm happy to allow others to make decisions here. It's not like I'm a huge expert on the subject, anyway (there are many who know much more). Perhaps the pool of contributors should be enlarged if we're missing people who know stuff who can merge things.

ah sorry I meant TIm @maleadt  : )

@musm I'm not a Windows user, and CUDArt's tests aren't failing on my setup (Linux x64, Julia nightly, CUDA 8) -- except occasionally for the gc() ones which are just fragile. Maybe make a separate bug report with some more information and a full backtrace (the one you posted doesn't show which test failed)?

#59

can be now closed

Thanks for all your work on this @musm!


changes needed for keybase/client

Let's discuss this, requires a level of indirection if node / non-node are going to work together

how do you work around the lack of net in the client connect path?  Should we be passing in the net module as a variable

My thinking is: split into two packages, node-framed-msgpack-rpc-core, which gives you what you need, and node-framed-msgpack-rpc which includes net-based listeners.


add requests task

Would be nice to have a task wrapping requests

Like one that took method as an argument and you can get, put, post, delete and such?

exactly

Something like this might make sense to have both as a task and as a function, i.e something which shares common code.

haha yeah, my current implementation (which I will submit soon) looks exactly like that :)

Solve in #96


Errors aren't logged in Azure Insights during initialization making it extremely hard to troubleshoot

If there's an issue with imports (say you reference a file that isn't available during runtime) or really any error in the "global" space, there is no error to be found in the Azure Insights log traces. This makes it extremely hard to troubleshoot.
Repro steps
Throw an error outside the function handler.
const { app } = require('@azure/functions');

if (!process.env.MY_VAR) {
    throw new Error('MY_VAR is not defined')
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    handler: async (request, context) => {
        context.log(`Http function processed request for url "${request.url}"`);

        const name = request.query.get('name') || await request.text() || 'world';

        return { body: `Hello, ${name}!` };
    }
});

Expected behavior
I get the following log when using the emulator:
Worker was unable to load entry point "src/functions/httpTrigger1.js": MY_VAR is not defined

Actual behavior
However, when deployed to Azure, the error is not logged. We have no idea what went wrong. The end-result is that 0 functions were discovered and the function app is essentially empty.
0 functions loaded
Generating 0 job function(s)
No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
HttpOptions { "DynamicThrottlesEnabled": true, "EnableChunkedRequestBinding": false, "MaxConcurrentRequests": 100, "MaxOutstandingRequests": 200, "RoutePrefix": "api" }
Initializing function HTTP routes No HTTP routes mapped

Workaround
Update: Ok, I set the logLevel of Azure.Core to Trace and then finally the error / stack trace is logged. Can the log level be fixed so the error gets logs as error or at least warning?

Hi @restfulhead, please try this out and let us know if it helps: https://learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#functions_node_block_on_entry_point_error

@ejizba Oh didn't know about this setting, thank you. Will do and report back if there are any further issues.


[SPARK-44806][CONNECT] Move internal client spark-connect-common to be able to test real in-process server with a real RPC client

What changes were proposed in this pull request?
Currently, Spark Connect has the following types of integration tests:

Client unit tests with a mock in process server (DummySparkConnectService with GRPC InProcessServerBuilder)
Client unit tests with a mock RPC server (DummySparkConnectService with GRPC NettyServerBuilder)
Server unit tests with in-process server and using various mocks
E2E tests of real client with a server started in another process (using RemoteSparkSession)

What is lacking are E2E tests with an in-process Server (so that server state can be inspected asserted), and a real RPC client. This is impossible, because classes from spark-connect-client-jvm module include the client API which duplicates Spark SQL APIs of SparkSession, Dataset etc. When trying to pull a real client into the server module for testing, these classes clash.
Move the org.apache.spark.sql.connect.client code into new spark-connect-client-jvm-internal module, so that the internal SparkConnectClient code is separated from the client public API, and can be pulled into testing of the server.
Tried alternative approach in https://github.com/apache/spark/pull/42465. That doesn't work, because it also reorders the maven build in a way so that client is build before server, but client actually requires server to be build first to use tests with RemoteSparkSession
Tried alternative approach to depend on a shaded/relocated version of client in https://github.com/apache/spark/pull/42461, but that's just not possible to do neither in maven nor sbt.
Tried alternative approach to create client-jvm-internal module in https://github.com/apache/spark/pull/42441, moving things to connect-common was preferred to introducing new module by reviewers.
Moved it together with tests in https://github.com/apache/spark/pull/42501, but moving tests isn't really needed.
Why are the changes needed?
For being able to use the internal client for testing of in-process server with an in-process client, but communicating over real RPC.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
All modules test and build.

@LuciferYang @grundprinzip @hvanhovell
Based on feedback, this version of move to common just moves the main src file that are needed for server testing, and the change is made smaller by keeping the tests in client.

Move the org.apache.spark.sql.connect.client code into new spark-connect-client-jvm-internal module, so that the internal SparkConnectClient code is separated from the client public API, and can be pulled into testing of the server.

Should this part of the PR description be fixed? Move the org.apache.spark.sql.connect.client code into spark-connect-common module?

Move the org.apache.spark.sql.connect.client code into new spark-connect-client-jvm-internal module, so that the internal SparkConnectClient code is separated from the client public API, and can be pulled into testing of the server.

Should this part of the PR description be fixed? Move the org.apache.spark.sql.connect.client code into spark-connect-common module?

Thanks. Updated. Too much copying between too many PRs :-).

Some flakiness in CI:
https://github.com/juliuszsompolski/apache-spark/actions/runs/5888703839/job/15970448024
[info] *** 4 TESTS FAILED ***
[error] Failed tests:
[error] 	org.apache.spark.deploy.yarn.YarnClusterSuite
[error] (yarn / Test / test) sbt.TestsFailedException: Tests unsuccessful

https://github.com/juliuszsompolski/apache-spark/actions/runs/5888703839/job/15970448536
[info] *** 1 TEST FAILED ***
[error] Failed: Total 3035, Failed 1, Errors 0, Passed 3034, Ignored 3
[error] Failed tests:
[error] 	org.apache.spark.sql.execution.streaming.state.StateStoreSuite

https://github.com/juliuszsompolski/apache-spark/actions/runs/5888703839/job/15970448901
*** 2 TESTS FAILED ***
Failed: Total 9533, Failed 2, Errors 0, Passed 9531, Ignored 27
Failed tests:
org.apache.spark.sql.execution.python.PythonUDTFSuite

https://github.com/juliuszsompolski/apache-spark/actions/runs/5888703839/job/15970476639 keeps running for 4.5h...

 The tests are flaky.


Net::HTTPServerException: 401 "Unauthorized" - berks upload

While executing berks upload it says Net::HTTPServerException: 401 "Unauthorized"

please upload cookboob

issue is fixed, It was issue with time sync.
Installed ntp (centos) and started the service.
Thanks for your assistance!!


Ruff has unstable results with target-version (normally hidden by caching)

I am switching from shed to ruff at $WORK and found what looks like a bug in Ruff's formatter (unstable output);
normally this appears to be hidden by caching, implying a second bug in the caching logic.
Here's a minimized repro with target-version and a particular code pattern
(further minimization ideas I tried broke the repro but some likely exist):
Python 3.11.6 | packaged by conda-forge | (main, Oct  3 2023, 10:37:07) [Clang 15.0.7 ]
ruff 0.3.1
N.B. also tested on {python3.11,python3.12} x {ruff==0.3.0, ruff==0.3.1}

Starting hash of file:
57be245f1161c2069df7c842b935038e30c0a17aa31c924218aa925566203636  wat.py
Starting file contents:
with (
    open(
        "/etc/hosts"  # This is an incredibly long comment that has been replaced for sanitization
    )
):
    pass

When reading from the cache (default behavior), stable after first run:
1 file reformatted
1acf49d050ef0ac27cb93c028af71a4d8d918a91992dbb497c6da52393d91f98  wat.py
with open(
    "/etc/hosts"  # This is an incredibly long comment that has been replaced for sanitization
):
    pass
1 file left unchanged
1acf49d050ef0ac27cb93c028af71a4d8d918a91992dbb497c6da52393d91f98  wat.py
1 file left unchanged
1acf49d050ef0ac27cb93c028af71a4d8d918a91992dbb497c6da52393d91f98  wat.py

If you disable reading from the cache, output flip flops on each run:
1 file reformatted
57be245f1161c2069df7c842b935038e30c0a17aa31c924218aa925566203636  wat.py
1 file reformatted
1acf49d050ef0ac27cb93c028af71a4d8d918a91992dbb497c6da52393d91f98  wat.py
1 file reformatted
57be245f1161c2069df7c842b935038e30c0a17aa31c924218aa925566203636  wat.py

N.B. I have no ruff config settings, and didn't see related issues/PRs but let me know if I missed one!

Script that produced this output
#!/usr/bin/env bash

# no errexit
set -o nounset
set -o pipefail

tmp_dir="$(mktemp -d)"
cleanup() {
    rm -rf "${tmp_dir}"
}
trap cleanup EXIT INT QUIT TERM

cd "${tmp_dir}"
# N.B. does not repro if comment is removed and "/etc/hosts" made very long instead
cat >./wat.py <<EOF
with (
    open(
        "/etc/hosts"  # This is an incredibly long comment that has been replaced for sanitization
    )
):
    pass
EOF

python -m venv ./venv
./venv/bin/pip install --quiet ruff==0.3.1
./venv/bin/python --version --version
./venv/bin/ruff --version
echo 'N.B. also tested on {python3.11,python3.12} x {ruff==0.3.0, ruff==0.3.1}'

echo -e "\nStarting hash of file:"
sha256sum wat.py
echo "Starting file contents:"
cat wat.py

echo -e "\nWhen reading from the cache (default behavior), stable after first run:"
./venv/bin/ruff format --isolated --target-version py310 wat.py
sha256sum wat.py
cat wat.py
./venv/bin/ruff format --isolated --target-version py310 wat.py
sha256sum wat.py
./venv/bin/ruff format --isolated --target-version py310 wat.py
sha256sum wat.py

echo -e "\nIf you disable reading from the cache, output flip flops on each run:"
./venv/bin/ruff format --isolated --target-version py310 --no-cache wat.py
sha256sum wat.py
./venv/bin/ruff format --isolated --target-version py310 --no-cache wat.py
sha256sum wat.py
./venv/bin/ruff format --isolated --target-version py310 --no-cache wat.py
sha256sum wat.py

What's reported in the issue is a formatter stability issue when formatting with statements.
# Input
with (
    open(
        "/etc/hosts"  # This is an incredibly long comment that has been replaced for sanitization
    )
):
    pass

# Formatted once
with open(
    "/etc/hosts"  # This is an incredibly long comment that has been replaced for sanitization
):
    pass

# Formatted twice
with (
    open(
        "/etc/hosts"  # This is an incredibly long comment that has been replaced for sanitization
    )
):
    pass

Playground