Loss of adsl connection

Hello,
If I have an ADSL disconnection, Pyze no longer updates the information as soon as the ADSL has returned. The actions don't work too. I have to do a Hassio reboot for this to work.
Would there be a possible refresh solution through automation?
Thank you

Hi @JeedHome44 ,
Can you update to v3.0.0 and see if that is still an issue?

Hi,
My lan is Now with OpenMPTCPRouteur.
So, I have always connection.
I will try this 3.0 as soon as possible. 😉

Hi,
what does this version 3.0 bring?

Mainly, it is configured through the UI
Secondly, all the results are full sensors now and there is no need to use attributes

I've never needed to use attributes personally.  I send all the information by HTTP request to Jeedom.  and it is Jeedom who activates each action by a script on Home Assistant 😄

Can we close this issue then?

I didn't update because I don't understand what all these changes are all about.  it allows to continue to work even if the connection is lost?

Your original issue doesn't have enough information to make an investigation.
If you wish to investigate it more, then you need to upgrade and try to replicate your issue.
If you do not wish to investigate it more, then just close this issue.

I think I managed to replicate this... it occurs if the internet is not available during startup.
We should try to add a retry if it fails during startup.

Hello,
that would be great if you can add a new attempt if the first one fails!  😉

If anyone is wanting to look at this, the idea is to raise ConfigEntryNotReady during the initialisation (inside __init__.py > async_setup_entry)
The issue will be to distinguish "internet errors" from "failed credentials" so might need some changes to PyZE library

Hello,
Is it possible to create a service that allows you to restart synchronization manually?
That would allow it to be automatically restarted in an automation as soon as my Zoe leaves or arrives from the house for example.
This would temporarily resolve this problem.
Thank you

can we use hassio.addon_restart with an automation?
if yes? how please?

@JeedHome44 release v3.0.2 has updated the startup routine, and implements ConfigEntryNotReady so HA should automatically re-attempt if the failure occurs at startup ?
If not, then please provide some logs/traces/anything that helps us understand what the issue is.

Oh thank you!
I will test that 😉

I downloaded the renault file.
I restarted Hassio but I cannot find "Renault" in the list of integrations.
Why?

Is there a minimum version of Home assistant to have?

Tested again v118 - haven't tested against earlier versions

I have Home Assistant Core  0.105.3 and HassOS 5.2
I have to update to 0.118.5?

I do not understand.
I updated the Core. I was able to install the integration afterwards. It displayed the information well at the beginning and then it put this ...
Why?

I hadn't disabled the sensor using PyZE and I think it was conflicting. It is working now.
But how do I adapt my scripts to activate the calendar, the preconditioning ... with this integration?
I had not yet updated 3.0
'1589190413353':
  alias: zoe40_ac_start_now_19
  sequence:
  - data:
      temperature: 19
    entity_id: sensor.zoe40
    service: renaultze.ac_start
'1589190456408':
  alias: zoe40_ac_cancel
  sequence:
  - entity_id: sensor.zoe40
    service: renaultze.ac_cancel
'1589190499937':
  alias: zoe40_charge_start
  sequence:
  - entity_id: sensor.zoe40
    service: renaultze.charge_start
'1589190593760':
  alias: zoe40_calendrier_on
  sequence:
  - data:
      charge_mode: schedule_mode
    entity_id: sensor.zoe40
    service: renaultze.charge_set_mode
'1589206784082':
  alias: zoe40_calendrier_off
  sequence:
  - data:
      charge_mode: always_charging
    entity_id: sensor.zoe40
    service: renaultze.charge_set_mode
'1589232410704':
  alias: zoe40_ac_start_now_22
  sequence:
  - data:
      temperature: 22
    entity_id: sensor.zoe40
    service: renaultze.ac_start
'1589476771733':
  alias: zoe40_calendrier_refresh
  sequence:
  - data:
      schedules:
        activated: true
        friday:
          duration: 240
          startTime: T02:00Z
        id: 1
        monday:
          duration: 240
          startTime: T02:00Z
        saturday:
          duration: 240
          startTime: T02:00Z
        sunday:
          duration: 240
          startTime: T02:00Z
        thursday:
          duration: 240
          startTime: T02:00Z
        tuesday:
          duration: 240
          startTime: T02:00Z
        wednesday:
          duration: 240
          startTime: T02:00Z
    entity_id: sensor.zoe40
    service: renaultze.charge_set_schedules

For the calendar, is it possible to translate "SCHEDULE_MODE" by "Activated", "Activé" in french, and "ALWAYS_CHARGING" by "Deactivated", "Désactivé" in french?

Je viens de tester en changeant les scripts de cette façon, mais ça ne marche pas...
'1589190413353':
  alias: zoe40_ac_start_now_19
  sequence:
  - data:
      temperature: 19
      vin: vf1XXXXXXXXX
    service: renault.ac_start
'1589190456408':
  alias: zoe40_ac_cancel
  sequence:
  - data:
      vin: vf1XXXXXXXXX
    service: renault.ac_cancel
'1589190499937':
  alias: zoe40_charge_start
  sequence:
  - data:
      vin: vf1XXXXXXXXX
    service: renault.charge_start
'1589190593760':
  alias: zoe40_calendrier_on
  sequence:
  - data:
      charge_mode: schedule_mode
      vin: vf1XXXXXXXXX
    service: renault.charge_set_mode
'1589206784082':
  alias: zoe40_calendrier_off
  sequence:
  - data:
      charge_mode: always_charging
      vin: vf1XXXXXXXXX
    service: renault.charge_set_mode
'1589232410704':
  alias: zoe40_ac_start_now_22
  sequence:
  - data:
      temperature: 22
      vin: vf1XXXXXXXXX
    service: renault.ac_start
'1589476771733':
  alias: zoe40_calendrier_refresh
  sequence:
  - data:
      schedules:
        activated: true
        friday:
          duration: 240
          startTime: T02:00Z
        id: 1
        monday:
          duration: 240
          startTime: T02:00Z
        saturday:
          duration: 240
          startTime: T02:00Z
        sunday:
          duration: 240
          startTime: T02:00Z
        thursday:
          duration: 240
          startTime: T02:00Z
        tuesday:
          duration: 240
          startTime: T02:00Z
        wednesday:
          duration: 240
          startTime: T02:00Z
      vin: vf1XXXXXXXXX
    service: renault.charge_set_schedules

Can you send traces of the errors ?
Without traces, it's impossible to help you.

how to get the logs? I have never done. thank you

I don't know the specifics of HassOS, but generally on HA-Core you have to add this to YAML:
logger:
  default: error
  logs:
    renault_api: debug
    custom_components.renault: debug

when I run the script to put the calendar on always_charging for example, I have this message:
Échec d'appel du service "script/1589190593760". value is not allowed for dictionary value @ data['charge_mode']
if I want to start the preconditioning:
Échec d'appel du service "script/1589190413353". Unable to find vehicle with VIN: vfXXXXXXXXX

