json syntax file conflicts?

I don't install vim-json, but json file syntax seems to be affected.
when indentLine is loaded:

when not loaded:

Need help.

+1

can not reproduce. Maybe you have installed other plugin.

I've test for it in VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul 24 2015 02:23:23), and NVIM v0.1.0-155-g78e7c40 (compiled Dec  2 2015 20:44:32), use this config:
call plug#begin('~/.config/nvim/plugged')

" basic plugins
Plug 'Yggdroot/indentLine'

call plug#end()

neovim still have the problem:

This issue is caused by the builtin json.vim which also uses the conceal feature.
see here for some related discussion.
I use these settings to walk around.
autocmd InsertEnter *.json setlocal concealcursor=
autocmd InsertLeave *.json setlocal concealcursor=inc

Thanks

I prefer the solution suggested in the linked thread from @Fity.
Plugin 'elzr/vim-json'
let g:vim_json_syntax_conceal = 0

let g:vim_json_syntax_conceal = 0 does not work for the vim-json bundles with Ubuntu's vim package. It's an older version and does not have this option yet.
However the vim-json docs suggest:

The specially overeager indentLine, plugin would require yet an additional let g:indentLine_noConcealCursor="" in your .vimrc as detailed here.

Which does work on Ubuntu 16.04. For me, at least.

Same issue here on neovim-0.1.5-dev.
@Leandros : you suggestion works, but is really annoying to install an unwanted plugin to get things work

let g:vim_json_syntax_conceal = 0 does not work for the vim-json bundled with Ubuntu's vim package. It's an older version and does not have this option yet.

Thank you for posting that. I just ran into this issue today on Ubuntu 16.04 and was trying to figure out why the setting wasn't working. I had incorrectly assumed that because the last update to vim-json was in the middle of 2015, Ubuntu 16.04 would have the latest version. Installing the master version of https://github.com/elzr/vim-json fixed it for me.

None of these fixes work anymore, at least not in neovim. I have this in my init.vim:
let g:indentLine_enabled = 1
let g:vim_json_syntax_conceal = 0
let g:indentLine_noConcealCursor='nc'
let g:vim_json_syntax_conceal = 0

No combinations of these variables does anything at all. My only choice is to disable the plugin. I don't have any additional JSON plugins installed.

@mattolenik, @Leandros answer worked for me.

issue solved

This issue is old but just FYI,
default json syntax file is updated and after patch 8.1.2060, you can disable json's concealment selectively.
:help json.vim
It has the same effect as the above solution.

let g:vim_json_syntax_conceal = 0 does not work for the vim-json bundled with Ubuntu's vim package. It's an older version and does not have this option yet.
However the vim-json docs suggest:

The specially overeager indentLine, plugin would require yet an additional let g:indentLine_noConcealCursor="" in your .vimrc as detailed here.

Which does work on Ubuntu 16.04. For me, at least.
EDIT: Actually you need to set let g:indentLine_concealcursor='nc'.

Worked for me with Debian also. Thank you!

What I did was make a ~/.vim/after/syntax/json.vim and put this in it:
syn region  jsonKeyword matchgroup=jsonQuote start=/"/  end=/"\ze[[:blank:]\r\n]*\:/ contained
syn region  jsonString oneline matchgroup=jsonQuote start=/"/  skip=/\\\\\|\\"/  end=/"/ contains=jsonEscape contained

You'll note those are the lines in the if statement in $VIMRUNTIME/syntax/json.vim.

I tested these ones and none of them worked
let g:vim_json_conceal = 0
let g:indentLine_concealcursor='nc'

enter vim
:e $VIMRUNTIME/syntax/json.vim
:g/if has('conceal')/s//& \&\& 0/
:wq

This also didn't worked for me

I am having the same issue with neovim. I do not have json.vim installed, and indentLine is overriding the default conceallevel. When I uninstall indentLine the conceallevel is set to 0, but when indentline is installed it sets conceallevel=2

I also do not have vim-json installed. This worked for me in my init.vim in neovim
let g:indentLine_concealcursor = ''

From vimhelporg:

JSON                                            json.vim ft-json-syntax
The json syntax file provides syntax highlighting with conceal support by
default. To disable concealment:
let g:vim_json_conceal = 0

The setting it in my .vimrc solved the problem on VIM 8.2.24

I tested these ones and none of them worked
let g:vim_json_conceal = 0
let g:indentLine_concealcursor='nc'

setting the one liner : let g:vim_json_conceal = 0 in your .vimrc file should be enough (are you using VIM 8.2.24 or above ?)

I still cannot get this to work. Running latest stable neovim v0.4.3 on macOS 10.15.4. I think I've tested all mentioned configurations in this post so there's only the final one in my config in this post. Any help would be appreciated!
Configuration
let g:vimSource   = '~/.local/share/nvim/plugged'

call plug#begin(g:vimSource)
Plug 'Yggdroot/indentLine'
call plug#end()

set shiftwidth=4

let g:vim_json_conceal = 0
let g:indentLine_concealcursor = 'nc' " Also tested with empty ('')

Example JSON file
{
  "data": [
    {
      "hello": "world",
      "foo": 1,
      "bar": {
        "biz": "baz"
      }
    }
  ]
}

Result with config above

Result with conceallevel set to 0

