Unable to build container using Dockerfile

I attempted to build the Dockerfile using the command docker build . and got the following error while pip installing the dependencies:
#13 [ 9/10] RUN pip install -r requirements.txt
#13 sha256:90bf66eac24407c6165fc93b5c6371f577684790a59e67c4585a7d2f107480a1
#13 0.797 Requirement already satisfied: appdirs==1.4.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (1.4.4)
#13 0.914 Collecting argon2-cffi==21.1.0
#13 1.018   Downloading argon2_cffi-21.1.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl (96 kB)
#13 1.049 Requirement already satisfied: async-generator==1.10 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 3)) (1.10)
#13 1.086 Collecting attrs==21.3.0
#13 1.102   Downloading attrs-21.3.0-py2.py3-none-any.whl (61 kB)
#13 1.110 Requirement already satisfied: backcall==0.2.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 5)) (0.2.0)
#13 1.163 Collecting black==22.3.0
#13 1.217   Downloading black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB)
#13 1.356 Requirement already satisfied: bleach==4.1.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 7)) (4.1.0)
#13 1.408 Collecting bokeh==2.4.2
#13 1.433   Downloading bokeh-2.4.2-py3-none-any.whl (18.5 MB)
#13 2.245 Requirement already satisfied: CacheControl==0.12.6 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 9)) (0.12.6)
#13 2.246 Requirement already satisfied: cairocffi==1.3.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 10)) (1.3.0)
#13 2.246 Requirement already satisfied: cffi==1.15.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 11)) (1.15.0)
#13 2.246 Requirement already satisfied: chardet==4.0.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 12)) (4.0.0)
#13 2.277 Collecting cloudpickle==2.1.0
#13 2.297   Downloading cloudpickle-2.1.0-py3-none-any.whl (25 kB)
#13 2.303 Requirement already satisfied: colorama==0.4.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 14)) (0.4.4)
#13 2.303 Requirement already satisfied: contextlib2==0.6.0.post1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 15)) (0.6.0.post1)
#13 2.601 Collecting cryptography==36.0.1
#13 2.629   Downloading cryptography-36.0.1-cp36-abi3-manylinux_2_24_x86_64.whl (3.6 MB)
#13 2.783 Collecting cycler==0.10.0
#13 2.802   Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
#13 2.911 Collecting deap==1.3.1
#13 2.931   Downloading deap-1.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (160 kB)
#13 3.126 Collecting debugpy==1.5.1
#13 3.148   Downloading debugpy-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.9 MB)
#13 3.243 Collecting decorator==5.1.0
#13 3.258   Downloading decorator-5.1.0-py3-none-any.whl (9.1 kB)
#13 3.262 Requirement already satisfied: defusedxml==0.7.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 21)) (0.7.1)
#13 3.314 Collecting dill==0.3.4
#13 3.330   Downloading dill-0.3.4-py2.py3-none-any.whl (86 kB)
#13 3.365 Collecting distlib==0.3.3
#13 3.387   Downloading distlib-0.3.3-py2.py3-none-any.whl (496 kB)
#13 3.435 Collecting distro==1.6.0
#13 3.451   Downloading distro-1.6.0-py2.py3-none-any.whl (19 kB)
#13 3.483 Collecting entrypoints==0.3
#13 3.498   Downloading entrypoints-0.3-py2.py3-none-any.whl (11 kB)
#13 3.624 Collecting fonttools==4.28.5
#13 3.642   Downloading fonttools-4.28.5-py3-none-any.whl (890 kB)
#13 3.677 Requirement already satisfied: html5lib==1.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 27)) (1.1)
#13 3.677 Requirement already satisfied: idna==3.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 28)) (3.3)
#13 3.678 Requirement already satisfied: importlib-metadata==4.8.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 29)) (4.8.1)
#13 3.733 Collecting ipykernel==6.6.0
#13 3.750   Downloading ipykernel-6.6.0-py3-none-any.whl (126 kB)
#13 3.835 Collecting ipython==7.30.1
#13 3.853   Downloading ipython-7.30.1-py3-none-any.whl (791 kB)
#13 3.911 Collecting ipython-genutils==0.2.0
#13 3.925   Downloading ipython_genutils-0.2.0-py2.py3-none-any.whl (26 kB)
#13 3.982 Collecting ipywidgets==7.6.5
#13 4.028   Downloading ipywidgets-7.6.5-py2.py3-none-any.whl (121 kB)
#13 4.100 Collecting isort==5.10.1
#13 4.115   Downloading isort-5.10.1-py3-none-any.whl (103 kB)
#13 4.124 Requirement already satisfied: jedi==0.18.1 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 35)) (0.18.1)
#13 4.124 Requirement already satisfied: Jinja2==3.0.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 36)) (3.0.3)
#13 4.172 Collecting joblib==1.1.0
#13 4.190   Downloading joblib-1.1.0-py2.py3-none-any.whl (306 kB)
#13 4.206 Requirement already satisfied: jsonschema==3.2.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 38)) (3.2.0)
#13 4.257 Collecting jupyter-client==7.1.0
#13 4.276   Downloading jupyter_client-7.1.0-py3-none-any.whl (129 kB)
#13 4.362 Collecting jupyter-console==6.4.0
#13 4.379   Downloading jupyter_console-6.4.0-py3-none-any.whl (22 kB)
#13 4.429 Collecting jupyter-core==4.9.1
#13 4.443   Downloading jupyter_core-4.9.1-py3-none-any.whl (86 kB)
#13 4.478 Collecting jupyterlab-pygments==0.1.2
#13 4.499   Downloading jupyterlab_pygments-0.1.2-py2.py3-none-any.whl (4.6 kB)
#13 4.503 Requirement already satisfied: kiwisolver==1.3.2 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 43)) (1.3.2)
#13 4.602 Collecting llvmlite==0.38.1
#13 4.617   Downloading llvmlite-0.38.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.5 MB)
#13 5.768 Collecting MarkupSafe==2.0.1
#13 5.785   Downloading MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (30 kB)
#13 5.992 Collecting matplotlib==3.5.1
#13 6.012   Downloading matplotlib-3.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB)
#13 6.373 Requirement already satisfied: matplotlib-inline==0.1.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 47)) (0.1.3)
#13 6.373 Requirement already satisfied: mistune==0.8.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 48)) (0.8.4)
#13 6.407 Collecting more-itertools==8.10.0
#13 6.422   Downloading more_itertools-8.10.0-py3-none-any.whl (51 kB)
#13 6.429 Requirement already satisfied: msgpack==1.0.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 50)) (1.0.3)
#13 6.472 Collecting multiprocess==<IP_ADDRESS>
#13 6.508   Downloading multiprocess-<IP_ADDRESS>-py39-none-any.whl (128 kB)
#13 6.556 Collecting nbclient==0.5.4
#13 6.574   Downloading nbclient-0.5.4-py3-none-any.whl (66 kB)
#13 6.625 Collecting nbconvert==6.1.0
#13 6.643   Downloading nbconvert-6.1.0-py3-none-any.whl (551 kB)
#13 6.701 Collecting nbformat==5.1.3
#13 6.717   Downloading nbformat-5.1.3-py3-none-any.whl (178 kB)
#13 6.728 Requirement already satisfied: nest-asyncio==1.5.4 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 55)) (1.5.4)
#13 6.786 Collecting notebook==6.4.4
#13 6.809   Downloading notebook-6.4.4-py3-none-any.whl (9.9 MB)
#13 7.331 Collecting numba==0.55.2
#13 7.448   Downloading numba-0.55.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.4 MB)
#13 7.955 Collecting numpy==1.21.5
#13 8.223   Downloading numpy-1.21.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB)
#13 8.712 Requirement already satisfied: ordered-set==4.0.2 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 59)) (4.0.2)
#13 8.713 Requirement already satisfied: packaging==21.3 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 60)) (21.3)
#13 8.920 Collecting pandas==1.3.5
#13 8.939   Downloading pandas-1.3.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.5 MB)
#13 9.445 Collecting pandas-bokeh==0.5.5
#13 9.489   Downloading pandas_bokeh-0.5.5-py2.py3-none-any.whl (29 kB)
#13 9.521 Collecting pandocfilters==1.4.3
#13 9.534   Downloading pandocfilters-1.4.3.tar.gz (16 kB)
#13 9.677 Requirement already satisfied: parso==0.8.2 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 64)) (0.8.2)
#13 9.702 Collecting pathos==0.2.8
#13 9.724   Downloading pathos-0.2.8-py2.py3-none-any.whl (81 kB)
#13 9.733 Requirement already satisfied: pep517==0.12.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 66)) (0.12.0)
#13 9.734 Requirement already satisfied: pexpect==4.8.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 67)) (4.8.0)
#13 9.734 Requirement already satisfied: pickleshare==0.7.5 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 68)) (0.7.5)
#13 10.06 Collecting Pillow==8.4.0
#13 10.08   Downloading Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)
#13 10.18 Requirement already satisfied: ply==3.11 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 70)) (3.11)
#13 10.21 Collecting pox==0.3.0
#13 10.23   Downloading pox-0.3.0-py2.py3-none-any.whl (30 kB)
#13 10.30 Collecting ppft==<IP_ADDRESS>
#13 10.32   Downloading ppft-<IP_ADDRESS>-py3-none-any.whl (65 kB)
#13 10.32 Requirement already satisfied: progress==1.6 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 73)) (1.6)
#13 10.36 Collecting prometheus-client==0.11.0
#13 10.37   Downloading prometheus_client-0.11.0-py2.py3-none-any.whl (56 kB)
#13 10.44 Collecting prompt-toolkit==3.0.24
#13 10.45   Downloading prompt_toolkit-3.0.24-py3-none-any.whl (374 kB)
#13 10.47 Requirement already satisfied: ptyprocess==0.7.0 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 76)) (0.7.0)
#13 10.50 Collecting pycairo==1.20.1
#13 10.51   Downloading pycairo-1.20.1.tar.gz (344 kB)
#13 10.55   Installing build dependencies: started
#13 12.66   Installing build dependencies: finished with status 'done'
#13 12.66   Getting requirements to build wheel: started
#13 12.83   Getting requirements to build wheel: finished with status 'done'
#13 12.83     Preparing wheel metadata: started
#13 13.00     Preparing wheel metadata: finished with status 'done'
#13 13.00 Requirement already satisfied: pycparser==2.21 in /usr/lib/python3.10/site-packages (from -r requirements.txt (line 78)) (2.21)
#13 13.04 Collecting Pygments==2.11.1
#13 13.10   Downloading Pygments-2.11.1-py3-none-any.whl (1.1 MB)
#13 13.17 Collecting PyGObject==3.42.0
#13 13.19   Downloading PyGObject-3.42.0.tar.gz (716 kB)
#13 13.28   Installing build dependencies: started
#13 16.38   Installing build dependencies: finished with status 'error'
#13 16.38   ERROR: Command errored out with exit status 1:
#13 16.38    command: /usr/bin/python /usr/lib/python3.10/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-dh3zzgid/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel pycairo
#13 16.38        cwd: None
#13 16.38   Complete output (29 lines):
#13 16.38   Collecting setuptools
#13 16.38     Using cached setuptools-65.3.0-py3-none-any.whl (1.2 MB)
#13 16.38   Collecting wheel
#13 16.38     Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
#13 16.38   Collecting pycairo
#13 16.38     Downloading pycairo-1.21.0.tar.gz (340 kB)
#13 16.38     Installing build dependencies: started
#13 16.38     Installing build dependencies: finished with status 'done'
#13 16.38     Getting requirements to build wheel: started
#13 16.38     Getting requirements to build wheel: finished with status 'done'
#13 16.38       Preparing wheel metadata: started
#13 16.38       Preparing wheel metadata: finished with status 'done'
#13 16.38   Building wheels for collected packages: pycairo
#13 16.38     Building wheel for pycairo (PEP 517): started
#13 16.38     Building wheel for pycairo (PEP 517): finished with status 'error'
#13 16.38     ERROR: Command errored out with exit status 1:
#13 16.38      command: /usr/bin/python /usr/lib/python3.10/site-packages/pep517/in_process/_in_process.py build_wheel /tmp/tmp_62d2zbe
#13 16.38          cwd: /tmp/pip-install-zztmw9q1/pycairo_09b188e4764c49b3bf3f8e7c6a7f34a3
#13 16.38     Complete output (6 lines):
#13 16.38     running bdist_wheel
#13 16.38     running build
#13 16.38     running build_py
#13 16.38     running build_ext
#13 16.38     'pkg-config' not found.
#13 16.38     Command ['pkg-config', '--print-errors', '--exists', 'cairo >= 1.15.10']
#13 16.38     ----------------------------------------
#13 16.38     ERROR: Failed building wheel for pycairo
#13 16.38   Failed to build pycairo
#13 16.38   ERROR: Could not build wheels for pycairo which use PEP 517 and cannot be installed directly
#13 16.38   ----------------------------------------
#13 16.38 WARNING: Discarding https://files.pythonhosted.org/packages/cc/72/48cfdd7a0caf3c27f392d2657731ac6f7c3c1c0a60bfeba3e1ba9ffa7ba9/PyGObject-3.42.0.tar.gz#sha256=b9803991ec0b0b4175e81fee0ad46090fa7af438fe169348a9b18ae53447afcd (from https://pypi.org/simple/pygobject/) (requires-python:>=3.6, <4). Command errored out with exit status 1: /usr/bin/python /usr/lib/python3.10/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-dh3zzgid/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel pycairo Check the logs for full command output.
#13 16.38 ERROR: Could not find a version that satisfies the requirement PyGObject==3.42.0
#13 16.38 ERROR: No matching distribution found for PyGObject==3.42.0
#13 ERROR: executor failed running [/bin/sh -c pip install -r requirements.txt]: exit code: 1
------
 > [ 9/10] RUN pip install -r requirements.txt:
