Have Secret Provisioner respect no-prune flag

What?

Currently the Secret Provisioner does not respect the no-prune flag
The resource should be updated to respect the flag

merged


Try to implement returning without changing the sql on execute

Not tested, so likely not really working.
At least we need to fix the buffer size in cbf_get_data

After we merged @geomaniac's PR we should be fine.


[BUG] For ShareFileClient point to an Azure File which need allow trailing dot, ShareFileClient.Rename() and ShareFileClient.StartCopy() use different ShareClientOptions

Library name and version
Azure.Storage.Files.Shares 12.14.0
Describe the bug
For ShareFileClient point to an Azure File which need allow trailing dot, when call different API, need use different client options.
Like :
ShareFileClient.Rename(): need set AllowSourceTrailingDot to true.
ShareFileClient.GetProperties(): need set AllowTrailingDot to true.
ShareFileClient.StartCopy(): need set AllowTrailingDot to true.
However, since Client option is set when create the ShareFileClient object, and it looks can't change the Client option on an existing ShareFileClient, this makes the user very difficult to use same ShareFileClient  to handle different API on same Azure file object.
Expected behavior
User should can use same ShareFileClient  to handle different API on same Azure file object, when the Azure file object need allow trailing dot. (But the rename dest, or copy source doesn't need allow trailing dot.)
We should either allow update the Client option on an existing ShareFileClient, or allow user to input AllowSourceTrailingDot /AllowTrailingDot in ShareFileClient.Rename() API parameter to overwrite the setting in Client Option.
Actual behavior
User can't use same ShareFileClient  to handle different API on same Azure file object, when the Azure file object need allow trailing dot. (But the rename dest, or copy source doesn't need allow trailing dot.)
Reproduction Steps
See above.
Environment
dotnet --info
.NET SDK:
Version:   7.0.306
Commit:    f500069cb7
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.19045
OS Platform: Windows
RID:         win10-x64
Base Path:   C:\Program Files\dotnet\sdk\7.0.306\
Host:
Version:      7.0.9
Architecture: x64
Commit:       8e9a17b221
.NET SDKs installed:
3.1.426 [C:\Program Files\dotnet\sdk]
6.0.120 [C:\Program Files\dotnet\sdk]
6.0.315 [C:\Program Files\dotnet\sdk]
7.0.203 [C:\Program Files\dotnet\sdk]
7.0.306 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.30 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.9 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
x86   [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
Environment variables:
Not set
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download

Adding Service team to look into this


Request support for MOES Smart Control Panel Mini

Log message
Device matches None with quality of 0%. DPS: {"updated_at":<PHONE_NUMBER>.7288413, "3": false, "16": false, "17": false, "37": "relay", "38": "memory", "39": "memory", "40": "memory", "41": "memory"}

DPS information
{
  "result": {
    "model": "{\"modelId\":\"g00mg8\",\"services\":[{\"actions\":[],\"code\":\"\",\"description\":\"\",\"events\":[],\"name\":\"默认服务\",\"properties\":[{\"abilityId\":1,\"accessMode\":\"ro\",\"code\":\"up_channel\",\"description\":\"1\",\"extensions\":{\"iconName\":\"icon-dp_mode\"},\"name\":\"上行\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":2,\"accessMode\":\"wr\",\"code\":\"down_channel\",\"description\":\"2\",\"extensions\":{\"iconName\":\"icon-dp_mode\"},\"name\":\"下行\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":3,\"accessMode\":\"rw\",\"code\":\"switch_3\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_3\",\"attribute\":\"1\"},\"name\":\"开关3\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":16,\"accessMode\":\"rw\",\"code\":\"switch_1\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_1\",\"attribute\":\"1\"},\"name\":\"开关1\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":17,\"accessMode\":\"rw\",\"code\":\"switch_2\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-dp_2\",\"attribute\":\"1\"},\"name\":\"开关2\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":36,\"accessMode\":\"rw\",\"code\":\"backlight_switch\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-a_power\"},\"name\":\"背光灯开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":37,\"accessMode\":\"rw\",\"code\":\"light_mode\",\"description\":\"\",\"extensions\":{\"iconName\":\"tcl_function_light\"},\"name\":\"指示灯状态设置\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"none\",\"relay\",\"pos\"]}},{\"abilityId\":38,\"accessMode\":\"rw\",\"code\":\"relay_status\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-zhuangtai\"},\"name\":\"上电状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"off\",\"on\",\"memory\"]}},{\"abilityId\":39,\"accessMode\":\"rw\",\"code\":\"relay_status_1\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-zhuangtai\"},\"name\":\"开关1上电状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"off\",\"on\",\"memory\"]}},{\"abilityId\":40,\"accessMode\":\"rw\",\"code\":\"relay_status_2\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-zhuangtai\"},\"name\":\"开关2上电状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"off\",\"on\",\"memory\"]}},{\"abilityId\":41,\"accessMode\":\"rw\",\"code\":\"relay_status_3\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-zhuangtai\"},\"name\":\"开关3上电状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"off\",\"on\",\"memory\"]}},{\"abilityId\":201,\"accessMode\":\"rw\",\"code\":\"ir_send\",\"description\":\"201\",\"extensions\":{\"iconName\":\"icon-icon-test11\"},\"name\":\"红外控制下发\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":3072}},{\"abilityId\":202,\"accessMode\":\"ro\",\"code\":\"ir_study_code\",\"description\":\"202\",\"extensions\":{\"iconName\":\"icon-shangsheng\"},\"name\":\"红外学习值上报\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},{\"abilityId\":203,\"accessMode\":\"rw\",\"code\":\"voice_vol\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-sound\",\"attribute\":\"2048\"},\"name\":\"音量控制\",\"typeSpec\":{\"type\":\"value\",\"max\":100,\"min\":0,\"scale\":0,\"step\":1}},{\"abilityId\":204,\"accessMode\":\"rw\",\"code\":\"voice_mic\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-power\",\"attribute\":\"2048\"},\"name\":\"麦克风开关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":205,\"accessMode\":\"rw\",\"code\":\"voice_play\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-zanting\",\"attribute\":\"2048\"},\"name\":\"暂停/播放\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":206,\"accessMode\":\"rw\",\"code\":\"voice_bt_play\",\"description\":\"\",\"extensions\":{\"iconName\":\"icon-power\",\"attribute\":\"2048\"},\"name\":\"蓝牙开/关\",\"typeSpec\":{\"type\":\"bool\"}},{\"abilityId\":207,\"accessMode\":\"rw\",\"code\":\"voice_alarm_clock\",\"description\":\"207\",\"extensions\":{\"iconName\":\"icon-timer1\",\"attribute\":\"2048\"},\"name\":\"本地闹钟\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":255}},{\"abilityId\":208,\"accessMode\":\"rw\",\"code\":\"voice_ctrl_group\",\"description\":\"208\",\"extensions\":{\"iconName\":\"icon-dp_mic\",\"attribute\":\"2048\"},\"name\":\"语音控制组合\",\"typeSpec\":{\"type\":\"string\",\"maxlen\":3072}}]}]}"
  },
  "success": true,
  "t":<PHONE_NUMBER>806,
  "tid": "7e4772808aea11ef8655dad62fbc1fe9"
}

Product ID
z1fcxdrpiazyjaky
Product Name
CCP-S01-EU-WH-EN
Information about how the device functions
Here are also the Tuya Data Points:
{"1":"Up channel","2":"Down channel","3":"L3","16":"L1","17":"L2","36":"backlight switch","37":"Indicate light status","38":"Relay status all","39":"Relay status 1","40":"Relay status 2","41":"Relay status 3","201":"IR send","202":"ir study code","203":"voice vol\t","204":"voice mic","205":"voice play","206":"voice bt play\t","207":"alarm clock","208":"ctrl group"}

Link to the product: https://moeshouse.com/products/tuya-wifi-3-5-inch-touchscreen-control-ir-remote-control-bluetooth-sigmesh-hub-built-in
Edit: Added the missing log
Edit2: Added the correct product ID

@make-all Hey Jason, I didn't provide the log message because I wasn't sure where to find it, but I got it now, the log is as following:
Device matches None with quality of 0%. DPS: {"updated_at":<PHONE_NUMBER>.7288413, "3": false, "16": false, "17": false, "37": "relay", "38": "memory", "39": "memory", "40": "memory", "41": "memory"}

Though I assume the quality of 0% would mean that this cannot be supported either way.

Your product id appears to be a device id, which is unique to your device. There should be a separate product id, available from the same cloud API functions that return the local key, or from a python -m tinytuya scan

Product ID should be the following: z1fcxdrpiazyjaky

Let me know if you need anything else from me 👍

So I tried it, I am running into following errors:
Protocol Error 914: "Check device key or version"
Protocol Error 901: "Network Error: Unable to Connect"
Protocol Error 904: "Unexpected Payload from Device"
Now I went to cross verify the DPS mappings
{
  "result": {
    "properties": [
      {
        "code": "up_channel",
        "custom_name": "",
        "dp_id": 1,
        "time":<PHONE_NUMBER>967,
        "type": "raw"
      },
      {
        "code": "down_channel",
        "custom_name": "",
        "dp_id": 2,
        "time":<PHONE_NUMBER>967,
        "type": "raw"
      },
      {
        "code": "switch_3",
        "custom_name": "",
        "dp_id": 3,
        "time":<PHONE_NUMBER>232,
        "type": "bool",
        "value": false
      },
      {
        "code": "switch_1",
        "custom_name": "",
        "dp_id": 16,
        "time":<PHONE_NUMBER>506,
        "type": "bool",
        "value": false
      },
      {
        "code": "switch_2",
        "custom_name": "",
        "dp_id": 17,
        "time":<PHONE_NUMBER>800,
        "type": "bool",
        "value": false
      },
      {
        "code": "backlight_switch",
        "custom_name": "",
        "dp_id": 36,
        "time":<PHONE_NUMBER>967,
        "type": "bool",
        "value": false
      },
      {
        "code": "light_mode",
        "custom_name": "",
        "dp_id": 37,
        "time":<PHONE_NUMBER>828,
        "type": "enum",
        "value": "relay"
      },
      {
        "code": "relay_status",
        "custom_name": "",
        "dp_id": 38,
        "time":<PHONE_NUMBER>444,
        "type": "enum",
        "value": "memory"
      },
      {
        "code": "relay_status_1",
        "custom_name": "",
        "dp_id": 39,
        "time":<PHONE_NUMBER>538,
        "type": "enum",
        "value": "memory"
      },
      {
        "code": "relay_status_2",
        "custom_name": "",
        "dp_id": 40,
        "time":<PHONE_NUMBER>583,
        "type": "enum",
        "value": "memory"
      },
      {
        "code": "relay_status_3",
        "custom_name": "",
        "dp_id": 41,
        "time":<PHONE_NUMBER>641,
        "type": "enum",
        "value": "memory"
      },
      {
        "code": "ir_send",
        "custom_name": "",
        "dp_id": 201,
        "time":<PHONE_NUMBER>967,
        "type": "string",
        "value": ""
      },
      {
        "code": "ir_study_code",
        "custom_name": "",
        "dp_id": 202,
        "time":<PHONE_NUMBER>967,
        "type": "raw"
      },
      {
        "code": "voice_vol",
        "custom_name": "",
        "dp_id": 203,
        "time":<PHONE_NUMBER>967,
        "type": "value",
        "value": 0
      },
      {
        "code": "voice_mic",
        "custom_name": "",
        "dp_id": 204,
        "time":<PHONE_NUMBER>967,
        "type": "bool",
        "value": false
      },
      {
        "code": "voice_play",
        "custom_name": "",
        "dp_id": 205,
        "time":<PHONE_NUMBER>967,
        "type": "bool",
        "value": false
      },
      {
        "code": "voice_bt_play",
        "custom_name": "",
        "dp_id": 206,
        "time":<PHONE_NUMBER>967,
        "type": "bool",
        "value": false
      },
      {
        "code": "voice_alarm_clock",
        "custom_name": "",
        "dp_id": 207,
        "time":<PHONE_NUMBER>967,
        "type": "string",
        "value": ""
      },
      {
        "code": "voice_ctrl_group",
        "custom_name": "",
        "dp_id": 208,
        "time":<PHONE_NUMBER>967,
        "type": "string",
        "value": ""
      }
    ]
  },
  "success": true,
  "t":<PHONE_NUMBER>907,
  "tid": "ca86c5c4939d11efad5172ecb0bd0dcf"
}

