no welcome intent handle, is it normal?

{   "actions": [{     "name": "actions.devices",     "deviceControl": {     },     "fulfillment": {       "conversationName": "automation"     }   }],   "conversations": {     "automation" :     {       "name": "automation",       "url": "https://echo.goodk2.com:8000/GoogleHomeNew/konke.do"     }   } }
it's my action.json as same as official smart home document. no welcome intent in it.
everything is ok in mobile app . but test in Simulator,  i say "talk to smart k " , it always response " Sorry, this action is not available in simulation" (debug info is empty)
is it normal?

I have the same issue

With smart home actions, there is no welcome intent. Instead, actions will simply be routed to your automation endpoint.
'Turn my lights on' or 'Set my lights to red' will simply execute the command on your device. You do not need to invoke an agent.

I have tried various phrases including the ones you suggested, with my phone, with the simulator and with an actual Google Home device, but I cannot get it to work. My "skill" is listed and I can add devices via the Home App, I can see the SYNC request and I respond just fine. The problem is when I try to test the EXECUTE and QUERY intents, I don't get anything on my endpoint.
I am not a native English speaker (though I check that Google understands me with the history page) and I am located in Greece. I am also, like the original poster using a non-standard port (9005)
{
	"actions": [{
		"name": "actions.devices",
		"deviceControl": {
		},
		"fulfillment": {
			"conversationName": "automation"
		}
	}],
	"conversations": {
		"automation" : {
			"name": "automation",
			"url": "https://internal.hamsystems.eu:9004/google-home-endpoint",
			"fulfillmentApiVersion": 2
		}
	}
}

Any help is greatly appreciated

When you handle the SYNC request, you should respond with a list of devices and the traits that each device can have. A lightbulb should have a type of [action.devices.types.LIGHT](https://developers.google.com/actions/smarthome/light-schema). It should also have traits for what it can do, such as action.devices.traits.OnOff and action.devices.traits.ColorSpectrum. It should return enough data to the HomeGraph to make it possible to QUERY later. What are you returning with the SYNC?

Hello Nick, this is my respone to the SYNC:
{
    "requestId": "10616006862255960353",
    "payload": {
        "agentUserId": 5,
        "devices": [
            {
                "id": "g:3",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Group"
                    ],
                    "name": "Park Lights"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Group",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "g:6",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Group"
                    ],
                    "name": "Suitcase"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Group",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "1:0",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM One"
                    ],
                    "name": "Plug"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM One",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "10:0",
                "type": "action.devices.types.THERMOSTAT",
                "traits": [
                    "action.devices.traits.TemperatureSetting"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Thermostat"
                    ],
                    "name": "Thermostat"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Thermostat",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "10:1",
                "type": "action.devices.types.THERMOSTAT",
                "traits": [
                    "action.devices.traits.TemperatureSetting"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Thermostat"
                    ],
                    "name": "Ham Thermostat"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Thermostat",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "10:2",
                "type": "action.devices.types.THERMOSTAT",
                "traits": [
                    "action.devices.traits.TemperatureSetting"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Thermostat"
                    ],
                    "name": "Thermostat"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Thermostat",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "11:1",
                "type": "action.devices.types.LIGHT",
                "traits": [
                    "action.devices.traits.OnOff",
                    "action.devices.traits.Brightness"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Triple Dimmer Switch"
                    ],
                    "name": "Ham Plug"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Triple Dimmer Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "12:4",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Din Switch"
                    ],
                    "name": "Suitcase DIN"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Din Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "12:5",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Din Switch"
                    ],
                    "name": "Isolation Transformer"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Din Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "12:6",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Din Switch"
                    ],
                    "name": "Din Lights"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Din Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "13:1",
                "type": "action.devices.types.SCENE",
                "traits": [
                    "action.devices.traits.Scene"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Environmental"
                    ],
                    "name": "Ham Environmental"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Environmental",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "14:1",
                "type": "action.devices.types.OUTLET",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Plug"
                    ],
                    "name": "Lobby Plug"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Plug",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "14:2",
                "type": "action.devices.types.OUTLET",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Plug"
                    ],
                    "name": "Ham Plug"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Plug",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "14:3",
                "type": "action.devices.types.OUTLET",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Plug"
                    ],
                    "name": "Lab Outlet"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Plug",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "14:5",
                "type": "action.devices.types.OUTLET",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Plug"
                    ],
                    "name": "Lobby Outlet"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Plug",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "2:0",
                "type": "action.devices.types.SCENE",
                "traits": [
                    "action.devices.traits.Scene"
                ],
                "name": {
                    "defaultNames": [
                        "Temperature HAM"
                    ],
                    "name": "Thermometer"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "Temperature HAM",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "2:1",
                "type": "action.devices.types.SCENE",
                "traits": [
                    "action.devices.traits.Scene"
                ],
                "name": {
                    "defaultNames": [
                        "Temperature HAM"
                    ],
                    "name": "Environmental Sensor"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "Temperature HAM",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "2:2",
                "type": "action.devices.types.SCENE",
                "traits": [
                    "action.devices.traits.Scene"
                ],
                "name": {
                    "defaultNames": [
                        "Temperature HAM"
                    ],
                    "name": "Environmental Sensor 2"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "Temperature HAM",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "3:0",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "Heavy HAM"
                    ],
                    "name": "Waterheater"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "Heavy HAM",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:0",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Room Lights 1"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:1",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Room Lights 2"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:2",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Park Lights 1"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:3",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Park Lights 2"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:4",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Park Lights 3"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:5",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Park Lights 4"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "4:6",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Light Switch"
                    ],
                    "name": "Park Lights 5"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Light Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "5:0",
                "type": "action.devices.types.OUTLET",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Wall Plug"
                    ],
                    "name": "TV"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Wall Plug",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "6:0",
                "type": "action.devices.types.OUTLET",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Multi Plug"
                    ],
                    "name": "Multi plug"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Multi Plug",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:10",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Office light"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:12",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Ham Light Switch"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:14",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Plug Demo"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:15",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Ham Light Switch"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:16",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "ESP12-e"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:17",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "ESP12-f"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:18",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "esp12-s"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:19",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "v6"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:20",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Ham Plug"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:25",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Bathroom Light"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:26",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "Door Light"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "8:5",
                "type": "action.devices.types.SWITCH",
                "traits": [
                    "action.devices.traits.OnOff"
                ],
                "name": {
                    "defaultNames": [
                        "HAM Switch"
                    ],
                    "name": "ESP12-e"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM Switch",
                    "hwVersion": "1.0"
                }
            },
            {
                "id": "9:0",
                "type": "action.devices.types.LIGHT",
                "traits": [
                    "action.devices.traits.OnOff",
                    "action.devices.traits.Brightness"
                ],
                "name": {
                    "defaultNames": [
                        "HAM LED controller"
                    ],
                    "name": "LED Lights"
                },
                "willReportState": false,
                "deviceInfo": {
                    "manufacturer": "HAM Systems",
                    "model": "HAM LED controller",
                    "hwVersion": "1.0"
                }
            }
        ]
    }
}

The devices get listed on the Home App like this

What happens when you try to execute a command on one of your lights? You stated that you did not receive anything on your endpoint. How does the Assistant respond?

turn office light on :
Sorry, I can't help with that yet.
Here's what I found on the web
Similarly, for turn water heater on I get web search results
To be frank, I cannot get it to respond for other apps as well, for example Airbnb or Emberlight. It always returns web search results. Maybe it has something to do with location? Same thing on the simulator, all responses are "Sorry, this action is not available on simulation", tried both real (Greek) and US location

Your Google account
https://myaccount.google.com/preferences?pli=1#localization is based on a
Greek locale?
On Wed, Jul 26, 2017 at 3:46 PM, Lefteris Chatzipetrou <
<EMAIL_ADDRESS>wrote:

turn office light on :
Sorry, I can't help with that yet.
Here's what I found on the web
Similarly, for turn water heater on I get web search results
To be frank, I cannot get it to respond for other apps as well, for
example Airbnb or Emberlight. It always returns web search results. Maybe
it has something to do with location? Same thing on the simulator, all
responses are "Sorry, this action is not available on simulation", tried
both real (Greek) and US location
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/actions-on-google/actionssdk-smart-home-nodejs/issues/20#issuecomment-318204714,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADI58zU6jCDzuse-S6IMKH-D-I1_y3tmks5sR8HAgaJpZM4Oe6cU
.

The account that owns the action project and the google home device was in English (US). For some reason it started working today and I was able to implement the Action!
Thanks for the guidance !

Closing. We'll update the docs to clarify the invocation.


Add a drag control to adjust map width

Closes #79

Current coverage is 38.35% (diff: 100%)

Merging #81 into master will not change coverage

@@             master        #81   diff @@
==========================================
  Files             8          8
  Lines            73         73
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits             28         28
  Misses           45         45
  Partials          0          0

Powered by Codecov. Last update 9b660fa...2c00d5e


irmin: optimise V1.Hash.encode/decode

Do not allocate intermediary strings to encode and decode V1 hashes.

Codecov Report

Merging #2028 (9e1ec1c) into main (93e7af1) will decrease coverage by 0.04%.
 Consider uploading reports for the commit 585956c to get more accurate results

@@            Coverage Diff             @@
##             main    #2028      +/-   ##
==========================================
- Coverage   64.53%   64.49%   -0.05%
==========================================
  Files         129      129
  Lines       15561    15557       -4
==========================================
- Hits        10042    10033       -9
- Misses       5519     5524       +5

Impacted Files
Coverage Δ

src/irmin/hash.ml
68.96% <62.50%> (-0.74%)
:arrow_down:

src/irmin-fs/unix/irmin_fs_unix.ml
64.51% <0.00%> (-3.23%)
:arrow_down:

src/irmin-test/store.ml
94.82% <0.00%> (-0.06%)
:arrow_down:

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


WIP: add import logging functionality

This adds a new client option to enable logging of all import requests. It gob
encodes the index, path, shard, and request body to a file for all requests. The
index and shard are needed so that the code replaying the requests can send them
to a cluster of a different size and still figure out which nodes a request
needs to go to.
I just realized that we're currently writing out every request to every node,
but when we read back in, we're sending each request we read in to every node
that should receive it. This is a bit of a problem if replication is > 1. I'll think about how best to address that, but this is the basic idea.

I still believe the best approach to recording requests is doing that externally, but we can add "hooks" to the library which call user code on some event, like a request is about to happen. The user would be responsible for dealing with the e.g., request data it receives. They can save it to a file or post it to somewhere else. That would allow us to write a utility to handle recording/replaying logic without needing to update the library.

unfortunately, due to the design of our API, we need information which isn't included in the request parameters, but only in the payload. A proxy cannot easily decode the payload because (a) it needs access to the proto definitions which is kind of annoying, and (b)  our import endpoint accepts two different types of protobuf message, and Pilosa only knows how to decode because it can look up the type of the field that's being imported into.
To replay the requests into a different cluster, we need to know the index and shard for the request so we can look up which node(s) it will actually be sent to.
So basically, we could do this stuff from a proxy, but it'd be pretty annoying, and we'd need to write a separate replay program that duplicated a bunch of code which is already in go-pilosa.
Also, the point of this is for users to be able to record their import workloads so that they can send them to us and we can recreate them and reproduce bugs or profile things. I'd much rather tell someone to enable a client option than to start another service and configure it as a proxy between their import and Pilosa.

We would have the same number of proxies as the number of Pilosa nodes. So e.g., the client would post some data to node A (depending on the shard), which would be intercepted by proxy A, saved and forwarded to real Pilosa node A. Neither Pilosa nodes, nor the client library would have to know there is a proxy in the middle. User code doesn't have to be modified. Also this is client-library agnostic, so we won't have to update other client libraries. Also that would help saving requests for everything, not just imports.The replay program would just receive a list of (URL, header, request data) and would post that to Pilosa.
Anyway, since we don't want to go with the the proxy approach, I think at the least we should make it customizable in the library. Since we don't know what environment the client code runs (e.g., it could very well be a serverless function) the user should be able to choose where and how to save/post the request data.
A possible way of defining hooks could be:

function onHttpRequest(url string, headers []Header, data []byte) {
    // save/post the url, data, etc...
}

client, _ := pilosa.NewClient(..., OptEventHandler("http-request", onHttpRequest))

We could supply predefined HTTP event handlers in a separate package, something like:
client, _ := pilosa.NewClient(..., OptEventHandler("http-request", events.DefaultHttpRequestHandler))

The replay logic seems to be entirely movable to a separate utility. Currently the library has the HttpRequest function, which can be used to post the replay data. It doesn't allow to choose a specific host, but it can be made to do so (one client per node + manual server address) but we can also add a similar function which makes the request to the specified host.

OK, I've made the import logger take an io.Writer instead of creating a file, so that should make it pretty flexible.
I don't want to plug in at the HTTP level, because then the cluster we're replaying into would need to be the same size and have the same config as the one we're recording. Recording the requests at that level doesn't give us enough info to know where those requests need to be sent in a different cluster with (potentially) a different number of nodes, or different replication setting.
The replay logic can't easily be moved to a separate utility because it needs to be able to use fragmentNodes.

@yuce I've unexported or marked as experimental all the new API in this PR

@jaffee Thanks! Is the PR good to review?

yep sorry—removed WIP


This template is not available for ap-northeast-3 (Osaka)

Bug report
Describe the bug
This template is not available for ap-northeast-3 (Osaka).
(Amplify is not supported in ap-northeast-3.)
And my guess, v0.2.16 too. (due to Cognito user pools)
To Reproduce
See screenshots, please.
Expected behavior
Screenshots

All parameters are defaults.

System information

OS: Windows Server 2019 (on EC2)
Browser: Chrome 108.0.5359.125

Additional context

Thanks, I was aware of that issue.
I am considering deployment options without Studio (it runs on Amplify Hosting) or run Studio at other regions.


How to add Certificate pfx to Docker Image?

I want to add an certificate to my Docker Image which authenticates with Azure Keyvault to get some secret values. I imported the certificate using DockerFile into the LocalMachine/My but my dotnet MVC application is not able to access it. It shows a Keyset does not exist error. The problem is probably of permissions as the IIS runs with some other Service Account which might not have access to the Private Machine Key.
Is there a way to add the Certificate to the Docker Image?

Hey @abhishek-raj - since this issue has been open for a while, I just wanted to check if this was still an issue for you before taking a look in to it?

I was able to solve it by giving access to the certificate private key. I used the script from here:
https://stackoverflow.com/questions/40046916/how-to-grant-permission-to-user-on-certificate-private-key-using-powershell
Copying the scipt here just in case:
param(
    [string]$userName,
    [string]$permission,
    [string]$certStoreLocation,
    [string]$certThumbprint
);
# check if certificate is already installed
$certificateInstalled = Get-ChildItem cert:$certStoreLocation | Where thumbprint -eq $certThumbprint

# download & install only if certificate is not already installed on machine
if ($certificateInstalled -eq $null)
{
    $message="Certificate with thumbprint:"+$certThumbprint+" does not exist at "+$certStoreLocation
    Write-Host $message -ForegroundColor Red
    exit 1;
}else
{
    try
    {
        $rule = new-object security.accesscontrol.filesystemaccessrule $userName, $permission, allow
        $root = "c:\programdata\microsoft\crypto\rsa\machinekeys"
        $l = ls Cert:$certStoreLocation
        $l = $l |? {$_.thumbprint -like $certThumbprint}
        $l |%{
            $keyname = $_.privatekey.cspkeycontainerinfo.uniquekeycontainername
            $p = [io.path]::combine($root, $keyname)
            if ([io.file]::exists($p))
            {
                $acl = get-acl -path $p
                $acl.addaccessrule($rule)
                echo $p
                set-acl $p $acl
            }
        }
    }
    catch
    {
        Write-Host "Caught an exception:" -ForegroundColor Red
        Write-Host "$($_.Exception)" -ForegroundColor Red
        exit 1;
    }
}

exit $LASTEXITCODE

I ran the script with user name: 'IIS APPPOOL\DefaultAppPool'
changeperm.ps1 -userName 'IIS APPPOOL\DefaultAppPool' -permission read -certStoreLocation \LocalMachine\My -certThumbprint 1fb7603985a8a11d3e85abee194697e9784a253

Basically the name of the Service Account which runs the IIS in the default docker image is 'IIS APPPOOL\DefaultAppPool' which needs to have access to the certificate.

Thanks for the information @abhishek-raj! I'm glad you were able to get it figured out! :)


ArchitectureHooks are not transparent

Binary Ninja Version: 1.1.1228-dev, e7118f14
Platform: Windows 10 (10.0)
Currently ArchitectureHooks are visible when checking the arch of a Function/BinaryView/etc.  Apparently the arch hook shouldn’t be visible to anything but itself and the core so things like highlights should be made with the base arch handle, and this is causing a lot of the API's which take an architecture to not function correctly.
>>> type(current_function.arch)
<class 'binja-obfu.obfu_hook.ObfuArchHook'>
>>> type(current_function.arch.base_arch)
<class 'binaryninja.architecture.CoreArchitecture'>

Should be resolved in 1.1.1494-dev.


Drag and Drop using Tablet Touch devices

Hi,
I have tried for touch device as mention in documentation drag & drop for the Mobile.but it's seem not working.I m not sure any configuration i m missing or any other additional configuration i have to configure in my application.
i google but didn't find any solution.
some of link i found related to touch drag drop but those also not working in touch screen drag drop.
here i asked on stackoverflow
And also tested in browser toggle device mode

i want angular tree node drag and drop through touch devices.
Is there any possiblity there related to drag and drop in touch devices or currently not supported.

Try the ATC Slack group for support issues.
That said, I can confirm that ATC works on touch devices if you have a polyfill installed per the documentation. We're using mobile-drag-drop.

@KeithGillette using as per documentation but it's not working...please see above example.


HBASe-26082 Mark LocalHBaseCluster as IA.Private

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 27s
Docker mode activated.

Ping @busbey

Thanks @nyl3532016 and @pankaj72981 .
Let's wait for one more day to see if there are any other concerns.


test: add NetworkMode setting to MTE

Fixes #5031
Blockers

[ ] #5033
[ ] #5038

yes Jenkins, the test all pass, but we haven't added any tests that use this yet.
Well, it might be possible to go ahead with this without waiting on networking's CoreRegistry removal by switching between just LISTEN_SERVER (the current default) and NONE (single-player)... maybe it doesn't get in to trouble until we try to use DEDICATED_SERVER.
Well, it needs some tests written in any case.


The doc should mention that the $SHELL env variable needs to be exported for bash

I just faced this minor issue today.
Using Cygwin, I had the $SHELL variable automatically defined but NOT exported (using the export command).
In that situation, pew isn't able to detect that I'm using bash, and hence launch a simple sh shell without loading my .bashrc:
https://github.com/berdario/pew/blob/master/pew/pew.py#L169
Adding export SHELL to my .bashrc solved the problem.

Thanks ! Nice explanations.
Still, I think the README could be even more specific about the need to export this $SHELL variable.


Have CustomRedirectResult use IAuthorizationParametersMessageStore

IdentityServer4 is feature complete. All new feature work is happening in our new organization. This means we can only accept bug fix PRs.
What issue does this PR address?
Fixes #4963
Does this PR introduce a breaking change?
Yes
Please check if the PR fulfills these requirements

[ ] The commit follows our guidelines
[ ] Unit Tests for the changes have been added (for bug fixes / features)

Other information:
Copied code to have same behavior as LoginPageResult and ConsentPageResult

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

Hmm, yea, I guess the bot closed this before we could look. Do you still have the branch?

Yup: #5071


UPDATE FROM ORIGIN

Currently this repo do not accept any Pull Requests. Sorry.
I am trying to make it configurable and extendable.


Fix histogram exception

Purpose:

Fix the bug mentioned in #2463
Add two tests to catch regression
Add autoformat.sh for Shared project

Thanks @Xerxes004, this looks great! 🚀


ImageJ Filter Tubeness Plugin

First version of the auto generated ImageJ Filter Tubeness Plugin

Note that this PR is downstream of the currently open imagej-ui PR, which is the current iteration of the ImageJ pipeline. This PR will show changes to the entire pipeline (not just the plugin files) until the imagej-ui PR has been merged into PolusAI:dev.

I am only requesting that you make two structural changes I asked for in #217

Place the plugin into an appropriate category folder
Resolve/communicate the reasons why this PR has changes to the plugin generation pipeline.

Plugin has been placed into folder and I have resolved the PR showing changes to the pipeline files by pulling the changes from PolusAI/polus-plugins:dev.


Error: 500 CT 241 already running, v3.0.1-rc5

Abstract
I faced an Error Error: 500 CT 241 already running when I create Proxmox LXC with version v3.0.1-rc5
After terraform apply, I got this error but Proxmox LXC is working properly.
So, I guess health check system is something wrong.

It's really inconvenient. I'm really grad if it's fixed
Checked

[x] v3.0.1-rc4 does not have this issue
[x] If start=false, I can not see this issue. I can do terraform apply and terraform destroy

Full Error Log
module.proxmox_lxc.proxmox_lxc.basic: Creating...
module.proxmox_lxc.proxmox_lxc.basic: Still creating... [10s elapsed]

│ Error: 500 CT 241 already running
│
│   with module.proxmox_lxc.proxmox_lxc.basic,
│   on ../../modules/proxmox_lxc/main.tf line 1, in resource "proxmox_lxc" "basic":
│    1: resource "proxmox_lxc" "basic" {

Environment
Here's my environment
If you need more info, please tell me.

Ubuntu: 24.10
Terraform: v1.9.8
tfenv: 3.0.0
Proxmox: 8.3.0
proxmox provider: 3.0.1-rc5

My Proxmox LXC Module
resource "proxmox_lxc" "basic" {
  features {
      nesting = true
  }

  vmid = var.vmid
  target_node  = var.target_node
  hostname     = var.hostname
  ssh_public_keys = var.public_key

  ostemplate   = "local:vztmpl/${var.template}.tar.zst"

  cores  = var.cores
  memory = var.memory

  unprivileged = true
  start       = true

  // Terraform will crash without rootfs defined
  rootfs {
    storage = var.storage
    size    = "${var.disk_size}G"
  }

    network {
        name = "eth0"
        bridge = var.bridge
        ip = "${var.ip_address}/24"
        gw = var.gateway
    }
}

I could not see this issue on 3.0.1-rc6. So, I close this issue

Sorry I did not update provider version from rc4 and I found same issue on rc6.
So, I reopen this issue

I also face the same issue! on rc6.

if comment out these in my container config then no error.
start = true
onboot = true
but i want to start the container so thats when the error occurs.

onboot = true, suppose to turn on the container but it did not during boot.

resource "proxmox_lxc" "wireguard" {
    target_node  = "pve"
    hostname = "wireguard"
    onboot = true
   # start = true
    cores = 1
    memory = "1024"
    swap = "2048"
    nameserver = "<IP_ADDRESS>"
    network {
        name = "eth0"
        bridge = "vmbr0"
        ip = "<IP_ADDRESS>/32"
        gw = "<IP_ADDRESS>"
        firewall = true
    }
    ostemplate = "local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst"
    password = var.linux_password
    rootfs {
        storage = "local-lvm"
        size = "8G"
    }
    unprivileged = true
    ssh_public_keys = var.sshkey
}

Checked

[x] v3.0.1-rc4 does not have this issue
[x] If start=false, I can not see this issue. I can do terraform apply and terraform destroy
[x] v3.0.1-rc6 has same issue

As I mentioned here, this issue is appeared on rc5 and rc6.
So, I'm using rc4 to avoid this issue

Also experiencing the same issue with v3.0.1-rc6 - switching to rc4 fixes the issue for now as mentioned.

This is happening to me, too. Tracked down the change to this PR https://github.com/Telmate/terraform-provider-proxmox/pull/1093
Thoughts @Sonlis? This change is in rc5 and rc6, which matches the observations above.

I unfortunately do not have access to a proxmox instance for the next 2 weeks, so I cannot reproduce it. I checked the code though and came up with an idea of why it would fail. I think this block of code is useless: https://github.com/Telmate/terraform-provider-proxmox/blob/7e667094714d35f66c8d45ef08400895e1ad6804/proxmox/resource_lxc.go#L592, starting or not the LXC is already contained in the config when the LXC is created: https://github.com/Telmate/terraform-provider-proxmox/blob/7e667094714d35f66c8d45ef08400895e1ad6804/proxmox/resource_lxc.go#L660.
Now, I created the PR because the LXC would not start even when setting the boolean, and when running it locally it worked and actually started the LXC. I did not test extensively and actually didn't see that the start boolean is already set in the config. We shouldn't have to try again to start the LXC once it's created, which would explain the error of trying to start an already started LXC.
Again, I cannot affirm 100% that this is the problem until I have access to my proxmox again.


1.0.0

Release 1.0.0, including policy support

Is live at<EMAIL_ADDRESS>


Add usage docs in-crate

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)


