text:
poetry install bad python version

If poetry is installed with python 3.6, when you specifiy python2.7 in [tool.poetry.dependencies] it will create a virtualenv under python 3.6.
I know it's the intended behaviour  (it's in the doc) but I think It's a real issue.
So poetry should check while creating virtualenv that the python version are not compatible (or  not the expected one).
Good idea are every where and the pipenv way (specify --python 3.6 or - python 2.7) is maybe a good way to do it.
thanks for poetry

maybe something like this :
Warning : THe current python version is not supported in pyproject.toml, do you want to continue ?(y/n).

and/ or
poetry run something
warning: you're running under a python version not supported in pyproject.toml

@jgirardet @rainyday Thanks both of you for your input. I agree that poetry should give some kind of feedback that there is an incompatibility. I will try to add it to the next feature release (`0.9.0')
And @rainyday the purpose of the python dependency is to declare for which Python versions your project is compatible with. This is particularly useful if you publish it.

I can propose some help if you want

I am running into this too.

authors: cs01 jgirardet sdispater


text:
fix python 2 open file encoding in pip installer

Fix Python 2 compatibility for pip installer by using io.open instead of open.

[ ] Added tests for changed code.
[ ] Updated documentation for changed code.

Thanks. However, now that develop has been merged into master, this PR is no longer relevant.

source: gharchive/pull-request

authors: duilio sdispater

repo: sdispater/poetry

license: MIT

license_type: permissive

license_source: github-api


text:
Fixing #12 and #13

Adding support for $count system qurey option, $count and $value path.
For $count option sdl-odata user needs to provide count value along with query result.
Hence QueryResult object.
For $count and $value, added PrimitiveRenderer.
Unit-tests included.

Looking very good, excellent contribution. Merging will become part of 2.1.x release line.

authors: Oregu renarj

repo: sdl/odata

license_source: bigquery


text:
Clarification on implementation for convergence

Hi Sebastian, thanks for the layer.
Can I clarify what you mean by:
"the network converges if SimpleSelfAttention is placed right after a convolution layer that uses batch norm"
Are you saying the order of operations should always be
Conv => Batchnorm => Self Attention ?
And activation should come afterwards?

Without commenting on what the order of operations should always be, the implementation in this repo is consistent with:
Conv2D -> Self Attention -> Activation

source: gharchive/issue

authors: LukeBolly carbocation

repo: sdoria/SimpleSelfAttention


text:
Display Edit window immediately after adding a new widget

Is it possible to display edit window of a widget immediately after the widget is selected in the "Add new widget" dialog?
Some of our widgets require initial configuration and there is no default configuration, so a user has to click "Edit widget configuration" icon every time he adds a new widget. It would be very helpful to have an ability to open the edit window automatically.

Brilliant, thank you for addressing this so quickly. I will give it a try now.

repo: sdorra/angular-dashboard-framework

license: mit


text:
Bug: Loading Configuration Failure

As the picture showing below, maybe a default configuration is necessary.
This error appears in not VSCode but Cursor.

This problem also occurs in WindSurf.

repo: se-dev-pion/code-block-folder


text:
Unable to recover signature from Solidity

Hello,
Thanks for the helpful library, and especially the latest personal_sign addition to it.
I've been trying to sign a message with personal_sign and then verify the signature from Solidity with an ECVerify library. However, the signature appears to be invalid from Solidity.
If I use this tool: https://etherscan.io/verifiedSignatures to verify the signature, it appears to be correct.
Comparing to a signature generated with the JavaScript libraries, the one generated from #sign or #personal_sign appears to be different every time. How is that expected as the JS generated signature is always the same for the same message and private key?
Is there something obvious that am I missing?
Thank you!

I think the question about why you get a different signature is covered in https://github.com/se3000/ruby-eth/issues/1#issuecomment-228550826. Short answer is this gem does not use libsecp256k1 or anything derived from it for signatures.
As for why it doesn't work with the ECVerify library, that seems to be specific to that library. The signatures generated by this gem are valid and submitted to the blockchain regularly. I would first try to get it working with regular sign and then move to the prefixed personal_sign.

Feel free to reopen, but assuming by the thumbs up that you're good.

https://github.com/peppersec/ruby_personal_sign/blob/master/index.rb
check this one

authors: mtomov rstormsf se3000


text:
How To Use Responsive

My current settings are as follows:
let owl_settings = {
items: 4,
responsive: {
"1405":{items:3},
"1045":{items:2},
"683":{items:1}
}
}
What I am trying to achieve is at widths greater than 1405px, display 4 items, between 1045px and 1405px display 3 items, between 683px and 1045px display 2 items and anything below 683px display 1 item.
My current setup doesn't work and I'm wondering if someone can give me more information on how responsive works to achieve this effect.

my setting.
At widths greater than 0 px, show 1 item. greater than 600 px, show 2 item. greater than 1024 px, show 10 item. It used greater than only.

Can i get more clarification of the exact syntax you would use to add the responsive code. I'm getting syntax compile errors how would i add it the example given in the docs
<OwlCarousel className="owl-theme" loop margin={10} nav items={5}>

Anyone figure this out?

my setting.
At widths greater than 0 px, show 1 item. greater than 600 px, show 2 item. greater than 1024 px, show 10 item. It used greater than only.

Please give more clarification how to add this code in OwlCaraousel component.

How to pass those params in OwlCaraousel component, Great question cause i cannot see how to do it
<OwlCarousel className="owl-theme" loop margin={10} nav items={5}>

Here is my solution.
I create a state in my component
state= {
        responsive:{
            0: {
                items: 1,
            },
            600: {
                items: 2,
            },
            1000: {
                items: 4,
            },
        },
    }

and call it inside owlCarousel component
<OwlCarousel
                            className="owl-theme"
                            loop={loop}
                            margin={gap}
                            nav={nav}
                            dots={dots}
                            items={column}
                            autoplay={autoPlay}
                            responsive={this.state.responsive}
                        >

Let me know if it solve the problem
Thanks.


text:
Update build configuration

The build configuration of this project is outdated and may no longer work.
This pull request will be merged automatically if there are no conflicts.

:tada: This PR is included in version 2.4.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

repo: sealsystems/node-log


text:
Trailing comma and missing font file when only woff file availible

When only having the woff file in the folder and the checkPath option enabled, slightly incorrect (and invalid) CSS is generated:
@font-face {
    font-family: 'Proxima Nova';
    src: url(../fonts/proximanova-regularit-webfont.eot);
    src: url(../fonts/proximanova-regularit-webfont.woff) format('woff'),;
    font-weight: 400;
    font-style: italic
}

Note the eot is still included and the extra comma after ('woff'). Does https://github.com/seaneking/postcss-fontpath/pull/4 address these issues?

Update:
Trailing Comma

It does not have a trailing comma when there is woff and svg files
It does have a trailing comma when there is woff and ttf
It does have a trailing comma when there is only a ttf
It does not have the trailing comma when there is only SVG files

Other

It does not seem to pick up and include our woff2 files
Where there are no files found, it does not include the eot IE fix

Believe the trailing comma is added on everything except the SVG becuase SVG is at the end of the formats array.
I think at this point it needs to remove the unfound font format from the array, so that the following comma check can be correct.
It should only add the eot IE font fix if an eot is found.
I'm sorry, I don't know enough node/post-css to confidently do a pull request. 😥

I've noticed that there is no woff2 because it was added after the last version was released.

@seaneking Hey, any chance to look at this? I appreciate we are all busy in lives!
If you no longer maintain this, then I will look at alternative solutions (or try fixing) - if it's on your radar then I appologise for bothering you!

Whoops sorry missed this. I'm flat out at the moment, but will see if I can have a quick look later today.

Not a problem, thank you!

Okay had a poke around, but this plugin really needs to be refactored, I haven't touched it in years. Not going to have time to do that right now, in the meantime you can just turn off checkPaths, you'll get a valid declaration then, with just a few unused src props (if you have woff2 fonts then there wont be any additional requests made by the browser).
Sorry. More than happy to accept a PR if you want to have a go yourself.

authors: mikestreety seaneking

repo: seaneking/postcss-fontpath


text:
Create a static "Partners" page for TIs/CBOs

Should explain:

What CBOs can do
The process
How to get a new Seattle account at https://login.seattle.gov/#/registration
How to get the city to make you a TI
How to work with applicants
Email address they can write to @seattle.gov that they can send their credentials and details too. Also send names of everyone in the org, and their email addresses. The CiviForm admin can then go and configure them as TIs in our site.

We could even make this a GitHub wiki page to be super scrappy. Or have the Seattle.gov team make a CMS page for this (ask Michal @ Seattle); this is probably the best solution. Either way, put a link in the footer.

For starters we can make this just a google doc that's published as a webpage.
cc @lianne-oy

Talked about it with Elise. City will work on getting such a page on Affordable Seattle; we suggested using some marketing budget to help promote it, if needed.

repo: seattle-uat/civiform


text:
Export SQL dump of prod database

Export the set of questions and programs now that we've built out a demo of the SPP Form. This way, we'll have a stub of an SQL database that we can re-hydrate whenever we're wiping the database and re-deploying to prod.

Required for #523


text:
ProgramService Implemented

Description
Implements the ProgramService.
Checklist

[ ] Created tests which fail without the change (if possible)
[ ] Extended the README / documentation, if necessary

Issue(s)

@carolinedanzi I don't know how to generate block ids. Right now it is hard-coded to 1L and are def not unique within a program, let alone across programs. Though I don't think it is necessary/helpful to have them unique across programs.

repo: seattle-uat/universal-application-tool


text:
how to set a display name in menu using  a variable....

Thanks for your support all the way..I am trying to set a display name to menu using a variable...I am using ng2-translate ...as per selected language i want to set a display name.I am quiet confused or if i may using it in wrong way..but when i set the variable to display name it show nothing in side menu..please correct me ...its urgent.....thanks in advance
This is my code

this code give me following output

What is the output of console.log(res)?
Anyway, I think that instead of doing things in that way, you can send the translation key as the displayName (would be "Dashboard" in your end, right?) and then add the translate pipe in the html code:

Let me know if that works or we should handle it in a different way.
Btw, I'll add support for ng2-translate soon :)

I am also waiting for the ng2-translate support!

I'll close this issue since using the translate pipe in the view should fix it for now until we add support for ngx-translate. Feel free to re-open it if you need any help.
Thanks :)

authors: phpweb sebaferreras tejas008


text:
cpuTemprature() always returns same temprature

I always get same temprature when i call method.
const si = require("systeminformation");
si.cpuTemperature().then(data=>console.log(data));

EDIT: i also tested using admin privileged command line still same.in windows 11 i cannot event get any value without admin access with admin access i get the same value everytime

systeminformation package version: ^5.21.22
OS: i tested both win 10 and 11

@ElsevarAsadov please have a look at the documentation (https://systeminformation.io/issues.html). Not all BIOS driver implementations return proper values. So if Windows cannot determine the correct values (see also underlying powershell command), we cannot display correct values here. You can test, if windows can get valid values by running (in powershell):
Get-CimInstance MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" | Select CurrentTemperature

authors: ElsevarAsadov sebhildebrandt

repo: sebhildebrandt/systeminformation


text:
Add the support of fs and env

https://github.com/second-state/wasmedge-quickjs/blob/main/example_js/react18_ssr/main.mjs#L8
Currently, the CSS can only be imported as a module in the example.
But in reality, the assets will be built with some random file names, something like main.073c9b0a.css.
This requires the server can read the content from the file system.
As Wasi has supplied the files and env API, it would be great to add modules like 'wasi_fs' and 'wasi_env`.

About fs. In quickjs 'std' module has some function.
If you need other fs function, please tell me more.
About env. I don't know what function is needed. Can you show me how you want to use it?

In Nodejs, I can get environment variables via process.env. The typical scenario is to set its port when the server starts.

https://github.com/second-state/wasmedge-quickjs/pull/44

authors: DarumaDocker L-jasmine

repo: second-state/wasmedge-quickjs


text:
[Bug] wasmedge target/wasm32-wasi/release/http_server.wasm

In example/http_server/Cargo.toml, we depend on wasmedge_wasi_socket = "0.1.0", but this rust crate is not upgraded to the latest version. this function
 pub unsafe extern "C" fn sock_accept(
    fd: u32,
    port: u32,
    fd: *mut u32
) -> u32

is still{params{i32 , i32 , i32} returns{i32}},which does not match WasiSockAccept in wasmedge. WasiSockAccept  has function type {params{i32 , i32} returns{i32}}.
So this problem will lead to this error:
[2021-12-05 20:02:29.651] [error] instantiation failed: incompatible import type, Code: 0x61
[2021-12-05 20:02:29.651] [error]     Mismatched function type. Expected: FuncType {params{i32 , i32 , i32} returns{i32}} , Got: FuncType {params{i32 , i32} returns{i32}}
[2021-12-05 20:02:29.651] [error]     When linking module: "wasi_snapshot_preview1" , function name: "sock_accept"
[2021-12-05 20:02:29.651] [error]     At AST node: import description
[2021-12-05 20:02:29.651] [error]     At AST node: import section
[2021-12-05 20:02:29.651] [error]     At AST node: module

when we run wasmedge target/wasm32-wasi/release/http_server.wasm .
So please upgrate this crate.

Or changingwasmedge_wasi_socket = "0.1.0" in example/http_server/Cargo.toml to wasmedge_wasi_socket = {path = "../../"} is also feasible.

Hi @alittlehorse
The crates is updated to 0.2.0. Could you please send a PR to update the version in Cargo.toml?

thanks a lot. I will send a PR.

authors: alittlehorse hydai


text:
第一个逻辑回归例子

Issue Type
Bug
Source
source
Secretflow Version
0.7.7b1
OS Platform and Distribution
centos7
Python version
3.8.12
Bazel version
No response
GCC/Compiler version
No response
What happend and What you expected to happen.
第一个逻辑回归例子：执行到sf.reveal的时候就报这个错误。试了试将spu对象给alice变为pyu对象，然后再reveal，还是不行。
ValueError: Task returned 455 objects, but num_returns=2

Reproduction code to reproduce the issue.
losses = sf.reveal(losses)
plot_losses(PYU_losses)

Hi @YIYEYIYE ,
你应该是在尝试https://secretflow.readthedocs.io/en/latest/tutorial/lr_with_spu.html 这个例子吧。我刚刚重新执行了一遍，并没有发生错误。
为了便于定位问题，请

直接下载secretflow源码，并用jupyter notebook执行 docs/tutorial/lr_with_spu.ipynb.
如果仍然出现，请贴出完整的错误信息。

感谢。

第二天又重跑了一下，可以运行了。两次的区别就是创建线程池那块儿。但往里再研究就不知道具体怎么个情况了。
感谢！

Hi @YIYEYIYE ,
你说的创建线程池是对应哪一块代码？是初始化SPU和PYU设备那一块吗？

目前不清楚，我也是刚学，慢慢研究下吧

repo: secretflow/secretflow


text:
多机构部署启动SPU进行求交问题

Issue Type
Build/Install
Source
binary
Secretflow Version
latest
OS Platform and Distribution
openEuler release 20.03  &&  BigCloud Enterprise Linux release 7.8.2105
Python version
3.8.16
Bazel version
No response
GCC/Compiler version
No response
What happend and What you expected to happen.
两个机构独立部署后初始化spu时出现问题。
(SPURuntime pid=1062) 2023-05-09 07:05:12.303 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E111]Fail to connect Socket{id=0 addr=10.10.167.226:6868} (0x0x4033540): Connection refused [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
(SPURuntime pid=1062) 2023-05-09 07:05:13.304 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
(SPURuntime pid=1062) 2023-05-09 07:05:14.304 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
(SPURuntime pid=1062) 2023-05-09 07:05:15.304 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0

Reproduction code to reproduce the issue.
spu = sf.SPU(cluster_def,link_desc)

你好，@xiaohuangpian
可以贴下执行代码吗？

-- 初始化secretflow
--A ray 集群节点
ray start --head --node-ip-address="10.10.167.226" --port="58581" --resources='{"alice": 16}' --include-dashboard=False --disable-usage-stats
--B ray 集群节点
ray start --head --node-ip-address="10.4.114.88" --port="58581" --resources='{"bob": 16}' --include-dashboard=False --disable-usage-stats
--检查hash值是否相同
ray status
-- A主节点初始化
python
import secretflow as sf
cluster_config ={
'parties': {
'alice': {
'address': '10.10.167.226:5858',
'listen_addr': '10.4.114.88:5858'
},
'bob': {
'address': '10.4.114.88:5858',
'listen_addr': '10.10.167.226:5858'
},
},
'self_party': 'alice'
}
sf.init(address='10.10.167.226:58581', cluster_config=cluster_config)
-- B主节点初始化
python
import secretflow as sf
cluster_config ={
'parties': {
'alice': {
'address': '10.10.167.226:5858',
'listen_addr': '10.4.114.88:5858'
},
'bob': {
'address': '10.4.114.88:5858',
'listen_addr': '10.10.167.226:5858'
},
},
'self_party': 'bob'
}
sf.init(address='10.4.114.88:58581', cluster_config=cluster_config)

-- A节点SPU设备初始化
import spu
cluster_def={
'nodes': [
{
'party': 'alice',
'address': '10.10.167.226:6868',
'listen_addr': '10.4.114.88:6868'
},
{
'party': 'bob',
'address': '10.4.114.88:6868',
'listen_addr': '10.10.167.226:6868'
}
],
'runtime_config': {
'protocol': spu.spu_pb2.SEMI2K,
'field': spu.spu_pb2.FM128,
'sigmoid_mode': spu.spu_pb2.RuntimeConfig.SIGMOID_REAL,
}
}
link_desc = {
'recv_timeout_ms': 3600000,
}
spu = sf.SPU(cluster_def,link_desc)
-- B节点SPU设备初始化
import spu
cluster_def={
'nodes': [
{
'party': 'bob',
'address': '10.4.114.88:6868',
'listen_addr': '10.10.167.226:6868'
},
{
'party': 'alice',
'address': '10.10.167.226:6868',
'listen_addr': '10.4.114.88:6868'
}
],
'runtime_config': {
    'protocol': spu.spu_pb2.SEMI2K,
    'field': spu.spu_pb2.FM128,
    'sigmoid_mode': spu.spu_pb2.RuntimeConfig.SIGMOID_REAL,
}

}
link_desc = {
'recv_timeout_ms': 3600000,
}
spu = sf.SPU(cluster_def,link_desc)

文档上写的是同时执行代码，SPU初始化分别是B端先、A端后执行；
B端提示：
(SPURuntime pid=1062) 2023-05-09 07:05:12.303 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E111]Fail to connect Socket{id=0 addr=10.10.167.226:6868} (0x0x4033540): Connection refused [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
(SPURuntime pid=1062) 2023-05-09 07:05:13.304 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
(SPURuntime pid=1062) 2023-05-09 07:05:14.304 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
(SPURuntime pid=1062) 2023-05-09 07:05:15.304 [error] [context.cc:operator():132] connect to rank=0 failed with error [external/yacl/yacl/link/transport/channel_brpc.cc:368] send, rpc failed=112, message=[E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R1][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R2][E112]Not connected to 10.10.167.226:6868 yet, server_id=0 [R3][E112]Not connected to 10.10.167.226:6868 yet, server_id=0
A端没任何log；后我再等B端打完log后，在次在B端重新执行spu = sf.SPU(cluster_def,link_desc)，无任何log。
后续我再准备测试数据：
-- A、B端都执行
import numpy as np
from sklearn.datasets import load_iris
data, target = load_iris(return_X_y=True, as_frame=True)
data['uid'] = np.arange(len(data)).astype('str')
data['month'] = ['Jan'] * 75 + ['Feb'] * 75
--  A端执行
import os
os.makedirs('.data', exist_ok=True)
da = data.sample(frac=0.9)
da.to_csv('.data/alice.csv', index=False)
-- B端执行
import os
os.makedirs('.data', exist_ok=True)
db = data.sample(frac=0.8)
db.to_csv('.data/bob.csv', index=False)
-- A端执行
bob = sf.PYU('bob')
alice = sf.PYU('alice')
input_path = {alice: '.data/alice.csv', bob: '.data/bob.csv'}
output_path = {alice: '.data/alice_psi.csv', bob: '.data/bob_psi.csv'}
spu.psi_csv('id', input_path, output_path, 'alice')
在等待A端结果后得到log：
(SPURuntime pid=401) 2023-05-09 06:59:29.572 [info] [bucket_psi.cc:Init:228] bucket size set to 1048576
(SPURuntime pid=401) 2023-05-09 06:59:29.572 [info] [bucket_psi.cc:Run:97] Begin sanity check for input file: .data/alice.csv, precheck_switch:true
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.8/site-packages/secretflow/device/device/spu.py", line 1622, in psi_csv
return dispatch(
File "/usr/local/lib/python3.8/site-packages/secretflow/device/device/register.py", line 111, in dispatch
return _registrar.dispatch(self.device_type, name, self, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/secretflow/device/device/register.py", line 80, in dispatch
return self._ops[device_type][name](*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/secretflow/device/kernels/spu.py", line 300, in psi_csv
return sfd.get(res)
File "/usr/local/lib/python3.8/site-packages/secretflow/distributed/primitive.py", line 73, in get
return fed.get(object_refs)
File "/usr/local/lib/python3.8/site-packages/fed/api.py", line 411, in get
values = ray.get(ray_refs)
File "/usr/local/lib/python3.8/site-packages/ray/_private/client_mode_hook.py", line 105, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/ray/_private/worker.py", line 2309, in get
raise value.as_instanceof_cause()
ray.exceptions.RayTaskError(RuntimeError): ray::SPURuntime.psi_csv() (pid=401, ip=10.10.167.226, repr=<secretflow.device.device.spu.SPURuntime object at 0x7f74f78439a0>)
File "/usr/local/lib/python3.8/site-packages/secretflow/device/device/spu.py", line 697, in psi_csv
report = psi.bucket_psi(self.link, config, ic_mode)
File "/usr/local/lib/python3.8/site-packages/spu/psi.py", line 48, in bucket_psi
report_str = libspu.libs.bucket_psi(link, config.SerializeToString(), ic_mode)
RuntimeError: what:
[external/yacl/yacl/link/transport/channel.cc:117] Get data timeout, key=root:3:ALLGATHER
stacktrace:
#0 yacl::link::Context::RecvInternal()+0x7f750ea72997
#1 yacl::link::AllGatherImpl<>()+0x7f750ea6d51d
#2 yacl::link::AllGather()+0x7f750ea6dab3
#3 spu::psi::SyncWait<>()+0x7f750e8b092a
#4 pybind11::cpp_function::initialize<>()::{lambda()#3}::_FUN()+0x7f750d7a8688
#5 pybind11::cpp_function::dispatcher()+0x7f750d7835c6
#6 PyCFunction_Call+0x4e0212
2023-05-09 07:59:30 WARNING cleanup.py:59 [alice] --  Failed to send ObjectRef(82891771158d68c18ce3259815516e1f6e896fc20100000001000000) with error: ray::SendProxyActor.send() (pid=341, ip=10.10.167.226, repr=<fed.barriers.SendProxyActor object at 0x7f45e861f2e0>)
At least one of the input arguments for this task could not be computed:
ray.exceptions.RayTaskError: ray::SPURuntime.psi_csv() (pid=401, ip=10.10.167.226, repr=<secretflow.device.device.spu.SPURuntime object at 0x7f74f78439a0>)
File "/usr/local/lib/python3.8/site-packages/secretflow/device/device/spu.py", line 697, in psi_csv
report = psi.bucket_psi(self.link, config, ic_mode)
File "/usr/local/lib/python3.8/site-packages/spu/psi.py", line 48, in bucket_psi
report_str = libspu.libs.bucket_psi(link, config.SerializeToString(), ic_mode)
RuntimeError: what:
[external/yacl/yacl/link/transport/channel.cc:117] Get data timeout, key=root:3:ALLGATHER
stacktrace:
#0 yacl::link::Context::RecvInternal()+0x7f750ea72997
#1 yacl::link::AllGatherImpl<>()+0x7f750ea6d51d
#2 yacl::link::AllGather()+0x7f750ea6dab3
#3 spu::psi::SyncWait<>()+0x7f750e8b092a
#4 pybind11::cpp_function::initialize<>()::{lambda()#3}::_FUN()+0x7f750d7a8688
#5 pybind11::cpp_function::dispatcher()+0x7f750d7835c6
#6 PyCFunction_Call+0x4e0212
2023-05-09 07:59:30 WARNING cleanup.py:62 [alice] --  Signal self to exit.
*** SIGTERM received at time=1683619170 on cpu 3 ***
PC: @     0x7f024ce0e838  (unknown)  pthread_cond_timedwait@@GLIBC_2.3.2
@     0x7f024ce12ce0  (unknown)  (unknown)
[2023-05-09 07:59:30,118 E 251 251] logging.cc:361: *** SIGTERM received at time=1683619170 on cpu 3 ***
[2023-05-09 07:59:30,118 E 251 251] logging.cc:361: PC: @     0x7f024ce0e838  (unknown)  pthread_cond_timedwait@@GLIBC_2.3.2
[2023-05-09 07:59:30,118 E 251 251] logging.cc:361:     @     0x7f024ce12ce0  (unknown)  (unknown)
2023-05-09 07:59:30 INFO cleanup.py:66 [alice] --  Check sending thread was exited.

'listen_addr'改为'0.0.0.0:xxxx'

改完后重新执行一次后，还是同样的log。老师您看，还有可能是什么问题呢？

'listen_addr'改为'0.0.0.0:xxxx'

这里指的是全部的listen_addr都要改为0.0.0.0:xxxx哈

改完后重新执行一次后，还是同样的log。老师您看，还有可能是什么问题呢？> 改完后重新执行一次后，还是同样的log。老师您看，还有可能是什么问题呢？
看起来是csv文件的问题，辛苦检查一下。

是的老师，全部更改为0.0.0.0:xxxx了。然后关于csv文件问题，是这样的老师，根据官方文档**准备数据集**

发现了一个问题。
请注意，PSI求交只需要在一端执行即可。

隐私求交也可以参考一下我们官网的隐语PSI Benchmark白皮书
介绍的会更详细一些，希望可以帮助到您。

我发现您是在python中分段执行的，这可能会出现超时的错误，建议将文档代码放入一个脚本来执行。
另外，为了更好的解决此issue，辛苦您添加下我们隐语小助手的微信（secretflow01）
祝好

好的，谢谢老师。确实是分段执行的。因为是两个独立的服务器，总会有先后执行的可能性，且在初始化secretflow的时候，时间差都在1秒内，能够正确显示log已连接的状态；初始化两个服务器的spu的时候，也是时间差在1秒内，这会产生超时错误吗？
隐语小助手上个月已经添加了
再次感谢老师解答问题。

是的，因为不是一个整体的话会有超时错误发生，您可以尝试一下。
另外您的微信名是？或者辛苦跟小助手打个招呼？

authors: Chrisdehe xiaohuangpian


text:
Introduction to C++ type conversion

We ask that you please be patient as our team works through approving and publishing all articles/tutorials in a timely manner. Allow 1-3 days for a topic to be reviewed and/or approved - allow 3-7 days for an articles to be reviewed and/or published.
Be sure to visit our Resources Page for tools, resources, and example articles to go over.
NOTE: (Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
NOTE: We tend to stray away or tend not to publish reviews/comparisons of commercial product offerings.
We're looking for the first 2-3 paragraphs of the article that appropriately summarize what your article will be about.
Proposed title of article
Introduction to C++ type conversion
Introduction paragraph (2-3 paragraphs):
Conversion from one type to another is referred to as type conversion. Type conversion's ultimate aim is to make variables of one data type work with variables of another data type to perform an operation. This is done to take advantage of some of the aspects of type hierarchies and type representations. So, when will a type conversion be beneficial?. Type conversion can be used to force the correct type of mathematical computation to be performed.
For example, to find the sum of two variables, one of int type and the other of float type. So, to find the sum, you must typecast int variable tofloat. This article will introduce the reader to type conversion In c++, the two types of type conversion  and follow it with a detailed practical demonstration.
Key takeaways:
By the end of this tutorial, the reader will understand:

Type conversion in C++
Implicit type conversion
Explicit type conversion
Conversion using cast operators
Conversion using the assignment operator

References:
N/A
Templates to use as guides

How To Guide Template
Software Review Template
Tutorial Template

seems like a helpful topic - approved @Dawe-7


text:
(Python) License Plate Detection And Recognition Using Opencv And Pytesseract

Topic Suggestion
(Python) License Plate Detection & Recognition Using Opencv And Pytesseract
Writing sample(s):
Sample
Proposal Submission
Proposed title of article
License plate detection and recognition using opencv and pytesseract
Proposed article introduction
License plate detection and recognition software are used in traffic management, car identification, surveillance, etc. You may have seen them in action in your favorite tech-based movie. You probably have always been curious about how they accomplish this.
Python helps us accomplish this using the following libraries:

opencv
imutils
pytesseract

In this tutorial, we will learn how to use the above libraries together with Python for license plate detection and recognition.
Key takeaways

The processes a software passes to detect and recognize a license plate.
What are the above-mentioned libraries and how they are used in license plate detection and recognition.
How to create a  program that detects and recognizes license plates using opencv and pytesseract.

Article quality
This article will combine both license plate detection and recognition. It will also have a well-explained code, not just a copied and pasted one.
References
N/A

Sounds like a helpful topic - let's please be sure it adds value beyond what is in any official docs and/or what is covered in other blog sites. (the articles should go beyond a basic explanation - and it is always best to reference any EngEd article and build upon it). @kirurisimon
Please be attentive to grammar/readability and make sure that you put your article through a thorough editing review prior to submitting it for final approval. (There are some great free tools that we reference in EngEd resources.)
ANY ARTICLE SUBMITTED WITH GLARING ERRORS WILL BE IMMEDIATELY CLOSED.
Please be sure to double-check that it does not overlap with any existing EngEd articles, articles on other blog sites, or any incoming EngEd topic suggestions (if you haven't already) to avoid any potential article closure, please reference any relevant EngEd articles in yours. - Approved


text:
Develop a sign language to  speech flutter app

Article checklist
Attention
Our Peer Reviewer and Content Moderator teams do NOT provide any revisions services. All revisions and edits should be completed on your own forked repo (as to not take up room in the queue) in order for our team to review them all in a timely manner.
ANY ARTICLE SUBMITTED WITH GLARING ERRORS WILL BE IMMEDIATELY CLOSED.

As a rule of thumb - please be sure to only submit articles (pull requests) that are fully polished and ready to be published. Be sure to go through our resources documents for extra and 3rd party (vetted) resources to help improve overall technical writing.

Pre-submission checks

Please ensure that you have only one open topic suggestion (issue) + in-review article (linked pull request) at a time. This will ensure that we complete the review process in a timely manner from inception to publishing

If you have not already, please go over our Resources Page for more tips and tricks on how to improve your overall technical writing so reviews are swifter, increase the chance of a payout and provide more value to our readers.

For first-time contributors and for more details on our submission guidelines, see our Contributing Guidelines.

Formatting and structure checks

[x] Have you used the correct folder and file structure? - see Contribution Guidelines

[x] Is your article properly formatted in Markdown? - see Github Markdown guide

[x] Have you used our preferred heading structure? - H3 (###) and up

[x] Does your article follow any of the suggested structure formats? - see example formats

[x] Is your article over 750 words? - Tool: Wordcounter.net

[x] Is the article you are submitting an in-depth and unique article? Does it go beyond what is in the official docs and what is covered in other blog sites. See these articles as examples.

[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.

[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.

[x] Have you included a hero image that is 600x400 pixels, under 300KB in size, and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid - Grammarly
[x] Please place your article through a 3rd party plagiarism checker. We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[x] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide
[x] Have you checked your code runs correctly and you've highlighted all necessary dependencies for installation?
[x] Are the software programs and packages you're highlighting in your article up to date, using current versions and not deprecated?

Topic suggestion this closes

Remove the backticks and add the issue number below to link and close your Topic Suggestion (issue) when your article has been published (PR has been merged). See this video for more details.

`This closes #5834

Finally, delete the article checklist notes in blockquotes and submit your PR. We look forward to reviewing your article.

Check the files. There are 2 index.md files changes in this PR.

@BrianaNzivu @lalith1403  Kindly assist on my end it seems okay.

Hey @kanoinikita 👋 . I am also seeing two index files. One for this article and another for video player using chewie and vertex. Also, I mentioned this before I closed your first PR:
Ensure you make changes to the updated index.md
This is just to ensure you make revisions on the updated index file that I made corrections on. Please use that index.md file.
I will close this PR to allow you to make the changes required and also to upload the required documents. This is just to clear up the space on the queue and also to avoid merge conflicts.
Ensure the article is fully polished/ready to be published to avoid closure of this PR
Ping me in the new PR.
Regards.

@kanoinikita 👋
I am sorry I was confusing your article with another...apologies.
Please check whether you can delete one of the index.md files that is not related to this PR.
Ping me when done or incase you need help.
Regards.

Hi @kanoinikita
I am seeing multiple index.md files in your changes. Please make sure you remove the extra ones so we can continue with the review.

@BrianaNzivu index file deleted

Plagarism check complete


text:
Restore experiment from director.

Allow to get experiment data and restore experiment object in notebook.

Closing due to inactivity.

authors: MasterSkepticista dmitryagapov

repo: securefederatedai/openfl


text:
Transposable tree format to return metrics.

~This PR simplifies return structure of metrics such that collating them is easier on aggregator side.~ Edit: Retaining current structure. Requires a wider refactor into gRPC protocols to warrant this change, therefore not in the scope of this PR.
Other misc bug fixes and/or logging improvements.

@psfoley This is ready to merge.

@MasterSkepticista Once lint fixes relevant to your changes are resolved, this is ready for merge: https://github.com/securefederatedai/openfl/actions/runs/9680569679/job/26709023824?pr=994

Fixed lint issues. The remainder are known (undefined instantiations) and not in the scope of current PR.

authors: MasterSkepticista psfoley


text:
created midstream branch, modified patchfile

Not sure if I am doing this correctly. I created a new branch midstream-v1.3.0 from midstream-v1.2.2 and pushed that branch directly to securesign/rekor. Then I made the changes to upgrade the patchfile and included the steps I did to produce this change as an example.

@Gregory-Pereira since we are not using the midstream branch any longer, I think we don't need this. The changes in https://github.com/securesign/rekor/pull/162 apply directly to the release branch. I am going to close this PR, but thanks for being so proactive about it!

authors: Gregory-Pereira lance

repo: securesign/rekor


text:
SECURESIGN-1221 | SBJ Not reaching segment endpoint

This is part two of a two part fix, opening as a draft for know until I can get a image for sbj that includes my fixes :)

/lgtm

authors: JasonPowr osmman

repo: securesign/secure-sign-operator


text:
C1218IOError('failed 3 times to correctly send a frame'

smart meter in Mexico, bran  IUSA.  to connect RS232 serial cable probe for meter.  use a Windows  a python. the same error.
I have done with communication program if there is response from the  samrt meter and if there is.

Can you set the log level to DEBUG and repeat the steps? My guess is that you're using incorrect serial settings so the probe can't communicate with the meter.

can you help me in the configuration of the Debug
what are the steps?
2018-02-19 12:51 GMT-06:00 Spencer McIntyre notifications@github.com:

Can you set the log level to DEBUG and repeat the steps? My guess is that
you're using incorrect serial settings so the probe can't communicate with
the meter.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/securestate/termineter/issues/7#issuecomment-366776723,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJlhgScxMTeZZcecASaiy4eIJuV2ePOMks5tWcKxgaJpZM4SK036
.

Start the program with the -L DEBUG option. You can find more details from the --help menu.

I'm going to close this issue out due to inactivity. If you're still experiencing it, please respond to the preceding message in this thread and we'll re-open it. Thanks.

Good Day
One Cuestion Plase
did you program termineter  you can access to smart meter?
2018-02-27 16:40 GMT-06:00 Spencer McIntyre notifications@github.com:

I'm going to close this issue out due to inactivity. If you're still
experiencing it, please respond to the preceding message in this thread and
we'll re-open it. Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/securestate/termineter/issues/7#issuecomment-369052857,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJlhgSM3C7YI-v5LZHLYi2WJX64wJV8Bks5tZIRRgaJpZM4SK036
.

repo: securestate/termineter


text:
Fix vulnerabilities

Update the package-lock.json to fix vulnerabilities in the backend

got
minimist
undici

Only dev dependencies. Will be addressed before release 1.0.0.

Done in https://github.com/secvisogram/csaf-validator-service/commit/5d9d524abe308c2f848002e75c7d0a7b84f9c866

repo: secvisogram/csaf-validator-service


text:
python 3.8 error: TypeError: unsupported operand type(s) for *: 'OpenerDirector' and 'int'

HI,
Getting below error in python3.8.
Can you please help fix this.
  File "/Volumes/Macintosh HD - Data/ContentDev/MySOAR/venv/lib/python3.8/site-packages/ipwhois/asn.py", line 455, in lookup
    self._net.dns_resolver.timeout * (
TypeError: unsupported operand type(s) for *: 'OpenerDirector' and 'int'

My Code
    import urllib
    from ipwhois import IPWhois

    proxies = get_systemproxy()                #return proxy dict{'http': .., 'https':...}
    proxy_url = proxies.get('https') if proxies.get('https') else proxies.get('http')
    if proxy_url != '':
        proxy_handler = urllib.request.ProxyHandler(proxies)
        proxy_opener =  urllib.request.build_opener(proxy_handler)
        ip_obj = IPWhois(ip, proxy_opener)
    else:
        ip_obj = IPWhois(ip)

    results = ip_obj.lookup_rdap(depth=1)

Problem at /ipwhois/asn.py line 455, is
self._net.dns_resolver.timeout is of type OpenerDirector instead of float/int
                    self._net.dns_resolver.lifetime = (
                        self._net.dns_resolver.timeout * (
                            retry_count and retry_count or 1
                        )
                    )

@mahesh557 You are passing the 2nd argument as a proxy opener rather than the expected timeout. That is expected as the third argument. I would suggest passing as keyword args like:
ip_obj = IPWhois(address=ip, timeout=30, proxy_opener=proxy_opener)

repo: secynic/ipwhois


text:
update ecommerce spec syntax to v2

This PR changes the ecommerce V1 syntax Action + Object to the new V2 syntax, Object + Action.
This PR will be waiting on a few blockers, a refactor of the Analytics-Events repo to be more concise and readable as we add more events to our spec and for similar changes to be made to all other integrations currently using V1 syntax.
Tests are failing because it isn't properly aliasing against the new spec'd events. These tests will need to pass, dependent on a new version of Analytics Events and Analytics.js-Private before being merged.

lgtm


text:
feat: adding current role as env var

Storing current AWS assumed-role as AWS_ROLE. This allows the user to
easily check the assumed role when running aws-okta.

Hm, looks like a bad merge https://github.com/segmentio/aws-okta/issues/206 Can you please resubmit? Make sure you're based off the latest master.

repo: segmentio/aws-okta


text:
migrating awsbilling to ECR

Not sure how to test this, but taking patterns from other migrations. Assigning Tamar because she seems to be the point person on this project

hmmmmm it looks like the Circle CI project is missing the necessary environment variables to authenticate with docker. Any advice on where to find these / how to add them?

You can run robo circle or add the envvars manually from here: https://github.com/segmentio/robofiles/blob/master/development/scripts/circle.sh#L39

authors: systemizer tamarrow

repo: segmentio/awsbilling


text:
🛑 Mastodon is down

In e328d55, Mastodon (https://mastodon.ktachibana.party/health) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mastodon is back up in db6e2c0 after 8 minutes.

repo: sekai-soft/status


text:
Split up flow sensor and flow meter into different classes and files.

Currently the sensing and the metering functions are merged into one class/object, requiring users to deal with the complexity of the metering interface even if all they need is a simple flow rate value.
When connecting one or multiple sensors, users should have the choice between a lightweight interface to their hardware and a sophisticated metering solution.

Hi, Another nice feature would be to add support for sensors with Voltage (analog) and Current (4-20mA) signals in addition to the pulse type.

Hi @kapyaar, can you recommend any analog frontends and sensors for that purpose?
Traditionally, current loops are rather difficult to glue to general purpose Arduino/ESP/uC boards.
I don't have access to voltage or current loop flow sensors, so personally I'm not planning for 10V or 4-20mA compatibility at this time.
But it sure would be nice to have. :)

Closed due to inactivity.

authors: kapyaar sekdiy

repo: sekdiy/FlowMeter


text:
Potential link highlighting bug

I upgraded to ST3 and my MarkdownLight link highlighting turned a little funky. It occasionally seems to miss links and not highlight them depending on the context. Here is a quick gif to highlight the issue:

I'm not 100% sure what is causing it, but here is what I have tried:

A few different versions of ST - I tried Build 3142 (last dev build before ST3 official) and 3143 - both have the issue present. I don't recall what version I had before where this issue wasn't present.

I tried removing markdown light and reinstalling it along with quitting sublime, and restarting it.

I am on Mac OS if that helps, and happy to share any other info.
PS - Love the plugin and if I can help with this let me know. I'm just not sure where to even start with debugging the root cause of the issue.

Looks like github trimmed the gif a bit 😦
Here's the full one - https://www.dropbox.com/s/36yhdrzte0vj22p/links-markdown.gif?dl=0

repo: sekogan/MarkdownLight


text:
issues with using $("#myId").select2('data',data)

Prerequisites

[ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate
[ ] The issue still exists against the latest master branch of Select2
[ ] This is not a usage question (Those should be directed to the community)
[ ] I have attempted to find the simplest possible steos to reproduce the issue
[ ] I have included a failing test as a pull request (Optional)

Steps to reproduce the issue

Expected behavior and actual behavior
When I follow those steps, I see...
I was expecting...
Environment
Browsers

[ ] Google Chrome
[ ] Mozilla Firefox
[ ] Internet Explorer

Operating System

[ ] Windows
[ ] Mac OS X
[ ] Linux
[ ] Mobile

Libraries

jQuery version:
Select2 version:

Isolating the problem

[ ] This bug happens on the examples page
[ ] The bug happens consistently across all tested browsers
[ ] This bug happens when using Select2 without other pluigns
[ ] I can reproduce this bug in a jsbin

I am trying to set data to my select2 element using the data attribute.
for example :
$("#myId).select2({
...
...
...
});
$("#myId").select2("data",[{"id":"2127","text":"Henry Ford"},{"id":"2199","text":"Tom Phillips"}]);
This is not working for me. I am using select2 , 4.0.2 version.
Please help asap.

Also, while using initSelection I can see that my select2 element has been set successfully but if I do
$("#myId").select2('data'), it gives me null.

.select2('data') is read-only in Select2 4.0.
This was documented in the 4.0.1-rc.1 release notes and https://github.com/select2/select2/commit/61a231d868a9c0c8e227af0c331734825a72e82d. You can find replacement code in this Stack Overflow question.

Thank you Kevin, I got it working.

authors: kevin-brown prerakdalal


text:
Select2 triggers unselect event but does not unselect the option

Prerequisites

[x] I have searched for similar issues in both open and closed tickets and cannot find a duplicate
[x] The issue still exists against the latest master branch of Select2
[x] This is not a usage question (Those should be directed to the community)
[x] I have attempted to find the simplest possible steps to reproduce the issue
[ ] I have included a failing test as a pull request (Optional)

Steps to reproduce the issue
See this js fiddle for an example of the issue and simpler steps to reproduce
https://jsfiddle.net/xvL14mzv/

Create a select2 that loads data from a ajax datasource and in a process results function return back a js object with id and text properties that are different.
In your select find an option to select and select it
Find that option again in the select.  It should be shown as selected and use your mouse to click that option again.  This will trigger an unselect event which is expected but the option will not be unselected.

Expected behavior and actual behavior
See
https://jsfiddle.net/xvL14mzv/
When I follow those steps, I see...
Option is not removed from the select but an unselect event is triggered
I was expecting...
Option to be removed from the select.  This happens when the id and text properties are the same
Environment
Browsers

[x] Google Chrome
[x] Mozilla Firefox
[ ] Internet Explorer

Operating System

[x] Windows
[ ] Mac OS X
[ ] Linux
[ ] Mobile

Libraries

jQuery version: Edge
Select2 version: 4.0.3

Isolating the problem

[ ] This bug happens on the examples page
[x] The bug happens consistently across all tested browsers
[x] This bug happens when using Select2 without other plugins
[x] I can reproduce this bug in a jsbin (used js fiddle: https://jsfiddle.net/xvL14mzv/)

This does not seem to be the same issue as described in #5049, and is not fixed as of 4.0.6-rc.1.

So this was confirmed as a bug over three months ago. Almost never will you have your id and your text be the same thing yet this only works with an ajax data source if this is the case, making it unusable with the ajax option. Is there a fix incoming "soonish" for this?

FYI I banged my head on this for an entire day and came across a little piece of your documentation that talks about how values are converted from the id. It states that the value needs to be a string so its best to send in string id's. Taking this into mind I typecast my id to a string in my API and this issue went away. For those of you that have access / control of their API's this is a fix. For the rest of you maybe try mapping the data element so it does better typecasting of id (not my forte). With 400+ issues and counting I don't see a fix coming any time soon.
Also, I tried to look into the code to find out WHY me sending in strings vs ints would be such a big deal since int's usually convert to string rather well and I couldn't find anything. If someone else is more familiar with the code you may be able to use this as a starting point at least.

authors: alexweissman bgarrison25 sgmckay


text:
problem with append and Clone div that select 2 in it for multi select 2 with jquery clone

Prerequisites

I have two problems with select 2 at first on is ,
I render my page it renderAjax at frist on when i jump from step1 to step2 select 2 is workin correctly but when i go back to step1 and again go to step2 all select 2 don't workin and just show loading with gif

the second promblem is , when i go to step4 i have div and there is one select 2 in it and work correctly but in my project i need to clone that div to have another div and select2 in it , but when i clone that div with jquery but the style of select 2 mess , and happen a lot problem in it

Browsers

[.] Google Chrome
[. ] Mozilla Firefox
[. ] Internet Explorer

Operating System

[. ] Windows

Libraries

jQuery version: last
Select2 version: last

It is unclear what the problem is, or what steps you have taken to debug your code.  Have you tried checking your browser console for errors?

authors: alexweissman mamadza


text:
Feature: Create data object with custom vectors

Summary

Implement WithVector method on the data.Creator type.
Write integration tests asserting correctness
Fix typo found in comment

Closes #36

I agree with the CLA.

On Dec 13, 2021, at 2:18 PM, SeMI Technologies Git Bot @.***> wrote:

To avoid any confusion in the future about your contribution to Weaviate, we work with a Contributor License Agreement. If you agree, you can simply add a comment to this PR that you agree with the CLA so that we can merge.
beep boop - the SeMI bot 👋🤖
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks @parkerduckworth,
before we can merge, there are two more things that need to be added:

Your current WithVector() method only stores the vector in the Creator, but does not actually send it off to Weaviate. For this you also need to add it to method which builds the PayloadObject(): https://github.com/semi-technologies/weaviate-go-client/blob/c92ea0f3b4356e68191a3e7b73a22f378a58a04d/v2/weaviate/data/creator.go#L70-L79
The current test does not test if the custom vector is set correctly. Otherwise, I think it would have caught the above. To do so, we need to create a class that has no vectorizer set. (The existing tests assume everything is vectorized using the text2vec-contextionary module). Here's an example of the same process in the Java client where the tests creates an explicit class with vectorizer: none to verify that the custom vector is set correctly: https://github.com/semi-technologies/weaviate-java-client/pull/73/files#diff-7d48439c8b3130dea97f466b3e3769b002b12db9e0c53018ac7002a29b858c48R642-R691

Let me know how you want to proceed. Would you like to make the additional changes or should we?
Thanks
Etienne

@etiennedi thanks for the pointers, I'll push up the changes today!

Hi @parkerduckworth, awesome, thanks for the progress. I've pushed one more tiny addition: https://github.com/semi-technologies/weaviate-go-client/pull/37/commits/4f0114429d32216bdb9d7f8cd4cc6c27b5acf1c5
While your test was already setting up everything correctly, it didn't yet assert that the custom vector was indeed set. I've added a simple assertion to make sure that the retrieved vector matches the one at creation.
Once CI is green, I'll merge and release. Thank you very much for your contribution!

Ah yes, good catch.  Thanks @etiennedi !

authors: etiennedi parkerduckworth

repo: semi-technologies/weaviate-go-client


text:
fix: add missing framework in version prefix builder

jira version 자동으로 추출하는 부분에 framework 처리가 안돼있어서 수정했습니다.

@lookdeceline 굿아이디아. 추가했습니다!

repo: sendbird/release-automation-action


text:
Merging Develop to Master 11.28.17 - Fixing vulnerability, PR template, redirecting old page

Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @Whatthefoxsays,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX

authors: Whatthefoxsays thinkingserious

repo: sendgrid/docs


text:
fixing broken redirects

Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @Whatthefoxsays,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX


text:
Email Validation text edits (round 1)

I'll come back and revisit the results with some tables tomorrow I just ran out of time.
thanks!!
Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @lweinig,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX

authors: lweinig thinkingserious


text:
Support for several converted parameters

This PR addresses the issue #37. It allows the user to use multiple @ParamConverter annotations, and it adds a 'from' parameter to specify which routing parameter to use in the conversion.
For example :
Route : /post/{postId}/show
@ParamConverter("post", class="MyPostClass", from="postId")
This annotation will use the 'postId' request parameter to fetch a Post instance from the database.
This allows the user to have multiple converted params :
Route : /post/{firstId}/other/{secondId}
@ParamConverter("first", class="MyPostClass", from="firstId")
@ParamConverter("second", class="MyPostClass", from="secondId")

What's the status on this PR? It would be a nice improvement to the ParamConverter. Thanks

I need this functionality

@henrikbjorn I am relaxed :)

Any news on this one?

It would be really helpful if the ControllerListener and ParamConverterListener changes could be merged into the master. It solves the problem with multiple paramconverters.
Should I create a single PR for it ?

ping @fabpot

I stil think this is the wrong approach. The from shouldnt be hardcoded to 'id' but to the name of the parameter being converted.
@ParamConverter("name", class="My\Class")
and name is part of the route /my/route/{name}

That may be true, but this PR has also a fix for the problem regarding where the options aren't set correctly when you use multiple paramconverters
The changes in ParamConverterListener and ControllerListener fix that issue.
More info, check this: http://forum.symfony-project.org/viewtopic.php?t=37242&p=123783

authors: AurelC2G henrikbjorn krizon ricbra ruudk stfalcon szymek tristanbes

repo: sensio/SensioFrameworkExtraBundle


text:
replace logger with logrus for logging

Description

Removes the logger package and related tests.
Related Issue

#615
Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

Current coverage is 22.75% (diff: 10.36%)

Merging #623 into master will decrease coverage by 0.26%

@@             master       #623   diff @@
==========================================
  Files            26         25     -1
  Lines          1972       2008    +36
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            454        457     +3
- Misses         1463       1496    +33
  Partials         55         55

Powered by Codecov. Last update d8d8863...b51d438

Current coverage is 22.75% (diff: 10.36%)

Merging #623 into master will decrease coverage by 0.26%

@@             master       #623   diff @@
==========================================
  Files            26         25     -1
  Lines          1972       2008    +36
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            454        457     +3
- Misses         1463       1496    +33
  Partials         55         55

Powered by Codecov. Last update d8d8863...b51d438

Thank you @suhussai for this PR, I really appreciate it!
The only problem I see so far with the logrus package is the fact that there's no way, out of the box, to identify the Remote Caller (see https://github.com/sirupsen/logrus/issues/63) but it's an issue with the package itself, not your implementation.
Removing that capability would make debugging much more harder, so we'll have to think of a workaround before merging this change. I'll look around, let me know if you find something!

authors: codecov-io palourde suhussai

repo: sensu/uchiwa


text:
[enhancement] Mutual ClassLoader for plugin and extension that are from the same jar.

By default, each plugin and extension have their own class loader, even if they come from the same jar. One example of limitation is that they can not share ressources like static variables.
A workaround is to declare the use of the default class loader (inherited from Warp 10) in the Warp 10 configuration files for both the plugin and the extension. Should it be intended this way or may we implement a way to load a set of modules (extensions and/or plugins) with a same class loader ?

Independent plugins and extensions should not share anything since they have no knowledge they were loaded in the same Warp 10 instance. For the cases when an extension is tightly linked to a plugin, the best practice used so far is to register the extension from the plugin and simply declare the plugin in the Warp 10 configuration, therefore both the plugin and extension will be loaded by the same class loader (that loading the plugin) and they will be able to tickle each other.

Thanks for this workaround. I didn't thought that an extension could be registered from anywhere.

authors: hbs randomboolean


text:
What were your findings?

I have been wanting to use the new grapelli for some time now... and i stumbled across this.
What were the reasons these efforts were abandoned?

The reason is just that I don't use Mezzanine anymore. As for the reason this didn't get merged in Mezzanine, please refer to https://github.com/stephenmcd/mezzanine/pull/912.
Anyway, feel free to fork this repo and update the code. I'd be happy to redirect people to an up-to-date version.

Is there any reason in particular you dont use Mezzanine anylonger?  What do you use now?  I've implemented some pretty simple projects that are starting to mature so its sortof time to fully embrace Mezzanine, fork this project or just move on.

I'm using DjangoCMS now mainly because of its nicer looking interface and its bigger community. Give it a try and then decide whether you want to stick with Mezzanine or go with DjangoCMS.

Damn i feel dumb now for not having seen this project.
Cheers.

authors: derek-adair sephii

repo: sephii/mezzanine-grappelli


text:
Incorrect GUI buttons shown: Guest user as a Guest role for a project appears to be able to delete sequencing run

I was afraid to try this on Thanos, so I was able to do this on Hestia and see that at the end, I was not able to actually delete any data - which is great. However, I was able to go through the process as if I could.  Presumably it fails at the very end because the 'delete' function is admin-only.
I am wondering if we can designate certain buttons and feature options throughout the software platform that are not visible at all if they are designated to be admin-only functions. Similar to how the 'Admin' console does not appear at all if the user does not have proper permissions.
[note: We might also want to discuss which role and which user is able to delete an entire sequencing run. I don't think just any admin should be able to do that. ]
Tested behavior on Thanos. Confirmed on Hestia.
A userID in the Guest role group:

And only assigned as a Guest role in a Project:

Will only be able to log in and view the one project, and mostly has only View permissions. It can view the one assigned project plus the software guide, and that is great, however when you dig into the project and open the samples and sequencing run information...

IF you go to the links for the Sequencing runs INSIDE the reports, those links appear to allow the Guest user/Guest role for the project to delete the entire run.

****And then it correctly fails, and outputs an error message which is great. Presumably because the 'delete' function is admin-only. ****

only allow admin to delete a sequence run.

authors: dshao grettadarmstrong

repo: seqcode/pegr


text:
CLOUD-42308 it fix

@schfeca75

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1714/

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1715/

authors: doktoric jenkins-sequenceiq

repo: sequenceiq/cloudbreak


text:
'wallet2' interface documentation: Query info about enotes, "payments" and transactions

The following text documents a small but very important subset of the public wallet2 interface: all methods to query info about enotes, "payments" and transactions, incoming and outgoing, confirmed and unconfirmed, together with the structs used to return the info. (The complete header file is here.)
The idea is supporting work on the top-level public interface of the new Seraphis wallet, sometimes called wallet3, its API so to say. By showing as clearly as possible what exists now it hopefully makes it easier to define the corresponding methods of the new wallet, and to define them in a better way, especially regarding terminology. It may help to decide how to store the info wallet-internally as well.
I also compared this most basic API with 4 other places where you can query the info:

Interactive CLI wallet commands
RPC wallet methods, defined here
the wallet2 API, as used by the GUI wallet, defined here
Woodser's Monero C++ library, on GitHub here

Ideally there would be much more simularity and regularity than today between the lowest-level Seraphis wallet API, the RPC wallet interface, and "higher" APIs that make it easy to program wallet apps like the wallet2 API or the Monero C++ library.
Confirmed enotes
void get_transfers(
  wallet2::transfer_container& incoming_transfers) const;

typedef std::vector<transfer_details> transfer_container;

struct transfer_details
{
  uint64_t m_block_height;
  cryptonote::transaction_prefix m_tx;
  crypto::hash m_txid;
  uint64_t m_internal_output_index;
  uint64_t m_global_output_index;
  bool m_spent;
  bool m_frozen;
  uint64_t m_spent_height;
  crypto::key_image m_key_image; //TODO: key_image stored twice :(
  rct::key m_mask;
  uint64_t m_amount;
  bool m_rct;
  bool m_key_image_known;
  bool m_key_image_request; // view wallets: we want to request it; cold wallets: it was requested
  uint64_t m_pk_index;
  cryptonote::subaddress_index m_subaddr_index;
  bool m_key_image_partial;
  std::vector<rct::key> m_multisig_k;
  std::vector<multisig_info> m_multisig_info; // one per other participant
  std::vector<std::pair<uint64_t, crypto::hash>> m_uses;
}

This gets the list of all confirmed enotes. transfer_details must describe a single enote e.g. because there is only a single amount and a single destination m_subaddr_index. The term transfer is used for several different things, but in wallet2 in combination with "incoming" it is pretty unambiguous. This call is the basis for the CLI wallet command incoming_transfers and RPC wallet COMMAND_RPC_INCOMING_TRANSFERS.
There can be several enotes with the same incoming transaction id txid because several enotes for us can arrive in a single transaction. If the enote is spent it seems there is no call to query which transaction spent it.
The wallet does not store incoming transactions with at least 1 enote as as separate dedicated list, only in the form of transfer_details.m_tx where we can have duplicates. Once full transactions were part of this struct until it was recognized that this is not needed and only a waste of space; since then not the full transaction, but only its prefix is here.
The member variable to hold this list is m_transfers:
transfer_container m_transfers;

The implementation of get_transfers is therefore an absolutely trivial single line:
incoming_transfers = m_transfers;

Incoming confirmed payments
void get_payments(
  std::list<std::pair<crypto::hash,wallet2::payment_details>>& payments,
  uint64_t min_height,
  uint64_t max_height = (uint64_t)-1,
  const boost::optional<uint32_t>& subaddr_account = boost::none,
  const std::set<uint32_t>& subaddr_indices = {}) const;

struct payment_details
{
  crypto::hash m_tx_hash;
  uint64_t m_amount;
  amounts_container m_amounts;
  uint64_t m_fee;
  uint64_t m_block_height;
  uint64_t m_unlock_time;
  uint64_t m_timestamp;
  bool m_coinbase;
  cryptonote::subaddress_index m_subaddr_index;
}

typedef std::vector<uint64_t> amounts_container;

This gives back all payments received with incoming confirmed transactions. A payment in the sense of this call is the sum of all enotes of such a transaction that went to a particular subaddress with incoming confirmed transaction tx_hash. The name of this method would be clearer if it contained the term incoming somewhere.
With a typical transaction it's pretty simple: It contains a single enote to one subaddress, and in this case that enote is already the payment, and in a certain sense also the transaction because the enote with the change does not interest at all. Transactions that contain enotes going to several of our subaddresses are somewhat special, and several enotes going to the same subaddress even more so, but of course possible because a transaction can contain any combination of up to 16 enotes.
It's interesting that only wallet2 has a dedicated method for merely getting these payments in particular, and also that its use of the term payment stands out:
In the CLI wallet you get them if you use the command show_transfers with type in included. RPC wallet COMMAND_RPC_GET_TRANSFERS gives them back if you set the in boolean in the request and works with a transfer_entry struct that covers all possible types of payments, not only incoming confirmed ones. wallet2 API includes them in a TransactionHistory object, marked as Direction_In, also working with a struct called TransactionInfo that covers all possible types of payments. The Monero C++ library has a get_transfers method that depending on the query can only give back incoming confirmed payments as a list of monero_transfer structs.
The struct member m_amounts detailing the amounts in the case of several enotes to the same subaddress is a relatively new addition.
The first element of the pair is the payment id. Not including this as a member of payment_details and not giving back the payments as a simple list looks strange but is probably a consequence of the way wallet2 stores these payments internally, to support lookup by payment id:
payment_container m_payments;

typedef serializable_unordered_multimap<crypto::hash, payment_details> payment_container;

Incoming confirmed payments for payment id
void get_payments(
  const crypto::hash& payment_id,
  std::list<wallet2::payment_details>& payments,
  uint64_t min_height = 0,
  const boost::optional<uint32_t>& subaddr_account = boost::none,
  const std::set<uint32_t>& subaddr_indices = {}) const;

This returns all incoming confirmed payments that have the given payment id. It's the basis for the CLI wallet command payments and RPC wallet COMMAND_RPC_GET_PAYMENTS. It's a "convenience method" with low importance as you could easily use the first get_payments method above and pick payments by id yourself.
Incoming unconfirmed payments
void get_unconfirmed_payments(
  std::list<std::pair<crypto::hash,wallet2::pool_payment_details>>& unconfirmed_payments,
  const boost::optional<uint32_t>& subaddr_account = boost::none,
  const std::set<uint32_t>& subaddr_indices = {}) const;

struct pool_payment_details
{
  payment_details m_pd;
  bool m_double_spend_seen;
}

struct payment_details
{
  crypto::hash m_tx_hash;
  uint64_t m_amount;
  amounts_container m_amounts;
  uint64_t m_fee;
  uint64_t m_block_height;
  uint64_t m_unlock_time;
  uint64_t m_timestamp;
  bool m_coinbase;
  cryptonote::subaddress_index m_subaddr_index;
}

typedef std::vector<uint64_t> amounts_container;

This returns all incoming unconfirmed payments. It introduces yet another struct pool_payment_details for just one member more than payment_details that the get_payments method for confirmed payments uses.
Again the other systems give back these payments as part of some unified system as pool - for the general approach check comments further up.
The container to store these:
serializable_unordered_multimap<crypto::hash, pool_payment_details> m_unconfirmed_payments;

Outgoing confirmed transactions
void get_payments_out(
  std::list<std::pair<crypto::hash,wallet2::confirmed_transfer_details>>& confirmed_payments,
  uint64_t min_height,
  uint64_t max_height = (uint64_t)-1,
  const boost::optional<uint32_t>& subaddr_account = boost::none,
  const std::set<uint32_t>& subaddr_indices = {}) const;

struct confirmed_transfer_details
{
  cryptonote::transaction_prefix m_tx;
  uint64_t m_amount_in;
  uint64_t m_amount_out;
  uint64_t m_change;
  uint64_t m_block_height;
  std::vector<cryptonote::tx_destination_entry> m_dests;
  crypto::hash m_payment_id;
  uint64_t m_timestamp;
  uint64_t m_unlock_time;
  uint32_t m_subaddr_account;   // subaddress account of your wallet to be used in this transfer
  std::set<uint32_t> m_subaddr_indices;  // set of address indices used as inputs in this transfer
  std::vector<std::pair<crypto::key_image, std::vector<uint64_t>>> m_rings; // relative
}

struct tx_destination_entry
{
  std::string original;
  uint64_t amount;                    //money
  account_public_address addr;        //destination address
  bool is_subaddress;
  bool is_integrated;
}

This returns all outgoing confirmed transactions. Thus a bit confusingly here payment is indeed a full transaction and not merely info about a collection of enotes like with the get_payments methods to get incoming confirmed payments. Maybe things would also be a bit clearer if confirmed_transfer_details contained "out" in its name somehow.
Again the other systems give back these transactions as part of some unified system under out - for the general approach check comments further up. The RPC interface has a transfer_entry.destinations list member to store the possibly multiple destinations of an outgoing transaction that only gets used for such. wallet2 API has TransactionInfo.transfers for this, also working with a single struct for all types, and the Monero C++ library has monero_outgoing_transfer.m_destinations working with inheritance, as monero_outgoing_transfer is an extension of monero_transfer.
The container to store these:
serializable_unordered_map<crypto::hash, confirmed_transfer_details> m_confirmed_txs;

It's really a bit painful to see how the method name uses the term payment, the struct name the term transfer and the variable name the term transaction.
Outgoing unconfirmed transactions
void get_unconfirmed_payments_out(
  std::list<std::pair<crypto::hash,wallet2::unconfirmed_transfer_details>>& unconfirmed_payments,
  const boost::optional<uint32_t>& subaddr_account = boost::none,
  const std::set<uint32_t>& subaddr_indices = {}) const;

struct unconfirmed_transfer_details
{
  cryptonote::transaction_prefix m_tx;
  uint64_t m_amount_in;
  uint64_t m_amount_out;
  uint64_t m_change;
  time_t m_sent_time;
  std::vector<cryptonote::tx_destination_entry> m_dests;
  crypto::hash m_payment_id;
  enum { pending, pending_not_in_pool, failed } m_state;
  uint64_t m_timestamp;
  uint32_t m_subaddr_account;   // subaddress account of your wallet to be used in this transfer
  std::set<uint32_t> m_subaddr_indices;  // set of address indices used as inputs in this transfer
  std::vector<std::pair<crypto::key_image, std::vector<uint64_t>>> m_rings; // relative
}

This returns all outgoing unconfirmed transactions. The few and small differences between the two structs confirmed_transfer_details and unconfirmed_transfer_details begs the question why have two different structs in the first place.
Again the other systems give back these transactions as part of some unified system as pending and failed - for the general approach check comments further up.
The container to store these:
serializable_unordered_map<crypto::hash, unconfirmed_transfer_details> m_unconfirmed_txs;

I started looking at this issue this week and using the method 'divide to conquer' I think we could first separate the incoming and outcoming txs into separate discussions.
I want to talk a bit about the outgoing txs.
I agree that in wallet3 we could unify the confirmed_transfer_details and unconfirmed_transfer_details but I am not sure if it would be necessary as I dont know if we reached consensus that all wallet3 transaction outputs HAVE to be enotes (Seraphis standard). In this case, a module for tracking outputs would only actually track enotes.
There are three ways to populate (in memory or in a wallet file) the 'transaction_history_out' (the analogous of the 'confirmed_transfer_details'):

Storing the info just after making a transaction.
Scanning the blockchain for owned enotes with exposed key_images
Importing the records from a wallet file.

It is not possible to recover the full information of the outgoing transactions (for example to whom you sent to) by only scanning the blockchain (in a scenario where you recover your keys in a new computer for example). But anyway, this component should contain the most updated and complete information about the outgoing txs.
I see it being organized in a struct similar to that:
struct transaction_out
{
    // General information about transaction
    rct::key txid;
    rct::xmr_amount fee;

    // Network data
    std::string status;  // Failed, Pending or Out(confirmed)
    uint64_t block_height;
    time_t sent_time;
    uint64_t timestamp;
    uint64_t unlock_time;

    // Enotes used as inputs
    std::vector<sp::SpContextualEnoteRecordV1> sp_enote_records;
    std::vector<sp::LegacyContextualEnoteRecordV1> legacy_enote_records;

    // Destination and ring members of the tx
    std::vector<std::pair<std::string, uint64_t>> dest_amount;               // destination and amount
    std::vector<std::pair<crypto::key_image, std::vector<uint64_t>>> rings;  // ring members
};

struct transaction_history_manager
{
    // a map may be better.
    // TODO: find fastest way to go from txid -> enotes
    std::vector<transaction_out> tx_history_manager;

    // Add methods to:
    // - get entries
    // - check duplicated entries
    // - update entries
    // - remove unnecessary entries
    // - optimzed queries, etc
};

To get an idea, I prototyped a function to add a tx to the tx manager and a function to show the content of it.
... (one day later)...
Now that I am thinking about it again, I am not really sure if we really need a component like that since in Seraphis the class SpEnoteStoreMockV1 (used to track the enotes) is capable of providing all the information contained in that struct. Maybe better things to think about are:

how we could optimize the access to the desired variables. Maybe having redundant information in different data structures would be a solution (since we have relatively a lot of freedom to save the tx history data in a wallet file).
If we store redundant information, then we should be able to synchronize the different components. How would that like?
If we strictly don't want to save redundant information then probably we would need more computation (time) to access/handle some information from the user. What are the trade-offs that we want to have?

I will be looking again on the whole issue in the next days.

I can't comment about your design thoughts yet, but for now just want to throw a thought of mine into the ring that might get overlooked:
When designing the wallet components that hold info like enotes and transactions we should not merely care about the wallet itself, but also think about all the possible clients that want to get info from the wallet about what happened.
wallet2 demonstrates that there is info that the wallet itself won't ever need, or won't ever need again, to do all its work, especially regarding outgoing transactions, and thus can technically get away with not storing it. But if the info is not there, and a client has a good use for it, things can get very, very hard, which is unfortunate.
In my TechWallet I want people to show as clearly as possible what happens on the enote level. For that I need the info for a spent enote which transaction spent it. It seems that walle2 does not store that info, and I guess that even makes sense from a purely "inside" point of view: It doesn't need that info to function itself, and "normal" wallets don't want to query and display it either.
I had to resort to quite extreme measures to get the desired info, just because wallet2 doesn't do me the favor to hold and tell it: I now scrap HTML returned from a block explorer ...

One comment nevertheless, about this here in your mock definitions:
// Enotes used as inputs
std::vector<sp::SpContextualEnoteRecordV1> sp_enote_records;
std::vector<sp::LegacyContextualEnoteRecordV1> legacy_enote_records;

This is less than elegant right now already, and doesn't this look like it will develop into some big mess over time, quite in principle? What happens if Seraphis evolves and comes up with EnoteRecordV2, V3, V4, whatever?
Maybe for enotes the same question is appropriate like I ask it for transactions, proposed to discuss tomorrow: Maybe some "generalized", "over-arching" class able to hold any enote would be a very good idea?

This is less than elegant right now already, and doesn't this look like it will develop into some big mess over time, quite in principle? What happens if Seraphis evolves and comes up with EnoteRecordV2, V3, V4, whatever?

Agree. But before going into the details I will think more about the members and shape of this struct. The class SpEnoteStoreMockV1 contains really a lot of information and it could be almost itself the 'transaction_manager'.

Agree with that too. So the trick will be to get the info we request in the most optimized way apparently.

I dont think that the input rings record are needed as they can be easily retrieved if needed for something.
So in your TransactionRecordV1 proposal you are not storing the enotes (which for me was the most important part). So from where do you expect to recover them? Your idea is to store the  SpEnoteStoreMockV1 directly in the wallet files and use basically the TransactionRecordV1  as an accessory to show transaction info only? If an info from an enote is needed then the transaction_manager (or the knowledge_proofs) would query the SpEnoteStoreMockV1 to get it. Is it how you see it? I think it makes sense that way.

Yeah, seems the best approach since the SpContextualEnoteRecordV1 has all the information of a tx and querying it directly makes more sense. So a transaction_history component would only actually query the enotes and store the information it needs in the wallet files, right? But what about the other way round ? If a wallet retrieves an updated transaction_history component then would it be able to update the enotes?

Ok. Let me try to better shape it and confirm that we are on the same page.

So the THC (Transaction history component) or THM (Transaction history manager) will be a separated wallet module that would only be updated by the EnoteStore or the wallet files, right? There should be a method to sync it with the EnoteStore (slow) and a method to read the last state (fast) which is getting the info from the wallet file. If so, there may be conflicts here so a second discussion would be how to address them.

I believe the following structures are quite optimized if we want to go from a specific txid to an enote. Let me know your thoughts.

struct TransactionOutRecordV1
{
    rct::key txid;
    rct::xmr_amount fee;

    // map<txid,key_image>
    // key images of spent enotes for tracking purposes
    std::vector<crypto::key_image> legacy_spent_enotes;
    std::vector<crypto::key_image> sp_spent_enotes;

    sp::SpEnoteSpentStatus spent_status;  // contains state of the record

    // sent funds
    std::vector<std::pair<JamtisDestinationV1, rct::xmr_amount>> outlays;
};

struct TransactionHistoryManager
{

    // use unordered_multimap for two reasons:
    // 1. quickly find TxRecords from txid
    // 2. one txid can contain multiple TransactionOutRecord
    std::unordered_multimap<rct::key, TransactionOutRecordV1> tx_history_manager2;

    // use sorted_map by blockheight to find last transactions or txs
    // in a specific time range
    std::map<std::uint64_t, rct::key> tx_id;

    // Add methods to:
    // The idea is to fill the THM with the info from the EnoteStore
    // - build TransactionHistoryManager from SpEnoteStoreMockV1
    // - build THM from file (tentative)
    // - get vector<SpContextualEnoteRecord> of specific tx
    // - get last N txs (for showing)
    // - get balance of spent tx
    // - get outlays of spent tx
        // SpEnoteSpentContextV1 does not store this information. Ideally it should be there.
        // Retrieve info directly from THM?
        // This is useful for example for enote_ownership_proof_sender_plan

    // - handle submitted/unconfirmed/confirmed (use self-send for tracking?)
    // These functions depends on the daemon, some cross work is needed here.

    // - to be completed...

    // make knowledge proofs (go from txid to EnoteRecords when needed)
    // these functions should be ready for wallet integration, which means they
    // could be called directly from the CLI commands

    // - address_ownership
    // - address_index
    // - enote_ownership
    // - enote_amount
    // - enote_key_image
    // - unspent_proof
        // tentative -> think about optimized solution to scan blockchain and tell if enote appeared as a ring member
    // - tx_funded
    // - enote_sent
    // - reserve_proof

};

The only missing information are the outlays that are not stored in the EnoteContext. I suggest you to add it to SpEnoteSpentContextV1. This would also be useful to the address book module later. What do you think?

This component should do the same as these wallet2 functions at least:

    void get_transfers(wallet2::transfer_container& incoming_transfers) const;
    void get_payments(const crypto::hash& payment_id, std::list<wallet2::payment_details>& payments, uint64_t min_height = 0, const boost::optional<uint32_t>& subaddr_account = boost::none, const std::set<uint32_t>& subaddr_indices = {}) const;
    void get_payments(std::list<std::pair<crypto::hash,wallet2::payment_details>>& payments, uint64_t min_height, uint64_t max_height = (uint64_t)-1, const boost::optional<uint32_t>& subaddr_account = boost::none, const std::set<uint32_t>& subaddr_indices = {}) const;
    void get_payments_out(std::list<std::pair<crypto::hash,wallet2::confirmed_transfer_details>>& confirmed_payments,
      uint64_t min_height, uint64_t max_height = (uint64_t)-1, const boost::optional<uint32_t>& subaddr_account = boost::none, const std::set<uint32_t>& subaddr_indices = {}) const;
    void get_unconfirmed_payments_out(std::list<std::pair<crypto::hash,wallet2::unconfirmed_transfer_details>>& unconfirmed_payments, const boost::optional<uint32_t>& subaddr_account = boost::none, const std::set<uint32_t>& subaddr_indices = {}) const;
    void get_unconfirmed_payments(std::list<std::pair<crypto::hash,wallet2::pool_payment_details>>& unconfirmed_payments, const boost::optional<uint32_t>& subaddr_account = boost::none, const std::set<uint32_t>& subaddr_indices = {}) const;

    size_t get_num_transfer_details() const { return m_transfers.size(); }
    const transfer_details &get_transfer_details(size_t idx) const;

    std::string get_tx_proof(const crypto::hash &txid, const cryptonote::account_public_address &address, bool is_subaddress, const std::string &message);
    std::string get_tx_proof(const cryptonote::transaction &tx, const crypto::secret_key &tx_key, const std::vector<crypto::secret_key> &additional_tx_keys, const cryptonote::account_public_address &address, bool is_subaddress, const std::string &message) const;
    bool check_tx_proof(const crypto::hash &txid, const cryptonote::account_public_address &address, bool is_subaddress, const std::string &message, const std::string &sig_str, uint64_t &received, bool &in_pool, uint64_t &confirmations);
    bool check_tx_proof(const cryptonote::transaction &tx, const cryptonote::account_public_address &address, bool is_subaddress, const std::string &message, const std::string &sig_str, uint64_t &received) const;

    std::string get_spend_proof(const crypto::hash &txid, const std::string &message);
    bool check_spend_proof(const crypto::hash &txid, const std::string &message, const std::string &sig_str);
    std::string get_reserve_proof(const boost::optional<std::pair<uint32_t, uint64_t>> &account_minreserve, const std::string &message);
    bool check_reserve_proof(const cryptonote::account_public_address &address, const std::string &message, const std::string &sig_str, uint64_t &total, uint64_t &spent);

    std::pair<uint64_t, std::vector<tools::wallet2::exported_transfer_details>> export_outputs(bool all = false) const;
    std::string export_outputs_to_str(bool all = false) const;
    size_t import_outputs(const std::pair<uint64_t, std::vector<tools::wallet2::exported_transfer_details>> &outputs);
    size_t import_outputs(const std::pair<uint64_t, std::vector<tools::wallet2::transfer_details>> &outputs);
    size_t import_outputs_from_str(const std::string &outputs_st);
    payment_container export_payments() const;
    void import_payments(const payment_container &payments);
    void import_payments_out(const std::list<std::pair<crypto::hash,wallet2::confirmed_transfer_details>> &confirmed_payments);

There may be more or different ones but that's the direction that this component should go. What do you think?

These don't need to be methods on the component. I'd encourage implementing as lean a component as possible.

I agree. I will try to make the simplest function (show some records) as soon as we agree with the minimal structure.

How to resolve conflicts is something you'll have to figure out as the engineer. There is potential for conflict between all of these: records loaded from file, information found in an enote store on startup, records added while the program is running, enote store updates while the program is running.

Yeah I know, just making sure we understand that.

Just call this TransactionRecordV1. Including Out is just ambiguous.

What about the incoming transactions? Should this module keep track of the txs with unspent enotes? I didnt think much about it but seems to be a good idea. Anyway I will think about it later.

What information? Outlays? Outlays cannot be recovered from the blockchain.
Like I said, outlays cannot be recovered from the blockchain so it's not appropriate to store them in spent contexts. Outlays can only be recorded when you are creating a transaction (only records of txs that get submitted should be recorded).

Okay, I was not sure about the correct approach here. You could indeed create a field in the EnoteContext to update the EnoteStore when a transaction is made but then I guess it would generate more conflicts if you would try to reload in different places... You are right here, it is better to be simple and coherent and let the EnoteStore recover only information available from the blockchain. The wallet should keep the records of the outlays.

This should be impossible. If you encounter multiple conflicting tx records, you need to have a solution ready to merge them.
Is this a map of timestamps? It's not documented.

Oh I'm stupid sorry. I thought one thing and wrote another. So, the idea is to go as optimized as possible from: blockheight -> tx_ids -> TransactionRecord. One blockheight can contain multiple tx_ids but every tx_id refers to only one TransactionRecord of course.
I thought about storing a multimap<blockheight,tx_ids> and an unordered_map<tx_ids,TransactionRecord> so if I want to select a range (or the last txs) then I would first query the variable multimap<blockheight,tx_ids> txids and then from the txids I would get the TransactionRecords looking at the unordered_map<tx_ids,TransactionRecord> tx_records. You mean that using boost_range there is a faster way to do it? I will see how this can be better done.

Access to the daemon is not needed.

Cool. I will make use of the EnoteStore a lot and don't really care about its management for now.

I think you're on the right track, as long as you don't over-burden the manager. One piece of advice: don't force yourself to implement all of those functions if they have complicated dependencies (e.g. needing to request information from the daemon). First implement the easy ones that can be completed with just the available tools, then we can review what's left over and see if there is a 'next task/component' that can support missing functionality.

Ok, thanks for the answers. I will make the simplest implementations and then we can discuss more about it next week.

There is no such thing as an incoming transaction. I feel a little crazy reading this paragraph.

Yeah, all the information you get from an incoming transaction can be found in the EnoteStore. So better call it incoming enotes instead of transactions. So yeah, nothing to do here.

To do 'I would get the TransactionRecords' you would normally need to allocate a vector or list of elements to return all the data. I am saying you could instead just return a container of references to your elements, which may be more efficient.

Okay, I will try to find the optimum way and then we can discuss it. Thanks.

After thinking a couple of days, I believe I'm close to the most optimized and minimalist structure.
Statement of problem:

Find fastest way to go from txid to EnoteContext
Find fastest way to go from a range of blocks or time (chronologically) to EnoteContext

Let me begin comparing wallet2 and seraphis_wallet with an example where we retrieve the outgoing unconfirmed_payment (outlays and all the info related). Also works for confirmed txs.

So, if we want to show the (unconfirmed) txs chronologically then wallet2 would fill and recover this information in the serializable_unordered_multimap<crypto::hash, pool_payment_details> m_unconfirmed_payments and then copy this information to a vector and finally sort it. Which should be at least (n log n) in time. The space complexity is not great either as it is copying a lot of information to a new vector. Which is not really optimized if we want to sort it by blockheight or time.
Solution for seraphis_wallet:

Scanning the enotes and filling the SpTransactionStore may be slow but can be done in the background or recovered from the wallet files. Not so different from wallet2 but could be improved if we well coordinate different threads to do the job.
Finding an entry (SpContextualEnoteRecord) is optimized by blockheight and txid (log n).

To achieve this solution I propose the following class/structs:
class SpTransactionStoreV1
{
    // Quickly find TxRecords from txid
    std::unordered_map<rct::key, TransactionRecordV1> tx_records;

    // Sort by blockheight to find last transactions or txs
    // in a specific time range
    std::map<std::uint64_t, std::set<rct::key>> confirmed_txids;

    // Multimap seems to be cleaner but less efficient -> to confirm
    // (Though not so many txs in the same block from the same wallet is expected)
    // std::multimap<std::uint64_t,rct::key> confirmed_txids;

    // Use timestamp instead of blockheight
    std::map<std::uint64_t, std::set<rct::key>> unconfirmed_txids;
    std::map<std::uint64_t, std::set<rct::key>> offchain_txids;

    // When a transfer is done:
    // - Entry will be created at tx_records to store outlays/key_images for a certain txid
    // - Enote_store will be updated
    // - Enote_store will issue a notification returning key_images of updated enotes
    // - SpTransactionStore will update confirmed_txids(by blockheight)/unconfirmed_txids/offchain_txids

    // Update:
    // - This component could be launched in a separated thread whenever a notification
    // to update is popped. So the confirmed/unconfirmed/offchain txs will always be updated.

    // methods to update tx_statuses

    // Show_transfers
    // Exhibit txs chronologically
    // - Get last N confirmed txs (ordered by blockheight)
    // - Get last N unconfirmed txs (ordered by timestamp)
    // - Get last N offchain txs (ordered by timestamp)
};

struct TransactionRecordV1
{
    // Key images of spent enotes for tracking purposes
    std::set<crypto::key_image> legacy_spent_enotes;
    std::set<crypto::key_image> sp_spent_enotes;

    // Sent funds
    std::set<std::pair<JamtisDestinationV1, rct::xmr_amount>> outlays;

    // Spent status is not necessary as it is stored in the variables which their names represent.
};

So, I would start implementing a basic show_transfers (to make use of all the structures and features) and in this case, if the user enters a tx id then I would go look at tx_records -> try_get_sp_enote_record and the enotes would be found in 2 log n. If the user wants to see the transactions in a specific time (block) range then I would go from confirmed_txids which outputs the txid (log n by blockheight) -> tx_records (log n by txid) -> try_get_sp_enote_record which outputs the enotes in 3 log n in total.
So before starting, I want to make sure that we are on the same wavelength with the following questions:

There is a big difference on the power that wallet2 has compared to sp_wallet. While wallet2 access directly the daemon, sp_wallet has and "engine" or "implementation" to handle enotes and other things. Should we strive to a wallet with very few (zero?) dependecy on the daemon and let this engine takes care of it? (I'm pretty sure of that).
In order to my design to work, I'm considering that whenever an update on the enote_store occurs then I would be able to receive a notification and retrieve the key_images updated and update the confirmed/unconfirmed/offchain txs. In this way, I would have the txs sorted by blockheight or timestamp. Is it a reasonable premise? Otherwise I could try to mess with the "engine" layer or make queries to enote_store to compare its state. I dont think these are good solutions though.

Let me know your thoughts and if we agree that I can proceed using the proposed scheme. If so, I think it is pretty clear to me the next tasks. I might have written some imprecise information but hopefully the line of thinking is clear.