and they match the integration here.
Next I tried pinging the device and it pings just fine, so no issues with connectivity.
Another thing I cross-checked was the local_key, which I verified to be correct both through tinytuya and directly from the Tuya Developer portal website.
So now I am unsure where the actual issue might be, one observation I made was, that if I want to add the device through "
Smart Life cloud-assisted device setup." it won't show there, but will only show as a Gateway, official Tuya integration also shows the device as "Smart Control Panel Mini (unsupported)"

You managed to get a log message before, so it must be possible to connect it. Maybe see the possible causesfor connection issues listed in #522.

2024-10-26 20:11:37.659 DEBUG (MainThread) [custom_components.tuya_local.device] Refreshing device state for Test
2024-10-26 20:11:37.660 INFO (MainThread) [custom_components.tuya_local.device] Setting protocol version for Test to 3.1
2024-10-26 20:11:37.696 DEBUG (SyncWorker_23) [custom_components.tuya_local.device] Test refreshed device state: {"Error": "Unexpected Payload from Device", "Err": "904", "Payload": null}
2024-10-26 20:11:37.696 WARNING (SyncWorker_23) [custom_components.tuya_local.device] Test protocol error 904: Unexpected Payload from Device
2024-10-26 20:11:37.697 DEBUG (SyncWorker_23) [custom_components.tuya_local.device] new state (incl pending): {"updated_at":<PHONE_NUMBER>.6964915}
2024-10-26 20:11:41.134 DEBUG (MainThread) [custom_components.tuya_local.device] Refreshing device state for Test
2024-10-26 20:11:41.134 INFO (MainThread) [custom_components.tuya_local.device] Setting protocol version for Test to 3.2
2024-10-26 20:11:42.733 DEBUG (SyncWorker_33) [custom_components.tuya_local.device] Test refreshed device state: {"Error": "Unexpected Payload from Device", "Err": "904", "Payload": null}
2024-10-26 20:11:42.733 WARNING (SyncWorker_33) [custom_components.tuya_local.device] Test protocol error 904: Unexpected Payload from Device
2024-10-26 20:11:42.733 DEBUG (SyncWorker_33) [custom_components.tuya_local.device] new state (incl pending): {"updated_at":<PHONE_NUMBER>.7335215}
2024-10-26 20:11:46.415 DEBUG (MainThread) [custom_components.tuya_local.device] Refreshing device state for Test
2024-10-26 20:11:46.415 INFO (MainThread) [custom_components.tuya_local.device] Setting protocol version for Test to 3.3
2024-10-26 20:11:46.451 DEBUG (SyncWorker_5) [custom_components.tuya_local.device] Test refreshed device state: {"Error": "Unexpected Payload from Device", "Err": "904", "Payload": null}
2024-10-26 20:11:46.451 WARNING (SyncWorker_5) [custom_components.tuya_local.device] Test protocol error 904: Unexpected Payload from Device
2024-10-26 20:11:46.451 DEBUG (SyncWorker_5) [custom_components.tuya_local.device] new state (incl pending): {"updated_at":<PHONE_NUMBER>.451411}
2024-10-26 20:11:49.196 DEBUG (MainThread) [custom_components.tuya_local.device] Refreshing device state for Test
2024-10-26 20:11:49.196 INFO (MainThread) [custom_components.tuya_local.device] Setting protocol version for Test to 3.4
2024-10-26 20:11:49.243 DEBUG (SyncWorker_61) [custom_components.tuya_local.device] Test refreshed device state: {"Error": "Check device key or version", "Err": "914", "Payload": null}
2024-10-26 20:11:49.243 WARNING (SyncWorker_61) [custom_components.tuya_local.device] Test protocol error 914: Check device key or version
2024-10-26 20:11:49.243 DEBUG (SyncWorker_61) [custom_components.tuya_local.device] new state (incl pending): {"updated_at":<PHONE_NUMBER>.243419}
2024-10-26 20:11:50.892 DEBUG (MainThread) [custom_components.tuya_local.device] Refreshing device state for Test
2024-10-26 20:11:50.892 INFO (MainThread) [custom_components.tuya_local.device] Setting protocol version for Test to 3.5

tinytuya output:
Smart Control Panel Mini   Product ID = keyqrn89dqf7hqpe  [Valid Broadcast]:
    Address = <IP_ADDRESS>   Device ID = bf7e32d4dec892fba5dhz9 (len:22)  Local Key = xyz  Version = 3.5  Type = default, MAC = fc:3c:d7:9c:39:af
    Status: {'3': False, '16': False, '17': False, '37': 'relay', '38': 'memory', '39': 'memory', '40': 'memory', '41': 'memory'}

I still get this however:
2024-10-26 20:17:17.059 WARNING (MainThread) [custom_components.tuya_local.config_flow] Device matches None with quality of 0%. DPS: {"updated_at":<PHONE_NUMBER>.6598845, "3": false, "16": false, "17": false, "37": "relay", "38": "memory", "39": "memory", "40": "memory", "41": "memory"}
I have it added under homeassistant/custom_components/tuya_local/devices/moes_controlpanel.yaml and I have restarted the whole Home Assistant after adding it.
Force stopped the Tuya app on my device and also made sure the Smart Panel has a static IP. I went ahead and re-paired the device with Tuya, it changed its Device ID and local_key, now when I try to connect using the credentials and Protocol V3.5, I get a "Sorry, there is no support for this device." message.
I guess I will just wait for the official release as it seems I might be doing something wrong when adding the new device yaml config to the files.

No, you are not doing something wrong, I didn't notice that the backlight dp (36) is missing from the log so didn't mark it as optional.

I am happy to report that it works as intended now, I was namely looking for the Switch control as not even the Tuya integration in HA supports controls for that yet.
Thank you very much!


Error message "expected indented block" on misleading line

Godot version
v4.1.1.stable.official [bd6af8e0e]
System information
Godot v4.1.1.stable - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; <IP_ADDRESS>40) - Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz (4 Threads)
Issue description
When a function body is missing, you get the following error message:

From the user's perspective the line displayed as an error line is totally wrong. I know that that is the line where the error is detected, but for the user it is a wrong line. At Godot subreddit it is quite often that users are stuck with these errors.
Another example where line 39 would be the most logical error location for the user. This is a little bit easier for the user as the error message tells that "for" block is missing something.

In my opinion the best fix would be to move the error location to the line that the error message refers to, in these examples function declaration line and for line. A small improvement would be to display the function name in the first example: Error at (41, 1): Expected inteded block after function declaration 'foo()'
Steps to reproduce
func foo():

func bar():
	pass

func foo():
	for i in range(2):

func bar():
	pass

Minimal reproduction project
N/A

This is probably because empty lines are valid indentation, so the first like that actually violates the indentation is the line indicated, though confusing it isn't wrong as such
It could be improved by backtracking over these empty lines though

We could mark as error the node after which an indent is expected, in this case func or for.


Update minio link

Thank's @nmuzychuk for the update. I see the difference :wink:

How come we didn't notice this 😮 ??? 💥


Feature/3.x custom renderer

Type: feature / refactoring
Issue: Resolves #1196
Breaking change: yes/no (if yes explain why)

Extract Renderer instance creation from \PHPMD\TextUI\CommandLineOptions and add it in \PHPMD\Renderer\RendererFactory
Add --bootstrap option on  \PHPMD\TextUI\CommandLineOptions to have ability to load whatever we need before running analysis, that include of course external autoloader (in charge to load extra Renderer classes)
Load any extra Custom Renderer that follow PSR4 rule by new method \PHPMD\Renderer\RendererFactory::getRenderer()
Introduces a \PHPMD\Renderer\RendererInterface contract that all renderers should follow, even if they do not or can't extends the \PHPMD\AbstractRenderer class

You need to update the signature of processFiles() to use the new interface rather then the abstract:
https://github.com/phpmd/phpmd/blob/3.x/src/main/php/PHPMD/PHPMD.php#L196

Test coverage of the diff is low but I think it's just a matter of @covers annotations to be adjusted.

Test coverage of the diff is low but I think it's just a matter of @covers annotations to be adjusted.

Hope commit https://github.com/phpmd/phpmd/pull/1197/commits/ff1c31e8a35b1bd7986566cf48d594605c7d1c07 will be enough


UP: Rule for rewriting typing_extensions.TypeAliasType as type ... on Python 3.12

On Python 3.12, the new type alias syntax, type X = Y, produces a typing.TypeAliasType object, which has been backported to typing_extensions.
And pydantic makes use of this typing_extensions.TypeAliasType: https://docs.pydantic.dev/latest/concepts/types/#named-type-aliases
From the pydantic docs:
from typing import List, TypeVar

from annotated_types import Gt
from typing_extensions import Annotated, TypeAliasType

T = TypeVar('T')  # or a `bound=SupportGt`

