FR: Value mapping for person name sensors

Is your feature request related to a problem? Please describe.
As discussed here, the sensors of detected persons (e.g. sensor.door1_person_name, which shows the name of a detected person if the person_detected-sensors are on, uses states, which are not inline with HA standards.
Good: Is delivers the name, if a person is detected, where a name is set.
Not good:

It delivers ''/empty when no person is detected == off. Not good, because in automations, etc. it is hard to impossible to trigger on this (e.g. change from anything to empty) Or change from empty to anything <> empty. I have not a single other entity in any integration, where the state is empty. So a mapping to any default other than ''/empty would be really needed. e.g. off as well. Or whatever.

It delivers "Unkown" if a person is detected but no name is set. Unknown is restricted as well in HA for unknown states of the entity but not for a known state. So a mapping/change any other state would be really needed. e.g. "unkown_person" or "unfamiliar" or whatever.

Thx for all your efforts with this great integration!

please check with latest version, bropat had published a new one with working information

Unfortunately same as before
NULL if nothing is detected. Hard to work with and not common for HA
Unknown if someone is not known. Hard to work with and not common for HA / restricted value
And now worse: Even If the eufy app detects known faces, names, the integration always delivers "Unknown".

Same here, Person Name sensor doesn't give names but "unknown".

I've searched the logs a bit and what I found might help.
I have eufyCam E330(T8600), Wireless Doorbell(T8210), SoloCam S220(T8134). All connected to the same HomeBase3(T8030).
There are two types of entries in the E330's log when it detects a person, while the other two only show the entry containing "nick_name" (I took the log from the Eufy WS addon).
In the case of the E330 device, the name can also be seen in the Home Assistant for the "person_name" sensor, and only "Unknown" for the other two.
Is there a way for the integration to read "nick_name" into a sensor?
E330 log:
2024-03-22 12:47:33.044	DEBUG	eufy-security-ws:eufy-security-client	[push] [PushClient.handleParsedMessage] Push client - DataMessageStanza {
message: '{"tag":8,"object":{"id":"6930BCDF","from":"348804314802","to":"fGOEQzM0M4Wuw4DBFAom9G","category":"com.oceanwing.battery.cam","appData":[{"key":"device_sn","value":"T8600P10xxxxxxxx"},{"key":"payload","value":"eyJtc2dfdHlwZSI6MTgsImV2ZW50X3R5cGUiOjMxMTEsImRldmljZV9zbiI6IlQ4NjAwUDEwMjM0MDFEQzkiLCJuYW1lIjoiWWFyZCIsImNoYW5uZWwiOjIsImNpcGhlciI6MCwiY3JlYXRlX3RpbWUiOjE3MTExMTE2NDg5OTcsInRyaWdnZXJfdGltZSI6MTcxMTExMTY0ODk5NywiZmlsZV9wYXRoIjoiL3p4L2hkZF9kYXRhMC9DYW1lcmEwMi8yMDI0MDMvMjAyNDAzMjIxMzQ3MjkvMjAyNDAzMjIxMzQ3Mjkuenh2aWRlbyIsInBpY191cmwiOiIiLCJwaWNfZmlsZXBhdGgiOiIiLCJwdXNoX2NvdW50IjoxLCJub3RpZmljYXRpb25fc3R5bGUiOjEsInN0b3JhZ2VfdHlwZSI6MSwidmlzaW9uIjowLCJtb2RlIjoxLCJzZXNzaW9uX2lkIjoiMjAyNDAzMjJfMTM0NzMyIiwidW5pcXVlX2lkIjoiZjQyN2ViZjQ4NGI0MWI0MDVkNTU5MTkyMjJjMjE3NzkiLCJyZWNvcmRfaWQiOjIwMjQwMzIyMDAwNzMsInBlcnNvbl9pZCI6Miwibmlja19uYW1lIjoiRWRpdCJ9"},{"key":"station_sn","value":"T8030P23xxxxxxxx"},{"key":"google.c.sender.id","value":"348804314802"},{"key":"title","value":"Eufy Security"},{"key":"type","value":"24"},{"key":"push_time","value":"1711111652966"},{"key":"event_time","value":"1711111652139"},{"key":"content","value":"Someone has been spotted"}],"persistentId":"0:1711111652983915%0d2a775cf9fd7ecd","ttl":3600,"sent":"1711111652975"}}'
}
2024-03-22 12:47:33.045	DEBUG	eufy-security-ws:eufy-security-client	[push] [PushNotificationService.onMessage] Raw push message received {

message: {
id: '6930BCDF',
from: '348804314802',
to: 'fGOEQzM0M4Wuw4DBFAom9G',
category: 'com.oceanwing.battery.cam',
persistentId: '0:1711111652983915%0d2a775cf9fd7ecd',
ttl: 3600,
sent: '1711111652975',
payload: {
device_sn: 'T8600P10xxxxxxxx',
payload: {
msg_type: 18,
event_type: 3111,
device_sn: 'T8600P10xxxxxxxx',
name: 'Yard',
channel: 2,
cipher: 0,
create_time:<PHONE_NUMBER>997,
trigger_time:<PHONE_NUMBER>997,
file_path: '/zx/hdd_data0/Camera02/202403/20240322134729/20240322134729.zxvideo',
pic_url: '',
pic_filepath: '',
push_count: 1,
notification_style: 1,
storage_type: 1,
vision: 0,
mode: 1,
session_id: '20240322_134732',
unique_id: 'f427ebf484b41b405d55919222c21779',
record_id:<PHONE_NUMBER>073,
person_id: 2,
nick_name: 'Edit'
},
station_sn: 'T8030P23xxxxxxxx',
'google.c.sender.id': '348804314802',
title: 'Eufy Security',
type: '24',
push_time: '1711111652966',
event_time: '1711111652139',
content: 'Someone has been spotted'
}
}
}
2024-03-22 12:47:33.047	DEBUG	eufy-security-ws:eufy-security-client	[push] [PushNotificationService.onMessage] Normalized push message received {

message: {
name: 'Yard',
event_time:<PHONE_NUMBER>139,
type: 24,
station_sn: 'T8030P23xxxxxxxx',
device_sn: 'T8600P10xxxxxxxx',
push_time:<PHONE_NUMBER>966,
title: 'Eufy Security',
content: 'Someone has been spotted',
channel: 2,
cipher: 0,
event_session: '20240322_134732',
event_type: 3111,
file_path: '/zx/hdd_data0/Camera02/202403/20240322134729/20240322134729.zxvideo',
pic_url: '',
push_count: 1,
notification_style: 1,
tfcard_status: undefined,
alarm_delay_type: undefined,
alarm_delay: undefined,
alarm_type: undefined,
sound_alarm: undefined,
user_name: undefined,
user_type: undefined,
user_id: undefined,
short_user_id: undefined,
station_guard_mode: undefined,
station_current_mode: 1,
person_name: 'Edit',
sensor_open: undefined,
device_online: undefined,
fetch_id: undefined,
sense_id: undefined,
battery_powered: undefined,
battery_low: undefined,
storage_type: 1,
unique_id: 'f427ebf484b41b405d55919222c21779',
automation_id: undefined,
click_action: undefined,
news_id: undefined,
msg_type: 18
}
}
2024-03-22 12:47:33.048	DEBUG	eufy-security-ws:eufy-security-client	[main] [EufySecurity.onPushMessage] Received push message {

message: {
name: 'Yard',
event_time:<PHONE_NUMBER>139,
type: 24,
station_sn: 'T8030P23xxxxxxxx',
device_sn: 'T8600P10xxxxxxxx',
push_time:<PHONE_NUMBER>966,
title: 'Eufy Security',
content: 'Someone has been spotted',
channel: 2,
cipher: 0,
event_session: '20240322_134732',
event_type: 3111,
file_path: '/zx/hdd_data0/Camera02/202403/20240322134729/20240322134729.zxvideo',
pic_url: '',
push_count: 1,
notification_style: 1,
tfcard_status: undefined,
alarm_delay_type: undefined,
alarm_delay: undefined,
alarm_type: undefined,
sound_alarm: undefined,
user_name: undefined,
user_type: undefined,
user_id: undefined,
short_user_id: undefined,
station_guard_mode: undefined,
station_current_mode: 1,
person_name: 'Edit',
sensor_open: undefined,
device_online: undefined,
fetch_id: undefined,
sense_id: undefined,
battery_powered: undefined,
battery_low: undefined,
storage_type: 1,
unique_id: 'f427ebf484b41b405d55919222c21779',
automation_id: undefined,
click_action: undefined,
news_id: undefined,
msg_type: 18
}
}
2024-03-22 12:48:13.684	DEBUG	eufy-security-ws:eufy-security-client	[http] [Station.databaseQueryLatestInfo] Station database query latest info - sending command {
stationSN: 'T8030P23xxxxxxxx'
T8134 log:
2024-03-22 12:47:13.679	DEBUG	eufy-security-ws:eufy-security-client	[push] [PushClient.handleParsedMessage] Push client - DataMessageStanza {
message: '{"tag":8,"object":{"id":"692FF177","from":"348804314802","to":"fGOEQzM0M4Wuw4DBFAom9G","category":"com.oceanwing.battery.cam","appData":[{"key":"device_sn","value":"T8134P20xxxxxxxx"},{"key":"payload","value":"eyJtc2dfdHlwZSI6MTgsImV2ZW50X3R5cGUiOjMxMTEsImRldmljZV9zbiI6IlQ4MTM0UDIwMjMyMjNDOUIiLCJuYW1lIjoiRnJvbnQgZ2F0ZSIsImNoYW5uZWwiOjMsImNpcGhlciI6MCwiY3JlYXRlX3RpbWUiOjE3MTExMTE2MzA0ODcsInRyaWdnZXJfdGltZSI6MTcxMTExMTYzMDQ4NywiZmlsZV9wYXRoIjoiL3p4L2hkZF9kYXRhMC9DYW1lcmEwMy8yMDI0MDMvMjAyNDAzMjIxMzQ3MTAvMjAyNDAzMjIxMzQ3MTAuenh2aWRlbyIsInBpY191cmwiOiIiLCJwaWNfZmlsZXBhdGgiOiIiLCJwdXNoX2NvdW50IjoxLCJub3RpZmljYXRpb25fc3R5bGUiOjEsInN0b3JhZ2VfdHlwZSI6MSwidmlzaW9uIjowLCJtb2RlIjoxLCJzZXNzaW9uX2lkIjoiMjAyNDAzMjJfMTM0NzEyIiwidW5pcXVlX2lkIjoiMjVmYjgwZjhlMTFhZDcxZjkxNzQ3NjQ3YTE1ODMwN2MiLCJyZWNvcmRfaWQiOjIwMjQwMzIyMDAwNzIsInBlcnNvbl9pZCI6Miwibmlja19uYW1lIjoiRWRpdCJ9"},{"key":"station_sn","value":"T8030P23xxxxxxxx"},{"key":"google.c.sender.id","value":"348804314802"},{"key":"type","value":"63"},{"key":"title","value":"Eufy Security"},{"key":"push_time","value":"1711111633627"},{"key":"event_time","value":"1711111632746"},{"key":"content","value":"Someone has been spotted"}],"persistentId":"0:1711111633644813%0d2a775cf9fd7ecd","ttl":3600,"sent":"1711111633634"}}'
}
2024-03-22 12:47:13.681	DEBUG	eufy-security-ws:eufy-security-client	[push] [PushNotificationService.onMessage] Raw push message received {

message: {
id: '692FF177',
from: '348804314802',
to: 'fGOEQzM0M4Wuw4DBFAom9G',
category: 'com.oceanwing.battery.cam',
persistentId: '0:1711111633644813%0d2a775cf9fd7ecd',
ttl: 3600,
sent: '1711111633634',
payload: {
device_sn: 'T8134P20xxxxxxxx',
payload: {
msg_type: 18,
event_type: 3111,
device_sn: 'T8134P20xxxxxxxx',
name: 'Front gate',
channel: 3,
cipher: 0,
create_time:<PHONE_NUMBER>487,
trigger_time:<PHONE_NUMBER>487,
file_path: '/zx/hdd_data0/Camera03/202403/20240322134710/20240322134710.zxvideo',
pic_url: '',
pic_filepath: '',
push_count: 1,
notification_style: 1,
storage_type: 1,
vision: 0,
mode: 1,
session_id: '20240322_134712',
unique_id: '25fb80f8e11ad71f91747647a158307c',
record_id:<PHONE_NUMBER>072,
person_id: 2,
nick_name: 'Edit'
},
station_sn: 'T8030P23xxxxxxxx',
'google.c.sender.id': '348804314802',
type: '63',
title: 'Eufy Security',
push_time: '1711111633627',
event_time: '1711111632746',
content: 'Someone has been spotted'
}
}
}
2024-03-22 12:47:13.682	DEBUG	eufy-security-ws:eufy-security-client	[push] [PushNotificationService.onMessage] Normalized push message received {

message: {
name: 'Front gate',
event_time:<PHONE_NUMBER>746,
type: 63,
station_sn: 'T8030P23xxxxxxxx',
device_sn: 'T8134P20xxxxxxxx',
push_time:<PHONE_NUMBER>627,
title: 'Eufy Security',
content: 'Someone has been spotted',
channel: 3,
cipher: 0,
event_session: '20240322_134712',
event_type: 3111,
file_path: '/zx/hdd_data0/Camera03/202403/20240322134710/20240322134710.zxvideo',
pic_url: '',
push_count: 1,
notification_style: 1,
msg_type: 18,
timeout: undefined,
tfcard_status: undefined,
storage_type: 1,
unique_id: '25fb80f8e11ad71f91747647a158307c'
}
}
2024-03-22 12:47:13.683	DEBUG	eufy-security-ws:eufy-security-client	[main] [EufySecurity.onPushMessage] Received push message {

message: {
name: 'Front gate',
event_time:<PHONE_NUMBER>746,
type: 63,
station_sn: 'T8030P23xxxxxxxx',
device_sn: 'T8134P20xxxxxxxx',
push_time:<PHONE_NUMBER>627,
title: 'Eufy Security',
content: 'Someone has been spotted',
channel: 3,
cipher: 0,
event_session: '20240322_134712',
event_type: 3111,
file_path: '/zx/hdd_data0/Camera03/202403/20240322134710/20240322134710.zxvideo',
pic_url: '',
push_count: 1,
notification_style: 1,
msg_type: 18,
timeout: undefined,
tfcard_status: undefined,
storage_type: 1,
unique_id: '25fb80f8e11ad71f91747647a158307c'
}
}

@fuatakgun
could you look after the solution?

will be fixed in latest version;
PERSON_NAME_STATE_EMPTY = "No Person"
PERSON_NAME_STATE_UNKNOWN = "Unknown Person"

Hello,
thanks fpr the update.
I tried ist today, but without working.
I even don't get person notification, and i don't get the person name.
Does't need a working go2rtc config? I don't understand:
I see all'entities, do ia habe to change the IP of go2RTC? do i need to set the port of the core integrated go2rtc version if i didn't install the addon?

Thanks
Philipp

if you are not receiving person notification, integration cannot do anything about person name. person detected and person name information are coming from add-on.
The problem was,

when there was no person identified, sensor value was empty.
when an unknown person identified, sensor value was unknown.

given that empty and unknown are hard to manage on home assistant side, integration converts ;

empty into No Person
unknown into Unknown Person

the presence of person or person name needs to be discussed with bropat.

Thanks a lot @fuatakgun, for me was important to know if i set something wrong.
Best regards
Philipp


fix: title and description are now correctly displayed in RepoUrlPicker

Hey, I just made a Pull Request!

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[x] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[x] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

Related Issue
Closes #20503

I think you'll see that there's some casting required after the rebase.
https://github.com/backstage/backstage/blob/72b7dc147f8b54f400b643182b233ab2cf651672/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx#L288

I think you'll see that there's some casting required after the rebase.
https://github.com/backstage/backstage/blob/72b7dc147f8b54f400b643182b233ab2cf651672/plugins/scaffolder/src/components/fields/RepoUrlPicker/RepoUrlPicker.test.tsx#L288

ops, thanks @benjdlambert


Prepared new release,  v0.16.0

Preparation of new release.
Link to changelog: https://manimce--2863.org.readthedocs.build/en/2863/changelog/0.16.0-changelog.html

The changelog is in a pretty good shape in my opinion, the release is almost fully prepared and this is ready to be reviewed:

There was a typo in the title of #2667 (which is why pre-commit.ci fails), the fix will be reflected in the next (and likely last) changelog generation pass,
and #2186 is not included yet (needs a cross-review of my changes).


Fix broken external links

The following broken links on the website's News and Press pages need to be replaced or deleted.
News page:

January 25, 2018
Airbiquity receives a BIG Award for Business in the 2017 New Product of the Year Award category for its Uptane-based OTAmatic over-the-air software and data management solution.

October 10, 2016
Lily Guo and Riyaz Faizullabhoy from Docker gave a talk on TUF and Notary at LinuxCon+ContainerCon Europe 2016. Slides of their talk are available here.

Press page :

Notary demoed at the DockerCon 2015 keynote

Forbes-January 2017: Uptane Will Protect your Connected Car from Hackers

Airbiquity.com-January 2018: Airbiquity OTAmatic Named 2017 New Product Of The Year By Business Intelligence Group

Airbiquity.com-December 13, 2018: Airbiquity Bolsters OTAmatic™ Security And Data Analytic Features In Latest Over-The-Air (OTA) Software And Data Management Offering For Automotive

Just Auto-May 30, 2019: HERE and Uptane Team on automotive/IoT security

Generalizing this issue to cover all broken links. Note that

#103

adds several ignore regexs for invalid external links. We should fix the links and remove the ignore rules.


Blazemeter/CorrelationRecorder release v3.1

Auto Correlation Recorder Plugin v3.1 Release Note
We're excited to bring you the latest enhancements and features in the Auto Correlation Recorder Plugin v3.1
Here's what's new:
Apply from template improvements

Fixed wrong reporting of rules usage

This caused that some extractors and replacements weren't applied correctly given the sense that rules weren't working

Fixed order of suggestions generated

This causes that the suggestions which get converted into rules were applied in a different order than the original template provided
Now suggestions remain ordered as the rules template order.

Dialog improvements

Add Waiting dialog while applying suggestions from template
Add Waiting dialog while generating suggestions from template
Waiting Dialogs can now being interrupted

Interrupting suggestions appliance results in reset of testplan, keep in mind that suggestions needs be generated again.

Waiting Dialogs shows information about background task

Other Improvements

Performance improvements

Welcome to Codecov :tada:
Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


[stable/jenkins] Update jenkins READ.ME with right default values

Changing the default value for master.enableXmlConfig on READ.ME acording to values.yaml

Is this a new chart

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

What this PR does / why we need it:
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

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

/assign @viglesiasce

@mmiranda Chart.yaml needs version-bump

@davidkarlsen done! :)

/lgtm
/ok-to-test
/assign


[FEAT]:App Integration - Backend

Description
Develop the backend logic to integrate third-party applications (Zoom, Teams, Slack, Dropbox, OneDrive, etc.) into the organization's workflow, enabling the activation and deactivation of these apps efficiently.
Acceptance Criteria
Third-Party App Integration:

Implement server-side logic to handle the integration of third-party applications.
Develop endpoints to activate and deactivate third-party applications.

User Preferences:

Store integration details securely in the database.
Handle user-specific configurations and preferences related to each application.

Activation/Deactivation Handling:

Log successful activations and deactivations.
Implement retry mechanisms for failed activations/deactivations.

Security Measures:

Use HTTPS for secure data transmission.
Validate user input on the server side.
Encrypt sensitive data such as API tokens and user credentials.

Purpose
To enhance workflow efficiency by enabling seamless integration with third-party applications, allowing users to activate and deactivate these apps securely and efficiently.
Requirements

[ ] Develop server-side logic to integrate third-party applications.
[ ] Securely store integration details in the database.
[ ] Ensure compliance with security standards for handling sensitive information.

Expected Outcome

The backend should handle the activation and deactivation of third-party applications securely and efficiently.
The system should log activations/deactivations and handle errors appropriately.

Endpoints
Fetch Apps:
Description: Provide a list of available third-party applications to the frontend.
Endpoint: GET /api/apps
Response (Success):
{
  "apps": [
    {
      "id": "String",
      "name": "String",
      "description": "String",
      "status": "String"  // e.g., "active" or "inactive"
    }
  ]
}

Response (Error):
{
  "message": "Failed to fetch apps",
  "statusCode": 500
}

Activate App:
Description: Activate a selected third-party application.
Endpoint: POST /api/apps/activate
Request Body:
{
  "userId": "String",
  "appId": "String"
}

Response (Success):
{
  "message": "App activated successfully.",
  "transactionId": "String"
}

Response (Error):
{
  "message": "App activation failed",
  "statusCode": 400
}

Deactivate App:
Description: Deactivate a selected third-party application.
Endpoint: POST /api/apps/deactivate
Request Body:
{
  "userId": "String",
  "appId": "String"
}

Response (Success):
{
  "message": "App deactivated successfully.",
  "transactionId": "String"
}

Response (Error):
{
  "message": "App deactivation failed",
  "statusCode": 400
}

Tasks

[ ] Create an endpoint (GET /apps) to fetch available third-party applications.
[ ] Create endpoints (POST /apps/activate, POST /apps/deactivate) to handle the activation and deactivation of applications.
[ ] Validate user input on the server side.
[ ] Integrate with third-party APIs (e.g., Zoom, Teams, Slack, Dropbox, OneDrive) to handle app activations and deactivations.
[ ] Implement server-side logic to handle successful and failed activations/deactivations.
[ ] Ensure all sensitive data is encrypted and secure.
[ ] Implement logging for errors and activation/deactivation attempts.
[ ] Write unit tests for the activation and deactivation endpoints.
[ ] Write integration tests for third-party API integrations.

Testing

[ ] Write unit tests for backend validation and transaction handling.
[ ] Write integration tests for the end-to-end activation/deactivation process.
[ ] Perform security testing to ensure data protection and compliance.
[ ] Test various scenarios for app activations and deactivations (e.g., successful, failed, retry).

not supported in this app


rpc_listener

Could you briefly explain what are rpc_listeners used for? Cannot find anything in docs about it...
Thanks,
Andi

@as51340 Sorry I missed this question.
The rpc_listeners, which are realized by asio_rpc_listener, act as servers responsible for processing incoming RPC requests. Typically, the leader acts as a client that sends out append_entries requests, while the followers serve as listeners, essentially operating as servers.

thanks @greensky00 !


add test from_transaction_output

Pull Request type
Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Build-related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?

Issue Number: N/A
What is the new behavior?

Does this introduce a breaking change?

[ ] Yes
[ ] No

Other information

This change is

Current dependencies on/for this PR:

main

PR #771

PR #767

PR #772

PR #770

PR #773   👈

PR #774

PR #763
PR #762

This comment was auto-generated by Graphite.


Updated to Syncthing 1.23.5

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/109184&drop=dogfoodAlpha

@wingetbot waivers Add Validation-Executable-Error


Refactoring imports for a few Pyro modules

Addresses #981 for nn, distributions and optim modules.
Additionally, it does the following.

Changes __init__.py for modules so that:

The classes/functions that form the public API are explicitly declared in an __all__ variable.
All remaining code is migrated to other classes. This is to prevent namespace pollution (and unwitting circular imports). e.g. The following (earlier working) code will throw an error now: from pyro.optim import torch. This separation makes it easier to generate docs too.

Since we are using __all__, the linter is happy. As such noqa is removed from __init__.py, and flake8 checks these files for unused imports.
Uses absolute imports in all files.

maybe im missing something they don't have pytorch versions?
On Mon, Apr 9, 2018, 5:57 PM Fritz Obermeyer<EMAIL_ADDRESS>wrote:

@fritzo commented on this pull request.
In pyro/optim/pytorch_optimizers.py
https://github.com/uber/pyro/pull/991#discussion_r180271450:

@@ -0,0 +1,21 @@
+import torch

That's fine, just please preserve the links to upstream docs, as I find
them useful
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/uber/pyro/pull/991#discussion_r180271450, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AVFMgh0CA7zeCxTNYO-CV7H5z4dbxlf5ks5tnANigaJpZM4TNY8U
.

ready to merge?

Thanks for the review, @jpchen, @fritzo. Yes, this is good to merge. Will handle other modules shortly.


dogwrap events should determine priority based on result

Currently success and failure both come in as normal (default).
dogwrap command should both auto-select the correct one based on output, as well as allow operator to override with commandline flag.

Closing and reopening on  datadogpy repo.


ID2 submision

İphone7 ios 14.0.1

pending:ID2
account1:screenshot-TBC
account2:screenshot-TBC
We cannot fully verify this submission. Please assist us in typing out the account addresses for ID2 in full as text in a comment on this PR. Thank you!
@Rookie23

pending:ID2
account1:screenshot-TBC
account2:screenshot-TBC
We cannot fully verify this submission. Please assist us in typing out the account addresses for ID2 in full as text in a comment on this PR. Thank you!
@Rookie23

confirmed:ID2
address:48ddRbSQZZuCKaDakUfpzPNSDRSgLugtqjBSPC2ZvocHMX8GT4

Form Submitted


If the child is GestureDetector taps are not propagated

Hi
With your example, if I place a GestureDetector as a child the taps are not being registered. Can you please take this into account. The icons are moving in a  circular path as your provided example but when Gesture Detector is attached taps are only registered at the top of the circle only but not in other position.
List<Widget>grid = [] // children for Stack
grid.add(Positioned(
        left: isPortrait ? spacing : (constraints.maxWidth / 40),
        top: isPortrait ? (constraints.maxHeight / 40) : spacing,
        child: imageStatusForWrapper[i] != Image.removed
            ? PathAnimation(
                path: ovalPath,
                duration: const Duration(seconds: 6),
                reverse: false,
                repeat: true,
                curve: Curves.linear,
                startAnimatedPercent: (1 / 5) * i,
                child: RotationTransition(
                  turns: _rotationAnimation,
                  child: IgnorePointer(
                    ignoring: imageStatus[i] == Image.removed,
                    child: Container(
                      color: Colors.white,
                      child: GestureDetector(

                        onTap: () async {
                          onTapCaller(i, 2);
                        },
                        child: imageStatus[i] != Image.removed
                            ? iconWidget
                            :  vanishingWidget,
                      ),
                    ),
                  ),
                ),
              )
            : emptySizedBox,
      ));

I would appreciate help regarding this.

Thanks for your feedback, I will check and fix this issue as soon as possible.

The new version has fixed the issue, you can test it. Thx


IntelliJ IDEA's Postgresql JDBC cannot connect via domain & ip

Describe the bug
Suppose we have a docker-compose script with the project name test:
version: "3"
services:
  postgres:
    image: postgres:14.9-bullseye
    restart: on-failure

With this configuration, we can connect to the database using psql -h postgres.test.orb.local -p 5432 -U postgres. GUI programs such as Postico work as expected. However, the database tool in IDEA fails to connect, regardless of whether we use the domain or the IP.
If we modify the script to expose the PostgreSQL port, we can connect using localhost:5432 in IDEA. However, postgres.test.orb.local:5432 still does not work:
version: "3"
services:
  postgres:
    image: postgres:14.9-bullseye
    restart: on-failure
    ports:
      - 5432:5432

Could there be an issue with JDBC?

To Reproduce
No response
Expected behavior
No response
Diagnostic report (required)
No response
Screenshots and additional context (optional)
No response

Can't reproduce:

You're probably still having issues with Surge, so merging into #529. Please share a diagnostic report to confirm this.


Use six.moves.range in more module

Several functions in more.py use range so ensuring it's xrange on python2 might speed them up and reduce the memory overhead.

Hmm, surprised I didn't do this originally. Thanks!


Add support for full regexp --grep arguments

Motivation
Some IDEs (i.e. WebStorm)  pass a full regexp (Including the delimitters) to karma run. This will cause the runner to skip all tests instead of applying the pattern.
This PR aims to provide compatibility for this behaviour.
Example
kerma run --grep=/^some\\.test\\.Suite/

@googlebot I signed it!


Remove old ROC report

After impactasaurus/app#224, remove the old ROC report code and API endpoints

 Improved reporting


Make the folder movement faster on Windows

I can't wait on my not-bad PC for three years for an error message saying that the folder is not movable. In the JetBrains Editors, this operation is super-fast and I don't know why this is super slow in VSCode.

/gifPlease

Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, .gif files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.
If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (Developer: Toggle Screencast Mode in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.
Happy coding!

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Does not work good with auto hide menubar

Hello,
I set my menu bar to auto hide in the macOS settings.
If I click on the app and then select something in the menu with the mouse, macOS hides the menu bar again and the selection in the app no longer fits. Can this be fixed?
The standard behavior of Apple's own menu extras is that the menu bar is not hidden as long as the extra is open.
Thanks Jan

You can work it around by checking "Avoid taking application focus" in the "Advanced" section of preferences, but other than that, there is not much we can do about it.

Just to clarify, it might be possible to hack around and somehow make it work, but I don't have time/energy to invest into this as there is no obvious solution.


Update manage-video-web.md

Start and stop sending screen share while on a call. Check if local video is on or off, and also listen for changes. Check if screen sharing is on or off, and also listen for changes.

Docs Build status updates of commit 6043641:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/communication-services/how-tos/calling-sdk/includes/manage-video/manage-video-web.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@chriswhilar - the listed authors of this document / include seem to be unreachable. can you review this or reassign it? Thanks.

IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@csandjon Next time, as a microsoft employee submit documentation changes to https://github.com/MicrosoftDocs/azure-docs-pr and not here.
This way I don't get tagged and your change will be merged faster and more efficiently.

#sign-off

#sign-off

@Jak-MS I'm the MS author for this doc


intero fails during initialization with "Trace/BPT trap: 5"

Recently I started getting this error while trying to start intero: Error while checking syntax automatically: (wrong-type-argument number-or-marker-p "Trace/BPT trap: 5").
I see nothing else in *messages*. It occurs either if I have (add-hook 'haskell-mode-hook 'intero-mode) in emacs config or I manually call intero-mode in a haskell buffer.
Would gladly provide more info if you give some pointers on what may help.
I'm using  intero 20170221.931 and emacs GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1911)) of 2016-09-21

I found the reason why that happens:
Configuring GHCi with the following packages: tinkoff-travel
Progress: 1/2dyld: Library not loaded: @rpath/libHSsyb-0.6-4kccWaTe3QZLxAMQYKgEyE-ghc7.10.3.dylib
  Referenced from: /Users/dr/.local/bin/intero
  Reason: image not found

It seems like it's working again after updating the intero binary with stack, can't reproduce it anymore, closing for now.


Bug fix centered slides show/hide position

If you want do show/hide with this usage swiper:
https://github.com/nolimits4web/Swiper/blob/master/demos/23-thumbs-gallery.html
The position of centered slide is broken.
Demo:
http://www.giphy.com/gifs/26hirxQ7trqmlipQ4

Merged, thanks


Use non-streaming TiingoNews if api key provided

This PR is chained to PR #3786

Description

Updated TiingoNews to use non-streaming when an api key is provided

How Has This Been Tested?
Local testing
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Non-functional change (xml comments/documentation/etc)

Checklist:

[x] My code follows the code style of this project.
[x] I have read the CONTRIBUTING document.
[x] All new and existing tests passed.
[x] My branch follows the naming convention bug-<issue#>-<description> or feature-<issue#>-<description>

Closing as included in #3786


Twitter::Error::Unauthorized

Everything in my config files is correct, including tokens. I've tried everything and I don't know how to make it work.
@rafitaml_ebooks: Loading model model/rafitamolin.model
@rafitaml_ebooks: starting tweet stream
@rafitaml_ebooks: Twitter::Error::Unauthorized
        /var/lib/gems/2.4.0/gems/twitter-5.17.0/lib/twitter/streaming/response.rb:21:in `on_headers_complete'
        /var/lib/gems/2.4.0/gems/twitter-5.17.0/lib/twitter/streaming/response.rb:16:in `<<'
        /var/lib/gems/2.4.0/gems/twitter-5.17.0/lib/twitter/streaming/response.rb:16:in `<<'
        /var/lib/gems/2.4.0/gems/twitter-5.17.0/lib/twitter/streaming/connection.rb:22:in `stream'
        /var/lib/gems/2.4.0/gems/twitter-5.17.0/lib/twitter/streaming/client.rb:119:in `request'
        /var/lib/gems/2.4.0/gems/twitter-5.17.0/lib/twitter/streaming/client.rb:92:in `user'
        /var/lib/gems/2.4.0/gems/twitter_ebooks-3.1.6/lib/twitter_ebooks/bot.rb:362:in `start'
        /var/lib/gems/2.4.0/gems/twitter_ebooks-3.1.6/bin/ebooks:346:in `block (3 levels) in start'
        /var/lib/gems/2.4.0/gems/twitter_ebooks-3.1.6/bin/ebooks:344:in `loop'
        /var/lib/gems/2.4.0/gems/twitter_ebooks-3.1.6/bin/ebooks:344:in `block (2 levels) in start'
@rafitaml_ebooks: Sleeping before reconnect```

My VPS was running 13 minutes behind the actual real date, which caused the problem. Asking my VPS manager to fix it fixed this problem.


Issues with brews not saving

Description
We seem to be getting a lot of issues with lost work, brews not saving, brews getting reset to earlier states, accidentally overwriting a brew and autosaving over it. etc. This may have several causes.
One of these is the Homebrewery seems to be loading brews from the cache (#603, #311 ) rather than the actual saved version when restoring a browser session (pressing ctrl+shift+t or having chrome automatically reload all recent tabs when opening the browser) for example.
Possible solutions?

Do not load from cache when refreshing or reloading the edit page
Implement a document backup/versioning system?
Post a notice urging users to backup files on their local machines
Save/load from local drive

#278, #603, #615 , #650

This also happens to me ALL THE TIME!

@AsteronCalypse Do you have any specific details? Do you notice it happening in certain situations, or do you know what steps to take that cause this problem to show up?

Brews are now always reloaded from the latest saved version, preventing accidental data loss when visiting a brew via the back button.
Fixed in commit 77973f0. Closing.


Is this project dead?

I am looking to decide what to use for a backend and thought of server-side Swift (instead of going with some NodeJS thing) and found this but I am quite skeptical.

you can check Vapor https://vapor.codes


test/unit/Runtime/DocExampleTest does not respect cmake configuration

This test attempts to install onnx through the setup.py mechanism before executing, which results in an internal (duplicate?) cmake-based compilation of onnx.  However, this cmake does not inherit any environment from the outer cmake, which has been properly configured.  This fails spectacularly in our environment because we need to configure the location of CC, pybind11, and other dependencies.  It's unclear to me how to best fix this, or even what the goal of this test is. At least, maybe it could be made optional?

I also have a question about this test (as well as a couple of others such as check-doc) that depend on an onnx installation. Does it make sense to move all such tests out of build all and into a separate check-* that explicitly requires an onnx installation? That way we could (maybe, eventually) get to a point where we can build all successfully on a variety of platforms and any additional steps required for the tests will not be part of the build.


Remove pre-loader scroll

Proposed Changes

Set display to "none" while pre-loader is loading and to "block" after pre-loader is done loading

Checklist

[ ] Documentation of the code
[ ] Add your name to the CONTRIBUTORS file
[ ] Testing your code in the local machine

You're welcome
On Fri, Oct 7, 2022 at 1:57 AM github-actions[bot] @.***>
wrote:

@.**[bot] commented on this pull request.
Greetings from GS Asansol! Thanks for making the PR, our team will soon
review your PR. Thanks :)
—
Reply to this email directly, view it on GitHub
https://github.com/gsasansol/GirlScript-Asansol/pull/120#pullrequestreview-1133778436,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYDD47NLDU4KSBHJL3VVSZDWB5YOXANCNFSM6AAAAAAQ7EJFQY
.
You are receiving this because you authored the thread.Message ID:
@.***>

@Joshua-Nweze Just realised, you were a first-time contributor. If you need help with the process, you're most welcome to join our Discord and we'll happily demonstrate in front of you.

@Debdeep1 I updated the cloned repo, made changes and created a new PR. Please check it


[py2py3] Remove/replace dependency on python-cjson library

Impact of the new feature
WMCore in general, and perhaps other services depending on it.
Is your feature request related to a problem? Please describe.
Some packages built from dmwm/WMCore depend on python-cjson ( pypi, specfile ), which only supports python2.
List of dmwm/WMCore packages depending on python-cjson

WMagent, imported by dbs3-client.
ReqMgr2, imported by dbs3-client.
Workqueue, imported by dbs3-client.
Reqmon, imported by dbs3-client.

Describe the solution you'd like
The issue about the migration of python-cjson to python3 is still open after 3 years. It seems unlikely that this changes soon.
We could use standard json library, but that would require a bit performance profiling of WMCore code.

The usage of cjson python module was chosen to increase performance of DBS code. Removing or replacing this may have significant impact on DBS code performance. I suggest that this issue should be carefully discussed with @yuyiguo . In a past we did several studies of using different json implementation for python and choice of cjson module was based on them.

@vkuznet: Thanks for the reminder and for mentioning @yuyiguo.  For this case, I think the first step is to explore alternatives.  From just about 10 minutes of Googling it seems clear to me that cjson is not really well supported while there are other options that are more widely used and more actively supported (including full Py3 support already today).  Two that I found include orjson and rapidjson.  I don't have any performance benchmarking on these, so the first step would be to compare these or some other well-supported Py3 json package to our current cjson choice to see how they compare.

Kevin, it was a very long story and we did lots of benchmark. Here is an email from 2009 which outlines the issue:
I did some testing. Here are the results:

cmsdbs@vocmsvm06:tests$ python generatebigjson.py 20 30 400
generate dictionary:  0.714949131012
json encoding:  5.11010408401
cjson encoding:  0.642325878143
json objects are the same: True
json decoding:  12.8875789642
cjson decoding:  0.799870014191

cmsdbs@vocmsvm06:tests$ python generatebigjson.py 20 200 300
generate dictionary:  7.6853530407
json encoding:  25.7249748707
cjson encoding:  3.26199102402
json objects are the same: True
json decoding:  74.9634130001
cjson decoding:  13.6383581161

python generatebigjson.py 20 300 400
generate dictionary:  37.066849947
json encoding fails:
Traceback (most recent call last):
   File "generatebigjson.py", line 26, in <module>
     jsonobject1=json.dumps(d)
   File "/home/cmsdbs/dbs3/External/python/lib/python2.6/json/
__init__.py", line 230, in dumps
     return _default_encoder.encode(obj)
   File "/home/cmsdbs/dbs3/External/python/lib/python2.6/json/
encoder.py", line 368, in encode
     return ''.join(chunks)
MemoryError

cjson encoding:  6.63086295128
Now it's stuck on json decoding and I don't want to wait on it anymore.

I don't have this benchmarking script anymore (I lost couple of laptops since that year), but here is a code I used in DAS python implementation which relied on 3 json's implementations, cjson, yajl and standard library json. If I recall correctly it was part of DMWM codebase at some point and eventually was removed from there.
As you can see from benchmarking numbers the cjson not only outperforms the standard library one by large margin but it also had no issue with memory footprint which was another issue we explored at that time. This issue was about large memory footprint when loading large json files. Python is really bad at this due to its memory management. Please note, that whatever you do I suggest that you perform a similar benchmarks like encoding and decoding large json files which is usually the case in DMWM codebase which quite often use dynamic keys which contributes to large memory and CPU footprints.
@yuyiguo was on that list which was exchange between me, Anzar, Simon, Dave and Aleko. So I think she will remember and find out appropriate info.

@vkuznet, just to make sure there is no confusion, I don't think anyone is proposing to fall back to the standard python json.  I'm just saying that there are more modern options (that probably didn't exist in 2009) that we should consider, like orjson, that look like they have comparable performance  to cjson based on the numbers that you posted.   Hopefully we can start there.

My suggestion is to do the following (In that order):

pick up large Phedex JSON output (as it has nested data structures)
write benchmark for you library of choice
run benchmark against Phedex JSON using cjson and your library of choice
if results are comparable

write wrapper class similar to code I provided in DAS to avoid re-writing DBS pieces
write spec for deployment procedure
add switch to DBS to use wrapper class
make new release of DBS which can work with both cjson and your library of choice
run test with python2 and python3
If everything goes smoothly prepare DBS for switch to new library. I think you also aware that  such switch can only be done when DBS code itself will be ported to python3. So, it's going to be a lot of work. And, as I pointed out before at different occasions may be you should first evaluate if this effort is worth it since rewriting DBS in Go will eliminate all of these problems (and others), and will provide much more efficient code base which will have better lifetime in a long run and provide more benefits for time required for these efforts. It is your choice at the end.

Thanks for providing these useful suggestions, Valentin and Kevin. The check list above is close to what I have in mind.
Giving that the main goal with this issue is to be able to port WMCore do python3, I'd suggest to start the research/profiling of what the best library is in python3. Of course we also have to consider the results for a python2 stack, and if needed keep using a different json while our code is still running in PY2.

The investigation continued, a draft of the report is available at https://cms-dmwm-test.docs.cern.ch/py2py3/json/

As discussed this morning with Dario and Todor, we do not see cjson dependency and/or imports within the WMCore codebase, hence, we can close this and deal with cjson only in DBS (which will likely keep using cjson in python2, and use standard library json in python3).
Closing this as there is nothing else to be done in WMCore.


Python multi-line history cursor issue

The cursor must be positioned top left for multi line comments for up-arrow to work properly

Pressing up when in the middle of the top line will move the cursor to the beginning, so multiple up presses will work as desired as of build 1927.


Add slide in

Features

Left and right;
Multiple Slide-ins

Solutions
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_sidenav

:tada: This issue has been resolved in version 0.10.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Use partner2 layout for institutions

Here are the changes from yesterday. I refactored apps/partner2/routes.coffee a bit so we don't  repeat ourselves in order to know when the new layout should be used.
I found the testing a little tangled for this PR, because it is a preliminary PR that will soon be updated again. So, I commented out the parts of the tests for admin that were failing and added TODOs. Lmk what you think.
cc @oxaudo

          1 Warning

  :warning:
  Please assign someone to your PR

  Generated by :no_entry_sign: danger

We probably should add a change log entry here, since it's fairly noticeable change :)

I wondered about that, but it looks like this repo doesn't have a change log!

Awesome!! artsy/gravity#10621 has been deployed so let's merge this and give it a shot in staging! Thanks, @gnilekaw!!


alembic: 1.7.13 -> 1.7.14

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/alembic/versions.
meta.description for alembic is: "An open framework for storing and sharing scene data"
meta.homepage for alembic is: "http://alembic.io/"
meta.changelog for alembic is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 1.7.14 with grep in /nix/store/jqlxfh0qv6pbsg614q2vr0w3kzjcmc6a-alembic-1.7.14-bin

directory tree listing: https://gist.github.com/e127884761287a6ffc2388e0057253d5

du listing: https://gist.github.com/f96bc4f34d526cce0de4e9cc78907155

Rebuild report (if merged into master) (click to expand)

6 total rebuild path(s)

2 package rebuild(s)

2 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
2 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
alembic
blender

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/jqlxfh0qv6pbsg614q2vr0w3kzjcmc6a-alembic-1.7.14-bin \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A alembic https://github.com/r-ryantm/nixpkgs/archive/87ca836937bb7476fa72f6bca93ae3c00676c140.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/jqlxfh0qv6pbsg614q2vr0w3kzjcmc6a-alembic-1.7.14-bin
ls -la /nix/store/jqlxfh0qv6pbsg614q2vr0w3kzjcmc6a-alembic-1.7.14-bin/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review 1

2 packages built:

alembic
blender

Maintainer pings
cc @guibou for testing.

Full rebuild seems happy, macos 10.14 & linux x86_64.


suggestion: pins for meetups locations

Would it be possible to show a map with pins for the actual meetups happening in your area.  Some groups are in an area with a couple of larger cities, and the meetups will bounce around.  Discerning the base city of the meetup group from where they are actually active would be helpful.

Idea: create a separate layer. Get the geolocation from the actual calendar-entries of the groups (GEO). Might not be available in the icalendar-file though. Then we should use the groups geolocation instead?
Question shall ALL meetups be shown or just the next one per group?
Alternative: Add them to the usergroups-layer in a different color. As replacement for the usergroup-icon?


Zero Trust solution for automatic division of Treasury Address proceeds.

The readme states the following about the treasury address:

REACT_APP_TREASURY_ADDRESS=PLACEHOLDER
This the Solana address that receives the funds gathered during the minting process. More docs coming as we can test this.

It is my understanding that this is the wallet that all Solana will be deposited into from the initial minting process.
Correct me if I'm wrong, but I imagine that the vast majority of projects split these proceeds as they do the royalties of Secondary market sales.
This begs the obvious question as to how this splitting process is typically handled, doing this by hand seems to me directly at odds with the philosophy of decentralisation.
Thus there must be an open source standard for such a simple, common practice, yet I see plenty of unanswered questions here about exactly this topic. #155 #101 #66
What is the solution?

+1


Change synopsis of install-powershell.ps1 to reflect that it works on Linux and macOS as well

According to @SteveL-MSFT's tweet it works not only on Windows, but also Linux and macOS: https://twitter.com/Steve_MSFT/status/930599397460623360

Marking as GA because it's very low risk.  @adityapatwardhan agreed offline


Document site fix

Your Gemfile has no gem server sources. So I added a line like this to your Gemfile:
source 'https://rubygems.org'

Fixed syntax error in string interpolation ($ -> s)

Looks good, thanks!


Consider supporting private, copy-on-write mappings

I really like this library due to its simplicity.  However, one thing its missing for my use case is support for private, copy-on-write mappings.
In other words, I want to be able to map a file and edit the mapping, but not have edits persisted to the underlying file, which is typically implemented using private, copy-on-write pages under the covers.
On Windows this means passing FILE_MAP_COPY to MapViewOfFile, instead of FILE_MAP_READ or FILE_MAP_WRITE.  I believe the MSDN documentation is incorrect for this, as it says FILE_MAP_COPY should be ORed with FILE_MAP_READ, FILE_MAP_WRITE or FILE_MAP_ALL_ACCESS.  This stackoverflow post indicates that this is wrong, and FILE_MAP_COPY should just be passed on its own. This is what boost.iostreams does.
On Linux, this means passing MAP_PRIVATE via flags to mmap.  It's not entirely clear to me what difference PROT_READ vs. PROT_WRITE makes if MAP_PRIVATE is passed via flags.
The simplest way to support this seems to be to add a new access_mode value - maybe copy, copy_on_write, or private.  FILE_MAP_COPY should be passed to MapViewOfFile on Windows, and PROT_READ and MAP_PRIVATE should be passed to mmap on Linux.  However, this depends on whether I've overlooked some important subtlety on Linux when PROT_READ vs PROT_WRITE is passed to mmap with MAP_PRIVATE.  If so, perhaps a new mapping_mode enum with shared and private values would be desirable.
I'm happy to take a stab at this myself if you can give me your thoughts on what the interface for this should be.

@jimmehc I'm glad to hear you like this library! I'd be more than happy for you to send a PR :)
I think what you propose--adding an entry to access_mode--is indeed the simplest way, and how I would attempt to do this as well (due in large part to the pain of adding another template parameter to the class and thus having to update all out-of-class definitions :grinning:).
Moreover, having a separate mapping_mode parameter would allow for a read-only private mapping (with the combination of access_mode::read and mapping_mode::private), of which there is probably little use, but please correct me if I'm wrong.


Training json example

Hi
I plan to train a new IPAdapter.
For the json, I read your example with text prompt:
[
{"text": "A dog", "image_file": "dog.jpg"},
{"text": "A cat", "image_file": "cat.jpg"}
]
But I want to use an image prompt (like you did for face IPAdapter). Could you provide an example?

Thanks. But in your training script you never called face_image_file

I used about 50W images, train 20w steps.

Hi @thibaudart ! Did you succeed with the cats/dogs adapter model? Can you share any results? Thanks!

    image_file = item["image_file"]
    raw_image = Image.open(os.path.join(self.image_root_path, image_file))
    clip_image = self.clip_image_processor(images=raw_image, return_tensors="pt").pixel_values

Ok so I just need to change item["image_file"] by item["face_image_file"] and the training script will use only the face. Sounds good. I'll try to train an IPAdapter.
Could you gives me the number of image and number of steps you trained?

Hi @thibaudart!  As I understand, you need do not change item["image_file"] to item["face_image_file"], but you need

get face image file name: face_image_file = item["face_image_file"]
read the face image file: raw_face_image = Image.open(os.path.join(self.image_root_path, face_image_file))
provide the face image file to clip_image_processor: clip_image = self.clip_image_processor(images=raw_face_image, return_tensors="pt").pixel_values

so, finally "getitem" should return:
{
"image": image,  <- full image
"text_input_ids": text_input_ids,
"clip_image": clip_image,  **<- face image **
"drop_image_embed": drop_image_embed
}
clip_image will be used as a condition, image will be used as ground truth
Hi @xiaohu2015  ! Am I correct here? Thank!

@madstuntman11  yes, you are right.

Yes it makes more sense.
Thanks for the code snippet!
T
Le mer. 13 déc. 2023 à 22:59, madstuntman11 @.***> a
écrit :

image_file = item["image_file"]
raw_image = Image.open(os.path.join(self.image_root_path, image_file))
clip_image = self.clip_image_processor(images=raw_image, return_tensors="pt").pixel_values

Ok so I just need to change item["image_file"] by item["face_image_file"]
and the training script will use only the face. Sounds good. I'll try to
train an IPAdapter.
Could you gives me the number of image and number of steps you trained?
Hi @thibaudart https://github.com/thibaudart! As I understand, you need
do not change item["image_file"] to item["face_image_file"], but you need

get face image file name: face_image_file = item["face_image_file"]
read the face image file: raw_face_image =
Image.open(os.path.join(self.image_root_path, face_image_file))
provide the face image file to clip_image_processor: clip_image =
self.clip_image_processor(images=raw_face_image,
return_tensors="pt").pixel_values

so, finally "getitem" should return:
{
"image": image, <- full image
"text_input_ids": text_input_ids,
"clip_image": clip_image, **<- face image **
"drop_image_embed": drop_image_embed
}
clip_image will be used as a condition, image will be used as ground truth
Hi @xiaohu2015 https://github.com/xiaohu2015 ! Am I correct here? Thank!
—
Reply to this email directly, view it on GitHub
https://github.com/tencent-ailab/IP-Adapter/issues/162#issuecomment-1854765050,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYWNXDDNDRSQQP2WLUOFZJDYJIQKXAVCNFSM6AAAAABAFX6IFSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNJUG43DKMBVGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

I just finished my first training.
But when I try to load the safetensors, I got this error:
Traceback (most recent call last):
File "D:\ipadater\IP-Adapter\test.py", line 27, in
ip_model = IPAdapterXL(pipe, image_encoder_path, ip_ckpt, device)
File "D:\ipadater\IP-Adapter\ip_adapter\ip_adapter.py", line 83, in init
self.load_ip_adapter()
File "D:\ipadater\IP-Adapter\ip_adapter\ip_adapter.py", line 134, in load_ip_adapter
self.image_proj_model.load_state_dict(state_dict["image_proj"])
File "D:\ipadater\venv\lib\site-packages\torch\nn\modules\module.py", line 2152, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for ImageProjModel:
Missing key(s) in state_dict: "proj.weight", "proj.bias", "norm.weight", "norm.bias".

you should do some conversion, please refer to https://github.com/tencent-ailab/IP-Adapter/issues/168

I tried:
import torch
ckpt = "checkpoint-50000/pytorch_model.bin"
sd = torch.load(ckpt, map_location="cpu")
image_proj_sd = {}
ip_sd = {}
for k in sd:
    if k.startswith("unet"):
        pass
    elif k.startswith("image_proj_model"):
        image_proj_sd[k.replace("image_proj_model.", "")] = sd[k]
    elif k.startswith("adapter_modules"):
        ip_sd[k.replace("adapter_modules.", "")] = sd[k]

torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "ip_adapter.bin")

Got this error:
Error occurred when executing IPAdapterApply:
'1.to_k_ip.weight'

File "E:\comfy\execution.py", line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "E:\comfy\execution.py", line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "E:\comfy\execution.py", line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "E:\comfy\custom_nodes\ComfyUI_IPAdapter_plus\IPAdapterPlus.py", line 420, in apply_ipadapter
output_cross_attention_dim = ipadapter["ip_adapter"]["1.to_k_ip.weight"].shape[1]

I tried this:

names_1 = [
"down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight", "down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight", "down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "down_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight", "down_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight", "down_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "down_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "down_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight", "down_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight", "mid_block.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "mid_block.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.1.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.1.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.2.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.2.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.3.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.3.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.3.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.3.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight", "up_blocks.3.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight", "up_blocks.3.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight"
]

names_2 = [
"1.to_k_ip.weight", "1.to_v_ip.weight", "3.to_k_ip.weight", "3.to_v_ip.weight", "5.to_k_ip.weight", "5.to_v_ip.weight", "7.to_k_ip.weight", "7.to_v_ip.weight", "9.to_k_ip.weight", "9.to_v_ip.weight", "11.to_k_ip.weight", "11.to_v_ip.weight", "13.to_k_ip.weight", "13.to_v_ip.weight", "15.to_k_ip.weight", "15.to_v_ip.weight", "17.to_k_ip.weight", "17.to_v_ip.weight", "19.to_k_ip.weight", "19.to_v_ip.weight", "21.to_k_ip.weight", "21.to_v_ip.weight", "23.to_k_ip.weight", "23.to_v_ip.weight", "25.to_k_ip.weight", "25.to_v_ip.weight", "27.to_k_ip.weight", "27.to_v_ip.weight", "29.to_k_ip.weight", "29.to_v_ip.weight", "31.to_k_ip.weight", "31.to_v_ip.weight"
]

mapping = {k: v for k, v in zip(names_1, names_2)}

import torch
from safetensors.torch import load_file
ckpt = "output/checkpoint-27500/model.safetensors"
sd = load_file(ckpt)
image_proj_sd = {}
ip_sd = {}
for k in sd:
    if k.startswith("image_proj_model"):
        image_proj_sd[k.replace("image_proj_model.", "")] = sd[k]
    elif "_ip." in k:
        ip_sd[mapping[k.replace("unet.", "")]] = sd[k]

torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "E:/comfy/custom_nodes/ComfyUI_IPAdapter_plus/ip-adapter-clothes_sdxl2.bin")

Got this error:
Traceback (most recent call last):
  File "D:\ipadater\IP-Adapter\convert2bin.py", line 21, in <module>
    ip_sd[mapping[k.replace("unet.", "")]] = sd[k]
KeyError: 'down_blocks.1.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight'

I tried this:
names_1 = ['down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.2.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.2.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.3.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.3.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.3.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.3.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.3.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.3.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight']

names_2 = [
"1.to_k_ip.weight", "1.to_v_ip.weight", "3.to_k_ip.weight", "3.to_v_ip.weight", "5.to_k_ip.weight", "5.to_v_ip.weight", "7.to_k_ip.weight", "7.to_v_ip.weight", "9.to_k_ip.weight", "9.to_v_ip.weight", "11.to_k_ip.weight", "11.to_v_ip.weight", "13.to_k_ip.weight", "13.to_v_ip.weight", "15.to_k_ip.weight", "15.to_v_ip.weight", "17.to_k_ip.weight", "17.to_v_ip.weight", "19.to_k_ip.weight", "19.to_v_ip.weight", "21.to_k_ip.weight", "21.to_v_ip.weight", "23.to_k_ip.weight", "23.to_v_ip.weight", "25.to_k_ip.weight", "25.to_v_ip.weight", "27.to_k_ip.weight", "27.to_v_ip.weight", "29.to_k_ip.weight", "29.to_v_ip.weight", "31.to_k_ip.weight", "31.to_v_ip.weight"
]

mapping = {k: v for k, v in zip(names_1, names_2)}

import torch
from safetensors.torch import load_file
ckpt = "output/checkpoint-27500/model.safetensors"

sd = load_file(ckpt)
image_proj_sd = {}
ip_sd = {}
for k in sd:
    if k.startswith("image_proj_model"):
        image_proj_sd[k.replace("image_proj_model.", "")] = sd[k]
    elif "_ip." in k:
        ip_sd[mapping[k.replace("unet.", "")]] = sd[k]

torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "E:/comfy/custom_nodes/ComfyUI_IPAdapter_plus/ip-adapter-clothes_sdxl2.bin")

Got this error:
Traceback (most recent call last):
  File "D:\ipadater\IP-Adapter\convert2bin.py", line 22, in <module>
    ip_sd[mapping[k.replace("unet.", "")]] = sd[k]
KeyError: 'down_blocks.1.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight'

btw, it's an SDXL model maybe it's the cause of the error?

btw, it's an SDXL model maybe it's the cause of the error?

do you also test this https://github.com/tencent-ailab/IP-Adapter/issues/172#issuecomment-1852610791

The last comment says it's not working:
Thanks! I think I got it to work with the script I posted in this order : down, up, mid. The same as the order for SD1.5.
But the results are really not good, which is why I didn't think it was working. I tried to finetune the SDXL IP-Adapter but even after only 2K steps, it's already really fried, I'm only able to produce an image okayish with a weight of the trained IP-Adapter between 0.1 and 0.3... I don't know if it's an error in the conversion or in the training. I used the same values as the original script and it was not producing these results at all with IP-Adapter on SD1.5 (for the same training dataset)...

names_1 = ['down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.1.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'down_blocks.1.attentions.0.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'down_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.1.attentions.1.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'down_blocks.1.attentions.1.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.2.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.2.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.3.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.3.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.4.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.4.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.5.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.5.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.6.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.6.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.7.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.7.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.8.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.8.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.9.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.0.transformer_blocks.9.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.2.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.2.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.3.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.3.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.4.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.4.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.5.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.5.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.6.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.6.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.7.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.7.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.8.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.8.attn2.processor.to_v_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.9.attn2.processor.to_k_ip.weight', 'down_blocks.2.attentions.1.transformer_blocks.9.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.2.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.2.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.3.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.3.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.4.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.4.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.5.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.5.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.6.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.6.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.7.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.7.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.8.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.8.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.9.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.0.transformer_blocks.9.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.2.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.2.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.3.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.3.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.4.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.4.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.5.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.5.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.6.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.6.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.7.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.7.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.8.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.8.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.9.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.1.transformer_blocks.9.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.2.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.2.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.3.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.3.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.4.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.4.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.5.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.5.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.6.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.6.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.7.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.7.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.8.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.8.attn2.processor.to_v_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.9.attn2.processor.to_k_ip.weight', 'up_blocks.0.attentions.2.transformer_blocks.9.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.0.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.1.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.1.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.1.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.2.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.2.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'up_blocks.1.attentions.2.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'up_blocks.1.attentions.2.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.0.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.1.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.1.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.2.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.2.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.3.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.3.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.4.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.4.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.5.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.5.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.6.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.6.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.7.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.7.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.8.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.8.attn2.processor.to_v_ip.weight', 'mid_block.attentions.0.transformer_blocks.9.attn2.processor.to_k_ip.weight', 'mid_block.attentions.0.transformer_blocks.9.attn2.processor.to_v_ip.weight']

names_2 = ['1.to_k_ip.weight', '1.to_v_ip.weight', '3.to_k_ip.weight', '3.to_v_ip.weight', '5.to_k_ip.weight', '5.to_v_ip.weight', '7.to_k_ip.weight', '7.to_v_ip.weight', '9.to_k_ip.weight', '9.to_v_ip.weight', '11.to_k_ip.weight', '11.to_v_ip.weight', '13.to_k_ip.weight', '13.to_v_ip.weight', '15.to_k_ip.weight', '15.to_v_ip.weight', '17.to_k_ip.weight', '17.to_v_ip.weight', '19.to_k_ip.weight', '19.to_v_ip.weight', '21.to_k_ip.weight', '21.to_v_ip.weight', '23.to_k_ip.weight', '23.to_v_ip.weight', '25.to_k_ip.weight', '25.to_v_ip.weight', '27.to_k_ip.weight', '27.to_v_ip.weight', '29.to_k_ip.weight', '29.to_v_ip.weight', '31.to_k_ip.weight', '31.to_v_ip.weight', '33.to_k_ip.weight', '33.to_v_ip.weight', '35.to_k_ip.weight', '35.to_v_ip.weight', '37.to_k_ip.weight', '37.to_v_ip.weight', '39.to_k_ip.weight', '39.to_v_ip.weight', '41.to_k_ip.weight', '41.to_v_ip.weight', '43.to_k_ip.weight', '43.to_v_ip.weight', '45.to_k_ip.weight', '45.to_v_ip.weight', '47.to_k_ip.weight', '47.to_v_ip.weight', '49.to_k_ip.weight', '49.to_v_ip.weight', '51.to_k_ip.weight', '51.to_v_ip.weight', '53.to_k_ip.weight', '53.to_v_ip.weight', '55.to_k_ip.weight', '55.to_v_ip.weight', '57.to_k_ip.weight', '57.to_v_ip.weight', '59.to_k_ip.weight', '59.to_v_ip.weight', '61.to_k_ip.weight', '61.to_v_ip.weight', '63.to_k_ip.weight', '63.to_v_ip.weight', '65.to_k_ip.weight', '65.to_v_ip.weight', '67.to_k_ip.weight', '67.to_v_ip.weight', '69.to_k_ip.weight', '69.to_v_ip.weight', '71.to_k_ip.weight', '71.to_v_ip.weight', '73.to_k_ip.weight', '73.to_v_ip.weight', '75.to_k_ip.weight', '75.to_v_ip.weight', '77.to_k_ip.weight', '77.to_v_ip.weight', '79.to_k_ip.weight', '79.to_v_ip.weight', '81.to_k_ip.weight', '81.to_v_ip.weight', '83.to_k_ip.weight', '83.to_v_ip.weight', '85.to_k_ip.weight', '85.to_v_ip.weight', '87.to_k_ip.weight', '87.to_v_ip.weight', '89.to_k_ip.weight', '89.to_v_ip.weight', '91.to_k_ip.weight', '91.to_v_ip.weight', '93.to_k_ip.weight', '93.to_v_ip.weight', '95.to_k_ip.weight', '95.to_v_ip.weight', '97.to_k_ip.weight', '97.to_v_ip.weight', '99.to_k_ip.weight', '99.to_v_ip.weight', '101.to_k_ip.weight', '101.to_v_ip.weight', '103.to_k_ip.weight', '103.to_v_ip.weight', '105.to_k_ip.weight', '105.to_v_ip.weight', '107.to_k_ip.weight', '107.to_v_ip.weight', '109.to_k_ip.weight', '109.to_v_ip.weight', '111.to_k_ip.weight', '111.to_v_ip.weight', '113.to_k_ip.weight', '113.to_v_ip.weight', '115.to_k_ip.weight', '115.to_v_ip.weight', '117.to_k_ip.weight', '117.to_v_ip.weight', '119.to_k_ip.weight', '119.to_v_ip.weight', '121.to_k_ip.weight', '121.to_v_ip.weight', '123.to_k_ip.weight', '123.to_v_ip.weight', '125.to_k_ip.weight', '125.to_v_ip.weight', '127.to_k_ip.weight', '127.to_v_ip.weight', '129.to_k_ip.weight', '129.to_v_ip.weight', '131.to_k_ip.weight', '131.to_v_ip.weight', '133.to_k_ip.weight', '133.to_v_ip.weight', '135.to_k_ip.weight', '135.to_v_ip.weight', '137.to_k_ip.weight', '137.to_v_ip.weight', '139.to_k_ip.weight', '139.to_v_ip.weight']

mapping = {k: v for k, v in zip(names_1, names_2)}

import torch
from safetensors.torch import load_file
ckpt = "output_dir/ffhq/checkpoint-2000/model.safetensors"
sd = load_file(ckpt)
image_proj_sd = {}
ip_sd = {}
for k in sd:
    if k.startswith("image_proj_model"):
        image_proj_sd[k.replace("image_proj_model.", "")] = sd[k]
    elif "_ip." in k:
        ip_sd[mapping[k.replace("unet.", "")]] = sd[k]

torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "output_dir/ffhq/checkpoint-2000/ip_adapter.bin")

Thanks a lot.
 in k:
ip_sd[mapping[k.replace("unet.", "")]] = sd[k]
torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "output_dir/ffhq/checkpoint-2000/ip_adapter.bin")
—
Reply to this email directly, view it on GitHub
https://github.com/tencent-ailab/IP-Adapter/issues/162#issuecomment-1862557683,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AYWNXDDKHFJL3F6UWVI3YBTYKFYLJAVCNFSM6AAAAABAFX6IFSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRSGU2TONRYGM
.
 in k:
        ip_sd[mapping[k.replace("unet.", "")]] = sd[k]

torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "output_dir/ffhq/checkpoint-2000/ip_adapter.bin")

How did you come up with this? I have a slightly different case (maybe because of SD2.1). No idea how to convert. In training I get model.safetensors (3.5GB) and optimizer.bin (0.2GB).
 in k:
        ip_sd[mapping[k.replace("unet.", "")]] = sd[k]

torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "output_dir/ffhq/checkpoint-2000/ip_adapter.bin")

     15         image_proj_sd[k.replace("image_proj_model.", "")] = sd[k]
     16     elif "_ip." in k:
---> 17         ip_sd[mapping[k.replace("unet.", "")]] = sd[k]
     18
     19 torch.save({"image_proj": image_proj_sd, "ip_adapter": ip_sd}, "ip_adapter.bin")

KeyError: 'down_blocks.0.attentions.0.transformer_blocks.0.attn2.processor.to_k_ip.weight'

@madstuntman11
what about the full image, face image size? some data set varies in full image size, and face bbox is not fixed to 256 256.
I think force resize in the code would break the ground truth image face. but is multi size image as groundtruth like "bucket" in lora training works in ipadapter training?

@madstuntman11

I make a fine-tuned plus model for cats
cat_face_ipadapter


Admin dashboard: change conditions and calculations in "Current events", "Unpublished events" columns

This fixes #1716.
WIP. TODO: fix #1516 once clarification provided.

this looks good to me but I'm wondering whether @carpentries/core-team-workshop-admin would prefer to see a separate count for instructors and supporting instructors?

Based on our notes at the time, No. It looks like we were hoping to see the total # of instructors and did not need a breakdown. Here are the meeting notes:

AMY dashboard Unpublished … not included in the number of instructors

Could we include the # of supporting instructors in the total number of instructors? We don’t need to see the breakdown of instructors versus supporting instructors. I.e. 2 instructors + 2 supporting instructors = 4 instructors for the workshop being listed on the table

Yes, as noted in #1716

This number should be the sum total of Instructors and Supporting Instructors (not two separate columns).

@Talishask @maneesha
Thank you for your answers. I need further clarification regarding #1516, here's my question: https://github.com/carpentries/amy/issues/1516#issuecomment-725578501

@maneesha @Talishask @sheraaronhurt please take a minute to answer my question mentioned in the above comment (https://github.com/carpentries/amy/pull/1747#issuecomment-726370283)