Info requests

Hi Paolo.
I'm going through the code and I'm wondering why this is done:

Is this really necessary?
Can't we just request all 256 registers at once, like we do with the standalone scripts?
python readregs.py <mqtt_broker_ip> <inverter_serial> 0x4000 0x100 | python parsedata.py -p
Next to that, I also see in the logs that during initial setup, the query expires after 10 seconds, resulting in an error in the logs.
All the next queries are working...
Any idea why the initial query (during setup of coordinatior) is always failing?
If you enable debug, you'll see that the messages are published, but the subscription does not seem to process then within the 10s timeout.
All next published mqtt packages are directly picked up by the subscriber...

Greetz,
h3llrais3r

Hi Paolo.
Is this really necessary? Can't we just request all 256 registers at once, like we do with the standalone scripts? python readregs.py <mqtt_broker_ip> <inverter_serial> 0x4000 0x100 | python parsedata.py -p

Yes, it is necessary, because each MQTT packet encapsulates a modbus request and the size, in bytes, of the modbus answer can't exceed 256 bytes (123 integer register amount to 246 bytes, plus some overhead)
The standalone script works because the library transparently splits and reassembles the request in multiple MQTT messages exactly as it is happening here.

Next to that, I also see in the logs that during initial setup, the query expires after 10 seconds, resulting in an error in the logs. All the next queries are working... Any idea why the initial query (during setup of coordinatior) is always failing? If you enable debug, you'll see that the messages are published, but the subscription does not seem to process then within the 10s timeout. All next published mqtt packages are directly picked up by the subscriber...

Don't know actually, may be due to the broker not yet ready, or an async method called too early...

Yes, it is necessary, because each MQTT packet encapsulates a modbus request and the size, in bytes, of the modbus answer can't exceed 256 bytes (123 integer register amount to 246 bytes, plus some overhead)
The standalone script works because the library transparently splits and reassembles the request in multiple MQTT messages exactly as it is happening here

Thanks, that makes sense.

Don't know actually, may be due to the broker not yet ready, or an async method called too early...

That's why I added "mqtt" as depedency in the manifest.json.
Now it only loads the integration after that mqtt is loaded.
But still getting the timeout for the first query...
All next ones are working as expected, but I always see the startup error...

Could you check your logs after a hass restart to see if you also find the warning that the sensor is taking over 10 seconds?

Apparently yes, I have the same startup error:
dic 12 17:38:28 homeassistant-server hass[6373]: 2023-12-12 17:38:28.522 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform saj_mqtt is taking over 10 seconds.
dic 12 17:38:29 homeassistant-server hass[6373]: 2023-12-12 17:38:29.227 WARNING (MainThread) [saj_mqtt] timeout error, inverter did not answer in expected timeout

and this is in a condition where the MQTT broker is externally configured (so it is not started by HA, but already started) and in this case I just restarted home assistant service without rebooting the machine.