PositiveList = TypeAliasType(
    'PositiveList', List[Annotated[T, Gt(0)]], type_params=(T,)
)

(Why aren't they just using TypeAlias? Because then pydantic can't access the name of the alias. And there are also problems with recursive aliases.)
It would be nice if this could automatically be rewritten to
from annotated_types import Gt
from typing import Annotated

type PositiveList[T] = list[Annotated[T, Gt(0)]]

on Python 3.12.
This should be an entirely safe fix, because it's just different syntax to produce the same result.

Makes sense to me!


Survey page design

If we're trying to create for a global audience, if for example we're capturing birthday data, some regions do not capture birthdays the same way we do, as well as contact number length and the way we display addresses are different among regions.  Were we able to settle on a concencus of what the core 'users" region would be in terms of usage?

Have we also considered variations in localizations once the language is set to keep those things in mind? mentioned in the

To answer your question, we were not going to be collecting any personal identifying information from the users.

@mattschabel I didn't ask about private data, I'm asking about keeping in mind the inputted data,  I didn't ask about the capturing about personal information, it's about allowing the input for the data to relate to how the localization of what the expected input would be when the differences of localization in mind. i.e. Great Britain vs USA.

It's something moreover for us to keep in mind if/when additional survey questions are added later on in development/design.

This comment has a good point. I've asked this to be researched.

I think we already touched this in the last 3 weeks.

I think we already touched this in the last 3 weeks.

was there an actionable outcome?


Modal close fails in IE if modal was opened from js