------
executor failed running [/bin/sh -c pip install -r requirements.txt]: exit code: 1

Dear @xtruan , thank you for reviewing and also trying the local build.
I used python 3.9 which is I think why your build fails as 3.10 was not tested and likely not supported by all packages.
Would you like me to update the dependencies to python 3.10 or can you run it with 3.9?
Also it helps me to know what OS you used, I am using mac to build the dockerfile, on windows it might behave slightly different.
Instead of building the docker file locally you could also try the github action to build it, this is how we currently do it. Github then immediately stores and serves the docker image as a release.


Feature Request: Multiread/-store

First off: Great package!
For some additional compatibility, would it be possible to create a wrapper that puts msg.payload into msg.topic for Multistore functionality (multiple switches, sliders, or other inputs into one store node) and another wrapper that generates a message with all (bonus for selectable) values as attributes?
It would also be nice to have a simple way to periodically read that.

This is my own homebrew implementation of that, and it just allows for a supremely streamlined but also interactive flow of data.

A switch or a slider will output a message like this: {"topic": "foo", "payload": true}
It would be cool if one could simply route a bunch of those into a single node for persistence.
So upon receiving the command "topic_write" the write command would select the attribute name from msg.topic and write msg.payload into that.
The other thing would be a node that can be setup to contain a number of persisted attributes that would be emitted as payload like this after receiving a triggering message:
{"topic": "datadump", "payload": {"foo": true, "bar": "baz", "abc": 123}}
With foo, bar and abc being the values selected from a list of all variables as configured in the configuration node.
I did fork it and try my hand at adding the first thing but I sort of stumbled over the write call not being in an atomic function so a merge request would be too messy to just dump it on you without at least some testing.

@JustusW if storage of multiple switch/slides states in a single JSON persistent value is OK for you there is also another easy flow possible to archive the desired behaviour.
The trick used in the following demo flow is that a JSON object is per-default only passed as pointer/reference in the msg. Therefore the persisted state can be updated after a "read" node by just writing into the JSON hierarchy contained in msg.
In the demo flow a second "write" node is also part of the flow. This is only necessary to overcome the initial situation that no value is yet stored in the actual Node-RED context store. Without this write node you would only modify the default value provided by the first "read" node because nothing is yet stored in the context store.
In practice it's sufficient to write the JSON hierarchy a single time into the context store (e.g. on node-red startup).
[
    {
        "id": "19f0545e59ee555d",
        "type": "persistent value",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "valuesConfig": "b8961772bcc67bda",
        "valuesConfigName": "SwitchStates",
        "valueId": "7db375a0-f4e3-11ed-9913-774693029b74",
        "value": "States",
        "command": "read",
        "msgProperty": "switch_states",
        "deepCloneValue": false,
        "outputPreviousValue": false,
        "outputPreviousValueMsgProperty": "previous_value",
        "collectValues": false,
        "collectValuesMsgProperty": "values",
        "blockIfEnable": false,
        "blockIfRule": "eq",
        "blockIfCompareValue": "",
        "x": 780,
        "y": 340,
        "wires": [
            [
                "fa57f20545305784"
            ],
            []
        ]
    },
    {
        "id": "52cddb5ac0010605",
        "type": "function",
        "z": "dc5b21ae.abb9c8",
        "name": "update switch state",
        "func": "msg.switch_states[msg.topic] = msg.payload;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1270,
        "y": 340,
        "wires": [
            [
                "7f08499b6e1b0720"
            ]
        ]
    },
    {
        "id": "fa57f20545305784",
        "type": "persistent value",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "valuesConfig": "b8961772bcc67bda",
        "valuesConfigName": "SwitchStates",
        "valueId": "7db375a0-f4e3-11ed-9913-774693029b74",
        "value": "States",
        "command": "write",
        "msgProperty": "switch_states",
        "deepCloneValue": false,
        "outputPreviousValue": false,
        "outputPreviousValueMsgProperty": "previous_value",
        "collectValues": false,
        "collectValuesMsgProperty": "values",
        "blockIfEnable": false,
        "blockIfRule": "eq",
        "blockIfCompareValue": "",
        "x": 1040,
        "y": 340,
        "wires": [
            [
                "52cddb5ac0010605"
            ],
            []
        ]
    },
    {
        "id": "7f08499b6e1b0720",
        "type": "debug",
        "z": "dc5b21ae.abb9c8",
        "name": "current switch states",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "switch_states",
        "targetType": "msg",
        "statusVal": "switch_states",
        "statusType": "auto",
        "x": 1480,
        "y": 340,
        "wires": []
    },
    {
        "id": "dda3b4aa67198afc",
        "type": "group",
        "z": "dc5b21ae.abb9c8",
        "name": "switch1",
        "style": {
            "label": true
        },
        "nodes": [
            "b4058ae7f45e6acd",
            "b6074af5d3aca172"
        ],
        "x": 394,
        "y": 219,
        "w": 212,
        "h": 122
    },
    {
        "id": "b4058ae7f45e6acd",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "g": "dda3b4aa67198afc",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "switch1",
        "payload": "true",
        "payloadType": "bool",
        "x": 510,
        "y": 260,
        "wires": [
            [
                "19f0545e59ee555d"
            ]
        ]
    },
    {
        "id": "b6074af5d3aca172",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "g": "dda3b4aa67198afc",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "switch1",
        "payload": "false",
        "payloadType": "bool",
        "x": 510,
        "y": 300,
        "wires": [
            [
                "19f0545e59ee555d"
            ]
        ]
    },
    {
        "id": "bd12fb9671270bec",
        "type": "group",
        "z": "dc5b21ae.abb9c8",
        "name": "switch2",
        "style": {
            "label": true
        },
        "nodes": [
            "30f4f0ef77f6bcb6",
            "a34985fb1099674f"
        ],
        "x": 394,
        "y": 339,
        "w": 212,
        "h": 122
    },
    {
        "id": "30f4f0ef77f6bcb6",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "g": "bd12fb9671270bec",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "switch2",
        "payload": "true",
        "payloadType": "bool",
        "x": 510,
        "y": 380,
        "wires": [
            [
                "19f0545e59ee555d"
            ]
        ]
    },
    {
        "id": "a34985fb1099674f",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "g": "bd12fb9671270bec",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "switch2",
        "payload": "false",
        "payloadType": "bool",
        "x": 510,
        "y": 420,
        "wires": [
            [
                "19f0545e59ee555d"
            ]
        ]
    },
    {
        "id": "b8961772bcc67bda",
        "type": "persistent values config",
        "name": "SwitchStates",
        "values": [
            {
                "id": "7db375a0-f4e3-11ed-9913-774693029b74",
                "name": "States",
                "datatype": "json",
                "default": "{\"switch1\":false,\"switch2\":false}",
                "scope": "global",
                "storage": "default"
            }
        ]
    }
]

Hello again, thanks for those proposals!
So, the first one would be perfect for my needs, and I think it also could be used to get a similar output to what I need:
{"command": "multi_read", "payload": ["attr1", "attr2"]}
Could then emit:
{"topic": "multi_read", payload: {"attr1": true, "attr2", false}}
Thus dropping the need to setup the emitted variables in a separate UI.
While your example would technically work, it drops the great feature of specifically setting up variable types which is what makes your package so great imo.
Thank you for your responses, I appreciate your time! :)