So it doesn't matter if you run mqtt standalone or as hass addon.
The issue is always happening after restart of home assistant (I'm also testing without rebooting the device).
So it always happens the first time (it timeouts after 10s, but messages are published -> you can see that if you enable debug logging).
So I think it's the subscription on the _rsp topic that doesn't see the messages yet, until the next try.
So I'm checking if I can setup the subscription outside of the sensor... maybe that will help.

Hi Paolo, would like some more information about this:

Where did you find the info on how to convert a modbus into mqtt?
I also would like to know what the fixed values 0x58 and 0xc9 mean.
Would be great if you knew it and could share it (and maybe also the documentation where you found it). 😉

Where did you find the info on how to convert a modbus into mqtt?
I also would like to know what the fixed values 0x58 and 0xc9 mean.
Would be great if you knew it and could share it (and maybe also the documentation where you found it). 😉

Hello!
The whole thing is reverse engineered inspecting packets sent by the saj app to the inverter. There is no documentation about the modbus <-> MQTT protocol SAJ uses anywhere.
This is a typical data_transmission MQTT packet, and you can see those two constant bytes there:

Apparently they are just constants, I did not found yet any meaning for them.

Thanks for the info.
Next step would be trying to write to inverter as well (f.e. to change the app mode or the battery charging times)
Did you ever try to use your write script as well?
Are they working?

Next step would be trying to write to inverter as well (f.e. to change the app mode or the battery charging times)
Did you ever try to use your write script as well?
Are they working?

Everyday, never had a problem with the write script.
I also have fix-battery-drain.py and fix-osc.py scripts (see the saj-mqtt project) always running to fix some weird behaviour of the inverter and they write registers when they detect anomalies.
fix-battery-drain also changes app mode to "passive" when the battery reach the minimal charge (20%) and restore "self use" when there is PV power, everything works ok. This is done because the inverter consumes more power than the whole house apps standby, and that halves the power consumption of the inverter.

Great, will investigate a bit more those other scripts you have created.
I'm trying to find a solution to charge my battery during the night (on lower cost) as there isn't a lot of sun these days...
Probably I have to change the app mode as well for that... but not sure which one...
I found these modes in some documentation of the H1 inverter:
Self-use Mode: When the solar is sufficient, electricity generated by
photovoltaic system will be supplied to load first, the surplus energy will be
stored in battery, then the excess electricity will be exported to the grid.
When the solar is insufficient, the battery will release electricity to supply
load.
Time-Div Mode: Battery charging period and discharging period can be set,
during charging period, battery can only be charged, while in discharging
period, battery can only be discharged, the rest of the period, battery will
behave as Self-use mode.
Backup Mode: Battery SOC setting value can be adjusted, when SOC is
less than SOC setting value, battery can only be charged, until SOC is larger
than SOC_H, the battery will be stopped charging; when SOC is larger than
SOC setting value, battery will behave as Self-use mode.
Passive Mode: System will dispatch energy according to user instruction,
battery will passively charge from or discharge to grid at certain power to
protect battery from being unused over time.

Time-Div Mode: Battery charging period and discharging period can be set,
during charging period, battery can only be charged, while in discharging
period, battery can only be discharged, the rest of the period, battery will
behave as Self-use mode.

this mode probably behaves as you desire. Note that the manual says "can only be discharged/charged", but when I tinkered with the inverter the behaviour was much more like "will be discharged" and "will be charged".
It means that if you se a charge period (like during night), the inverter will take energy from the grid to charge the battery at the maximum rate it can; conversely, when you se a discharge period, the battery will be depleted to grid as fast as possible.
There should be some parameters that can be changed for charge and discharge rate, but I could not find them from the front panel of the inverter and probably they can be changed only with the maintenance apps or via modbus.

The passive mode that you are using in the battery drain, is that doing what I think it does?
It really turns the inverter into passive mode and no charging/discharging is happening at all?

There should be some parameters that can be changed for charge and discharge rate, but I could not find them from the front panel of the inverter and probably they can be changed only with the maintenance apps or via modbus.

Aren't this those parameters?

I'm still confused about all the modes (except the self-use).
Time-dev seems to let you decide for yourself when to charge and discharge based on time frames
Backup seems to only allow charging when between SOC_L and SOC_H
Passive (called customized in my firmware) it not really clear to me at all... They talk about "passive" charge from the grid or "passive" discharge to the grid...
Do you know what they mean with "passive"?
And how to control if it's charging from grid or discharging to grid?
If I read the above, maybe I could use the backup mode instead?
When put in backup mode, the battery would be charged (from grid I suppose as there is no PV production during the night) until it reaches SOC_H?
I'm really anxious for writing parameters, because I don't want to brick my setup...

Never tried backup mode, so I don't really know how it works.
I tried very briefly Time-dev with the outcome I told you in the previous post; after that I well understood what the manual says: it is used to export energy from battery to grid when it is paid more by your electrical company and/or recharge the batteries when the electricity costs less.
Passive mode is just passive: the manual says that it is used when you want to "park" the batteries and perhaps you need to slowly charge or discharge them to avoid they get worn. In my case they don't get charged nor discharged when in passive mode; looking at the inverter temperature and inverter power consumption, I bet the whole battery circuitry is shat down when passive mode is engaged and turned on when self-use is engaged:

During these days I'm having very little PV production due to bad weather, so battery is almost always drained. As you can see from the tempreature graph, during the night I'm in passive mode, but at 7:20 PV starts producing and self-use is turned on. There you see the nice raising curve of the heatsink temperature.
At 17:20 PV stops producing and passive mode is engaged, and there temperature goes down.
The self-use vs. passive mode switching is done automatically by fix-battery-drain.py script from the other project, which also leverage the register 0x3635 Prevent Reverse Flow to avoid excessive battery drain during night: in my case, when in self-use mode, I noticed that during the night the inverter was taking ~100 watts from battery and giving to grid, which is awful because it drains the batteries for about 2 kilowatts during the night, which is 20% of the capacity I have!
The script engages passive mode to avoid the inverter to consume way too much grid energy during night when battery is drained: it's useless to keep the circuitry on when the battery cannot discharge and cannot charge!
Prevent reverse flow instead is used to avoid exporting energy from battery to grid during the night and drain the batteries uselessy.
After all of this, my opinion on SAJ and their inverters is not very good. I don't know how are others, but these corrections I have to do and the other bugs (fixed by the other fix-osc.py script) let me think they don't exactly know what is going on in their products and there is little to no attention to details.

Hi Guys
So,  I have got this all setup now.
The inverter is actually in Spain.  I have poisoned the local dns to redirect the mqtt packets over a vpn to an HA server in the UK.
The broker bridge is configured for both directions and since dns is seperate on the HA network the address in the bridge configuration can be left as dns name rather than fixed ip.
I added the data_transmission topics to the bridge config as well as I wanted the app to continue working.
All working well.
Have any of you got any example HA automations or scripts for setting overnight charging?  Particularly changing the charging power.
Great integration BTW and I look forward to contributing when up to speed.
I maintain an integration for LUXpower inverters also based on modbus but encapsulated in a multi-inverter wrapper akin to but not the same as topics in mqtt.
Krs
Mark

Have any of you got any example HA automations or scripts for setting overnight charging? Particularly changing the charging power.

Hi, no HA automations for the moment from my side. You can always try to have a look at python scripts in the other repo of Paolo (saj-mqtt) as he has some automations running, but outside HA.
I will probably only start on HA automations at the end of the year, when overnight charging because useful again, as as of now, it's not needed anymore from my side, as there is enough sunlight during the day.
The only thing I did, up until now for overnight charging, was setting up the 'time of use' window to only charge at a specific speed (f.e. 1kwh) during a specific time (f.e. between 00:00 and 05:00). With a manual toggle I can then switch between the app modes to either use 'self use' mode or 'time of use' mode.

Did you do that with a switch entity in ha translated to a register write?
or did you set it up in the app?
if in ha, have you got example code for that?
Krs
Mark

I've added a service to set an app mode.
I've added also services to the HA integration to read and write registers.
See https://github.com/paolosabatino/saj-mqtt-ha?tab=readme-ov-file#ha-services
Be aware that using the write_register service is AT YOUR OWN RISK, as you have to specify yourself which value you are writing to which register. If you write wrong values to the registers, your inverter might be damaged indefinitely.
The set_app_mode service is actually using the write_register service internally to write the APP_MODE value to the APP_MODE register.
So before writing stuff to your register, PLEASE MAKE SURE you are writing a valid value to the correct register.
Since there are a few hardware/software versions out there, it might be that the register for 1 version is not containing the same data as for another version.
So I suggest that you first read the value of a register, to see if it's the correct one, and then write a new value to it.
What I typically do is changing the value first via the O&M app and then read it to make sure it's the right one.

Hi
Has anybody tried forced exporting using either the integration or the esolar app "remote" section?
I can get it to charge using time of use settings but I cannot get it to force discharge from batteries using TOU.
Set up exactly the same as charge in the app.
It is just ignored.
Can anybody else try it to see if it works for them?
Krs
Mark


x11idle: update version, repository

Motivation for this change
Org Mode has moved its main repository, therefore this package should be updated.
Things done

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

[ ] 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 nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build x11idle

Failure on aarch64-linux (full log)
Attempted: x11idle
Partial log (click to expand)
 * [new tag]         2.1        -> 2.1
 * [new tag]         2.2        -> 2.2
 * [new tag]         2.3        -> 2.3
 * [new tag]         2.4        -> 2.4
 * [new tag]         2.5        -> 2.5
Switched to a new branch 'fetchgit'
removing `.git'...
fixed-output derivation produced path '/nix/store/8dq9w0l6jcvms7ay9mgd23pc2q468w0i-org-mode-e445894' with sha256 hash '05q78z2kjj86whxcff32c5iqdcivjmbnyg6jv9k2wjj68arafpbc' instead of the expected hash '1pdxn73pdb9fhch7nsr97n8vwbbw5xd47zjxlkxyqcrrc5plx978'
cannot build derivation '/nix/store/0jwj2409pcjijfknwx0pz2y0h4w4pqb4-x11idle-unstable-2018-02-26.drv': 1 dependencies couldn't be built
error: build of '/nix/store/0jwj2409pcjijfknwx0pz2y0h4w4pqb4-x11idle-unstable-2018-02-26.drv' failed

Failure on x86_64-linux (full log)
Attempted: x11idle
Partial log (click to expand)
 * [new tag]         2.1        -> 2.1
 * [new tag]         2.2        -> 2.2
 * [new tag]         2.3        -> 2.3
 * [new tag]         2.4        -> 2.4
 * [new tag]         2.5        -> 2.5
Switched to a new branch 'fetchgit'
removing `.git'...
output path '/nix/store/0gnv0x139klnldpq2mwbcl21q47pyq72-org-mode-e445894' has r:sha256 hash '05q78z2kjj86whxcff32c5iqdcivjmbnyg6jv9k2wjj68arafpbc' when '1pdxn73pdb9fhch7nsr97n8vwbbw5xd47zjxlkxyqcrrc5plx978' was expected
cannot build derivation '/nix/store/m9n9w8gh3v4khsxrgli8adpsla7m6mrp-x11idle-unstable-2018-02-26.drv': 1 dependencies couldn't be built
error: build of '/nix/store/m9n9w8gh3v4khsxrgli8adpsla7m6mrp-x11idle-unstable-2018-02-26.drv' failed

@GrahamcOfBorg build x11idle

@GrahamcOfBorg build x11idle

@GrahamcOfBorg build x11idle

Failure on aarch64-linux (full log)
Attempted: x11idle
Partial log (click to expand)
 * [new tag]         2.1        -> 2.1
 * [new tag]         2.2        -> 2.2
 * [new tag]         2.3        -> 2.3
 * [new tag]         2.4        -> 2.4
 * [new tag]         2.5        -> 2.5
Switched to a new branch 'fetchgit'
removing `.git'...
fixed-output derivation produced path '/nix/store/v9vcw71q0fvs933br28d551vsa8106bd-org-mode-54abd0f' with sha256 hash '06g7jbl0mb5s33g097c7my336njmyr2xwrfwhaxcgpv5nqps4xif' instead of the expected hash '08fc8r0krk5awb121a0x3azqx2az6xnbs0yj74d25fja0n2ap7q8'
cannot build derivation '/nix/store/jcsxqkm9n92qyrz3pk75r91y395x1wg2-x11idle-unstable-2018-06-16.drv': 1 dependencies couldn't be built
error: build of '/nix/store/jcsxqkm9n92qyrz3pk75r91y395x1wg2-x11idle-unstable-2018-06-16.drv' failed

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: x11idle
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Failure on x86_64-linux (full log)
Attempted: x11idle
Partial log (click to expand)
 * [new tag]         2.1        -> 2.1
 * [new tag]         2.2        -> 2.2
 * [new tag]         2.3        -> 2.3
 * [new tag]         2.4        -> 2.4
 * [new tag]         2.5        -> 2.5
Switched to a new branch 'fetchgit'
removing `.git'...
fixed-output derivation produced path '/nix/store/v9vcw71q0fvs933br28d551vsa8106bd-org-mode-54abd0f' with sha256 hash '06g7jbl0mb5s33g097c7my336njmyr2xwrfwhaxcgpv5nqps4xif' instead of the expected hash '08fc8r0krk5awb121a0x3azqx2az6xnbs0yj74d25fja0n2ap7q8'
cannot build derivation '/nix/store/pcay5bcknxd5z553csz5jjmxni0l7kqp-x11idle-unstable-2018-06-16.drv': 1 dependencies couldn't be built
error: build of '/nix/store/pcay5bcknxd5z553csz5jjmxni0l7kqp-x11idle-unstable-2018-06-16.drv' failed

Ping. @swflint is this PR still worth working on for you?

Yes.

@chreekat @matthewbauer Please review as available.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/125


Preparing release 2.10

This PR is meant to prepare the update to the next release.
First step, updating the underlying key4hep version.

Closing - obsoleted by https://github.com/MuonColliderSoft/mucoll-spack/pull/17


close hdf5 files, use hdfpy 3.12

There wasn't actually a bug in h5py 3.12, hdf5 just started enforcing consistent behavior on locking the same file when it's open in multiple places, as explained here:
https://github.com/h5py/h5py/issues/2506
u live and u learn

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

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 98.757%

Totals

Change from base Build<PHONE_NUMBER>8:
0.0%

Covered Lines:
1192

Relevant Lines:
1207

💛  - Coveralls


Update RCTModalHostViewManager.m

IOS Modal transition issue fix
Summary
While switching from one Modal to another, 2nd modal loading as blank screen on IOS devices.
Changelog
Pick one each for the category and type tags:
[IOS] [BREAKING] - Update RCTModalHostViewManager.m
Test Plan
TODO

@ricku44 thank you for this PR. Please add the following to the description. What is the issue in details, how to reproduce it, how this code fixes it, and how to test the fix.


Unable to login

Hi, I've installed the JWT Authentication for WP REST API and followed all those directions, including installing WP Rest, altering the .htaccess and wp-config.php file. I'm still getting unable to login. I've double checked, my login is correct. Any suggestions?

Sometimes where you place the edits in the .htaccess and wp-config.php files matters.
For the .htaccess edits, you need to put the new lines after the comment
END WordPress
For the wp-config.php edits, you should put them with the other constant definitions
define(
Also, make sure that you activate the JWT Authentiation plugin in the WordPress dashboard.

Thanks for responding so quickly. I replaced the keys in wp-config in the correct place in define.
I didn't put the .htaccess edits after end Wordpress. Just changed that and I'm still getting the error.
Do I need to add everything after "CONFIGURATE THE SECRET KEY" like "CONFIGURATE CORS SUPPORT" etc from the JWT plugin?
Really appreciate your help!

Yes, you also need to configure CORS support and activate the plugin.

Okay, thank you. I activated that, deactivated the plugin and activated it again, confirmed that all the additions to the htaccess file and wp-config file were there. Tried again, same error. Then I search and found special characters in user passwords sometimes mess with JWT, so I reset that password using only normal characters still didn't work.
I can pull up the JWT plugin here: https://blogs.wnpt.org/arts/wp-json/
I just can't get the token page to pull up. I get this error:
{"code":"rest_no_route","message":"No route was found matching the URL and request method","data":{"status":404}}
I have php 7.4 installed for the Wordpress site. Pretty much checked everything I could think of.
I appreciate the help. If you happen to think of something that would fix this give me a shout.

I just went with another solution. Thanks for your help. I hope this is just a weird hosting provider thing.


Do ACL calls need to support incremental backoff?

We have facilities to retry some API calls by incrementally delaying the retry. This is implemented on creating/deleting buckets. Does this also need to be applied to the ACL API calls?

This answer might be more obvious as part of the review by the storage team. I just don't have a great deal of knowledge on what storage API endpoints will return a backoff response.

Pretty much everything should be dealt with by using some form of backoff for a 5xx or 429 response.
The problem comes when the client makes non-idempotent operations. In that case, just a dumb retry may not do what you want. For ACLs, setting an individual entry is likely to be OK. For setting the entire list, you may wish to be careful about ensuring you're editing the same metadata generation so you don't clobber someone else's ACL (or other metadata) change.

All these calls are made through Google API Client now, which supports retry with incremental backoff.


Super weird edge case with runtime_checkable

Hopefully the example is self-explanatory:
import dataclasses
from typing import Protocol, runtime_checkable

import tyro

@runtime_checkable
class DummyProtocol(Protocol):
    pass

@dataclasses.dataclass(frozen=True)
class SubConfigA:
    pass

@dataclasses.dataclass(frozen=True)
class SubConfigB:
    pass

@dataclasses.dataclass
class Config:
    subconfig: DummyProtocol

CONFIGS = {
    "a": Config(subconfig=SubConfigA()),
    "b": Config(subconfig=SubConfigB()),
}

if __name__ == "__main__":
    config = tyro.extras.overridable_config_cli({k: (k, v) for k, v in CONFIGS.items()})
    print(config)

# ❯ python test.py b
# Config(subconfig=SubConfigA())

What's so weird is that a bunch of factors all have to be true to trigger the bug:

The protocol has to be decorated with @runtime_checkable
The subconfigs have to actually implement the protocol (e.g., adding a method to the DummyProtocol fixes it)
The subconfigs have to be frozen

Oof!
The root cause here was bad caching code. I didn't realize that dataclass hashes are invariant to dataclass types + field names:
import dataclasses

@dataclasses.dataclass(frozen=True)
class SubConfigA:
    x: int

@dataclasses.dataclass(frozen=True)
class SubConfigB:
    y: int

# passes
assert hash(SubConfigA(3)) == hash(SubConfigB(3))

functools doesn't have this problem because it also uses the input type as part of the cache key (source). I copied this.

wow, thanks for the super quick fix! 😀


Tests failing due to Mocha bug

https://github.com/mochajs/mocha/issues/5170
When a patched version is released we need to be sure to upgrade

Fixed in https://github.com/AidanWelch/google-translate-api/commit/376b95332e78744035bbb3ea28622755204a140e


opensycl on arm

can we install opensycl on arm aarch 64 and execute sycl codes on arm?

Yes. At least the CPU side has been successfully tested on Fujitsu's A64FX, Marvell ThunderX2, Apple Mac M1.

can you please guide how we can install on arm aarch64 , since i am new in this, what commands can use ?

Installing Open SYCL on Arm follows the normal procedures. (Cross-compilation from x86 is not tested)
Please take a look at the following documentation as a starting point: https://github.com/OpenSYCL/OpenSYCL/blob/develop/doc/installing.md
If you're stuck somewhere specific feel free to report back.
(Also with more information on what system you're targeting, what OS you have, ...)

ok will follow the doc tq


feat(parser): add SHOW statements for mysql to parser

for #67

@MasterOdin these blocking changes, or can be merged?

@wmontgomery if we're adding show support can we add all of them?
https://dev.mysql.com/doc/refman/8.0/en/show.html
Let's include this URL in a comment too

@MasterOdin lgtm

If you want to change to 'LISTING' once merged, that's fine

Thanks for the contribution @wmontgomery!


Synchronization problem

Buongiorno, la vostra applicazione Fitnote peima andava ma da qualche mese non dunziona più e dice di sincronizzare il fitbit col telefono, ance se sono sincronizzati, non apre il documento.
Cosa posso fare?
Grazie

Is there ant error message shown?
Things to try:

Restart the watch (shut it down in Settings > About on the watch and turn it on again).
Restart the Fitbit application on your phone (force close it) or restart your phone.
If that doesn't help try resetting FitNote app settings by pressing the reset button in the settings screen, logging in again, and syncing again.
If that doesn't help try uninstalling and reinstalling the FitNote app.

This is most likely something specific to you as it works fine for me. If these steps don't work then we'll try to check your MS account.

Ho gia fatto tutto questo e ho anche provato con due diversi microsoft account.
Ma non va ancora.
Cosa posso fare?
Grazie

Da: Edgars Šults @.>
Inviato: giovedì 20 maggio 2021 16:24
A: edgarssults/FitNote @.>
Cc: mari-spec @.>; Author @.>
Oggetto: Re: [edgarssults/FitNote] Synchronization problem (#7)
Is there ant error message shown?
Things to try:

Restart the watch (shut it down in Settings > About on the watch and turn it on again).
Restart the Fitbit application on your phone (force close it) or restart your phone.
If that doesn't help try resetting FitNote app settings by pressing the reset button in the settings screen, logging in again, and syncing again.
If that doesn't help try uninstalling and reinstalling the FitNote app.

This is most likely something specific to you as it works fine for me. If these steps don't work then we'll try to check your MS account.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/edgarssults/FitNote/issues/7#issuecomment-845168763, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AUENDA4AN3IHPDI2HZQTGYLTOULRJANCNFSM45HB2GYQ.

Without an error message I'm just guessing what might be wrong 😥
The MS Graph API Explorer doesn't seem to be working currently so we can't verify that your login has access to your notes either.

App has been discontinued.


A full-featured, high-performance and lightweight scheduler for libaco is needed

How can i launch a coroutine which waits for 5 secs and do some operation in a data structure.
I don't want main thread to wait. sleep(5) holds the main thread itself.

It would need a scheduler to schedule all the coroutines.
About two months ago, I started to develop a high-performance Golang-like coroutine scheduler for libaco. It would come to the public in about two weeks. The code of the scheduler itself has already finished, I'm now doing the performance optimization, strict code review and writing the test suites stuff.

I am trying to implement a simple scheduler for libaco. Hope you guys can take look:https://github.com/guangqianpeng/libaco-sched

please keep libaco tiny and clean, another repo to start scheduler work?

"a high-performance Golang-like coroutine scheduler for libaco"  有进一步的发布计划吗？

@QingruiHuang  抱歉，我现在的业余时间用在了开发另一个开源项目上，等它告一段落之后还会回来，但遗憾的是我无法给出具体的时间承诺，也许几个月。
English Translation:
@QingruiHuang  Sorry, my spare time is now spent on developing another open-source project and I would like to come back when it's finished. But unfortunately, I can't give you a promise of the precise date, probably maybe several months.

@QingruiHuang @guangqianpeng @nishantd01
https://github.com/alibaba/PhotonLibOS   The fastest io engine (scheduler). Although it's now running in stackful coroutines, our two projects have very much common in the coroutine API.

多年以后，再回来这里，依然没见更新

多年以后，再回来这里，依然没见更新

业务需要的话，自己实现一个成本还好；这样自己内部业务系统用起来也更知道底层的调度逻辑一些


Added a stub in readme with some set operations

i understand there is a way to implement this to be faster with amortized log performance but not feeling it rn

also this was a copilot experiment at writing something for me with minimal guidance—pretty cool


Alert with many buttons is cut off

Description
In the Alert example, the alert with many buttons is cut off the screen

Am I doing something wrong to reproduce the issue?

@Marcoo09 Which beta are you running? Maybe it's a regression in the latest one

I'm using Xcode 15.1 beta and visionOS 1 beta 6

@Marcoo09 Im running Xcode 15.2 beta with visionOS Beta 7, can you check it on the newer sdk?

@okwasniewski sorry for the delay, I'll check it tomorrow!

For me this is still happening even on Xcode 15.2 stable

I've double checked this in SwiftUI application and the same thing is happening - I'm closing this


solidity implementation for ics23

Code is splitted in 4 different libraries, following the layout of
functions and files of the go implementation

Ops -> go/ops.go
Proof -> go/proof.go
Compress -> go/compress.go
Ics23 -> go/ics23.go

Missing parts of the current implementation:

sha512 hash option: solidity does not have built-in function for this
hash. A solidity implementation would utterly inefficient and very
costly (gas-wise)
compress functions: the implementation will very likely be used to
verification, not for proof generation
ProofSpec for tendermint and iavl definition: again, this
implementation is meant to be used to verify, not to provide proofs.

The implementation also provides a framework to run the same unit-test
cases that the go implementation has.
go-ethereum package provides a SimulatedBackend that can be used to
deploy a contract and call functions. UnitTest-specific contracts are
included in the libraries sol files.
The current go-ethereum version is the last with a working abigen
command.
This commit also refactors the go project to make room for two go
modules in the same repository

A few points to answer yet-to-ask reviewers' questions:

This PR refactors the go implementation, there is no functional change, only refactoring tests code to being able to share the cases with solidity unit tests - also root-level go.mod has been removed
I failed at automating the protoc for solidity build step. Unfortunately there is not yet official protobuf-solidity compiler/plugin. I used an updated version of the @datachainlab  compiler.
even though go-ethereum pkg is now at 1.10.12. The latest working version of abigen is v.1.10.0
circleCI does not provide any docker image with solidity tools like solc compiler. Using tools like truffle would have prevented me from reusing go unit test cases.

If this PR is too bulky and cumbersome to review, please let me know and I will try to split it into smaller, less scary pieces.

@adizere, @andynog,
you might be interested in this.

I have yet to review, but 2 points.

Can you do the go stuff in another pr, separate from Solidity?

What is the license on the go-ethereum code you import? Much is GPL which is not good for this library.

Hi @ethanfrey,
I understand that license mismatch is a problem. However, if we can't include any of the go-ethereum code, it would not make sense anymore to refactor the go code, as the only purpose of the changes was to import the test cases in the solidity unit test framework.
I can try to move to truffle framework which is licensed under MIT.

I have asked about licensing many times with the ICF and they are very admimant about Apache-2 only, no GPL family.
Since this package is imported by the Cosmos SDK, and thus affected every Cosmos blockchain, we need to be extra careful to maintain Apache 2 compliance.

Thank you for this work, and I look forward to seeing one based on MIT code

Thanks @ethanfrey ,
I realised, I can move all the test cases description to json, so to be shared between go code and truffle's javascript code.
:v:


First test splitting migration into two steps

Test execution of migration in multiple steps.

coverage: 75.981%. remained the same
when pulling f856ea44657b6c2e7b261167e708e2f1d159b713 on migration-extension-test-multiple-step-migration
into f1d2baf92a7c82af212ad4edd877c50c80e4d461 on master.


[REQ] Option to change Bloxstrap Icon

Acknowledgement of preliminary instructions

[X] I have read and acknowledged the preliminary instructions.

What idea do you have?
I don't like the new logo, and I'm sure many others feel same. I think people should have the option to revert back and even customise it in the new "Bloxstrap" tab.

By the time the next version is ready for release I'll come back here to ask you if you'd still want to bother using the older icon

Same, I really want old icon back I tried installing 2.7.0 to look through the files and look for the old icon but 2.7.0 installer is stuck on Configuring Roblox please add this. I'm gonna look through the source code and see if there is the old icon so I can download the old icon as .ico and then use custom icon feature.

Yep, just had a look through the source code found nothing.

I just found the old Bloxstrap logo on the Roblox wiki and I downloaded that image and change the .png to .ico and now I can use it with Bloxstrap. I tried adding it here but GitHub doesn't support .ico files anyways I'll stop commenting so much on this issue lol

Sorry lmao but seriously I will stop commenting so much but the .ico file might be corrupted because it isn't working even though I can open in Microsoft's default photos app.

Sorry lmao but seriously I will stop commenting so much but the .ico file might be corrupted because it isn't working even though I can open in Microsoft's default photos app.

I have a non-broken .ico which I have attached in a .zip so GitHub allows it.
Bloxstrap.zip

tysm!

By the time the next version is ready for release I'll come back here to ask you if you'd still want to bother using the older icon

No need to ask, I still want the older icon back.

No need to ask, I still want the older icon back.

After reading the Release Notes, I have found there is meant to be a toggle in "Bootstrapper". However as mentioned in #3545, there is not.
P.S: I do not "fear change", I just despise it for I feel it is unnecessary and often times harmful. Change can be good, but I do not believe this one is.

HE GAVE US AN OPTION TO GET THE OLD ICON BACK THANKS PIZZABOXER


[Photoprism] Addon won't start after some trouble with shares

Description
I am trying to install the Photoprism addon for Home Assistant, but I ran in some trouble.
I did not entirely understand how shared folders in HA work while I wanted to use an SMB share.
In the process I had the addon running a couple of times with a file location I didn't want to use.
Now I have the file location correctly set and have seen the necessary folders created where I wanted them, but now the addon doesn't want to start:
time="2024-05-21T16:22:52+02:00" level=error msg="migrate: database is locked (create migrations table)"
time="2024-05-21T16:23:03+02:00" level=error msg="migrate: failed migrating photos_users"
time="2024-05-21T16:23:03+02:00" level=error msg="migrate: database is locked in photos_users (panic)"
time="2024-05-21T16:23:13+02:00" level=error msg="migrate: some database tables are missing"
time="2024-05-21T16:23:13+02:00" level=error msg="place: no such table: places (create zz)"

I use the default sqlite database, could it be that there is something left in there that interferes? Is there a way to reset the addon completely?
I have tried reinstalling, but that didn't solve the issue.
Reproduction steps
Install addon and then remove the folder where it ran the first time.

Addon Logs
home directory: /data/photoprism
assets path...: /opt/photoprism/assets
storage path..: null
config path...: default
cache path....: default
backup path...: null
import path...: null
originals path: null
running as uid 0
photoprism start
time="2024-05-21T16:21:37+02:00" level=error msg="could not parse null as bool value for flag upload-nsfw, n: strconv.ParseBool: parsing \"null\": invalid syntax"
photoprism start
time="2024-05-21T16:21:47+02:00" level=error msg="could not parse null as bool value for flag upload-nsfw, n: strconv.ParseBool: parsing \"null\": invalid syntax"
photoprism start
time="2024-05-21T16:21:56+02:00" level=error msg="could not parse null as bool value for flag upload-nsfw, n: strconv.ParseBool: parsing \"null\": invalid syntax"
photoprism start
time="2024-05-21T16:22:06+02:00" level=error msg="could not parse null as bool value for flag upload-nsfw, n: strconv.ParseBool: parsing \"null\": invalid syntax"
photoprism start
Starting...
/etc/cont-init.d/00-banner.sh: executing

-----------------------------------------------------------
 Add-on: Photoprism
 A server-based application for browsing, organizing and sharing your personal photo collection
-----------------------------------------------------------
 Add-on version: 240420-ef5f14bc4
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.3  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2024.5.4
 Home Assistant Supervisor: 2024.05.1
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums
-----------------------------------------------------------
 Provided by: https://github.com/alexbelgium/hassio-addons
-----------------------------------------------------------
/etc/cont-init.d/00-folders.sh: executing
[16:22:18] INFO: Preparing scripts
... creating structure
... setting permissions
/etc/cont-init.d/00-global_var.sh: executing
BACKUP_PATH='/share/photoprism/backup'
CONFIG_LOCATION='/config/addons_config/photoprism/config.yaml'
DB_TYPE='sqlite'
IMPORT_PATH='/share/photoprism/import'
ORIGINALS_PATH='/share/photoprism/originals'
STORAGE_PATH='/share/photoprism/storage'
UPLOAD_NSFW='false'
certfile='fullchain.pem'
keyfile='privkey.pem'
ssl='false'
Timezone set from Etc/UTC to Europe/Amsterdam
/etc/cont-init.d/00-local_mounts.sh: executing
/etc/cont-init.d/00-smb_mounts.sh: executing
/etc/cont-init.d/01-config_yaml.sh: executing
Setting permissions for the config.yaml directory

Load environment variables from /config/addons_config/photoprism/config.yaml if existing

If accessing the file with filebrowser it should be mapped to /homeassistant/addons_config/photoprism/config.yaml
---------------------------------------------------------
Wiki here on how to use : github.com/alexbelgium/hassio-addons/wiki/Add‐ons-feature-:-add-env-variables
... no env variables found, exiting
/etc/cont-init.d/01-custom_script.sh: executing
Execute /homeassistant/addons_config/photoprism/photoprism.sh if existing
Wiki here : github.com/alexbelgium/hassio-addons/wiki/Add-ons-feature-:-customisation
/etc/cont-init.d/30-graphic_drivers.sh: executing
/etc/cont-init.d/32-nginx_ingress.sh: executing
/etc/cont-init.d/32-nginx_ssl.sh: executing
/etc/cont-init.d/90-disable_ingress.sh: executing
/etc/cont-init.d/99-run.sh: executing
[16:22:20] INFO: Defining database
[16:22:20] INFO: Using a local sqlite database
[16:22:20] WARNING: Ingress is enabled. To connect, you must add /api/hassio_ingress/wog3GjEyQ-15IWrYN_MNbuRdgvyBsRIsnY9ifDLr81k/ to the end of your access point. Example : http://my-url:8123/api/hassio_ingress/wog3GjEyQ-15IWrYN_MNbuRdgvyBsRIsnY9ifDLr81k/
[16:22:32] INFO: Please wait 1 or 2 minutes to allow the server to load
[16:22:32] INFO: Default username : admin, default password: "please_change_password"
[16:22:32] INFO: Starting, please wait for next green text...
started 240518 as root (arm64-prod)
init: https
Creation of a default HTTPS/TLS certificate is skipped because PHOTOPRISM_DEFAULT_TLS is "false".
Problems? Our Troubleshooting Checklists help you quickly diagnose and solve them:
https://docs.photoprism.app/getting-started/troubleshooting/
file umask....: "0002" (u=rwx,g=rwx,o=rx)
home directory: /data/photoprism
assets path...: /opt/photoprism/assets
storage path..: /share/photoprism/storage
config path...: default
cache path....: default
backup path...: /share/photoprism/backup
import path...: /share/photoprism/import
originals path: /share/photoprism/originals
running as uid 0
photoprism start
time="2024-05-21T16:22:42+02:00" level=info msg="config: case-insensitive file system detected"
time="2024-05-21T16:22:42+02:00" level=info msg="Become a member today, support our mission and enjoy our member benefits! 💎"
time="2024-05-21T16:22:42+02:00" level=info msg="Visit https://www.photoprism.app/membership to learn more."
time="2024-05-21T16:22:52+02:00" level=error msg="migrate: database is locked (create migrations table)"
time="2024-05-21T16:23:03+02:00" level=error msg="migrate: failed migrating photos_users"
time="2024-05-21T16:23:03+02:00" level=error msg="migrate: database is locked in photos_users (panic)"
time="2024-05-21T16:23:13+02:00" level=error msg="migrate: some database tables are missing"
time="2024-05-21T16:23:13+02:00" level=error msg="place: no such table: places (create zz)"

Architecture
No response
OS
HAos

Hi, to restart from scratch there could be files located in several places :

Mariadb if you use it, but it doesn't seem to be the case
/data : only accessible from within the addon (or with my portainer addon) so by uninstalling the addon you'll remove this folder
/homeassistant/addons_config/photoprism : to access this one you need to use my filebrowser addon, and remove the /homeassistant/addons_config/photoprism* folder if existing

Globally, HA manages two main locations :

/data internal in the addon, removed when app is uninstalled
/config ; depending on how the addon is set-up either HA maps it in Filebrowser to :
- /addon_configs (new logic, this folder stays even if you uninstall the addon which prevents a clean reinstallation)
- /homeassistant/addons_config (older logic, also stays even if addon is uninstalled)

I tried removing the files and folders you mentioned, and reinstalling the addon, but that didn't help.
Then I switched to MariaDB which solved the issue. So I think something that stays in the database after the uninstall of the addon screwed things up.

Well as long as it works :-) and mariadb is much more efficient and faster in the longer term than sqlite


dedupe (Google Drive) fails when item name has special characters

What is your rclone version (eg output from rclone -V)
v1.37-117-g58f7b4edβ
Which OS you are using and how many bits (eg Windows 7, 64 bit)
OSX 10.12.5 64 bit
Which cloud storage system are you using? (eg Google Drive)
Google Drive
The command you were trying to run (eg rclone copy /tmp remote:tmp)
rclone dedupe ...

I ran dedupe on a G Drive folder which had duplicate items (same MD5) but it failed to identify them until I rename them both to get rid of an é character.
$ gdrive info 0B1FVU07aR9pFcWlOSU5pWnYtY1U
Id: 0B1FVU07aR9pFcWlOSU5pWnYtY1U
Name: Alléluia_Titles-Backplate.mov
Path: acd/OUTPUT/ARCHIVE/ALLELUIA/Alléluia_Titles-Backplate.mov
Description: Alléluia_Titles-Backplate.mov
Mime: video/quicktime
Size: 176.3 MB
Created: 2017-06-23 16:25:02
Modified: 2016-10-19 17:38:30
Md5sum: 513bd7f7d60664d2c4665441fc6128d9
Shared: False
Parents: 0B1FVU07aR9pFX09fX0FwUE4ydWc

$ gdrive info 0B1FVU07aR9pFbmo4b2ViZXFQR28
Id: 0B1FVU07aR9pFbmo4b2ViZXFQR28
Name: Alléluia_Titles-Backplate.mov
Path: acd/OUTPUT/ARCHIVE/ALLELUIA/Alléluia_Titles-Backplate.mov
Description: Alléluia_Titles-Backplate.mov
Mime: video/quicktime
Size: 176.3 MB
Created: 2017-06-26 18:35:29
Modified: 2015-05-05 00:14:51
Md5sum: 513bd7f7d60664d2c4665441fc6128d9
Shared: False
Parents: 0B1FVU07aR9pFX09fX0FwUE4ydWc

Yet:
$ rclone -v dedupe gd0:acd/OUTPUT/ARCHIVE/ALLELUIA
2017/09/02 13:15:40 INFO  : Google drive root 'acd/OUTPUT/ARCHIVE/ALLELUIA': Modify window is 1ms
2017/09/02 13:15:40 INFO  : Google drive root 'acd/OUTPUT/ARCHIVE/ALLELUIA': Looking for duplicates using interactive mode.
$

Then after renaming both items to Alleluia_Titles-Backplate.mov:
$ rclone -v dedupe gd0:acd/OUTPUT/ARCHIVE/ALLELUIA
2017/09/02 13:20:27 INFO  : Google drive root 'acd/OUTPUT/ARCHIVE/ALLELUIA': Modify window is 1ms
2017/09/02 13:20:27 INFO  : Google drive root 'acd/OUTPUT/ARCHIVE/ALLELUIA': Looking for duplicates using interactive mode.
2017/09/02 13:20:28 NOTICE: Alleluia_Titles-Backplate.mov: Found 2 duplicates - deleting identical copies
2017/09/02 13:20:28 NOTICE: Alleluia_Titles-Backplate.mov: Deleting 1/2 identical duplicates (md5sum "513bd7f7d60664d2c4665441fc6128d9")
2017/09/02 13:20:29 INFO  : Alleluia_Titles-Backplate.mov: Deleted
2017/09/02 13:20:29 NOTICE: Alleluia_Titles-Backplate.mov: All duplicates removed

Maybe it's a Unicode thing...

A little investigation with python shows that though these files look identical, they aren't as they have different unicode encoding
>>> a = u"Alléluia_Titles-Backplate.mov"
>>> b = u"Alléluia_Titles-Backplate.mov"
>>> a == b
False
>>> a
u'Alle\u0301luia_Titles-Backplate.mov'
>>> b
u'All\xe9luia_Titles-Backplate.mov'
>>>

Not sure exactly how this happened, but OS X file name normalization has probably got something to do with it!
It would probably make sense for rclone dedupe to normalize the file names though, so I'll re-title the issue accordingly.


changed the episode names for a better experience.

Hello. I used the code you gave me in the issues and modified it a little. This gives a better experience in my opinion.
Example: Getsuyoubi no Tawawa - 01.mp4,  Getsuyoubi no Tawawa - 11.mp4

Hey @ayan-akd, thanks for this pull request. It may be an individual preference for the file name format. As a common way for the file name, I'd like to leave it as it is now.
I'm closing this pull request, feel free to keep this change in your branch if it fits your need. Cheers.


Refactor/adding mutable state builder tests iv

What changed?

Grinds out some tests for a fiddly function assignEventIDToBufferedEvents who's function it is is to increment the various counters and ensure that all buffered decision tasks have assigned IDs.
Adds a few minor guards for the logging functions

Why?

How did you test it?

Potential risks

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 018e2c5b-524c-4ca0-bf7a-1119f4e3b280
Details

18 of 18 (100.0%)  changed or added relevant lines in 1 file are covered.
81 unchanged lines in 11 files lost coverage.
Overall coverage decreased (-0.005%) to 64.056%

Files with Coverage Reduction
New Missed Lines
%

common/peerprovider/ringpopprovider/config.go
2
81.58%

service/history/task/transfer_active_task_executor.go
2
72.38%

service/history/execution/mutable_state_util.go
2
78.48%

common/persistence/historyManager.go
2
66.67%

common/persistence/statsComputer.go
3
94.64%

service/frontend/wrappers/metered/metered.go
4
65.5%

common/task/fifo_task_scheduler.go
5
84.54%

service/history/task/fetcher.go
5
85.57%

service/history/task/cross_cluster_task_processor.go
8
80.79%

common/persistence/sql/workflow_state_maps.go
19
83.84%

Totals

Change from base Build 018e2a8f-ec9b-4f64-85d5-18430de8b3d4:
-0.005%

Covered Lines:
93382

Relevant Lines:
145782

💛  - Coveralls


draft order creation

Hiya.
I'm playing around with the Draft Order objects and I'm getting nowhere with it. I tried it with the shopify api gem, and the shopify python api, and then dropped into curl. same issue on all of them.
I've tried custom items:
curl -X POST -v<EMAIL_ADDRESS>-v -d "{'draft_order': {'line_items': [{'title': 'foo', 'quantity': 1, 'taxable': true, 'price': 1}]}}"
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to whydontyoujust.myshopify.com (<IP_ADDRESS>) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.myshopify.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
* Server auth using Basic with user ''
> POST /admin/draft_orders.json HTTP/1.1
> Host: whydontyoujust.myshopify.com
> Authorization: Basic auth
> User-Agent: curl/7.51.0
> Accept: */*
> Content-Length: 95
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 95 out of 95 bytes
< HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Tue, 21 Mar 2017 18:37:43 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Frame-Options: DENY
< X-ShopId: 3426569
< X-ShardId: 19
< X-Shopify-Shop-Api-Call-Limit: 1/40
< HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT: 1/40
< X-Stats-UserId: 0
< X-Stats-ApiClientId: 1581885
< X-Stats-ApiPermissionId: 45817929
< X-Request-Id: 24029daf-2df7-4507-aad5-6ee1420b3776
< Content-Security-Policy: default-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval' https://* shopify-pos://*; block-all-mixed-content; child-src 'self' https://* shopify-pos://*; connect-src 'self' wss://* https://*; script-src https://cdn.shopify.com https://checkout.shopifycs.com https://js-agent.newrelic.com https://bam.nr-data.net https://dme0ih8comzn4.cloudfront.net https://api.stripe.com https://mpsnare.iesnare.com https://appcenter.intuit.com https://www.paypal.com https://stats.g.doubleclick.net https://www.google-analytics.com https://visitors.shopify.com https://v.shopify.com https://widget.intercom.io https://js.intercomcdn.com 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests; report-uri /csp-report?source%5Baction%5D=create&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fdraft_orders&source%5Bsection%5D=admin&source%5Buuid%5D=24029daf-2df7-4507-aad5-6ee1420b3776
< X-Content-Type-Options: nosniff
< X-Download-Options: noopen
< X-Permitted-Cross-Domain-Policies: none
< X-XSS-Protection: 1; mode=block; report=/xss-report?source%5Baction%5D=create&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fdraft_orders&source%5Bsection%5D=admin&source%5Buuid%5D=24029daf-2df7-4507-aad5-6ee1420b3776
< X-Dc: ash
<
* Curl_http_done: called premature == 0
* Connection #0 to host whydontyoujust.myshopify.com left intact
{"errors":{"draft_order":"Required parameter missing or invalid"}}

I then tried it with a legit variant that I know has inventory and can be added to a cart:
curl -X POST -v<EMAIL_ADDRESS>-v -d "{'draft_order': {'line_items': [{'variant_id': '32146881610', 'quantity': 1}]}}"
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to whydontyoujust.myshopify.com (<IP_ADDRESS>) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.myshopify.com
* Server certificate: DigiCert SHA2 High Assurance Server CA
* Server certificate: DigiCert High Assurance EV Root CA
* Server auth using Basic with user ''
> POST /admin/draft_orders.json HTTP/1.1
> Host: whydontyoujust.myshopify.com
> Authorization: Basic
> User-Agent: curl/7.51.0
> Accept: */*
> Content-Length: 79
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 79 out of 79 bytes
< HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Tue, 21 Mar 2017 18:39:22 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Frame-Options: DENY
< X-ShopId: 3426569
< X-ShardId: 19
< X-Shopify-Shop-Api-Call-Limit: 1/40
< HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT: 1/40
< X-Stats-UserId: 0
< X-Stats-ApiClientId: 1581885
< X-Stats-ApiPermissionId: 45817929
< X-Request-Id: 769066a1-f48d-45e1-9cae-55a496e9f4df
< Content-Security-Policy: default-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval' https://* shopify-pos://*; block-all-mixed-content; child-src 'self' https://* shopify-pos://*; connect-src 'self' wss://* https://*; script-src https://cdn.shopify.com https://checkout.shopifycs.com https://js-agent.newrelic.com https://bam.nr-data.net https://dme0ih8comzn4.cloudfront.net https://api.stripe.com https://mpsnare.iesnare.com https://appcenter.intuit.com https://www.paypal.com https://stats.g.doubleclick.net https://www.google-analytics.com https://visitors.shopify.com https://v.shopify.com https://widget.intercom.io https://js.intercomcdn.com 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests; report-uri /csp-report?source%5Baction%5D=create&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fdraft_orders&source%5Bsection%5D=admin&source%5Buuid%5D=769066a1-f48d-45e1-9cae-55a496e9f4df
< X-Content-Type-Options: nosniff
< X-Download-Options: noopen
< X-Permitted-Cross-Domain-Policies: none
< X-XSS-Protection: 1; mode=block; report=/xss-report?source%5Baction%5D=create&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fdraft_orders&source%5Bsection%5D=admin&source%5Buuid%5D=769066a1-f48d-45e1-9cae-55a496e9f4df
< X-Dc: ash
<
* Curl_http_done: called premature == 0
* Connection #0 to host whydontyoujust.myshopify.com left intact
{"errors":{"draft_order":"Required parameter missing or invalid"}}

the docs mark this as beta, which means live stuff could've totally changed by now, but something's missing :/
https://help.shopify.com/api/draft-orders#tag/Create%2Fpaths%2F~1admin~1draft_orders.json%2Fpost
@kevinhughes27 @maartenvg @dominiquesr

@orenmazor you're not sending JSON, you're sending with Content-Type: application/x-www-form-urlencoded.

crap! found my problem as soon as I posted here. wrong header.
^H^H^H^H^H NVM

I noticed that while this is working, its not generating a shipping line. it is, however, generating a tax line.

That is correct. Shipping lines need to be done explicitly, taxes are calculated for you.

is there no way for me to make it calculate that without using Cart API? :(

Eventually we might have a shipping rates endpoint like for the checkout API, where you would be able to pick a shipping rate to apply to the draft order. But for now we only support custom shipping lines. If you don't apply a shipping line and the draft requires shipping, the customer will be prompted to select shipping, or the merchant can do it via the admin. If your app is merchant facing and you're doing the completion of the drafts via the API as well, you really have to set a custom shipping line.

Ah that's a bummer :(

You guys should totally just add shipping line generation. That'd literally make my week. :unicorn: points up the wazoo!

Upvote for shipping lines! :)

Please implement this. It blows my mind that I can't get shipping info via api


Updated CODE_OF_CONDUCT.md

Related Issues or bug

Info about Issue or bug
Fixes: #12

Proposed Changes

Inserted Github profile link

Additional Info

Any related Issues

Screenshots

Original
Updated

original screenshot
**updated screenshot **

merge conflicts @ShivaRapolu01


plugins: add todo and todo-backend

Added a new TODO plugin, split into @backstage/plugin-todo and @backstage/plugin-todo-backend.
The plugin lists // TODO comments in the source code for each entity and displays them in a table.

I'm astonished at how simple and great this idea is.

@Rugvip We should definitely add this plugin to the marketplace :) https://github.com/backstage/backstage/tree/master/microsite/data/plugins

I tried this locally off your branch, and at first couldn't get it to work.  A possible oddity I wanted to run by you.
I have about a dozen catalog-info YAMLs all loaded from the same GitHub repo, but none of them RELATE to that repo.  However, each does have a relevant GitHub annotation like so:
annotations:
    github.com/project-slug: 'myorg/myreponame'

Running the code, it SEEMS like it is ONLY scanning the repo which HOLDS the catalog-info.yaml in, regardless of the annotation here.  Is that correct?  I suppose that makes sense. Thinking even things like the sample components that get loadded in the example app then won't work with this plugin, since they would all effectively scan https://github.com/backstage/backstage?
That shouldn't prevent this getting merged in, was just thinking about it in context for how I might get it working for those where I don't store the catalog-info.yaml always separately.

@adamdmharvey You'll see it uses the SOURCE_LOCATION_ANNOTATION if present. That's the appropriate one to use for something like this, I'd say, when you point at source code that's not colocated with the yaml file.

@adamdmharvey what freben said :grin:
Also added a section to the todo-backend readme explaining how the scanned files are selected.

:shipit: :shipit: :shipit:  😸


note "mvn install -D assembleDirectory=" option

suggestion from https://github.com/cflint/CFLint/issues/51

Thank you


[NTR/gene] Neurocutaneous Syndrome

Preferred gene-related syndrome label
Neurocutaneous Syndrome
Could be a useful lgrouping term for CEDNIK syndrome, NF1, TS, etc.
The 3 most common types of neurocutaneous syndromes are:
Tuberous sclerosis (TS)

Neurofibromatosis (NF), including NF1, NF2, and Schwannomatosis

Sturge-Weber disease

@ahamosh thoughts?

Below is the definition of a phakomatosis. Do you want neurocutaneous or neuroectodermal? Let's discuss tomorrow.
phakomatoses phakos, Greek, lens Neurocutaneous syndromes A group of inherited conditions–many are AD–that cause disordered growth of ectodermal tissues, with distinctive skin lesions and tumors and/or defects of the nervous system and/or retina
Phakomatoses
Ataxia-telangiectasia An AR disorder characterized by cerebellar ataxia, oculomotor apraxia, telangiectasias of bulbar conjunctiva, skin of ears, and skin folds–appearing by age 3–and sinopulmonary infections; telangiectasias later extend to the butterfly region of the face; most Pts die in adolescence
Basal cell nevus syndrome See there.
Nevus sebaceous of Jadassohn An occasionally AD clinical condition characterized by a congenital solitary lesion most often present in the scalp which, when large, may be associated with internal derangements eg intracranial masses, seizures, mental retardation, skeletal abnormalities, pigmentary changes, ocular lesions and renal hamartomas; 10% of the skin lesions develop into basal cell carcinoma
Sturge-Weber disease Encephalotrigeminal angiomatosis An occasionally AD condition characterized by congenital capillary hemangiomas of the head & neck, following normal developmental milestones, mental retardation may ensue, caused in part by the sluggish flow of blood through the pial vessels and venous hemangiomas in the leptomeninges and frontoparietal cortex with ipsilateral port-wine nevi, 'tram-track' radiopacities on the skull caused by calcification of the cerebral cortex
Tuberous sclerosis Bourneville-Pringle disease An AD disorder–50% arise de novo Clinical Convulsions, seizures, mental retardation, skin lesions–adenoma sebaceum, sebaceous gland atrophy, angiofibromas, dermal fibrosis with dilated capillaries, shagreen patches, cardiac rhabdomyomas, pulmonary fibrosis, bronchiolar hematomas, bilateral tubular adenomas of kidneys, pancreatic cysts, angiomyolipomas, myxedematous glossitis, spina bifida
von Hippel-Lindau disease An AD condition with retinal hemangioblastoma, ↓ erythropoietin production, cerebellar hemangioblastoma Clinical Ataxia, headache, papilledema, angiomas of the liver, kidney, renal adenomas, papillary cystadenomas of epididymis, pancreatic cysts, adrenal pheochromocytomas;1⁄4 develop renal cell cancer
von Recklinghausen disease A relatively common–1/3500 AD condition Clinical Neurofibromas, cafe-au-lait spots of skin, scoliosis, gliosis, glioblastoma multiforme, ependymoma, meningioma and schwannoma, 5-10% sarcomatous degeneration, spina bifida and glaucoma. See Neurofibromatosis.
Note: Neurofibromatosis, tuberous sclerosis, and von Hippel disease constitute the 'classic' phakomatoses


add docker-entrypoint.sh script, make environment compatible with<EMAIL_ADDRESS>

Closes #13.

@astorije This is ready to merge now (btw this does not bump thelounge version to 2.0, it just preps the docker container environment for 2.0)


[10.x] Replace password reset string constants with enum

With dropping php8.0 support it makes sense to use an enum to represent a limited set of responses.
This PR replaces the password reset string constants with an enum. I have used a string backed enum so it can be used with minimal migration to support both Laravel9 and 10:
$responseString = is_object($response) ? $response->value : $response;

If this deemed unnecessary I will remove the constants from the interface and the test.

Heya, I don't really see any big benefit of doing this? The current way works fine and this is only a breaking change to users.

It basically gives an interface for the response and thus prevents errors.
For example random netizen Joe watched a tutorial that says error states should be handled first and writes the following (very bad code):
    public function reset(Request $request)
    {
        $status = $this->passwordBroker->reset(...);

        if ($status == Password::INVALID_USER){
            return 'invalid user page';
        }

        if ($status == Password::INVALID_TOKEN){
            return 'invalid token page';
        }

        Auth::login('user resolved request data');

        return 'home page';
    }

And he also uses the RandomPasswordResettingPackageNo57 where the maintainer decided to return passwords.service-unavailable whenever the upstream service is unavailable. Now when the upstream service is unavailable the user will be logged in after a failed password reset.


The client should probably follow permanent redirects while downloading the full chain from the issuer

It looks like letsencrypt has changed something, so now acme-client (0.1.16, FreeBSD) croaks with
acme-client: http://cert.int-x3.letsencrypt.org/: bad HTTP: 301

If one tries to access the URL in question by hand, the redirect is towards
https://letsencrypt.org/cert.int-x3/

I am surprized that acme-client does not follow redirects already, was it coded like that for security reasons?

Issue still going on

same here....

acme-client takes its instructions for the the X509 certificate, CA issuer (<IP_ADDRESS>.<IP_ADDRESS>.2), which directs to http://cert.int-x3.letsencrypt.org/. However, http://cert.int-x3.letsencrypt.org/ redirects to https://cert.int-x3.letsencrypt.org/ now:
$ curl --head "http://cert.int-x3.letsencrypt.org/"
HTTP/1.1 301 Moved Permanently
Server: AkamaiGHost
Content-Length: 0
Location: https://cert.int-x3.letsencrypt.org/
Cache-Control: max-age=0
Expires: Sun, 11 Mar 2018 11:55:48 GMT
Date: Sun, 11 Mar 2018 11:55:48 GMT
Connection: keep-alive

dofullchain in netproc.c would need updating to follow the redirect, if I'm not mistaken.

Quick hack to solve this problem:
--- netproc.c.orig      Wed Feb  1 16:20:14 2017
+++ netproc.c   Sun Mar 11 15:15:01 2018
@@ -553,8 +553,28 @@
{
int      rc = 0;
long     lc;

  char     *http_prefix= "http:";

  char     *https_prefix= "https:";

  char     addrbuf[256];

  dodbg("%s: full chain", addr);

  /* If the scheme is 'http' (as opposed to 'https') then rewrite

   * the scheme to 'https'. The alternative is to follow the 301

   * that results from trying to fetch the http URL.

   */

  if (strncmp(http_prefix, addr, strlen(http_prefix)) == 0)

  {

          lc= snprintf(addrbuf, sizeof(addrbuf), "%s%s",

                  https_prefix, addr+strlen(http_prefix));

          if (lc < 0 || lc >= sizeof(addrbuf))

          {

                  warnx("%s: string too long", addr);

                  return (rc);

          }

          dodbg("using %s instead of %s", addrbuf, addr);

          addr= addrbuf;

  }

  if ((lc = nreq(c, addr)) < 0)
          warnx("%s: bad comm", addr);

netproc.c.log

@phicoh thank you!

For those using acme-client on FreeBSD, and until a more permanent fix is made, use patch-netproc.c.log and place its content in the file /usr/ports/security/acme-client/files/patch-netproc.c to make it work from the ports. Then do the usual make and make install.


Fix Travis build break by requiring Ubuntu Focal

The adoption of new Node.js versions in the previous commit broke Travis as the default Ubuntu level has too old a level of gcc for Node.js 18. This PR forces the use of Ubuntu Focal (20.04) which does have the right support (and you can see Travis working in this PR)

Forgot to add the DCO message, so trying again...


Lite node improperly restarting on cron job when multiple data markets have been started.

Describe the bug
If multiple data markets are started from the same snapshotter-lite-v2 directory, then only the snapshotters that are snapshotting against the data market that was started last will be able to successfully restart via cron job. This appears to be caused by the container failing to find the correct config and compute directories and subsequently failing to construct the config files.
To Reproduce
Affected versions: v2.0.0
Steps to reproduce the behavior:

Run ./build.sh and select 1 for the Aave data market
In a separate terminal/screen, run ./build.sh again and select 2 for the Uniswap data market
Allow the nodes to reset via cron job and the Aave node should fail to properly restart

Expected behavior
The lite nodes should not be dependent on dynamic compute and config directories.
Proposed Solution
Create dynamic links in the docker compose file for each data market by namespace.
Caveats
N/A
Additional context
N/A

Solution is simple, remove these mount volumes and let these configs and computes stay in docker containers.
      - ./computes:/computes
      - ./config:/config

Moving to the current iteration to allow time for testing and implementation.

Update: @Seth-Schmidt  has already implemented it in https://github.com/PowerLoom/snapshotter-lite-v2/commit/3c841edd5f35, just need to test and merge to main.


Popover: Update to support the latest version of popper.js

Last I heard, there were some style changes that were affecting our component.

[ ] Update to the latest popper.js library
[ ] Fix any broken styles

Probably should handle #120 at the same time


Updated Google Image search to limit searching images licenced by creative common.

Fixes

Fixes #26
Description
Query to search google images has been updated to search creative-common licenced images.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main or master).
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[ ] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@MdSahil-oss Thanks for this! It looks like there's some merge conflicts, please resolve those when you have a moment, and I'll re-review!

@MdSahil-oss It appears that while resolving the merge conflicts you accidentally reverted the changes you had made previously.

@possumbilities Now, this PR is also upto data with latest merge.


Add selectPreviousOccurrence

counterpart of :editor.sublime.selectNextOccurrence
cf https://github.com/LightTable/LightTable/issues/2215#issuecomment-222798464

@sbauer322 are you sure Sublime supports it? I know it has undo selection but I am not so sure about select previous.

Since I am not certain of this, I will remove the label for the time being.


Updated library logic and dependencies

Closes #7 and includes some more things:

updated dependencies
removed some unimportant files
some smaller improvements

@Piashsarker Is it ok?


Issues with Keypoint Matching in Multi-view PCA Loss using Identically Named Keypoints from SLEAP

I'm working on a project that involves 8 different camera views and I want to aligning keypoints for using Multi-view PCA loss. The keypoints in my dataset were labeled using SLEAP, and they share the same names across all views (e.g., "left_ear" in all cameras).
I’m encountering an issue where it seems the identical names across different views might be causing problems in correctly matching the keypoints during the setup of the Multi-view PCA loss.
The error I’m seeing is:

mirrored_column_matches parameters
Error executing job with overrides: []
Traceback (most recent call last):
File "/teamspace/studios/this_studio/macaques/lightning-pose/scripts/train_hydra.py", line 35, in train_model
train(cfg)
File "/home/zeus/miniconda3/envs/cloudspace/lib/python3.10/site-packages/typeguard/init.py", line 1033, in wrapper
retval = func(*args, **kwargs)
File "/teamspace/studios/this_studio/macaques/lightning-pose/lightning_pose/train.py", line 53, in train
pretty_print_cfg(cfg)
File "/teamspace/studios/this_studio/macaques/lightning-pose/lightning_pose/utils/init.py", line 29, in pretty_print_cfg
for k, v in val.items():
omegaconf.errors.ConfigAttributeError: ListConfig does not support attribute access
full_key: mirrored_column_matches[items]
object_type=list
How should I correctly match keypoints across different views when they have identical names? Could the error above be caused by the way the keypoints are being referenced or configured? If so, what’s the recommended approach for setting up Multi-view PCA loss in this scenario?
Any guidance or examples would be greatly appreciated!
My current setup looks like this:
mirrored_column_matches:  # Multi-view PCA loss
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

@Freddie-Faulich your current setup should work, although you might need to run git pull and try again because I changed the way mirrored_column_matches gets parsed a couple weeks after the multiview merge (see commit)
Alternatively, since the keypoints are all named the same, and in the same order, you can just provide a single list that gets applied to all views like so:
mirrored_column_matches: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

Let me know if one or both of those don't work for you!

@Freddie-Faulich just checking in on this, were you able to get this working?

closing due to inactivity


Issue with lm_embeddings on gpu

Hi, great work!
I tried to run an example with inference from README on a machine with gpu but got an issue in this line:
https://github.com/plainerman/DiffDock-Pocket/blob/main/datasets/process_mols.py#L408
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
So I figure it is possible to fix here: https://github.com/plainerman/DiffDock-Pocket/blob/main/datasets/process_mols.py#L397
valid_lm_embeddings.append(lm_embedding_chains[i][mask].cpu())
Thanks,
Ernest

Thank you for reporting this issue with a concrete fix! I just updated the code :)


[Bug] Inline compilation doesn't give full error messages, compared to compiling a file

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
When trying to compile an inline query which is invalid (e.g. bad Jinja), dbt returns Encountered an error: Error parsing inline query, but when trying to compile the same code saved as a model file, you get the much more helpful
Compilation Error in model compile (models/compile.sql)
  unexpected char '#' at 53
    line 1
      {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}

Expected Behavior
dbt should give the useful error message regardless of whether compilation is happening inline or from a proper file.
This is reproducible in the Cloud IDE and in Core itself, but is especially annoying in the IDE given that I commonly iterate on queries using the Compile button in an unsaved new file.
Steps To Reproduce

Run this: dbt compile --inline "{% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}"
Observe the unhelpful error message shown above
Create a file models/demo.sql containing the same one line: {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}
Run dbt compile -s demo
Observe the helpful error message shown above

Relevant log output
No response
Environment
- OS: macOS
- Python: 3.8.10
- dbt: 1.7.0 locally, 1.6.latest on Cloud

Which database adapter are you using with dbt?
snowflake
Additional Context
No response

Commands
Here's what I ran with the dbt-core CLI in a local environment:
dbt compile --inline "{% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}"
mkdir -p models
cat << EOF > models/demo.sql
{% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}
EOF
dbt compile -s models/demo.sql
rm models/demo.sql

Output
The output between the two commands is really close to each other:
$ dbt compile --inline "{% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}"

23:34:23  Running with dbt=1.7.5
23:34:24  Registered adapter: duckdb=1.7.0
23:34:24  Error while parsing node: inline_query
unexpected char '#' at 53
  line 1
    {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}
23:34:24  Encountered an error:
Error parsing inline query

$ dbt compile -s models/demo.sql

23:34:58  Running with dbt=1.7.5
23:34:58  Registered adapter: duckdb=1.7.0
23:34:59  Encountered an error:
Compilation Error in model demo (models/demo.sql)
  unexpected char '#' at 53
    line 1
      {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}

JSON logs
It might be a little easier to see what is going on by looking at the logs in JSON format:
Command:
dbt --log-format json compile --inline "{% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}"

Ouput:
{"data": {"log_version": 3, "version": "=1.7.5"}, "info": {"category": "", "code": "A001", "extra": {}, "invocation_id": "f831cc70-84ce-4640-a0c9-db1d6d10618d", "level": "info", "msg": "Running with dbt=1.7.5", "name": "MainReportVersion", "pid": 54813, "thread": "MainThread", "ts": "2024-02-09T23:44:15.925431Z"}}
{"data": {"adapter_name": "duckdb", "adapter_version": "=1.7.0"}, "info": {"category": "", "code": "E034", "extra": {}, "invocation_id": "f831cc70-84ce-4640-a0c9-db1d6d10618d", "level": "info", "msg": "Registered adapter: duckdb=1.7.0", "name": "AdapterRegistered", "pid": 54813, "thread": "MainThread", "ts": "2024-02-09T23:44:16.234623Z"}}
{"data": {"exc": "unexpected char '#' at 53\n  line 1\n    {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}", "node_info": {"materialized": "", "node_finished_at": "", "node_name": "inline_query", "node_path": "sql/inline_query", "node_started_at": "", "node_status": "failed", "resource_type": "", "unique_id": "sqloperation.test.inline_query"}}, "info": {"category": "", "code": "I069", "extra": {}, "invocation_id": "f831cc70-84ce-4640-a0c9-db1d6d10618d", "level": "error", "msg": "Error while parsing node: inline_query\nunexpected char '#' at 53\n  line 1\n    {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}", "name": "ParseInlineNodeError", "pid": 54813, "thread": "MainThread", "ts": "2024-02-09T23:44:16.421816Z"}}
{"data": {"exc": "Error parsing inline query"}, "info": {"category": "", "code": "Z002", "extra": {}, "invocation_id": "f831cc70-84ce-4640-a0c9-db1d6d10618d", "level": "error", "msg": "Encountered an error:\nError parsing inline query", "name": "MainEncounteredError", "pid": 54813, "thread": "MainThread", "ts": "2024-02-09T23:44:16.422572Z"}}

Commands:
mkdir -p models
cat << EOF > models/demo.sql
{% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}
EOF
dbt --log-format json compile -s models/demo.sql
rm models/demo.sql

Output:
{"data": {"log_version": 3, "version": "=1.7.5"}, "info": {"category": "", "code": "A001", "extra": {}, "invocation_id": "90462a0c-7ea0-4b31-9154-f26e5ee3d379", "level": "info", "msg": "Running with dbt=1.7.5", "name": "MainReportVersion", "pid": 54893, "thread": "MainThread", "ts": "2024-02-09T23:45:29.134386Z"}}
{"data": {"adapter_name": "duckdb", "adapter_version": "=1.7.0"}, "info": {"category": "", "code": "E034", "extra": {}, "invocation_id": "90462a0c-7ea0-4b31-9154-f26e5ee3d379", "level": "info", "msg": "Registered adapter: duckdb=1.7.0", "name": "AdapterRegistered", "pid": 54893, "thread": "MainThread", "ts": "2024-02-09T23:45:29.505358Z"}}
{"data": {"exc": "Compilation Error in model demo (models/demo.sql)\n  unexpected char '#' at 53\n    line 1\n      {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}"}, "info": {"category": "", "code": "Z002", "extra": {}, "invocation_id": "90462a0c-7ea0-4b31-9154-f26e5ee3d379", "level": "error", "msg": "Encountered an error:\nCompilation Error in model demo (models/demo.sql)\n  unexpected char '#' at 53\n    line 1\n      {% set target_channels = ['C03SAHKKG2Z','CBSQTAPLG'] ##hello world  %} {{ target_channels }}", "name": "MainEncounteredError", "pid": 54893, "thread": "MainThread", "ts": "2024-02-09T23:45:29.717301Z"}}

The former has two error messages, and the first of the two is the one that was helpful to you.
The latter only has one error message, and it lines up with the helpful one above.
So this looks fine in the CLI to me. Is it looking erroneous / unhelpful in the CLI to you? Or just in the Cloud IDE?

Hmmm I can no longer repro this in either Cloud IDE or VSCode + dbt Core, but I would've sworn that it was happening in both of them. Let's close this out and pretend it never happened! (TY for your graciousness as always)


SPDM

https://www.dmtf.org/sites/default/files/standards/documents/DSP0274_1.1.0.pdf

An example for an SPDM responder was added in 31ae2485b002b943becfef3020f342580899edde.


Trailing Commas Don't Throw Exceptions

They aren't valid in JSON.

Are you referring to trailing commas like the example below, where
{
    "banana": true,
}

Are you getting any errors in the file?
On a side note, This isn't really an issue of SL-json, it uses Python's (or with Sublime-specific file extensions, Sublime's) builtin JSON parser instead of a linter, and displaying the first error it comes across.  So the output wouldn't be "Trailing Comma", but instead, an error caused by parsing something with a trailing comma, Expecting property name enclosed in double quotes

Did this answer your issue @jacobp100?

+1 on that.
Some plugin (Html/JS/CSS Prettify for example) can't load JSON files when there is a trailing coma, and it's hard to figure it out when the json file seems OK (no lint error, but error in the console)

I'm not even getting the "Expecting property name enclosed in double quotes" which would be fine, basically if I have strict lint on I would expect it would validate in such manner it would be considered across all platforms. If there would be extra settings just to enable this validation it would be fine. I know many languages are fine with the comman, but not all and that is the problem.

One solution is to uninstall SublimeLinter-json and install JSHint instead which can validate the json the way we need (extra comma is detected), jshint requires node but probably people with this issue have node already.

Having this problem also. @truhlikfredy I've been using eslint for years and wouldn't like to go back to jshint. Do you know if I restrict jshint to only json files?

I found a json plugin for eslint but couldn't figure out how to pass the json extension to the eslint CLI properly for the linter settings. I'm giving VSCode a try now, since these things just work out of the box  :)

I can't reproduce any of this in recent versions of the packages and ST3. Also, JavaScript linters tend to lint JSON very well too.


{Packaging} Add global warning message for Alpine-based image deprecation

Description
https://eng.ms/docs/more/containers-secure-supply-chain/faq
The major reason behind restricting the use of Alpine Linux at Microsoft derives from C library incompatibilities. Alpine Linux is built around musl and as with all engineering choices this one has trade-offs that are acceptable for the Alpine community but may not be acceptable for Microsoft and its customers.
For example, SDL and other requirements call for hardening that isn't implemented or resourced to be implemented in musl. See for example how CBL-Mariner implements them. Also, when building a Linux application in the build environment and transporting the binaries to a different Linux "vessel" for distribution, the disparate toolchains become more of a problem. Alpine Linux also lacks several certifications that our customers require.
Historically, the two major arguments in favor of Alpine were its "minimalist" footprint and less exposed surface for vulnerabilities. Minified Ubuntu and CBL-Mariner images, improved caching and transports, more sophisticated container image building patterns and the broader availability of distroless images have eliminated most of the argument.

Packaging


Enable loading meta from csv

Please confirm that this PR has done the following:

[x] Tests Added
[x] Documentation Added
[x] Name of contributors Added to AUTHORS.rst
[x] Description in RELEASE_NOTES.md Added

Description of PR
This PR enables reading a meta dataframe from a csv file (and adds a test for it).
closes #495

pinging @coroa for a review


Expose Factoid sheet as an API

The Google Sheet has a "Factoid" sheet. Please commit that along with the automatic action. (Maybe a separate website_data.json)?

Factoids are up: https://api.covid19india.org/website_data.json
closed 570c729ee71e9a8d2542ba60f985fd39fca57da2


Error thrown on FitbitDataManager.fetch()

The Fitbitter throws an exception on the following code:
          icon: Icon(Icons.device_thermostat),
          iconSize: 50,
          onPressed: () async {
            var startDate = DateTime.now().subtract(Duration(days: 18));
            var endDate = DateTime.now();

            var userId = await FitbitConnector.authorize(
              context: context,
              clientID: APIKeys.fitbitClientID,
              clientSecret: APIKeys.fitbitClientSecret,
              callbackUrlScheme: APIKeys.fitbitCallbackScheme,
              redirectUri: APIKeys.fitbitRedirectUri,);

            var fitbitActivityTimeseriesDataManager =
            FitbitActivityTimeseriesDataManager
            (clientID: APIKeys.fitbitClientID,
            clientSecret: APIKeys.fitbitClientSecret,
                type: "calories",);

            var rawData = await fitbitActivityTimeseriesDataManager.fetch(
                FitbitActivityTimeseriesAPIURL.dateRangeWithResource(
              userID: userId,
              startDate: startDate,
              endDate: endDate,
              resource: "calories",),)
            as List<FitbitActivityTimeseriesData>;

            print(rawData);
            //Navigator.pushNamed(context, AllDevices.routeName);
          },

The following error is thrown:
Failed assertion: line 315 pos 7: 'instanceFactory != null': Object/factory with  type SharedPreferences is not registered inside GetIt.  (Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance; Did you forget to register it?) #0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39) #1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5) #2      _GetItImplementation._findFactoryByNameAndType (package:get_it/get_it_impl.dart:315:7) #3      _GetItImplementation.get (package:get_it/get_it_impl.dart:336:29) #4      _GetItImplementation.call (package:get_it/get_it_impl.dart:373:12) #5      new FitbitAuthAPIURL.isTokenValid (package:fitbitter/src/urls/fitbitAuthAPIURL.dart:112:34) #6      FitbitConnector.isTokenValid (package:fitbitter/src/fitbitConnector.dart:73:40) #7      FitbitDataManager._checkAccessToken (package:fitbitter/src/managers/fitbit<…>
Since the code resembles the example on GitHub as much as possible this shouldn't be the case.

Hi, can you please copy and paste your pubspec.yaml file?

Sorry but I can't reproduce the error. The snippet you sent me is working on my device without any problems. If somebody from the community will have the same problem I will reopen the issue.

Currently working on that

@merdandurmus and/or @nayanS95, I just released fitbitter 1.1.1.
It should fix the problem, can you check that?
Thanks


Wrong example in Transposition

There is an example as following
# Row-major, C-order
# largest axis changes fastest
A = np.arange(2 * 3).reshape(2, 3).copy(order='C')
...
# GOTCHA: ravel will copy the array so that everything is contiguous
# if the order differs
print(id(A.base), id(A.ravel().base), id(A.ravel(order='F').base))

which outputs
140675174489296<PHONE_NUMBER>44144<PHONE_NUMBER>89296

But A.ravel() should share the underlayer c-array with A, not the A.ravel(order='F').
Then why id(A.base) and id(A.ravel(order='F').base) have the same value? The reason is that they both are the None object, because A and A.ravel(order='F') own their memory.
So the right example should be:
print(id(A), id(A.ravel().base), id(A.ravel(order='F')))

outputs like something as:
4945177616<PHONE_NUMBER><PHONE_NUMBER>

BTW, thanks to this nice tutorial.

You're correct, thanks for pointing it out. I don't know why I had the extra .base arguments. Would you like to submit a PR?


58 multisig wallets created by the same address, managed by another address, and they are disposable wallets

Related Safe Addresses
0x3ce6a7eecd81bbfce6c7b039e5077eef7cd8f2ce
0x99bfa23ecdd539badc746bbc1963e026c06b02f1
0x3f77180cb0d14cbe65d8fe7530054d268ff0b75b
0x402a20145216eed247c8426924996f5068cc91d4
0x3bc66599aa2755cca6a4e8d7dee056386ccc09a0
0x7647f3fe140656ebee7833c61cd333abd3aa870b
0x7521634e724861fce46b3e6d40314d7cf0c9497d
0xe6d339a7c5cbfa813f4d5ee44ef8fd77fadb5005
0xf059c4fe0917a751829bd4e429aadea9a6f82e34
0x86c31b915b84378cfd18c472980922d8faada58f
0xd1100fb481990cdd06202d30f73e2f09c9a12f89
0x015dd85c69debf23a567df80e7480261bbd55127
0xb50c842463be4d1bd933117c04a35419ce3fb6a4
0x56cac161df77ce5d60e635553b3bb2fb7fd78a7f
0x677a11828e06196950ee02b226696a44f691c980
0xf293d7c07accd78c267988835e93c371bfd25e10
0x144973cc3e520c7e30a54c0ba1b2f1a39c37c130
0x9ed19640ab6855d791f7b48b995f9bd372ed00e4
0xd62cd0c5a392386179fd5d313fbbf602f95fbbb1
0x81b7433a7fa1fdd6baa362d1fe9aba4a1e42b98a
0x286cabf860b6ed0a43b29a565631daab6425e149
0xdacf71e33b63bff2b4dc41e362cbd9424cf4a432
0xad56b99b17d14987b0ee20cd4a620c4246091a3b
0x051f64e3a2d5ca37f929f1b4901fed5365605445
0xf6a53684b77f7e93e7e5c6dd4848f852bf0bb8cc
0x1ab42ba63d8a1fbf3d314dcf7d51c51e444b1d1a
0x9f23f685b5108478e69c4dd45e73dc7a75674cf8
0xb655f7e5ed94fcf420040bcd61944667c7ce6e1b
0x1d6b8c4380548d9356e24c6fb25cbb86a9060c6b
0x33cb163f8166528670936e2d881dde8e716f1384
0x5bc240d9ef9cef94b56d7f8a38a83e3f8e47e893
0xee835216a8e37feccf0c7610fafbaadf25601bb4
0x7bce07eee7f6a6e7b115bb50278dcafdffea5854
0xdbee4e9a1b2037e02210e906f4d1bb05dcc130c8
0x9e4bfb53769b46afbd9126ffe1ad56e019f5684f
0x5205b843efb9c297e0eff3cce34e9b32b755e44e
0xf55050f5559b7e277b21d952640f5fa55596ff8c
0x1a94961d6a1d91e8768d57183903a74f6578c399
0xc5e89b37ee508845a057ccf26ffedebe8d360d2b
0x556775c2ee90ce830eddea29de524c6f9d365f6b
0x99a258661cc39c02d1f5b2877bb43b6f491e139e
0x3b6e35435e2d47019e1f872c3f3157424a426079
0x341e15f0e1b2fb09d9bd5b782f7cf1fc9c1a09db
0xc158ed1732d6351222f0030fb9cde3e60a12d2b1
0xf1b48f2021e8944abeb08a760a322bbae7bfc352
0xf25d979bff320e61b9a9fdf10ef20a32a649e21a
0xc075fc07c9ff1b4496cf167b0ed6c2cb1c36a85c
0x8b7cbb06f193bcb5f80f5f1e66c8518c2e2fac00
0xaddbb774d31150aec2ed7b1cf27e23f10b143738
0xdcc2622232dd2766509d8794b34e2127dd9f6029
0xf1c154d86761b9ff0598a15339965b27ceabfd2a
0x6a3399031cd11debe387cb91aeec2e993bc0b8a7
0x5e44fd3077ae205c7eb53dd2e3d51b87b863f7df
0x809d021c5a91be46078024661900bf9ce15de9f5
0x076b07007baac3d3690bdc2fc03690eda9a40d14
0x96a674c05961cf0a84020c561e71de3091a97c60
0x972c3a64c4c0ccac2fd6b9f259496ef20900b10c
0x1c57bed3db5313dde5049c5391c9869da004cd05

Reasoning
I analyzed them one by one. And found some very unusual behaviour.
1>They all have exactly the same creater:
0x1a84e9f0c3e4d4f4278182a126ef6ba55fee0f3c
2>All transactions of these multi-signature addresses are initiated by the same address: 0x2e2c0ef26fa67c20a5dd49708f367261240c4bbf
3>All other owners of these multisig wallets are empty wallets：
0xaf723b0fec4772f3b219b7ce884e1afd38b0c85e, 0xd9cd8336b0551704fb8dc2c74865b9bad05f5484
3>The vast majority of these addresses left no funds behind. And the behavior is highly similar, transfer usd from a certain address once, and then transfered to other addressese by 0x2e2c0ef26fa67c20a5dd49708f367261240c4bbf.  These multi-signature wallets will never be used again after this, I am sure that these multi-signature wallets are automatically created disposable wallets.
The owner of the above three multi-sign addresses are all

0x1a84e9f0c3e4d4f4278182a126ef6ba55fee0f3c, create wallet
0x2e2c0ef26fa67c20a5dd49708f367261240c4bbf, main wallet,The actual control wallet of the multi-signature wallet, all outgoing transactions are initiated by this address, and use this wallet to provide the money to create wallets
0xaf723b0fec4772f3b219b7ce884e1afd38b0c85e, Empty wallet
0xd9cd8336b0551704fb8dc2c74865b9bad05f5484, Empty wallet

Methodology
The suspicious behavior of interacting with a large number of multi-signature wallets from the same address is first filtered through a script, and then on-chain is checked for suspicious associations between these addresses：
with target as (
select *
from url('https://raw.githubusercontent.com/safe-global/safe-user-allocation-reports/main/safe_user_allocations_reworked.csv', CSVWithNames)
), transactions as (
select t1.*
from ethereum.transactions t1
join target t2
on t1.to_address = t2.safe_address
)

select distinct to_address
from transactions
where from_address = lower('0x2e2c0ef26fa67c20a5dd49708f367261240c4bbf')

Abnormal behaviors include
Empty address
Same owner
Same transaction originator
Mutual transfer
Behavior similarity
Safe Address
0x817caa4219545346F135b94F83033D1A41831141
I'm not sure if these are airdrop farmers, but their behavior is really suspicious

Reasoning
I analyzed them one by one. And found some very unusual behaviour.
1>They all have exactly the same creater: 0x1a84e9f0c3e4d4f4278182a126ef6ba55fee0f3c

It's not uncommon to create separate Safes with the same account.

2>All transactions of these multi-signature addresses are initiated by the same address: 0x2e2c0ef26fa67c20a5dd49708f367261240c4bbf

Could be a relayer or excutor account.

3>All other owners of these multisig wallets are empty wallets： 0xaf723b0fec4772f3b219b7ce884e1afd38b0c85e, 0xd9cd8336b0551704fb8dc2c74865b9bad05f5484

The Safe supports off chain signing, hence there's no need to store ETH on owners.

3>The vast majority of these addresses left no funds behind. And the behavior is highly similar, transfer usd from a certain address once, and then transfered to other addressese by 0x2e2c0ef26fa67c20a5dd49708f367261240c4bbf. These multi-signature wallets will never be used again after this, I am sure that these multi-signature wallets are automatically created disposable wallets.

Yet these Safes have been used as store of value in the past for funds way above 1M USD and even far before a potential Safe spin off has been discussed.
I can't follow the argumentation how this is airdrop farming.


Add metric for no of transactions in the pool

This adds a metric so that we have easy visibility into the txn pool size for each node.
Checklist:

[ ] Document code purpose, how to use it

Mention expected invariants, implicit constraints

[ ] Tests were added for the new behavior

Document test purpose, significance of failures
Test names should reflect their purpose

[ ] All tests pass (CI will check this if you didn't)
[ ] Serialized types are in stable-versioned modules
[ ] Does this close issues? List them:

This adds a metric so that we have easy visibility into the txn pool size for each node.
Checklist:

[ ]  Document code purpose, how to use it

Mention expected invariants, implicit constraints

[ ]  Tests were added for the new behavior

Document test purpose, significance of failures
Test names should reflect their purpose

[ ]  All tests pass (CI will check this if you didn't)

[ ]  Serialized types are in stable-versioned modules

[ ]  Does this close issues? List them:


Could be something like a playground (as the swift playground)

It's a good start but it doesn't work with most of my channels (even the tests from Roku).
I wish it was something like a playground so we could learn programming brightscript writing some code and see the execution results. Something like a terminal which interprets brightscript code.
Anyway, it seems to be promising.

Working on it!