See stacktrace at the bottom.
Using angular: 1.4.0-beta.5 and angular-bootstrap: 0.13.0
Error seen on IE 9 and 11 (others not tested)
If modal dialog is initiated from javascript (say an Angular controller) there is no activeElement
See line 2209 in ui-bootstrap-tpls.js
var modalOpener = $document[0].activeElement;   // in IE this is undefined
This in turn results in a nullpointer in close() and dismiss() functions. Lines 2262 and 2273 respectively.
We are temporarily rectifying this by running this
if (!window.document.activeElement) {
window.document.body.focus();
}
immediately prior to calling $modal.open()
TypeError: Unable to get property 'focus' of undefined or null reference
at $modalStack.close (http://localhost:9000/ext/angular-bootstrap/ui-bootstrap-tpls.js:2262:11)
at modalInstance.close (http://localhost:9000/ext/angular-bootstrap/ui-bootstrap-tpls.js:2340:17)
at fn (Function code:2:191)
at callback (http://localhost:9000/ext/angular/angular.js:22335:17)
at Scope.prototype.$eval (http://localhost:9000/ext/angular/angular.js:15236:9)
at Scope.prototype.$apply (http://localhost:9000/ext/angular/angular.js:15335:11)
at Anonymous function (http://localhost:9000/ext/angular/angular.js:22340:17)
at jQuery.event.dispatch (http://localhost:9000/ext/jquery/dist/jquery.js:4664:6)
at elemData.handle (http://localhost:9000/ext/jquery/dist/jquery.js:4332:5)
at jQuery.event.dispatch (https://example.com/plugins.3619bc3f.js:3:14958)
at elemData.handle (https://example.com/plugins.3619bc3f.js:3:9674)

We don't support AngularJS 1.4 yet.

Still a valid issue though, putting a 0.13.x milestone on it (e.g. Fix when we get round to looking at 1.4 support)

I get your point @karianna. But I would have to disagree on the part where this would be a 'valid issue'. Yes, this is probably a bug in UI Bootstrap. But like I said -- no one is stating that UI Bootstrap is expected to work with the latest beta AngularJS version.
If we would accept all these issues (and even without plunkrs to reproduce it!), next time we'll get a bunch of new issues about people reporting that UI Bootstrap is not compatible with AngularJS 2.0 developer preview.
Personally, I'm all about closing issues fast and keep the amount of open issues to a minimum. Everyone can re-add an issue as soon as a stable AngularJS release is out and this is still reproducible. Lets discuss that policy with the rest of the team.

Ah, I missed that this is angular 1.4 Beta.  OK, I'm going to shove this into purgatory for now.

My take would be to have issues (or one meta-issue) for 1.4 support and a corresponding label / milestone. 1.4 is round-the-corner and pretty stable. There were substential changes in animatations support in 1.4, so this will be probably the only area where migration efforts will be needed.
As for the 2.0 support - we should make it clear that the project, in the current form, focuses on 1.x.

OK, well we've attached the label, so this should be easy enough to find

Hi, this has nothing to do with angular version.
It seems activeElement can be flaky in IE.
Try this plnkr in IE:
http://plnkr.co/edit/l48KCXXtqOHs0qV2pqhz?p=preview
If you have the console open you will notice a javasccript exception.
I'll try to attach a pull request.


Best strategy for existing logger?

Summary
We are considering using Graphile and we have deployed multiple tests. So far, so good (and thank you!).
However we have issues with logging inside the Tasks.
I read the section on logging and it looks like the Tasks must use their own logging from the helpers logger facility.
Unfortunately that does not look like a great option for us because we share a lot of the code in the Tasks with our web app and there are many places in this web app where we call logger.info(...) (logger is a winston logger). It is current imported in all the files where there is logging using import logger from '....'
We would really love to avoid passing down/around the "logger" object as it could be different based on whether it is the "web app logger" (winston) or the Graphile logger.
Any trick on how to make things work without rewriting all of our files? (i.e we would love to keep our import logger from '...'?

You can call any arbitrary logic from your tasks, so you should be able to use whatever logging you want; BUT worker still does it’s own logging. The point of @graphile/logger is to provide an abstraction so that you can feed in whatever logging framework you’re using - e.g. you can use a Winston adaptor and then every log that Worker outputs will go through Winston.


Modernize React Examples

Description
Resolves developers.urbit.org/310 by making the following changes:

[x] Update the instructions in the README file.
[x] Update the chat-app and journal-app to use create-landscape-app.
[x] Update the chat-app and journal-app to use React hooks instead of components.
[x] Create a simplified version of the journal-app front-end with minimal external dependencies for demonstration purposes.

Related

developers.urbit.org Issue
developers.urbit.org PR
Grant Text

I can't recall the details now, but in August 2022 I know I was still
seeing CORS errors when serving from a local ship, and I believe it was
related to the use of localhost like Matilde mentions.
On Wed, Mar 22, 2023 at 12:09 AM matildepark @.***>
wrote:

@.**** commented on this pull request.
In README.md
https://github.com/urbit/docs-examples/pull/15#discussion_r1144234526:

cd /path/to/repo-source/example-directory/ui/
npm install
echo "VITE_SHIP_URL=http://<IP_ADDRESS>:XYZ" >> .env.local
npm run dev

The final command will generate a text digest containing a line of the form:

Local: http://localhost:ABC/apps/example-desk/

The web address listed here is hosting location for your local React
interface. Save this string for use in the subsequent steps.
+12. Open a web browser and navigate to the web address from the step 11.
If the local hosting was successful, you should see the interface for the
example in your browser.
+13. If your browser encounters an error during the previous step, then you may

Isn’t localhost considered a different origin?
—
Reply to this email directly, view it on GitHub
https://github.com/urbit/docs-examples/pull/15#discussion_r1144234526,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANXO5EEMIS5NOZ6VEESYMRTW5KCQVANCNFSM6AAAAAAVS5IQ2Q
.
You are receiving this because you commented.Message ID:
@.***>

ok can confirm the journal ui now works correctly.
Can you please edit bare-desk/desk.docket-0 and change the glob-http clause to:
:+  %glob-http
  'https://m.tinnus-napbus.xyz/pub/journal-glob-0v3.gjphm.jp4u3.59f0f.a67bf.446k4.glob'
 0v3.gjphm.jp4u3.59f0f.a67bf.446k4

I have globbed & uploaded the new ui there

actually nvm I'll merge now and update after


Add glob support

Currently I need to install Glob package separately to match all files in resources folder:
// webpack config
const glob = require('glob');
module.exports = {
  // ...
  sassResources: glob.sync('./src/styles/resources/**/*.scss'),
};

It would be really great if sass-resources-loader could recognize these patterns out of the box, e.g.
module.exports = {
  // ...
  sassResources: './src/styles/resources/**/*.scss',
};

@rtivital Any chance that you want to hack on the loader and put in a PR?
Sounds like a great idea.
CC: @alexfedoseev

@justin808 Well, I guess I've done it in https://github.com/shakacode/sass-resources-loader/pull/11
I've done some testing with provided example, everything seems just fine.

See #11.


Non-power of 2 textures don't repeat

If you use a texture which isn't power of 2 (or at least the same width/height) then the repeat texture flag doesn't work, or stops working very quickly.
I've looked through the source to see if I can see the problem, but I haven't had any luck so far.

not supported by openGL 2
On Sun, Jun 28, 2015 at 7:35 PM, sketchyfun<EMAIL_ADDRESS>wrote:

If you use a texture which isn't power of 2 (or at least the same
width/height) then the repeat texture flag doesn't work, or stops working
very quickly.
I've looked through the source to see if I can see the problem, but I
haven't had any luck so far.
—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/2206.

er.. OpenGLES2 backend I mean
On Sun, Jun 28, 2015 at 7:38 PM, Juan Linietsky<EMAIL_ADDRESS>wrote:

not supported by openGL 2
On Sun, Jun 28, 2015 at 7:35 PM, sketchyfun<EMAIL_ADDRESS>wrote:

If you use a texture which isn't power of 2 (or at least the same
width/height) then the repeat texture flag doesn't work, or stops working
very quickly.
I've looked through the source to see if I can see the problem, but I
haven't had any luck so far.
—
Reply to this email directly or view it on GitHub
https://github.com/okamstudio/godot/issues/2206.

Ahh okay, I wasn't aware it was a limitation of OpenGL ES 2.0. I'll close this now.


Support target identification in Game Logic

Signed-off-by: Ian Chen<EMAIL_ADDRESS>Updated GameLogicPlugin to supporting validating target reports. Teams have 3 attempts to ID a target vessel, target small object, and target large object. Time penalties are given for the first 2 incorrect attempts, and the run will terminate on 3rd incorrect attempt.
The targets are defined as parameters in the GameLogicPlugin:
      <target>
        <vessel>Vessel A</vessel>
        <small_object>small_box_a</small_object>
        <large_object>large_box_a</large_object>
      </target>

There can be multiple <target> SDF elements.
I added Ignition services for testing target Identification and validating time penalties. They will not be available in the actual competition run so I didn't add ign_ros bridges for these services or integration tests. Instructions for testing can be found in this wiki page:
https://github.com/osrf/mbzirc/wiki/Time-Penalties#target-identification-penalties

The tutorial says to report small_object_a as the correct small target object but the code is configured to be small_box_a

fixed

The tutorial mentions to run the service to report the large target object three times in order to get the finished event. In my case, I only had to run it once to get into the termination state. I guess it's because I already did two incorrect reports (one for the the small target and one for the target vessel). Just checking if this is the expected behavior.

Found that the last service call instruction in the tutorial is incorrect. It reported the small target object instead of the large target object. I have fixed in the instruction. It should log the correct event now.


InfraKit self healing robustness

Test and configure properly InfraKit so that the loss of a Swarm node (especially a manager, especially the leader) is recoverable.
One area to cover is how to manage the node registration: when a node disappears, it still is registered in the Swarm (as shown by docker node ls), the self healing process will just add new nodes to the list so we need to clean up the unreachable/inactive nodes.

when Infrakit is replacing a node (because configuration has been changed), it cleans the swarm status, the old node is removed from the list.
That's good enough for now, node disappearing because of a node issue should anyway trigger alerts, cleaning the node from the manager should be part of the procedure.


Issue 136: Add available object classes to intro block

This fixes #136 and corrects the silent placeholders in o-list-block.
@chris-pearce I am unsure how to handle some of the nested classes seen in o-list and o-overlay?

@kllevin any idea when this will be done? Thanks

@chris-pearce can you please review?

@chris-pearce this should be ready to merge.

@kllevin closing this as I fixed the outstanding thing in a new PR, see: #154.


CSimpleIniW is unable to read the desktop.ini

Just tried to read the desktop.ini in the "Documents" folder.
I used CSimpleIniW for this, this file is in UTF-16. Nothing was read, I tried to iterate through the section names.

This might be due to a permissions error. Please investigate the problem
further and create a more complete problem description.
Regards,
Brodie
On 2 March 2015 at 20:24, LubosPintes<EMAIL_ADDRESS>wrote:

Just tried to read the desktop.ini in the "Documents" folder.
I used CSimpleIniW for this, this file is in UTF-16. Nothing was read, I
tried to iterate through the section names.
—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10.

The desktop.ini in Documents folder is readable. So I believe this is
not a permission problem.
Here is short snippet:
CSimpleIniW ini;
SI_Error err=ini.LoadFile("c:\users\username\documents\desktop.ini");
if(err!=SI_OK) {
cout<<"Error loading ini file"<<endl;
} else {
CSimpleIniW::TNamesDepend names;
ini.GetAllSections(names);
for(CSimpleIniW::TNamesDepend::iterator i=names.begin();
i!=names.end(); ++i) wcout<pItem<<endl;
}
Just before this, I tried the GetValue method. It didn't work, so I
tried the above snippet to test more.
Dňa 2. 3. 2015 o 11:53 Brodie Thiesfield napísal(a):

This might be due to a permissions error. Please investigate the problem
further and create a more complete problem description.
Regards,
Brodie
On 2 March 2015 at 20:24, LubosPintes<EMAIL_ADDRESS>wrote:

Just tried to read the desktop.ini in the "Documents" folder.
I used CSimpleIniW for this, this file is in UTF-16. Nothing was read, I
tried to iterate through the section names.
—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10.

—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10#issuecomment-76692000.

This is still not a bug report. You give no test data, you give no
indication of where it fails, nor how it fails. You are a programmer, so
you must know what a bug report is -- write one.
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
Better yet, seeing as it is a single file, not so hard to understand, and
with plenty of comments, step into the failing method and see if you can
diagnose the fault.
You have not convinced me as yet that the fault is in this library.
On 2 March 2015 at 22:16, LubosPintes<EMAIL_ADDRESS>wrote:

The desktop.ini in Documents folder is readable. So I believe this is
not a permission problem.
Here is short snippet:
CSimpleIniW ini;
SI_Error err=ini.LoadFile("c:\users\username\documents\desktop.ini");
if(err!=SI_OK) {
cout<<"Error loading ini file"<<endl;
} else {
CSimpleIniW::TNamesDepend names;
ini.GetAllSections(names);
for(CSimpleIniW::TNamesDepend::iterator i=names.begin();
i!=names.end(); ++i) wcout<pItem<<endl;
}
Just before this, I tried the GetValue method. It didn't work, so I
tried the above snippet to test more.
Dňa 2. 3. 2015 o 11:53 Brodie Thiesfield napísal(a):

This might be due to a permissions error. Please investigate the problem
further and create a more complete problem description.
Regards,
Brodie
On 2 March 2015 at 20:24, LubosPintes<EMAIL_ADDRESS>wrote:

Just tried to read the desktop.ini in the "Documents" folder.
I used CSimpleIniW for this, this file is in UTF-16. Nothing was read,
I
tried to iterate through the section names.
—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10.

—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10#issuecomment-76692000.

—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10#issuecomment-76702321.

Ok, I dived into the implementation of this library and I realized that
this is indeed not a bug. It is simply not designed to work with UTF-16
encoded files. I was confused a bit with "W" suffix of CSimpleIni class.
I suggest to close this as invalid.
Dňa 2. 3. 2015 o 14:28 Brodie Thiesfield napísal(a):

This is still not a bug report. You give no test data, you give no
indication of where it fails, nor how it fails. You are a programmer, so
you must know what a bug report is -- write one.
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
Better yet, seeing as it is a single file, not so hard to understand, and
with plenty of comments, step into the failing method and see if you can
diagnose the fault.
You have not convinced me as yet that the fault is in this library.
On 2 March 2015 at 22:16, LubosPintes<EMAIL_ADDRESS>wrote:

The desktop.ini in Documents folder is readable. So I believe this is
not a permission problem.
Here is short snippet:
CSimpleIniW ini;
SI_Error
err=ini.LoadFile("c:\users\username\documents\desktop.ini");
if(err!=SI_OK) {
cout<<"Error loading ini file"<<endl;
} else {
CSimpleIniW::TNamesDepend names;
ini.GetAllSections(names);
for(CSimpleIniW::TNamesDepend::iterator i=names.begin();
i!=names.end(); ++i) wcout<pItem<<endl;
}
Just before this, I tried the GetValue method. It didn't work, so I
tried the above snippet to test more.
Dňa 2. 3. 2015 o 11:53 Brodie Thiesfield napísal(a):

This might be due to a permissions error. Please investigate the
problem
further and create a more complete problem description.
Regards,
Brodie
On 2 March 2015 at 20:24, LubosPintes<EMAIL_ADDRESS>wrote:

Just tried to read the desktop.ini in the "Documents" folder.
I used CSimpleIniW for this, this file is in UTF-16. Nothing was
read,
I
tried to iterate through the section names.
—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10.

—
Reply to this email directly or view it on GitHub

https://github.com/brofield/simpleini/issues/10#issuecomment-76692000.

—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10#issuecomment-76702321.

—
Reply to this email directly or view it on GitHub
https://github.com/brofield/simpleini/issues/10#issuecomment-76711161.

Ah yes. The interface can be wide char, however the loading/saving doesn't handle it, however it shouldn't be difficult to add a UTF16 load/save interface to it if you were that way motivated.


Add Java 10 Collectors APIs

(cherry picked from commit c5d74f1734bd58a7e3e797a6cc8ca89e2cd7134c)

For some reason I cannot see the rebase option. Do you mind rebasing your PR?

For some reason I cannot see the rebase option. Do you mind rebasing your PR?

give me a sec

@gkdn done

@gkdn is there anything I can help you with?

Sorry was out of office. Still on my radar, will take a look next week.

@gkdn compile: writing output: write $WORK/b106/pkg.a: no space left on device

@gkdn compile: writing output: write $WORK/b106/pkg.a: no space left on device

Commented on the other PR, pls ignore the error (or help us out fixing it 😅)

@gkdn compile: writing output: write $WORK/b106/pkg.a: no space left on device

Commented on the other PR, pls ignore the error (or help us out fixing it 😅)

I never thought that Google might run out of space

@gkdn compile: writing output: write $WORK/b106/pkg.a: no space left on device

Commented on the other PR, pls ignore the error (or help us out fixing it 😅)

I never thought that Google might run out of space

Well it is the Github hosted service not Google 😂


fix: typo in JSON custom field tag for CRUDPath

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Blacklist of servers that block No Chat Reports

Idea
Some servers are known to "block" NCR, be it via direct or indirect detection measures. While implementation of #255 will provide a blanket solution to work around that, having a manually curated blacklist of such servers will allow much more specific and effective countermeasures, among which I envision dedicated warning screen when entering them and enforcement of particular signing settings. Users can be provided with convenient means to report offending servers.
Reasoning
In my mind NCR should be a nice-to-have-by-default thing for any client, which does useful work in the background even if you don't paricularly care about how it's configured or safety of particular servers. Possibility of being banned for simply having it installed directly subverts that goal, so it's worth counteracting in every way possible.
Other Information
No response

Mojang collaborated with GamerSafer to create a new official Minecraft server list. https://www.minecraft.net/en-us/article/the-official-minecraft-server-list-live

In there, the "Beacon of Safety Badge" indicates chat reporting.
Therefore, that list could be used in NCR to populate the blacklist fairly easily. Maybe they even have an API?
Though right now it is notable that none of the Java servers have the badge, presumably because the badge also requires manual review.


Portuguese: grammar and semantic corrections

reply for questions or changes

@AlexandreSato Does this look good?

I know this isn't part of your PR, but do you know a shorter phrase for Finish Setup? Terminar Configuração goes off the UI.

I know this isn't part of your PR, but do you know a shorter phrase for Finish Setup? Terminar Configuração goes off the UI.

Some things in this pull request improve pt-BR but most do not match Brazilian Portuguese, it would be the case to create a new pt-PT Portuguese of Portugal translation  (it must be because of "file" in pt-PT is "ficheiro" and in pt-BR is "arquivo" , a Brazilian doesn't even know what a "ficheiro" is) .  "Finish Setup" sounds good!  I will review and use this PR to improve pt-BR

@guilhermicas If this is Portugal Portuguese, then want to make a new PR for it?


Files written by h5netcdf cannot be edited by netcdf4-python

What happened:
Files written by h5netcdf cannot be edited by netcdf4-python. It would be good if they could be. I believe the following patch is needed. Would you like me to make the Pull Request?
What you expected to happen:
MCVE Code Sample
import xarray as xr
import numpy as np
dataset = xr.DataArray(
    data=np.zeros((3, 3)),
    name="my_data"
)

engine = "h5netcdf"
# engine = "netcdf4"
dataset.to_netcdf("test.nc", engine=engine, format="NETCDF4")

import netCDF4
nc = netCDF4.Dataset("test.nc", mode="a")

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
/tmp/ipykernel_367089/2679834096.py in <module>
      1 import netCDF4
----> 2 nc = netCDF4.Dataset("test.nc", mode="a")

src/netCDF4/_netCDF4.pyx in netCDF4._netCDF4.Dataset.__init__()

src/netCDF4/_netCDF4.pyx in netCDF4._netCDF4._ensure_nc_success()

OSError: [Errno -103] NetCDF: Can't write file: b'test.nc'

Expected Output
That it works.
Version
Output of print(h5py.version.info, f"\nh5netcdf {h5netcdf.__version__}")
Summary of the h5py configuration
h5py    3.6.0
HDF5    1.12.1
Python  3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:41:03)
[GCC 9.4.0]
sys.platform    linux
sys.maxsize<PHONE_NUMBER>854775807
numpy   1.19.5
cython (built with) 0.29.24
numpy (built against) 1.19.5
HDF5 (built against) 1.12.1
h5netcdf 0.12.0

Suggested patch
diff --git a/h5netcdf/core.py b/h5netcdf/core.py
index b68e3f5..5994928 100644
--- a/h5netcdf/core.py
+++ b/h5netcdf/core.py
@@ -462,7 +462,7 @@ class Group(Mapping):
     def _create_child_group(self, name):
         if name in self:
             raise ValueError("unable to create group %r (name already exists)" % name)
-        self._h5group.create_group(name)
+        self._h5group.create_group(name, track_order=True)
         self._groups[name] = self._group_cls(self, name)
         return self._groups[name]

@@ -474,7 +474,7 @@ class Group(Mapping):

     def create_group(self, name):
         if name.startswith("/"):
-            return self._root.create_group(name[1:])
+            return self._root.create_group(name[1:], track_order=True)
         keys = name.split("/")
         group = self
         for k in keys[:-1]:
@@ -789,15 +789,15 @@ class File(Group):
                             "opening urls: {}".format(path)
                         )
                     try:
-                        with h5pyd.File(path, "r") as f:  # noqa
+                        with h5pyd.File(path, "r", track_order=True) as f:  # noqa
                             pass
                         self._preexisting_file = True
                     except IOError:
                         self._preexisting_file = False
-                    self._h5file = h5pyd.File(path, mode, **kwargs)
+                    self._h5file = h5pyd.File(path, mode, track_order=True, **kwargs)
                 else:
                     self._preexisting_file = os.path.exists(path) and mode != "w"
-                    self._h5file = h5py.File(path, mode, **kwargs)
+                    self._h5file = h5py.File(path, mode, track_order=True, **kwargs)
             else:  # file-like object
                 if version.parse(h5py.__version__) < version.parse("2.9.0"):
                     raise TypeError(
@@ -806,7 +806,7 @@ class File(Group):
                     )
                 else:
                     self._preexisting_file = mode in {"r", "r+", "a"}
-                    self._h5file = h5py.File(path, mode, **kwargs)
+                    self._h5file = h5py.File(path, mode, track_order=True, **kwargs)
         except Exception:
             self._closed = True
             raise

@hmaarrfk Thanks for investigating and reporting this issue.
Could you please add the netcdf-c and netcdf-python versions, so we are on the same page for testing this. Do you happen to know, if this is a regression in 0.12.0?
Using track_order=True changes the iter behaviour from alphanumeric to creation order. I'm wondering if this is some speciality xarray is relying on and some subtle change which might have been introduced in the latest h5netcdf versions.
I'll try to get to the bottom of this.

This is the line in particular that is causing things to fail:
https://github.com/Unidata/netcdf-c/blob/988e771a9ed99619c2e3261aea81f127dd7fa3d8/libhdf5/hdf5open.c#L2797

git blame shows that this was true for at least 3 years.
Even then, the last change was for a massive cleanup.

$ mamba list netcdf
# packages in environment at /home/mark/mambaforge/envs/dev:
#
# Name                    Version                   Build  Channel
h5netcdf                  0.12.0                    dev_0    <develop>
libnetcdf                 4.8.1           nompi_hb3fd0d9_101    conda-forge
netcdf4                   1.5.8                     dev_0    <develop>

I'm sorry I provided an example with xarray. I knew I should have done one with h5netcdf bare without the added dependency.
Here is the minimum reproducible example:
import h5netcdf
import netCDF4
with h5netcdf.File('test.nc', 'w') as f:
    pass
with netCDF4.Dataset("test.nc", mode="a") as f:
    pass

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
/tmp/ipykernel_385617/3181076220.py in <module>
      3 with h5netcdf.File('test.nc', 'w') as f:
      4     pass
----> 5 with netCDF4.Dataset("test.nc", mode="a") as f:
      6     pass

src/netCDF4/_netCDF4.pyx in netCDF4._netCDF4.Dataset.__init__()

src/netCDF4/_netCDF4.pyx in netCDF4._netCDF4._ensure_nc_success()

OSError: [Errno -103] NetCDF: Can't write file: b'test.nc'

I also confirmed that this is also the case for h5netcdf version 0.11.0

The netcdf4 standard requires that the creation order be maintained. They also specify that the file has to be created with creation order specified. Therefore, I think this should be considered a bug within h5netcdf.

https://docs.unidata.ucar.edu/netcdf-c/current/file_format_specifications.html

From h5py source
https://github.com/h5py/h5py/blob/aa31f03bef99e5807d1d6381e36233325d944279/h5py/_hl/group.py#L65

I think my original patch missed to add the track_order=True keyword argument to a few create_dataset calls, but I'm going to make a PR now that enforces all of this.

@hmaarrfk Could you please have a look at this discussion (netcdf-c):
https://github.com/Unidata/netcdf-c/issues/2054
It seems that it was tried to enable opening for append regardless of the tracking_order. But it did not find it's way into the latest release.
So this "feature" prevented files created using h5netcdf to be changed using netcdf-c/netcdf4-python. I'm wondering why this did not surface much earlier.
We might use h5.get_config().track_order to set it globally, then?

@hmaarrfk Sorry, missed to explicitely welcome a PR. Yes, please!

How would you like the deprecation cycle to go? Do you want to have a parameter that enables track_order to be set?
Before I go off and hack, do you have a suite of regression tests that ensure that you can still open old files?

@hmaarrfk A first test writing with track_order=False and reading with track_order=True gives no problems. It looks like h5netcdf is track_order agnostic somehow.
It would be good to parameterize it, with default to track_order=True. Not sure if we need a deprecation cycle if this has no effects. The only effect I can think of is that some objects are repr'd in another order. But if this new ordering is in line with Python dict I would just give it a go. But I'd like to hear @shoyer's suggestions how to proceed here.
Sure adding tests for checking different read/write combinations would be good.

Let me know if you think anything is missing from
https://github.com/h5netcdf/h5netcdf/pull/129
Happy to hold off on any discussion there while we wait for shoyer to chime in here.

To summarize the issue you pointed to:
netCDF4 wants the track_order parameter of the h5py constructors to be true
though this might be getting relaxed in a more recent version of the standard, it seems like it is a little far away for now.

Why would an h5netcdf want to write a file without tracking order?
If we can't come up with a use-case, then we should treat this as a bug and just fix it.

The issue cross referenced comes up with one
https://github.com/Unidata/netcdf-c/issues/2054
It seems that netcdf is considering updating their stance. However, I fear that the issue will only pop up in multi-threaded workloads.
I don't think it is possible to start tracking within a group if it was disabled at the start.
The suggested patch enables compatibility with older datasets (tracking will remain disabled) while enabling it on newer files.

This seems like the right fix then. I'm mostly just questioning whether we need the new keyword argument, or if it would be better to always turn it on.

We could remove the keyword argument if you prefer. It would be trivial to add back in the future.

Yeah, I don't see a reason to add it, if it's required for writing files there work with netcdf-C

Thanks @shoyer, @hmaarrfk, that looks like a way forward.
I'd suggest then to not only remove track_order as new positional keyword argument, but go one step further. We should test if it is fed via **kwargs (which users might do) and raise an informative error if track_order=False. This can later be relaxed to align with new developments in netcdf-c/netcdf4-python.

@hmaarrfk see #131. Closing this as resolved. Thanks!

@hmaarrfk h5netcdf 0.13.0 with the fix is out on PyPI.

awesome!

See upstream https://github.com/HDFGroup/hdf5/issues/1388 for details.


Connector library rewrite tracking issue

Placeholder: connector library rewrite. No need for endless variants of connector symbols with the same pin count; we can have a set of n-pin connectors and assign them footprints when used. This is one of the few times where KiCad's intended footprint assignment workflow would work well.

In addition to the new library of numbered-only connectors, I would like to keep the new conn-special-headers which is to contain variants of these with pin names already labeled. Example uses include programming ports for microcontrollers. These can have footprints assigned by default, but should also have the footprint filter filled in.

In order to use the footprint filters for connectors, we will have to make a standard footprint name format for headers and header-like connectors.

I dont think footprint filters is all that good a solution for connectors, cvpcb can filter by number of pins, that should be enough, specially if the functionality can be transplanted outside of it.

Meh, I disagree. I don't want to have every SOIC-8 and TSSOP-8 and whatnot come up for an eight pin header.

you can filter by library too, it would be useful to just keep each connector manufacturer/type separate as it mostly is already in the footprint library

You can still do that. All I want it to standardize on connector footprint names containing something that identifies them as n-pin connectors. Nothing wrong with also having them organized by manufacturer/type.


fix connection was bad

What problem does this PR solve?
Close bad conn when execute SQL error without txn.

What is changed and how it works?
If the err is gomysql.ErrBadConn or driver.ErrBadConn, close the conn, else putback the conn.

LGTM


--reinstall-packages-from fails: "Could not install from "" as it does not contain a package.json file"

Operating system and version: Fedora KDE 27

nvm debug output:

nvm --version: v0.33.8
$SHELL: /bin/bash
$HOME: /home/[my name]
$NVM_DIR: '$HOME/.nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
$NVM_NODEJS_ORG_MIRROR: ''
$NVM_IOJS_ORG_MIRROR: ''
shell version: 'GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)'
uname -a: 'Linux 4.14.18-300.fc27.x86_64 #1 SMP Thu Feb 8 01:35:31 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux'
OS version:
curl: /usr/bin/curl, curl 7.55.1 (x86_64-redhat-linux-gnu) libcurl/7.55.1 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.18.0 (+libidn2/2.0.3) libssh2/1.8.0 nghttp2/1.25.0
wget: /usr/bin/wget, GNU Wget 1.19.4 built on linux-gnu.
git: /usr/bin/git, git version 2.14.3
grep: alias grep='grep --color=auto'
        /usr/bin/grep (grep --color=auto), grep (GNU grep) 3.1
awk: /usr/bin/awk, GNU Awk 4.1.4, API: 1.1 (GNU MPFR 3.1.5, GNU MP 6.1.2)
sed: /usr/bin/sed, sed (GNU sed) 4.4
cut: /usr/bin/cut, cut (GNU coreutils) 8.27
basename: /usr/bin/basename, basename (GNU coreutils) 8.27
rm: /usr/bin/rm, rm (GNU coreutils) 8.27
mkdir: /usr/bin/mkdir, mkdir (GNU coreutils) 8.27
xargs: /usr/bin/xargs, xargs (GNU findutils) 4.6.0
nvm current: v9.6.1
which node: $NVM_DIR/versions/node/v9.6.1/bin/node
which iojs: which: no iojs in (/opt/OpenPrinting-Gutenprint/sbin:/opt/OpenPrinting-Gutenprint/bin:$NVM_DIR/versions/node/v9.6.1/bin:/usr/lib64/qt-3.3/bin:/opt/OpenPrinting-Gutenprint/sbin:/opt/OpenPrinting-Gutenprint/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:$HOME/.local/bin:$HOME/bin)
which npm: $NVM_DIR/versions/node/v9.6.1/bin/npm
npm config get prefix: $NVM_DIR/versions/node/v9.6.1
npm root -g: $NVM_DIR/versions/node/v9.6.1/lib/node_modules

nvm ls output:

         v9.6.0
->       v9.6.1
default -> v9.6.0
node -> stable (-> v9.6.1) (default)
stable -> 9.6 (-> v9.6.1) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> N/A)
lts/argon -> v4.8.7 (-> N/A)
lts/boron -> v6.13.0 (-> N/A)
lts/carbon -> v8.9.4 (-> N/A)

How did you install nvm? (e.g. install script in readme, homebrew): Install script I believe.  It's been a while.

What steps did you perform?

nvm ls-remote
See there is a new version, e.g. v9.6.1
nvm install v9.6.1 --reinstall-packages-from=v9.6.0

What happened?

Downloading and installing node v9.6.1...
Downloading https://nodejs.org/dist/v9.6.1/node-v9.6.1-linux-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v9.6.1 (npm v5.6.0)
Reinstalling global packages from v9.6.0...
npm ERR! code ENOLOCAL
npm ERR! Could not install from "" as it does not contain a package.json file.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/[my name]/.npm/_logs/2018-02-23T15_26_22_862Z-debug.log
Linking global packages from v9.6.0...

What did you expect to happen?
Just install any previous packages like normal.  This used to work fine on Ubuntu but I am on Fedora now, not sure if that makes a difference.

Is there anything in any of your profile files (.bashrc, .bash_profile, .zshrc, etc) that modifies the PATH?
No.

@steelstring94 can you print the content of /home/ben/.npm/_logs/2018-02-23T15_26_22_862Z-debug.log?

I tested with the latest Fedora 27 Docker image but can't reproduce this problem.

  I tried to censor it in my OP but I missed one.
0 info it worked if it ends with ok
1 verbose cli [ '/home/ben/.nvm/versions/node/v9.6.1/bin/node',
1 verbose cli   '/home/ben/.nvm/versions/node/v9.6.1/bin/npm',
1 verbose cli   'install',
1 verbose cli   '-g',
1 verbose cli   '--quiet' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose npm-session 7882bbe438c61849
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 silly fetchPackageMetaData error for file: Could not install from "" as it does not contain a package.json file.
8 verbose stack Error: ENOENT: no such file or directory, open '/home/ben/package.json'
9 verbose cwd /home/ben
10 verbose Linux 4.14.18-300.fc27.x86_64
11 verbose argv "/home/ben/.nvm/versions/node/v9.6.1/bin/node" "/home/ben/.nvm/versions/node/v9.6.1/bin/npm" "install" "-g" "--quiet"
12 verbose node v9.6.1
13 verbose npm  v5.6.0
14 error code ENOLOCAL
15 error Could not install from "" as it does not contain a package.json file.
16 verbose exit [ 1, true ]

@steelstring94 I'm afraid I'm not sure how should I do to help you, can you please explain with more details?

Just to confirm, is this output the raw or the modified? I wonder about the "" here:
npm ERR! Could not install from "" as it does not contain a package.json file.

nvm_npm_global_modules v9.6.0 output is ////.  It is the exact same, by the way, if I use v9.6.1 as the argument.
And yes, that output is raw.  It really does have two empty double quotes.

Looks like nvm didn't fetch the installed packages properly, what about npm list -g --depth=0?

/home/[my name]/.nvm/versions/node/v9.6.1/lib
└──<EMAIL_ADDRESS>

That seems correct to me; that means there's no non-npm global modules installed.
It seems like the logic here doesn't actually check for "no installs" - the fix is likely as simple as wrapping https://github.com/creationix/nvm/blob/master/nvm.sh#L3341-L3342 in if [ -n "${INSTALLS}" ]; then and https://github.com/creationix/nvm/blob/master/nvm.sh#L3344-L3345 in if [ -n ${LINKS}" ]; then, and outputting appropriate messages else that nothing was found.

Looks like you're using a manually installed very new npm version?

I assume @steelstring94 has something to be installed so you'd like to use that parameter to install the old packages?

@PeterDaveHello "Looks like you're using a manually installed very new npm version?" - not as far as I'm aware.  I'm pretty sure this is just what came with NVM.

@steelstring94 it's not; 5.6.0 is the "latest" npm. you may have run nvm install-latest-npm or npm upgrade -g tho?

@ljharb I have used npm update -g

So besides npm update -g, did you install any other packages?

@PeterDaveHello I don't believe so.  It's difficult for me to say 100% as I didn't expect this to happen so I wasn't particularly keeping track of whether I installed anything, but I switched to a new distro not long ago and I don't think I've used any NPM global packages on here yet.

because if you didn't install anything, you don't need to use --reinstall-packages-from, though I agree that nvm should notice that nothing is installed and prevent to call npm in this case, to avoid this problem.

@steelstring94 fwiw, don’t use npm update -g; use nvm install-latest-npm or `npm install -g npmrc; that way you won’t get unstable versions.

@ljharb I thought npm update -g was to install the latest versions of global packages you have installed with npm?  Am I wrong?

Yes, but that will also update npm; it’s best to update your global packages (of which there should be few) manually.


Split the mkmk lookup into subtables

Hello,
@moyogo and I found that generating the mkmk feature as 1 lookup with several subtables (1 subtable/mark class) fixed problems with Thai mark-to-mark positioning in InDesign, when the same font would work fine in browsers. This PR goes in pair with https://github.com/googlei18n/ufo2ft/pull/189
This PR changes the MarkToMarkPosBuilder to output several subtables, one per class.
We haven't tested yet the impact on mark-to-mark positioning for other scripts, and we haven't really assessed the filesize implications of this.
We didn't use "subtable;" statements in our lookup in the feature file because according to the spec they are only allowed in kerning (https://github.com/googlei18n/ufo2ft/pull/189#issuecomment-350298207)

Do we still need this? The mentioned googlei18n/ufo2ft#189 PR above is closed.

I think this can be closed as feaLib should respect subtable statement instead. Once that is done we can see if ufo2ft’s markFeatureWriter needs to be fixed.


Fixing wl_display and wl_surface definitions.

wl_dispay and wl_surface types were defined as foreign structures, this caused an error in vk:create-wayland-surface-khr. vk:wayland-surface-create-info-khr structure should contain pointers to wl_display and wl_surface but wrappers were trying to allocate and fill whole structures instead of using provided pointers.
Current changes make wrappers (as far as I undarstand at least) see those types as just a pointers now. Knowledge of those structures internas only required if you work with wayland, and in that case those definitions will be part of wayland wrapper, not vulkan wrapper.
With this cahnge wayland surface now can be created, only X11 worked before.

Take everything I wrote with a grain of salt. I am not very proficient with lisp, and I am only learning vulkan. However, wayland surface was not working, and now it does, so it might actually be correct.

Also a note
Lines 2305-2306 in src/vk-expand-to-foreign.lisp  hane ptr unquoted
same lines in src/vk-translate-to-foreign.lisp have it just as symbols.
Might be an issue. Although I still think that internal structure of wl_display and wl_surface is not part of vulkan API, And reducing it's type to just pointer is still a good thing.

I had a chat with a person who had wayland development experience. He said that even client wayland applications just get pointers to that structures, and wayland compositor creates it in it's heap. So no need for full definition in vulkan probably.

Awesome! Thanks for investigating this :)
I'll fix it in the generator and publish the fix soon.


Standard definition for bounded_malloc

In CBMC, if we call malloc with 0, we get an invalid pointer, which triggers failed primitive checks everywhere. For instance, in FreeRTOS, the safeMalloc function is required to return NULL for zero-size mallocs. (see safeMalloc). According with the standard:

If size is zero, the behavior of malloc is implementation-defined. For example, a null pointer may be returned. Alternatively, a non-null pointer may be returned; but such a pointer should not be dereferenced, and should be passed to free to avoid memory leaks.

So we could update the implementation to something like, i.e.,
void *bounded_malloc(size_t size) {
    __CPROVER_assume(size <= MAX_MALLOC);
    if (size == 0) {
        if (nondet_bool()) {
            return NULL
        }
        return malloc(1);
    }
    return malloc(size);
}

We also should make sure we adopt this across of our projects.
@danielsn @SaswatPadhi @danielsn @tegansb

One of the known problems with pointer primitive check.  I think we should
leave documentation in Makefile-project-defines to remove the flag if it
causes trouble for a project.  But I think our group has decided that it is
best practice.
On Tue, Oct 6, 2020 at 6:37 PM Felipe R. Monteiro<EMAIL_ADDRESS>wrote:

In CBMC, if we call malloc with 0, we get an invalid pointer, which
triggers failed primitive checks everywhere. For instance, in FreeRTOS
https://github.com/FreeRTOS/FreeRTOS, the safeMalloc function is
required to return NULL for zero-size mallocs. (see safeMalloc
https://github.com/FreeRTOS/FreeRTOS/blob/d95624c5d6ba95ec0474867d7165de2c28ed41b7/FreeRTOS-Plus/Test/CBMC/proofs/parsing/ProcessReceivedTCPPacket/ProcessReceivedTCPPacket_harness.c#L19).
According with the standard
https://en.cppreference.com/w/c/memory/malloc:
If size is zero, the behavior of malloc is implementation-defined. For
example, a null pointer may be returned. Alternatively, a non-null pointer
may be returned; but such a pointer should not be dereferenced, and should
be passed to free to avoid memory leaks.
So we could update the implementation to something like, i.e.,
void *bounded_malloc(size_t size) {
__CPROVER_assume(size <= MAX_MALLOC);
if (size == 0) {
if (nondet_bool()) {
return NULL
}
return malloc(1);
}
return malloc(size);
}
We also should make sure we adopt this across of our projects.
@danielsn https://github.com/danielsn @SaswatPadhi
https://github.com/SaswatPadhi @danielsn https://github.com/danielsn
@tegansb https://github.com/tegansb
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/awslabs/aws-templates-for-cbmc-proofs/issues/31, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ACP3ZVQSYUSGKEBQYSLENGTSJOL2JANCNFSM4SGUD7XA
.

@markrtuttle AFAIK, we don't use these bounded_malloc anymore. So, can we close this issue?


Feature/child trophy room responsive design

Description
RESPONSIVE-DESIGN-ADJUSTMENTS
This pull request relates to design changes on the child/trophyroom page. The changes allow the page to be viewed at tablet and mobile breakpoints without formatting issues.
Fixes #

What work was done?
added responsive breakpoint css styling for tablet and mobile viewports.

Why was this work done?
to ensure smooth UI flow throughout the application on all viewports.

What feature / user story is it for?
As a user I want to be able to View app on multiple devices/browsers to ensure UI is responsive.

Change Status

[ ] Incomplete/work-in-progress, PR is for discussion/feedback

Has This Been Tested

[ ] No

Checklist

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] My code has been reviewed by at least one peer
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] There are no merge conflicts

Review is again required as there was a merge conflict in the package-lock.json file. I think what happened - I may be wrong - is when we cloned the repo and ran NPM install - some of the packages updated to newer versions. Package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json.  I accepted both the incoming changes and the original file and the conflict was resolved. I imagine this will be an issue everyone will face on their first merge.


"No static field INSTANCE" in Android because of the AllowAllHostnameVerifier class

In Android (targetSdk 28)，there is a issue because 'org/apache/http/conn/ssl/AllowAllHostnameVerifier' which the HtmlUnit uses is different of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' which used in Android SDK. And it is the log:
java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes3.dex)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:151)
at com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:89)
at com.gargoylesoftware.htmlunit.HttpWebConnection.configureHttpsScheme(HttpWebConnection.java:636)
at com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClientBuilder(HttpWebConnection.java:559)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getHttpClientBuilder(HttpWebConnection.java:520)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:172)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1436)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1355)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:415)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:336)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:488)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:469)

This  looks like a classspath issue. Please make sure to have the correct httpclient in your classpath,

Any progress?

Any progress?

I‘m just use htmlunit with two steps:
1.implementation 'net.sourceforge.htmlunit:htmlunit:2.37.0' , in build.gradle
2.WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.setJavaScriptTimeout(2000);
webClient.getOptions().setTimeout(2000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
Log.e("", "1");
HtmlPage page = null;
try {
Log.e("", "2");
page = webClient.getPage(source);
Log.e("", "3");
} catch (Exception e) {
e.printStackTrace();
Log.e("", "no");
return null;
} finally {
webClient.close();
}
“webClient.getPage(source)” broke down and my Android app threw the error log above.

After my inspection, there is an old version of "org.apache.http" in Android SDK. Its "Allowallhostnameverifier" class does not contain "public static final allowallhostnameverifier instance = new allowallhostnameverifier();". However, the "Allowallhostnameverifier" class in org.apache.http used by htmlunit contains "public static final allowallhostnameverifier instance = new allowallhostnameverifier();".
Class ""Allowallhostnameverifier" in  "org.apache.http.conn.ssl" in Android SDK is preferred by code, and it causes this problem.

@abigliar were you able to fix this error?
That is what I believe is happening. Last versions of htmlunit, like 2.36.0 and 2.37.0 are using 'org.apache.http.conn.ssl.AllowAllHostnameVerifier'. This class is deprecated starting API level 22.
Recent versions of httpclient-android still have this deprecated class, however they don't contain the instance "public static final allowallhostnameverifier instance = new allowallhostnameverifier()"
So, I think by using old versions of httpclient-android (where it's till present this static field instance) we might be able to fix the problem.
But there is one more problem though. When using older versions of httpclient-android, I get a duplicate classes error, because there is a conflict between the classes of old of httpclient-android and the classes of their newer versions (which are contained in my case in the jetfified jar, which is basically a collection of utilities for android).
So in order to fix the issue, we would need to exclude in the gradle the newer versions of httpclient-android and httpcore and implement in the dependecies the older versions.
That's what I think. Not sure if this is correct and how to actually exclude the newer versions.

Hi all,
first of all thanks for reporting.
Regarding the issue - as far as i can see we have this problem:

HtmlUnit is using org.apache.http.conn.ssl.SSLConnectionSocketFactory (from com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:89)
as far as i can see this class is not deprecated
but this class uses internally the class INSTANCE static var of class org/apache/http/conn/ssl/AllowAllHostnameVerifier
from the HtmlUnit point of view this is all correct because i never directly deal with the AllowAllHostnameVerifier class

But i fear this does not help with your problem :-)
For me this looks like your classloader mixes classes from two different versions of org.apache.Http.
Maybe you can sysout the classloader of the various involvedclasses end check that they are all loaded by the same class loader and from the same jar.

Regarding the dependencies - HtmlUnit uses maven as build tool; this makes the dependencies explicit.
If you like to see the details you can have a look at e.g. https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.37.0

2.37.0 depends on org.apache.httpcomponents » httpmime 4.5.11
httpmime 4.5.11 depends on org.apache.httpcomponents » httpclient 4.5.11
httpclient 4.5.11 depends on org.apache.httpcomponents » httpcore 4.4.13

You can browse all the other releases also similar to this.

@abigliar were you able to fix this error?
@rbri That is what I believe is happening. Last versions of htmlunit, like 2.36.0 and 2.37.0 are using 'org.apache.http.conn.ssl.AllowAllHostnameVerifier'. This class is deprecated starting API level 22.
Recent versions of httpclient-android still have this deprecated class, however they don't contain the instance "public static final allowallhostnameverifier instance = new allowallhostnameverifier()"
So, I think by using old versions of httpclient-android (where it's till present this static field instance) we might be able to fix the problem.
But there is one more problem though. When using older versions of httpclient-android, I get a duplicate classes error, because there is a conflict between the classes of old of httpclient-android and the classes of their newer versions (which are contained in my case in the jetfified jar, which is basically a collection of utilities for android).
So in order to fix the issue, we would need to exclude in the gradle the newer versions of httpclient-android and httpcore and implement in the dependecies the older versions.
That's what I think. Not sure if this is correct and how to actually exclude the newer versions.

yeah, you undersyand what I said.

Regarding the dependencies - HtmlUnit uses maven as build tool; this makes the dependencies explicit.
If you like to see the details you can have a look at e.g. https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.37.0
2.37.0 depends on org.apache.httpcomponents » httpmime 4.5.11
httpmime 4.5.11 depends on org.apache.httpcomponents » httpclient 4.5.11
httpclient 4.5.11 depends on org.apache.httpcomponents » httpcore 4.4.13
You can browse all the other releases also similar to this.

That's what I did at the beginning, and I checked and tried many times.
Unfortunately it's useless. Because there is an Allowallhostnameverifier class in an old org.apache.http used by Android SDK  which is not contain "public static final allowallhostnameverifier instance = new allowallhostnameverifier();", the Android app run with it rather than the org.apache.http which htmlunit uses, no matter how new the org.apache.http htmlunit uses.
Just kidding, we may need to contact Google to update org.apache.http in Android to solve the problem from the root. However, they have already deprecated it.

hello, can fix this bug in the future?

@abigliar  httpclient can not use , this is very sad. but i dont know how to fix it.Does this issue raise the priority？

Isnt there any way to force android to use our supplied HttpClient rather that the one in Android Sdk?

I just updated AndroidStudio to the latest and tried implementation("org.seleniumhq.selenium:selenium-htmlunit-driver:2.52.0") and it gives the No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier error.
How likely is it that Google doesn't want this to work?

Is there an old version of HtmlUnit that is in alignment with the version of HtmlUnit that Google has integrated?
In other words, if I were willing to reach back and grab an old version, build that into my app, could I get htmlunit to work in my Android app?

java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes4.dex)
How can I resolve this issue?
Android Studio 4.1.3
classpath "com.android.tools.build:gradle:4.1.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32"

Ok, made some progress here - hopefully
Please try to replace your htmlunit dependency with
<dependency>
    <groupId>net.sourceforge.htmlunit</groupId>
    <artifactId>htmlunit-android</artifactId>
    <version>2.56.0-SNAPSHOT</version>
</dependency>

You have to add the sonatype snapshot repository to your pom distributionManagement section also:
<snapshotRepository>
    <id>sonatype-nexus-snapshots</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>

And please report your results.

Thanks @rbri !  Sorry for the delay, as I was on holiday.
I see "https://oss.sonatype.org/content/repositories/snapshots/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml" is populated appropriately, but I'm having  trouble convincing Android Studio to look there.
Although I have configured the top level build.gradle with the repository, and put the dependency into the app level build.gradle, the build process seems to not to search the sonatype repository.  I will work on that problem and get back with my results when I figure out how to coax Android Studio to use the repositories I specify.
--Dale--
buildscript {
    repositories {
        google()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots"}
        mavenCentral()
    }
    ....
}

In the app's build.gradle:
....

dependencies {
    implementation "androidx.work:work-runtime:2.7.1" //DRS 2021 12 20 Added for WorkManager
    //implementation 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.52.0'
    implementation 'net.sourceforge.htmlunit:htmlunit-android:2.56.0-SNAPSHOT'
 }

The additional repository seems not to be acknowledge by the build process:
> Could not find net.sourceforge.htmlunit:htmlunit-android:2.56.0-SNAPSHOT.
 Searched in the following locations:
   - https://dl.google.com/dl/android/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml
   - https://dl.google.com/dl/android/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/htmlunit-android-2.56.0-SNAPSHOT.pom
   - https://repo.maven.apache.org/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml
   - https://repo.maven.apache.org/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/htmlunit-android-2.56.0-SNAPSHOT.pom
   - https://jcenter.bintray.com/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml
   - https://jcenter.bintray.com/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/htmlunit-android-2.56.0-SNAPSHOT.pom
 Required by:
     project :app

I was able to figure out how to coax Android Studio to use the repositories I specify by putting the repository into settings.gradle instead of build.gradle:
settings.gradle
import org.gradle.api.initialization.resolve.RepositoriesMode
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots'}
    }
}
rootProject.name = "My Application"
include ':app'

But I'm now getting a ClassNotFoundException on org.apache.commons.codec.net.URLCodec, which I haven't yet attempted to resolve.
2022-01-08 18:56:56.745 30150-30231/com.sengsational.myapplication E/WM-WorkerWrapper: Work [ id=cd25e3aa-1ffe-4e7c-97e6-9e3e24b67c5f, tags={ LogonWorker, com.sengsational.myapplication.LogonWorker } ] failed because it threw an exception/error
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/net/URLCodec;
    at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516)
    at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
    at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
    at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:920)
 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/net/URLCodec;
    at com.gargoylesoftware.htmlunit.util.UrlUtils.encode(UrlUtils.java:377)
    at com.gargoylesoftware.htmlunit.util.UrlUtils.encodeUrl(UrlUtils.java:286)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1536)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1514)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:493)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:413)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:546)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:528)
    at com.sengsational.myapplication.LogonWorker.doWork(LogonWorker.java:45)
    at androidx.work.Worker$1.run(Worker.java:86)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:920)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.codec.net.URLCodec" on path: DexPathList[[zip file "/data/app/~~ig9PmRs7dC6mNK7ziH1U0g==/com.sengsational.myapplication-QcCKRitc530geP0_2pw7Qw==/base.apk"],nativeLibraryDirectories=[/data/app/~~ig9PmRs7dC6mNK7ziH1U0g==/com.sengsational.myapplication-QcCKRitc530geP0_2pw7Qw==/lib/arm64, /system/lib64, /system_ext/lib64, /product/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at com.gargoylesoftware.htmlunit.util.UrlUtils.encode(UrlUtils.java:377)
    at com.gargoylesoftware.htmlunit.util.UrlUtils.encodeUrl(UrlUtils.java:286)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1536)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1514)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:493)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:413)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:546)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:528)
    at com.sengsational.myapplication.LogonWorker.doWork(LogonWorker.java:45)
    at androidx.work.Worker$1.run(Worker.java:86)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:920)

Ok, have updated the package to add some more debug code.
From the first look i think you have HtmlUnit twice in your classpath - but lets see.
The new snapshot build contains a main class - com.gargoylesoftware.htmlunit.android.Main.
Please call the main method of this class and check the  output.
This is what i get here:
com.gargoylesoftware.htmlunit.WebClient  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-12)
net.sourceforge.htmlunit.corejs.javascript.Function  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
net.sourceforge.htmlunit.cyberneko.HTMLElements  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
com.gargoylesoftware.css.parser.CSSOMParser  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)

org.htmlunit.org.apache.http.client.HttpClient  htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)
org.htmlunit.org.apache.http.Header  htmlunit-android-2.56.0-SNAPSHOT.jar (2020-01-09)
org.htmlunit.org.apache.http.entity.mime.MIME  htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)

org.eclipse.jetty.client.HttpClient  jetty-client-9.4.44.v20210927.jar (2021-09-27)
....

Reading https://www.wetator.org/testform/
WETATOR / Test Form
Test Form
....
Submit My Truth

The interesting part is on the top, this mean you use HtmlUnit and the HttpClient frorm htmlunit-android-2.56.0-SNAPSHOT.jar.
And the system is able to find the repackaged classes like org.htmlunit.org.apache.http.client.HttpClient.
com.gargoylesoftware.htmlunit.WebClient  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-12)
net.sourceforge.htmlunit.corejs.javascript.Function  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
net.sourceforge.htmlunit.cyberneko.HTMLElements  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
com.gargoylesoftware.css.parser.CSSOMParser  htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)

org.htmlunit.org.apache.http.client.HttpClient  htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)
org.htmlunit.org.apache.http.Header  htmlunit-android-2.56.0-SNAPSHOT.jar (2020-01-09)
org.htmlunit.org.apache.http.entity.mime.MIME  htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)

Please try and report your results.

My initial attempts to find a Main.class weren't successful, so I made the assumption that my build process had the previous version of htmlunit-android-2.56.0-SNAPSHOT.  So I deleted .gradle/caches and deleted .m2.  If I were more knowledgeable about how Android Studio does it's build, I probably could have just unzipped the associated jar (and maybe decompiled) to look for the class, but I just took the steps to remove the cache and and rebuild.  Unfortunately, I'm still not able to get a reference to Main.  I will continue to explore ways to get detail on the Android Studio build process with respect to pulling in dependencies, but wanted to make this note as to my current status.

I found your source code here:
But when I pasted the code into the  onCreate() in my Android activity, I got a null pointer exception.  I further discovered that VersionUtil.determineVersionFromJarFileName(tmpClass) calls tmpClass.getProtectionDomain(), which returns null in the Android version of Java.
https://stackoverflow.com/questions/27790348/getclass-getprotectiondomain-getcodesource-getlocation-getpath-throw-a
I have asked a Stack Overflow question about a version that works in Android: https://stackoverflow.com/questions/70700602/how-to-list-jar-files-that-are-active-in-an-android-application

I documented the classpath for both the selenium htmlunit and the snapshot htmlunit in this repository: https://github.com/sengsational/TestSelenium (see .txt files in the root).
The full stack trace leading to the ClassNotFoundException on org.apache.commons.codec.net.URLCodec is also included in the repo.

Any update on this one?

have fixed the missing dependency to commons codec and updated the build
now it is 2.58.0-SNAPSHOT

have fixed the missing dependency to commons codec and updated the build
now it is 2.58.0-SNAPSHOT

The problem is solved, right? If so, I will close the issue.

have fixed the missing dependency to commons codec and updated the build
now it is 2.58.0-SNAPSHOT

Does that mean the issues on Android are fixed when using  net.sourceforge.htmlunit:htmlunit-android:2.58.0-SNAPSHOT
Or does it mean net.sourceforge.htmlunit:htmlunit:2.56.0-SNAPSHOT is now android compatible?

Looks like the htmlunit-android version (at least the latest snapshot build is working. Will soon make a new snapshot available to fix the clipboard problem.

Looks like 2.58.0-SNAPSHOT it got past the No static field INSTANCE problem :)
I do see the clipboard problem.

I'm getting "..msmxl/package-info; cannot be represented in dex format." when I try to build with 2.59.0
> Task :app:mergeExtDexDebug
ERROR:C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar: D8: com.android.tools.r8.internal.r8: Class descriptor 'Lcom\gargoylesoftware\htmlunit\activex\javascript\msxml\package-info;' cannot be represented in dex format.

> Task :app:mergeExtDexDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeExtDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform htmlunit-android-2.59.0-SNAPSHOT.jar (net.sourceforge.htmlunit:htmlunit-android:2.59.0-SNAPSHOT:20220222.180647-1) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-is-debuggable=true, dexing-min-sdk=26, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=integration, org.gradle.usage=java-runtime}.
      > Execution failed for DexingNoClasspathTransform: C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar.
         > Error while dexing.

Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Caused by: org.gradle.api.internal.artifacts.transform.TransformException: Execution failed for DexingNoClasspathTransform: C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar.
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar:com/gargoylesoftware/htmlunit/activex/javascript/msxml/package-info.class

+--- net.sourceforge.htmlunit:htmlunit-android:2.59.0-SNAPSHOT
|    +--- xalan:xalan:2.7.2
|    |    \--- xalan:serializer:2.7.2
|    +--- org.apache.commons:commons-lang3:3.12.0
|    +--- org.apache.commons:commons-text:1.9
|    +--- commons-io:commons-io:2.10.0
|    +--- commons-logging:commons-logging:1.2
|    +--- commons-net:commons-net:3.8.0
|    +--- commons-codec:commons-codec:1.15
|    +--- org.brotli:dec:0.1.2
|    +--- com.shapesecurity:salvation2:3.0.0
|    \--- org.eclipse.jetty.websocket:websocket-client:9.4.45.v20220203
|         +--- org.eclipse.jetty:jetty-client:9.4.45.v20220203
|         |    +--- org.eclipse.jetty:jetty-http:9.4.45.v20220203
|         |    |    +--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
|         |    |    \--- org.eclipse.jetty:jetty-io:9.4.45.v20220203
|         |    |         \--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
|         |    \--- org.eclipse.jetty:jetty-io:9.4.45.v20220203 (*)
|         +--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
|         +--- org.eclipse.jetty:jetty-io:9.4.45.v20220203 (*)
|         \--- org.eclipse.jetty.websocket:websocket-common:9.4.45.v20220203
|              +--- org.eclipse.jetty.websocket:websocket-api:9.4.45.v20220203
|              +--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
|              \--- org.eclipse.jetty:jetty-io:9.4.45.v20220203 (*)

@sengsational have updated the htmlunit-android-2.59.0-SNAPSHOT to remove the package-info.class files from the HtmlUnit part because they are not needed.
Please:

open a new issue on https://github.com/HtmlUnit/htmlunit-android for this problem
try the new snapshot build and inform about the results
open a separate issue for every problem you are facing - it makes the tracking much simpler for me

Will attempt to the best of my abilities.  Thanks for your patience.


Allow keys to be mapped to now action

I currently use SharpKeys to map Caps Lock and Insert to no action. It would be great to do that in PowerToys key mappings.

hi @simonvane, this is v sensible addition and we're working an adding a disable option here: #2215
closing as duplicate


test.py does not work anymore

Hello, I am running with version v4.0.31, and because no entities have any value (just a new integration, API key used, all seems to be good but not) I wanted to try using test.py which does not work:
TypeError: ConnectionOptions.__init__() missing 5 required positional arguments: 'tz', 'dampening', 'customhoursensor', 'key_estimate', and 'hard_limit'

Yeah...
I suspect that script has not worked for a very long time. Those options were introduced a very long time ago, and I'm not sure it is even worth fixing. It probably wants removing because distraction.
To the topic at hand, no entities have values...
What's in your HA log? It is highly likely that the Solcast API could not be reached for some reason.
Try beta v4.0.39 with a 'redownload' by flipping the Show beta versions toggle and report back (after re-checking log after installing that). Much has been fixed, and much has been made more resilient.

Yes, thanks... the latest beta works perfectly ;) Cheers!


chore: removed secrets for firewallRules

PR summary
Updated .secrets.baseline
PR Checklist
Please make sure that your PR fulfills the following requirements:

[ ] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] New tests
[ ] Build/CI related changes
[ ] Documentation content changes
[ ] Other (please describe)

Does this PR introduce a breaking change?

[ ] Yes
[ ] No

:tada: This PR is included in version 0.24.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: