Slider stuck and not centered when use fade in - fade out

Steps to reproduce

i have empty page from directive A with some css
after its remove the css of empty page it just fade in/fade out a class ("element" .class="page") the page class contain the sliders
the slider are stuck to left even the value is 1.15 . until click on them and then they are go back to the center.

without fadein/fadeout . the sliders works great
thx for support
code directive A :
if(scope.emptyStatus == true)

            {
              $("#page").css('display','none');
              angular.element('html').css('background-image', 'url(\'' + "bg.jpg"+ '\')');

            }
            else {
              $(element).css('display','none');
            }

after some action:

  $('#emptyStatus').fadeOut(500);
                      angular.element('html').css('background-image', 'url(\'' + "bg.jpg"+ '\')');
                      $("#page").fadeIn(500);
                      scope.emptyStatus = false;

page controller:
        vm.brightSlider = {
          value: 1.15,
          options: {
             floor: 0.3,
             ceil: 2,
             step: 0.05,
             precision: 2,
            showSelectionBarFromValue: 1.15
          }
        };

slider code:
        <div class="brightnessSlider">
                      <rzslider rz-slider-model="vm.brightSlider.value"
                      rz-slider-options="vm.brightSlider.options"></rzslider>
                    </div>

https://github.com/angular-slider/angularjs-slider#my-slider-is-not-rendered-correctly-on-load

Also, handling show/hide of element via jQuery is not really the way to go with Angular. You should use ng-show or ng-if for that purpose, along with CSS transition if you need fading. This would not fix your issue but it would avoid future issues.

thx .  but how do I do the "click" on refreshSlider without ng-show or ng click
because i dont need ng click or ng show , it should upload without it

and I cant remove the fade in jquery now because its feature that working good for me :)

You don't have to click on vm.refreshSlider but just call it like vm.refreshSlider() when you show the slider.
My remark about fading is just an advice for writing better Angular apps, but it's not the reason of your issue.

thx a lot


significantly lower performance on streaming V4 than V2

Hi,
I'm running S3 GA6.2.3 with docker 1.10.3
I've been testing a backup system against S3, and i've seen significantly worse performance using streaming V4 rather than simple v2.
The response times from S3 are 4 to 5 times lower using V2. Avg response times are an order of magnitude slower on V4. I've attached a sample of logs that shows an S3/sproxydclient/nginx/sproxyd log stack for both V4 and V2 puts. The first log is V4, the second is V2.
Can you help?
-Marc
rman_test_v4.txt

Update: When this happens, i see node processes shoot up to 99% CPU on the servers handling the requests.

Removal of buffer.concat increased performance significantly: https://github.com/scality/S3/pull/419
According to @mastachand's estimates after the removal of buffer.concat streaming v4 is about 3.5 slower than v2 on the backup app he is running.

Let's keep it as is for now and revisit if needed in the future.


fix the issue that agent stuck in upgrade loop

rancher/rancher#9164

Commit message:

Describe what's the issue and how you fixed it.
Add a reference to the bug.

@loganhz Why this container was running as a daemon at first place?

@yasker I don't know the reason.  I think it shouldn't be a daemon.  This issue only happens when the host load is very high or docker responses very slow.

@loganhz https://github.com/rancher/cattle/commit/caa4828c101a0fb2dc66f4aa63040923abb316e2

hi @ibuildthecloud, I saw you have added -d in caa4828 two years ago. May I know the reason for it?
@cjellick found that Investigation revealed that there appears to be a race condition in our upgrade logic wherein if the rancher-agent-upgarde container takes about five seconds or longer to complete, rancher-agent removes and re-adds it.

Change scares me. I don't have context on why it was changed. @ibuildthecloud explicitly made this change, so I bet there's a reason. I'd prefer he gave input

I think @ibuildthecloud made that change so we can kill stuck container, which is probably more important than the race condition happens occasionally.
Still need @ibuildthecloud 's input.

@loganhz Can you come up with another approach to fix the issue? Except increasing the timeout.

Changed to timeout 60 docker run --privileged --name rancher-agent-upgrade -v /var/run/docker.sock:/var/run/docker.sock ${REQUIRED_IMAGE} upgrade


Pandas tables don't  appear in the published

Trying this little cutey package and published a article in medium and linked here and liked the package very much, but one sad thing is I don't see the pandas tables ? why?
the link to the article is here:
here

Can you zip your notebook and attach it here in another comment?

Hello,
Here is the compressed zip of the note book
Thanks and Regards
KVS Setty
On Thu, 2 Jul 2020 at 22:59, Ted Petrou<EMAIL_ADDRESS>wrote:

Can you zip your notebook and attach it here in another comment?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dexplo/jupyter_to_medium/issues/13#issuecomment-653133780,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGAO7TAXHRTK3HI3I7NTITDRZS7XLANCNFSM4OO6GVYA
.

Sorry I did not attach  zip file in the previous post ,please find it here.
How to Handle Missing Data with Python.zip

Just looked at your notebook. You are referencing the image How-to-Handle-Missing-Values-with-Python.jpg, but it doesn't exist. This isn't an issue with jupyter to medium. You need to find that image and place it in that directory with the notebook.


Generate exceptions?

Generate a specific exception type for a specific daemon type?

no need for this now


Alter a secret's CreatedDate

I want to change a FakeSecret's created_date. The reason is to validate that a lambda will update a secret based on the CreatedDate from boto3#secretsmanager#get_secret_value. So far I've implemented:
def change_moto_secret_value_created_date(key: str):
    moto.secretsmanager.secretsmanager_backends["eu-west-1"].secrets[key].created_date = date

But no luck as my client.get_secret_value() seems to be unaffected. Any tips on how to proceed?

Went into .secrets[key].versions and changed createdate:
for (k, v) in moto.secretsmanager.secretsmanager_backends["eu-west-1"].secrets[key].versions.items():
    if "AWSCURRENT" in v["version_stages"]:
        moto.secretsmanager.secretsmanager_backends["eu-west-1"].secrets[key].versions[k]['createdate'] = int(date.timestamp())

Do wish there was a better way...


Add an "About" display

Info to cover:

Who made this?
How do I send feedback or ask a question?
How is my source code used?
Where is my code processed?
What is the privacy policy?

Sounds good. @sethladd, can you provide the approx. text?

First cut:
About Dart Pad
Dart Pad is a free, open-source service to help developers learn about the Dart language and libraries. Source code entered into Dart Pad may be sent to servers running in Google Cloud Platform to be analyzed for errors/warnings, compiled to JavaScript, and returned to the browser. Learn more about Google's privacy policy.
Made with <3 by Google.

cc @lukechurch

Created https://github.com/dart-lang/dart-pad/wiki/Privacy-Policy as our privacy policy link.


Feature request: set labels/annotations on generated services

Current: cannot set custom labels or annotations on the generated k8s service objects
Want: ability to specify custom labels/annotations on service objects.
Being able to do something like this would be great:
service-r:
    metadata:
      annotations:
        external-dns.alpha.kubernetes.io/hostname: <hostname>
        metallb.universe.tf/address-pool: <pool>

Motivation: We want some services to be picked up by metallb. For this, we need to be able to set a custom label to a specific services ( e.g. the -r service). Currently, it seems we can only add the annotation with some post deployment. This is not ideal.

This is our TODO list. Ideally, we would like to add a service template but don't have an ETA yet.

We're using tailscale to expose our k8s services to our VPN and this would be very useful for us.


[stable/metabase] Version bump; added initContainers, extraVolumes, extraVolumeMounts.

What this PR does / why we need it:
This PR adds support of  initContainers, extraVolumes, extraVolumeMounts passed from values.yaml.
This in particular handy to install DB drivers into metabase. Examples provided in chart's values.yaml
Which issue this PR fixes
I haven't opened issue for that, but basically there is no way to install plugins at all.
Special notes for your reviewer:
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @pmint93

@pmint93 Could you please review/merge?

Sorry but this repo is deprecating in few days, will no longer be updated.
The community is still looking forward to another repository metabase/metabase#13581
For more information, see the Helm Charts Deprecation and Archive Notice, and Update.

@pmint93 there are few more days before this repo moved to archive.
Could you please merge PRs in order #23956 #24024
I really trying to avoid forking your chart and maintain it separately.

@pmint93 please...

@dene14 currently charts in this repo should accept bug fixes only, it's not a good idea to add new feature when it very close to be archived.
However, as I see there is no other locations that the chart available except this deprecating one. So I made a quick repo to host metabase chart for community to continue working with it https://pmint93.github.io/helm-charts/

Note: this is not official repository

You may move your contribution here https://github.com/pmint93/helm-charts
And about your changes: May we just adding option to mount existing volume to the pod plugins directory, so we manually put the drivers here instead of using empty volume and initContainer to download driver every time a pod created ?  Cause I really don't want this chart to be more complicated as it already is.


CNV-23376: Create new page for InstanceTypes VM creation flow

Signed-off-by: Aviv Turgeman<EMAIL_ADDRESS>📝 Description
changes introduced by this PR:

Changing the Catalog layout to have a horizontal nav layout, had to avoid using HorizontalNav from the console and used Tabs from PF to have an icon and a label in the tab's title.
Creating a new page layout for VM creation flow via InstanceTypes CR => CreateFromInstanceTypes, including dividing into sections and changing their styles with the onClick method.
Adding a new create option From bootable Volume to VirtualMachine list view create dropdown.

issue
UX design
sub task
🎥 Demo
https://user-images.githubusercontent.com/67270715/209933551-de694ce9-3d7f-445f-aa1f-35b32ec1deaa.mp4

This looks great!
/lgtm


Fix minor style issues

Pull Request (PR) description
Corrects style issues to resolve test failures in new custom PSSA tests.
This Pull Request (PR) fixes the following issues
Task list

[x] Added an entry under the Unreleased section of the change log in the CHANGELOG.md.
Entry should say what was changed, and how that affects users (if applicable).
[ ] Resource documentation added/updated in README.md in the resource folder.
[ ] Resource parameter descriptions added/updated in schema.mof
and comment-based help.
[ ] Comment-based help added/updated.
[ ] Localization strings added/updated in all localization files as appropriate.
[ ] Examples appropriately added/updated.
[ ] Unit tests added/updated. See DSC Resource Testing Guidelines.
[ ] Integration tests added/updated (where possible). See DSC Resource Testing Guidelines.
[x] New/changed code adheres to DSC Resource Style Guidelines and Best Practices.

@johlju - would you mind reviewing when you have time?

This change is

Codecov Report

Merging #94 into dev will not change coverage.
The diff coverage is n/a.

@@         Coverage Diff         @@
##            dev    #94   +/-   ##
===================================
  Coverage    95%    95%
===================================
  Files         8      8
  Lines      1071   1071
===================================
  Hits       1021   1021
  Misses       50     50


🐞 - Not compatible with<EMAIL_ADDRESS>unable to resolve peer dependency

Which @taiga-ui/* package(s) are the source of the bug?
core
Please provide a link to a minimal reproduction of the bug
No response
Is this issue blocking you?
Blocking
Description
@ng-web-apis/mutation-observer has been updated 4 days ago to 2.0 and it seems it causes a fresh install of Taiga to fail

https://www.npmjs.com/package/@ng-web-apis/mutation-observer
Angular version
14
Taiga UI version
2.53
Which browsers have you used?

[X] Chrome
[ ] Firefox
[ ] Safari
[ ] Edge

Which operating systems have you used?

[ ] macOS
[X] Windows
[ ] Linux
[ ] iOS
[ ] Android

@waterplea looks like you did the update to mutation observer could you look into it, impossible to use Taiga on a fresh project. Thanks
https://github.com/ng-web-apis/mutation-observer/pull/4

thanks for the quick update !!


Don't crash when a key doesn't exist

This will allow loading of 'incompatible' saves, but I definitely wouldn't want to save back in this state.

@voltagex Apologies it's taken me awhile to get back to you. I believe I've fixed this in a more general way in the new release. Take a look!


Option to disable "what's up?" in v6?

From Reddit (https://www.reddit.com/r/nomie/comments/zt4war/can_we_disable_whats_up_in_v6/)
I often find that when I want to track multiple events one after another, the "what's up?" prompt captures my device's focus and moves the screen to make room for the keyboard, so I end up tapping on an event I didn't intend to tap. Is it possible to disable that prompt, or at least keep it from forcing the screen to scroll?

So this doesn't happen on iOS, but I am seeing it on Android. The main culprit is on line 26 of domains/capture-log/capture-textarea.svelte if you remove the autofocus, it won't bring up the keyboard. However, we'd want to make sure to test it, as I'm not 100% certain what all that might affect.


Add starter for Webpack, SCSS, and TypeScript

Many modern AngularJS developers have moved to Webpack, SCSS, and TypeScript. Currently we have a TypeScript starter branch but it uses JSPM and CSS.
It would be good to show the community a solid starter repo that combined Webpack, SCSS, and TypeScript so that we could

Reproduce issues that some developers run into
Document and recommend ways to consume the AngularJS Material SCSS
Help the community move closer to a smooth upgrade path for Angular and Angular Material
Look at making this starter available via Stackblitz

This Stackblitz was working previously with the Angular CLI, but it is now giving me CORS issues.

The TypeScript branch has been updated ot the latest version of AngularJS and TypeScript along with the master version of AngularJS Material. This should help move us in the right direction.
I wasn't able to update SystemJS because of breaking changes. We should probably skip messing with that and just go to Webpack.
Another issue that I ran into was that there are a lot of TS build errors from our @types/ including angular-material and jquery. I'm not sure of the best way to solve this atm.


Using .reparent() on a BoneAttachment3D during runtime breaks it.

Tested versions

Reproducible in 4.3.dev6, 4.2.2.stable

System information
Godot v4.2.2.stable - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 2060 (NVIDIA; <IP_ADDRESS>44) - Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz (4 Threads)
Issue description
In my game, I have a BoneAttachment3D node which controls where the arms of the character are positioned. Before reparenting, the arms are influenced by outside animations. When I equip a weapon I would like the arms to follow the weapon's animations too, so I reparent the BoneAttachment to that weapon, however that stops all influences on the arm bones from happening. Manually moving the BoneAttachment into the weapon in the editor before playing has it work fine, so it seems to be an issue with the reparent() functionality. Additionally, reassigning the BoneAttachments' external skeleton during runtime in the Remote tab does not fix it.

What it looks like:
https://github.com/godotengine/godot/assets/116482163/3ea9c46b-6de1-4005-81c2-c7a03bf7d709
Steps to reproduce
Create a BoneAttachmen3D node.
Enable External Skeleton and Override Pose.
In a script, call boneAttachment.reparent(parent)
In game, the BoneAttachment will stop having any effects
Minimal reproduction project (MRP)
N/A

Your debugger also shoots up with something every frame after the reparent() method is called. can you provide more details on what that error is?

Your debugger also shoots up with something every frame after the reparent() method is called. can you provide more details on what that error is?

Ah thanks, I'm fairly sure that was an unrelated error with my player code.
Not sure why they appeared as soon as i equipped the weapon in the video, that doesnt usually happen. Even when they dont pop up the boneattachment stops working anyway.


narrow_banner: Fix search query overflowing from screen

This commit fixes an issue where the error message overflows the screen when searching for an extremely long word. The error message now displays "No search results. You searched for: [the long word]" without overflowing the screen. If the complete word does not fit the entire screen, it is partially hidden with an ellipsis. For this implementation, I chose to add a new attribute to searchData and manipulate this attribute to retain the full information of the user's search.

Fixes: (https://github.com/zulip/zulip/issues/29568)

Screenshots and screen captures:

Before
After

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[x] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

The screenshot looks good to me. @amanagr are you up for taking a look at the code for this bugfix?

@nandocastanheira You'll need to add a . to your commit message title.

We can use overflow-wrap: break-word here.

We can use overflow-wrap: break-word here.

Yes, it is true, but that was not the solution that was initially being discussed and I think that for the user it would be better to simply cut the word than to have the entire word divided into rows. But if you think this would be a better solution to the problem, I think i can do it.

I see. @alya FYI for that question. For the rare bug here I don't think it is worth it to add so much logic. Also, mostly user would prefer to see the full query which didn't result in any response to look for errors.

Yeah, that last screenshot looks fine to me.


Fixed pipeline macro

An attempt to fix https://github.com/gfx-rs/gfx/issues/1070 by adding a crate parameter to the macro.

Still requires the $crt module to be visible inside the super module. This won't work: https://is.gd/y9S3xD. Maybe use use ::$crt; ? https://is.gd/ztAWxP

Is this being worked on? @snuk182

@Emilgardis
Looks like this issue is not reproducible anymore at both nightly and stable (with 0.12.2 and git)

0.12.2 has been yanked, but master has been reported to work.

Is this still needed?

Not sure. Closing as of now.


code 403: "message":"Have no authority to the request","code":4300

Hello,
I'm getting an error when trying to run the Module example, in this step:
print(session.get_device(devices[0]['id']))
I get:
Traceback (most recent call last):
File "C:\Users\Pete\Documents\Programacion\Python\test1.py", line 73, in
print(session.get_device(devices[0]['id']))
File "C:\Program Files\Python310\lib\site-packages\pcomfortcloud\session.py", line 273, in get_device
raise ResponseError(response.status_code, response.text)
pcomfortcloud.session.ResponseError: Invalid response, status code: 403 - Data: {"message":"Have no authority to the request","code":4300}
I've tried to change the init to use verifySsl=False (I saw that in one of the issues):
def init(self, username, password, tokenFileName='~/.panasonic-token', raw=True, verifySsl=False):
but no luck.
Thanks in advance

Sound strange, are you able to use the same user inn the app?

Hello,
I'm using the same credentials.

The strange thing is that no matter the email and password (right or wrong), I can always retrieve the list of devices, and I always end up getting the same 4300 error:

Maybe the session is stuck with old wrong credentials? Or I'm retrieving a dummy list of devices?

I may take a look, are you sure you have installed the latest version?

I think so:

Unless I'm missing something

May you try to download VS Code and try to run some of the requests in https://github.com/lostfields/python-panasonic-comfort-cloud/blob/master/requests.http - you may use curl as well, but you have to rewrite them.
VS Code + REST Client may run these commands in sequence.
First login, by running the first request. Then run the second one to get the first device in the device list. After that you can run anyone of them, to see if any fails.

I've tried, and in the 3rd call I get the 4300 "Have no authority to the request".
Here you have the results of the 3 first calls:
GET https://accsmart.panasonic.com/device/group HTTP/1.1
HTTP/1.1 200
Date: Sat, 22 Oct 2022 06:03:37 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: close
Server: nginx
Cache-Control: no-store,no-cache,must-revalidate,max-age=0
Pragma: no-cache
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=31536000;includeSubdomains
Content-Security-Policy: script-src 'self' 'unsafe-inline'
{
"result": 0,
"uToken": "XZbxPgNpB8Sd8timvoIWFJ2RxJgh9oCf",
"country": "ES",
"extUsrId": "iwKxO51V09H30vqooSkmt0cnuLiO6CG3",
"clientId": "OeKdFMrsfI5CWsQK76PSueX7LKKxpD1V",
"language": 0
}
GET https://accsmart.panasonic.com/deviceStatus/now/{{device.response.body.$.groupList[0].deviceList[0].deviceGuid}} HTTP/1.1
HTTP/1.1 200
Date: Sat, 22 Oct 2022 06:04:03 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: close
Server: nginx
Cache-Control: no-store,no-cache,must-revalidate,max-age=0
Pragma: no-cache
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1;mode=block
Strict-Transport-Security: max-age=31536000;includeSubdomains
Content-Security-Policy: script-src 'self' 'unsafe-inline'
{
"iaqStatus": {
"statusCode": 200
},
"a2wStatus": {
"statusCode": 200
},
"uiFlg": false,
"groupCount": 1,
"groupList": [
{
"groupId": 773894,
"groupName": "My House",
"pairingList": [],
"deviceList": [
{
"deviceGuid": "B308306902",
"deviceType": "2",
"deviceName": "Aerotermia",
"connectionStatus": 0,
"operationMode": 1,
"zoneStatus": [
{
"zoneId": 1,
"operationStatus": 0,
"temperature": 37
},
{
"zoneId": 2
}
],
"tankStatus": {
"operationStatus": 0,
"temperature": 56
},
"parameters": {}
}
]
}
]
}
GET https://accsmart.panasonic.com/deviceStatus/{{device.response.body.$.groupList[0].deviceList[0].deviceGuid}} HTTP/1.1
HTTP/1.1 403
Date: Sat, 22 Oct 2022 06:04:33 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 58
Connection: close
Server: nginx
Cache-Control: no-cache, must-revalidate
{
"message": "Have no authority to the request",
"code": 4300
}

This is really a authorization problem, since you get HTTP 403. Are you sure you don't have to agree to some terms when you use your credentials in the the Panasonic Comfort Cloud app at your phone?
If you have several users, may you log into with your primary user, and press the upper icon at right, and going into Owner > User list and make sure everyone has access?

Anyone, please!
I'm still getting:
{"message":"Have no authority to the request","code":4300}

@lostfields

I never managed to fix this problem :(

Just to update, my guess is that seems this script does not work with some panasonic devices, for myself I see solution just to use curl instead, what seems to work fine for purposes I need(I want turn on or off devices based on spot prices of electricity).

What kind of curl CLI works for you? @os11k

sent an email @lostfields

Hi @os11k,
I can't get this to work. Can you please send me the solution you built with curl? It'd be very appreciated.
Thanks a lot in advance!

@lostfields is there any advance on this?

Hmm, try to do a new request to https://accsmart.panasonic.com/deviceStatus/now/ and after that find the deviceGuid in the response body and insert it into the following url at the end replacing # ; https://accsmart.panasonic.com/deviceStatus/now/#

A request how? I guess I need some headers. This doesn't work:
import requests
x = requests.get('https://accsmart.panasonic.com/deviceStatus/now/')
Sorry, I'm not an expert on api integrations :(
Thanks in advance
On Sun, Oct 15, 2023 at 11:29 PM lostfields @.***>
wrote:

Hmm, try to do a new request to
https://accsmart.panasonic.com/deviceStatus/now/ and after that find the
deviceGuid in the response body and insert it into the following url at the
end replacing # ; https://accsmart.panasonic.com/deviceStatus/now/#
—
Reply to this email directly, view it on GitHub
https://github.com/lostfields/python-panasonic-comfort-cloud/issues/70#issuecomment-1763508802,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFTLEBQ7BW7TIFZBRPIN3ATX7RIUTAVCNFSM6AAAAAARC7OMPCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRTGUYDQOBQGI
.
You are receiving this because you authored the thread.Message ID:
@.***
com>

I just noticed, even if I use a dummy user and password in the Session:
session = pcomfortcloud.Session('aaa', 'xxxx')
It still prints the devices correctly:
print(devices)

[{'id': 'f0de1ca618eeaeb66acc19a0b73b27a6', 'name': 'Aerotermia', 'group': 'Huetor', 'model': ''}]

But then, when trying to get the info from the device, it yields the error:
print(session.get_device(devices[0]['id']))

pcomfortcloud.session.ResponseError: Invalid response, status code: 403 - Data: {"code":4300,"message":"Have no authority to the request"}

Could it be that the user and password are stored and hardcoded somewhere, and that it has to be cleaned?

it stores the session token in ~/.panasonic-token at https://github.com/lostfields/python-panasonic-comfort-cloud/blob/80dbbfb22a4405e8908d32517a44b25bcf132779/pcomfortcloud/session.py#L55-L55
But it should try to auth again if the authorization fails. It will not authorize again if some of the commands fails though.
https://github.com/lostfields/python-panasonic-comfort-cloud/blob/80dbbfb22a4405e8908d32517a44b25bcf132779/pcomfortcloud/session.py#L91-L99
If I try GET https://accsmart.panasonic.com/deviceStatus/now without deviceGuid it will fail with 403 at my end as well.
GET https://accsmart.panasonic.com/device/group works, and next GET https://accsmart.panasonic.com/deviceStatus/now/CS-HZ25UKE-5+4948102813 works fine as well. That is my deviceGuid, yours is different.

Unfortunately, all the requests return 403.
I've disabled the part to reuse the token, and now at least I'm getting an
error message if I don't use the proper user+passwd. However, I still get
the 403 "Have no authority...".
On Mon, Oct 16, 2023 at 8:48 PM lostfields @.***> wrote:

it stores the session token in ~/.panasonic-token at
https://github.com/lostfields/python-panasonic-comfort-cloud/blob/80dbbfb22a4405e8908d32517a44b25bcf132779/pcomfortcloud/session.py#L55-L55
But it should try to auth again if the authorization fails. It will not
authorize again if some of the commands fails though.
https://github.com/lostfields/python-panasonic-comfort-cloud/blob/80dbbfb22a4405e8908d32517a44b25bcf132779/pcomfortcloud/session.py#L91-L99
If I try GET https://accsmart.panasonic.com/deviceStatus/now without
deviceGuid it will fail with 403 at my end as well.
GET https://accsmart.panasonic.com/device/group works, and next GET
https://accsmart.panasonic.com/deviceStatus/now/CS-HZ25UKE-5+4948102813
works fine as well. That is my deviceGuid, yours is different.
—
Reply to this email directly, view it on GitHub
https://github.com/lostfields/python-panasonic-comfort-cloud/issues/70#issuecomment-1765087638,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFTLEBRFPQU4I3ATCUXVVYLX7V6RRAVCNFSM6AAAAAARC7OMPCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRVGA4DONRTHA
.
You are receiving this because you authored the thread.Message ID:
@.***
com>

Using raw, I can see more info about the machine:
--- _get_groups()
--- raw beginning ---
{"a2wStatus":{"statusCode":200},"uiFlg":false,"groupCount":1,"groupList":[{"groupId":773894,"groupName":"Huetor","pairingList":[],"deviceList":[{"deviceGuid":"B308306902","deviceType":"2","deviceName":"Aerotermia","connectionStatus":0,"operationMode":2,"zoneStatus":[{"zoneId":1,"operationStatus":0,"temperature":12},{"zoneId":2}],"tankStatus":{"operationStatus":0,"temperature":54}}]}]}
--- raw ending    ---
So it seems I'm able to access that information, not sure why it doesn't
work later.
On Mon, Oct 16, 2023 at 9:36 PM Pedro Navarro @.***>
wrote:

Unfortunately, all the requests return 403.
I've disabled the part to reuse the token, and now at least I'm getting an
error message if I don't use the proper user+passwd. However, I still get
the 403 "Have no authority...".
On Mon, Oct 16, 2023 at 8:48 PM lostfields @.***>
wrote:

it stores the session token in ~/.panasonic-token at
https://github.com/lostfields/python-panasonic-comfort-cloud/blob/80dbbfb22a4405e8908d32517a44b25bcf132779/pcomfortcloud/session.py#L55-L55
But it should try to auth again if the authorization fails. It will not
authorize again if some of the commands fails though.
https://github.com/lostfields/python-panasonic-comfort-cloud/blob/80dbbfb22a4405e8908d32517a44b25bcf132779/pcomfortcloud/session.py#L91-L99
If I try GET https://accsmart.panasonic.com/deviceStatus/now without
deviceGuid it will fail with 403 at my end as well.
GET https://accsmart.panasonic.com/device/group works, and next GET
https://accsmart.panasonic.com/deviceStatus/now/CS-HZ25UKE-5+4948102813
works fine as well. That is my deviceGuid, yours is different.
—
Reply to this email directly, view it on GitHub
https://github.com/lostfields/python-panasonic-comfort-cloud/issues/70#issuecomment-1765087638,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFTLEBRFPQU4I3ATCUXVVYLX7V6RRAVCNFSM6AAAAAARC7OMPCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRVGA4DONRTHA
.
You are receiving this because you authored the thread.Message ID:
@.***
com>

My deviceType is 3. So I guess there is some different device family at Panasonic that has different APIs. Until someone figure out how to communicate with this device family I guess we are kinda out of luck.

Hello,
I have the same issue.
My objective is to get the power consumption of my heater pump via a script.
Is there any way that works today to get this data?
Thanks in advance !

Hello, I have the same issue. My objective is to get the power consumption of my heater pump via a script. Is there any way that works today to get this data? Thanks in advance !

Hi, It is possible for sure. I don't have it in my script, which I use just for on/off heater and tank.
But here a bit more clues how to do that:
https://github.com/cjaliaga/home-assistant-aquarea/issues/1#issuecomment-1837675335
https://community.home-assistant.io/t/panasonic-aquarea-heat-pump-integration/392095/110
I plan to put my script for switching heating and tank in github soon, but unfortuantly I don't have time for that now.
So if I was you, I would login into aquare cloud and download data, unfortunately I can't recall what file name it is.
Logging in and out and control heat pump is very trivial task to do.

Are you sure web scrapping is possible on aquarea smart cloud? It seems like it is not allowed, and there is a layer of protection to avoid it. When I made a simple python script to attempt this, the querry got rejected...

I'm able to login and control my heat pump, I didn't tried to scrap any data, but seems this project will be able to do it:
https://github.com/cjaliaga/home-assistant-aquarea
More details:
https://github.com/cjaliaga/aioaquarea/commit/baf98ea4bc0219315b6503eb6f80a70088ccbe7f
I doubt that it is impossible to scrap that data, but again I didn't try to do it by myself, so I can't be 100% sure.
I will wait for @cjaliaga release, I use his integration in my home assistant to push data to influxDB, like tank temperature and etc. I control heat pump by my own scripts, I was not able to migrate that functionality in homeassistant yet, but I think this will be an endgame for me.

Thanks a lot!
It seems like getting the aioaquarea to work from a Synology NAS is not going to be straight forward, right?
And via the pcomfortcloud.py, will there be a fix soon?

Never tried, but seems it is possible to install home assistant on Synology NAS

Same error for me using aquarea comfort cloud. Do you guys found the solution?

I have some updates to share. I attempted to inspect the HTTP traffic on my Comfort Cloud app for my Aquarea, and here is what I observed:

It appears that certain requests are directed to https://accsmart.panasonic.com/, while others are directed to https://aquarea-smart.panasonic.com/. Specifically, the token is acquired when interacting with accsmart.panasonic.com, and the remaining requests are directed to https://aquarea-smart.panasonic.com/.
In the provided example, I issued a temperature change command for zone 1. The request was submitted via POST to the following URL: https://aquarea-smart.panasonic.com/remote/v1/api/devices/{deviceGuid}
The JSON request body is:
{   "status": [     {       "deviceGuid": "***",       "zoneStatus": [         {           "zoneId": 1,           "heatSet": 18         }       ]     }   ] }
The requests forwarded to aquarea-smart.panasonic.com do not employ the same method for obtaining authorization as utilized in this library (X-User-Authorization: {{login.response.body.$.uToken}}). The exact mechanism they employ remains somewhat unclear to me, but it appears to involve the use of cookies.

I don't change temperature, but I just enable/disable heating or water tank heating. All what I do I login to https://aquarea-smart.panasonic.com/remote/v1/api/auth/login and update heat/water tank using https://aquarea-smart.panasonic.com/remote/v1/api/devices/$selectedDeviceId and then logout with https://aquarea-smart.panasonic.com/remote/v1/api/auth/logout.
I do get cookie string from Set-Cookie header during login and then I use it for logout and on/off heating...
In your case I would look for same request, try to sniff login, get cookie and then try to update as needed your setting. Keep in mind, logout is mandatory, otherwise your smart cloud adapter will hang up and will become unresponsive.
I run this script with arguments:
heating on tank on   1 1
heating off tank on  0 1
heating on tank off  1 0
heating off tank off 0 0
like ./script.pl 1 1 to enable heating and water tank heating
check more details for my code, part for sending telegram message can be omitted:
#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;
use Time::Piece;
use HTTP::Request::Common qw(POST);

my $username = 'zzz';
my $pass = "aaaa";
my $token="vvvv";
my $chatid="bbbb";

my $selectedGwid = "ffff";
my $selectedDeviceId = "dddd";
my $JSESSIONID = "kkk";

my $h = shift @ARGV;
my $t = shift @ARGV;

sub login {
  my ($url, $username, $password) = @_;
  my $epoch_time_in_ms = time * 1000;
  my $cookie_header = "cp%3Amanual%3Acb-fv%3Aclose=Yes; selectedGwid=$selectedGwid; selectedDeviceId=$selectedDeviceId; operationDeviceTop=1; deviceControlDate=$epoch_time_in_ms; JSESSIONID=$JSESSIONID";

  my $ua = LWP::UserAgent->new;
  $ua->agent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36');
  $ua->default_header('Accept' => '*/*');
  $ua->default_header('Accept-Encoding' => 'gzip, deflate, br');
  $ua->default_header('Accept-Language' => 'en-US,en;q=0.9');
  $ua->default_header('Connection' => 'keep-alive');
  $ua->default_header('Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8');
  $ua->default_header('Cookie' => $cookie_header);
  $ua->default_header('Host' => 'aquarea-smart.panasonic.com');
  $ua->default_header('Origin' => 'https://aquarea-smart.panasonic.com');
  $ua->default_header('Popup-Screen-Id' => '1001');
  $ua->default_header('Referer' => 'https://aquarea-smart.panasonic.com/');
  $ua->default_header('Registration-Id' => '');
  $ua->default_header('Sec-Fetch-Dest' => 'empty');
  $ua->default_header('Sec-Fetch-Mode' => 'cors');
  $ua->default_header('Sec-Fetch-Site' => 'same-origin');
  $ua->default_header('X-Requested-With' => 'XMLHttpRequest');

  my $response = $ua->post(
    $url,
    Content => { 'var.inputOmit' => 'false', 'var.loginId' => $username, 'var.password' => $password }
  );

#  print "Request Headers:\n";
#  print $response->request->headers->as_string, "\n";
#  print "Request Body:\n";
#  print $response->request->content, "\n";
#  print "Response Headers:\n";
#  print $response->headers->as_string, "\n";
#  print "Response Body:\n";
#  print $response->content, "\n";
   my @set_cookie_arr = $response->header('Set-Cookie');

#  print $response->header('Set-Cookie'), "\n\n\n";
#  print $set_cookie_arr[2], "\n\n\n";

  return ($response->code, join("", @set_cookie_arr));
}

sub extract_access_token {
  my ($cookie_header) = @_;

  my ($access_token) = $cookie_header =~ /accessToken=([^;]+)/;

  return $access_token;
}

sub update {
  my ($access_token, $heating, $tank) = @_;
  my $epoch_time_in_ms = time * 1000;
  my $cookie_header = "selectedGwid=$selectedGwid; selectedDeviceId=$selectedDeviceId; operationDeviceTop=1; deviceControlDate=$epoch_time_in_ms; accessToken=$access_token; JSESSIONID=$JSESSIONID";
  my $url = "https://aquarea-smart.panasonic.com/remote/v1/api/devices/$selectedDeviceId";

  my $ua = LWP::UserAgent->new;
  $ua->agent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36');
  $ua->default_header('authority' => 'aquarea-smart.panasonic.com');
  $ua->default_header('Accept' => 'application/json, text/javascript, */*; q=0.01');
  $ua->default_header('Accept-Language' => 'en-US,en;q=0.9');
  $ua->default_header('Content-Type' => 'application/json');
  $ua->default_header('Cookie' => $cookie_header);
  $ua->default_header('Origin' => 'https://aquarea-smart.panasonic.com');
  $ua->default_header('Referer' => 'https://aquarea-smart.panasonic.com/remote/a2wStatusDisplay');
  $ua->default_header('sec-ch-ua' => '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"');
  $ua->default_header('sec-ch-ua-mobile' => '?0');
  $ua->default_header('sec-ch-ua-platform' => '"Windows"');
  $ua->default_header('Sec-Fetch-Dest' => 'empty');
  $ua->default_header('Sec-Fetch-Mode' => 'cors');
  $ua->default_header('Sec-Fetch-Site' => 'same-origin');
  $ua->default_header('User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36');
  $ua->default_header('X-Requested-With' => 'XMLHttpRequest');

# all switched off     0, 0
# all switched on      1, 1, 1, -1
# tank off, heating on 1, 1, 0, -1
# tank on, heating off 1, 0, 1,  0
  my $operation;

  if ($heating == 0) {
    $operation = 0;
  } else {
    $operation = -1;
  }

  my $main_operation;

  if ($heating == 1 || $tank == 1) {
    $main_operation = 1;
  } else {
    $main_operation = 0;
  }

  my $response;

if ($heating == 0 && $tank == 0) {
  $response = $ua->post(
    $url,
    Content => '{"status":[{"deviceGuid":"'.$selectedDeviceId.'","operationStatus":0,"zoneStatus":[{"zoneId":1,"operationStatus":0},{"zoneId":2,"operationStatus":0}]}]}'
  );
} else {
  $response = $ua->post(
    $url,
    Content => '{"status":[{"deviceGuid":"'.$selectedDeviceId.'","operationStatus":'.$main_operation.',"zoneStatus":[{"zoneId":1,"operationStatus":'.$heating.'},{"zoneId":2,"operationStatus":0}],"tankStatus":[{"operationStatus":'.$tank.'}],"operationMode":'.$operation.'}]}'
  );
}

#  print "Request Headers:\n";
#  print $response->request->headers->as_string, "\n";
#  print "Request Body:\n";
#  print $response->request->content, "\n";
#  print "Response Headers:\n";
#  print $response->headers->as_string, "\n";
#  print "Response Body:\n";
#  print $response->content, "\n";

  return $response->code;
}

sub logout {
  my ($access_token) = @_;

  my $epoch_time_in_ms = time * 1000;
  my $cookie_header = "selectedGwid=$selectedGwid; selectedDeviceId=$selectedDeviceId; operationDeviceTop=1; JSESSIONID=$JSESSIONID; accessToken=$access_token; deviceControlDate=$epoch_time_in_ms;";
  my $url = 'https://aquarea-smart.panasonic.com/remote/v1/api/auth/logout';

  my $ua = LWP::UserAgent->new;
  $ua->agent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36');
  $ua->default_header('authority' => 'aquarea-smart.panasonic.com');
  $ua->default_header('Accept' => '*/*');
  $ua->default_header('Accept-Language' => 'en-US,en;q=0.9');
  $ua->default_header('Connection' => 'keep-alive');
  $ua->default_header('Content-Length' => '0');
  $ua->default_header('Cookie' => $cookie_header);
  $ua->default_header('Origin' => 'https://aquarea-smart.panasonic.com');
  $ua->default_header('Popup-Screen-Id' => '1008');
  $ua->default_header('Referer' => 'https://aquarea-smart.panasonic.com/remote/a2wStatusDisplay');
  $ua->default_header('Registration-Id' => '');
  $ua->default_header('sec-ch-ua' => '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"');
  $ua->default_header('sec-ch-ua-mobile' => '?0');
  $ua->default_header('sec-ch-ua-platform' => '"Windows"');
  $ua->default_header('Sec-Fetch-Dest' => 'empty');
  $ua->default_header('Sec-Fetch-Mode' => 'cors');
  $ua->default_header('Sec-Fetch-Site' => 'same-origin');
  $ua->default_header('X-Requested-With' => 'XMLHttpRequest');

  my $response = $ua->post($url);

#  print "Request Headers:\n";
#  print $response->request->headers->as_string, "\n";
#  print "Request Body:\n";
#  print $response->request->content, "\n";
#  print "Response Headers:\n";
#  print $response->headers->as_string, "\n";
#  print "Response Body:\n";
#  print $response->content, "\n";

  return $response->code;
}

sub send_telegram_message {
    my ($token, $chat_id, $message) = @_;

    my $ua = LWP::UserAgent->new;
    my $url = "https://api.telegram.org/bot$token/sendMessage";
    my $req = POST $url, [
        chat_id => $chat_id,
        text => $message,
    ];
    my $res = $ua->request($req);

    if ($res->is_success) {
        print "Message sent successfully.\n";
    } else {
        print "Error sending message: ", $res->status_line, "\n";
    }
}

my ($response_code, $res_cookie_header) = login('https://aquarea-smart.panasonic.com/remote/v1/api/auth/login', $username, $pass);

if ($response_code == 200) {
    my $access_token = extract_access_token($res_cookie_header);
    print "Cookie header: $res_cookie_header\n";
#    print "Access Token: $access_token\n";
    my $update_resp = update($access_token,$h,$t);
    print "Update response: $update_resp\n";
        if ($update_resp == 200) {
                #send_telegram_message($token, $chatid, "Sent command to panasonic heat $h tank $t\n");
                print "Sent command to panasonic heat $h tank $t\n";
        } else {
                send_telegram_message($token, $chatid, "Got error sending command to panasonic code $update_resp command heat $h tank $t\n");
        }
    my $logout_resp = logout($access_token);
    print "Logout response: $logout_resp\n";
} else {
    print "Error: unexpected response code $response_code\n";
    send_telegram_message($token, $chatid, "Got error authorizing in panasonic code $response_code\n");
}

@os11k yeah, thanks for sharing that. I used a slightly different approach
import requests
import json

def get_user_token(username, password):
    url = "https://accsmart.panasonic.com/auth/login"
    headers = {
        "X-APP-TYPE": "1",
        "X-APP-VERSION": "1.19.0",
        "X-APP-TIMESTAMP": "1",
        "X-APP-NAME": "Comfort Cloud",
        "X-CFC-API-KEY": "Comfort Cloud",
        "User-Agent": "G-RAC",
        "Accept": "application/json; charset=utf-8",
        "Content-Type": "application/json; charset=utf-8"
    }

    data = {
        "language": 0,
        "loginId": username,
        "password": password
        }

    response = requests.post(url, headers=headers, json=data)
    return json.loads(response.text)['uToken']

def get_idp_token(userToken):
    url = "https://accsmart.panasonic.com/auth/idpToken"
    headers = {
        "X-APP-TYPE": "1",
        "X-APP-VERSION": "1.19.0",
        "X-User-Authorization": userToken,
        "X-APP-TIMESTAMP": "1",
        "X-APP-NAME": "Comfort Cloud",
        "X-CFC-API-KEY": "Comfort Cloud",
        "User-Agent": "G-RAC",
        "Accept": "application/json; charset=utf-8",
        "Content-Type": "application/json; charset=utf-8",
    }

    response = requests.get(url, headers=headers)
    return json.loads(response.text)['idpToken']

def get_session_cookies(idpToken, gwid):
    url = "https://aquarea-smart.panasonic.com/"
    headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "keep-alive",
        "Content-Type": "application/x-www-form-urlencoded",
        "Host": "aquarea-smart.panasonic.com",
        "User-Agent": "G-RAC",
        "X-Requested-With": "com.panasonic.ACCsmart"
    }

    data = {
        "X-Authorization": idpToken,
        "cfcLoginMode": "1",
        "gwid": gwid
    }

    response = requests.post(url, headers=headers, data=data)
    return response.cookies

def set_temperature(cookies):
    device_guid = cookies.get('selectedDeviceId', None)
    url = f"https://aquarea-smart.panasonic.com/remote/v1/api/devices/{device_guid}"
    headers = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Accept-Encoding": "gzip, deflate",
        "Connection": "keep-alive",
        "Content-Type": "application/json",
        "Host": "aquarea-smart.panasonic.com",
        "Origin": "https://aquarea-smart.panasonic.com",
        "Referer": "https://aquarea-smart.panasonic.com/remote/a2wControl",
        "User-Agent": "G-RAC",
        "X-Requested-With": "XMLHttpRequest"
    }
    headers["Cookie"] = "; ".join([f"{cookie.name}={cookie.value}" for cookie in cookies])

    data = {
        "status": [
            {
            "deviceGuid": device_guid,
            "tankStatus": [
                {
                "heatSet": 45
                }
            ]
            }
        ]
    }
    response = requests.post(url, headers=headers, json=data)
    return response

if __name__ == "__main__":
    user_email = "***"
    user_password = "***"
    device_guid = "***"

    user_token = get_user_token(user_email, user_password)
    idp_token = get_idp_token(user_token)
    cookies = get_session_cookies(idp_token, device_guid)
    set_temperature(cookies)

I find this  a nice approach, as it mirrors the one used in version 1.19.0 of the Comfort Cloud app. Obviously, the same approach could be used for other settings or to retrieve data from the Aquarea.
Now it would be awesome to integrate that on this library.

@lostfields, I was wondering if you are considering addressing this issue. In the event that you are not, I could invest some free time to integrate that solution into your library."


Test new container build system

10 applications to test the new build system:

[ ] https://github.com/NeuroDesk/neurocontainers/issues/155
[ ] https://github.com/NeuroDesk/neurocontainers/issues/121
[ ] https://github.com/NeuroDesk/neurocontainers/issues/243
[ ] https://github.com/NeuroDesk/neurocontainers/issues/46
[ ] https://github.com/NeuroDesk/neurocontainers/issues/332
[ ] https://github.com/NeuroDesk/neurocontainers/issues/567
[ ] https://github.com/NeuroDesk/neurocontainers/issues/765
[ ] https://github.com/NeuroDesk/neurocontainers/issues/766
[ ] https://github.com/orgs/NeuroDesk/discussions/428
[ ] https://github.com/NeuroDesk/neurocontainers/issues/767

After looking at the list I'll do them in this order (roughly).

qMRLab - Only needs GNU Octave
BrainNetViewer - Needs glibc + MatLab Runtime
Radtract - Needs Python-based dependencies.
Synthstrip - Needs Python-based dependencies.
VMTK - Installed using Conda.
brainageR - Needs R, FSL, SPM12 (via Octave).
hcpasl - Needs FSL, Connectome Workbench, FreeSurfer, HCPPipelines, and Conda.
PreQual - Needs FSL, Convert3D, ANTs, FreeSurfer, MatLab, MRTrix3
XCP-D - Needs AtlasPack, Conda, AFNI, Connectome Workbench, FSL, FreeSurfer, ANTs, SVGO, bids-validator, TensorFlow, Pandoc.
cpac - It's a container launcher frontend with Docker. Not sure how well this will fit into NeuroDesk?

great - I agree with your priority list :) Let's see what interesting things we run into.


feat: metrics reporting from trace export

This enables reporting of metrics from the trace export pipeline, including the OTLP exporter and the BatchSpanProcessor. We need this mechanism to allow reporting metrics that are useful for monitoring trace export from applications in production, and we can't create a binding to the (currently) unstable Metrics API from the stable SDK.
The interface to metrics reporting is defined by the OpenTelemetry::SDK::Trace::Export::MetricsReporter, which also provides the default empty implementation. I tried to stick with concepts that would map cleanly to the current spec for OTel Metrics, and also to StatsD. It's slightly weird in that we have record_value, which is a synchronous operation in OTel Metrics that maps to StatsD distribution (or histogram if you prefer that), and also observe_value, which is asynchronous in OTel Metrics and maps to StatsD gauge. The weirdness comes about because we're calling both synchronously.
The metrics I defined include:

otel.otlp_exporter.request_duration
otel.otlp_exporter.failure ("soft" failure - request will be retried)
otel.bsp.buffer_utilization (a snapshot of "fullness" of the BSP buffer)
otel.bsp.export.success
otel.bsp.export.spans (perhaps this should be otel.bsp.exported.spans?)
otel.bsp.export.failure (hard failure - request will not be retried)
otel.bsp.dropped_span

@fbogsany on first pass this looks good, I think this is super valuable but curious if there's any specification guidance around this? I maybe have some nits on the naming conventions but otherwise lgtm

@fbogsany on first pass this looks good, I think this is super valuable but curious if there's any specification guidance around this? I maybe have some nits on the naming conventions but otherwise lgtm

There's no guidance in the spec yet. I was asked awhile back to add some, but they're considered post-GA at this point. Feel free to bikeshed the naming conventions (though also keep in mind that an implementation can map these to whatever makes sense in a given production environment).


Loading page shows error

Hi material team
I am using input as follow:
<form action="#" style="margin-left: 20px;">

        <input class="mdl-textfield__input" type="text" id="sample3" required>
        Username
        Field is required.

</form>

as you can see the code above, the input field is marked as required and when I load the page, it shows me the error message even I did not touch the input field yet.

How can I prevent the error message, when the field did not get touched? I am using material design lite 1.2.1.
I found the following link https://github.com/google/material-design-lite/issues/1502 that has the same problem as I mentioned above. There is a solution but could not find anywhere on the page.
Thanks

Duplicate of #1502

I know it is a duplicate, what is the solution?

There is no "solution" as what we are doing follows the HTML spec. In v2 we will either implement deeper manual validation to handle this setup or try to get the spec to change to align with what the web provides for desktop (since this is just standard HTML Validation constraints.)
As far as V1, developers are on their own to implement a work-around to this as we are currently just following the native web platform internally.

Thanks so much.


Add a std_once_cell feature

That adds std::cell::OnceCell and std::sync::OnceLock support for the properties macro.

We lose the CI testing on the minimum supported version, rust 1.65. Are we sure we are ok with that?

Why is the last test failing?

The docs regen thing is unrelated to this


Update to goutils 0.5.0

Overview
This PR updates tb to v0.5.0 which switches to use the new slog package in the standard library. As a result, the minimum go version required is 1.21.
See https://github.com/TouchBistro/goutils/pull/17 for more context on the goutils changes.
Demo
I tested tb locally with tb-registry-example and the output still works as before.

It still writes debug logs to a temp file for troubleshooting failures

@l0rdcafe would appreciate a review on this when you have a chance.

lgtm but is there anywhere that we need to update the minimum go version? maybe somewhere in the readme?

It's mentioned here: https://github.com/TouchBistro/tb/blob/f7428bee33832af5497965b346210cc01fb0529d/README.md?plain=1#L61
tbh that should probably just be removed, there's some gotchas with using go install and I don't think it's something that should be officially supported

@l0rdcafe I removed that section I mentioned from the readme.
If you're cool with the changes do you mind merging the PR? I don't have permission to merge anymore since I don't have write access to the repo


Add Duration.parse

This issue was originally filed by @seaneagan

Duration.parse based on ISO-8601 (like DateTime.parse) would be useful for things like command line options, configuration files, url parameters.
Java: http://download.java.net/jdk8/docs/api/java/time/Duration.html
Go has it's own formatting, which I like better, but is not standardized AFAIK:  http://golang.org/pkg/time/#ParseDuration

Yep, this would have been nice to have today.

I also needed this today.

Worked on this and added it in https://dart-review.googlesource.com/c/sdk/+/118566.

I would like to have a toIso8601String method in addition to parsing.

@lohnn why was this never merged? Or, maybe better: what can I do to get it merged?

I guess my PR just didn't get any attention. I can take a shot at updating it and then report back here. Then we can see what we need to do to get it merged?

@lohnn Would definitely be useful!
Two remarks on the code:

for the time being I've copied over the code into my project. I've modified the _parseTime() method like this:

static int _parseTime(String duration, String timeUnit) {
    final timeMatch = RegExp('(\\d+)$timeUnit').firstMatch(duration);
    if (timeMatch == null) {
      return 0;
    }
    return int.parse(timeMatch.group(1));
  }

Since you're working in the actual Duration class already, maybe making the static method a factory constructor might be an option? I actually don't know if this is considered more "elegant", just wanted to point out that that's something a mere extension currently can't do.

I am definitely in favor of this, though I'm not sure what format it should parse. For my use case, Duration should be able to parse back the output of it's .toString() method.
var d = const Duration(days: 1, hours: 1, minutes: 33, microseconds: 500);
print(d.toString()); // 25:33:00.000500

I can see the argument for using the ISO 8601 standard though, perhaps both should be implemented.


Add configuration option to restrict editing of DICOM nodes

See

https://groups.google.com/forum/?nomobile=true#!topic/cornerstone-platform/GAj4kmfffIU
https://groups.google.com/forum/?nomobile=true#!topic/cornerstone-platform/BSh1Z99oJ5Q

I don't know how possible this is without a custom server based API that interacts with the PACS and imposes restrictions.
We offer Keycloak and OpenID Connect as an option for general auth and app level permissions, but DICOMWeb requests "just work" so long as you're authenticated in our UAC recipe.
If there's a way to do this without adding a layer, more than happy to assist, but I would need guidance. If not, then this may be outside the scope of what this project is trying to provide, and you likely need some custom software development.


Nimbus Notes Import Request

Currently it seems that Nimbus Notes doesn't offer bulk export so this will make things difficult. From what I can see it does allow exporting individual notes to HTML so you should be able to use the existing HTML import flow:
https://help.obsidian.md/import/html


Release 24.15.3

Includes