I just made a pull request, after thinking it through thoroughly the multi read capability is actually the only thing that's absolutely necessary for my usecase. It's perfectly fine to have a read node into button/switch/text/number/whatever into write node.
It would just be rather nasty to extract all the values for actual computation of the control outputs, which this would address.
See #6

@JustusW Thanks for the proposal in #6. Actually I did not yet look/think into your second part of the feature request.
Actually the "Collect Values" feature which is already available is similar to your propose "multi_read" feature. You just need to concatenate multiple read nodes for the different values/states and enable the "Collect Values" feature. A dictionary with the individual states is then available at the end of the chain.
But of course this is not fully dynamic and needs a separate node for every persisted value.
There is an example provided for this at Menu -> Import -> Examples -> node-red-persistent-values -> "Collect Multiple Values".
Or here as a small demo flow:
[
    {
        "id": "375691235edfce73",
        "type": "persistent value",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "valuesConfig": "b8961772bcc67bda",
        "valuesConfigName": "SwitchStates",
        "valueId": "7db375a0-f4e3-11ed-9913-774693029b74",
        "value": "Switch1",
        "command": "read",
        "msgProperty": "state",
        "deepCloneValue": false,
        "outputPreviousValue": false,
        "outputPreviousValueMsgProperty": "previous_value",
        "collectValues": true,
        "collectValuesMsgProperty": "payload",
        "blockIfEnable": false,
        "blockIfRule": "eq",
        "blockIfCompareValue": "true",
        "x": 660,
        "y": 320,
        "wires": [
            [
                "4bba65ed92175cdc"
            ],
            []
        ]
    },
    {
        "id": "5e694ec7a2d5650b",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "name": "collect all states",
        "props": [
            {
                "p": "topic",
                "vt": "str"
            },
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "str",
        "x": 440,
        "y": 320,
        "wires": [
            [
                "375691235edfce73"
            ]
        ]
    },
    {
        "id": "4bba65ed92175cdc",
        "type": "persistent value",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "valuesConfig": "b8961772bcc67bda",
        "valuesConfigName": "SwitchStates",
        "valueId": "e6919cb0-f681-11ed-848f-71dc30f730cc",
        "value": "Switch2",
        "command": "read",
        "msgProperty": "state",
        "deepCloneValue": false,
        "outputPreviousValue": false,
        "outputPreviousValueMsgProperty": "previous_value",
        "collectValues": true,
        "collectValuesMsgProperty": "payload",
        "blockIfEnable": false,
        "blockIfRule": "eq",
        "blockIfCompareValue": "true",
        "x": 920,
        "y": 320,
        "wires": [
            [
                "645175179813dc8c"
            ],
            []
        ]
    },
    {
        "id": "645175179813dc8c",
        "type": "debug",
        "z": "dc5b21ae.abb9c8",
        "name": "collected states",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1140,
        "y": 320,
        "wires": []
    },
    {
        "id": "9ce1fd8881e48521",
        "type": "persistent value",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "valuesConfig": "b8961772bcc67bda",
        "valuesConfigName": "SwitchStates",
        "valueId": "7db375a0-f4e3-11ed-9913-774693029b74",
        "value": "Switch1",
        "command": "write",
        "msgProperty": "payload",
        "deepCloneValue": false,
        "outputPreviousValue": false,
        "outputPreviousValueMsgProperty": "previous_value",
        "collectValues": false,
        "collectValuesMsgProperty": "payload",
        "blockIfEnable": false,
        "blockIfRule": "eq",
        "blockIfCompareValue": "true",
        "x": 610,
        "y": 220,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "ea616cd7efe03efd",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 410,
        "y": 200,
        "wires": [
            [
                "9ce1fd8881e48521"
            ]
        ]
    },
    {
        "id": "bafe251f029d8398",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "false",
        "payloadType": "bool",
        "x": 410,
        "y": 240,
        "wires": [
            [
                "9ce1fd8881e48521"
            ]
        ]
    },
    {
        "id": "e6db960bd6670f68",
        "type": "persistent value",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "valuesConfig": "b8961772bcc67bda",
        "valuesConfigName": "SwitchStates",
        "valueId": "e6919cb0-f681-11ed-848f-71dc30f730cc",
        "value": "Switch2",
        "command": "write",
        "msgProperty": "payload",
        "deepCloneValue": false,
        "outputPreviousValue": false,
        "outputPreviousValueMsgProperty": "previous_value",
        "collectValues": false,
        "collectValuesMsgProperty": "payload",
        "blockIfEnable": false,
        "blockIfRule": "eq",
        "blockIfCompareValue": "true",
        "x": 1050,
        "y": 220,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "eced07037ac4256e",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "true",
        "payloadType": "bool",
        "x": 850,
        "y": 200,
        "wires": [
            [
                "e6db960bd6670f68"
            ]
        ]
    },
    {
        "id": "c467ff7c472fa513",
        "type": "inject",
        "z": "dc5b21ae.abb9c8",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "false",
        "payloadType": "bool",
        "x": 850,
        "y": 240,
        "wires": [
            [
                "e6db960bd6670f68"
            ]
        ]
    },
    {
        "id": "b8961772bcc67bda",
        "type": "persistent values config",
        "name": "SwitchStates",
        "values": [
            {
                "id": "7db375a0-f4e3-11ed-9913-774693029b74",
                "name": "Switch1",
                "datatype": "bool",
                "default": false,
                "scope": "global",
                "storage": "default"
            },
            {
                "id": "e6919cb0-f681-11ed-848f-71dc30f730cc",
                "name": "Switch2",
                "datatype": "bool",
                "default": false,
                "scope": "global",
                "storage": "default"
            }
        ]
    }
]

About #6:
I like the multi_read feature in general!
Main issue I see is the configuration. Now the "Output" property is used to pass in a list of persisted value names. This might be a bit confusing for a user. Maybe introduce another configurable input property for this feature? At least we need some documentation for this.
This multi_read feature now only allows specifying the different values with a list. But the configuration itself cannot be switched dynamically. Hm, actually we then would need a full dictionary with to specify the persisted values to be read, e.g. like
msg.multi_read = {
  "SwitchStates": "Switch1",
  "SwitchStates": "Switch2"
  // or with list support
  "SliderStates": ["Slider1", "Slider", ...]
}

Then some existing features must also be enabled for the new  multi-read command:

Default values
Deep clone
Update Collected Values
Check against configured datatype
Error Handling for the multi-read list

Unknown persistent value name passed
No list passed

I think https://github.com/waldbaer/node-red-persistent-values/issues/5#issuecomment-1551845469 is a nice dynamic extension of the node.
During "Pfingsten" vacation I will try to implement this new feature.


OpenStreetMap parks data?

Any interest in including OSM parks as data-of-last-resort? Park boundaries from the official government channels should take precedence, but OSM has a lot of effectively-public park space like Central Park (near Central Market) and the Mueller Lake park
Here's a rough pass at what the OSM data looks like: https://gist.github.com/anonymous/bd64382884d2d1d87195
I could work on a little script to clean up and filter parks that already exist in the other datasets if this is something ya'll think is worth it.

Yeah! That sounds great!
I'm wondering how we avoid duplicate data? Doesn't look like there is a shared unique ID.

My thought was to drop any OSM parks that overlap parks from the other datasets - there are existing tools that make it pretty easy to test for spatial intersection.

I guess this should be linked to #30


resurfacing this error No such file or directory: swe-agent-ssdlc/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867 __default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/marshmallow-code__marshmallow-1867.traj

Describe the bug
I built the docker from source, while running the script we are getting /swe-agent-ssdlc
/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867
__default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/mars
hmallow-code__marshmallow-1867.traj'
     from earlier issues I could https://github.com/princeton-nlp/SWE-agent/issues/309 where user was facing same issue.

Steps/commands/code to Reproduce
with latest code, running into this issue.
Error message/results
/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/venv/bin/python -m run --model_name gpt4 --data_path https://github.com/sandbox-sandbox/development-portal-documentation/issues/728 --config_file config/default_from_url.yaml --open_pr
INFO     Logging to
trajectories/rharshavard/gpt4__sandbox-sandbox__development-portal-docu
mentation__default_from_url__t-0.00__p-0.95__c-3.00__install-1/run-2410
23134339.log
INFO     📙 Arguments: actions:
apply_patch_locally: false
           edit:
             docstring: replaces lines <start_line> through <end_line>
     (inclusive) with the given text in the open file. The replacement text
     is terminated by a line with only end_of_edit on it. All of the
     <replacement text> will be entered, so make sure your indentation is
     formatted properly. Python files will be checked for syntax errors
     after the edit. If the system detects a syntax error, the edit will not
     be executed. Simply try to edit the file again, but make sure to read
     the error message and modify the edit command you issue accordingly.
     Issuing the same command a second time will just lead to the same error
     message again.
             signature: edit <start_line>:<end_line>
           <replacement_text>
           end_of_edit
             arguments:
               - start_line (integer) [required]: the line number to start
     the edit at
               - end_line (integer) [required]: the line number to end the
     edit at (inclusive)
               - replacement_text (string) [required]: the text to replace
     the current selection with

           submit:
             docstring: submits your current code and terminates the session
             signature: submit

         command_files:
         -
     /Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
     config/commands/defaults.sh
         -
     /Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
     config/commands/search.sh
         -
     /Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
     config/commands/edit_linting.sh
         -
     /Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
     config/commands/_split_string.py
         -
     /Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
     config/commands/submit.sh
         demonstration_template: |
           Here is a demonstration of how to correctly accomplish this task.
           It is included to show you how to correctly use the interface.
           You do not need to follow exactly what is done in the
     demonstration.
           --- DEMONSTRATION ---
           {demonstration}
           --- END OF DEMONSTRATION ---
         demonstrations:
         -
     /Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
     trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867_
     _default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/marsh
     mallow-code__marshmallow-1867.traj
         env_variables:
           CURRENT_FILE: ''
           CURRENT_LINE: '0'
           OVERLAP: '2'
           SEARCH_FILES: ()
           SEARCH_INDEX: '0'
           SEARCH_RESULTS: ()
           WINDOW: '100'
         format_error_template: |
           Your output was not formatted correctly. You must always include
     one discussion and one command as part of your response. Make sure you
     do not have multiple discussion/command tags.
           Please make sure your output precisely matches the following
     format:
           DISCUSSION
           Discuss here with yourself about what your planning and what
     you're going to do in this step.

           ```
           command(s) that you're going to run
           ```
         history_processor: {}
         history_processor_args: {}
         instance_template: |-
           We're currently solving the following issue within our
     repository. Here's the issue text:
           ISSUE:
           {issue}

           INSTRUCTIONS:
           Now, you're going to solve this issue on your own. Your terminal
     session has started and you're in the repository's root directory. You
     can use any bash commands or the special interface to help you. Edit
     all the files you need to and run any checks or tests that you want.
           Remember, YOU CAN ONLY ENTER ONE COMMAND AT A TIME. You should
     always wait for feedback after every command.
           When you're satisfied with all of the changes you've made, you
     can submit your changes to the code base by simply running the submit
     command.
           Note however that you cannot use any interactive session commands
     (e.g. python, vim) in this environment, but you can write scripts and
     run them. E.g. you can write a python script and then run it with
     `python <script_name>.py`.

           NOTE ABOUT THE EDIT COMMAND: Indentation really matters! When
     editing a file, make sure to insert appropriate indentation before each
     line!

           IMPORTANT TIPS:
           1. Always start by trying to replicate the bug that the issues
     discusses.
              If the issue includes code for reproducing the bug, we
     recommend that you re-implement that in your environment, and run it to
     make sure you can reproduce the bug.
              Then start trying to fix it.
              When you think you've fixed the bug, re-run the bug
     reproduction script to make sure that the bug has indeed been fixed.

              If the bug reproduction script does not print anything when it
     successfully runs, we recommend adding a print("Script completed
     successfully, no errors.") command at the end of the file,
              so that you can be sure that the script indeed ran fine all
     the way through.

           2. If you run a command and it doesn't work, try running a
     different command. A command that did not work once will not work the
     second time unless you modify it!

           3. If you open a file and need to get to an area around a
     specific line that is not in the first 100 lines, say line 583, don't
     just use the scroll_down command multiple times. Instead, use the goto
     583 command. It's much quicker.

           4. If the bug reproduction script requires inputting/reading a
     specific file, such as buggy-input.png, and you'd like to understand
     how to input that file, conduct a search in the existing repo code, to
     see whether someone else has already done that. Do this by running the
     command: find_file "buggy-input.png" If that doesn't work, use the
     linux 'find' command.

           5. Always make sure to look at the currently open file and the
     current working directory (which appears right after the currently open
     file). The currently open file might be in a different directory than
     the working directory! Note that some commands, such as 'create', open
     files, so they might change the current  open file.

           6. When editing files, it is easy to accidentally specify a wrong
     line number or to write code with incorrect indentation. Always check
     the code after you issue an edit to make sure that it reflects what you
     wanted to accomplish. If it didn't, issue another command to fix it.

           7. It may be necessary to install the repository from source
     before you can run code. Please think about how to install the
     environment from the repository directory if you need to do so.

           (Open file: {open_file})
           (Current directory: {working_dir})
           bash-$
         next_step_no_output_template: |-
           Your command ran successfully and did not produce any output.
           (Open file: {open_file})
           (Current directory: {working_dir})
           bash-$
         next_step_template: |-
           {observation}
           (Open file: {open_file})
           (Current directory: {working_dir})
           bash-$
         parse_command: {}
         parse_function: {}
         put_demos_in_history: false
         state_command:
           arguments: null
           code: |
             state() {
               local working_dir="$PWD";
               if [ -z "$CURRENT_FILE" ]; then
                   echo '{"open_file": "n/a", "working_dir":
     "'$working_dir'"}';
               else
                   echo '{"open_file": "'$(realpath "$CURRENT_FILE")'",
     "working_dir": "'$working_dir'"}';
               fi
             };
           docstring: null
           end_name: null
           name: state
           signature: null
         strategy_template: null
         submit_command: submit
         subroutine_types: []
         summarizer_config:
           function: {}
           instance_template: null
           model: null
           system_template: null
           template: null
           window_length: 105
         system_template: |-
           SETTING: You are an autonomous programmer, and you're working
     directly in the command line with a special interface.

           The special interface consists of a file editor that shows you
     {WINDOW} lines of a file at a time.
           In addition to typical bash commands, you can also use the
     following commands to help you navigate and edit files.

           COMMANDS:
           {command_docs}

           Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
           If you'd like to add the line '        print(x)' you must fully
     write that out, with all those spaces before the code! Indentation is
     important and code that is not indented correctly will fail and require
     fixing before it can be run.

           RESPONSE FORMAT:
           Your shell prompt is formatted as follows:
           (Open file: <path>) <cwd> $

           You need to format your output using two fields; discussion and
     command.
           Your output should always include _one_ discussion and _one_
     command field EXACTLY as in the following example:
           DISCUSSION
           First I'll start by using ls to see what files are in the current
     directory. Then maybe we can look at some relevant files to see what
     they look like.
           ```
           ls -a
           ```

           You should only include a *SINGLE* command in the command section
     and then wait for a response from the shell before continuing with more
     discussion and commands. Everything you include in the DISCUSSION
     section will be saved for future reference.
           If you'd like to issue two commands at once, PLEASE DO NOT DO
     THAT! Please instead first submit just the first command, and then
     after receiving a response you'll be able to issue the second command.
           You're free to use any other bash commands you want (e.g. find,
     grep, cat, ls, cd) in addition to the special commands listed above.
           However, the environment does NOT support interactive session
     commands (e.g. python, vim), so please do not invoke them.
         util_functions:
         - arguments: null
           code: '_print() {    local total_lines=$(awk ''END {print NR}''
     "$CURRENT_FILE")    echo
             "[File: $(realpath "$CURRENT_FILE") ($total_lines lines
     total)]"    lines_above=$(jq
             -n "$CURRENT_LINE - $WINDOW/2" | jq ''[0, .] | max | floor'')
     lines_below=$(jq
             -n "$total_lines - $CURRENT_LINE - $WINDOW/2" | jq ''[0, .] |
     max | round'')    if
             [ $lines_above -gt 0 ]; then        echo "($lines_above more
     lines above)"    fi    cat
             "$CURRENT_FILE" | grep -n $ | head -n $(jq -n "[$CURRENT_LINE +
     $WINDOW/2,
             $WINDOW/2] | max | floor") | tail -n $(jq -n "$WINDOW")    if [
     $lines_below
             -gt 0 ]; then        echo "($lines_below more lines below)"
     fi}'
           docstring: null
           end_name: null
           name: _print
           signature: _print
         - arguments: null
           code: _constrain_line() {    if [ -z "$CURRENT_FILE" ]    then
     echo "No
             file open. Use the open command first."        return    fi
     local max_line=$(awk
             'END {print NR}' "$CURRENT_FILE")    local half_window=$(jq -n
     "$WINDOW/2"
             | jq 'floor')    export CURRENT_LINE=$(jq -n "[$CURRENT_LINE,
     $max_line -
             $half_window] | min")    export CURRENT_LINE=$(jq -n
     "[$CURRENT_LINE, $half_window]
             | max")}
           docstring: null
           end_name: null
           name: _constrain_line
           signature: _constrain_line
         - arguments: null
           code: '_scroll_warning_message() {    # Warn the agent if we
     scroll too many
             times    # Message will be shown if scroll is called more than
     WARN_AFTER_SCROLLING_TIMES
             (default 3) times    # Initialize variable if it''s not set
     export SCROLL_COUNT=${SCROLL_COUNT:-0}    #
             Reset if the last command wasn''t about scrolling    if [
     "$LAST_ACTION" !=
             "scroll_up" ] && [ "$LAST_ACTION" != "scroll_down" ]; then
     export SCROLL_COUNT=0    fi    #
             Increment because we''re definitely scrolling now    export
     SCROLL_COUNT=$((SCROLL_COUNT
             + 1))    if [ $SCROLL_COUNT -ge
     ${WARN_AFTER_SCROLLING_TIMES:-3} ]; then        echo
             ""        echo "WARNING: Scrolling many times in a row is very
     inefficient."        echo
             "If you know what you are looking for, use \`search_file
     <pattern>\` instead."        echo
             ""    fi}'
           docstring: null
           end_name: null
           name: _scroll_warning_message
           signature: _scroll_warning_message
       config_file: config/default_from_url.yaml
       model:
         host_url: localhost:11434
         model_name: gpt4
         per_instance_cost_limit: 3.0
         replay_path: null
         temperature: 0.0
         top_p: 0.95
         total_cost_limit: 0.0
     ctf: false
     environment:
       base_commit: null
       cache_task_images: false
       container_mounts: []
       container_name: null
       data_path:
     https://githubcom/sandbox-sandbox/development-portal-docume
     ntation/issues/728
       environment_setup: null
       image_name: sweagent/swe-agent:latest
       install_environment: true
       interactive_sessions_config:
         connect:
           cmdline: /root/commands/_connect
           exit_command: connect_stop
           quit_commands_in_session:
           - quit
           signal_for_interrupt_limit: 3
           start_command: connect_start
           terminal_prompt_pattern: '(nc) '
           timeout_duration_on_interrupt: 5
         dummy:
           cmdline: /root/commands/_interactive_dummy
           exit_command: dummy_stop
           quit_commands_in_session:
           - stop
           signal_for_interrupt_limit: 3
           start_command: dummy_start
           terminal_prompt_pattern: '(dummy) '
           timeout_duration_on_interrupt: 5
         gdb:
           cmdline: gdb
           exit_command: debug_stop
           quit_commands_in_session:
           - quit
           signal_for_interrupt_limit: 3
           start_command: debug_start
           terminal_prompt_pattern: '(gdb) '
           timeout_duration_on_interrupt: 5
       no_mirror: false
       repo_path: ''
       split: dev
       timeout: null
       verbose: true
     instance_filter: .*
     print_config: true
     raise_exceptions: false
     skip_existing: true
     suffix: ''

INFO     Base commit reference None resolved to commit hash
dc4f6d0f0d48d21db8a3ff8044344b64c453629a
INFO     💽 Loaded dataset from
https://github.com/sandbox-sandbox/development-portal-docume
ntation/issues/728
INFO     Found image sweagent/swe-agent:latest with tags:
['sweagent/swe-agent:latest'], created: 2024-10-23T08:12:25.758041047Z
for linux arm64.
DEBUG    Starting container with command: docker run -i --rm --name
sweagent-swe-agent-latest-0737fba1dc sweagent/swe-agent:latest
/bin/bash -l
INFO     🌱 Environment Initialized
DEBUG    Environment initialization took 3.73 seconds
INFO     ▶  Beginning task 0
Trying to clone from non mirror...
INFO     Trying to clone from non-mirror...
WARNING  install_environment is set to True, but the data path is a GitHub URL
without an environment config file (environment_config key/flag).
Skipping conda environment installation.
INFO     Initializing agent settings for container
1ab6b6d0b86d691bd1b54511899136b5ed7fbcda96a8086d5db9cbbd37cc808d
INFO     Resetting model stats
INFO     SYSTEM (primary)
SETTING: You are an autonomous programmer, and you're working directly
in the command line with a special interface.
     The special interface consists of a file editor that shows you 100
     lines of a file at a time.
     In addition to typical bash commands, you can also use the following
     commands to help you navigate and edit files.

     COMMANDS:
     open:
       docstring: opens the file at the given path in the editor. If
     line_number is provided, the window will be move to include that line
       signature: open "<path>" [<line_number>]
       arguments:
         - path (string) [required]: the path to the file to open
         - line_number (integer) [optional]: the line number to move the
     window to (if not provided, the window will start at the top of the
     file)

     goto:
       docstring: moves the window to show <line_number>
       signature: goto <line_number>
       arguments:
         - line_number (integer) [required]: the line number to move the
     window to

     scroll_down:
       docstring: moves the window down 100 lines
       signature: scroll_down

     scroll_up:
       docstring: moves the window down 100 lines
       signature: scroll_up

     create:
       docstring: creates and opens a new file with the given name
       signature: create <filename>
       arguments:
         - filename (string) [required]: the name of the file to create

     search_dir:
       docstring: searches for search_term in all files in dir. If dir is
     not provided, searches in the current directory
       signature: search_dir <search_term> [<dir>]
       arguments:
         - search_term (string) [required]: the term to search for
         - dir (string) [optional]: the directory to search in (if not
     provided, searches in the current directory)

     search_file:
       docstring: searches for search_term in file. If file is not provided,
     searches in the current open file
       signature: search_file <search_term> [<file>]
       arguments:
         - search_term (string) [required]: the term to search for
         - file (string) [optional]: the file to search in (if not provided,
     searches in the current open file)

     find_file:
       docstring: finds all files with the given name in dir. If dir is not
     provided, searches in the current directory
       signature: find_file <file_name> [<dir>]
       arguments:
         - file_name (string) [required]: the name of the file to search for
         - dir (string) [optional]: the directory to search in (if not
     provided, searches in the current directory)

     edit:
       docstring: replaces lines <start_line> through <end_line> (inclusive)
     with the given text in the open file. The replacement text is
     terminated by a line with only end_of_edit on it. All of the
     <replacement text> will be entered, so make sure your indentation is
     formatted properly. Python files will be checked for syntax errors
     after the edit. If the system detects a syntax error, the edit will not
     be executed. Simply try to edit the file again, but make sure to read
     the error message and modify the edit command you issue accordingly.
     Issuing the same command a second time will just lead to the same error
     message again.
       signature: edit <start_line>:<end_line>
     <replacement_text>
     end_of_edit
       arguments:
         - start_line (integer) [required]: the line number to start the
     edit at
         - end_line (integer) [required]: the line number to end the edit at
     (inclusive)
         - replacement_text (string) [required]: the text to replace the
     current selection with

     submit:
       docstring: submits your current code and terminates the session
       signature: submit

     Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION.
     If you'd like to add the line '        print(x)' you must fully write
     that out, with all those spaces before the code! Indentation is
     important and code that is not indented correctly will fail and require
     fixing before it can be run.

     RESPONSE FORMAT:
     Your shell prompt is formatted as follows:
     (Open file: <path>) <cwd> $

     You need to format your output using two fields; discussion and
     command.
     Your output should always include _one_ discussion and _one_ command
     field EXACTLY as in the following example:
     DISCUSSION
     First I'll start by using ls to see what files are in the current
     directory. Then maybe we can look at some relevant files to see what
     they look like.
     ```
     ls -a
     ```

     You should only include a *SINGLE* command in the command section and
     then wait for a response from the shell before continuing with more
     discussion and commands. Everything you include in the DISCUSSION
     section will be saved for future reference.
     If you'd like to issue two commands at once, PLEASE DO NOT DO THAT!
     Please instead first submit just the first command, and then after
     receiving a response you'll be able to issue the second command.
     You're free to use any other bash commands you want (e.g. find, grep,
     cat, ls, cd) in addition to the special commands listed above.
     However, the environment does NOT support interactive session commands
     (e.g. python, vim), so please do not invoke them.

INFO     DEMONSTRATION:
/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc/
trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867_
_default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/marsh
mallow-code__marshmallow-1867.traj
WARNING  Traceback (most recent call last):
File
"/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/run.py", line 395, in main
self.run(index)
File
"/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/run.py", line 379, in run
info, trajectory = self.agent.run(
^^^^^^^^^^^^^^^
File
"/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/sweagent/agent/agents.py", line 1050, in run
self.setup(setup_args, init_model_stats)
File
"/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/sweagent/agent/agents.py", line 377, in setup
self.setup_attempt(init_model_stats=init_model_stats)
File
"/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/sweagent/agent/agents.py", line 408, in setup_attempt
demo_history =
json.loads(Path(demonstration_path).read_text())["history"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/Users/rharshavard/.pyenv/versions/3.12.4/lib/python3.12/pathlib.py",
line 1027, in read_text
with self.open(mode='r', encoding=encoding, errors=errors) as f:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/Users/rharshavard/.pyenv/versions/3.12.4/lib/python3.12/pathlib.py",
line 1013, in open
return io.open(self, mode, buffering, encoding, errors, newline)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory:
'/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867
__default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/mars
hmallow-code__marshmallow-1867.traj'
WARNING  ❌ Failed on sandbox-sandbox__development-portal-documentation-i728:
[Errno 2] No such file or directory:
'/Users/rharshavard/Documents/code/ssdlc-agent-workflow/swe-agent-ssdlc
/trajectories/demonstrations/replay__marshmallow-code__marshmallow-1867
__default__t-0.20__p-0.95__c-2.00__install-1___install_from_source/mars
hmallow-code__marshmallow-1867.traj'
INFO     Beginning environment shutdown...
INFO     Agent container stopped
INFO     Found image sweagent/swe-agent:latest with tags:
['sweagent/swe-agent:latest'], created: 2024-10-23T08:12:25.758041047Z
for linux arm64.
DEBUG    Starting container with command: docker run -i --rm --name
sweagent-swe-agent-latest-f04cb459d5 sweagent/swe-agent:latest
/bin/bash -l
INFO     🌱 Environment Initialized
INFO     Beginning environment shutdown...
INFO     Agent container stopped
Process finished with exit code 0
System Information
mac m1
Checklist

[X] I'm running with the latest docker container/on the latest development version (this means running both git pull and docker pull sweagent/swe-agent:latest)
[X] I have copied the full command/code that I ran (as text, not as screenshot!)
[X] If applicable: I have copied the full log file/error message that was the result (as text, not as screenshot!)
[X] I have enclosed code/log messages in triple backticks (docs) and clicked "Preview" to make sure it's displayed correctly.

Well, have you checked whether the file that is reported missing exists? It should be part of the normal swe-agent distribution.

@klieret , it is fixed now, distribution folder is missing in trajectories in root folder, I copied from swe-agent/trajectories.

Great to hear that


Added explicity that values comes from the METS standards

Added the word METS
Closes #344

Closes #344


v0.7

I'd like to have some organization around the upcoming release. I'd like to have a list of all planned and included changes for v0.7 Please edit this for anything I forgot!
New features

DataFrames everywhere
Views of views #62
obsp, varp for pairwise measures #136
Allow sparse data and dataframes in .obsm, .varm, .layers, .uns #134
Updated h5ad spec (with backwards compatable reading)
Lazy views for faster subsetting
Better test coverage

Breaking changes

Modifying sparse .X inplace via a view, even if value was set with dense
Indexing into AnnData object will not reduce dimensionality of contained arrays

Fixes #74 #60 #145

TODO:

[ ] Unbreak zarr implemntation (broken in #167)
[ ] Restructure views, to allow views of view (merge #164)
[ ] Standardize results of indexing into AnnData (merge #164) (always 2d) #145
[ ] Add in obsp, varp attributes (uncomment)
[ ] Fix dense as sparse reading for h5ad
[ ] Appropriate warnings for changed behaviour
[ ] Make sure scanpy and others work with new behaviour

Do we want “2d only” (the second breaking change) in something called 0.7?
I think to signal a breaking change and closeness to 1.0, we could name this version 0.90 or so!
(not 0.99, because then we’ll end up having 0.999, 0.9999, …)

Another change we could think about: unifying .layers and .X
Maybe .X should just be a property returning the first layer? or the layer called X?

Do we want “2d only” (the second breaking change) in something called 0.7?
I think to signal a breaking change and closeness to 1.0, we could name this version 0.90 or so!

I would understand the change from v0.6.x to v0.7 to involve breaking changes. I don't like the idea of going to v0.90 since it breaks from semantic versioning. Also, who knows, we may want v0.8-v0.20. For example, I'd say the possibility of having .X be one of .layers sounds like a great v0.8 target to me, since it would require us to allow layers to be backed, and that'll take some time.
I would have to know that this was a dramatic change that broke a lot of stuff before thinking any out of the ordinary versioning semantics were used. The change to always 2d doesn't break many tests here or for scanpy. Additionally scvelo mostly runs with it.
I do think we should do a v0.6.22 release of AnnData and v1.4.4 of scanpy, so there's a version with working scipy/ statsmodels dependencies without this change. This would also give us space to transition users to {obs,var}_vector, since that will return a 1d array now, and once "always 2d" is in effect.

Well, if the fallout isn’t that bad, I agree, we can just call it 0.7
That being said, skipping from 0.6.x to 0.90 is completely compatible with semantic versioning. Why do you think it wasn’t? (And instead of 0.8, the next version would just be called 0.91)

@ivirshup: Agreed with everything! Terrific! Agreed in particular with 0.6.22 and 1.4.4 before moving to 1.5 and 0.7. In 0.6.22, where the flattening is still present, can you add a warning future versions will not flatten .X anymore when it's called?

@flying-sheep, I suppose v0.90 would be compatible with establishing the order of versions, but I think of "incrementing the version" to imply incrementing on a fixed scale. I think my reaction to seeing a version change from v0.6.22 to v0.7.0 would be "there are breaking changes in this release", while v0.6.22 to v0.90.0 would be "what does this mean? What happened to v0.7-v0.89"?

I've added that warning, what else has to be done before we can release 0.6.22?

Nothing, I think. I'm happy to make the release if you don't want to do it. 🙂

Just realized there are probably a couple bugs to fix prior to that:

[ ] https://github.com/theislab/scanpy/issues/728 - Just fixing backwards compat for `get_obs
[ ] https://github.com/theislab/scanpy/issues/699 - This is probably on the scanpy side. Should sc.pp.scale make a copy if it's called on a view? It currently does not if called on dense data, but does on sparse data. I think it should always make a copy if its on a view.
[ ] obs_vector probably shouldn't throw a warning telling you to use obs_vector  😜

Great that you're addressing these!

I think it should always make a copy if its on a view.

Agreed!

I think we're good for 0.6.22. Scanpy will need a pass to remove warnings being thrown for v1.4.4 though. Would you mind making this release @falexwolf?

Made release 0.6.22 for the current state of master: https://github.com/theislab/anndata/commit/34e8616fd92b893bdd8e4b6d4036830270961d19/, https://github.com/theislab/anndata/releases, https://pypi.org/project/anndata/#history. 🙂

It would be great if you could start publishing wheels too, it’s almost no additional work:
python3 setup.py sdist bdist_wheel
twine upload dist/anndata-0.7{.tar.gz,-py3-none-any.whl}

I always have to go back and retroactively make wheels.

Oh sorry, I thought we stopped publishing wheels 1.5 years after going from cython to numba. 😆Had you told me that we wanted to continue (what for, btw?, there is no compilation involved), I'd continued publishing wheels of Mac.

There’s not that much of an advantage anymore but wheels are faster to install, as setup.py doesn’t need to be run on the target machines – the wheels will simply be unpacked.

Could the release process get documented, potentially with scripts or snippets? I'd like to be able to help out with that, but I'd like to know I was doing it right.

It’s not more than this, but we can document it, yes:
$ git tag x.y.z
$ python3 setup.py sdist bdist_wheel
$ twine upload scanpy-x.y.z-py3-none-any.whl scanpy-x.y.z.tar.gz
$ git push --tags

Just push a big update which cleans up the reading and writing code a lot, as well as improving performance. It does make some changes to the on disk structure, but you should be able to read older files. Added features mean you can now have data frames and sparse matrices stored in any of the obsm, varm, layers etc.
It would be great if people could try out current master and let me know if they find any bugs!

OK, so should we get this out before the X-layers merge (#244) and the modes (#237) land?

Yes! I need to take another look at fixing https://github.com/theislab/scanpy/issues/832 before this can go though. I'm going to check if there's any chance this could get sorted upstream first.

Hmm, we should deprecate rename_categories, as it’s no longer necessary with the new categorical storage. I’ll do this before releasing the rc.

What is the alternative to rename_categories? I'm using it quite a lot. It works both on the categoricals for the obs or var column, but also on any rank_genes_groups() results that are generated, no?

It’s useless since the categories are no longer stored in .uns, just do:
adata.obs['foo'].cat.categories = new_categories
# or
adata.obs['foo'].cat.rename_categories(..., inplace=True)

The nice thing about rename_categories as it is at the moment is that it renames the .uns and .obs/.var stuff in a single command.

We just (pre-)released AnnData 0.7rc1 with it deprecated. We should move the code to scanpy as a documented utility I think.

Alex reverted stuff on master because there’s no alternatives, so our path forwards is now:

Scanpy needs to grow utils.rename_categories (or so) and update_anndata (or so)
obsp/varp warning and rename_categories deprecations needs to be reinstated before 0.7
people should be encouraged at the right places to migrate to obsp/varp (using update_anndata) and scanpy.utils.rename_categories.

Could we try to have a discussion instead of you making absolute statements?

semi-agreed, because of unclarity of alternatives, see our Slack discussion
disagreed on obsp/varp, it gives the user a horrible experience, and there are no alternatives, I worked with these warnings for a week now and got very annoyed, so I muted them
agreed

Sorry for not outlining this clearly enough, I was busy celebrating christmas and my birthday!
The plan is and always was to 1. get a anndata prerelease out with most deprecations in place 2. get a scanpy prerelease out with the stuff that is supposed to be in scanpy, 3. release final versions of anndata and scanpy


clients disconnected one-by-one and add-on fails to stop/restart

Help please!
Version info:
Core 2024.5.3
Supervisor 2024.05.1
Operating System 12.3
Frontend 20240501.1

Hass.io Access Point version <IP_ADDRESS> - though I only upgraded from an earlier version (0.5.0?) after the problem below started.
I had since uninstalled the Add-On and re-installed. Problem persists

Symptoms below started around time when I upgraded everything to 2024.5
Before that everything worked very well and very stably
Hardware is a TP-Link USB stick - if it is important I can dig out the model number
After system startup, one by one, my devices would get disconnected from the AP, and eventually the AP stops broadcasting and then everything gets disconnected. Attempts to stop the add-on to start again does not work. The only workaround is to physically reboot the whole system (a RaspPi 4) and it works for a while (up to maybe 6 or 8 hours?) then it happens again.
this is the log I get for when the devices are disconnected one by one...
wlp1s0u1u3: AP-STA-DISCONNECTED bb:cc:dd:ee:ff:aa
wlp1s0u1u3: STA bb:cc:dd:ee:ff:aa IEEE 802.11: disassociated due to inactivity
wlp1s0u1u3: STA bb:cc:dd:ee:ff:aa IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
wlp1s0u1u3: AP-STA-DISCONNECTED bb:cc:dd:ee:ff:cc
wlp1s0u1u3: STA bb:cc:dd:ee:ff:cc IEEE 802.11: disassociated due to inactivity
wlp1s0u1u3: STA bb:cc:dd:ee:ff:cc IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
wlp1s0u1u3: AP-STA-DISCONNECTED bb:cc:dd:ee:ff:bb
wlp1s0u1u3: STA bb:cc:dd:ee:ff:bb IEEE 802.11: disassociated due to inactivity
wlp1s0u1u3: AP-STA-DISCONNECTED bb:cc:dd:ee:ff:dd
wlp1s0u1u3: STA bb:cc:dd:ee:ff:dd IEEE 802.11: disassociated due to inactivity
wlp1s0u1u3: STA bb:cc:dd:ee:ff:bb IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
wlp1s0u1u3: STA bb:cc:dd:ee:ff:dd IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
wlp1s0u1u3: INTERFACE-DISABLED
rfkill: Cannot open RFKILL control device
wlp1s0u1u3: INTERFACE-ENABLED
Failed to set beacon parameters
wlp1s0u1u3: INTERFACE-DISABLED
wlp1s0u1u3: INTERFACE-ENABLED
nl80211: kernel reports: key not allowed
Failed to set beacon parameters

Snippet of log for when I try to shut down the add-on - the last line is the last log I get even if I wait for a long'ish time (log is from different session)
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
wlp1s0u1u3: interface state ENABLED->DISABLED
Stopping Hass.io Access Point
wlp1s0u1u3: AP-STA-DISCONNECTED aa:aa:aa:aa:aa:aa
wlp1s0u1u3: AP-STA-DISCONNECTED aa:aa:aa:aa:aa:ab
ifdown: interface wlp1s0u1u3 not configured
wlp1s0u1u3: AP-STA-DISCONNECTED aa:aa:aa:aa:aa:ac
wlp1s0u1u3: AP-STA-DISCONNECTED aa:aa:aa:aa:aa:ad
Failed to set beacon parameters
wlp1s0u1u3: AP-DISABLED
wlp1s0u1u3: CTRL-EVENT-TERMINATING
nl80211: deinit ifname=wlp1s0u1u3 disabled_11b_rates=0

Then when I try to start the add-on again this is what I get.. this seems to be where things start to go wrong
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
Starting Hass.io Access Point Addon
# Setup interface:
Add to /etc/network/interfaces: iface wlp1s0u1u3 inet static
Run command: nmcli dev set wlp1s0u1u3 managed no
Warning: nmcli (1.44.4) and NetworkManager (1.44.2) versions don't match. Restarting NetworkManager is advised.
Run command: ip link set wlp1s0u1u3 down
Add to /etc/network/interfaces: address 192.168.xxx.1
Add to /etc/network/interfaces: netmask <IP_ADDRESS>
Add to /etc/network/interfaces: broadcast 192.168.xxx.255
Run command: ip link set wlp1s0u1u3 up
ip: ioctl 0x8914 failed: Resource busy
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

It seems the shutdown command couldnt finish and so the startup also count be completed.
I have added skip_inactive_poll=1 to the hostapd custom config and that seems to have extended a bit the time before inactive but still didnt fix the problem.

Same here. Funny thing is that the Network is working for some minutes after a restart before it starts breaking.
I got it working by downgrading Home Assistant OS to 12.2
I used a terminal addon and did "ha os update --version 12.2"
Downgrading the Supervisor before did not help.

Thanks @MegaBarf  - doesnt the Home Assistant OS do auto-upgrade so it will again upgrade itself to 12.3?

I'll investigate when I have time again next weekend. Thanks for bringing this to my attention.

Tried to upgrade to HAOS 13.1 to see if the issue is resolved - nope :-( Rolled back to 12.2 and all ok again.

any news on this? Would like to update my home assistant soon


i18n(ar): Update ui.ts

Description (required)
I translated ui.ts.
Related issues & labels (optional)

Suggested label: i18n

First-time contributor to Astro Docs?

@tarik

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

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

Tracked Files

Locale
File
Note

ar
ui.ts
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

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

LGTM, except "إدماجات" ⬅ "integration"...
https://www.almaany.com/ar/dict/ar-en/integration/
As I see in tech context usually most translations refer to it as "تكامل".

Thank you for your review @X7md, I see you are from the origin of Arabic but let me tell you the meaning of words regarding the site you mentioned not clear where he took the definitions from Arabic origins?
In contrast, Today we have new technologies and the terms are new.
Anyway, to avoid weak meaning because if we say: إدماجات أخرى better than أخرى تكامل or تكاملات أخرى
In case I'm missing a trusted reference to review based on it, let me know.


Fix NameError typo in grammar

When the lexer encounters an unknown token, it'll raise a NameError instead of the intended TokenizingException because of this typo.
self = <odata_query.grammar.ODataLexer object at 0x7f7dca170e10>, token = Token(type='ERROR', value="'ROUNDHOUSE", lineno=1, index=15)

    def error(self, token):
        """
        Error handler during tokenization

        Args:
            token: The token that failed to tokenize.
        Raises:
            TokenizingException
        """
>       raise exceptions.TokenizingException(text)
E       NameError: name 'text' is not defined

../deps/venv/lib/python3.7/site-packages/odata_query/grammar.py:108: NameError

Well that's embarassing 😅 Thanks for fixing this!

Show me someone who has never released a typo, and I show you someone who never released anything.
Cheers for the merge! :purple_heart:


Make top skiller roles permanent for those that reach 200m first

Quite self explanitory as the title suggests, couldn't find a suggestion already in here for it unless I missed it.
For those that got 200m first it's a nice reward but currently it's a roll of the dice on if you keep the role if the command is run when multiple people have 200m.

Kind of a duplicate of #443

Bump - mostly because I’ve lost out on it about 5 times in a row :HamFraserCry:
OSB first 200m’s
Cooking - Fishy
Firemaking - mnwt
Prayer - Doom
Fletching - sp chlenged
Woodcutting - Mr Chop Chop
Construction - Fishy
Thieving - Fishy
Hunter - Tiz
Lost provided by benny


Add codeready-toolchain-operator to release 0.1.0

Signed-off-by: Matous Jobanek<EMAIL_ADDRESS>Thanks submitting your Operator. Please check below list before you create your Pull Request.

Flat operator directory structure is obsolete from 23-rd of October 2019, only nested directory structure will be accepted.

New Submissions

[x] Has you operator nested directory structure?
[ ] Have you selected the Project Community Operator Submissions in your PR on the right-hand menu bar?

I don't have such options available

[x] Are you familiar with our contribution guidelines?
[x] Have you packaged and deployed your Operator for Operator Framework?

[x] Is your submission signed?

Updates to existing Operators

[x] The PR doesn't contain any update to existing operators

Is your new CSV pointing to the previous version with the replaces property?
Is your new CSV referenced in the appropriate channel defined in the package.yaml ?
Have you tested an update to your Operator when deployed via OLM?
Is your submission signed?

Your submission should not

[x] Modify more than one operator
[x] Modify an Operator you don't own
[x] Rename an operator - please remove and add with a different name instead
[x] Submit operators to both upstream-community-operators and community-operators at once
[x] Modify any files outside the above mentioned folders
[x] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[x] Description about the managed Application and where to find more information
[x] Features and capabilities of your Operator and how to use it
[x] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[x] Human readable name and 1-liner description about your Operator
[x] Valid category name1
[x] One of the pre-defined capability levels2
[x] Links to the maintainer, source code and documentation
[x] Example templates for all Custom Resource Definitions intended to be used
[x] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file a PR against this repo and explain your need
2 For more information see here

@dmesser @J0zi Could you please help me with merging this PR?
Unfortunately, I'm not able to selected the Project Community Operator Submissions as I don't see such option anywhere...

@dmesser @J0zi could we please merge this PR? Or is there anything missing?


Surface models on Google Colab

Hi all,
I'm trying to run the third part of the uploaded notebook directly on Google Colab (Use case 3 - Surface models, Thickness maps and more: FastSurfer's recon-surf command).
After installing FreeSurfer and running this line, for example:
!./run_fastsurfer.sh --t1 /content/AR_F17_DF_202.nii --sid 1
I get this error:
File "eval.py", line 18, in
import nibabel as nib
ModuleNotFoundError: No module named 'nibabel'
By the way, it would be nice if you could upload a step-by-step fully working surface analysis on Colab.
Thanks,
Sebastian

Hey Sebastian,
if you are running it in the Google Colab, you can just add a cell executing the installation (pip install nibabel). As far as I know it is not possible to install FreeSurfer in the Colab due to space limitations which is why we can not have a fully step-by-step surface analysis there. If you managed to do it, it would be very helpful to know how so we can integrate it.
Thanks,
Leonie


forcePasteAsPlainText: true does not work

How to enable forcePasteAsPlainText: true in configuration of this plugin?

@Przemek625 https://ckeditor.com/docs/ckeditor5/latest/updating/migration-from-ckeditor-4.html#configuration-options-compatibility-table:~:text=N/A. No longer needed as CKEditor 5 removes all unwanted markup that cannot be edited with the enabled editor plugins.
https://github.com/nshenderov/strapi-plugin-ckeditor#-configuration

It looks that is is enabled by default. But it works only when I execute "ctr + shift +v"(copy as plain text), but for normal paste(ctr +v) is always paste formatted text. Do you know how to force this plugin to paste ALWAYS unformatted text?

@Przemek625 Read the documentation, there is a separate plugin for pasting text into the editor https://ckeditor.com/docs/ckeditor5/latest/features/pasting/paste-plain-text.html
About "paste ALWAYS unformatted text" looks like there isn't such an option available, you can open an issue in ckeditor's repo

@nshenderov CKEditor 5 offers a function for that – plainTextToHtml(), is it possible to implement?


Submission to Julia General Registry

@JuliaRegistrator register()

Error while trying to register: "Tag with name v1.0.0 already exists and points to a different commit"


Fix #4082 when timestamp separator by space

Timestamp format "auto" can detect iso8601-but-with-space-separator(#4082)

Then it's not ISO8601. I don't think we should be supporting non standard timestamps. But there was some talk at one point about doing simple etl in druid that could allow people to specify a transformation like this.
IMHO this is one of the more compelling use cases for such a feature.

@warmbreeze please clean up you branch (cherry-pick your change https://github.com/druid-io/druid/pull/4411/commits/4b80862bb17a68fc3ceb74dd05ffee36acc49762 on top of druid-io/druid/master) and force push it in this branch. In the future, use those steps on conflicts: https://github.com/druid-io/druid/blob/8efa89af416c0efd86808e66f1b67f6462ecc7de/CONTRIBUTING.md#if-your-pull-request-shows-conflicts-with-master

@leventov ok

because of the rebase is not suitable, I will have a new push request


The data about the original MERRA2_original_data.

Thank you for your  work.
In the code, I noticed that the paths for the original wind and solar data have been defined, but these data files are not yet provided. Could you please share the download links and directory structure for these files?
info['data_path_wind'] = "/groups/carnegie_poc/leiduan_memex/lustre_scratch/MERRA2_data/MERRA2_original_data/Wind/"
info['data_path_solar'] = "/groups/carnegie_poc/leiduan_memex/lustre_scratch/MERRA2_data/MERRA2_original_data/Solar/"

Thank you again for your assistance!

Hi, the raw dataset is too large to be shared here, and they can be downloaded from the website openly: https://daac.gsfc.nasa.gov/
Note that we have later switched to the ERA5 dataset: https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels?tab=overview


EventSource times out at 60 seconds

The EventSource appears to timeout after 60 seconds without receiving data.

This is was confirmed to be due to the URLSession defaulting to a 60 second timeout.
When building an event source manually, you can provide a custom NetworkSession using a URLSessionConfiguration that has a different timeout.
Unfortunately, when using a generated Service/API it currently passes its NetworkSession, which will usually have a small timeout.


Release Master

Just ran into a bug where this cron time was running too many times:
0 0 15 * * *
while 0 0 5 * * * worked just fine.
Pulling master solved the issue.
To reproduce, use sinon:
clock = sinon.useFakeTimers()
// create cron
clock.tick(24 * 60 * 60 * 1000)
// verify it ran once
clock.restore()

I haven't included the fake timers bit, but will with time. For now I'm going to release the code as it appears to be working and people need an update. :)


@click doesn't work on styled components

@click doesn't work on styled components.
need to add extra div to have some workaround

Duplicate of #19.


MWPW-143904-Unit test and small authoring update for mobile-app-banner

Small authoring update for mobile-app-banner
Unit tests for mobile-app-banner

Resolves: MWPW-143904
Test URLs:

Before: https://main--milo--adobecom.hlx.page/drafts/ruchika/branch-io/branch-io-page11?martech=off
After: https://branch-latest--milo--adobecom.hlx.page/drafts/ruchika/branch-io/branch-io-page11?martech=off

CC

Before: https://main--cc--adobecom.hlx.page/drafts/ruchika/mobile-app-banner1?martech=off
After: https://main--cc--adobecom.hlx.page/drafts/ruchika/mobile-app-banner1?milolibs=branch-latest&martech=off

Authoring documentation:
https://main--milo--adobecom.hlx.page/docs/authoring/blocks/mobile-app-banner

Hi @spadmasa , could you please verify if the authoring update done in this PR is working as expected and block is rendering. Other issues that we are facing with android device will most likely be handled in branch dashboard or I'll be raising a separate PR to get it merged in milo.
This is a new block so there will be no impact on any production page.

Verified the changes in the below feature branch urls  in mobile (iphone and android) and Ipad the banner is seen loading
https://branch-latest--milo--adobecom.hlx.page/drafts/ruchika/branch-io/branch-io-page11?martech=off

https://main--cc--adobecom.hlx.page/drafts/ruchika/mobile-app-banner1?milolibs=branch-latest&martech=off

https://branch-latest--milo--adobecom.hlx.page/kr/drafts/ruchika/branch-io/branch-io-page12


platform should be conditionally required

Describe the issue with the metadata
Platform is currently required even when resourceType is not experimentalData. We should restrict platform to a specific set of resourceTypes, or even better, a specific set of assays for which we are collecting platforms

We have removed platform for behavioral assays, so I think should resolve most cases.


Interface external resources to act upon files stored in the archive

A draft ATM to cross link relevant issues

binder https://github.com/jupyterhub/binder/issues/175

there seems to be an extension to allow for what is desired, and works with binder by urlencoding params within 'urlpath'.  I have tried with our jupyterlab, but haven't succeeded yet (asked now): https://github.com/manics/jupyter-notebookparams .

I'm going to close as stale.


Unrecognized manifest key 'applications'.

I'm on chrome latest.

The manifest key is a warning and shouldn't be impacting anything. Chrome complains about Firefox keys and vice versa. If the other console errors are your real complaint then we'll need more information like the issue template asks.


WIP: Work on overloading by hardware target.

As title.

Whilst the build is green, I think numba.tests.test_array_analysis.TestArrayAnalysis.test_stencilcall is still broken with a lowering error but as stencil tests are python 3.7 only it could be on a non-py3.7 test slice.

I did a quick look and tried to get the CUDA target to work. The comments below show what I found.
The only pattern of CUDA test failures I found are related to "Intrinsic in function 'to_fixed_tuple". Some example of failed tests:
* `test_array_views (numba.cuda.tests.cudapy.test_cuda_array_interface.TestCudaArrayInterface)`

* `test_strides (numba.cuda.tests.cudadrv.test_cuda_array_slicing.CudaArraySetting)`

* `test_rank (numba.cuda.tests.cudadrv.test_cuda_array_slicing.CudaArraySetting)`

* `test_broadcast (numba.cuda.tests.cudadrv.test_cuda_array_slicing.CudaArraySetting)`

My local diff to get cuda working:

Thanks for this, applying the patch, I'm seeing the same/similar, all tests seem to fail at to_fixed_tuple on the CUDA target.

5dbeab7 gets CUDA working locally.

4d44673 Adds tests based on the gist at the top of https://github.com/numba/numba/pull/6598

There's an empty hardware.py file that we probably be removed.

There's an empty hardware.py file that we probably be removed.

Done in 9166c3f

Testing CPU and CUDA with build jobs:
Buildfarm ID: numba_smoketest_cpu_yaml_14.
Buildfarm ID: numba_smoketest_cuda_yaml_42.

Buildfarm ID: numba_smoketest_cuda_yaml_42.

CUDA passed.

There's a load of tests (seemingly randomly, i.e. no pattern across hardware or pythons) failing. The only thing I can see in common is that they are tests which rely on functions jitted on initialisation, e.g. dictionary support and jitclass support.

Buildfarm ID: numba_smoketest_cpu_yaml_14.

Failed with https://github.com/numba/numba/pull/6898#issuecomment-819664405, I think 0ef4c1b may fix.

Testing CPU and CUDA with build jobs for 0ef4c1b:
Buildfarm ID: numba_smoketest_cpu_yaml_15.
Buildfarm ID: numba_smoketest_cuda_yaml_43.

Testing CPU and CUDA with build jobs for 0ef4c1b:
Buildfarm ID: numba_smoketest_cpu_yaml_15.

is ok

Buildfarm ID: numba_smoketest_cuda_yaml_43.

is broken, CUDA can't find tuple setitem intrinsics, most likely due to the builtins registry not being used as the place to register the impl from the CPU side.

Testing CPU and CUDA with build jobs for 913ac82:
Buildfarm ID: numba_smoketest_cpu_yaml_16.
Buildfarm ID: numba_smoketest_cuda_yaml_45.

Testing CPU and CUDA with build jobs for 913ac82:
Buildfarm ID: numba_smoketest_cpu_yaml_16.

Waiting on Aarch64 builds but otherwise fine on all builds.

Buildfarm ID: numba_smoketest_cuda_yaml_45.

Passed.


Standardize spacing and quotes on cURL snippets

We should update this:

To follow this:

Fixed on #465


/person/ endpoint should search case-insensitive

Right now /person/robert sparks 404s.

I find this on my phone i have someone that has ben following me and i have the meaner on me okease help me

closed by #6007


Integrate TensorPadPass into the TransposeSharedMem Pipeline.

This removes specialization from the transpose pipeline as it is redundant since padding handles non-alignment.
Updated TensorAllocPass to account for padded tensors during transpose. These are skipped during allocation.
Note: Transpose padding is currently not distributed, hence the inclusion of linalg.generic in the padded test output.
Part of https://github.com/iree-org/iree/issues/10005

I've filed https://github.com/iree-org/iree/issues/10803. From what I can tell, I can't compile transpose with tensor::PadOp when utilizing shared memory.

Closing stale PR.


Visual Studio Python Tests, Debugger not hitting breakpoints

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

Breakpoints are disabled when starting pytests from test explorer, but are enabled when starting withe start(debug) button in the top menu. The test case runs as if I started it with Run in test explorer. I have seen similar reports on VS2019, but this is still an issue in latest version of VS2022. I'm using Python 3.12(64 bit) which is not yet supported, but I don't think this is the issue here.

Original Comments
(no comments)

Original Solutions
(no solutions)

Closing it as a dupe of https://github.com/microsoft/PTVS/issues/6796


add decode to fix template containing b' prefix

On python 3, a bytes object (result from base64.b64encode) is passed to the template, which gets rendered with a b' prefix, and that gets submitted in the POST data to the IdP:

This breaks login, as that message can't be base64decoded by the Idp. This MR converts the bytes to a string object using the decode function.

hi @mhindery, I use djangosaml2 with python3.5, 3.6 and 3.7 and I never encourred in this fault.
check differences here
https://github.com/peppelinux/djangosaml2/compare/master...mhindery:master
can you add your configuration and version, gnu/linux distribution used?

I'm running Debian, python 3.7, with Django==2.2.5, djangosaml2==0.17.2 no config has changed since the working version, apart from the package update.

You mentioned it yourself here, I see: https://github.com/knaperek/djangosaml2/issues/121


Customizing presets

Hi! Thanks a lot for this action!
I'm trying to customize a preset in our project: https://github.com/wemake-services/wemake-python-styleguide/pull/2215#pullrequestreview-775641506
But, looks like it is hard-coded: https://github.com/reviewdog/action-remark-lint/blob/f5e6c0ea318bfab8f8ae9435b1fc1b3e78d83a31/entrypoint.sh#L20
Is there something I am missing? 🙂

@sobolevn Thanks a lot for bringing this issue to our attention. I agree that the current version is indeed too restrictive. I will take a look at #55 later this week.


[DOC] Test to see if tests get turned off for only docs changes

Test to see if tests get turned off for only docs changes

this didnt seem to work, - closing


Support for Israel(Tel Aviv) Region "il-central-1"

The solution deployment is failing in Israel(Tel Aviv) Region "il-central-1"
Version:  v6.2.4
Released: 11/2023
Additional context
Error occurred while GetObject. S3 Error Code: IllegalLocationConstraintException. S3 Error Message: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to. (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException;

Thanks for this request. We will add support for this region in a future release.

This has been added to our backlog for tracking.

Fixed in v6.3.0. Closing issue.


Plugin fails starting after upgrading SysAP to 2.6.0

Hi, I am new here but I have an issue since I have been upgrading my SysAP from 2.5 to 2.6. Following is my log:
8/11/2020, 23:47:39 HOOBS listening on port 80.
08/11/2020, 23:47:42 Loaded plugin 'homebridge-freeathome'
08/11/2020, 23:47:42 homebridge API version: 2.6
08/11/2020, 23:47:42 [11/8/2020, 3:47:42 PM] Registering platform 'homebridge-freeathome.free@home'
08/11/2020, 23:47:42 [11/8/2020, 3:47:42 PM] Registering platform 'homebridge-freeathome.BuschJaegerSysAp'
08/11/2020, 23:47:42 Loading 1 platforms...
08/11/2020, 23:47:42 [free@home] Initializing free@home platform...
08/11/2020, 23:47:42 [free@home] Initialising BuschJaeger Plugin
08/11/2020, 23:47:42 [free@home] Will try to connect to the SysAP at <IP_ADDRESS>
08/11/2020, 23:47:42 [free@home] Trying to connect to SysAP
08/11/2020, 23:47:44 [free@home] Sent Authenticator
08/11/2020, 23:47:44 [free@home] Received Local Key
08/11/2020, 23:47:44 [free@home] Sent New Session Request
08/11/2020, 23:47:44 [free@home] Sent Login SASL Message
08/11/2020, 23:47:44 [free@home] Received SASL Challenge
08/11/2020, 23:47:45 [free@home] Sent SASL Challenge Response
08/11/2020, 23:47:45 [free@home] Received SASL Login Confirmation
08/11/2020, 23:47:45 [free@home] Successfully Authenticated
08/11/2020, 23:47:45 [free@home] Announced Capabilities to System Access Point
08/11/2020, 23:47:45 [free@home] Requested Master Data Structure from System Access Point
08/11/2020, 23:47:46 [free@home] Received Master Update from System Acccess Point
08/11/2020, 23:47:46 (node:728) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'name' of undefined
08/11/2020, 23:47:46 at Function.parseDeviceData (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/XmlParser.js:110:106)
08/11/2020, 23:47:46 at Function.parseMasterUpdate (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/XmlParser.js:17:21)
08/11/2020, 23:47:46 at SystemAccessPoint. (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:314:53)
08/11/2020, 23:47:46 at Generator.next ()
08/11/2020, 23:47:46 at /home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:8:71
08/11/2020, 23:47:46 at new Promise ()
08/11/2020, 23:47:46 at __awaiter (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:4:12)
08/11/2020, 23:47:46 at SystemAccessPoint.handleRpcCallResult (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:293:16)
08/11/2020, 23:47:46 at SystemAccessPoint. (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:267:26)
08/11/2020, 23:47:46 at Generator.next ()
08/11/2020, 23:47:46 at /home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:8:71
08/11/2020, 23:47:46 at new Promise ()
08/11/2020, 23:47:46 at __awaiter (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:4:12)
08/11/2020, 23:47:46 at SystemAccessPoint.handleCryptedContainerToClient (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:261:16)
08/11/2020, 23:47:46 at SystemAccessPoint. (/home/hoobs/.hoobs/node_modules/freeathome-api/dist/lib/SystemAccessPoint.js:227:32)
08/11/2020, 23:47:46 at Generator.next ()
08/11/2020, 23:47:46 (node:728) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
08/11/2020, 23:47:46 (node:728) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Make sure that each actuator is attached to a room/floor in the SysAp and has a name. If that doesn't solve your problem, please send me an export/backup of the SysAp to my email address.

Yep, I forgot to assign one unused actor to a room. Now it is running. Thank you!


Giving hints that we support SparkSQL

Coverage decreased (-0.2%) to 81.002% when pulling adbbe79b1db419813ecb054974cd698903751218 on mistercrunch:sparksql into a704d4ddeed45257d981f2583f8e60b6432d2cb4 on airbnb:master.

It's a very good news for us that caravel supporting hive :+1:
When testing the data url 'jdbc+hive://',  the error 'Can't load plugin: sqlalchemy.dialects:jdbc.hive' occurred. I checked the dialects of sqlalchemy http://docs.sqlalchemy.org/en/latest/dialects/
it seems not support jdbc,  could you tell me what should I install to resolve the problem? Thanks very much :)

current only hive://ip:port/db_name works.

When is going to be released the support for the "jdbc+hive" dialect? Has anyone managed to define their own dialect?

@cristina-grosu I don't know the specifics, but pyhive defines a hive dialect for sqlalchemy, and if you install the jdbc driver for python it should work in theory