fix: write functions entrypoint to predefined path

What kind of change does this PR introduce?
Bug fix https://github.com/supabase/cli/issues/2562
What is the new behavior?
CWD may be volume mounted as a read-only.
Additional context
Add any other context or screenshots.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>7
Details

4 of 4 (100.0%)  changed or added relevant lines in 2 files are covered.
5 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.03%) to 59.718%

Files with Coverage Reduction
New Missed Lines
%

internal/gen/keys/keys.go
5
12.9%

Totals

Change from base Build<PHONE_NUMBER>0:
-0.03%

Covered Lines:
6194

Relevant Lines:
10372

💛  - Coveralls


Traffic Router HTTP Redirection to HTTPS

Discussions as started on adding HTTPS to Traffic Router and we have a specific use case for Video Delivery service over HTTPS. This could be either enhancement or question.
The need would be to use HTTP and HTTPS as a request method to Traffic Router, but the redirection would always end up being an HTTPS location. Since this is for video delivery, we want to keep the Request Routing to minimal delay, keeping resource usage on the Client/Server low.
Seems like this should be the default behavior.
Somewhat related to #1457 although this is Edge server requirement, which this here is kind of a similar ask except done at the Traffic Router.

@smalenfant  do you have any plan when it will be ready?

I don't think Steve is working on this feature. I think its probably Dave Neuman who is writing the code. I talked to Jeff last week and he let me know an ETA of end of July.

We are definitely aiming to have a "beta" version of it ready by the end of July.  We are planning on including this functionality in the 1.7 release which is scheduled for end of August.  If you are interested in helping us test this functionality let me know and I can make sure to get you a pre-release version when it is ready.

Does v1.7 == v2.0?

Yeah, sorry, I forgot about the bump to 2.0 for the release after 1.6.


Error