Add tracking on search submit to public layout (PR #2157)
Turn off LUX's debug mode (PR #2156)

Would be keen to get #2155 and #2154 as well, if there's no rush with it.


Compatibility with Hosted Graphite

Great project!  I'd like to get this working with HostedGraphite.com
Looks like i need to prefix the metrics with my API Key.  Where in the code would you recommend doing this?

Just in case you have not solved this issue or somebody else stumples upon this.
Here is a guide from hosted graphite:
Hosted Graphite - statsd Integration
Basically you want to add this to the config file thats getting passed to statsd when running node stats.js path/to/config.js
You may want to add a console backend to statsd config for local development and testing so you're able to see what statsd is doing.
See my statsd config:
{
    port: 8125,
    flushInterval: 10000,
    graphitePort: 2003,
    graphiteHost: "carbon.hostedgraphite.com",
    graphite: {
      legacyNamespace: false,
      globalPrefix: "your-api-key-goes-here"
    },
    backends: ["./backends/graphite", "./backends/console"]
}


Development workflow doesn't work for me

When I try to follow the development instructions in README.md and yarn start the simple example, I get the error
"Error: Can't resolve '~tree-finder/dist/tree-finder.css' in '/home/ubuntu/tree-finder/examples/simple/style' ".

yeah, there's currently a dependency issue where you have to build all three packages in the project in a certain sequence. I'll try to resolve that.
In the meantime, you should be able to get everything builT by first running
yarn webpack

in the top level of this repo. That uses lerna to resolve the interdependency. After that command succeeds, you should be able to run yarn start in the examples/simple dir to start the dev server.
Please let me know if that resolves the issue

Yes, that works, thank you!

Great! Feel free to open a new issue if you run into any more trouble


Respect minimum pool size

For an application I develop, I see a drop in connections. The screenshot show different values of the connection pool.
Legend for the colours;

grey -> pool size
greenish -> idle connections
orange/red -> connections in use
purple -> waiting for a connection

The application uses dropwizard (www.dropwizard.io) which internally uses Tomcat's JDBC Pool. The application has 4 instances. The graph shows the sum of these instances for the number of connections.

min size of idle connection is set to 10 (so should be 10 x 4 = 40)
the decrease happens due abandoning of connections

The documentation indicates a minimum pool of idle connections should be available. It scared me when I first saw this happening.
minIdle

(int) The minimum number of established connections that should be kept in the pool at all times. The connection pool can shrink below this number if validation queries fail. Default value is derived from initialSize:10 (also see testWhileIdle)

Below an image of further progress during the day. Where graphs peek at 40 the application has been restarted.

@markt-asf could you have a look at this PR?


exception from analysis server

This exception was reported by the AS over its logging mechanism:
NoSuchMethodError: method not found: 'isDisposed'
Receiver: null
Arguments: []
C:\projects\dartlang\web\entry.dart.js:49964 warning • analysis-server: #0      Object._noSuchMethod (dart:core-patch/object_patch.dart:42)
#1      Object.noSuchMethod (dart:core-patch/object_patch.dart:45)
#2      SplitIndexStore.aboutToIndex (package:analysis_server/src/services/index/store/split_store.dart:816)
#3      LocalIndex.index (package:analysis_server/src/services/index/local_index.dart:71)
#4      _DartIndexOperation.perform.<anonymous closure> (package:analysis_server/src/operation/operation_analysis.dart:464)
#5      _PerformanceTagImpl.makeCurrentWhile (package:analyzer/src/generated/utilities_general.dart:149)
#6      _DartIndexOperation.perform (package:analysis_server/src/operation/operation_analysis.dart:460)
#7      AnalysisServer.performOperation (package:analysis_server/src/analysis_server.dart:790)
#8      Future.Future.<anonymous closure> (dart:async/future.dart:118)

I saw several instances of this exception over a few minutes. This is for the latest dev sdk release (1.13.0-dev.7.3), on windows.

Already fixed.
https://codereview.chromium.org/1418513002


Cleanup mypy config for codspeed

For some reason we don't have the full mypy config in this repo, so the dependabot PR didn't error on unused ignores.

Hmm, I think this needs a bit of refactoring. pre-commit is not using any pinned requirements, maybe it's cached the older version of the library. Ideally, it should be installing the same requirements file.. Also appears that many of the requirements files contain unpinned dependencies as well.

The config is a copy of Yarl so likely the same is needed there

Hmm, I think this needs a bit of refactoring. pre-commit is not using any pinned requirements, maybe it's cached the older version of the library. Ideally, it should be installing the same requirements file.. Also appears that many of the requirements files contain unpinned dependencies as well.

That's the thing with pre-commit. It uses the config contents as the cache key. So listing the unversioned deps there effectively creates immortal cache entries. This is especially painful in the hosted service of https://pre-commit.ci. Locally and @ GHA you can at least clear the cache manually.


Karabo supports all lifecycle Python versions

Karabo should support all Python versions which are in the current lifecycle.
TODO:

Karabo Feedstock need builds for each version
Karabo code should be compatible with all versions (if incompatible code exists, if-else with python-verisons, just use oldest python-typing features)
Test setup for each python version
Loose dependencies accordingly (tests should tell us the versions)

Due to resource constraints, this will likely be delayed by several months.

According to #225 the feedstock should be 3.10 compatible.

This would then also allow us to easily add an example notebook on google colab, which uses python 3.10 in the background.

This would then also allow us to easily add an example notebook on google colab, which uses python 3.10 in the background.

I don't think that this has an influence whether Karabo runs on colab or not, because Karabo needs conda anyway. And with conda, you can install any python-version.

This would then also allow us to easily add an example notebook on google colab, which uses python 3.10 in the background.

I don't think that this has an influence whether Karabo runs on colab or not, because Karabo needs conda anyway. And with conda, you can install any python-version.

Sadly, no. It somehow links to the runtime python, it's not independent. The condacolab package is quite hacky, but it works.

Ok, that's very surprising, because the advantage of conda lies in installing non-python deps like Python. And loosing such an advantage and still allowing conda doesn't make any sense to me.

Set this to priority high, because we're still on version 3.9. Its expected end-of-life is however not before 10.2025. But versions 3.10 and 3.11 are widely used.


Use filename as username

My passwords are organized by site/username.gpg. It'd be great if passdmenu could somehow get the option/autodetect whether the username is set this way.
I don't know what percentage of Pass users do this, but the creator of Pass does.
Thanks for this great utility!

Autodetection seems impossible. I think the best option would be to make it a special value for option --user that doesn't clash with the regex values accepted by it. The current default of taking the second "word" on the second line or the whole second line if it can't be split, is also not very intuitive and could be specified and handled better.
I don't have time to work on this in the next few weeks, but if you'll send a patch I'll make some time to review and integrate.


Make all VM sources pass clang-tidy checks

This is a tracking bug for ensuring all VM source pass clang-tidy checks.

See also https://github.com/dart-lang/sdk/issues/11526

Over time I think we can add more and more checks.
If there are fine grained flags for the compiler itself we should use them and otherwise we can use the clang-tidy linter.
(e.g. Some bugs have been introduced in the past due to uninitialized fields. Getting the compiler error on those can be done via -Weffc++ - though that enables a lot more than we actually want)


Chain mitmproxy and charles/burp proxy (HTTPS)

How can I chain multiple proxies (HTTPS) according the the following schema
Browser -> mitmproxy-1:8080 -> burp/charles:8081 -> mitmproxy-2:8082 -> Internet

I know it's possible to chain mitmproxy-1 -> mitmproxy-2 and I've already tested that, but I can't put something else in between.
Is it even possible? How can I achieve that.
The goal behind this is that mitmproxy is great for scripting, but Charles/Burp are much better for manual editing stuff. I'd like to script some stuff in mitmproxy and later inspect requests manually in some GUI tool like Charles or Burp

mitmdump  --mode upstream:http://<IP_ADDRESS>:8888 --ssl-insecure made it work in my case.


Sign In action blocked

When trying to sign in on a Chromebook. It returned a 404 error.Example click here.
When trying to clear cookie and refresh,result "Access blocked: This app’s request is invalid" with error code "Error 400: redirect_uri_mismatch".
Further info review "You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy.
If you're the app developer, register the redirect URI in the Google Cloud Console.
Request details: redirect_uri=https://gunnwatt.web.app/__/auth/handler"

Sorry for the long delay, but this should have just been fixed.


[AutoPR monitor/resource-manager] Add Multi Resource Alert changes for Metric Alert API

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4016

This PR has been merged into https://github.com/Azure/azure-sdk-for-java/pull/2139


In addition to PPO, other methods of stable baseline 3 can't be used in the overcooked environment or get a extremely bad strategy.

Such as DQN and A2C, the result is extremely bad with a reward of nearly 0. It makes me confused.
Other methods in stable baseline 3 do not support a discrete action space (e.g. SAC, TD3 ...).

Thanks for your reply. Since the source code does not register A2C and DQN methods, I simply added A2C and DQN registration.  In my test, in the beginning, A2C did get seemingly normal results, but when the training time reached 300,000 timesteps, the value slowly decayed to zero, which confused me.
For reference, here is my command for training A2C
python3 trainer.py OvercookedMultiEnv-v0 A2C A2C --env-config '{"layout_name":"simple"}' --seed 5 --preset 1 -t 1000000
DQN is similar to A2C.

I ran your command on my computer, and I'm getting similar results for seed 5 (peaking at 9 and going back down to 0 for A2C). However, if I change the seed to 10, I see that the reward still increases for A2C. There are seeds where A2C/DQN do very poorly or decently. I think hyperparameter tuning might be needed for these models to perform at their peak (using the --ego-config command-line argument).
PPO with default parameters seems to do pretty well across most seeds that I've tested (>100 reward in general). Can you verify that PPO works and that the reward increases when you change the A2C seed to 10?

I ran your command on my computer, and I'm getting similar results for seed 5 (peaking at 9 and going back down to 0 for A2C). I think hyperparameter tuning might be needed for these models to perform at their peak (using the --ego-config command-line argument) or perhaps parameter sharing might help them learn better.
It is likely that most of these algorithms will simply not perform well in Overcooked since they assume that they are acting in a single-agent environment so only their actions will impact the reward. However, since this is a cooperative setting, that assumption is broken, which is why rewards crash even though the policy/value losses are very low.
PPO with default parameters seems to do pretty well across most seeds that I've tested (>100 reward in general). Can you verify that PPO works?

Overcooked is just a representative environment with multi-agent (pettingzoo is similar). As I understand it, obtaining a reasonable strategy under partial observation conditions is one of the challenges in multi-agent research. And in my investigation, the existing research in overcooked mainly uses the tensorflow framework. Thanks to your team for trying to implement benchmarks under the pytorch framework. However, just PPO as a baseline might not be enough for my research.
PPO did pretty well in my test.

Ok, I think I can close this issue now, since the decline in rewards likely came from SB3's learning algorithms. As a side note, if there are other packages you would like to see implemented into PantheonRL, we would be happy to look into them. Currently, SB3 is only focused on single-agent RL algorithms, so all of our training is fully decentralized. We are currently working on adding centralized-training and decentralized-execution with the MAPPO algorithm, but we will also keep our eye out for any changes to SB3.
We do not currently plan on adding support for the stable-baselines3-contrib package, but from a quick glance it looks like most of the Agent code can still be maintained since these new algorithms still build off of OnPolicyAlgorithm and OffPolicyAlgorithm. However, they change the 'MlpPolicy' to different types which are not currently compatible with our codebase.


Set up the RAID 1 boot disk

Bought a second 970 500GB m.2 so I can create a redundant boot drive.

[ ] Establish if I can retroactively add the redundant boot
[ ] Add the second disk (without reinstalling) OR
[ ] Flash a USB for Proxmox
[ ] Reinstall and start from 0

Been advised this is not necessary. Moving to close as wontfix.


Initial Code Base

As a
Developer
I want to
Initialize the code base for the project
In order to
Kickstart the development of the project with a base code structure and directories

Acceptance Criteria

[x] Base classes/code must be visible in the codebase
[x] Directories must be well-defined for source codes, configurations, resources, etc
[x] Codebase must be available in the main branch

Finished all these


trained h5 file

thanks a lot for your interesting implementation insight face by Keras
Could you please add to the repo the final trained h5 models?

I would like to share, but currently I dont have any final model.. For Resnet101 or Mobilefacenet model, they are not better than original or gluon-face project one.
Currenly it's only a mobilefacenet with se block model almost able to use... I just uploaded it here se_mobilefacenet.

@leondgarse Can I get the models that you already have?

@sonfire86 Which one do you want? I'm currently retrainning se_mobilefacenet using Cosine lr decay with restart. For ResNeSt101, I just uploaded one here in Google drive. It's accuracy on agedb_30 is 0.968500, but the test result in real environment is better than the 0.973333 one.

@leondgarse I would like EfficientNetB0 and EfficientNetB4. So it’s very low speed on my data

For me it's also not so good, so I stoppped them long ago...
For EB0 I only have one trained 5 epochs, and EB4 7 epochs, the epoch 54 one got deleted...
I'll try EB4 again later, but it needs time.
keras_EB0_emore_basic_agedb_30_epoch_5_0.853333.h5
keras_EB4_emore_basic_agedb_30_epoch_7_0.942000.h5

@leondgarse Thank. If I have successful results for B0 I will lay out

It is not possible to take your weight
h5py \ _objects.pyx in h5py._objects.with_phil.wrapper ()
h5py \ _objects.pyx in h5py._objects.with_phil.wrapper ()
h5py \ h5f.pyx in h5py.h5f.open ()
OSError: Unable to open file (file signature not found)

@sonfire86 Sorry i just tested it locally, let me take a check on it...

@sonfire86 keras_EB0_emore_basic_agedb_30_epoch_5_0.853333.h5.
This one is tested with colab
!wget -O keras_EB0_emore_basic_agedb_30_epoch_5_0.853333.h5 https://drive.google.com/u/0/uc?id=18jFbxn2XIWcfsMkIVCWFEvjF-QbWuPcq&export=download
from tensorflow import keras
mm = keras.models.load_model("keras_EB0_emore_basic_agedb_30_epoch_5_0.853333.h5", compile=False)
mm.summary()

It`s my problem. TF 1.14 not work

@sonfire86  Ya, I can only convert EB0 to TF 1.15 by  importing layers Rescaling Normalization from tensorflow source and implementing swish, TF 1.14 is way too far.
import sys
sys.path.append(os.path.expanduser('~/workspace/tensorflow/tensorflow/python/keras/layers/preprocessing/'))
from normalization import Normalization
from image_preprocessing import Rescaling

from tensorflow.keras import backend as K

def swish(inputs):
    return (K.sigmoid(inputs) * inputs)
mm = keras.models.load_model('keras_EB0_emore_basic_agedb_30_epoch_5_0.853333.h5', custom_objects={'swish': swish, "Rescaling": Rescaling, 'Normalization': Normalization})

Can't you put out the weight EfficientNetB4?

@sonfire86 Sorry, but I'm not trying to keep it private,  I don't have it either... We just compared the inference speed using TensorRT and also android, the result shows that though the EfficientNet models size are smaller, but inference time takes longer.

Android test
TensorRT

Model
Size
Timeit

EB4
72M
4.14 ms ± 51.2 µs

resnet101v2
168M
3.17 ms ± 21.8 µs

We are also using a NPU board, and EfficientNet model performance getting worse comparing Resnet..
So we are concentrating on Mobilenet and Resnet recently.

Hi @leondgarse, do you have the trained .h5 files from se_mobilefacenet and mobilefacenet ?
The previous download links provided are not available anymore.

Just a not so good one found, and uploaded here keras_se_mobile_facenet_emore_triplet_basic_agedb_30_epoch_100_0.958333.h5. It's a testing one combining softmax + arcface + triplet training. In those early tests, its accuracy not satisfying, thus we give up on this earlier...


camera.js broken on iOS devices

Issue from mailing list. Needs to be confirmed.

Confirmed with Safari on iOS8. I'll see if I can rustle up an Apple development machine to take a closer look.

Turns out this was an issue in our touch event handler in xml3d.js. I've tested this fix with Android Chrome, Android Firefox, iOS 8 Safari and iOS 8 Chrome and they all seem to work properly with camera.js now.
I'll roll this out to v4.9 with the next hotfix and it'll of course be in 5.0 too.


ci: Drop all green job

What this PR does / why we need it:
Drop the all green job which essentially duplicates functionality provided by GitHub Actions already.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

None

/approve
/lgtm


Can I set headers for SupersetClient requests?

Can I set headers for SupersetClient requests?

@kristw may have an answer

@KirillYoYo did you try something like this line: mode: 'cors'
https://github.com/apache/incubator-superset/blob/929fb6bbb8fdc5c03ba4f88898c91183ab2bad11/superset/assets/src/chart/chartAction.js#L190


When merging files my server API stop working

When my server is merging chunks the api is stop working and other functionality as well, May I know why? Can anyone help me through this?

Any idea?

How are you running your environment? is is dev / production?
Merging can be quite resource intensive, maybe your environment is not strong enought? What is your CPU/memory doing?

I am using shared hosting from Hostinger, with the heighest plan, I think 12 GB RAM/8 core CPU, How the enciroment can affect the process ?

A lot of stuff can happen, depends how big files you are working with, how many chunks are merging. How the server is utilized, etc. You should check logs if there is more info. At this moment Im unable to help you. Could be a timeout on the API. If I understand you correctly, that the server crashes?


sketches-core-0.13.4

From the sketches-core release notes:
"0.13.4 May 14, 2019: Fix Theta Direct Union Bug, alternate path.
It turns out there were two different code paths that would reveal the Direct Union Bug. This fixes the alternate, but seldom used path, which wasn't caught in the previous release."
I am not sure this code path is used in Druid. So this update may or may not be of significance.
By the way, did anyone verify that the previous update to 0.13.3 really fixed the Theta sketch regression (#7619)?

By the way, did anyone verify that the previous update to 0.13.3 really fixed the Theta sketch regression (#7619)?

I was no longer able to reproduce the issue after #7619 was applied in my testing.

It would appear that this path must be used at least some of the time: related https://groups.google.com/forum/?pli=1#!topic/druid-user/qCBG7E_zR1c

Since the sketches-core version was changed, the LICENSE.BINARY file should have updated in this PR accordingly. This will be automatically checked after #7998.


fix: cretae seperated logo for icons

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/35468
PROPOSAL: https://github.com/Expensify/App/issues/35018#issuecomment-1907683356
I've used this proposal for solving the issue with the icon color on the splash screen. However, it generates an issue on Android. It looks like we need to fill strategy 'evenodd' for Android to make it work, so I can't use the same file for the splash screen and app icon.
Tests

Open the app
Click on the user avatar and open the menu

Icons should have a proper color for each platform
[x] Check https://github.com/Expensify/App/issues/33519 in case of regression
[x] Check https://github.com/Expensify/App/issues/35018 in case of regression
[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

Open the app
Click on the user avatar and open the menu

Icons should have a proper color for each platform
[x] Check https://github.com/Expensify/App/issues/33519 in case of regression
[x] Check https://github.com/Expensify/App/issues/35018 in case of regression
[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/7682108/706988ca-931b-4ade-85b0-a0d836bc178e

Android: mWeb Chrome

iOS: Native
https://github.com/Expensify/App/assets/7682108/9aa053d0-e613-4fc8-baaf-3793c6f54dce

iOS: mWeb Safari

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/7682108/f371203d-d4de-4a57-a90a-b9625c839fd8

MacOS: Desktop
https://github.com/Expensify/App/assets/7682108/e3fe43fb-d028-4bab-98ef-a13d588a7004

Reverted PR #35097 was reviewed by @thesahindia . I think he will review this as well.

@thesahindia done :)

Sorry, I am a little confused.
Are we still using the new-expensify.svg? If so, where?

friendly bump @barttom  ^

Jumping in here - @rlinoz so we do still use it, but not as a component - we pick it up here which is defined here
The two places that we need to make sure things are working appropriately:

The start up screen on prod - logo should be the lighter green color
The "Go to Expensify Classic" option in settings - logo should match the other options if not selected, on hover/click should be the lighter green color

@c3024 and @thesahindia can you confirm that my summary above is correct (and confirm that we tested both of those places on all platforms? I see screenshots for the menu but not the splash screen, and this has been notoriously finicky platform per platform.)

Oh, I forgot adhoc builds have a different image for the splash screen, it is working for the Go to Expensify classic though.

@dangrous just to be sure, the test where you got the dark icon in the splash screen was web?

yeah it was a web prod build, but let me try one more time, I bet I did it wrong in some way

okay yep it worked now!

Nice!
I guess we can merge it then 😄

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/rlinoz in version: 1.4.43-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/puneetlath in version: 1.4.43-20 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


fixing list ordering to de-prioritize conflicing paths

fixing list ordering to de-prioritize conflicing paths in imported modules such as iana,ietf

@steiler we need to expose the var ImportedMods towards config/user so they can influence this on other modules as well.


feat: implements driver.RowsColumnTypeDatabaseTypeName

Codecov Report

Merging #11 (4b8ada4) into main (a202450) will decrease coverage by 0.44%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##             main      #11      +/-   ##
==========================================
- Coverage   61.93%   61.49%   -0.45%
==========================================
  Files           5        5
  Lines         155      161       +6
==========================================
+ Hits           96       99       +3
- Misses         42       44       +2
- Partials       17       18       +1

Impacted Files
Coverage Δ

rows.go
56.41% <50.00%> (-0.54%)
:arrow_down:

Continue to review full report at Codecov.

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


fast_executemany fails at conversion empty string to zero - Invalid character value for cast specification (0) (SQLParamData)')

Environment

Python: 3.7
pyodbc: 4.0.30
OS: Windows 10 64 bit
DB: SQL Server 2019
driver: ODBC Driver 17 for SQL Server

Issue
I have a table sales with 2 fields: date (date type) and Value (real type). If I set fast_executemany = True and try to insert the row ['2020-01-01', ''] using query INSERT INTO sales (Date, Value) VALUES (?,?) it results in error:
pyodbc.DataError: ('22018', '[22018] [Microsoft][ODBC Driver 17 for SQL Server]Invalid character value for cast specification (0) (SQLExecute)')

I've investigated and figured it fails to convert '' to 0. So, the solution is to replace '' with 0 before trying to insert values into table.
If i disable fast_executemany it works fine without converting empty string to zeroes.
Not sure if this issue is actually important to solve but I want to put it out there to help if someone will have the same problem.

I can't believe turning that option to False is does this trick. Tracking down the error is wildling challenging when there is actually nothing wrong with the sql statement. Thanks a bunch!

In order to achieve the extra speed, fast_executemany also restricts the type of conversions that it will perform. The performance doesn't come for free. That's why it's off by default.


Update SBT and plugins

Update SBT and plugins to latest versions except sbt-scalariform.

sbt 0.13.7 -> 0.13.11
sbt-git 0.6.2 -> 0.8.5

No longer need jgit-repo resolver

sbt-pgp 0.8.1 -> 1.0.0

useGpg is synonym for PgpKeys.useGpg in Global

sbt-osgi 0.6.0 -> 0.8.0

Settings for packagedArtifact and artifact are included in osgiSettings

sbt-checkstyle-plugin 0.4.1 -> 3.0.0

Better task dependency: doc runs if checkstyle finished successfully.

Latest version of sbt-scalariform breaks existing code style (See https://github.com/kxbmap/config/commit/a89db1f52d5dcbf011682489e9dbe8573bf4f888).
So this PR does not contain sbt-scalariform update.
Next version of scalarifrom will solve this problem: https://github.com/scala-ide/scalariform/issues/202

Thank you! This is very thorough and thank you for figuring out the scalariform issue.


Fix issue #46

Coverage decreased (-1.3%) to 98.193% when pulling d45285f6d5133426e02ae20daf2c3dfd5bb3092b on chriscz:master into 86aa53bf2290da4fe32f9856d5dd318498f84872 on Simplistix:master.

Coverage decreased (-1.3%) to 98.194% when pulling 92a52b3cb26a93c141b4cddabfeb4968201b618b on chriscz:master into 86aa53bf2290da4fe32f9856d5dd318498f84872 on Simplistix:master.

Obviously, all the tests need to pass. I also don't expect to see any drop in coverage, although I suspect that's due to the test failures.

I am trying to see why the coverage dropped, since running the tests after the fix shows that all tests pass on my machine.

Coverage increased (+0.0008%) to 99.501% when pulling bb87cc7f09f6c67c60a4d6306784ff89454329fb on chriscz:master into 86aa53bf2290da4fe32f9856d5dd318498f84872 on Simplistix:master.


chore: bdd-nh-1583470437 to 0.0.1

chore: Promote bdd-nh-1583470437 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Grammar fixes

Fix some grammatical errors and a few minor style/clarity issues.

@mgiuffrida - would you address @jpmedley's comments. thanks!

@petele @jpmedley Updated to address comments. LMK if you'd like the changes should be squashed into one commit (that sometimes seems to make the pull request disappear, so I avoid it...)


Calendar and Contact Sharing Policy Testing

💡 Summary
The Exchange Online baseline (post Emerald) includes items MS.EXO.6.1v1 and MS.EXO.6.2v1 for restricting sharing of contact and calendar information.  Several settings and sharing policies affect the end result of whom can share what details and with whom.
Motivation and context
Further testing is needed to ensure all sharing cases are restricted appropriately to prevent unintended sharing of contact and calendar information and to determine if the current restrictions are sufficient, or overly restrictive.
Implementation notes
Please provide details for implementation, such as:

Testing different sharing policies and organizational settings to determine which ones properly restrict access to calendar and contact information
Determine if any edge cases permit excessive or unauthorized sharing
Based on the results, recommend possible updates or changes to existing policies
Document updated implementation guidance for policy changes
Propose policy changes via a pull request

Acceptance criteria
How do we know when this work is done?

[ ] Calendar and contact sharing has been tested successfully and results are documented
[ ] Policy and policy implementation changes have been documented and proposed via a pull request

#560 contains a related discussion and some screenshots of both the individual sharing setting and the org wide setting for reference.


Documentation revamp

Modified version of #31.

@rob-balfre WDYT? :)

@jussi-kalliokoski Love the REPL!  I'll tweak some of the styles for the right hand side, doesn't look quite right yet.


Problems with compilation

Those are the issues that I've encountered while compiling this library as a dependency with gleam 0.30.5.

A lot of warnings about "Deprecated external fn syntax"

Usage of asset Ok(x) = without preceding let.

float.power now returns Result(Float, Nil) not Float as the library expects.

Thanks a lot for opening an issue :)
The library have not been updated in a long time, so it is expected it will not work with newer versions of gleam.
My most recent efforts have been to update and move all math-related functionality  to the library:

https://github.com/gleam-community/maths

It has not yet been published as there are still some open issues. If you are considering contributing, you should direct your efforts there :)
The future goal of the ´gleam_stats´ will be to focus on RNG and stats-related functionality, while having the maths library as a dependency.

Thanks for the fast response.
I myself found gleam_stats in search of a random number generator that produces the same results in js and erlang targets. I guess, I'll just copy that part from the library.
Good to know the status of the project.


Remove address from grants.

There are some cases where address information is shown in the team section. We should never show this in the team section. Have it removed.

gp-399, gp-400 related bug fixes.


Crop out buildings from the city to use

@trejder could you crop out all buildings in the village, except assay office and mercantile?

@trejder  I received Assay office and mercantile - could you crop out rest of the building and send me an email with them?

@MadejaMaciej Building by day + panorama provided in Wiki and over email.

I would rather use shader for night, instead of croping it once again. So I think for now there is no need to do that.

Sure thing, closing then.