2020-12-06 13:43:20 ERROR (MainThread) [homeassistant.components.script.1589232410704] zoe40_ac_start_now_22: Error executing script. Unexpected error for call_service at pos 1: Unable to find vehicle with VIN: vfxxxxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vfxxxxxxxx
2020-12-06 13:43:20 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547843255168] Unable to find vehicle with VIN: vfxxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 215, in service_handler
await script_entity.async_turn_on(
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 320, in async_turn_on
await coro
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1010, in async_run
await asyncio.shield(run.async_run())
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 245, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vfxxxxxxx
2020-12-06 13:43:54 ERROR (MainThread) [homeassistant.components.script.1589232410704] zoe40_ac_start_now_22: Error executing script. Unexpected error for call_service at pos 1: Unable to find vehicle with VIN: vf1xxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vfxxxxxxx
2020-12-06 13:43:54 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547843255168] Unable to find vehicle with VIN: vfxxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 215, in service_handler
await script_entity.async_turn_on(
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 320, in async_turn_on
await coro
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1010, in async_run
await asyncio.shield(run.async_run())
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 245, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vfxxxxxxx
2020-12-06 13:43:59 ERROR (MainThread) [homeassistant.components.script.1589190413353] zoe40_ac_start_now_19: Error executing script. Unexpected error for call_service at pos 1: Unable to find vehicle with VIN: vfxxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vf1xxxxxxx
2020-12-06 13:43:59 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547843255168] Unable to find vehicle with VIN: vf1xxxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 215, in service_handler
await script_entity.async_turn_on(
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 320, in async_turn_on
await coro
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1010, in async_run
await asyncio.shield(run.async_run())
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 245, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vfxxxxxxxx
2020-12-06 13:44:18 DEBUG (MainThread) [renault_api.kamereon] Received Kamereon response 200 on https://api-wired-prod-1-euw1.wrd-aws.com/commerce/v1/accounts/c0221f43-5622-4fac-ba1d-7b3051afc1a7/kamereon/kca/car-adapter/v2/cars/VFxxxxxxxx/cockpit?country=FR: {"data":{"type":"Car","id":"VF1xxxxxxxx","attributes":{"totalMileage":47390.07}}}
2020-12-06 13:44:18 DEBUG (MainThread) [custom_components.renault.renault_vehicle] Finished fetching VFxxxxxxxxx cockpit data in 1.278 seconds
2020-12-06 13:44:18 DEBUG (MainThread) [renault_api.kamereon] Received Kamereon response 200 on https://api-wired-prod-1-euw1.wrd-aws.com/commerce/v1/accounts/xxxxxxxxxx/kamereon/kca/car-adapter/v1/cars/VFxxxxxxxxx/charge-mode?country=FR: {"data":{"type":"Car","id":"VFxxxxxxxxxxxx","attributes":{"chargeMode":"schedule_mode"}}}
2020-12-06 13:44:18 DEBUG (MainThread) [custom_components.renault.renault_vehicle] Finished fetching VFxxxxxxxx charge_mode data in 1.585 seconds
2020-12-06 13:44:19 DEBUG (MainThread) [renault_api.kamereon] Received Kamereon response 200 on https://api-wired-prod-1-euw1.wrd-aws.com/commerce/v1/accounts/xxxxxxxx/kamereon/kca/car-adapter/v2/cars/VF1xxxxxxxxx/battery-status?country=FR: {"data":{"type":"Car","id":"VFxxxxxxxxx","attributes":{"timestamp":"2020-12-06T11:42:50+01:00","batteryLevel":88,"batteryTemperature":19,"batteryAutonomy":231,"batteryCapacity":0,"batteryAvailableEnergy":0,"plugStatus":0,"chargingStatus":-1.0}}}
2020-12-06 13:44:19 DEBUG (MainThread) [custom_components.renault.renault_vehicle] Finished fetching VFxxxxxxxx battery data in 2.295 seconds
2020-12-06 13:44:19 DEBUG (MainThread) [renault_api.kamereon] Received Kamereon response 200 on https://api-wired-prod-1-euw1.wrd-aws.com/commerce/v1/accounts/xxxxxxxx/kamereon/kca/car-adapter/v1/cars/VF1xxxxxxx/hvac-status?country=FR: {"data":{"type":"Car","id":"VFxxxxxxx","attributes":{"externalTemperature":12.0,"hvacStatus":"off"}}}
2020-12-06 13:44:19 DEBUG (MainThread) [custom_components.renault.renault_vehicle] Finished fetching VFxxxxxx hvac_status data in 2.351 seconds

2020-12-06 13:42:59 ERROR (MainThread) [homeassistant.components.script.1589190593760] zoe40_calendrier_on: Error executing script. Invalid data for call_service at pos 1: value is not allowed for dictionary value @ data['charge_mode']
2020-12-06 13:42:59 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547843255168] value is not allowed for dictionary value @ data['charge_mode']
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 215, in service_handler
await script_entity.async_turn_on(
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 320, in async_turn_on
await coro
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1010, in async_run
await asyncio.shield(run.async_run())
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 245, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1405, in async_call
processed_data = handler.schema(service_data)
File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict
return base_validate(path, iteritems(data), out)
File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 432, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: value is not allowed for dictionary value @ data['charge_mode']

2020-12-06 13:41:45 ERROR (MainThread) [homeassistant.components.script.1589206784082] zoe40_calendrier_off: Error executing script. Invalid data for call_service at pos 1: value is not allowed for dictionary value @ data['charge_mode']
2020-12-06 13:41:45 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547843255168] value is not allowed for dictionary value @ data['charge_mode']
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 135, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 215, in service_handler
await script_entity.async_turn_on(
File "/usr/src/homeassistant/homeassistant/components/script/__init__.py", line 320, in async_turn_on
await coro
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1010, in async_run
await asyncio.shield(run.async_run())
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 245, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1405, in async_call
processed_data = handler.schema(service_data)
File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 272, in __call__
return self._compiled([], data)
File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 594, in validate_dict
return base_validate(path, iteritems(data), out)
File "/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py", line 432, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: value is not allowed for dictionary value @ data['charge_mode']

2020-12-06 13:43:59 ERROR (MainThread) [homeassistant.components.script.1589190413353] zoe40_ac_start_now_19: Error executing script. Unexpected error for call_service at pos 1: Unable to find vehicle with VIN: vfxxxxxxx
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 253, in _async_step
await getattr(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 460, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1451, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1486, in _execute_service
await handler.job.target(service_call)
File "/config/custom_components/renault/services.py", line 77, in ac_start
vehicle = get_vehicle(service_call_data)
File "/config/custom_components/renault/services.py", line 149, in get_vehicle
raise ValueError(f"Unable to find vehicle with VIN: {vin}")
ValueError: Unable to find vehicle with VIN: vfxxxxxxxx

I would point out that everything worked fine with version 2 for actions ;)

Try capital letters on the VIN.
I will check the rest tomorrow

thanks for this idea! It works! So I put the VIN in uppercase on all scripts. They all worked except charge_mode
So I tried to capitalize the words SCHEDULE_MODE and ALWAYS_CHARGING as well and it works. So everything must be capitalized. So you have to change that in the guide ;)

on the other hand, the function to deactivate the calendar works well. it passes it on ALWAYS_CHARGING. But I try with Charge mode or Calendar to turn it on and it doesn't seem to work. Before, there was only the calendar that worked to activate it but it does not seem to work ...

i opened an new issue.

I think, i have the problem now.

Do you have traces? Still can't help without traces...

in fact, I changed the weather this morning as mentioned in the other topic. instead of 5 minutes, I put 2.
I put back on 5 minutes but it does not seem to want to come back.
I only modified this line 14 renault_vehicule.py
DEFAULT_SCAN_INTERVAL = timedelta(minutes=2)
and i have this in the log:
Error fetching VF1XXXXXXXXXX location data: Error communicating with API: ('err.func.wired.overloaded', 'You have reached your quota limit')

how long do i have to wait for the renault server to accept my connection again?

It shouldn't take too long - maybe 10-30 minutes

ok, so it is not possible to have a status feedback of less than 5 minutes. or maybe some other way but I don't know. maybe that was the problem I had in 2.0
ok, i'll notice the other ticket

I just got all the information :)


Move-Audit-2

Audit of latest move changes after 7273897c9db5889c5638390072eff52bc81a8615

@0o-de-lally Ready for review but we might do changes for my questions/comments above.

No further changes planned, ready for review/merge.


Support for Multichain address check

Pull Request Guidelines
These are recommendations for pull requests.
They are strictly guidelines to help manage expectations.
PR preparation

[X] Run make all from the root of the repository to run formatting, linting and tests.

Adds support for Multichain address check.

LGTM


Link public dashboards to alerts

Rationale
To promote creating/using dashboards and dogfooding (public dashboards) we can simplify the access to existing dashboards by linking them in the opsgenie alerts.
TODO

[x] provide a field in the alert so teams can add a link to grafana dashboards
[x] document/ communicate

Communicated on Slack: https://gigantic.slack.com/archives/C0E0V16DC/p1671184509983909
@TheoBrigitte, do you want more communication? I let you see, then close this issue if it's all good for you.

Good enough for me :+1:


The ForceDeQueue method in the ThreadsafeInLineHistogram class can result in deadlock

The ForceDeQueue method in the ThreadsafeInLineHistogram class can result in deadlock, with the background thread (potentially?) waiting on itself forever. Will already found the solution when we were talking earlier today; adding "if (_observations.Count > 0) break;" to the line after the Thread.Sleep, so this is really just a note to remind him or someone to make the change. Also it would probably be better to change Thread.Sleep(1) to something ~ 200 - 1000.

i think the threadsleep should be short, maybe we do 1 until coerced again

https://github.com/HydrologicEngineeringCenter/fda-model/blob/6fb7e5626c2bdec588b1897252b0f278c63b4818/Statistics/Histograms/ThreadsafeInlineHistogram.cs#L287
this is the reference line - add the solution in the op to the line below thread.sleep


Feature/GitHub actions

Codecov Report

Merging #2 (02270ca) into master (88f7521) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #2   +/-   ##
=======================================
  Coverage   40.00%   40.00%
=======================================
  Files          16       16
  Lines         405      405
=======================================
  Hits          162      162
  Misses        233      233
  Partials       10       10

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 88f7521...02270ca. Read the comment docs.


added qsbr stress test

Added stress test for QSBR and G/C mechanism as a different patch, with some other improvements.
Resolved.


Update protobuf generation to be consistent with other tooling

As a follow up to #1257 and #1264 which have moved the openapi and deepcopy generators to building from a tools module, this PR does the same for the protobuf generators.
This drops the dependency on k8s.io/code-generator from the main module and ensures consistency among how we run the tools from that module.
The protobuf generator cannot work outside of the GOPATH at the moment but I am working on an upstream fix for that, though this is low priority at the moment as we only use protobuf on our legacy APIs.

/lgtm


DBRP mapping command Fail

Steps to reproduce:
List the minimal actions needed to reproduce the behavior.

Having an InfluxDB Cloud account (free tier)
Setup a bucket and write data into it
Try to do DBRP mapping with following command:

curl  --request POST 'https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/dbrps'
--header 'Authorization:  Token {my token}'
--header 'Content-type: application/json'
--data '{
"bucketID": "{my bucketID}",
"database": "{some database name}",
"default": true,
"orgID": "{my orgID}",
"retention_policy": "30days"
}'
Expected behavior:
A DBRP should be setup for the bucket I give
Actual behavior:
400 Bad request error happens with following message
{
"code": "invalid",
"message": "invalid ID"
}
Environment info:

InfluxDB version: InfluxDB Cloud

Config:
Token I use an all permission token

Let's also make the "Invalid ID" error messages disambiguate which ID(s) are invalid.  (See re-used errors here: https://github.com/influxdata/influxdb/blob/master/dbrp/http_server_dbrp_test.go#L185).

@Hualin-AUG -- you might also consider trying the updated CLI which now has DBRP commands which should make this a bit easier to manage the mappings themselves.  https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/v1/dbrp/
We'll improve the error messages here in parallel.

+1 to more specific error messages. In that same direction, I suspect the actual error here is/was that the Cloud implementation expectsbucket_id and organization_id instead of the Swagger-specified bucketID and orgID (it's fixed in OSS but I'm not sure if it's gone through to Cloud yet).
I don't think either impl is validating that requests contain all the expected keys. When there's a mismatch, the system ends up with an empty string for one (or both) IDs, and the empty string fails validation. The most specific validation error would be something like Missing required key: "xxx"

@Hualin-AUG if the new CLI tools don't work for you, could you also try using bucket_id instead of bucketID and organization_id instead of orgID in your request payload?

@Hualin-AUG if the new CLI tools don't work for you, could you also try using bucket_id instead of bucketID and organization_id instead of orgID in your request payload?

That absolutely solves the problem.

@Hualin-AUG thanks for the bug-report. Really helpful as we iron out some usability gotchas here!


Clean HTML output

Is your feature request related to a problem? Please describe 🙏
The current HTML output of InstantSearch.js contains whitespaces, which makes it messy.

Describe the solution you'd like 🤔
By trimming the templates once compiled by Hogan, we could clean the HTML output by removing the whitespaces.
 return hogan
     .compile(template, compileOptions)
     .render({
       ...data,
       helpers: transformedHelpers,
     })
+    .trim();

Describe alternatives you've considered ✨
We could also use Handlebars' whitespace control features but I didn't get this to work.
Additional context
If we go for this in InstantSearch 3, we'd need to apply this change after having merged the InstantSearch.css specs because it'd also clean up some snapshots.
 <div
   dangerouslySetInnerHTML={
     Object {
-      "__html": "  $",
+      "__html": "$",
     }
   }
 />
 <div
   dangerouslySetInnerHTML={
     Object {
-      "__html": "  ",
+      "__html": "",
      }
   }
 />

Closed in #3176 for InstantSearch.js 3.


Make.defs: Make the lock file in the same location as library file

Signed-off-by: Xiang Xiao<EMAIL_ADDRESS>

Fix the issue note:
https://github.com/apache/incubator-nuttx-apps/pull/80

Need to resolve conflicts

Need to resolve conflicts

Don't need this patch anymore since you select one step archieve approach:
https://github.com/apache/incubator-nuttx-apps/pull/83

We need apply this patch again since this patch is revert:
https://github.com/apache/incubator-nuttx-apps/pull/86


Test for possible int64 overflow in groupby (!)

re: #850

Interesting... How'd you hit on this case? I think your fix broke the
Jenkins build...
On Mar 3, 2012, at 6:40 PM, Wes McKinney
<EMAIL_ADDRESS>wrote:

Reply to this email directly or view it on GitHub:
https://github.com/pydata/pandas/issues/851


gRPC streams are closed :  [DEBUG] grpc: cleaning up connection to host

Hi,
I'm trying to use fabio as a proxy for gRPC, but there seems to be an issue with the rpc calls that return a stream. In this scenario the stream is not closed by either client or server but by fabio after some data is received or some idle time:
2020/05/14 14:34:49 [DEBUG] grpc: cleaning up connection to ......

This seems to happen only starting with version 1.15.12 (1.5.11 seem to work).
The reason maybe because i don't see in the log file the route add even if in the UI are there:

route add rtp-uat-position-service /business.RTPoseService grpcs://rtpuatap002:7772 opts "tlsskipverify=true"
route add rtp-uat-position-service /business.RTPoseService grpc://rtpuatap001:7771

What you are seeing is from:
			if !hasTarget(target, table) {
				log.Println("[DEBUG] grpc: cleaning up connection to", target.URL.Host)
				cs.Close()
				delete(p.connections, target)
			}

afaik, it is normal to see the cleanups happening.

Yes, i saw the code, but the gRPC stream it's still open when this happens...so i guess the connection doesn t have a target... it s strange that the same config works for an older version(streams are not closed by fabio)


Pledges

Initial whiteboarding session with @xdamman (from April):

What is a Pledge?
A Pledge can be thought of as a pending Order for a Collective that does not yet exist. A user or organization can create a pledge of some monetary amount for an open source project or a meetup, and that Pledge will show on the user or org collective page. Once the Pledge is created, we can encourage the user / org to reach out to the project or meetup and point to that Pledge. Once the collective is created for that project, the pledge can be claimed and fulfilled by the pledge creator.
A Pledge could be created either through the Open Collective frontend or the API, i.e. Back Your Stack.
Needs:

user flow for creating a pledge

i.e. when a user searches for a project, there could be a button on the search page that leads to a pledge form if they don't see the project.
the form should record:

the url of the project, i.e. GitHub repo url or meetup website url
the amount + an optional interval (subscription) for the pledge
an optional description of why they want to pledge or how they use that project

copy for the sample message for pledge creators to send to open source projects or meetups after the pledge is created
design for the Pledge card to display on the Collective page for the pledge creators
flow for claiming a Pledge after the pledged collective has been created

Hi @HipsterBrown I'll try to describe it in my own words (and hopefully in a simple way) to make sure I get it this feature.

A pledge is an action meant to incentivize the creation of new open collectives by allowing individuals and organizations to offer financial contributions to groups that are not yet on Open Collective, and then have these groups accept them by becoming open collectives.

This has a few starting points, for example, when a user or organization searches on the OC website for a collective of an OS project or a meet-up (why just these two?) and it is not found.

Another starting point is when on Back Your Stack and after an analysis, some of the resulting projects in the stack can't receive financial contributions yet (because they are not on Open Collective). Are these the only two starting points?

After both these example cases (either on the OC website or on Back Your Stack), the user is then encouraged to make a pledge (an offer of financial contribution) in favor of the group that was not found.

The pledge is set and created through a form. I'm not sure what happens after this point...

I understand that somehow (during or after the form) the user/org who created the pledge sends the pledge to the recipient and then somehow this group signs up on Open Collective to claim it.
I didn't understand the part about a pledge card showing up on the creators collective page. You mean on their profile page?
Finally, can there be more than one pledge in favor of the same group?

I'm not sure what happens after this point...
We should create an order that gets executed once the collective joins.

I didn't understand the part about a pledge card showing up on the creators collective page. You mean on their profile page?
Yes, their profile.

Finally, can there be more than one pledge in favor of the same group?
Yes, not sure why not.

@cuiki The goal here is to start with some wireframes in the same way you did for self-serve flow. This feature is likely to change as we figure out implementation. So for now, wireframes are enough.

I lost almost all the day because of insurance companies 😒.
Anyway, here is what I have so far. It isn't that much right now because of the hours I lost but you can follow the wireframe prototype. Press SHIFT to reveal the hotspots. So far it just takes you to the form to make a pledge.
— https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/a5c363f8c

Hi everyone,
I made this flow to try and cover all the areas where I things might not be clear about the flow and all its dependencies and touch-points. I have only one big question. According to @HipsterBrown, we're not asking for a recipient's email. The only info we ask about the recipient is the GH or meetup URL. So the question is... how are we going to validate that the right people are claiming the pledges without asking for a valid email (where we – or the creator of the pledge – points them to the pledge).
Please review and leave your feedback.
— On Moqups: https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66
— Image

This is hard for me to read. My head can't process those diagrams very well, it's too abstract. Much easier for me to actually play with the flow with very basic mock ups. Can you provide something like that?

To answer your question, people will have to prove that they own that particular GitHub or Meetup URL by signing in with their account using oAuth (we should mention that somewhere).
We should also mention that as soon as the collective is claimed, the backer will receive an email to fulfill their pledge (in the first version, we won't automatically charge their credit card).
On that screen: https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/af00ec10d
it's probably better to start with the name and the URL of the collective, then the amount.

I'd also consider adding a section on the home page. Instead of creating a collective, people can also make a pledge to an existing organization (non profit like Wikipedia, the red cross, etc.), a meetup or a GitHub URL and we could surface the most popular pledges. This is a way to join the movement by creating incentives to existing organizations to create an open collective and be transparent with how they manage their donations.
Related:

Had a productive discussion with @xdamman about how to model Pledges:
Pledges are really just pending Orders for Collectives that do not yet exist.
Instead of creating a new model, we can add a status field to the current Order model with options like PENDING, PAID, CANCELLED, and ACTIVE (used for subscriptions). When an Order is created for a Collective that doesn't exist, we will automatically create the Collective with the url provided for the pledged project. Once the new, inactive Collective is created, we can display the pending orders as potential backers and allow more pledges to be made from that page as well.
The inactive Collective will then appear in search, which should reduce the likelihood of duplicate pledged Collectives. We can reuse a lot of the existing donation and order flows, which should save on development time and the learning curve for users.

we should consider the url issue more thoroughly, once we use a url for a collective then it's taken.
Should there be a  flow for telling the maintainer there is a 'pledged collective already'?
Should we append something to pledged collectives' url to avoid this issue?
Moreover, if we do have duplicate pledges, how are we letting the person who makes de pledge know that that url is taken already?
What happens if there is an active collective already (for example someone pledges to vuejs but there's a vue already)? --> I guess is pledges is integrated with search it should surface this.
Other thoughts, we should include a field for the person who makes the pledge to also include an email to let a maintainer know someone pledged to them?

if someone pledges to a collective, and a maintainer of that project creates a collective through the onboarding flow, the url will be taken by a collective that doesn't exist.

At that point, we can surface an option for the project maintainer to claim the pledged collective.

Should we append something to pledged collectives' url to avoid this issue?

I don't think we want to do this because we want to be able to query for collectives by the url if someone else wants to create a pledge with the same url.

we should include a field for the person who makes the pledge to also include an email to let a maintainer know someone pledged to them

I think we want to provide an example message for the pledge creator to send to the project in some way because it will be more meaningful for them to send the message than for us to automatically send an email that could appear as spam. But it's one of those areas where we can experiment a bit.

Ok. I'm getting all this soaked in and updated in the flow. The base of it works with the flow I created but there are still some gaps and questions.

To claim a pledged collective:

a user clicks a button on the collective page to claim it
the user is taken to a form with instructions for claiming the collective

the collective's URL will need to be added to the homepage of the website linked to that collective, i.e. Babel is linked to babeljs.io or curl is linked to https://github.com/curl/curl.

once the collective URL has been added to the linked website, the user can submit the form including the ToS agreement

the server will verify the URL has been added by requesting the linked website and looking for that URL

if successful, the user should be taken back to the collective page and allowed to approve every pledge, which will create the paid or active orders and charge the pledges.

cc/ @xdamman

the collective's URL will need to be added to the homepage of the website linked to that collective, i.e. Babel is linked to babeljs.io or curl is linked to https://github.com/curl/curl.

How does that happen? Add it in their HTML?
The flow is updated and I'm working on the wireframes to complete it with visuals. You can click on the pages and they will take you to the wireframe:
— i.e. https://tafka.d.pr/nSMZRu
— https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

UPDATE:
I've made an update to the search experience and tried to kill tow birds with the same stone and also rework the Discover/Global Search page through the experience to search for a group. The idea is that the Discover page becomes the same space as the global search results UI.
— Flow (Click on hotspots to jump to wireframe. You'll see which views are pending):
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66
— Clickable wireframe prototype (SHIFT to see hotspots):
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/a5c363f8c

I've added a couple of comments.
One thing I realized @HipsterBrown: verifying that the website has added a link to their collective page is not enough to claim the collective because we also need to know who to add as the first admin.
That's why I suggest to send an email to the person who wants to claim the collective with a unique code that can be parsed by our crawler. That way we can recover the UserId that should be added as the first admin.

UPDATE:
— Applied the feedback from @piamancini and @xdamman into the flow chart and the wireframes for Pledges.
— Updated it also per a few adjustments I saw needed for:
— The Pledged collective card so that it feels as a collective, unclaimed, but a collective in the end.
— After a user follows the instructions to claim a collective, we should take them to the new collectives settings page.
— Made two versions of the ‘Make a Pledge’ form:
• The very first pledge for a cause which results in the creation of a Pledged Collective page.
• Every other pledge made for a cause that already has an (unclaimed) Pledged Collective page.

UPDATE:
— Flow map for the whole feature has been updated and hotspots fixed to take you to the proper wireframe within the flow.
— Wireframes have been completed and ready for review.
The one thing pending is the email content that the recipient/pledged collective owner will receive with the instructions on how to claim the collective.
— Flow (Click on hotspots to jump to wireframe. You'll see which views are pending):
https://app.moqups.com/Cuiki/JSZNg8YwFr/view/page/ac2664e66

Hey @HipsterBrown , I did some updates while adapting the form style from pledges to contribution tiers (backer, sponsor, one-time donation). You'll see the changes in InVision. Its not much, mainly I just swapped the form and the sidebar info with other minor adjustments.

This feature has been release in production today. 🚀
Followup work:

remove feature flag environment variable after a week of no issues
integrate pledges flow into Back Your Stack.


Support serialization of all constraints to AIG for constraint solving

See https://github.com/arminbiere/aiger for format details.

Support was added here: https://github.com/mnemonikr/symbolic-pcode/blob/main/crates/sym/src/aiger.rs


Class to disable Line Numbers on specific element

I've been using the Line Numbers plugin attached to my <body> as suggested in the documentation so I don't need to place this class into every single code block on my website, but recently I've needed to use the Command Line plugin and this is the output I have:

An option to disable the line-number plugin on a specific element would be nice.
Thanks

Update: I'm currently using .hide-line-numbers .line-numbers-rows { display: none; } as a workaround, if someone is having this issue. Just place hide-line-numbers in your <pre> element.

We actually added a solution for this issue just a week ago with #2434.
You can disable Line numbers for any code element by adding a no-line-numbers class that is closer than the closest line-numbers class.
The line-numbers or no-line-numbers class will enable or disable the plugin for the whole subtree.
I'll quickly make a PR that updates the documentation.

Note: This feature is currently only available from the download page. If you're getting Prism from npm or any CDN, you'll have to wait until the next version.

That's awesome! I already had the latest version but was unaware of this feature.
Everything works fine now, thank you very much :)


Deploy with existing Verifier addresses

Is your feature request related to a problem? Please describe.
https://github.com/Unirep/Unirep/pull/58#discussion_r913072139
Deploy verifiers every time when deploy a new Unirep.
We can reuse the deployed verifiers if the verifiers are the same
Describe the solution you'd like
Deploy contracts with verifier addresses as inputs
If it is undefined, then deploy verifiers
Describe alternatives you've considered
https://github.com/Unirep/Unirep/pull/58#discussion_r913278761
it would be nice to write a deployer that can retrieve a verifier contract by config. E.g. hash the gst depth, ust depth, epoch tree deptch, etc, then key that to an address of a verifier. Ideally we'd do this with create2 but maybe it's not possible.

Should this one be closed? @vivianjeng

not yet 😢

Closed by #372


Hide sidebar on xs by default

Currently SBAdmin2 page shows sidebar by default when opened on the mobile device. It takes a good share of scarce screen width, and for my use case I would love to hide it on mobile. Is there an easy way to achieve it?
As I understand the solution is to add toggled class to sidebar only when opened on the small screen size.

Ended up modifying sb-admin-2.js with following code:
if ($(window).width() < 768) {
  $(“.sidebar”).addClass(“toggled”)
}

but maybe there is a more “idiomatic” solution?

I'll be doing some thinking about the side nav implementation in the next build!

reverse .sidebar.toggled rules
@media (max-width:768px) {
    .sidebar {
        width: 0 !important;
        overflow: hidden;
    }

    .sidebar.toggled {
        width: auto !important;
    }
}

您好，您的邮件我已经收到，我会尽快回复！  谢谢！

I found a better solution to that. just add this codes in your js file:
if ($(window).width() < 768) {
$(".sidebar").addClass("toggled");
$(".nav-link").addClass("collapsed");
$("#collapseUtilities").removeClass("show");
}

您好，您的邮件我已经收到，我会尽快回复！  谢谢！


Can't share methods across custom actions

Describe the bug
How can I share methods between multiple custom actions created by me?

What are you trying to do? Can you share more context or code?

For example, writing a method that cleans strings in one place and using it in any Custom Actions I create.  Or create some method that does any kind of processing on the data in a single place so that you can share it with any Custom Actions. Thanks.


Blacklist/Whitelist for fix on save for certain paths

Occasionally I edit files in vendor which then triggers the auto save fix which can be frustrating, as it's usually unintentional. You can temporarily disable the fix on save, but this is fiddly as you have to go into the config every time.
It would be great to be able to configure a whitelist/blacklist of paths to enable triggering fix on save:
{
  "vscode-php-cs-fixer.fixOnSavePaths": {
      "vendor/allow-fix-on-save": true,
      "vendor": false
   }
}

Matches are done in order, first match takes priority. Paths are matched from the workspace root path, so for example when a workspace is opened for C:\Sites\my-project and following the above examples, it would match for:

C:\Sites\my-project\vendor\allow-fix-on-save
C:\Sites\my-project\vendor
...etc

Is this an idea you would be open to adding?

It looks like the extension doesn't generally respect if you set this sort of thing in the config itself either.
For example, our config has:
$finder = \PhpCsFixer\Finder::create()
    ->exclude('vendor')
    ->in(__DIR__.'/[redacted]');

But cs fixer runs on every file regardless of this config.

Maybe a setting to set --path-mode to intersection? See https://cs.symfony.com/doc/usage.html - as far as I understand it that should take into account the config finder rather than over-riding it.

Maybe a setting to set --path-mode to intersection? See https://cs.symfony.com/doc/usage.html - as far as I understand it that should take into account the config finder rather than over-riding it.

PR for this here:
https://github.com/fterrag/vscode-php-cs-fixer/pull/18


Closes #96

Included defaultDatabase argument in here. Now everything should work smoothly with this commit in sqlectron-core.

@BornaP before I merge, could you include the new version o sqlectron-core in the package.json?

Sure, no problem!

@maxcnunes Again, new version of electron does not handle all errors properly. This time it does not return error on running query without addressing database or connecting to PostgreSQL without existing default db. Instead of error being rendered it gets stuck in infinite loop. I'll degrade it back again since with 0.36.12 everything works fine.

Weird. I will try to remember testing this situation on upgrading the electron again. Thanks for the pull request @BornaP :clap:


[FEATURE REQUEST] Add Variant::is_object_path()

It looks like g_variant_is_object_path() does not currently have a safe wrapper in glib.
Among several possible approaches, there is consensus to expose it as Variant::is_object_path(&str)->bool so that it can be easily found.

These are the ones I've seen, aggregating similar ones by signatures (the crossed ones already have wrappers):

string -> bool: g_variant_is_object_path, g_variant_is_signature
Variant -> bool: g_variant_is_floating, g_variant_is_normal_form, g_variant_is_container
(Variant, Type) -> bool: g_variant_is_of_type

I'll start tackling the first bucket, which is the one I cared about initially.

2. g_variant_is_floating

This will always return false for us :)

Would it be wanted to have some types for ObjectPath and ObjectPathBuf? They could be similar to VariantTy and VariantType, i.e. do the checking during construction, and then could also implement StaticVariantType of o
And then some would also be needed for dbus signatures because those are a subset of GVariant types.

@slomo good point! Then I guess it doesn't make much sense to wrap that.
I added wrappers for all the other three methods in https://github.com/gtk-rs/gtk-rs-core/pull/632.


[string-theory]disable the tests

We are not interested in running the tests for string-theory, so we just disable these tests now.

 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: Alisayyy-Yang sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Looks good, thanks!


overlapping events on month view

on month view when using events-on-month-view and you have overlapping events, they are not correctly displayed
no-event-overlaps has no effect on this issue
if you have this in the week (or day) view:

you get this in the month view

Hi @DuredhelFinceleb,
That's right there is something to fix, I'm on it.
Thanks for noticing.

Fixed in version 1.38.4.
Please note that if you still encounter the error #57, you probably have to upgrade your Vue version: https://github.com/vuejs/vue-hot-reload-api/issues/73


Consider moving RequireHttpsAttribute to HttpAbstractions (or somewhere else)

We'd like to potentially use this in SignalR to require HTTPS usage from the Hubs.
See https://github.com/aspnet/SignalR/issues/457
cc @davidfowl @Eilon.
If we end up doing this, we'd rather do it in 2.0.0.

cc @Tratcher

The attribute doesn't do anything, it can live anywhere. We moved the AuthorizeAttribute down to the Security repo for the same reason.

The RequireHttpsAttribute implements MVC abstractions like IAuthorizationFilter, it can't be moved without refactoring.

Yeah I don't see how we'd do this in practice - not without a breaking change in MVC. We could move the attribute to HttpAbstractions and make it a marker attribute, and then MVC and SignalR would each have their own filter mechanisms to locate the marker attribute. But that'd be a breaking change, so not in scope for 2.1. And I'm not sure it's worth waiting for 3.0 to do this.
So, closing it.
cc @rynowak @davidfowl FYI


[CLI]

I trying to log a dataframe, however I don't see the table inside UI charts
the dataframe value is
[{"T0":"7979","T1":"7979","GT":"7979"},{"T0":"2894","T1":"3016","GT":"3016"},{"T0":"images/raw/a/20200621180317562533.jpg","T1":"images/raw/a/20200718210324019085.jpg","GT":"annotations/2021_08_04/20200516120303976612.jpg___fuse.png"},{"T0":"37","T1":"3","GT":"3"}]
Please suggest what should I do to visualize this dataframe

Hey @pini-kop , how did you log your Dataframe? I'm assuming you might've a script similar to the one below?
df_data = [{"T0":"7979","T1":"7979","GT":"7979"},
           {"T0":"2894","T1":"3016","GT":"3016"},
           {"T0":"images/raw/a/20200621180317562533.jpg",
            "T1":"images/raw/a/20200718210324019085.jpg",
            "GT":"annotations/2021_08_04/20200516120303976612.jpg___fuse.png"},
           {"T0":"37","T1":"3","GT":"3"}]
data = pd.DataFrame(df_data)

# 1. initialize a run
wandb.init(...)

# 2. log wandb table
run.log({"debug_table": wandb.Table(data=data, columns=data.columns.to_list())})

# 3. finish the run
wandb.run.finish()

The above code snippet provided me this table in the "Table" panel in UI:

Could you please provide a link to your workspace and the code snippet you ran to log the table above? That would help us in debugging this further.

first i'll describe the bigger issue we are facing - we are trying to log multiple dataframes and their descriptions.
they are logged as artifacts and we can access the corresponding json files, but they are not properly displayed in the UI.
I have multiple datasets from different sources that I want to log in their raw form before merging them to a single dataset. each dataset (as pandas datafrmae) has between few dozens to thousand of records. and each record is a triplet of 3 paths (strings) of images, T0, T1 and a mask.
for example:
trainset1 = pd.read_csv(train1.csv)
so trainset1 has roughly 5k rows and 3 columns (T0, T1, mask). and I'm logging both trainset1 dataframe and trainset1.describe() dataframe.
the code snippet:
train_files = [path/to/train1.csv, path/to/train2.csv,...]
val_files = [path/to/val1.csv, path/to/val2.csv,...]
test_files = [path/to/test1.csv, path/to/test2.csv,...]
train_ds = {fnmae: pd.read_csv(fname) for fname in train_files}
val_ds = {...}
test_ds = {...}
from wandb.sdk.interface._dtypes import AnyType
run = wandb.init(...)
for name, df in train_ds.items():
wandb.log({
f'Mapping File/{name}': wandb.Table(dataframe=df, allow_mixed_types=True, dtype=AnyType),
f'Mapping File Description/{name}': wandb.Table(dataframe=df.describe(), allow_mixed_types=True, dtype=AnyType)
})
for name, df in val_ds.items():
...
...
run.finish()
and this is how they appear in the UI

:
https://wandb.ai/percepto/multi_ds/runs/73efonze?workspace=user-olga
specifically, to produce the example in the original post, I manually uploaded only a single description with the following snippet:
run = wandb.init(...)
wandb.log({f'Mapping File Description/{name}': wandb.Table(dataframe=df.describe().astype(str))})
run.finish()
but now, when looking on the 'experiment' this specific table looks okay (see under DataframesZ3/bobik), the rest are still missing
https://wandb.ai/percepto/multi_ds/runs/2dxtdw6v?workspace=user-olga
I'm using:
wandb version 0.12.6
python 3.6.9
os: Ubuntu18.04 (Linux-5.4.0-1058-aws-x86_64-with-Ubuntu-18.04-bionic)

hi @pini-kop, thank you for reporting the issue. In fact, this has to do with dots (.) in the key name. I have a fix that needs to get reviewed and merged.
In the meantime, you can log the tables without dots in the name and the UI should reflect the expected tables.
Note: after the change is released, you will need to "Reset your Workspace" (an option in the bottom left of your workspace).


[WIP] Better testing for transforms + code which conforms to the style guide

Partially addresses #542. Doesn't currently do vector- or matrix-variate distributions for technical reasons.
Also sorts out indentation in src/utilities/transform.jl.

Current failures appear to be the usual statistical ones. I'll try to sort out tests for vector- and matrix-variate distributions this afternoon, then we should be good to go.

Could a missing Symmetric wrapper be causing https://travis-ci.org/TuringLang/Turing.jl/jobs/428954293#L764? I cannot reproduce it on my machine so it could be floating point error causing some asymmetry in a matrix on which cholesky is called. If the matrix is not perfectly symmetric, it will trigger a positive definite error, unless wrapped by Symmetric.

I've added a number of tests using the @test_broken macro where I couldn't figure out the best way to check for consistency between the link function and logpdf_with_trans implementation using AD. These won't prevent CI from passing, but they will flag up in the test summary. This way, it will remind us that we have things that we need to fix, but doesn't halt development, and allows us to merge the code that I've already added in this PR (which I think is strictly better than what we had before).

Turns out that LogMvNormal wasn't being properly transformed, and our tests didn't cover this. I've now added an appropriate transformation for LogMvNormal, and added tests to ensure that if we take arbitrary points in the unconstrained domain and map them to the constrained domain using the appropriate inverse link function the logpdf is finite. These tests are statistical in nature (obviously you can't cover the entire space) but do a much better job than we were doing previously (which was nothing at all).

Thanks, @willtebbutt. The code looks good to me!


Layer style is lost after adding a 2nd and dragging the 1st on top

Steps

Add one layer (layer1).
Add a category widget and click on "autostyling".

Add a second layer (layer2). I have disabled for a moment layer2 to check the styles are OK on layer1.

Drag layer1 on top of layer2. The style of layer1 is lost:

If you refresh the page, the widget is again without autostyling. And works fine.

Yeah, until we can't do this https://github.com/CartoDB/cartodb/issues/8551, it will happen.
Sorry @ramiroaznar


Grammar and style modifications

Changed formal verbs and adjectives for their casual counterparts and replaced 3rd grammatical person with 2nd, as it's the correct form in spanish. Corrected the shifty structure of some sentences in the Tests. Translated the titles and the text inside the examples in the description.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Thank you for your contribution! #33021 had a more complete fix for this file, so that one was accepted. Consider opening a new PR if you feel something still needs to be changed.


GH-41 introduces render condition

AbstractRenderCondition that provide the ability to passthrough the render condition computation in case the user is admin or in a configured group (through policy),
LockPropertyRenderCondition that implements the above, and does render in case configured lock property is present in the policy of the component (works with checkbox based properties),
Unit testing, introducing OAK based mock type, to mock user manager properly
bumping admin version to 0.1.0 (new feature), and all dependency

looks like the version bump broke the build, plus i had a conversation with @auniverseaway and will

move passhtrough groups configuration to be CA based rather than policy,
make passthrough user MV based CA property rather than a constant set to admin


Generate Thumbnails

As a repository manager,
I would like CHO to automatically generate a thumbnail image,
So that I don't have to manually upload one.

This is for all types except for audio.  Generate it in some way and they can create a custom thumbnail later.


How does this work?

I like this plugin approach to voxel rendering, as opposed to the much bigger Godot Voxel Tools module, because it can be loaded on custom builds of the engine without rebuilding the engine.
I am quite confused where the voxel data comes from though. In the examples it seems the TexturedVoxelMesh only takes images as inputs, and if the voxel data is coming from those, I don't understand how I would manipulate it at runtime... Or ever, really. Seeing as the spec doesn't seem to be described anywhere in this repo.
I would really like to try using this plugin if you could clear that up for me. Thanks!

The texture is loaded as a Texture2DArray. There is a method to overwrite an entire layer (one item of the array) at a time, which allows for partial updates of the 3D texture. I did not use it on actual voxel textures yet, but had a benchmark to measure the copying speed, which was unsatisfactory. That's why I gave up that time with trying to modify the voxel volumes at runtime.
I plan to fix this plugin for Godot 4.3 later this year and maybe getting more of the features working again.

Regarding documentation: Please take a look into the shader files in the plugin. They have the in-memory image format documented. It even has some PBR code for (rough) MagicaVoxel compatibility, just the vox loader is currently missing from the repo (before it stopped working with Godot that time).

Thanks, I'm curious, how does render work?

Godot 4.3 compatibility has just been merged to main. No vox loader yet, but it will eventually come as time allows.


Select field values while using aggregate functions

How can we select a field value while using aggregation functions?
SELECT COUNT(DISTINCT empid), empid FROM series WHERE time > now() - 10h GROUP BY empidtag,time(1h)

This query returns count and timestamp with empid null

I don't quite understand what the query is trying to do.
SELECT COUNT(DISTINCT empid) FROM series WHERE time > now() - 10h GROUP BY empidtag,time(1h) makes sense as a query, and SELECT empid FROM series WHERE time > now() - 10h GROUP BY empidtag,time(1h) makes sense as a query, but I don't understand the value in trying to run them together. Do those two queries return the expected results?
The aggregation is rendered mostly meaningless if you are also selecting every individual value in the aggregation. Perhaps there should be a more meaningful error message rather than a null return.
What's the difference between empid and empidtag?
What version of InfluxDB are you running?

@beckettsean  Thanks for your reply.
I've a time series data of visitors who have visited employees. I want to group by employeeid , since it is not possible to group by field , i've added a tag with the same value.
If i want to get the count of visitors of each employee in last hour , how can i achieve that ?
Thanks

@pranavrajs Thanks for the explanation of empid vs empidtag. I'm not sure you need to store both. If you have it stored as a tag, storing it again as a field contributes little in the way of new functionality, unless you want to perform functions (MEAN, MAX, MODE, TOP, etc.) on the empid field.

If i want to get the count of visitors of each employee in last hour , how can i achieve that ?

SELECT COUNT(DISTINCT empid) FROM series WHERE time > now() - 10h GROUP BY empidtag,time(1h) Should be that exact query. It will output 10 buckets of one hour each for every empidtag value, with the contents of each bucket being the count of distinct empid values in that hour.

@beckettsean Thanks for the reply. I thought about this way of solving the issue . I wanted to know the query design pattern, that's why i added an issue here. Thanks for the help.


CPU usage spikes to 100%

Since I added the extension to VS Code it often increases it's CPU usage to 100%. I disabled it and it looks fine. Anyone experienced this before?

@lgraubner can you provide more info please? OS? Hardware?

@lgraubner tested it on MacBook Pro 2016 with Sierra and I dont see an issue. Ill be at a conference until EOW. Then ill upgrade the OS and give it a go.


each event in the /vulnerabilities/{id} vertical timeline links to th…

…e corresponding event's page

vcc and fix are linked to a commit. right now they're linking to the id of the vcc/fix and not the commit.

use .pluralize and .singularize for the url instead of @event_route

This has been implemented as discussed


Back button for page with hash #, turbolinks reload page.

Describe the bug
Hello, I am using a photoswipe library that when clicking on an image places in the url #&gid=1 to zoom it. With the back button of the browser the anchor is removed and the zoom is removed. The problem with turbolinks is that it reloads the page by clicking back, how could I fix it so that turbolinks popstate does not work with url hash. Thank you

Hi @hortigado, it sounds like your photoswipe library is changing the url via history.pushState or history.replaceState, and therefore may not be compatible with the way Turbolinks handles Back navigations.
When changing the history via pushState/replaceState, Turbolinks requires that the state includes a restorationIdentifier, which is internally generated for each visit. If this is absent (for example when your photoswipe library changes the url), then Back navigations won't work as expected.
I'm afraid there is no easy fix for this, other than removing Turbolinks for that page.

Thanks friend a answer, turbolinks work with window.location.hash ?

 var misma=null;
                e.History = function() {
                    var loc = window.location.href;
                    function r(e) {
                        this.delegate = e, this.onPageLoad = t(this.onPageLoad, this), this.onPopState = t(this.onPopState, this)
                    }
                    return r.prototype.start = function() {
                        var urlactual= null;
                        return this.started ? void 0 : (addEventListener("popstate", this.onPopState, !1), addEventListener("load", this.onPageLoad, !1), this.started = !0)
                    }, r.prototype.stop = function() {
                        return this.started ? (removeEventListener("popstate", this.onPopState, !1), removeEventListener("load", this.onPageLoad, !1), this.started = !1) : void 0
                    }, r.prototype.push = function(t, r) {
                        urlactual= t.requestURL;

                        console.log(urlactual);
                        return t = e.Location.wrap(t), this.update("push", t, r)
                    }, r.prototype.replace = function(t, r) {
                         urlactual= t.requestURL;
                         loc=window.location.href;
                            console.log(urlactual);
                        return t = e.Location.wrap(t), this.update("replace", t, r)
                    }, r.prototype.onPopState = function(t) {
                        var r, n, o, i;
                        var openphoto=false
                        if(t.location.hash){
                            var openphoto=true

                        }
if (loc != urlactual && !openphoto) return this.shouldHandlePopState() && (i = null != (n = t.state) ? n.turbolinks : void 0) ? (r = e.Location.wrap(window.location), o = i.restorationIdentifier, this.delegate.historyPoppedToLocationWithRestorationIdentifier(r, o)) : void 0

I made this modification for my need. It works for me. I need to detect when the image opens, I try to retrieve the url before the onPopState, which would be the one with #, but I can't. Any ideas? Thanks
  if(t.location.hash){
                            var openphoto=true
                        }

This does not work

I managed to solve it by putting a global variable and setting it to true every time a modal or image is opened that changes the url. Now my site works properly with turbolinks :). They should implement it to turbolinks because many people see that they have the same problem. Regards


GPflow has become considerably slower on GPU with some recent changes.

I have raised this as a bug because as you will see the effect is large.
The main changes I can see are:

The addition of user_ops for VecToTri and TriToVec
The use of batch matrix triangular solve.

The git hashes I'm comparing are:
new with changes 23b47f590806f0da3cb71916d68674f8bee4d875
old without changes 9c2faf62d04f8ec2ab35396553b5115d92d3c84b
I'm running MNIST training with a minibatch size of 1000.
GPU operation is 70%  slower between these two hashes.
CPU operation is about the same. Did we observe a speed up when we merged these?
The new profiling code #174 allows us to give a detailed breakdown of the slow down.
user_ops_comparison.tar.gz
The can be viewed in chrome using the GUI found at chrome://tracing .
We find that the batch matrix triangular solve does not parallelize as well as the triangular_solve which is arguably a flaw in TensorFlow itself.
We find that the VecToTri and TriToVec ops are currently very slow relatively considering they just reshape something.
What should we do about this?
I would argue we should find out exactly which recent changes are causing this and revert them as soon as possible. The new code looks really great and requires considerably skill but this is showing us that it isn't ready for master yet IMHO. The new user ops also make installation more difficult. We want our users at any moment to have the best available experience and we have to be dedicated to this if we are going to achieve our ambitions for the software.
Longer term I argue that we should move the code to pull requests and expedite #174 #171 and #170
@markvdw @jameshensman thoughts?

It is surprising that VecToTri and TriToVec are so slow, and this needs investigating. Is this an orthogonal problem to the GPU ops (#171)? I.e. do the custom ops slow down the CPU execution significantly as well?
I agree that #170 is important and would catch these issues.

HI Alex,
could you point me to the code that's running  to generat these traces
please?
James.
On Thu, 25 Aug 2016 at 12:11 Mark van der Wilk<EMAIL_ADDRESS>wrote:

It is surprising that VecToTri and TriToVec are so slow, and this needs
investigating. Is this an orthogonal problem to the GPU ops (#171
https://github.com/GPflow/GPflow/issues/171)? I.e. do the custom ops
slow down the CPU execution significantly as well?
I agree that #170 https://github.com/GPflow/GPflow/issues/170 is
important and would catch these issues.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/GPflow/GPflow/issues/181#issuecomment-242351689, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAJbDyjn7dSI9avICOhtbEAgR1vl14X7ks5qjXhEgaJpZM4Js8zJ
.

Hi @markvdw no it is particularly a problem with GPU it seems. Whilst the CPU time of the VecToTri and TriToVec ops is significant in both cases it only seems to be a bottleneck on GPU for this example. The overall CPU run time is about the same as can be seen on the attached .json traces.

@jameshensman that will need about 40min or so.

Perhaps the best thing to do is for the three of us to meet over skype?
On Thu, 25 Aug 2016 at 12:18 Alexander G. de G. Matthews <
<EMAIL_ADDRESS>wrote:

@jameshensman https://github.com/jameshensman that will need about
40min or so.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GPflow/GPflow/issues/181#issuecomment-242353188, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAJbD6o_I6gGJNn0VnS8mn7jLlN7k4v2ks5qjXodgaJpZM4Js8zJ
.

@alexggmatthews So if adding a GPU version of the op removes the bottle in the GPU case, would this be an acceptable solution to keep the code in master?
Also, it's really easy to not use of the VecToTri and TriToVec ops. All that needs to be done is to remove the transform of q_sqrt.

Happy to Skype. Say 2pm?

2pm is great.

Works for me.

@markvdw
Re installation via setup.py . I wouldn't describe it as a problem I would describe it as a relative inconvenience for users and developers. If we can find gains in other areas, as I expect we will in the long term then the inconvenience can be justified but can we justify it now?
Re GPU version of OP. If the GPU code gives a speed up then yes this is a good way to go.
In both cases I would argue that master should reflect the best we can offer our users now rather than what we hope to offer them in a week or a month.

I agree with your assessment of what the master branch should be about. However, I wonder what is the best thing to do in this specific case.
Regarding the setup procedure: From a developer / user's point of view, python setup.py develop needs to be run when installing GPflow anyway, right? So whether it compiles an extra file or not does not actually change this workflow.
I can see an argument that it's an extra bit of complexity, and a possible source of issues during installation. While it is true that we already did have a bug with compiling with gcc5, we did fix it really quickly. Many Python packages require compilation of C files during installation, including TensorFlow. And if TensorFlow compiles, our compiling command should compile as well, especially since we're just taking the command recommended by the TensorFlow docs.
Essentially, I don't see any gain from going back and removing the custom ops at this stage since:

I don't regard the modifications to setup.py as an issue
It's easy to avoid using the custom ops if we want to avoid the slowdown.
It's just more work, given that this stuff will be merged back in at some point later, once the GPU ops are done.

If you think the slowdown caused by the custom ops is unacceptable at the moment, we remove the transform in the declaration of q_sqrt in SVGP for the time being. This way we do not need to remove chunks of code from master, but we do offer users the fast execution, not held back by the custom ops.

@jameshensman here is the requested code
There are some dead end changes on these branches so don't merge them. The "old" one is the faster one.
https://github.com/GPflow/GPflow/tree/old_master_profile_mnist
https://github.com/GPflow/GPflow/tree/master_profile_mnist
I'm using a Titan X GPU. Let me know if you have any problems.

@markvdw we need to remember we haven't broken down the slow down in to parts yet. Although it looks likely the user ops are a contributing factor we should do a test before and after the relevant pull request to confirm. We should also look into the other changes.
I'm afraid I do regard the current slow down, whatever the source, as something we can't allow on master. I think the GPU speed up is essential to our USP. I'm sorry if the solution turns out to be disruptive.
It was originally possible to use GPflow without running setups tools simply by adding it to your path but let's not get bogged down on that issue.
I'm not keen on having code that isn't being used on master but I'm sure we can work out a sensible compromise plan that isn't too labour intensive in the meeting.

@markvdw I've booked the Skype room in Baker building at 2pm.

Essentially, what I'm proposing, is to change svgp.py:105 from:
self.q_sqrt = Param(q_sqrt, transforms.LowerTriangular(q_sqrt.shape[2]))
to
self.q_sqrt = Param(q_sqrt)
While keeping the custom ops and the LowerTriangular transform in the codebase.
This would remove the speed penalty from the custom ops, while allowing users who do want the non-overparameterised version to use the transform.

Some improvement in #182 which has additional profiler info but not completely fixed yet.

What's the remaining source of slowdown? Is this caused by using the batch operations?

@markvdw  @jameshensman I'm looking at #159 now.  I

@jameshensman a revert of #159 together with #182 restores the speed I saw in my original experiments.
I understand the code should run better using the batch ops. This seems like a flaw with TensorFlow or something subtle with how we are using it.
The bottom line is the GPU code for this experiment on master is currently 45% slower than it was without the batch ops.
Code, which is not to be merged, here https://github.com/GPflow/GPflow/tree/master_no_batch
As in the previous case I vote revert then re-introduce as a PR whilst we work out what is going wrong. What are your thoughts?

@markvdw also happy to hear any views although thought you may have had enough of this for one day.

Obviously this is all pretty annoying. Particularly for those who wrote the code. tbh I think as we increase profiler coverage there may will be more surprises like this in the pipeline. ie nice bits of code that turn out to work slower than less nice ones. Sigh.

@jameshensman a hunch is that we might be able to restore most of the speed by removing calls to batch_mat_mul . This is the op that doesn't seem to have a GPU implementation when mat_mul does. If that is the case it could restore most of the speed with relatively little of the uglier code.

batch_matul apparently does work on gpu:
https://github.com/tensorflow/tensorflow/issues/605
but it doesn't get allocated there on my machine (using the latest google-pip)

Having spoken to someone from Google yesterday I know they are planning better integration of batch_mat_mul and mat_mul soon. I suspect this may improve the speed as well.

This issue is now out of date. Having put a lot of work into it as a team we are currently very happy with the GPU performance.

Hi everyone!
This problem seems to have resurfaced with tensorflow 0.12.1.
Using this code:
import GPflow
import tensorflow as tf
import numpy as np

import pods
pods.datasets.overide_manual_authorize = True

data = pods.datasets.oil_100()
Y = data['X']

Q = 2
M = 20
N = Y.shape[0]
X_mean = GPflow.gplvm.PCA_reduce(Y, Q)
Z = np.random.permutation(X_mean.copy())[:M]

k = GPflow.ekernels.RBF(2, ARD=True)

m = GPflow.gplvm.BayesianGPLVM(
    X_mean=X_mean,
    X_var=0.1*np.ones((N, Q)),
    Y=Y,
    kern=k,
    M=M,
    Z=Z
)

m.likelihood.variance = 0.01
%time m.optimize(method='L-BFGS-B', disp=True, maxiter=1000)

On the same machine, the optimization takes about 1 Minute using only CPUs and about 10 Minutes when adding one GPU.
I tried something similar for non-LVMs:
import GPflow
import tensorflow as tf
import numpy as np

X = np.mgrid[0:100:10000j][:, None]
Y = np.sin(X) + 0.1 * np.random.randn(*X.shape)

num_data = X.shape[0]
num_inducing = 200

Z = X[np.random.permutation(num_data)[:num_inducing]].copy()

m = GPflow.sgpr.SGPR(X, Y, GPflow.ekernels.RBF(X.shape[1], ARD=True), Z)

%time m.optimize(method='L-BFGS-B', maxiter=1000)

And here, optimization using GPUs was considerably faster by about a factor of 10.

The issue above was concerned about a regression of speed within GPflow (i.e. it was fast on the GPU and it became slower - obviously this is fixed now).
The LVM code is relatively new, and hasn't really been extensively tested on GPUs, over that it runs. So the issue is more that it's slower on a GPU than a CPU, right? I think it's best to open a new issue for this, since this is unrelated to the old issue.
I recently re-thought some of the code in ekernels.py, and there is a huge opportunity for easy optimisation.

Okay, opening a new issue!


timeular: 3.4.1 -> 3.5.1

Motivation for this change
New features and bug fixes as per release notes: https://support.timeular.com/en/articles/4554679-3-5
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

replaced by: https://github.com/NixOS/nixpkgs/pull/104668


add new websocket options to ingress controller

Codecov Report
Patch coverage has no change and project coverage change: -0.04 :warning:

Comparison is base (4e47132) 81.70% compared to head (38fc760) 81.66%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1023      +/-   ##
==========================================
- Coverage   81.70%   81.66%   -0.04%
==========================================
  Files         135      135
  Lines       15044    15044
==========================================
- Hits        12291    12285       -6
- Misses       2197     2201       +4
- Partials      556      558       +2

see 2 files with indirect coverage changes

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


Correct spelling of Fahrenheit.

Fixes #247 and #160.
Noticed the discrepancy in the original trace log:
2024-08-01T20:04:43.432208958Z [2024-08-01T13:04:43 DEBUG govee::hass_mqtt::climate] notify_state for Space Heater Pro (XXXXXXXXX H7133) targetTemperature
642
2024-08-01T20:04:43.432214580Z [2024-08-01T13:04:43 DEBUG govee::hass_mqtt::climate] have: DeviceCapabilityState { kind: TemperatureSetting, instance: "targetTemperature", state: Object {"value": Object {"targetTemperature": Number(75), "unit": String("Fahrenheit")}} }
643
2024-08-01T20:04:43.432796255Z [2024-08-01T13:04:43 DEBUG govee::hass_mqtt::climate] units are reported as Celsius
644
2024-08-01T20:04:43.432804395Z [2024-08-01T13:04:43 DEBUG govee::hass_mqtt::climate] reported temp is 75°C, pref_units: °C
645
2024-08-01T20:04:43.432806817Z [2024-08-01T13:04:43 DEBUG govee::hass_mqtt::climate] setting value to 75.00

@wez Can you have a look and let me know if anything else is needed to get this in?

Can we get this merged please <3

Thanks!


Test upgrades for PS1.7 with php7.1

Questions
Answers

Description?
Test upgrades for PS1.7 with php7.1

Type?
improvement

BC breaks?
no

Deprecations?
no

Fixed ticket?

How to test?
Travis test should pass

Thank you for review!

Just realized this test is probably useless. Because

phpunit tests will be moved in GitHub Actions
phpstan tests and integration tests are run in a docker image so the PHP version used by Travis does not matter


List Blobs Versioning/Prefix/Delimiter support

Adding test to verify List Blobs Versioning/Prefix/Delimiter support

[x] The purpose of this PR is explained in this or a referenced issue.
[x] The PR does not update generated files.

These files are managed by the codegen framework at Azure/autorest.go.

[x] Tests are included and/or updated for code changes.
[ ] Updates to CHANGELOG.md are included.
[x] MIT license headers are included in each file.

/azp run go - azblob

/azp run go - azblob

/azp run go - azblob


docker-compose: do not expose mongodb by default!

This is a pretty important detail for people using docker-compose to deploy their bot on online servers (without default firewall).
There is really no need to expose mongodb at all, since we are internally linking.
I could imagine there are quite a few installations that are currently exposing their mongodb to the outside world, unknowingly.

Very much appreciate this pull!!


Process stat field from PUSH_DATA

The stat field from PUSH_DATA contains valuable information from the gateway, so the router should process it and do "something" with it.

Work started in branch feature/45-gateway-stats.
Depends on #38


Clarify some porting winforms points

Summary

Cleaned up some wording
Pointed out the upgrade assistant tool
Changed forward-slashes to backward-slashes

Fixes #1066

@tdykstra Unsure why the warning system is flagging unrelated files


Asset server is disabled in production

@rafaelfranca is this what you had in mind?

Yes! Thank you

Great, thank you.


go/types: do we need the equivalent of a cmd/compile -lang flag?

go/types accepts the latest language spec. The compiler (cmd/compile) has a -lang flag to control the accepted language. Specifically, with -lang=go1.12, the new language features introduced with Go 1.13 are not supported. See #31747 .
Do we need an equivalent "flag" (Config field) to control the accepted language by go/types?
cc: @rsc

If we remove such a configuration flag, we can enable the test "issue31747.go" (in go/types/stdlib_test.go) again. See CL https://golang.org/cl/174897.

Relevant compiler tests:
$GOROOT/test/fixedbugs/issue31747.go
$GOROOT/test/fixedbugs/issue34329.go

With the reverse merge of dev.typeparams into master, this is now fixed.


InventoryChanges::GetArmorInSlot may be incorrect in VR

I have not tested it in NG, but when I implemented a fix in PapyrusExtender, one of the issues was related to the use of Biped_slots vs armor slots. This of course could be related to Papyrus, but just wanted to flag it since your fix was my initial fix.
Here's the current implementation here:
https://github.com/CharmedBaryon/CommonLibSSE-NG/blob/main/src/RE/I/InventoryChanges.cpp#L47-L61
	TESObjectARMO* InventoryChanges::GetArmorInSlot(std::int32_t a_slot)
	{
		if SKYRIM_REL_VR_CONSTEXPR (REL::Module::IsVR()) {
			auto armorowner = this->owner;
			auto actor = armorowner ? armorowner->As<RE::Actor>() : nullptr;
			if (actor) {
				return actor->GetWornArmor(a_slot);
			}
			return nullptr;
		} else {
			using func_t = decltype(&InventoryChanges::GetArmorInSlot);
			REL::Relocation<func_t> func{ RELOCATION_ID(15873, 16113) };
			return func(this, a_slot);
		}
	}

Here's how I fixed it in PE. Note the biped_slot conversion.
https://github.com/alandtse/PapyrusExtenderSSE/blob/master/src/C%2B%2B/Papyrus/Functions/Actor.h#L484-L498
#ifdef SKYRIMVR
	// Fix missing GetEquippedArmorInSlot declared in SKSEVR but that doesn't exist in VR.
	// https://www.creationkit.com/index.php?title=Actor_Script#Special_Edition_Exclusive_Functions
	inline RE::TESObjectARMO* GetEquippedArmorInSlot(VM* a_vm, StackID a_stackID, RE::Actor* a_actor, std::int32_t a_slot)
	{
		if (!a_actor) {
			a_vm->TraceStack("Actor is None", a_stackID);
			return nullptr;
		}
		auto biped_slot = (a_slot - 30) >= 0 ? 1 << (a_slot - 30) : 0;
		auto result = a_actor->GetWornArmor(static_cast<RE::BGSBipedObjectForm::BipedObjectSlot>(biped_slot));
		logger::info("GetEquippedArmor running on {} with slot {} returning biped_slot {} with {}", a_actor->GetDisplayFullName(), a_slot, biped_slot, result ? result->GetFullName() : "None");
		return result;
	}
#endif

Initial tests look good with a sample in Skyrim VR. Will test more tonight to verify the same results for the same inputs in SE/AE as well.

Great thanks!


generate recommended rcfile stub

after startup in interactive mode, if rcfile is not found in XDG_CONFIG_HOME/ydshrc, auto-generate rcfile and load it


Old registration date is displayed after receiving result of a new test.

Avoid duplicates

[x] Bug is not mentioned in the FAQ
[x] Bug is specific for Android only, for general issues / questions that apply to iOS and Android please raise them in the documentation repository
[ ] Bug is not already reported in another issue

The bug was already reported here but there it says it would have been fixed in version 1.11 but it is still present in 1.15.1:
https://github.com/corona-warn-app/cwa-app-android/issues/2005
Technical details

Device name: Pixel 2 XL
Android version: 11
App version: 1.15.1

Describe the bug
In December I added a test to the app. When I had received the result, I have removed the test. Yesterday I have added a new test to the app. Today I got the result but it displays the registration date of December instead of March:

Steps to reproduce the issue

Add a test.
Remove a test.
Wait a few days.
Add a test.
Receive a result. The "Registered at" date is wrong/old.

Expected behaviour
The new "Registered at" date should be displayed.

@dg76
As you say, there was an issue fixed with https://github.com/corona-warn-app/cwa-app-android/issues/2005 that was released with  1.11. (That version was released on Jan 28, 2021 - see https://www.coronawarn.app/en/blog/2021-01-28-corona-warn-app-version-1-11/.)  The title of the relevant PR https://github.com/corona-warn-app/cwa-app-android/pull/2024 was "Reset the initial registration date on test removal correctly (EXPOSUREAPP-4484)".
Your previous test was registered on 14.12.2020 and according to the other blog posts on https://www.coronawarn.app/en/blog/ the latest release at that date was version 1.7.
So most probably you deleted the previous test using version 1.7 which did not include the fix.
I think the devs need to look at this again, because if a user registers a new test the only relevant date is the latest QR code scan date. Any previously stored test registration dates need to be overwritten. It should not depend on what (older) version a previous test may have been deleted with.
I will try the following repro steps:

Install CWA 1.7
Scan a QR code
Delete the test
Update to CWA 1.15.1
Wait a day
Scan a new QR code
Check the test date

@dg76 @MikeMcC399 Thanks for reporting and summary.
First of all: Although date date is wrong, the correct result will be retrieved. It is a display issue.
Context:
There was a fix PR in release 1.11: https://github.com/corona-warn-app/cwa-app-android/pull/2024
There was an additional fix PR in  release 1.15: https://github.com/corona-warn-app/cwa-app-android/pull/2638
After the first fix (1.11), the following problem persisted: Even after a scan of a QR code after updating to 1.11 it showed the old date. Another test scan after that one would show the correct date.
After the second fix (1.15), the following problem persists: A test scanned before updating to CWA 1.15 would keep showing the old date. A test scanned after updaten should now not be showing the old date but the correct one.

@dg76 We will inform the developers.
@MikeMcC399 Thank you very much for looking into this.

Thank you for clarifying that the result is correct!
You are probably right about the versions. I can see that an update of the "Corona-Warn-App" was installed 14 hours ago. I scanned the QR code before installing the update and got and viewed the result after installing the update. So if I understand you correctly the issue is fixed now for new QR codes if the users use the latest version? Then it is fine for me, I just wanted you to know the problem. :-)

Internal Tracking ID: EXPOSUREAPP-4484

@dg76 OK, thank you ver much for the feedback! Yes, if you scanned the QR code before updating to CWA 1.15 it will keep showing the old date. That is a know problem, and my understand is that this will not be fixed. Any scans after updating to 1.15 should show the correct date. Important, this is an older issue: the correct test will be retrieved, not the old one. The shown date is wrong (only).

@dg76
@MikeMcC399
I think in that case we can close this issue, do you agree ?

Yes, we can close it. Thank you very much for your quick feedback! :-)

@dsarkar
It sounds like the remaining problem has been resolved with "If there is an initialTestResultReceivedTimestamp it may be (EXPOSUREAPP-4484)" https://github.com/corona-warn-app/cwa-app-android/pull/2638 which was merged into release 1.15.1.
I will continue the planned test tomorrow. If the new scan tomorrow shows tomorrow's date, then everything is fine.

Hi @MikeMcC399, did you do the test you planned?

@dsarkar

did you do the test you planned?

Yes, I did the test and it was successful. I didn't report back here previously because the issue was already closed. All is good!

@MikeMcC399 Thanks¡


Fix invalid escape sequence

This is a one-character PR that fixes the following warning that appears in Python 3.12:
/usr/local/lib/python3.12/site-packages/usaddress/__init__.py:239: SyntaxWarning: invalid escape sequence '\w'
  if bool(re.match('.+[^.\w]', token, flags=re.UNICODE))

We see this error a lot, and others will too when they upgrade. It'd be great to get it fixed. Thank you!

duplicate of #274


Use snapshots while packing task outputs

We've already collected snapshots of all the outputs after the task executed, so no need to walk the file system again while packing up those outputs.

Branch build: https://builds.gradle.org/viewQueued.html?itemId=7732625

Branch build: https://builds.gradle.org/viewQueued.html?itemId=7732903

Build: https://builds.gradle.org/viewLog.html?buildId=7734205

Branch build with cache performance tests rebaselined to latest master: https://builds.gradle.org/viewQueued.html?itemId=7805294

Branch build: https://builds.gradle.org/viewQueued.html?itemId=7815588

Branch build: https://builds.gradle.org/viewQueued.html?itemId=7816374

We are noticeably faster in several caching tests: https://builds.gradle.org/viewLog.html?buildId=7818232&buildTypeId=Gradle_Check_PerformanceTestCoordinator&tab=report_project944_Performance
The effect is pronounced in the non-ABI changes, where lots of freshly built things have to be put into the local cache. Interestingly, clean assemble for the multi-project is also faster, even though we should only be loading from the cache there. OTOH, large monolithic project is even a tiny bit slower with an empty cache, despite that it's exactly there we would expect the most impact of this change.

@wolfs could you take a look at the performance tests and check if you see something weird?

I find it very suspicious that largeMonolitic with a clean cache does not show a big improvement. It may be that reading all the files from disk is much more expensive than walking the file system. With the changes we have in place now, we safe walking the disk again. We could actually not load everything from disk twice when we snapshot and pack at the same time as we do for unpacking. Then the packing would need to happen at the end of executing the actions. I think this would be worth a try. WDYT?