16:24:17 [EROR] (cssharp:Core) Error invoking callback
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Runtime.InteropServices.Marshal.ReadInt64(IntPtr ptr, Int32 ofs)
at CounterStrikeSharp.API.Core.CBaseEntity.get_CBodyComponent() in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Objects.g.cs:line 4369
at CounterStrikeSharp.API.Core.CBaseEntity.get_AbsOrigin() in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/Model/CBaseEntity.cs:line 23
at CS2Multi1v1.Models.Arena.OnPlayerSpawn(CCSPlayerController playerController)
at CS2Multi1v1.CS2Multi1v1.OnPlayerSpawn(EventPlayerSpawn event, GameEventInfo info)
at InvokeStub_GameEventHandler`1.Invoke(Object, Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
--- End of inner exception stack trace ---
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at CounterStrikeSharp.API.Core.FunctionReference.<>c__DisplayClass3_0.<.ctor>b__0(fxScriptContext* context) in /home/runner/work/CounterStrikeSharp/CounterStrikeSharp/managed/CounterStrikeSharp.API/Core/FunctionReference.cs:line 82

Please provide exact recreation steps if this is still an issue.


deprecation warning on export_stl

Following the documentation, I have the following code:
from build123d import *

length, width, thickness = 80.0, 60.0, 10.0
center_hole_dia = 22.0

with BuildPart() as ex2:
    Box(length, width, thickness)
    Cylinder(radius=center_hole_dia / 2, height=thickness, mode=Mode.SUBTRACT)

ex2.part.export_stl("file.stl")

Which results in a deprecation warning:

The method "export_stl" in class "Shape" is deprecated
Use the export_stl function instead

But the code as written above seems to be what is recommended in the note at the beginning of "Introductory examples" section of the documentation:

If you want to save your resulting object as an STL from builder mode, you can use e.g. ex15.part.export_stl("file.stl").

Confused as to how I'm supposed to be exporting.

If I read the warning correctly, you should use the function export_stl(x, ...) instead of y.export_stl(...)
Searched through the Discord channel:

source: https://discord.com/channels/964330484911972403/1074840524181217452/1226331307294851122

OK, I'm still lost.
The following code works with no warnings:
from build123d import *

length, width, thickness = 80.0, 60.0, 10.0
center_hole_dia = 22.0

with BuildPart() as ex2:
    Box(length, width, thickness)
    Cylinder(radius=center_hole_dia / 2, height=thickness, mode=Mode.SUBTRACT)

export_step(ex2.part, "block.step")

The following code produces an stl file but results in a deprecation warning:
from build123d import *

length, width, thickness = 80.0, 60.0, 10.0
center_hole_dia = 22.0

with BuildPart() as ex2:
    Box(length, width, thickness)
    Cylinder(radius=center_hole_dia / 2, height=thickness, mode=Mode.SUBTRACT)

ex2.part.export_stl("file.stl")

The following code  does not work, and results in an error 'export_stl' is not defined:
from build123d import *

length, width, thickness = 80.0, 60.0, 10.0
center_hole_dia = 22.0

with BuildPart() as ex2:
    Box(length, width, thickness)
    Cylinder(radius=center_hole_dia / 2, height=thickness, mode=Mode.SUBTRACT)

export_stl(ex2.part, "black.stl" )

Sorry, I think I figured it out. Installing on Windows with the following results in the above problems:

pip install build123d

However, installing with the following now works as expected:

python -m pip install git+https://github.com/gumyr/build123d

The first command must have installed a version that had the deprecation warning but did not have the new function implemented?

Thanks for pointing this out.  I've changed the docs to use the export_stl function.  Unfortunately I forgot to update the __init__.py file when I made this change and a release was created before I realized it so this is a little messed up.  The next release (which should happen before long) should clean things up along with this docs change.

Thank you, looking forward to the next release!


skidded

you fr wasted 5 hours of skidding this.

dont forget give star for update click the watch


Cursor loss of focus when typing/edit JSON in Manage Environment menu

Expected Behavior
Cursor should not lose focus while typing
Actual Behavior
Cursor loss of focus when typing
Reproduction Steps

Go to menu Manage Environment
Create new environment
In text box, type a character
Wait for one second
Cursor will loss focus

Is there an existing issue for this?

[X] I have searched the issue tracker for this problem.

Additional Information
Version: Insomnia 2022.6.0
Build date: 9/27/2022
OS: Darwin x64 19.6.0
Electron: 19.0.3
Node: 16.14.2
V8: <IP_ADDRESS>-electron.0
Architecture: x64
Insomnia Version
2022.6.0
What operating system are you using?
macOS
Operating System Version
macOS Catalina 10.15.7
Installation method
Insomnia
Last Known Working Insomnia version
No response

Hi @erlangparasu thanks for reporting this, this is a known issue, has been reported already in #5234.
We'll be fixing this as soon as possible in one of our upcoming beta releases.


Moved API to separate file

@christianalfoni
What do you think about this? The result can be seen here: https://github.com/christianalfoni/formsy-react/tree/new-readme
I think it will make README more clear.

I think it looks awesome! I have also opened up the WIKI for a more "practical approach to Formsy", as the README is very technical, and should be really.
If you have ideas to adding examples of building for elements and/or validation strategies, please feel free to go crazy :-)
Thanks, this is an awesome pull!


Update s3-utils, sns-utils, ... to 0.1.193 in scala-steward-dependencies

About this PR
📦 Updates

uk.gov.nationalarchives:s3-utils
uk.gov.nationalarchives:sns-utils
uk.gov.nationalarchives:stepfunction-utils

from 0.1.191 to 0.1.193
📜 GitHub Release Notes - Version Diff
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "uk.gov.nationalarchives" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "uk.gov.nationalarchives" }
}]

labels: library-update, early-semver-minor, semver-spec-patch, commit-count:1

Superseded by #1242.


Revamped Reactive Expressions notebook

Reactive_Expressions.ipynb previously had three sections depending on these concepts:

Getting started: rx() and .value
Reactive Functions: Parameterized, Parameter, bind
Reactive Expressions: .rx, Parameterized.param.X.rx(), .value, rx(), .rx.*

The first section depends only on two constructs: rx() and .rx.value, which seems nice and clean as an introduction. After that, though, immediately it dived into Parameters and into param.bind, both of which I consider optional for understanding and using reactive expressions. Instead, I've reorganized it into this outline to introduce concepts only as they are needed, to minimize how much people need to learn before they can start writing code:

Getting started: rx() and .rx.value (complete basics, i.e. "what it is" and "that it works")
Illustrating "how it works", so that it doesn't just seem magic
Illustrating "that it doesn't always work", i.e., the finite list of limitations
How to address the limitations in practice (the .rx namespace)
Using Parameters with reactive expressions
Bind and how/why to use it

Ideally there would also be a section 7 with a technical deep dive, but that's not something I propose to write now, and too much for this single nb.
Hopefully this is an improvement!
We don't necessarily need to address anything about widgets (ipy or Panel) in this release, but we should also keep in mind where those would be introduced, and maybe call them out more than I have so far.
We also may want to split the bind stuff into its own page alongside this one; it makes sense on its own and is a simpler story than reactive expressions in some ways, so it would probably be good to make it consumable without having to read about reactive expressions. But I've kept in here for now just because I don't have time to move it out, which I think someone should do but maybe isn't urgent.

I fixed linting and added a note in the reactive guide about the API being experimental, since Jim added that note too in the release notes. And it makes sense to me marking it experimental for a little while.

looking it over now

Since https://github.com/holoviz/param/pull/859 has been merged and fixed the ipython module being automatically imported when Param is imported, import param.ipython must be removed and the explanation about param.ipython must be adapted a little.

Answering to @jbednar in the main thread about:

I am not sure what you mean about the notebook being required, though; it's required only for the display to update dynamically, not the value.

I meant that the pipeline of a reactive expression isn't executed automatically when the value of the root is updated. It is only executed if you require the value on the resulting expression, or if a framework has registered a reactive display hook, like Param does automatically on import when in an IPython context.

The way I would say that is that whenever the value is accessed, it is always up to date, which seems like all you can ask of a reactive framework. It's lazy, yes, but reactive. So in e.g. a REST API, computed values will always be up to date when requested, without needing any special support in the event loop. All this should be explained, but I don't think it's misleading to show how it behaves in ipython since that's how it would behave for anything querying its value.

The way I would say that is that whenever the value is accessed, it is always up to date, which seems like all you can ask of a reactive framework. It's lazy, yes, but reactive.

I don't how other reactive frameworks operate, maybe that's how they all work, but trying to be in the position of a newcomer it seems to me that the combination of "lazy" + "reactive" is a bit strange. Why is it lazy by default, is it a design decision or is it the only way it can be?
We should indeed explain the way it works. Taking your REST example, if I build a reactive expression that returns the number of users in a group (group being the input), the result is going to depend on when the query is made. I.e. If I set group.rx.value and the result is computed only later when I access nusers.rx.value or immediately, the number returned can be different.
Generally as a developer I would like to know when the code is executed and how as that's useful for debugging purposes. Questions like the following ones will be asked sooner than later. When is a reactive expression lazy and when is it non-lazy (e.g. watching the reactive expression with .rx.watch(cb) makes it non-lazy)? Are all intermediate values cached? When a reactive expression has multiple inputs and only one of them is updated, is the whole graph re-executed or just the part that is affected by the updated input?

While it could be improved, the guide is already in a pretty good shape! Thanks all for contributing.


Fix list_cameras error in windows

wait, why did it add the other files too, just apply the edits of list_cameras

@thevickypedia i reverted the changes i made locally and left only the fix for the list_cameras.

@Diamantino-Op Good catch on the buggy condition. Can you please update the release notes in the existing format.

@thevickypedia do i have to create a new version like 7.5.7 or update the 7.5.6?

@thevickypedia updated


Android tweaks & unlocking notes.

This brings through all changes from the original android branch that contains tweaks specific to Android. Not a lot of things that should have affected the iOS side (all has been checked my end and it's working as expected).
This also includes the changes that unlock Notes for all paid plans — if a plan type of free is encountered it'll prompt to upgrade (as before).

Sorry, my bad.


Ensure /sbin/tini exists

When using mysql image in lando, it fails hard (but unfortunately mostly silently)
lando logs:
mariadb_1  | lando 05:09:06.08 INFO  ==> Lando handing off to: /sbin/tini -- /lagoon/entrypoints.bash mysqld
mariadb_1  | /lando-entrypoint.sh: line 86: /sbin/tini: No such file or directory

which causes the mysqld server to never start.
This appears to be caused because some shared files expect tini in /sbin/ but in this image it is by default at /usr/bin/

Nice pickup @NickDickinsonWilde - no idea why I did this one differently to all the other non-alpine ones - we try to avoid copying the alpine binary into the non-alpine images - so we use krallin/tini instead
I've created a branch with a co-authored commit with the fix the way we do it in other images - happy for you to update your PR to match if you want full credit, or I can close this and merge the co-authored one?
https://github.com/uselagoon/lagoon-images/compare/main...testing/mysql_tini

co-authored is totally fine for sure. Definitely makes sense to not copy the binary - I had also considered doing the same thing I did to locally fix (ln -s /usr/bin/tini /sbin/tini) but found examples of copying that binary in other images. Example: https://github.com/uselagoon/lagoon-images/blob/main/images/nginx/Dockerfile (I don't know if any instances of that want changing as well?)


Patch the imagestream by removing habana 1.11.0

Patch the imagestream by removing habana 1.11.0
Description
Related-to: #297
How Has This Been Tested?

Merge criteria:

Try:
kustomize build manifests/base/
check the manifests of the habana imagestream

[x] The commits are squashed in a cohesive manner and have meaningful messages.
[x] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[x] The developer has manually tested the changes and verified that the changes work

Merging to get this in RHODS 2.4


Add volume control to media_player platform

/?cmd=setAudioVolume&level=[0-100]&stream=[1-10]&password=[pass]

I tried taking a crack at implementing this, but I had to resort to using self.controller.sendCommand. That seems like a bit of a smell, I guess it would be cleaner to add a function to the python-fullykiosk module first and calling that from this component?

This one seems ✅ too 😀


Rendering issue in @open-wc/scoped-elements v3 for the Lion project

Expected behavior
Components in Lion project render correctly after updating @open-wc/scoped-elements from v2 to v3.
Actual Behavior
During updating @open-wc/scoped-elements from v2 to v3 at the Lion project, we discovered that some of UI components do not render anymore.
Particularly if the lion-listbox element comes first and then the lion-select-rich element comes after it, then lion-select-rich does not render. When debugging it was discovered that lion-select-rich is using the same registry which lion-listbox has set when it was instantiated. The reason of the issue is in the new way @open-wc/scoped-elements@v3 sets the registry for the elements. Here is how it was done in v2 and here is how it is done for v3 . You could notice that shouldCreateRegistry contains more checks and it was reduced just to !this.registry which is not enough for our case.
Note if lion-select-rich comes first and then lion-listbox comes second, everything is rendered correctly.
Additional context
Code demo
I have prepared 2 PRs for providing more context.
The first one is the code from Lion's master with @open-wc/scoped-elements@v2 where the particular test file is focused and polyfill enabled. The tests in this PR do not produce any errors.
The second PR is done on top of the first one with the only difference that @open-wc/scoped-elements is update to v3 and the minimum required code changed to address breaking changes introduced in v3.
To run the tests and see the related errors, one needs to run the steps as follows:

Checkout the branch from the second PR: git chekout bugfix/rich-select-with-polyfill-and-scoped-elements-v3
Remove node_modules just in case: npm run rm-all-node_modules
npm install
Run the test: npx web-test-runner

Then when running the tests here are the errors from the console:
🚧 Browser logs on Firefox:
      TypeError: this._invokerNode.retractRequestToBeDisabled is not a function
        at updated (packages/ui/components/select-rich/src/LionSelectRich.js:195:27)
        at _$AE (node_modules/@lit/reactive-element/src/reactive-element.ts:1376:9)
        at performUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1341:11)
        at scheduleUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1259:16)
        at _$Ej (node_modules/@lit/reactive-element/src/reactive-element.ts:1231:24)
        at async*requestUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1206:34)
        at requestUpdate (packages/ui/components/core/src/DisabledMixin.js:67:13)
        at requestUpdate (packages/ui/components/form-core/src/utils/SyncUpdatableMixin.js:102:13)
        at requestUpdate (packages/ui/components/form-core/src/InteractionStateMixin.js:42:13)
        at requestUpdate (packages/ui/components/overlays/src/OverlayMixin.js:66:13)
        at requestUpdate (packages/ui/components/select-rich/src/LionSelectRich.js:170:11)
        at u (node_modules/@lit/reactive-element/src/reactive-element.ts:944:9)
        at d (node_modules/@lit/reactive-element/src/reactive-element.ts:927:9)
        at s (node_modules/lit-element/src/lit-element.ts:115:0)
        at ScopedElementsHost (node_modules/@open-wc/scoped-elements/html-element.js:21:3)
        at ScopedElementsHost (node_modules/@open-wc/scoped-elements/lit-element.js:22:3)
        at SlotMixin (packages/ui/components/core/src/SlotMixin.js:39:7)
        at packages/ui/components/core/src/DisabledMixin.js:25:7
        at packages/ui/components/form-core/src/utils/SyncUpdatableMixin.js:30:7
        at packages/ui/components/form-core/src/registration/FormRegisteringMixin.js:24:7
        at FormControlMixin (packages/ui/components/form-core/src/FormControlMixin.js:157:7)
        at packages/ui/components/form-core/src/validate/ValidateMixin.js:135:7
        at InteractionStateMixin (packages/ui/components/form-core/src/InteractionStateMixin.js:59:7)
        at FocusMixin (packages/ui/components/form-core/src/FocusMixin.js:36:7)
        at packages/ui/components/form-core/src/registration/FormRegistrarMixin.js:38:7
        at ChoiceGroupMixin (packages/ui/components/form-core/src/choice-group/ChoiceGroupMixin.js:127:7)
        at ListboxMixin (packages/ui/components/listbox/src/ListboxMixin.js:234:7)
        at LionListbox (packages/ui/components/listbox/src/LionListbox.js:11:8)
        at OverlayMixin (packages/ui/components/overlays/src/OverlayMixin.js:28:7)
        at LionSelectRich (packages/ui/components/select-rich/src/LionSelectRich.js:110:5)
        at J (node_modules/@webcomponents/scoped-custom-element-registry/src/scoped-custom-element-registry.js:385:6)
        at c (node_modules/@webcomponents/scoped-custom-element-registry/src/scoped-custom-element-registry.js:236:10)
        at v (node_modules/lit-html/src/lit-html.ts:1122:51)
        at $ (node_modules/lit-html/src/lit-html.ts:1528:32)
        at _$AI (node_modules/lit-html/src/lit-html.ts:1375:11)
        at Z (node_modules/lit-html/src/lit-html.ts:2169:7)
        at update (node_modules/lit-element/src/lit-element.ts:165:23)
        at performUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1327:13)
        at scheduleUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1259:16)
        at _$Ej (node_modules/@lit/reactive-element/src/reactive-element.ts:1231:24)
        at async*requestUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1206:34)
        at u (node_modules/@lit/reactive-element/src/reactive-element.ts:944:9)
        at d (node_modules/@lit/reactive-element/src/reactive-element.ts:927:9)
        at s (node_modules/lit-element/src/lit-element.ts:115:0)
        at UmbrellaForm (packages/ui/components/form-integrations/test/helpers/umbrella-form.js:30:8)
        at J (node_modules/@webcomponents/scoped-custom-element-registry/src/scoped-custom-element-registry.js:385:6)
        at c (node_modules/@webcomponents/scoped-custom-element-registry/src/scoped-custom-element-registry.js:236:10)
        at v (node_modules/lit-html/src/lit-html.ts:1122:51)
        at $ (node_modules/lit-html/src/lit-html.ts:1528:32)
        at _$AI (node_modules/lit-html/src/lit-html.ts:1375:11)
        at Z (node_modules/lit-html/src/lit-html.ts:2169:7)
        at litFixtureSync (node_modules/@open-wc/testing-helpers/src/litFixture.js:32:9)
        at litFixture (node_modules/@open-wc/testing-helpers/src/litFixture.js:63:28)
        at fixture (node_modules/@open-wc/testing-helpers/src/fixture-no-side-effect.js:62:12)
        at packages/ui/components/form-integrations/test/dialog-integrations.test.js:21:48
 🚧 Browser logs on Chromium:
      TypeError: this._invokerNode.retractRequestToBeDisabled is not a function
        at LionSelectRich.updated (packages/ui/components/select-rich/src/LionSelectRich.js:195:27)
        at LionSelectRich._$AE (node_modules/@lit/reactive-element/src/reactive-element.ts:1376:9)
        at LionSelectRich.performUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1341:11)
        at LionSelectRich.scheduleUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1259:16)
        at LionSelectRich._$Ej (node_modules/@lit/reactive-element/src/reactive-element.ts:1231:24)
        at async LionSelectRich._$Ej (node_modules/@lit/reactive-element/src/reactive-element.ts:1220:4)
        at async LionSelectRich._alignInvokerWidth (packages/ui/components/select-rich/src/LionSelectRich.js:429:5)
 🚧 Browser logs on Webkit:
      TypeError: this._invokerNode.retractRequestToBeDisabled is not a function. (In 'this._invokerNode.retractRequestToBeDisabled()', 'this._invokerNode.retractRequestToBeDisabled' is undefined)
        at updated (packages/ui/components/select-rich/src/LionSelectRich.js:195:53)
        at _$AE (node_modules/@lit/reactive-element/src/reactive-element.ts:1376:17)
        at performUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1341:23)
        at node_modules/@lit/reactive-element/src/reactive-element.ts:1231:24
      Error: [OverlayController] Could not find a render target, since the provided contentNode is not connected to the DOM. Make sure that it is connected, e.g. by doing "document.body.appendChild(contentNode)", before passing it on.
        at rearrangeNodes (packages/ui/components/overlays/src/OverlayController.js:38:20)
        at __initContentDomStructure (packages/ui/components/overlays/src/OverlayController.js:596:19)
        at _init (packages/ui/components/overlays/src/OverlayController.js:509:37)
        at updateConfig (packages/ui/components/overlays/src/OverlayController.js:470:15)
        at OverlayController (packages/ui/components/overlays/src/OverlayController.js:197:22)
        at _defineOverlay (packages/ui/components/overlays/src/OverlayMixin.js:83:35)
        at _setupOverlayCtrl (packages/ui/components/overlays/src/OverlayMixin.js:222:46)
        at _setupOverlayCtrl (packages/ui/components/input-datepicker/src/LionInputDatepicker.js:311:28)
        at firstUpdated (packages/ui/components/overlays/src/OverlayMixin.js:171:29)
        at firstUpdated (packages/ui/components/input-datepicker/src/LionInputDatepicker.js:197:23)
        at _$AE (node_modules/@lit/reactive-element/src/reactive-element.ts:1374:24)
        at performUpdate (node_modules/@lit/reactive-element/src/reactive-element.ts:1341:23)
        at packages/ui/components/localize/src/LocalizeMixin.js:71:26

Proposed fix
As the fix the third PR was created. It is based on the PR 2. The only difference is the patch was added for @open-wc/scoped-elements/html-element.js. The patch is about bringing shouldCreateRegistry check from v2 to v3.
What do you think about bringing that extra check back?

It's not entirely clear to me why it works with the additional check. this.registry is a getter that returns (this.constructor).__registry
So for the following check:
const shouldCreateRegistry =
        !this.registry ||
        // @ts-ignore
        (this.registry === this.constructor.__registry &&
          !Object.prototype.hasOwnProperty.call(this.constructor, '__registry'));

why do we need this?
        (this.registry === this.constructor.__registry &&
          !Object.prototype.hasOwnProperty.call(this.constructor, '__registry'));

Are you overwriting the registry in Lion by any chance?

I have just checked the code and have not found any case where the registry is being overridden

why do we need this?

Somehow whatever lion-listbox sets as its own registry, is available via prototype inheritance to lion-select-rich.
Without that extra check this.registry is not undefined when lion-select-rich comes after lion-listbox.  In this case this.registry is the same object for both lion-select-rich and lion-listbox elements and this condition is true:
[$('lion-select-rich').registry === $('lion-listbox').registry

When lion-select-rich comes first and lion-listbox comes second, the above condition is false.

Sure, let me try

fixed in #2767


serious performance regression after CallFrame changes

The CallFrame API change, by eagerly computing the position of each frame in Thread.CallStack, causes expensive line-number table operations to be performed eagerly in many cases where it used to be deferred until Frame.Position() was requested, which is typically only when reporting errors, which are rare. As a result, in one application, 90% of CPU cycles are consumed by calls to Funcode.Position.
We need to compute the CallFrame Position lazily (or defer this cost in some other way). Unfortunately this will require another breaking API change.

False alarm: this was not a regression. Funcode.Position was always really slow. We should lazily decode the LNT, retain it, then binary (not linear) search it.


Files being removed from disk when removed from ruTorrent

Support guidelines

[X] I've read the support guidelines

I've found a bug and checked that ...

[X] ... the documentation does not mention anything about my problem
[X] ... there are no open or closed issues that are related to my problem

Description
I have commented out the lines in .rtorrent.rc, like so:
# Erase data when torrent deleted (no need erasedata plugin on ruTorrent)
# method.set_key = event.download.erased,delete_erased,"execute=rm,-rf,--,$d.data_path="

And yet when I remove a torrent from the UI, the files are also deleted from disk. I don't seem to be able to stop this from happening.
Expected behaviour
Not that. Never that. I can't even fathom why that would be the default.
Actual behaviour
Files are deleted.
Steps to reproduce
Delete a torrent.
Docker info
Same as in my other ticket.

Version

Docker compose version (type docker-compose --version):
System info (type uname -a):

Docker compose
Same as in my other ticket.

Container logs
N/A
Additional info
No response

And yes, I restarted after making that change.

Not only cannot I even being to understand how this could possibly be the default, I can't understand how anybody finds this usable with this in place.
Do people just keep torrents alive in ruTorrent forever? Stopped but still present?
The main issue is I can't seem to disable this. But seriously, what on earth?

This was driving me crazy! So I found the solution.
I had to remove that file from both /tpls/.rtorrent.rc and /data/rtorrent/.rtorrent.rc
Only then did files stop disappearing.
Seems bizarre that this is the default, but at least I can work around it now.


Windows installer - after installation

The installation went seamlessly (I've noticed the non *-test .gpr's are put into a subdirectory of GNAT CE 2020, I assume it is the right way of doing things). Now, what's the next step? I've opened in GPS the project opengl-text-test.gpr from a copy of the git repo. The builder tells me: "cannot find -lglfw". Should I install glfw separately? And where (in order to have GNAT finding the right .o or .dll) ?
TIA

The installer does include GLFW.
The test are not designed to be built against an installed OpenGLAda. They use the relative OpenGLAda sources instead. This means you need to set up the scenario variables properly as described in the README (Windowing_System to windows in this case).
You might want to check out the examples instead. They link against the installed OpenGLAda.

Thanks - actually my mistake was to use the "-develop" and not the "-examples" stuff. Impressive! Did you consider putting some screenshots on the web site?
Last noob question (again for the Windows flavour): are the .exe fully standalone? Zero DLL?

Did you consider putting some screenshots on the web site?

I never did because there's nothing distinctive about them; i.e. they would look exactly the same in any other language with OpenGL binding. However, when I think about it, it still shows what's possible with OpenGLAda.

are the .exe fully standalone?

If you use text rendering, you will need the freetype.dll file that's installed into the GNAT lib folder by the installer. GLFW is linked into the exe as static library. freetype is not linked as static library because there's no official source for a static MinGW freetype library and I don't know enough details to create it myself. If you are able to compile a static freetype library, you can link that and have an exe that doesn't depend on anything that is not available on a Windows system.


Add reachabilityWithURL

Use the hostname or IP address from the URL to create a reachability object
Fixes #72

+1


[formrecognizer] Check what signature type fields should return in content

Look to the selection mark pattern for reference.

Signature type fields will not return content for now.


About Us

This is a copy of the "About Us" i made for your project, to be added to your application and please review and merge if you like.

ok i would make the additions now


Bso Channels

🚀 Feature Proposal
I would like to see more love to BSO and currently i feel its slightly neglected.
Channels:
Add either a gambling channel for BSO
or some remove bots being sent from there.
Along with removing this popping up : extremely frustrating when reading and talking in chat.

Bso chat is very active and i feel this only hinders the chat over benefiting it.

While I'm all for this suggestion, the notion that bso is neglected isn't reflected in the number of updates... There's been like 5 to 1. In addition, it has been made clear by magna that OSB is the main bot and bso is for fun and the priority is always osb

This isn't something I want to do currently, I am keeping on eye on things though and will make changes if I feel its needed.


Implement template variable expansion for Resources.

This commit builds upon #149 and makes resource keys available for expansion
inside a TaskRun.
Resources are available under the namespace 'inputs.resources', and each
resource is namespaced under it's own name.
This commit adds to the PipelineResourceInterface, requiring types to support a
Replacements method. This supplies keys to be replaced.
Ref https://github.com/knative/build-pipeline/issues/64

also one more comment from me, the taskrun controller as it stands now in this PR:

makes a call to addInputResource which loops on all the input resources to add them to the build
makes a call to applyReplacements which also loops on all the input resources to update them

was wondering if we can combine these two operations in one loop?
we can also make this optimization in a later PR if you want to merge this in.

we can also make this optimization in a later PR if you want to merge this in.

Ah I thought I addressed this somewhere else. I prefer keeping the two loops separate (for readability and testability), but we could fetch the list of resources once and use that in the loops rather than going through the Lister each time.
I'm not sure how big of a speedup that would be though, given that the Lister is cached.
WDYT?

I had one totally minor comment about error messages but otherwise I think it's looking good!

Fixed it!

im just gonna remove the hold for you cuz i assume that is what you want 😇
/hold cancel


Modify get object (go) to change local filename

Example,
isd_s3.py go -k somekey -lf my_filename

would save the object somekey to myfilename on disk.
@zaihuaji

Two new optional arguments.
--local_directory will still use the basename of the key, but put it in another directory.
--local_filename will change the basename of the key to whatever is wanted. You could also use this if you wanted to change its destination directory, i.e. --local_filename /path/to/new/dir/filename
 --local_filename <local filename>, -lf <local filename>
                        Save to another name than the key
--local_dir <local directory>, -ld <local directory>
                        Save to another directory, rather than current dir


Web version (GreaseMonkey/TamperMonkey script)

After searching for a bit for ways to get MathJax rendering on Slack, I found your project. Love it!
I created a userscript out of your code, which was in fact quite easy to do. You can find it as a Gist. Now I can enjoy nicely typeset math in the web client of Slack!
Thought you might want to incorporate this, maybe.

I'm glad you found it useful, @Caster. And thank you for porting the script to GreaseMonkey. I'm pretty swamped atm, but will add it to the repo eventually. Again, thanks for contributing!


Orient templates

Greatly improves the initial structure generated. Now it almost does not need energy minimization. Also implements a procedure to have better optimization of rings by using fructhmann reingold algorithm for initial coordinates. Fixes small bug form gen_seq.

Hopefully, this is relevant to this pull request.
Running:
polyply gen_coords -p system.top -o P3HT_test.gro -name P3HT

is fine** if using the master branch but gives the following error:
ValueError: Expected input of shape (3,) or (P, 3), got (3, 6).

when using the orient_templates branch. Most likely you guys are aware that the syntax of the command slightly changed so perhaps just adding something about it to the README.md would do.

**Actually, I still get the issue https://github.com/marrink-lab/polyply_1.0/issues/57; perhaps that's not fixed in the current master branch? FYI, I do the following to use the master branch:
git clone git@github.com:marrink-lab/polyply_1.0.git
pip install ./

which prints:
Successfully installed polyply-0.0.1.dev178

(while, for comparison, I first switch to the orient_templates branch and the run pip install ./ to use that branch - which installs as polyply-0.0.1.dev194).

ValueError: Expected input of shape (3,) or (P, 3), got (3, 6).

 The latest commits have fixed this by reverting that change.
#57 was fixed in vermouth and the unfixed again, then fixed again and unfixed again. I think we will fix it here and just be done with it. Sorry about that but because the two packages co-develop this can happen.

 (FTFY ;))

#57 was fixed in vermouth and the unfixed again, then fixed again and unfixed again. I think we will fix it here and just be done with it. Sorry about that but because the two packages co-develop this can happen.

I'm curious why this happens. Are you sure your vermouth version is up to date (i.e. latest master)?

not have unit tests set up. (FTFY ;))

Unit tests are set up, the bug gets caught but I needed to run them in the first place.
Probably this is because I told @ricalessandri not to update his vermouth version because with current master it does not give output because of the new file writer. But then the vermouth he has is probably from before the fix. But then again with integration tests it seems to become unfixed again.

But then again with integration tests it seems to become unfixed again.

Ah, I know now. The integration_test branch is based of an older version of master which does not have the fix of the GRO writer included.
If I have the time today (grant proposal...) I'll open a PR here to make polyply/vermouth write files with the DeferredFileWriter.

@pckroon

And why these angles?<

I couldn't respond directly to that comment for some reason. But generally I found to yield better results to not start from 0 0 0 as angles for the rotation.


Fix for timeout implementation

Coverage remained the same at 72.06% when pulling 671d7d188a277547e349d670283b93b9dfc3a7e9 on make-timeout-configurable into 744088e951fdac1fb697843818189d8071e86099 on master.


Allow giving listener, variable file and model modifier instances to robot.run and TestSuite.run

As briefly discussed on IRC, I have a need to register an instance of a listener object at run-time, programmatically.  I am wrapping Robot in another application, running urwid.  Robot is running in a thread, and I want to update a widget based on Robot's current status.  A listener would be the obvious choice for an interface between the applications.
Currently, most classes related to Listeners and logger proxies assume that the wrapped object is a string and must be imported.  I have overridden some of the core classes to allow instances to be passed in.

Would it be enough that in addition of
from robot import run
run('tests.robot', listener='listener.py')

you could also do
from robot import run
run('tests.robot', listener=Listener())

I know I would have liked the above functionality few times. It shouldn't be too complicated to implement either.

I'm also interested on a feature like this, but my use case is a little bit different. I've sent an email in the users list: "Add listener instance using robot.api".
The idea is to be able to register a listener instance at any point in robot execution. In my use case it would be in the initialization method of robot's dynamic library (that library works as a proxy).

@vkruoso, libraries can register listeners since RF 2.8.5 (#811). Does that work for you?

@pekkaklarck, I'm already using that interface. Let me be a little more clear.
class Proxy(object):
    ROBOT_LISTENER_API_VERSION = 2
    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self

So the Proxy library act as a listener. Great.  So what I have is something like:
(instances, keywords) = Loader().load_libraries()

Now my wish was to register each instance as a listener calling a robot API function (and was also hopping it would check for the ROBOT* attributes). It could be a BuiltIn() method/keyword? register_listener for instance.
It might be interesting to restrict scope for those instances so it receives only events from the suite they have been registered.

I see. Would it be enough is ROBOT_LIBRARY_LISTENER could be a list of listeners? That ought to be pretty easy to implement, but would require listeners to be created in __init__. An API to register listeners at any time would be more flexible and could be used also other code than libraries, but it would need a way to restrict the scope of the listener or/and have a way to unregister a listener. This would also be a new API and thus a bit more work to implement, test and document.
@spikergit1, are you also looking for an API to register listeners at any time or would being able to pass a listener instance to robot.run and TestSuite.run be enough in your use case?

@pekkaklarck being able to pass instances to robot.run and/or TestSuite.run would be enough for me, for now.  I do see a benefit in "an API to register listeners at any time", and honestly having combed through the Listener code I don't think it'd be too hard to do.  I could submit a PR if you're interested.

Personally I have had more needs for passing listener objects to robot.run than for having an API to register them at run time. I don't see a problem having both of these possibilities, though, and ROBOT_LIBRARY_LISTENER could be enhanced to accept a list of listeners as the third option. I consider these separate enhancements that require their own issues and possible PRs, though.
Should we agree that this issue is about passing objects to robot.run and TestSuite.run, and a new issues are submitted about possible other enhancements? If you agree, please submit issues about enhancements you care about. Please also provide PRs for issues you really care about.

I will open a separate issue to support lists on ROBOT_LIBRARY_LISTENER and will try to provide a pull request for it.

Thanks @vkruoso for submitting #1970 about enhancing ROBOT_LIBRARY_LISTENER to support lists. This issue is now officially about being able to pass actual listener instances to robot.run and TestSuite.run.
We are planning to add support for visitors that can modify test suites before execution in RF 2.9 (#1976). We plan to support something like --visitor MyVisitor from the command line, similarly as with listeners, but also want to be able to pass actual visitor instances to robot.run and TestSuite.run. Same helper probably can handle both listeners and visitors so it makes sense to include also this issue in RF 2.9.

hey, we are working on this task. we will push make pull request tomorrow after code review.

i have created pull request. waiting for your comments and suggestions.
https://github.com/robotframework/robotframework/pull/1987

We should also support passing variable files and new pre-run and pre-rebot modifiers (#1976) as instances. Related command line options are handled by the same code in conf/settings.py so it probably makes sense to this issue to cover them all. What do you think @WojtekKowaluk?

No problem, I can add this.

Now that #1993 that @WojtekKowaluk encountered when implementing this feature is fixed, it's possible to look at this issue again. We already dropped this from alpha 2 because we plan to create it tomorrow, but if we get a good PR adding this back is still possible.
Notice that the PR doesn't need to contain fixes to listeners, variable files and modifiers, just concentrating on listeners is enough. Separate PRs and possible separate issues can then be submitted about others.

I have rebased PR on master branch. I think I will leave variable files and modifiers for other PR. I'm waiting for your comments.

PR #1987 implementing the listener part of this issue was merged in 7dd3a9bd9129de1ce8b424a0e586b8d9ccd73c1e and @WojtekKowaluk promised also to continue with variable files and modifiers.

Have you @WojtekKowaluk already looked at variable files and modifiers? If not, I can easily take care about them today or tomorrow. We try to get alpha 3 ready this week and would like to get this one finished before that.

hello, please go ahead.

Modifiers done. Variable files turned out to be a bit more complicated. Need to think can they handled cleanly without too much work.

I decided to drop variable files from the scope of this issue for the following reasons:

Supporting them would have required more changes to variable file import logic. Nothing major but not exactly trivial either.
Nobody has actually asked that functionality.
It would probably be a better idea to allow passing variables as a dict like {'var1': 'value', 'var2': 2} anyway.

A new issue can be submitted if someone wants to make it easier to pass variables to the programmatic APIs. We can then separately decide what is the best way to implement it.
This issue now covers only listeners and model modifiers which are both done.