@bombsimon setting of  let g:vim_json_conceal = 0 should be enough. According to your screenshot it looks like indent lines are disabled. Try to enable it manually by executing :IndentLinesEnable. If there are no difference idk how to help ( I've switched back from neovim to just vim).

@dagolinuxoid Thanks for your reply!
Yeah, the indent lines gets hidden when setting conceallevel=0. Which I knew since it's stated in the readme, it was just to show how to get the quotes to show. The screenshots were taken in the same buffer just toggling conceallevel so the plugin is enabled.
Just setting let g:vim_json_conceal = 0 does not help.
Config
call plug#begin('~/.local/share/nvim/plugged')
Plug 'Yggdroot/indentLine'
call plug#end()

set shiftwidth=4
let g:vim_json_conceal = 0

Result

So basically neovim config doesn't respect the variable whatsoever. There are three solutions:

wait till someone can solve it for neovim
switch to vim
disable indentlines for json files - honestly it's not that helpful to have them in json files, at least you can live without them =)

@dagolinuxoid Thanks for your replies and help!
I was just curious since people in the thread, now latest https://github.com/Yggdroot/indentLine/issues/140#issuecomment-596280543, said they got this to work with neovim without any additional plugins. Because of that I felt like I was doing something wrong byt perhaps I'm not(?)
I think number 3 is most appealing. A fourth solution to actually be able to use neovim and indentlines and not conceal data is the solution posted back in 2016, https://github.com/Yggdroot/indentLine/issues/140#issuecomment-173867054. This works as expected. An extra plugin  but personally I don't mind that much.
Config
call plug#begin('~/.local/share/nvim/plugged')
Plug 'Yggdroot/indentLine'
Plug 'elzr/vim-json'
call plug#end()

set shiftwidth=4
let g:vim_json_syntax_conceal = 0

Result

I did install nvim (not the lates version though 0.2.2) for testing. My ~/.config/nvim/init.vim has
call plug#begin( '~/.local/share/nvim/plugged')
Plug 'Yggdroot/indentLine'
call plug#end()

set shiftwidth=4

you can totally get rid of let g:vim_json_conceal = 0 because for nvim it doesn't do a damn thing. nvim without any additional plugins ('elzr/vim-json') designed to treat json files like this:
With IndentLinesDisabled - it shows the raw json files with quotes, and with IndentLInesEnable there are no indent lines too but quotes are gone in normal mode. As soon as you're trying to edit a word by pressing ciw (change inner word) quotes show up and disappear while editing - I found the funny behavior as a pretty cool one. It's not 'overwhelm' you with quotes making it looks cleaner - the downside it's a bit confusing.

I'm curious why there are still so many people bothered by this issue, the root cause and the solution have already been posted above.

If your vim is 8.1.2060+, let g:vim_json_conceal = 0 should be enough.
otherwise,:e $VIMRUNTIME/syntax/json.vim
:g/if has('conceal')/s//& \&\& 0/
:wq

If you are using other syntax plugin for json, please turn to that plugin for help. e.g.Plugin 'elzr/vim-json'
let g:vim_json_syntax_conceal = 0

This behavior is fixed for me in the latest commit. Perhaps we can close this issue and point to the commit where it's fixed? Otherwise I guess it's just https://github.com/Yggdroot/indentLine/commit/43dbd7092801637972b1d9fcecaaeee11f8e00cf

I'm curious why there are still so many people bothered by this issue, the root cause and the solution have already been posted above.

#1 doesn't appear to work for Neovim users (there are many)
#2 isn't portable, has to be redone (remembered, looked up)
#3 requires installing yet another plugin (which has its own issues) to fix a plugin-related issue.
@chrissound Doesn't appear to fix things on Neovim.

1. doesn't appear to work for Neovim users (there are many)

NVIM v0.4.2 works well without any settings.

2. isn't portable, has to be redone (remembered, looked up)

It's the responsibility of json's syntax file.

3. requires installing yet another plugin (which has its own [issues](https://github.com/elzr/vim-json/issues)) to fix a plugin-related issue.

You don't have to.

NVIM v0.4.2 works well without any settings.

If so they've reverted it because like I stated in https://github.com/Yggdroot/indentLine/issues/140#issuecomment-620424114 it's not working with NVIM v0.4.3, can still reproduce with example and config from linked post.

when I installed vim-markdown plugin,  I can't type `.
after I add below content to my vimrc :
let g:markdown_syntax_conceal = 0
let g:indentLine_concealcursor = 'nc'

and then works

when I installed vim-markdown plugin,  I can't type `.
after I add below content to my vimrc :
let g:markdown_syntax_conceal = 0
let g:indentLine_concealcursor = 'nc'

and then works

Installing elzr/vim-json plugin and adding let g:vim_json_syntax_conceal = 0 eventually worked for me.
Thanks @Leandros Leandros

My workaround in Neovim: create a json.vim file in ~/.config/nvim/after/ftdetect
There I have the following:
au! BufAdd,BufRead,BufNew,BufEnter *.json let g:indentLine_conceallevel=1
au! BufLeave,BufUnload,BufDelete,BufHidden *.json let g:indentLine_conceallevel=2
It's working for me!

This is an old issue but I figured I would share what worked best for me across vim & neovim. It's similar to the above but doesn't flicker indentLines when switching back to a non-json file. This might be because I jam everything in one file for portability sake but it works 🤷
let g:vim_json_conceal=0
augroup whatever
  autocmd!
  if has('nvim')
    autocmd FileType jsonc,json :IndentLinesDisable
    autocmd BufLeave,BufUnload,BufDelete,BufHidden jsonc,json :IndentLinesReset
  endif
augroup END


Sanity Create Project is not working

https://www.sanity.io/create?template=ndimatteo/HULL this URL redirects me to template page?

@AbhieShinde Sanity revamped their template setup and removed the create flow. Referenced this in a previous issue here: https://github.com/ndimatteo/HULL/issues/132#issuecomment-1863301929.
Please follow the manual setup steps to get going 🤘

I got it, but what steps should I follow to get the marketing starter app fully running?

I'm sure about the sanity studio, even after following the introductions I'm not able to get the data.


Python3.9

Codecov Report

Merging #85 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #85   +/-   ##
=======================================
  Coverage   93.28%   93.28%
=======================================
  Files          22       22
  Lines        1639     1639
=======================================
  Hits         1529     1529
  Misses        110      110

Flag
Coverage Δ

unittests
93.28% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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


Refactor readability

Some small changes to the semantics as well (e.g., removing useless hooks from vnodes), but mostly just refactorings.

Rebase after conflict.


Shell探针中Redis示例有问题

1、REDISCLI_AUTH这个环境变量在redis 3.2版本中无效。

建议在示例中做一个说明。
替代方案：在命令中使用-a选项指定密码

2、当redis server内存不足或者磁盘满了时，使用ping应该是无法检测服务是否异常（没有验证，纯属猜测）。这时候我执行set key aa 会执行失败。 此时对应的语法应该是：
shell:
  - name: Redis (Local)
    cmd: "redis-cli"
    args:
      - "-h"
      - "xxx.xxx.48.xxx"
      - "-a"
      - "$password"
      - "set"
      - "testtest"
      - "1"
    clean_env: true # Do not pass the OS environment variables to the command
                    # default: false
    env:
      # set the `REDISCLI_AUTH` environment variable for redis password
      - "REDISCLI_AUTH=tidecloudredis"
    # check the command output, if does not contain the PONG, mark the status down
    contain : "OK"
    not_contain: "failure" # response body must NOT contain this string, if it does the probe is considered failed.
    with_output: false # if true, the error message will contain the output, it works for `contain` and `not_contain` field.
    regex: false # if true, the `contain` and `not_contain` will be treated as regular expression. default: false

最开始我使用的错误语法是：
args:
      - "-h"
      - "10.25.48.xxx"
      - "-a"
      - "$password"
     #  下面的指令应该分三行
      - "set testtest 1"

建议在示例中做一个说明

Hi,
Thanks a lot for your issue. If possible, could you please to make a PR to update it?

直接 args 指定 -a就能解吧

I was about to create a PR for this but it appears that the official documentation for redis cli mentions this environment variable as the suggested method for authentication.

https://redis.io/docs/latest/develop/connect/cli/
I think we can safely close this issue. This is just an example so the user must adapt the example according to their needs just like @wayne666 suggested.

The REDISCLI_AUTH environment variable was introduced in Redis version 5.0.3, as noted in this commit. It might be useful to include a remark about this feature in relevant documentation.


Adds class to create the root collection asset

Added two new Mediaflux:http classes: one to check if an asset exists and another to create the root collection asset.
Added a Mediaflux::RootCollectionAsset class to wrap the logic to create the root collection asset (checks and all).
I have not updated the code to switch the places where we create the root collection since I wanted to keep this PR small. That will come as a separate PR.
Part of #791

@carolyncole yes, I am planning on replacing the existing calls to create the root collection as a separate PR.


Clicking on inputs closes Popup in Firefox on OSX

This weird behaviour is due to a bug in Firefox on OSX.
Related issues:

https://stackoverflow.com/questions/37207533/why-id-chrome-extension-popup-closing-on-input-autocomplete-suggestion-click
https://github.com/bitwarden/browser/issues/580

Workaround:

Wrap the inputs with label element and set absolute positioning to the input
(ref: https://stackoverflow.com/questions/40339951/clicking-on-label-not-working-in-html/40340000)

I guess this might work

wrap the input in the label element
absolute position input
block position label
create another div with text input appearance that just shows the input value(this is to hide the input with z-index: -1)


NUL displayed

From<EMAIL_ADDRESS>on 2009-10-07T06:28:40Z
Every time I press <ctrl>+ in any party of source code (in Editor)
'NUL' inserting in source code.
Environment:
OS: Ubuntu 9.04
DE: Gnome 2.26.1
Python version: 2.6.2
QT version: 4.5.0
Attachment: Снимок-27.png
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=66

From pierre.raybaut on 2009-10-09T14:51:25Z
That is the control character corresponding to Ctrl+Space.
That is normal to be displayed as NUL but what is bizarre is that you shouldn't be
able to insert it.

From pierre.raybaut on 2009-10-15T13:19:07Z
Status: WontFix

From<EMAIL_ADDRESS>on 2009-10-10T19:45:19Z
I've also seen this on the first day I tried the 1.0.0rc2 version. Since then it
disappeared.
Ubuntu 9.04, everything up to date.


Fix event parsing

Fixes #255

can you add a full packet data output test (like the one you just added for raw_log)?

Yeah, good point. Can't easily test the RPC output because the Tendermint client already does UTF-8 decoding for me but testing parsePacketsFromEvents makes sense.

Except for the changelog, this should be done now


Filtering using a field that doesn't exist throws a TypeError

<-- GET /organisations?filter[badfield]=1
xxx GET /organisations?filter[badfield]=1 500 8ms -
TypeError: Cannot read property 'type' of undefined
    at JsonApiSerializer.attachQueries (/home/code/newapi/node_modules/fortune-json-api/dist/lib/helpers.js:300:38)
    at JsonApiSerializer.initializeContext (/home/code/newapi/node_modules/fortune-json-api/dist/lib/helpers.js:90:

    at JsonApiSerializer.processRequest (/home/code/newapi/node_modules/fortune-json-api/dist/lib/index.js:101:43)
    at SerializerSingleton.proxyMethod (/home/code/newapi/node_modules/fortune/dist/lib/serializer/singleton.js:170

    at /home/code/newapi/node_modules/fortune/dist/lib/dispatch/index.js:87:27
    at run (/home/code/newapi/node_modules/core-js/library/modules/es6.promise.js:89:39)
    at /home/code/newapi/node_modules/core-js/library/modules/es6.promise.js:100:28
    at flush (/home/code/newapi/node_modules/core-js/library/modules/$.microtask.js:17:13)
    at doNTCallback0 (node.js:407:9)
    at process._tickCallback (node.js:336:13)

I expected this to fail more gracefully, perhaps with fortune's own UnsupportedError, or just passing the filter data to the adapter without failing. The latter would probably be more useful e.g. for custom processing, as in #2.

Oops, this should indeed throw a typed error instead of a native one.

Fixed in commit https://github.com/fortunejs/fortune-json-api/commit/0791351aef8d723a60e8d4a63c63fd4700564d0f.


Fix chromedriver RE logic to prevent issue with greedy matching. Also fixes win10 error.

The leading wildcards in the version pattern with .* was causing the leading digit on the major version to be removed from the match. The logic around subprocess is modified to support running from a detached context, with no explicit stdin/out. This happens readily when running on win10 with a PyInstaller binary.

Hi @mrooney ! Let me know if you have any questions. Should be pretty safe/straightforward!

Thanks for this, looks great!

Thanks Mike for the quick merge and happy new year!


Automated cherry pick of #2775: fix: 1. nil pointer panic error when accessing resource pool and storagecache 2. support multiple disk format

Cherry pick of #2775 on release/2.11.
#2775: fix: 1. nil pointer panic error when accessing resource pool and storagecache 2. support multiple disk format

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.11@ecb9fd2). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.11   #2777   +/-   ##
==============================================
  Coverage                ?    7.2%
==============================================
  Files                   ?     470
  Lines                   ?   74539
  Branches                ?       0
==============================================
  Hits                    ?    5374
  Misses                  ?   68713
  Partials                ?     452

Flag
Coverage Δ

#aFlag
7.2% <0%> (?)

Impacted Files
Coverage Δ

pkg/compute/models/cloudsync.go
0% <0%> (ø)

pkg/multicloud/esxi/virtualmachine.go
0% <0%> (ø)

pkg/multicloud/esxi/vdisk.go
0% <0%> (ø)

Continue to review full report at Codecov.

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

/lgtm
/approve


Manually select a new tab when we're in fullscreen mode

Summary of the Pull Request
If we're fullscreen, the TabView isn't Visible. If it's not Visible, it's not going to raise a SelectionChanged event, which is what we usually use to focus another tab. Instead, we'll have to do it manually here.
So, what we're going to try to do is move the focus to the tab to the left, within the bounds of how many tabs we have.
EX: we have 4 tabs: [A, B, C, D]. If we close:

A (tabIndex=0): We'll want to focus tab B (now in index 0)
B (tabIndex=1): We'll want to focus tab A (now in index 0)
C (tabIndex=2): We'll want to focus tab B (now in index 1)
D (tabIndex=3): We'll want to focus tab C (now in index 2)

_UpdatedSelectedTab will do the work of setting up the new tab as the focused one, and unfocusing all the others.
Also, we need to manually set the SelectedItem of the tabView here. If we don't, then the TabView will technically not have a selected item at all, which can make things like ClosePane not work correctly.
References
PR Checklist

[x] Closes #5799
[x] I work here
[ ] Tests added/passed
[n/a] Requires documentation to be updated

Validation Steps Performed
Played with it a bunch

(do not automerge)


Added 2 quotes

Will add more in free time

Hello there, thanks for sending in a PR.
Please note: when contributing to an OSS project, add a description to your PR and possible screenshots

Im sorry about that. I thought my commit message was the description I needed. Thanks for letting me know. I'm here to learn.

Sure it's fine, you committed no offence.
That's why I'm letting you know.
Well done!

Hello @FredAmartey, are you still working on this?


AssertionError: The num_classes (80) in FCNMaskHead of MMDataParallel does not matches the length of CLASSES 3) in CocoDataset

I have followed the procedure at https://mmdetection.readthedocs.io/en/latest/tutorials/customize_dataset.html for my custom model dataset. I encounter this problem, not sure where am I doing it wrong. Would somebody mind helping me, please?
Using, CBNetV2 architecture with cascade_mask_rcnn.

Figured it out. I left out inserting the mask_head in the config


Just one image is shown on the screen

Hello,
Today I ran your demo but just one image is shown on the screen which is named Gorillaz. Do you know anything about this situation?
Thanks

Please scroll.


[PE-D][Tester E] Images in user guide does not match with that of the product

The GUI shown in the user guide differs from the current product

Labels: severity.VeryLow type.DocumentationBug
original: zicotjia/ped#2

Updated


Enable moment-timezone functionality

I'm sorry, but don't agree with this change at all. moment-timezone is a huge library and it will impact many applications using moment-jalaali. please either fork this project for your use case, or add a functionality that would replace the installed moment with the moment of your choice, in your case moment-timezone.

Hi,
moment itself doesn't allow us to set default timezone, thus when using moment-jalaali, timezone always depends on client computer's timezone.
https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/
As shown here, we can set default timezone only using moment-timezone.
Furthermore moment-timezone is already a dependency here:
https://github.com/jalaali/moment-jalaali/blob/d744c4e15f61aac0e91f0ad3fd097ef47c9eb9ab/package.json#L45

Hey @alitaheri,
I think we can accept this change, since this should not change the dependency structure and we can also close #242 too. What's your opinion?
Also, tree shaking tools can remove unused code in production deployments. So client-side developers can rely on such tools to minimize bundle sizes, can't they?

Ok, I read a little about moment-timezone. As I understand it, it is a library that helps mainly with parsing and formatting of time zones. The timezone data is separate and must be loaded before use. In node environment it is already loaded, but on client, it must be downloaded to be accessible to the library.
Now, I quickly changed the require line as was suggested by @MeeDNite, and all tests passed successfully. However, I don't know the result of this change in client side.
@MeeDNite, @malikarami Can you check the side-effects on the client side, so we can come to a conclusion?
The target is that current users of this library should not notice a huge change in file size, and the change must not break any existing code.
The final result is that tz function will be available on the server and client and can be used to change timezone of formatted moments.


emoji_picker: Make the mouse hover and key navigation share same state.

Replaces PR: #6830.
Fixes: #6827.

Awesome, merged, thanks @HarshitOnGitHub and @synicalsyntax!  This is great.
I notice one bug, which is that if you hover over a reacted emoji, it still uses the red box styling:

Also, we might want to play with the colors a bit; I think something a bit more interesting than the grey might be a good idea.  Since these are CSS things, pinging @brockwhittaker to help out with those.

I noticed the mouse hover area for which emoji felt too small, which I fixed in bcbe41177a7f0a20175a92146d543dd05bed8ae1.  However, we now have a small problem where if you move your mouse to the very top or bottom of the picker in a random scroll position, there's a good chance that hovering a target emoji will end up scrolling the feed a little.  We probably don't want that scroll to happen, since it's somewhat distracting.
@brockwhittaker possibly you should fix that while you're working on the styling.


Show markers only on the correct floor. Fixes #40

It needs to be merged manually Ville, because of the changes I've done earlier to the package name.
Go for it :+1:


upgrade pyarrow from 12 to 14

We temporarily stop supporting array features until datasets fixes the issue on their side.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (bc8bdcb) 90.49% compared to head (8de3f9f) 87.05%.

:exclamation: Current head 8de3f9f differs from pull request most recent head 00ef070. Consider uploading reports for the commit 00ef070 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2089      +/-   ##
==========================================
- Coverage   90.49%   87.05%   -3.45%
==========================================
  Files         248      132     -116
  Lines       15202     5245    -9957
==========================================
- Hits        13757     4566    -9191
+ Misses       1445      679     -766

Flag
Coverage Δ

jobs_cache_maintenance
95.30% <ø> (ø)

jobs_mongodb_migration
86.69% <ø> (ø)

libs_libapi
83.37% <ø> (?)

libs_libcommon
?

services_admin
87.63% <ø> (ø)

services_api
87.09% <ø> (ø)

services_rows
85.49% <ø> (ø)

services_search
80.48% <ø> (ø)

services_sse-api
94.21% <ø> (ø)

services_worker
?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 142 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

I think you forgot to update it in some of the components: api, rows,...

in fact, they were requiring pyarrow 11, which is why it was stuck to a lower version.
But... it seems like the upgrade will not be that simple: https://github.com/huggingface/datasets-server/actions/runs/6823050840/job/18556219132
Looking at it

yes, to reproduce:
import numpy as np
from datasets import (Array2D, Dataset, Features)
feature_type = Array2D(shape=(2, 2), dtype="float32")
content = np.zeros((2, 2), dtype="float32")
features = Features({"col": feature_type})
dataset = Dataset.from_dict({"col": [content]}, features=features)

Should I open an issue in datasets? Or am I misusing it? It's a bit too cryptic for me

OK, I opened https://github.com/huggingface/datasets/issues/6396

Once merged, we'll have to revert https://github.com/huggingface/datasets-server/pull/2090/commits/0f58abb96150e28f7dca12aa3a5d85e869535501 if #2090 is merged before.

I'm fine with disabling ArrayND types for now using 14.0.1

what does it mean? letting the error propagate, and remove it from the tests?

Let's comment the failing tests for now. I guess pyarrow will ship a fix that introduces safe extension arrays soon

(or maybe not, but in this case datasets should stop using PyExtensionType)

Yes until datasets fixes it

Exactly. I think that it's better to remove support for array features than to let the vulnerability.

Thanks for the comments and reviews!


More song download filters

Filter based on difficulty of maps (see Z site)
Select time range (default is the current option, "since last download"). Match Z site

Closed by #12


Update to require 1 item from each group in result knapsack

Hello!
I was looking to use your code however after running it I realized that this is a variation of the MCKP, where it returns 0-1 of each item group.
I would and I think the rest of the world would really appreciate a variation of your algorithm that selects 1 item from each group, so 1-1 MCKP. Basically if there are 5 groups, we always have 5 items in the knapsack, 15 groups we always have 15 items in the knapsack.
Please let me know if you have any questions or if I can help in anyway.
Thank you

Hi @DroxXodia,
If you would like to contribute please create pull request, ill add it to repository,
Best regards


GPG/PGP signing key should be on identity not account

Currently the user has to set the signing key per account.
It should be that the signing key is set per identity instead.
As the identity and key are tied to an email address but the account is not,
this is the natural order of things.
It also allows the user to use multiple signing keys based on his current role
(answering private mails, company mail or customer mail from the same account).

Absolutely :+1:

This affects me in that the default signing key is always picked incorrectly

sign/encrypt default choice should be part of this as well

Also: My K-9 seems to forget the assigned signing key all the time.
Every time I want to sign something, it says "no signing key assigned"
and every time I have to assign it again.
I'm however not on the Google Play Store releases since my Android Wear support still is not part of any release yet.

@MarcusWolschon: This issue is about an enhancement. You're now talking about one, possibly two, bugs. Please create new issue(s) with a reference to the Git HEAD commit of your build.

I'm just pointing out that the issues with the signature-key may be much broader.
Anyone changing to how signing keys are stored should know what else to look out for in that part of the code.

Please consider that while an identity has a one-to-one relationship to an email address, tying a key to an email address is an unnecessary limitation.  Please allow users to select the key manually based on its fingerprint.
Thanks.

I don't think having multiple keys for the same identity is a valid use case. Adding this flexibility comes with a real cost in ui complexity, which I don't think is worth it.
What might be a way to do this is allow multiple identities with the same e-mail address. Anyways I didn't look at this in detail yet, so not sure.

This is not about having multiple keys for the same identity.  This is about selecting an arbitrary key to sign messages from any identity without the constrain that the identity's email is also the key's emails.  Enigmail does it well in Thunderbird: in Account Settings / OpenPGP Security I can either use email address of the identity to identify the OpenPGP key, or use a specific OpenPGP key ID.  All it boils down to is:

add one field to enter a key ID
if the field is empty (default), select key based on the identity's email address
else use the key ID to select the key

I'm not sure I understand your comment, then. This issue is about setting signing keys per identity. I thought you wanted something different?

It's the how, not the what.  You can set signing keys per identity based on the email address, but this is limiting.  Or you can set signing keys per identity based on the Key ID, which is in my view the right thing to do.

Yes, this has to be changed. I use one key per mail address, so I need a different key per identity. This id the biggest issue (I call it issue as I only can use PGP for the main mail address of my account) for me for the current alpha 5.108 - and besides some minor usability/frontend things the only real issue.
I would also say that keys should be set by key id, not mail addresses as there could be more that one valid private key per mail address, as it is for my case.

@msebald
"I use one key per mail address"
"there could be more that one valid private key per mail address, as it is for my case."
You've just contradicted yourself. Either you use one key per email address or you use multiple keys per email address.
@ the thread:
Besides which, I'm not sure K-9 does a very good job with secondary addresses per account, let alone the PGP/MIME sub-module. We probably want to formalise that better, first.
The default needs to be a default key attached to the default email address being automatically selected using opportunistic mode (sign, encrypt if possible).
We can then add better support for secondary sending addresses in K-9 and attaching OpenPGP keys to them as that secondary email's default key. We can then add an advanced options setting to enable you to select an arbitrary key at some point. This would be off by default.
What we don't want to do is over-complicate the 90% case of 1 email address for 1 account with 1 key. That has to be simple and straightforward

I think my reply on this issue was not very clear, also because you first wrote something different and changed it later. ;-) But it is also not an easy thing to talk about and as already mentioned, there are so many different ways to handle keys, mail addresses and so on.
In my case it is not that straight forward as I thought. I just checked my PGP keys. In most cases I use one key for one mail address (but I also have old keys still in my keyring, e.g. to be able to decrypt old mails - maybe that was a bit confusing in my post yesterday). But I also have two keys where I have more than one mail address identity in it. I use there keys for my company where I reply with different mail addresses which depends on the case why I get/send a mail (customerservice@, postmaster@, msebald@ ...).
I think the easiest way to really bind a key to a mail address and/or identity in K-9 is to use the key id. The id will never change - even if I add or change the key later. No idea if this way is more complicated to implement, but it would be great to have it that way. I know this from Thunderbird (Enigmail addon) where I can manually set a key for an identity (if not, Enigmail will guess by the sender mail address which key to use).
Sure, using an automatic procedure makes it more easy for users and maybe also to implement this into K-9, but it will only work for simple setups. My guess is that people who use PGP will not have a simple setup in most cases, unfortunally.

So:

let the user choose 1 keyID for each K9-Identity.
open a different feature request for "allow multiple identities with the same sender-email-address"

default key:
There already is a default identity and thus a default key (if the user has chosen one).
choosing by KeyID instead of email address:
Choosing a KeyID instead of an email that identifies a key gets rid of serveral issue.
Most of all key-rollover, where you have an old key and a new one associated with one email address.

I was able to setup two identities with the same sender address with the newest alpha version 5.108 - I was surprised as this was not working before. So either it is an accident or a new feature.
So, setting a key id per identity is for sending, right? Then everything is set and ready to go. When receiving or opening old mails the key is chosen by the information from the mail - I would guess. Then also old key ids would taken from the private keyring?

@msebald: The subject of this bug report is sending, not receiving. The logic by which a key is chosen when receiving or opening old mails is surely important and you may want to open a different feature request if there is an issue in that area.
@MarcusWolschon: Yes, I believe that your data structure of one keyID for each K9-Identity is the simplest and easiest way to satisfy all reasonable use cases expressed in this thread.
The UI logic can and should IMHO follow @philipwhiuk principle of not over-complicating things, so compared to the K9 version that is currently on my phone via F-Droid.
Settings:
(1) Move the Cryptography setting from Account settings to Account settings > Sending mail > Manage identities > %K9-Identity%
(2) Replace Auto-sign boolean setting with a Signature setting that has the following choices:

Off (default, though debatable)
Automatic: use opportunistic mode, in @philipwhiuk 's words)
Manual: show a drop down with the list of keys from the OpenPGP Provider and let the user select one manually.

(3) Account settings > Sending mail: add an "Always show cryptography" Boolean similar to the existing Always show Cc/Bcc, Off by default
Compose:
(1) Default, when Always show cryptography is off, use opportunistic mode, i.e. automatically sign if a keyID exists for the selected K9-Identity
(2) When Always show cryptography is on, show the current UI line with the two check boxes for Sign and Encrypt
That would be sufficient for the signing function, i.e. for the subject of the current feature request.  It would leave some analysis and logic gaps for the encrypt function:
(1+) when using opportunistic mode, for each recipient:
(a) if there is no key for the recipient in the key ring, don't encrypt
(b) if there is a single key for the recipient in the key ring, encrypt
(c) if there is more than a single key for the recipient in the key ring, ask which one to use
(2+) when in manual mode: show the current UI line and if the Encrypt check box is checked at the time of sending, follow the same logic as in (1+)

I believe the above reduces complexity for all users while increasing flexibility for the more sophisticated scenarios, and is described in sufficient detail to start implementation.
If somebody can point me to the actual files and line numbers in the code where this happen, I may spare some time and make my first attempt at patching an Android app.

Much of this has changed in the current beta/dev. The auto-sign/auto-encrypt setting doesn't exist any more. There's a padlock dialog which is displayed in the compose view if an app and key is setup, which defaults to opportunistic: https://github.com/k9mail/k-9/wiki/Crypto-Design-Thoughts
Right now the key is selected on an account basis in activity/setup/AccountSettings using an OpenPgpKeyPreference.
For it to be identity based means adding new settings to activity/EditIdentity.
For composing this means the RecipientPresenter (which should really be renamed now it does more than present recipients...) uses the key to set the availability of cryptography.

@philipwhiuk I don't have much time now nor in the next 14 days to look at things in detail.   However, I must remark that the link in your comment above describes received emails while this feature request is about sending emails.  I fail to see how the Crypto Design Thoughts linked above are relevant in the context of this feature request and I strongly recommend keeping the analysis and design of receiving and sending crypto function separated, if only for one major difference: I cannot control what I receive, but I can control what I send and how I send it.

I forgot it only covered received icons when I wrote that. My point was the UI has changed somewhat. Here's screenshots from the beta.

Thanks for the screenshots.  I assume that if I tap on the padlock icon next to the From line on the first screen shot, the dialog in the second screen shot.  I assume that the dialog ovvers me four choices (sliding from left to right along the four icons), although from the look of it there could be six options if I am to tap on the text too.
If I have four choices on that dialog, what do they stand for?
I venture on thin ice with the following remarks, mainly because I have only partial information.  It seems to me that whoever has designed / coded the screenshots and functionality (is it you, @philipwhiuk ?) has mixed together two crypt function: signature and encryption.
Signature:

relates to the sender
uses the sender's private key
can be fully controlled within the Compose dialog
its symmetric function when receiving emails is Verification (off-topic in this feature request and more generally in the Compose dialog)

Crypt:

relates to the recipients
uses each recipient's public key
must rely on the availability of the public key on the user's keychain
its symmetric function when receiving emails is Decryption (off-topic in this feature request and more generally in the Compose dialog)

I strongly advise  clarity and separation between Crypt for Sending (Sign/Encrypt)  and Crypt for Receiving (Verify/Decrypt).
To the specific dialog, if the options are really four different ones on a line, I would suggest removing the passive text header and indeed letting the user choose with a four position slider.  However, if the four options are just the result of a combination of two binary choices, the slider is the wrong visual metaphore to use.  A better one would be two toggles.  Two icons, one for Sign and one for Encrypt.  Gray = off, Colored = on.  And I would use Black as a color, not Green, because the dialog is not indicating success, partial success, or failure (which would justify the use of Green/Yellow/Red), but just activation / deactivation.  Moreover, the dialog is just a mere overriding of a default choice, so please bring back the default choice in the settings.
Please correct me if I am mistaken.

Following discussion - there's a mailing list for all this.. @Valodim and @cketti and others did the implementation.
The four options are:

Never sign, never encrypt.
Always sign, never encrypt
Always sign, encrypt if possible
Always sign, always encrypt

It's not binary. Encrypting without signing is not quite pointless, but not far off.
And implying they are separate is not useful either. E-mail is a two-way protocol - it's not helpful to ignore that the hard part of PGP is key distribution - failing to provide a signature for return mail that is encrypted would only worsen the problem.
As for default choice, I find myself disabling entirely it quite a bit right now - sending PGP data to people who don't have compatible clients and when adoption is so low is counter productive. I would rather have to turn it on than always turn it off. But we are miles off topic.
I recommend you install the beta if you want to feedback further - me reproducing it in screenshots is kind of labour intensive when it's an open program.
I hope we can now stick to the issue in this issue for this issue and raise other issues separately.

Indeed, please don't derail our issues. We appreciate that you want to contribute your thoughts, but describing how the interface looks in the alpha we released in the play store is not a good use of our time.

i am not running an alpha, but rather the official release from the Google Play store.  i just upgraded to version 5.201 this morning and this was the absolute first thing that i noticed.
i have only one mail account but 9 sender identities, 7 of which have their own PGP keys.  i hate having to send out, say, business mail from a business identity but then it gets signed (or even encrypted as the case may be) as my personal (primary) identity.  it's horribly unprofessional, and now i have to either dig out a prior version of k9mail from an Android backup or stop sending business mail from my phone until this gets fixed.  :-(

So do we have a concensus on how to implement signature keys per identity?
Who can implement it? (I'm currently occupied with 3 other projects.)

@MarcusWolschon i will gladly offer up any bounty payment that you care to name if this gets handled, either by you or by anyone you can convince to fix it.
Setting signing/decrypting keys by Identity as opposed to by email address or any other strange designator would be the biggest thing preventing me from using the latest version of K-9 Mail.
(Then we can go about addressing all of the other weird UI changed that happened in the new milestone, hah!)
Seriously, I dug an old version out from my last phone backup and that's what I've got at the moment.  And the device is constantly trying to get me to upgrade to the new version, which I have to keep preventing, since it breaks the entire way that email and signatures should be handled.  :-(
Sorry for sounding so harsh.  But seriously, this is something I would gladly do ANYTHING to encourage others to address.

When you say you have one mail account buy 9 sender identities, do those identities have different mail addresses? Using different keys with the same mail address seems like a weird scenario to me, if that's what you're doing can you say what the idea is there?

I have three IMAP accounts configured in K-9 mail.  Two of which basically never send/receive messages... they are used for shared message archiving or just keeping tabs on some company operations.
So, that basic overview could be thought of as...
IMAP #1 Personal (the EVERYTHING account)
IMAP #2 Stored Old Stuff (shared by some other folk with access to same account)
IMAP #3 Other Business That I No Longer Run
Now, as far as identities are concerned, this is how the structure looks...
IMAP #1
<EMAIL_ADDRESS>(has PGP key #1, most used)
<EMAIL_ADDRESS>(has PGP key #2, used for family emailing)
<EMAIL_ADDRESS>(doesn't use PGP at all, no key)
<EMAIL_ADDRESS>(has PGP key #3, used for internal chatter)
<EMAIL_ADDRESS>(has PGP key #4, used for client communication)
<EMAIL_ADDRESS>(for misc. whatnot, no PGP key at all)
<EMAIL_ADDRESS>(for misc. whatnot, no PGP key at all)
<EMAIL_ADDRESS>(for misc. whatnot, no PGP key at all)
IMAP #2
<EMAIL_ADDRESS>(has PGP key #5, rarely used for anyything)
IMAP #3
<EMAIL_ADDRESS>(no PGP)
... it is not feasible for me to split up all of those IMAP #1 identities.  I send and receive and reply to and (most of all) file into folders all of that mail in a common-use fashion.  And almost all of those sender identities are tied to forwarder addresses, so there's no fully-featured IMAP account by which I could send mail on a server somewhere logging in as<EMAIL_ADDRESS>let's say.
So all of them are set up as sender identities under IMAP #1 and that works well.
The latest K-9 mail client, however, seems to want to insist on ONLY ever using PGP Key #1 for signing ANY messages.  As you can imagine, if<EMAIL_ADDRESS>is sending email to a client, signing it with "Deviant's PGP key" is totally unprofessional.
(Not to mention that the whole UI is totally complicated and hard to follow anymore, with the colored padlocks and three dots and all that... it used to just be two simple checkboxes.  Sign and Encrypt.  It was totally unambiguous.   Now we've got some slider-bar and colored dots and "always, sometimes, never" choices.  Ugh.)

i see that @yuv is of the same mind that I am...

the slider is the wrong visual metaphore to use. A better one would be two toggles. Two icons, one for Sign and one for Encrypt. Gray = off, Colored = on. And I would use Black as a color, not Green, because the dialog is not indicating success, partial success, or failure (which would justify the use of Green/Yellow/Red), but just activation / deactivation. Moreover, the dialog is just a mere overriding of a default choice, so please bring back the default choice in the settings.

two separate toggles would be much clearer, not to mention it more closely parallels every other encrypted email client I've ever seen, all of which treat "Sign" and "Encrypt" as two distinct buttons/toggles.

This issue is about identities, please do not derail it.

fair enough.  thanks to you and @cketti for getting things implemented this far.  I'd love to find that mailing list which @philipwhiuk described in order to converse further about the other topics.  where is that?
looking forward to folk implementing the "sign by identity" as opposed to current "sign by IMAP account" since that will be such a huge win.
thank you to everyone who makes the K-9 client what it is.  it's marvelous.

<EMAIL_ADDRESS>- User list
<EMAIL_ADDRESS>- Dev list

Fwiw, the current implementation of key id choice is more of a simplest way to implement prototype. Similarly, it's pointless to have different providers per account :)

@Valodim when you say "it's pointless to have different providers per account" i'm not exactly sure what you mean.  different email providers per IMAP account?
in my example list above, all of the various other identities are forward-only addresses that push through to my personal address (sometimes coming in with various PGP keys in use).  then I use my configured sender identities to dispatch replies back according to whom the parties are expecting to hear from.

Oh sorry, I meant crypto providers. In the ui it's "crypto app", which can currently be set per account :)

are there any other reliable crypto tools for Android besides OpenKeychain?  ever since APG was phased out, transitioned to OpenKeychain, I've not been familiar with one that anyone recommends.

There isn't :) anyways, I'm currently moving those settings around, will probably post a wip pr soon

I suggest to add PGP key autochoosing based on current folder too. In most cases email/alias autochoosing will be enough, this is just for completeness, i.e. Work1 forlder and Work2 folder, with automatic per-folder email address choosing first which allows automatic per-email choosing of PGP key next.
I agree that permanent (maybe per-folder) remembering of always encrypt and only sign will be nice too.

Folders don't really have any information to associate them with public keys, what would the choice be based on? Can you describe your use case?
I'm not a fan of "just for completeness" arguments at all - see also "feature creep".

Folders don't really have any information to associate them with public keys, what would the choice be based on? Can you describe your use case?

I mean the folder where you currently stay with the list of incoming messages on the screen. As I suggest, to implement it, association folder = email should be implemented first, then association email = PGP key and always encrypt/only sign could be implemented to finalize this feature.

BTW, this is implemented in Thunderbird with "Enigmail" (PGP stuff) + "Folder account" (assign identity to the folder) addons.

@ache What is wrong with having to select the sender identity amongst the list? Do you really have that many identities for this to be an issue? Also, given the practicality of navigating within folders on mobile vs. desktop, I don’t think this is a use case…

Changing identities based on folder is unrelated to this issue. Please keep on topic.

@ArchangeGabriel

What is wrong with having to select the sender identity amongst the list?

It is bothering operation, and user always need to remember which key it must choose. Mistake probability here is high.

Do you really have that many identities for this to be an issue?

Yes, I have several jobs and different PGP keys for each one.

@ache Let’s continue this discussion on https://github.com/k9mail/k-9/issues/2155.

@Valodim

Changing identities based on folder is unrelated to this issue. Please keep on topic.

But implementing of changing PGP keys based on folder is related. Of course, you can implement per-folder PGP key without per-folder identities, but it will be more work, better use already suggested here per-email PGP keys choosing.
@ArchangeGabriel

Let’s continue this discussion on #2155.

But it is closed in favor of this ticket. I'll answer your question there.

it's been almost 6 months.  where is the fix for this issue?
i am STILL religiously updating K-9 every time a new version comes out in the hopes that someone will correct this problem.
at it currently stands, i can go into my Cryptography settings and select "my key" (forcibly having to choose ONLY ONE SINGLE key out of my half-dozen private keys) and then when composing an email i have NO WAY to select another key, it seems.  :-(
If I am writing a business email to a business client, i do NOT want to sign it with the key for<EMAIL_ADDRESS>but i want to (naturally) sign it with the key for<EMAIL_ADDRESS>

I finally have a concept for this issue and started working on this, so this is now in the more immediate pipeline. Yay.

Hi ! Is this still being considered? I don't wish to press, I'm simply very interested in this feature. If no one has time to work on it any more, I'll simply look for another solution. I don't have the skills to help, unfortunately =(.

I also would appreciate being able to assign an openPGP key per identity. In addition being able to select from a list of OpenKeychain private keys instead of relying on the autoassignment is needed. Currently when I try to assign a key, the key that I want to use is not listed. While I am able to go to OpenKeychain from the dialog, I do not see any way to actually select my key. I hesitate to sumbit a bug report since I would rather that this gets fixed when implementing per identity key instead of per account key.
My use case is different than the ones already described, so I will state it here:
My email provider (Fastmail) allows for unlimited identities. This is accomplished by using subadsressing. For example, an alias is<EMAIL_ADDRESS>I am able to send and receive email using<EMAIL_ADDRESS>I use this often though I do not want to add every possible email address to my key. I prefer to use one key for all of these email addresses.

Hey Guys, I'm having a hard time understanding if I need this feature or not to explicitly associate keys with a given identity. Other comments like @CueHD's (and several others) #2815 Seem to imply that if I create keys in for each email address K-9 will communicate with OpenKeychain to select the correct key and use it.
This however is not my experience. I need to associate a key with the base account otherwise I get an error "No key configured for this account! Check your settings". However I can only associate one key with the base account and this means that single key needs to include all possible email addresses.
I attempted to associate a single dummy key to the base account in hopes that at the time of sending an email using a different identity it might pull in the correct key. Unfortunately this was not the case. It used the key associated with the base account and not the key in OpenKeychain that corresponded to the email address of the chosen identity.
I'm left thinking that what I want to do just doesn't work presently. Perhaps @CueHD you are maintaining all email addresses under a single key associated with a single account. And perhaps the user who filed #2815 has multiple accounts and it was simply a matter of K-9 chosing the wrong key from the wrong account when sending emails (and that bug subsequently being resolved).
Please correct me if I'm wrong but I just want to make sure there is no way to get K-9 to pull in keys from OpenKeychain on a per identity basis via the email or identity display name. I attempted making keys in OpenKeychain with names that corresponded to K-9 email addresses and K-9 display names and neither approach worked.
This feature would be really great as currently I can't use PGP with my multiple identity system. Thanks!

Perhaps I was unclear.
The auto-assignment attempt is currently per account not per identity. What we are asking for in this issue is per identity assignment of keys.

How far are we with this?
I got 1 email Account and 100+ aliases aka identities. I really want to use encryption on some of them.

When do you plan to support this? In my case I have one pgp key for 2 mail addresses (means that 2 identities created in the key), but K9 Mail doesn't find the second one.

Hi !
Any news on this feature ?

Any news on this feature ?
The "workaround" is to keep changing the account-specific key to that of the respective identity writing the current email. This is very painful.

I'm betting this will never be worked on.  It's been years now, eh?

@deviantollam you never know... Didn't mozilla foundation take ownership of k-9? Perhaps they will go through all open tickets and triage them. In which case it's good they know people still want/need this feature. Not having this feature is very painful for as @rfkat said above.

This should defenetly be fixed! Upvote from me.

My comment is going to be marked as off-topic, but if this is never worked on then only topic of this thread is people continually asking for the feature.
At that point this comment is perfectly on-topic.
Anyway, I would assume this is really easy to implement. I might be mistaken on that front.
Maybe I'll give it a go one day and submit a PR?

Any news on this feature ?
The "workaround" is to keep changing the account-specific key to that of the respective identity writing the current email. This is very painful.
BTW: marking comments as "off-topic" simply for asking about the status after 8 years of having this as an open issue is an "interesting" way to give answers, to say it politely. If you don't intend to implement it, that's fine. Just close this issue so that everybody knows.

Yeah... for me, I no longer care about Email encryption.

BTW: marking comments as "off-topic" simply for asking about the status after 8 years of having this as an open issue is an "interesting" way to give answers, to say it politely. If you don't intend to implement it, that's fine. Just close this issue so that everybody knows.

Personally I think its a very rude way to handle those sorts of comments especially because the issue has been open for 8 years. Would be so much better if they responded with the status of the development of the feature.

See https://github.com/bradfitz/issue-tracker-behaviors#any-update and
https://cketti.de/2020/07/07/why-i-hide-github-issue-comments/

See https://github.com/bradfitz/issue-tracker-behaviors#any-update and https://cketti.de/2020/07/07/why-i-hide-github-issue-comments/

The link that you gave says, literally:
"(if it's been a year, sure. But we don't need somebody pinging the bug for updates daily or weekly.)"
My guess is that 8 years probably qualify, too. But feel free to feel insulted.  🙄

See https://github.com/bradfitz/issue-tracker-behaviors#any-update and https://cketti.de/2020/07/07/why-i-hide-github-issue-comments/

Yep, I understand why you do this but it would be more helpful to point users in the direction of a timeline or other useful information about the issue. Maybe people asking for updates about this issue because this issue isn't even on the roadmap in Github projects or maybe because there doesn't seem to be any active development on resolving this issue.
I don't see a PR referenced which begins to resolve the issue, or a branch dedicated to rewriting the GPG/PGP handling to support multiple identities properly.
If there was evidence of further information, a timeline or active development on this issue then there would be a higher chance that people wouldn't be leaving comments every few years asking for updates on this project.
I totally understand why you don't like off-topic comments, but at the end of the day there is a reason why they are being posted.
Just a reminder that the last on-topic comment, before the spew of off-topic ones was back in 2019. I think this definitely qualifies for being over a year.

i really Wanted to insuscribe
On Mon, Jul 24, 2023, 7:18 AM Melon @.***> wrote:

See https://github.com/bradfitz/issue-tracker-behaviors#any-update and
https://cketti.de/2020/07/07/why-i-hide-github-issue-comments/
Yep, I understand why you do this but it would be more helpful to point
users in the direction of a timeline or other useful information about the
issue. Maybe people asking for updates about this issue because this issue
isn't even on the roadmap in Github projects or maybe because there doesn't
seem to be any active development on resolving this issue.
I don't see a PR referenced which begins to resolve the issue, or a branch
dedicated to rewriting the GPG/PGP handling to support multiple identities
properly.
If there was evidence of further information, a timeline or active
development on this issue then there would be a higher chance that people
wouldn't be leaving comments every few years asking for updates on this
project.
I totally understand why you don't like off-topic comments, but at the end
of the day there is a reason why they are being posted.
Just a reminder that the last on-topic comment, before the spew of
off-topic ones was back in 2019. I think this definitely qualifies for
being over a year.
—
Reply to this email directly, view it on GitHub
https://github.com/thundernest/k-9/issues/942#issuecomment-1647894435,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2EIALVT3YVQWROQQCQ2TBDXRZYZRANCNFSM4BWK625A
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

It has been another year with no developments on this issue. Is it still being worked on?

The first beta for Thunderbird for Android has now been released. I guess this issue is classified as an incompatibility between the Android and desktop software. Is it possible to have any updates on this issue and potentially even a fix.

Hey @mrmelon54, you mentioned above you might try your hand at a pull request. Did you make any progress? Is the Thunderbird for Android a rebranding of K-9? Or a totally new client?

@46cv8 I have unfortunately been too busy to even think about attempting a PR.
This is a little off-topic for this discussion
As mentioned in the April 2024 official blog post, the two apps share the same source code and will provide both branded apps.


Swipe to next/previous tab

It would be cool to be able to switch to the next or previous tab by swiping on the address bar. This is a common feature implemented in other browsers like Chrome or Firefox.

Thanks for reaching us. We are currently only accepting Github Issues for bug reports.
Please, use discussions to share feature requests. Only bug reports are expected to be accepted as issues. Thanks.
Contributing guidelines


Error when run python setup.py develop[pytorch1.0]

src/deform_conv_cuda_kernel.cu(258): error: no suitable constructor exists to convert from "c10::ScalarType" to "at::Type"

src/deform_conv_cuda_kernel.cu(352): error: no suitable constructor exists to convert from "c10::ScalarType" to "at::Type"

src/deform_conv_cuda_kernel.cu(450): error: no suitable constructor exists to convert from "c10::ScalarType" to "at::Type"

src/deform_conv_cuda_kernel.cu(780): error: no suitable constructor exists to convert from "c10::ScalarType" to "at::Type"

src/deform_conv_cuda_kernel.cu(812): error: no suitable constructor exists to convert from "c10::ScalarType" to "at::Type"

src/deform_conv_cuda_kernel.cu(845): error: no suitable constructor exists to convert from "c10::ScalarType" to "at::Type"

6 errors detected in the compilation of "/tmp/tmpxft_000126d0_00000000-6_deform_conv_cuda_kernel.cpp1.ii".
error: command '/home/work/cuda-9.0/bin/nvcc' failed with exit status 1

I encounter the same problem,and my env is :

pytorch 1.0

cuda 9.0

gcc 5.4.6

ubuntu 16.04

Do you have several cuda environments?
Try to set CUDA_HOME before the compilation.

Do you have several cuda environments?
Try to set CUDA_HOME before the compilation.

thank you for your suggestion,I have only one cuda 9.0.
And then I tried what you said but failed.

It seems that this error is from the incorrect cuda version.

modify the following paths before compiling:
CUDA_HOME=/usr/local/cuda-10.0 CUDNN_INCLUDE_DIR=/usr/local/cuda-10.0/include CUDNN_LIB_DIR=/usr/local/cuda-10.0/lib64 python setup.py build develop
related issues, but it seems this is not your case: https://github.com/open-mmlab/mmdetection/issues/1174
may try to resinstall pytorch or use a higher cuda version.

It seems that this error is from the incorrect cuda version.

modify the following paths before compiling:
CUDA_HOME=/usr/local/cuda-10.0 CUDNN_INCLUDE_DIR=/usr/local/cuda-10.0/include CUDNN_LIB_DIR=/usr/local/cuda-10.0/lib64 python setup.py build develop
related issues, but it seems this is not your case: open-mmlab/mmdetection#1174
may try to resinstall pytorch or use a higher cuda version.

Thank you for your answer. But I have no sudo. And my early code is based CUDA-9.0. I want to run your code together with mine. Thanks anyway.

I also failed to complie on Pytorch 1.0, but Pytorch 1.1 can compile the code with CUDA 10.0.

@yhjo09 Thanks
It seems the complication of dcn package needs pytorch1.1.
We have updated the readme file.

I had pytorch 1.1.0 and upgrading to 1.2 solved the issue


Implement #batch_query methods (fix #53)

Implement Database#batch_query
Implement Database#batch_query_ary, #batch_query_single_column
Change Database#batch_execute to not take a block
Change Query#batch_execute to not take a block
Implement Query#batch_query_xxx methods

Fixes #53 .


Implement Lenses: City Range / District Range

This could probably be an idea for yet another lense. What do you think of a lense specifically for city and district ranges. As everybody knows cities have a 3-tile limit, which were conveniently shown in multiple Civ V mods, I kind of always liked that. Could easily be integrated into the settler lense, I already dislike the overloaded one in vanilla though, way too much red for my liking..
Certain districts, or rather buildings within them, have a maximum range, e.g. industry, entertainment etc.
This is not displayed at all and adjusting an already available district-placement lense in regards to that would make it a lot more convenient to plan with I recon.
Any opinions on that?

I think it should be implemented as a new LensLayer
I've just finished investigating how UILenses can be modified and the results are promising! You can't add new enumerations to LensLayers, but you CAN just use arbitrary ints. UILens.ToggleLayerOn will accept anything and it's not just silently rejected either. Then, all you need to do is attach handlers to the Events.LensLayerOn / Events.LensLayerOff events to implement your custom behavior (see OnLensLayerOn function in MinimapPanel.lua for an example handler).
Knowing this, it should be very simple to implement a new LensLayer for district ranges. From the looks of it, SetLayerHexesArea will do the trick. Example: UILens.SetLayerHexesArea(LensLayers.HEX_COLORING_PLACEMENT, player, unitPlots); (from WorldInput.lua)

Thanks. I'm on it, seems fun.

I've been trying to get lenses to work all day and I've been having no success. Any success on your end?

Yeah, not really. The actual lense seems to be activated by UILens.SetActive('WaterAvailability'), which is still a  puzzle to me. It's only used in this one class. So I guess we'd need access or information about the UILens class, maybe?
I guess we could correctly set the layers via UILens.SetLayerHexesColoredArea all day, but without knowing more about SetActive I don't think we'd get much further.

Here's the results of a quick parse of the luas, maybe it will prove useful?
MinimapPanel.lua:171:           UILens.SetActive("Religion");
MinimapPanel.lua:184:           UILens.SetActive("Continent");
MinimapPanel.lua:197:           UILens.SetActive("Appeal");
MinimapPanel.lua:210:           UILens.SetActive("WaterAvailability");
MinimapPanel.lua:223:           UILens.SetActive("Government");
MinimapPanel.lua:236:           UILens.SetActive("OwningCiv");
MinimapPanel.lua:249:           UILens.SetActive("Tourism");
MinimapPanel.lua:365:           UILens.SetActive("Continent");
StrategicView_MapPlacement.lua:81:      UILens.SetActive("DistrictPlacement");  -- turn on all district layers and district
adjacency bonus layers
StrategicView_MapPlacement.lua:293:     UILens.SetActive("DistrictPlacement");  -- turn on all district layers and district
adjacency bonus layers
WorldInput.lua:622:     UILens.SetActive("Default");
WorldInput.lua:641:     UILens.SetActive("Default");
WorldInput.lua:699:             UILens.SetActive("Default");
WorldInput.lua:746:                                     UILens.SetActive(lensNameBase);
WorldInput.lua:825:                             UILens.SetActive(lensNameBase);
WorldInput.lua:902:                                     UILens.SetActive("MovementBad");
WorldInput.lua:1086:    UILens.SetActive("CityManagement");
WorldInput.lua:1092:    UILens.SetActive("Default");
WorldInput.lua:2429:    UILens.SetActive("Default");
WorldInput.lua:2449:    UILens.SetActive("Default");
WorldInput.lua:2455:    UILens.SetActive("Default");
WorldInput.lua:2681:    UILens.SetActive("Default");
WorldInput.lua:2743:            UILens.SetActive("Default");
Choosers\TradeRouteChooser.lua:657:             UILens.SetActive("Default");
Choosers\TradeRouteChooser.lua:673:     UILens.SetActive("TradeRoute");
FrontEnd\LoadScreen.lua:60:             UILens.SetActive("Default");
Panels\UnitPanel.lua:2342:      UILens.SetActive("Default");
Panels\UnitPanel.lua:2450:      UILens.SetActive("Default");
PartialScreens\WorldRankings.lua:1178:          UILens.SetActive("Default");
PartialScreens\WorldRankings.lua:1198:          UILens.SetActive("TourismWithUnits");
WorldView\SelectedUnit.lua:159:                 UILens.SetActive("Default");
WorldView\SelectedUnit.lua:299: UILens.SetActive("Default");
WorldView\SelectedUnit.lua:338: UILens.SetActive("Default");

@jacks0nX It seems this issue has stagnated for now. Would you like to be unassigned for now?

Yep, I agree.

I would love to see a new lens that combined a city and district planner. I use the new map pins to plan districts, but I rarely need to see them so they just end up getting in the way. A lens to let you mark tiles (without using pins, or have them hide with the lens) and see the AoE radius for districts that have buildings with them. Wonders too!

I can look into that for my mod. I have been looking into the code trying to get the AoE radius. After some string searching in base code I found two things:
GameInfo.Buildings[buildingHash].RegionalRange   -- Here the building is a district building, ex factory
-- and
pDistrict:GetExtraRegionalRange(); -- The relevant district

I don't know how I will display two buildings in a district that have different ranges, but I can display the AoE for district when the mouse hovers above the relevant district. I have being doing something similar for the settler lens, where on mouse hover it shows a border of radius 3, similar to EUI in CIV V

Pretty much fully implemented and not something I'd like to direct further focus toward currently, closing issue


Cannot read property 'length' of undefined

when using the cli on  lenovo laptop, it gives the following error
Cannot read property 'length' of undefined
on this file
battery-level/index.js:24
res = res.percentage.slice(0, res.percentage.length);

@Lujaw, what OS are you on?

@Lujaw could you try again after 1.3.0?

Going to close this due to inactivity.


Is this project abandoned?

Hi folks! As I see there isn't any activity in repository for the whole four years.
Is this project closed or moved to another git-like CVS or it's just abandoned?

The author mentioned once that he is done with the project and won't do anything else. That's why I created a fork you might be interested in. It's not actively maintained by me, but I do at least update dependencies and check and merge pull requests, so if you find a bug and have a fix for it, share it with the community :)
https://github.com/go-sqlx/sqlx
Hope that helps you :)

@dtrzepala @TheBotlyNoob @gmdias727 @yudintsevegor @Relvox @lcs86-dev @roger-russel @hirasawayuki @BruAPAHE @guitarpawat @fschuermeyer might also be interested in that 🙂

in #878 I also mentioned the post: https://www.reddit.com/r/golang/comments/l43wn7/comment/gkm42xz/?utm_source=share&utm_medium=web2x&context=3

The author mentioned once that he is done with the project and won't do anything else. That's why I created a fork you might be interested in. It's not actively maintained by me, but I do at least update dependencies and check and merge pull requests, so if you find a bug and have a fix for it, share it with the community :)
https://github.com/go-sqlx/sqlx
Hope that helps you :)

good job!

Hello! Sorry for the delay in replying. @ardan-bkennedy and I recently stepped in to help maintain the project.
We are in the process of triaging all the opened PRs and then issues, and we plan to address outstanding issues and upgrade the library to support generics and new Go versions, among other things.

@dlsniper sounds good :)
But what I would like to suggest, is still moving the upcoming development to our fork go-sqlx because it's more convenience for people to see a project in a GitHub organization instead of a user (no offense).
If you are interested in that, I would invite you to join the organization and even transfer it after some time to you, when I'm convinced updates are continuously merged and it's not just a phase 🙂

Ok, works for me 🙂

@dlsniper is this work taking place on the update-dependencies branch?


Add support for tests in livekit-rtc, fix linter warnings

I pulled this out of #276 so we can start adding tests to the rtc package.  To verify it works, I also wrote some tests for Mutex and even found a bug (I think) with multi locking (not that we use it).
While I was here I addressed all of the linter warnings, although some of the server stuff with explicit anys I decided to just ignore rather than try to reason about...

@nbsp updated - lmk if this is what you had in mind

yep, awesome. feel free to merge


Issue with dphys-swapfile.service

@rootzoll  @openoms I just ran an apt upgrade on my test node and the process failed:
admin@raspiblitz~ $ sudo apt full-upgrade -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  lxplug-volume
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up dphys-swapfile (20100506-5+rpt2) ...
Job for dphys-swapfile.service failed because the control process exited with error code.
See "systemctl status dphys-swapfile.service" and "journalctl -xe" for details.
invoke-rc.d: initscript dphys-swapfile, action "restart" failed.
● dphys-swapfile.service - dphys-swapfile - set up, mount/unmount, and delete a swap file
   Loaded: loaded (/lib/systemd/system/dphys-swapfile.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2021-04-02 11:29:39 BST; 2s ago
     Docs: man:dphys-swapfile(8)
  Process: 14865 ExecStart=/sbin/dphys-swapfile setup (code=exited, status=137)
 Main PID: 14865 (code=exited, status=137)

Apr 02 11:29:08 tthm3 systemd[1]: Starting dphys-swapfile - set up, mount/unmount, and delete a swap file...
Apr 02 11:29:39 tthm3 dphys-swapfile[14865]: computing size, want /mnt/hdd/swapfile=1870MByteKilled
Apr 02 11:29:39 tthm3 systemd[1]: dphys-swapfile.service: Main process exited, code=exited, status=137/n/a
Apr 02 11:29:39 tthm3 systemd[1]: dphys-swapfile.service: Failed with result 'exit-code'.
Apr 02 11:29:39 tthm3 systemd[1]: Failed to start dphys-swapfile - set up, mount/unmount, and delete a swap file.
dpkg: error processing package dphys-swapfile (--configure):
 installed dphys-swapfile package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 dphys-swapfile
E: Sub-process /usr/bin/dpkg returned an error code (1)

I found this post and the "solution" (systemctl disable dphys-swapfile) worked - although I'm not sure yet of the consequences:
https://github.com/nextcloud/nextcloudpi/issues/1219.
Have also seen/fixed this already?!

Is this with the 1.7 RC1 ?
I have done apt upgrades on the 64bit base image previously had no issues.

No.. this is still on 1.6.3. It's fine with me to close this here.. If anybody runs into it then this either solves it or the issue can be reopened.


Added support for Setup.exe to use same mirror and cache dir as apt-cyg

Mirror and Cache dirs are passed with -s and -l command line switches.
This works great for me. If it doesn't work for you, check permissions on cache folder.

Thank you for sending a patch.
Currently apt-cyg on my fork uses own settings for cache and mirror, because the original apt-cyg has been implimented as such way.
But I think that the best way for apt-cyg is to share settings of setup.exe.
Maybe I can take 3 choices.

apt-cyg uses own setting, that is independent from setup.exe. (current state)
setup.exe uses settings of apt-cyg. (your patch)
apt-cyg uses settings of setup.exe. (my suggestion)

Is the second way the best for you?
Will you cause some inconvenience, if I take the third way?

Hi,
The problem I had was that it polluted my downloads folder.
I couldn't find any way to change the location of cache for the setup.exe other than the command line do that's what I went with.
Using setup.exe's settings in apt-cyg is probably better in that it reduces the risk of setup.exe failing due to insufficient permissions to the cache.
However is there any way to configure setup.exe's settings?
Regards

On 1 Nov 2016, at 11:54, kou1okada<EMAIL_ADDRESS>wrote:
Thank you for sending a patch.
Currently apt-cyg on my fork uses own settings for cache and mirror, because the original apt-cyg has been implimented as such way.
But I think that the best way for apt-cyg is to share settings of setup.exe.
Maybe I can take 3 choices.

apt-cyg uses own setting, that is independent from setup.exe. (current state)
setup.exe uses settings of apt-cyg. (your patch)
apt-cyg uses settings of setup.exe. (my suggestion)

Is the second way the best for you?
Will you cause some inconvenience, if I take the third way?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Settings of setup.exe are stored in /etc/setup/setup.rc.
The standard way to change the cache directory is not so difficult.
All you need to do is choose a folder on Cygwin Setup - Select Local Package Directory dialog of setup.exe. It is GUI operation.
This makes same effects with -l option of setup.exe.
And these settings will be written into /etc/setup/setup.rc and be permanently.
This means that is enough to change settings, you use --use-own-conf option only once.
Of course you can also rewrite /etc/setup/setup.rc with a text editor directly.

I see. Having apt-cyg use /etc/setup/setup.rc would be fine then.
Are you thinking about making this the default behavior?


The "path" argument must be of type string or an instance of URL. Received undefined

System Info
"@xenova/transformers": "^2.17.2"
Electron (Obsidian.md)
Environment/Platform

[ ] Website/web-app
[ ] Browser extension
[ ] Server-side (e.g., Node.js, Deno, Bun)
[X] Desktop app (e.g., Electron)
[ ] Other (e.g., VSCode extension)

Description
I am trying to build an obsidian.md plugin, where I want to load a local model (or hosted on huggingface is fine too) using transformer.js. I went through several issues.

Current obsidian.md plugin template uses ES2018, but transformer.js need at least ES2020 due to BigInt. I believe I solved that by changing the target build.
After changing the target, the error changed to The "path" argument must be of type string or an instance of URL. Received undefined.

Not sure if its a pure transformer.js or it is caused something by changing the target build.
Code in question:
[main.ts]

import { pipeline } from '@xenova/transformers';

export default class MyPlugin extends Plugin {
   ...

   const classifier = await pipeline('sentiment-analysis');       // Error starts here
   const output = await classifier('I love transformers!');

   ...
}

I also tried other pipeline value like below, but the error is still the same:
const extractor = await pipeline('feature-extraction', 'Xenova/bert-base-uncased', { revision: 'default' });
const output = await extractor('This is a simple test.');

Reproduction

git clone https://github.com/obsidianmd/obsidian-sample-plugin.git
add const classifier = await pipeline('sentiment-analysis'); const output = await classifier('I love transformers!'); in MyPlugin class.

import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting, WorkspaceLeaf } from 'obsidian';
import { ExampleView, VIEW_TYPE_EXAMPLE } from "./view";
import { pipeline } from '@xenova/transformers';

// Remember to rename these classes and interfaces!

interface MyPluginSettings {
	mySetting: string;
}

const DEFAULT_SETTINGS: MyPluginSettings = {
	mySetting: 'default'
}

export default class MyPlugin extends Plugin {
	settings: MyPluginSettings;

	async onload() {

		console.log("foo asd")

		const classifier = await pipeline('sentiment-analysis');
		const output = await classifier('I love transformers!');

		console.log("output")
		console.log(output)

		this.registerView(
      VIEW_TYPE_EXAMPLE,
      (leaf) => new ExampleView(leaf)
    );

		await this.loadSettings();

		// This creates an icon in the left ribbon.
		const ribbonIconEl = this.addRibbonIcon('dice', 'Sample Plugin', (evt: MouseEvent) => {
			// Called when the user clicks the icon.
			new Notice('This is a notice!');
		});

		this.addRibbonIcon("brain", "Open Plugin", () => {
      this.activateView();
    });

		// Perform additional things with the ribbon
		ribbonIconEl.addClass('my-plugin-ribbon-class');

		// This adds a status bar item to the bottom of the app. Does not work on mobile apps.
		const statusBarItemEl = this.addStatusBarItem();
		statusBarItemEl.setText('Status Bar Text');

		// This adds a simple command that can be triggered anywhere
		this.addCommand({
			id: 'open-sample-modal-simple',
			name: 'Open sample modal (simple)',
			callback: () => {
				new SampleModal(this.app).open();
			}
		});
		// This adds an editor command that can perform some operation on the current editor instance
		this.addCommand({
			id: 'sample-editor-command',
			name: 'Sample editor command',
			editorCallback: (editor: Editor, view: MarkdownView) => {
				console.log(editor.getSelection());
				editor.replaceSelection('Sample Editor Command');
			}
		});
		// This adds a complex command that can check whether the current state of the app allows execution of the command
		this.addCommand({
			id: 'open-sample-modal-complex',
			name: 'Open sample modal (complex)',
			checkCallback: (checking: boolean) => {
				// Conditions to check
				const markdownView = this.app.workspace.getActiveViewOfType(MarkdownView);
				if (markdownView) {
					// If checking is true, we're simply "checking" if the command can be run.
					// If checking is false, then we want to actually perform the operation.
					if (!checking) {
						new SampleModal(this.app).open();
					}

					// This command will only show up in Command Palette when the check function returns true
					return true;
				}
			}
		});

		// This adds a settings tab so the user can configure various aspects of the plugin
		this.addSettingTab(new SampleSettingTab(this.app, this));

		// If the plugin hooks up any global DOM events (on parts of the app that doesn't belong to this plugin)
		// Using this function will automatically remove the event listener when this plugin is disabled.
		this.registerDomEvent(document, 'click', (evt: MouseEvent) => {
			console.log('click', evt);
		});

		// When registering intervals, this function will automatically clear the interval when the plugin is disabled.
		this.registerInterval(window.setInterval(() => console.log('setInterval'), 5 * 60 * 1000));
	}

	async activateView() {
    const { workspace } = this.app;

    let leaf: WorkspaceLeaf | null = null;
    const leaves = workspace.getLeavesOfType(VIEW_TYPE_EXAMPLE);

    if (leaves.length > 0) {
      // A leaf with our view already exists, use that
      leaf = leaves[0];
    } else {
      // Our view could not be found in the workspace, create a new leaf
      // in the right sidebar for it
      leaf = workspace.getRightLeaf(false);
      await leaf!.setViewState({ type: VIEW_TYPE_EXAMPLE, active: true });
    }

    // "Reveal" the leaf in case it is in a collapsed sidebar
    workspace.revealLeaf(leaf!);
  }

	onunload() {
		console.log("onunload")

	}

	async loadSettings() {
		this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
	}

	async saveSettings() {
		await this.saveData(this.settings);
	}
}

class SampleModal extends Modal {
	constructor(app: App) {
		super(app);
	}

	onOpen() {
		const {contentEl} = this;
		contentEl.setText('Woah!');
	}

	onClose() {
		const {contentEl} = this;
		contentEl.empty();
	}
}

class SampleSettingTab extends PluginSettingTab {
	plugin: MyPlugin;

	constructor(app: App, plugin: MyPlugin) {
		super(app, plugin);
		this.plugin = plugin;
	}

	display(): void {
		const {containerEl} = this;

		containerEl.empty();

		new Setting(containerEl)
			.setName('Setting #1')
			.setDesc('It\'s a secret')
			.addText(text => text
				.setPlaceholder('Enter your secret')
				.setValue(this.plugin.settings.mySetting)
				.onChange(async (value) => {
					this.plugin.settings.mySetting = value;
					await this.plugin.saveSettings();
				}));
	}
}

I have pinpoint the problem to esbuild. This line of code is the issue
@xenova/transformers/src/env.js

const __dirname = RUNNING_LOCALLY
    ? path.dirname(path.dirname(url.fileURLToPath(import.meta.url)))
    : './';

the current esbuild config change import.meta.url into import_meta.url. However, this was fixed by changing some setting as per this github discussion.
https://github.com/evanw/esbuild/commit/ac97be74c3b5453740f84fc40098ccae95cde19f

...

    The `import.meta` syntax is now passed through unmodified when the target is `es2020` or newer and the output format is `esm`. This lets you use features such as `import.meta.url` in those situations.

This worked and it doesn't change the variable anymore. However, since I changed the output format, I come across a new error, which prevents me from using import and require me to use required() when importing a module. So far, only transformers/src/env.js amd transformers/src/utils/hub.js used import, so I change them manually in the output dir (not ideal, but I just want to see if it would work). It did work, but now I ran into another issue and have this error Cannot use 'import.meta' outside a module. This is where I am still stuck.

Please refer https://github.com/microsoft/onnxruntime/pull/20165#issuecomment-2311564377. More discussion there is welcome. Thanks!


Allow customizing the underlying intrinsic element

FlexView uses div as a default for the underlying component.
This PR allows changing the default to another intrinsic component. For example:
<FlexView />
<FlexView component="form" />

will render
<div ... />
<form ... />

@giogonzo done, now we get refined types for stuff like
<FlexView
  onClick={
    e => // the type of 'e' is 'React.MouseEvent<React.ElementType<"div">, MouseEvent>'
  }
/>

<FlexView
  component='form'
  onClick={
    e => // the type of 'e' is 'React.MouseEvent<React.ElementType<"form">, MouseEvent>'
  }
/>

The only downside is that while doing so I've hit a
Expression produces a union type that is too complex to represent.

which I've promptly ts-ignored :P

@gabro ouch! Should be fine though (i.e. not have TS perf impacts on projects using the lib?)

I've tried using this from the tests and it seems fine (aka ts server is responsive)


Sending JPEG 2000 compressed images fails

Traceback:

Traceback (most recent call last):
File "storescu.py", line 136, in
status = assoc.send_c_store(dataset)
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pynetdicom-0.9.0-py3.5.egg\pynetdicom\association.py", line 688, in send_c_st
ore
dataset = correct_ambiguous_vr(dataset, transfer_syntax)
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pynetdicom-0.9.0-py3.5.egg\pynetdicom\utils.py", line 43, in correct_ambiguou
s_vr
for elem in dataset:
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pydicom\dataset.py", line 367, in iter
yield self[tag]
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pydicom\dataset.py", line 319, in getitem
self[tag].value = self.pixel_array
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pydicom\dataset.py", line 514, in pixel_array
return self._get_pixel_array()
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pydicom\dataset.py", line 507, in _get_pixel_array
self._pixel_array = self._pixel_data_numpy()
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pydicom\dataset.py", line 397, in _pixel_data_numpy
raise NotImplementedError("Pixel Data is compressed in a format pydicom does not yet handle. Cannot return array. Pydicom might be abl
e to convert the pixel data using GDCM if it is installed.")
NotImplementedError: Pixel Data is compressed in a format pydicom does not yet handle. Cannot return array. Pydicom might be able to conve
rt the pixel data using GDCM if it is installed.

Reading the file via pydicom works fine. Is there a quick solution? I just want to send the images as I get them.

This seems to be related to my poor attempt at determining ambgiuous VR when using Implicit VR. The quickest option may be to simply try using one of the explicit VR transfer syntaxes (-xe or -xb in storescu.py), but I'm not having any luck finding a suitable dataset to test this suggestion with.
It'd help a lot if you could attach an anonymised file for me to test with. In the meantime I've added a workaround if you want to test that.

Thanks for your help. I'll test the workaround and let you know.
Here are some test images. If you need more, let me know!
https://dl.0x05.de/E0014540.ZIP

Thanks for the files, they helped a lot. The AttributeError from the missing 'keyword' is because you're not using the most recent update to pydicom that added it (https://github.com/darcymason/pydicom/commit/3d12f8df987ca57c3581d80ef24cd30a141ffef8). This should hopefully also address the original exception that you had as I can't reproduce that on my end.
However, because the dataset's transfer syntax is JPEG2000LosslessOnly and pydicom can't handle compressed pixel data, when pydicom is used to encode the dataset (during Association.send_c_store) in the correct transfer syntax as negotiated during association,  it fails when it tries to encode the pixel data. Testing bears this out as the dataset will send fine up until the PixelData which doesn't get converted. Unfortunately this isn't something I can fix, except by notifying the user that sending compressed images isn't supported.
I'd suggest using DCMTK's dcmdjpeg to decompress the datasets before sending (if you're using python then the subprocess module can be used to call it). Alternatively if you have control over the SCP as well you could try DCMTK's storescu with -xv and storescp with +xv.
Sorry I can't be of further help.

Thanks four your help!
I mixed up pydicom with pynetdicom while installing the new version sorry.
I'm using the scp from pynetdicom to get the images. Generally my workflow should be like that:
Sender -> Receiver -> Database lookup for correct patient informations -> corrections -> send to another destination.
I'll give DCMTK a shot for conversion. Thank you!

I think that now, all images get set as unsupported compressed images. Maybe im wrong but I get this:

$ py -3 storescu.py localhost 105 "C:\prog\PyDicomServer\testing\images\E0014544\I0410689.dcm"
W: Unable to send the dataset due to pydicom not supporting compressed datasets
E: Sending file failed

Here is the image I tried: https://dl.0x05.de/I0410689.zip

Yeah, I had the test for uncompressed syntax backwards. It should be fixed in the dev branch now.
The Transfer Syntax for that dataset is 1.2.840.10<IP_ADDRESS>.90 which is 'JPEG 2000 Image Compression (Lossless Only)' which is also a compressed syntax. Not only that, but it looks like that syntax isn't supported by dcmdjpeg either unfortunately.
Datasets with the following transfer syntaxes are supported by storescp.py and storescu.py:
1.2.840.10008.1.2            Implicit VR Little Endian
1.2.840.10<IP_ADDRESS>          Explicit VR Little Endian
1.2.840.10<IP_ADDRESS>.99       Deflated Explicit VR Little Endian
1.2.840.10<IP_ADDRESS>          Explicit VR Big Endian

Thanks for the offer, I'm a bit busy with other stuff at the moment but if I need someone to help test I'll let you know.

It'f fixed, thank you!
Luckily the JPEG compressed images are rare. I just catch it as exception and everything is good.
Thank you very much for your help!


Multithreading

I integrated the scheduler from SIGMOD 2018 contest code into hustle. To make it easier for me, I also renamed most of the libraries so they match their path in the hustle project (e.g. the hustle_src_operators library is in hustle/src/operators). I think it would be a good idea to follow this convention when naming libraries.

Select operator is multithreaded. This required a few changes to the operator API:

Added a function that creates a Task that to execute the operator
Added query id variable
Running an operator does not return an OperatorResult. now, you must call a separate function finish() to retrieve the result after running the operator.

To execute an operator (or any job we might want to do), we create a Task (which is essentially a lambda expression) and add it to the scheduler. Tasks must implement an execute() function which can spawn additional Tasks. The scheduler simply calls the parent Tasks's execute().

Pseudocode for the multithreaded select operator execution:

Initialize scheduler;
initialize select_op;

// create a lambda expression that calls select_op->execute(
select_task = select_op.createTask()
scheduler.addTask(select_task)

scheduler.start()
scheduler.join()

result = select_op.finish();

The circleci build is getting a segfault on the resolver test, and I cannot reproduce this error locally. Still looking into this. Our lord and savior Yannis fixed this. Thanks!
I renamed the utility directory from the SIGMOD contest code to utility2 to avoid an include conflict in the parser. This is just a quick fix.
I added a third party installation script in the third_party directory to grab gflags and glog, but for now, we still build from the gflags and glog directories in this repository.

For the gflags and glog code, can we bring this in as a third-party library, so not copy the code over? This will make it easier to navigate our code.
See this for an example.

For the gflags and glog code, can we bring this in as a third-party library, so we do not copy the code over? This will make it easier to navigate our code and keep our repo small.
See this for an example.

I added install_third_party.sh in the third_party directory to grab gflags and glog from GitHub, but I was not able to get Hustle to build. I will leave the gflags and glog directories in the repository for now, but once I figure out the changes that need to be made to the cmake files, I'll get rid of them.

The resolver tests that failed on circleci have been disabled. Did you use/modified the resolver?

The resolver tests that failed on circleci have been disabled. Did you use/modified the resolver?

You mean that the resolver tests will always pass now, correct? I did not change anything in the resolver; it should be the same as it was in the previous PR.

The resolver tests that failed on circleci have been disabled. Did you use/modified the resolver?

You mean that the resolver tests will always pass now, correct? I did not change anything in the resolver; it should be the same as it was in the previous PR.

Yes hopefully :) I did not disable them completely just the serialization part to json. That seemed to be the problem.
I assumed that your changes would not affect the resolver, just checking :)


Update Rinkeby contract addresses

Deployed the new CTC and SCC contracts
Added the script for the regenesis

Codecov Report

Merging #447 (bc4ac68) into develop (9cc1623) will increase coverage by 13.56%.
The diff coverage is n/a.

:exclamation: Current head bc4ac68 differs from pull request most recent head b3a8566. Consider uploading reports for the commit b3a8566 to get more accurate results

@@             Coverage Diff              @@
##           develop     #447       +/-   ##
============================================
+ Coverage    73.61%   87.18%   +13.56%
============================================
  Files           59       34       -25
  Lines         1789     1116      -673
  Branches       272      160      -112
============================================
- Hits          1317      973      -344
+ Misses         472      143      -329

Flag
Coverage Δ

contracts
87.18% <ø> (ø)

core-utils
?

data-transport-layer
?

message-relayer
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

packages/core-utils/src/alias.ts

packages/core-utils/src/provider.ts

packages/core-utils/src/coders/index.ts

packages/core-utils/src/index.ts

packages/core-utils/src/batches.ts

...ices/l1-ingestion/handlers/state-batch-appended.ts

...kages/data-transport-layer/src/utils/validation.ts

packages/data-transport-layer/src/utils/common.ts

packages/data-transport-layer/src/utils/index.ts

packages/core-utils/src/common/test-utils.ts

... and 15 more

Continue to review full report at Codecov.

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

moved to /bobanetwork