Initial API spec for managed Cassandra project in CosmosDB

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[x] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet. March 1, 2021
When you expect to publish swagger? Please provide date, or month to public if date is not available yet. ASAP
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[x] SDK of .NET (need service team to ensure code readiness)
[X] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[x] PowerShell
[X] CLI
[ ] Terraform
[ ] No, no need to refresh for updates in this PR

Contribution checklist:

[X] I commit to follow the Breaking Change Policy of "no breaking changes"
[X] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[X] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[X] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[x] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

Most of this was reviewed in the private repo (https://github.com/Azure/azure-rest-api-specs-pr/pull/2016/files) in the commit "Initial Swagger API for CosmosDB's Project Nova". The rest of the commit, all of which are small, were added since and need new review by ARM.

@frrossms  For LintDiff,  it's because the below model's type can't be an array
https://github.com/Azure/azure-rest-api-specs/blob/87bb2c506645ec393703daa831eab3aca97a56f3/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2020-06-01-preview/nova.json#L919-L921

as per the breaking change policy - aka.ms/bcforapi, new apis require a new service/api version

A general comment for overall PR is on the quality descriptions. These descriptions are the first thing that appears on a bing search.  Let us make them more formal and elaborate.

tag: package-2020-09

Please make the default apiVersion as 06-01-preview in all other readme's as well. With this change the SDK  PRs created would be generating SDK corresponding to your changes, you can review those sdks to see how your swagger changes are translating to code.

Refers to: specification/cosmos-db/resource-manager/readme.md:30 in 97729a0. [](commit_id = 97729a0d1faf248e181b1edbeb3d0a72f00b9fce, deletion_comment = False)

/azp run

@frrossms Is your change of the API almost done? Since you had force-push, I don't know how many changes you make after ARM sign off. I would re-request ARM review after almost your change is done.
@PhoenixHe-msft @qiaozha Could you take a look at JS error? It seems a script bug.

@frrossms
We found that the description in restorable.json exist a problem of "*/",It will be recognized as a comment symbol so that sdk package can not be run build,there are other five place has same problem in this restorable.json

@ChenTanyi I always force push, since I'm doing rebase -i to keep the commits clean. The changes are basically all getting the checks to pass.
@colawwj Thanks. The existing cosmos-db swagger seems pretty messed up. I'll go try to fix that.

@colawwj The */ is part of a specific string describing a permission users have to set for an API, so it can't be changed. This is a bug in the SDK generation script.

@frrossms
We found that the description in restorable.json exist a problem of "*/",It will be recognized as a comment symbol so that JS sdk package can not be run build,there are other five place has same problem in this restorable.json

@kavskalyan can you please have a look.

@frrossms
We found that the description in restorable.json exist a problem of "*/",It will be recognized as a comment symbol so that JS sdk package can not be run build,there are other five place has same problem in this restorable.json

@kavskalyan can you please have a look.

if we can't fix the sdk generator, feel free to remove the "permission" string for now

I tried removing the */ sequences from restorable.json. It does not fix the JavaScript SDK generation. No motion on the filed incident: https://portal.microsofticm.com/imp/v3/incidents/details/229231273/home
How do I override this check?

Can you please merge this change: https://github.com/Azure/azure-rest-api-specs/pull/13027

I tried removing the */ sequences from restorable.json. It does not fix the JavaScript SDK generation. No motion on the filed incident: https://portal.microsofticm.com/imp/v3/incidents/details/229231273/home
How do I override this check?

@colawwj @qiaozha @PhoenixHe-msft Could you take a look?

The last commit did not work for fetch node status.

Can you please merge this change: #13027

@frrossms can you please add this change as well.

@ChenTanyi Everything is passing, except it says the ApiDocPreview is still running here, but if you look at the actual pipeline (https://dev.azure.com/azure-sdk//internal/_build/results?buildId=753900&view=logs&j=f06b4322-f7bf-57ee-ecc5-6d0feac67556) it says that it succeeded. So I think this is ready to go.
Would you please merge?

@ChenTanyi Okay, everything's passing and we're ready! (The ApiDocPreview pipeline is showing as ongoing here, but if you look at its actual details, it says it's done.) Can you please merge?

@frrossms After the ARM re-signoff, it could be merged. Please remove the DoNotMerge Label.
@mentat9 Could you review again from ARM side? The PR has changed a lot after you sign off. Thanks!

To help with reviewing this, there are two layers of changes. One is merging the last preview and GA versions into the new preview version. That should be adequately checked by the breaking change linting, I believe. The others are actual changes to our new endpoints since @mentat9 signed off. I have extracted those changes as a patch with git diff:
nova.patch.txt

@frrossms The diff looks good. But I saw you added another "nova.json". It may still need ARM to review.

If there's another nova.json, it's an accident and I need to delete it.

If I remove these fields, I'm breaking 2020-06-01-preview. If I add them, I'm breaking 2021-01-15. There is no way for me not to violate the breaking change policy at this point. Given that this is a new -preview release, keeping the fields is obviously the right thing to do.
There is no customer impact.


Add current order rate to show why we are not lending

Hey, all... I've made a change to modules/Lending.py to inform exactly what the current rate is as to why the bot is not lending.
This line:
log.log("Not lending {:s} due to rate below {:.4f}%".format(active_cur,(cur_min_daily_rate * 100)))
Changes to this:
log.log("Not lending {:s} due to rate of {:.6f}% below {:.4f}%".format(active_cur,(Decimal(orders['rates'][i]) * 100),(cur_min_daily_rate * 100)))
I made the current order rate 6 decimal places because when I made it 4 decimal places like the cur_min_daily_rate there was some overlap that made it hard to tell exactly why it wasn't lending.  Six decimal places seem to do the trick.
I am a complete GitHub newb so if you guys think its useful, please add to a future commit.  If not, I'll continue to add this line back in on my side if I need to make a pull on modules/Lending.py  👍

Example output:
2017-02-10 13:34:39 Not lending BTC due to rate of 0.019800% below 0.0238%
2017-02-10 13:29:26 Not lending BTC due to rate of 0.019600% below 0.0238%

definitely an improvement, I have an idea how to calculate the display precision dynamically. similar to how prettyPrint is implemented in the javascript. I'll give it a go. :)

Funny, I made almost the exact same change, but I added the amount not being lent.
2017-03-16 12:18:57 Not lending 9.36377915 DASH due to 0.1947% rate is below 0.1998%
2017-03-16 12:18:23 Not lending 9.36377915 DASH due to 0.1947% rate is below 0.1998%

this has been implemented


Model Evaluation Issues

Thanks for your contribution! How to test the trained models on RGBT210 and RGBT234? No relevant part was found in the code file.

same issue


Cannot get vnip working with nvim-compe

First of all, thank you very much for working on such a great plugin.
I recently switch to nvim-compe and loving it.
Currently, I am trying to get vsnip working with nvim-compe however  there's no luck so far.
I have browse the issue/document but looks like there's no hint lead to the success attempt.
Im definitely missing something here. Could you please point me to the right direction.
Below is my init.vim
filetype off
let mapleader = "," " remap leader to comma.

call plug#begin('~/.config/nvim/bundle')

""""""""""""""""""""
" nvim-lsp
""""""""""""""""""""
Plug 'hrsh7th/nvim-compe'
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/vim-vsnip'
Plug 'hrsh7th/vim-vsnip-integ'

call plug#end()

""""""""""""""""""""""""""""""""""""""""
" nvim-lspconfig
""""""""""""""""""""""""""""""""""""""""
lua << EOF
  local lspconfig = require('lspconfig')

  local on_attach = function(_, bufnr)
    vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
    local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end

    -- Mappings.
    local opts = { noremap=true, silent=true }
    buf_set_keymap('n', '<C-]>'    , '<cmd>lua vim.lsp.buf.definition()<CR>'            , opts)
    buf_set_keymap('n', 'gD'       , '<cmd>lua vim.lsp.buf.declaration()<CR>'           , opts)
    buf_set_keymap('n', 'gi'       , '<cmd>lua vim.lsp.buf.implementation()<CR>'        , opts)
    buf_set_keymap('n', 'gr'       , '<cmd>lua vim.lsp.buf.references()<CR>'            , opts)
    buf_set_keymap('n', 'gt'       , '<cmd>lua vim.lsp.buf.type_definition()<CR>'       , opts)
    buf_set_keymap('n', 'K'        , '<cmd>lua vim.lsp.buf.hover()<CR>'                 , opts)
  end

  local servers = {
    'jsonls',
    'rnix',
    'solargraph',
    'terraformls',
    'tsserver',
    'yamlls',
    'html',
    'dockerls',
  }

  for _, lsp in ipairs(servers) do
    lspconfig[lsp].setup {
      on_attach = on_attach,
    }
  end
EOF

""""""""""""""""""""""""""""""""""""""""
" nvim-compe
""""""""""""""""""""""""""""""""""""""""
set completeopt+=menu,menuone,noselect
inoremap <silent><expr> <C-Space> compe#complete()
inoremap <silent><expr> <C-y>     compe#confirm('<C-y>')
inoremap <silent><expr> <C-e>     compe#close('<C-e>')

lua << EOF
  require'compe'.setup({
    allow_prefix_unmatch = false;
    debug                = false;
    enabled              = true;
    min_length           = 1;
    preselect            = 'always';

    source = {
      buffer        = { enable = true };
      nvim_lsp      = { enable = true };
      path          = { enable = true };
      vsnip         = { enable = true };
    };
  });
EOF

What's exactly not working? I just tried those settings and everything seems to be working for me.
Select the snippet with <C-N>/<C-P> until it completes the line and press <C-Y>.
@hrsh7th I noticed something weird here, when preselect is on always, the completion item is selected on the popup menu visually, but it doesn't actually complete the line. Is it supposed to work that way?

I noticed something weird here, when preselect is on always, the completion item is selected on the popup menu visually, but it doesn't actually complete the line. Is it supposed to work that way?

Okay, I get it now, you're just supposed to press <CR> or <C-Y> and only then it completes the line. Never mind.

Hi @ii14
Thank you for your reply.

What's exactly not working? I just tried those settings and everything seems to be working for me.
I tried create a new test.rb file and only LSP and Buffer shown as the source of completion (Sorry for the bad screenshot color)

I just wonder if the text that I used does not trigger vsnip?

You should add snippetSupport for capabilities of all servers.
  local capabilities = vim.lsp.protocol.make_client_capabilities()
  capabilities.textDocument.completion.completionItem.snippetSupport = true
  require'lspconfig'.gopls.setup{
    capabilities = capabilities,
    on_attach = on_attach,
    init_options = {
      usePlaceholders = true,
    },
  }

It's not a completion from vsnip, but from the language server. Completions from vsnip will have a [Vsnip] tag.

I see. Thanks @ii14 and @hrsh7th.
Do you think it would be good to add it to README or wiki page?

I think it is good to mention in README.md with lspconfig.html.setup is good for example.


Conceive of Style Combinators

TestBlockingIO in BlockingIOTest.scala is an example for a custom style combinator.
It does not look especially nice.
Conceive of style combinators, then delete custom style combinators.
This should possibly be done within the scope of #22.

This is not needed any more, as in Opstyle, there is no need to combine styles any more, by design.


Update cognitive-services-container-support.md

Preparing release of Custom STT  disconnected container.
Please hold relaesing the change until January 1st, 2023.

Learn Build status updates of commit 8f3914d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/cognitive-services/cognitive-services-container-support.md
:white_check_mark:Succeeded

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

@goergenj,  - This pull request was opened in the public repo. PMs should work in the private repo, per the Microsoft Docs contributor guide. We can keep this PR open for review and and merge, but would you make future content updates in the private repo? Thank you!

@aahill,
Can you review the proposed changes?
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Hi @jborsecnik, apologies for this. Thanks for processing it anyway and pointing me to this for future updates.

#sign-off


Add build_essential resource from the build-essential cookbook

This cookbook is by far the most included community cookbook we have. It would be really great if people could just use the resource directly and avoid the extra dependency.
This has the following modifications from the cookbook:
Solaris 10 no longer warns since we don't support Solaris 10. We assume 11
Windows no longer includes the windows recipe. This really should not have been added since build-essential concept doesn't translate there
macOS xcode setup is done inline vs. including the xcode command line setup resource from build-essential cookbook. It's a single execute resource and this seemed pretty silly
Signed-off-by: Tim Smith<EMAIL_ADDRESS>

It would be a lot more moving pieces, but might want to look at https://github.com/poise/poise-build-essential/tree/master/lib/poise_build_essential/build_essential_providers too since it would be easier to include providers for only platforms we test in core and shunt the rest to a cookbook. At a minimum it would be nice to have some level of functional dispatch so a cookbook could monkey-patch in a new platform.


Fix bad sharding urls

Fixes some bad urls.

Closing in response to #19 bitly tracking.

This issue was moved to gamelocker/platform#7


Unknown certificate type

I'm using Azure virtual machine with only os disk. resty-auto-ssl failed to get the certificate. Checking the following error message for details. I used to run the same set up with Alicloud, everything was OK.
lua-resty-auto-ssl
   0.12.0-1 (installed) - /usr/lib64/luarocks/rocks

2018/02/24 10:57:31 [error] 1565#1565: *68 [lua] lets_encrypt.lua:41: issue_cert(): auto-ssl: dehydrated failed: env HOOK_SECRET=4d32f6f51deece2cf538251a59fa91eaa7b737db188cdfe293f8677ab2738803 HOOK_SERVER_PORT=8999 /usr/bin/resty-auto-ssl/dehydrated --cron --accept-terms --no-lock --domain liucai.kosun.rocks --challenge http-01 --config /etc/resty-auto-ssl/letsencrypt/config --hook /usr/bin/resty-auto-ssl/letsencrypt_hooks status: 256 out: # INFO: Using main config file /etc/resty-auto-ssl/letsencrypt/config
+ Generating account key...
+ Registering account key with ACME server...
Processing liucai.kosun.rocks
 + Signing domains...
 + Creating new directory /etc/resty-auto-ssl/letsencrypt/certs/liucai.kosun.rocks ...
 + Creating chain cache directory /etc/resty-auto-ssl/letsencrypt/chains
 + Generating private key...
 + Generating signing request...
 + Requesting authorization for liucai.kosun.rocks...
 + 1 pending challenge(s)
 + Deploying challenge tokens...
 + Responding to challenge for liucai.kosun.rocks authorization...
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Walking chain...
 err: ERROR: Unknown certificate type in chain
ERROR: Walking chain has failed, your certificate has been created and can be found at /etc/resty-auto-ssl/letsencrypt/certs/liucai.kosun.rocks/cert-1519441040.pem, the corresponding private key at privkey-1519441040.pem. If you want you can manually continue on creating and linking all necessary files. If this error occurs again you should manually generate the certificate chain and place it under /etc/resty-auto-ssl/letsencrypt/chains/4f06f81d.chain (see http://cert.int-x3.letsencrypt.org/)
, context: ssl_certificate_by_lua*, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443
2018/02/24 10:57:31 [error] 1565#1565: *68 [lua] ssl_certificate.lua:97: issue_cert(): auto-ssl: issuing new certificate failed: dehydrated failure, context: ssl_certificate_by_lua*, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443
2018/02/24 10:57:31 [error] 1565#1565: *68 [lua] ssl_certificate.lua:286: auto-ssl: could not get certificate for liucai.kosun.rocks - using fallback - failed to get or issue certificate, context: ssl_certificate_by_lua*, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443

Found this
https://community.letsencrypt.org/t/dehydrated-client-error-walking-chain-has-failed/45745
Tried the commands pasted in the reply
[www@liucai-web2 liucai.kosun.rocks]$ curl -4 -s -w "%{http_code}" -o "/tmp/dehydrated-test-ipv4" "http://apps.identrust.com/roots/dstrootcax3.p7c";echo -e "\n$?"
200
0
[www@liucai-web2 liucai.kosun.rocks]$ curl -6 -s -w "%{http_code}" -o "/tmp/dehydrated-test-ipv6" "http://apps.identrust.com/roots/dstrootcax3.p7c";echo -e "\n$?"
000
6

Downloaded the chain file and saved it as /etc/resty-auto-ssl/letsencrypt/chains/4f06f81d.chain, it works well now.
I can get the file with wget. Is there any issue with my setup ?

Hello @RainFlying,
I currently have the same issue and don't quite understand how you solved it. What do you mean you downloaded the chain file and saved it? The empty chain-1519442305.pem file? I would really appreciate your help.


Cannot install using pip

Describe the bug
I used the command provided here: https://github.com/MatthiasValvekens/pyHanko
pip install 'pyHanko[pkcs11,image-support,opentype,xmp]'
The command either fails on python-pkcs11 or uharfbuzz
To Reproduce
To reproduce error with python-pkcs11:

Run Windows Subsystem for Linux
sudo apt-get update
sudo apt install python3.10-venv
python3 -m venv venv
source venv/bin/activate
pip install pyhanko[pkcs11,image-support,opentype,xmp]

To reproduce error with uharfbuzz:

Run Windows Subsystem for Linux
sudo apt-get update
sudo apt install python3.10-venv
python3 -m venv venv
source venv/bin/activate
Create requirements.txt file with following content:

python-pkcs11==0.6.0
pyhanko[pkcs11,image-support,opentype,xmp]

pip install -r requirements.txt

Expected behavior
For the package to install successfully.
Traceback
For python-pkcs11:
/home/pdf-sign$ pip install 'pyHanko[pkcs11,image-support,opentype,xmp]'
Collecting pyHanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.20.0-py3-none-any.whl (407 kB)
Collecting pyhanko-certvalidator==0.23.*
  Using cached pyhanko_certvalidator-0.23.0-py3-none-any.whl (106 kB)
Requirement already satisfied: pyyaml>=5.3.1 in ./venv/lib/python3.10/site-packages (from pyHanko[image-support,opentype,pkcs11,xmp]) (6.0.1)
Requirement already satisfied: tzlocal>=4.3 in ./venv/lib/python3.10/site-packages (from pyHanko[image-support,opentype,pkcs11,xmp]) (5.0.1)
Requirement already satisfied: asn1crypto>=1.5.1 in ./venv/lib/python3.10/site-packages (from pyHanko[image-support,opentype,pkcs11,xmp]) (1.5.1)
Collecting cryptography>=3.3.1
  Using cached cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl (4.3 MB)
Requirement already satisfied: qrcode>=6.1 in ./venv/lib/python3.10/site-packages (from pyHanko[image-support,opentype,pkcs11,xmp]) (7.4.2)
Collecting requests>=2.24.0
  Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Collecting click>=7.1.2
  Using cached click-8.1.6-py3-none-any.whl (97 kB)
Collecting defusedxml~=0.7.1
  Using cached defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
Requirement already satisfied: uharfbuzz<0.38.0,>=0.25.0 in ./venv/lib/python3.10/site-packages (from pyHanko[image-support,opentype,pkcs11,xmp]) (0.37.2)
Collecting fonttools>=4.33.3
  Using cached fonttools-4.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB)
Collecting python-pkcs11~=0.7.0
  Using cached python-pkcs11-0.7.0.tar.gz (106 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: python-barcode==0.15.1 in ./venv/lib/python3.10/site-packages (from pyHanko[image-support,opentype,pkcs11,xmp]) (0.15.1)
Collecting Pillow>=7.2.0
  Using cached Pillow-10.0.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.4 MB)
Requirement already satisfied: uritools>=3.0.1 in ./venv/lib/python3.10/site-packages (from pyhanko-certvalidator==0.23.*->pyHanko[image-support,opentype,pkcs11,xmp]) (4.0.1)
Collecting oscrypto>=1.1.0
  Using cached oscrypto-1.3.0-py2.py3-none-any.whl (194 kB)
Collecting cffi>=1.12
  Using cached cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (441 kB)
Requirement already satisfied: cached-property in ./venv/lib/python3.10/site-packages (from python-pkcs11~=0.7.0->pyHanko[image-support,opentype,pkcs11,xmp]) (1.5.2)
Requirement already satisfied: pypng in ./venv/lib/python3.10/site-packages (from qrcode>=6.1->pyHanko[image-support,opentype,pkcs11,xmp]) (0.20220715.0)
Requirement already satisfied: typing-extensions in ./venv/lib/python3.10/site-packages (from qrcode>=6.1->pyHanko[image-support,opentype,pkcs11,xmp]) (4.7.1)
Requirement already satisfied: urllib3<3,>=1.21.1 in ./venv/lib/python3.10/site-packages (from requests>=2.24.0->pyHanko[image-support,opentype,pkcs11,xmp]) (2.0.4)
Collecting certifi>=2017.4.17
  Using cached certifi-2023.7.22-py3-none-any.whl (158 kB)
Collecting charset-normalizer<4,>=2
  Using cached charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (201 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting pycparser
  Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Using legacy 'setup.py install' for python-pkcs11, since package 'wheel' is not installed.
Installing collected packages: python-pkcs11, pycparser, Pillow, oscrypto, idna, fonttools, defusedxml, click, charset-normalizer, certifi, requests, cffi, cryptography, pyhanko-certvalidator, pyHanko
  Running setup.py install for python-pkcs11 ... error
  error: subprocess-exited-with-error

  × Running setup.py install for python-pkcs11 did not run successfully.
  │ exit code: 1
  ╰─> [67 lines of output]
      /home/pdf-sign/venv/lib/python3.10/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
        warnings.warn(
      WARNING: The wheel package is not available.
      WARNING: The wheel package is not available.
      WARNING: The wheel package is not available.
      WARNING: The wheel package is not available.
      running install
      /home/pdf-sign/venv/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
        warnings.warn(
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.10
      creating build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/mechanisms.py -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/__init__.py -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/constants.py -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/types.py -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/defaults.py -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/exceptions.py -> build/lib.linux-x86_64-3.10/pkcs11
      creating build/lib.linux-x86_64-3.10/pkcs11/util
      copying pkcs11/util/rsa.py -> build/lib.linux-x86_64-3.10/pkcs11/util
      copying pkcs11/util/dsa.py -> build/lib.linux-x86_64-3.10/pkcs11/util
      copying pkcs11/util/__init__.py -> build/lib.linux-x86_64-3.10/pkcs11/util
      copying pkcs11/util/dh.py -> build/lib.linux-x86_64-3.10/pkcs11/util
      copying pkcs11/util/x509.py -> build/lib.linux-x86_64-3.10/pkcs11/util
      copying pkcs11/util/ec.py -> build/lib.linux-x86_64-3.10/pkcs11/util
      running egg_info
      writing python_pkcs11.egg-info/PKG-INFO
      writing dependency_links to python_pkcs11.egg-info/dependency_links.txt
      writing requirements to python_pkcs11.egg-info/requires.txt
      writing top-level names to python_pkcs11.egg-info/top_level.txt
      listing git files failed - pretending there aren't any
      reading manifest file 'python_pkcs11.egg-info/SOURCES.txt'
      writing manifest file 'python_pkcs11.egg-info/SOURCES.txt'
      copying pkcs11/_errors.pyx -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/_mswin.pxd -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/_pkcs11.pyx -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/_pkcs11_defn.pxd -> build/lib.linux-x86_64-3.10/pkcs11
      copying pkcs11/_utils.pyx -> build/lib.linux-x86_64-3.10/pkcs11
      running build_ext
      Compiling pkcs11/_pkcs11.pyx because it changed.
      [1/1] Cythonizing pkcs11/_pkcs11.pyx
      warning: pkcs11/_pkcs11.pyx:17:0: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: pkcs11/_errors.pyx:85:44: The keyword 'nogil' should appear at the end of the function signature line. Placing it before 'except' or 'noexcept' will be disallowed in a future version of Cython.
      warning: pkcs11/_pkcs11.pyx:1366:4: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: pkcs11/_pkcs11.pyx:1390:8: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: pkcs11/_pkcs11.pyx:1421:8: The 'IF' statement is deprecated and will be removed in a future Cython version. Consider using runtime conditions or C macros instead. See https://github.com/cython/cython/issues/4310
      warning: pkcs11/_pkcs11.pyx:219:70: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:590:63: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:616:51: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:656:64: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:903:56: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:947:74: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:957:67: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:994:55: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:1038:74: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:1048:67: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:1084:52: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:1125:65: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:1217:59: Use boundscheck(False) for faster access
      warning: pkcs11/_pkcs11.pyx:1478:64: Use boundscheck(False) for faster access
      building 'pkcs11._pkcs11' extension
      creating build/temp.linux-x86_64-3.10
      creating build/temp.linux-x86_64-3.10/pkcs11
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pdf-sign/venv/include -I/usr/include/python3.10 -c pkcs11/_pkcs11.c -o build/temp.linux-x86_64-3.10/pkcs11/_pkcs11.o
      error: command 'x86_64-linux-gnu-gcc' failed: No such file or directory
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> python-pkcs11

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

For uharfbuzz:
/home/pdf-sign$ pip install -r requirements.txt
Collecting python-pkcs11==0.6.0
  Using cached python-pkcs11-0.6.0.tar.gz (105 kB)
  Preparing metadata (setup.py) ... done
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.20.0-py3-none-any.whl (407 kB)
Collecting pypdf==3.15.0
  Using cached pypdf-3.15.0-py3-none-any.whl (270 kB)
Requirement already satisfied: asn1crypto in ./venv/lib/python3.10/site-packages (from python-pkcs11==0.6.0->-r requirements.txt (line 2)) (1.5.1)
Requirement already satisfied: cached-property in ./venv/lib/python3.10/site-packages (from python-pkcs11==0.6.0->-r requirements.txt (line 2)) (1.5.2)
Collecting cryptography>=3.3.1
  Using cached cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl (4.3 MB)
Collecting click>=7.1.2
  Using cached click-8.1.6-py3-none-any.whl (97 kB)
Collecting requests>=2.24.0
  Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Requirement already satisfied: pyyaml>=5.3.1 in ./venv/lib/python3.10/site-packages (from pyhanko[image-support,opentype,pkcs11,xmp]->-r requirements.txt (line 3)) (6.0.1)
Requirement already satisfied: tzlocal>=4.3 in ./venv/lib/python3.10/site-packages (from pyhanko[image-support,opentype,pkcs11,xmp]->-r requirements.txt (line 3)) (5.0.1)
Requirement already satisfied: qrcode>=6.1 in ./venv/lib/python3.10/site-packages (from pyhanko[image-support,opentype,pkcs11,xmp]->-r requirements.txt (line 3)) (7.4.2)
Collecting pyhanko-certvalidator==0.23.*
  Using cached pyhanko_certvalidator-0.23.0-py3-none-any.whl (106 kB)
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.19.0-py3-none-any.whl (407 kB)
  Using cached pyHanko-0.18.1-py3-none-any.whl (402 kB)
Collecting pyhanko-certvalidator==0.22.*
  Using cached pyhanko_certvalidator-0.22.0-py3-none-any.whl (106 kB)
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.18.0-py3-none-any.whl (402 kB)
Requirement already satisfied: pytz>=2020.1 in ./venv/lib/python3.10/site-packages (from pyhanko[image-support,opentype,pkcs11,xmp]->-r requirements.txt (line 3)) (2023.3)
  Using cached pyHanko-0.17.2-py3-none-any.whl (379 kB)
Collecting pyhanko-certvalidator==0.20.*
  Using cached pyhanko_certvalidator-0.20.1-py3-none-any.whl (106 kB)
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.17.1-py3-none-any.whl (378 kB)
  Using cached pyHanko-0.17.0-py3-none-any.whl (378 kB)
  Using cached pyHanko-0.16.0-py3-none-any.whl (361 kB)
Collecting pyhanko-certvalidator~=0.19.8
  Using cached pyhanko_certvalidator-0.19.8-py3-none-any.whl (71 kB)
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.15.1-py3-none-any.whl (357 kB)
  Using cached pyHanko-0.15.0-py3-none-any.whl (357 kB)
  Using cached pyHanko-0.14.0-py3-none-any.whl (355 kB)
  Using cached pyHanko-0.13.2-py3-none-any.whl (331 kB)
WARNING: pyhanko 0.13.2 does not provide the extra 'xmp'
  Using cached pyHanko-0.13.1-py3-none-any.whl (330 kB)
WARNING: pyhanko 0.13.1 does not provide the extra 'xmp'
  Using cached pyHanko-0.13.0-py3-none-any.whl (330 kB)
WARNING: pyhanko 0.13.0 does not provide the extra 'xmp'
  Using cached pyHanko-0.12.1-py3-none-any.whl (318 kB)
WARNING: pyhanko 0.12.1 does not provide the extra 'xmp'
  Using cached pyHanko-0.12.0-py3-none-any.whl (318 kB)
WARNING: pyhanko 0.12.0 does not provide the extra 'xmp'
  Using cached pyHanko-0.11.0-py3-none-any.whl (312 kB)
WARNING: pyhanko 0.11.0 does not provide the extra 'xmp'
  Using cached pyHanko-0.10.0-py3-none-any.whl (288 kB)
WARNING: pyhanko 0.10.0 does not provide the extra 'xmp'
Collecting pyhanko-certvalidator~=0.18.0
  Using cached pyhanko_certvalidator-0.18.1-py3-none-any.whl (64 kB)
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.9.0-py3-none-any.whl (313 kB)
WARNING: pyhanko 0.9.0 does not provide the extra 'xmp'
Collecting pyhanko-certvalidator~=0.17.3
  Using cached pyhanko_certvalidator-0.17.4-py3-none-any.whl (65 kB)
Collecting pyhanko[image-support,opentype,pkcs11,xmp]
  Using cached pyHanko-0.8.0-py3-none-any.whl (294 kB)
WARNING: pyhanko 0.8.0 does not provide the extra 'xmp'
Collecting pyhanko-certvalidator~=0.16.0
  Using cached pyhanko_certvalidator-0.16.0-py3-none-any.whl (44 kB)
Collecting Pillow>=7.2.0
  Using cached Pillow-10.0.0-cp310-cp310-manylinux_2_28_x86_64.whl (3.4 MB)
Requirement already satisfied: python-barcode>=0.13.1 in ./venv/lib/python3.10/site-packages (from pyhanko[image-support,opentype,pkcs11,xmp]->-r requirements.txt (line 3)) (0.15.1)
Collecting fonttools>=4.13.0
  Using cached fonttools-4.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB)
Collecting uharfbuzz==0.16.1
  Using cached uharfbuzz-0.16.1.zip (1.1 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [190 lines of output]
      warning: src/uharfbuzz/_harfbuzz.pyx:675:0: The 'DEF' statement is deprecated and will be removed in a future Cython version. Consider using global variables, constants, and in-place literals instead. See https://github.com/cython/cython/issues/4310

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
          def guess_segment_properties(self) -> None:
              hb_buffer_guess_segment_properties(self._hb_buffer)

          def set_message_func(self, callback) -> None:
              self._message_callback = callback
              hb_buffer_set_message_func(self._hb_buffer, msgcallback, <void*>callback, NULL)
                                                          ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:269:52: Cannot assign type 'int (hb_buffer_t *, hb_font_t *, const char *, void *) except? -1' to 'hb_buffer_message_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                    object  # user_data
                                ], bytes],
                                user_data: object):
              cdef Face inst = cls(None)
              inst._hb_face = hb_face_create_for_tables(
                  _reference_table_func, <void*>user_data, NULL)
                  ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:328:12: Cannot assign type 'hb_blob_t *(hb_face_t *, hb_tag_t, void *) except *' to 'hb_reference_table_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                           int,  # gid
                                           object,  # user_data
                                       ], int],  # h_advance
                                       user_data: object) -> None:
              hb_font_funcs_set_glyph_h_advance_func(
                  self._hb_ffuncs, _glyph_h_advance_func, <void*>user_data, NULL)
                                   ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:574:29: Cannot assign type 'hb_position_t (hb_font_t *, void *, hb_codepoint_t, void *) except? -1' to 'hb_font_get_glyph_h_advance_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                           int,  # gid
                                           object,  # user_data
                                       ], int],  # v_advance
                                       user_data: object) -> None:
              hb_font_funcs_set_glyph_v_advance_func(
                  self._hb_ffuncs, _glyph_v_advance_func, <void*>user_data, NULL)
                                   ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:585:29: Cannot assign type 'hb_position_t (hb_font_t *, void *, hb_codepoint_t, void *) except? -1' to 'hb_font_get_glyph_v_advance_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                          int,  # gid
                                          object,  # user_data
                                      ], (int, int, int)],  # success, v_origin_x, v_origin_y
                                      user_data: object) -> None:
              hb_font_funcs_set_glyph_v_origin_func(
                  self._hb_ffuncs, _glyph_v_origin_func, <void*>user_data, NULL)
                                   ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:596:29: Cannot assign type 'hb_bool_t (hb_font_t *, void *, hb_codepoint_t, hb_position_t *, hb_position_t *, void *) except? -1' to 'hb_font_get_glyph_v_origin_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                      int,  # gid
                                      object,  # user_data
                                  ], str],  # name
                                  user_data: object) -> None:
              hb_font_funcs_set_glyph_name_func(
                  self._hb_ffuncs, _glyph_name_func, <void*>user_data, NULL)
                                   ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:607:29: Cannot assign type 'hb_bool_t (hb_font_t *, void *, hb_codepoint_t, char *, unsigned int, void *) except? -1' to 'hb_font_get_glyph_name_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                         int,  # unicode
                                         object,  # user_data
                                     ], int],  # gid
                                     user_data: object) -> None:
              hb_font_funcs_set_nominal_glyph_func(
                  self._hb_ffuncs, _nominal_glyph_func, <void*>user_data, NULL)
                                   ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:618:29: Cannot assign type 'hb_bool_t (hb_font_t *, void *, hb_codepoint_t, hb_codepoint_t *, void *) except? -1' to 'hb_font_get_nominal_glyph_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                           int,
                                           object,  # user_data
                                       ], None]) -> None:
              self._move_to_func = func
              hb_draw_funcs_set_move_to_func(
                  self._hb_drawfuncs, _move_to_func)
                                      ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:874:32: Cannot assign type 'void (hb_position_t, hb_position_t, void *) except *' to 'hb_draw_move_to_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                   int,
                                   object,  # user_data
                               ], None]) -> None:
              self._line_to_func = func
              hb_draw_funcs_set_line_to_func(
                  self._hb_drawfuncs, _line_to_func)
                                      ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:884:32: Cannot assign type 'void (hb_position_t, hb_position_t, void *) except *' to 'hb_draw_line_to_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                   int,
                                   object,  # user_data
                                ], None]) -> None:
              self._cubic_to_func = func
              hb_draw_funcs_set_cubic_to_func(
                  self._hb_drawfuncs, _cubic_to_func)
                                      ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:898:32: Cannot assign type 'void (hb_position_t, hb_position_t, hb_position_t, hb_position_t, hb_position_t, hb_position_t, void *) except *' to 'hb_draw_cubic_to_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                       int,
                                       object,  # user_data
                                   ], None]) -> None:
              self._quadratic_to_func = func
              hb_draw_funcs_set_quadratic_to_func(
                  self._hb_drawfuncs, _quadratic_to_func)
                                      ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:910:32: Cannot assign type 'void (hb_position_t, hb_position_t, hb_position_t, hb_position_t, void *) except *' to 'hb_draw_quadratic_to_func_t'

      Error compiling Cython file:
      ------------------------------------------------------------
      ...
                                  func: Callable[[
                                      object
                                  ], None]) -> None:
              self._close_path_func = func
              hb_draw_funcs_set_close_path_func(
                  self._hb_drawfuncs, _close_path_func)
                                      ^
      ------------------------------------------------------------

      src/uharfbuzz/_harfbuzz.pyx:918:32: Cannot assign type 'void (void *) except *' to 'hb_draw_close_path_func_t'
      Compiling src/uharfbuzz/_harfbuzz.pyx because it changed.
      [1/1] Cythonizing src/uharfbuzz/_harfbuzz.pyx
      Traceback (most recent call last):
        File "/home/pdf-sign/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
          main()
        File "/home/pdf-sign/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/pdf-sign/venv/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/tmp/pip-build-env-g7_8jjq9/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
        File "/tmp/pip-build-env-g7_8jjq9/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-g7_8jjq9/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 338, in run_setup
          exec(code, locals())
        File "<string>", line 55, in <module>
        File "/tmp/pip-build-env-g7_8jjq9/overlay/lib/python3.10/site-packages/Cython/Build/Dependencies.py", line 1134, in cythonize
          cythonize_one(*args)
        File "/tmp/pip-build-env-g7_8jjq9/overlay/lib/python3.10/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
          raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: src/uharfbuzz/_harfbuzz.pyx
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Environment:

Main OS: Windows 10, version: 22H2
Subsystem for Linux: Ubuntu 22.04.2 LTS

Hi,
Please open issues with uharfbuzz/python-pkcs11 respectively. The latest pyHanko version allows the most recent version (at the time I write this), so this needs an upstream fix; not much I can do about that... Dependabot will ensure the dependencies of pyHanko are kept up to date if/when such fixes are made available.

...I'm actually quite confused now. I came back here to mention that I'm able to install both python-pkcs11 and uharfbuzz with pip without issues. It was only crashing when I was attempting to install them with pyhanko.
But now it also started working with pyhanko... I guess it was a pip issue.

On closer inspection, the issue is probably related to the fact that you forced the pkcs11 version to 0.6.0 (=outdated) in your requirements file. This caused pip to fall back to older pyhanko/uharfbuzz builds as well, and those probably don't build on WSL.


Error when when retreiving contacts

this is the error i get
It causes a weird flicker in my butter smooth UI
W/System (25860): A resource failed to call close.

@lukasgit please help!
even pointing in the right direction would be great
Currently, I'm calling it as such
List<Contact> contacts.value = (await ContactsService.getContacts(
        withThumbnails: false,
      )).toList();

@b-cancel it might be related to PR #7 ... I just pushed a new build v0.3.0 so please upgrade your package and try again. Thanks!

@lukasgit this did not fix the problem
However, it's confirmed the flicker is not caused by the plugin
If i call get contacts twice back to back with the no thumbnails option no flicker occurs
when I instead call it with thumbnails all my contact widgets use the image instead of the icon
and thats when they flicker
it would be nice to get this fixed but all I could think of was to manually set the size of the container that holds either the icon or image... but the problem remained
Ill post a link here of the widget I am building so you can perhaps find a way to solve the problem
NOTE: the reason I ask for your help if you are willing is that it addresses a fairly common scenario
that you want to get contacts quickly and then load in the thumbnails after
Also the project I am using the plugin for is creating my own custom contact picker with all the add, edit, and remove contact functionality
so It might be a good way to show that everything is working for you guys as well

@b-cancel heads up, I am not the original author of this plugin.  This plugin was written early on and has its limitations.  The issue you are experiencing might be related to the limitations.  We are working on re-writing a new plugin to replace this plugin from the ground up that is clean, secure, flexible, and easy to maintain.
Our resources are limited, but please feel free to contribute to the current plugin with fixes / improvements you have. Please see the README for more information on how to contribute. Thanks!


Automated Package Upgrade

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


ppPrinters for custom workspace types, copiesPP fix

Description
Using ppPrinters wiht WorkspacePredicate and WorkspaceFormatter
allows users to define custom workspace types, beyond the ones
integrated in PP (i.e. urgent, current, visible, visible with no
windows, hidden, and hidden with no windows). WorkspacePredicates are
added for these predicates (isType) with unsafe versions that assume
that predicates with a higher precedence already faield isType'.
WorkspacePredicates can also be combined and modified with notWP,
andWP, and orWP.
This also fixes #557
Checklist

[x] I've read CONTRIBUTING.md

[x] I've considered how to best test these changes manually and concluded: #557  is indeed fixed, and I can imagine this being useful in some cases

[x] I updated the CHANGES.md file

[ ] I updated the XMonad.Doc.Extending file (if appropriate)

Adding yet another field to PP seems unfortunate, but it is probably necessary and unavoidable in this case; eth approach overall looks quite decent to me.

I think this field should extend PPs life by quite a large time... But it makes me wonder what would be a better approach

I like this approach, especially the fact that we don't have to define custom operators!

{-# LANGUAGE RecordWildCards #-}

I don't know if this is just me, but I always find RecordWildcards to be terribly unreadable; perhaps NamedFieldPuns would be nicer?

What I don't like is the need for ReaderT. As explained in one of the comments, there is not and there cannot be an Alternative instance for r -> Maybe a, so I use ReaderT for ppPrinters and a simple WS → Bool reader monad for the conditions, and it's all a bit confusing. Probably not really Haskell-beginner friendly as it requires knowledge of all these instances. :-/

-- XXX: ReaderT instead of -> because there is no
--   instance (Alternative m) => Alternative (Λa. r -> Maybe a)
-- (there cannot be in Haskell, ReaderT is essentially (r ->) ∘ Maybe)
-- But we don't need Alternative for WS -> Bool, so we use the simple
-- function-based reader there. This may be a bit confusing. :-/

I think people reading xmonad source code already need to be familiar with monad transformers anyways, so there's no real harm in doing this.  Especially with documentation outlining why this was done the way it is.  (I find the implicit Reader usage in ppRename more confusing than this usage of ReaderT, personally)
Completely overthinking this, while it's true that there can't be an Alternative instance for ∀ a. r -> Maybe a in Haskell, we can certainly just write down the composition (Compose ((->) r) Maybe a), for which there is an instance because it's also a newtype.  Dressing this up as a Kleisli arrow we could define
type (~>) r a = Compose ((->) r) Maybe a

and be on our way.  Although since Compose is a newtype as well it wouldn't necessarily shorten the implementation.  I'm also not sure that we wouldn't lose even more people with this :)

I really like your approach @liskin! And I don't see using ReaderT as a problem, I agree with @slotThe  that ppRename is more confusing in that regard. I'm not that familiar with the concepts you used, but I understood what's going on quickly with the ReaderT docs open and just reading through the comments. I think it's fine, and quite elegant. Kudos :tada:

I don't know if this is just me, but I always find RecordWildcards to be terribly unreadable; perhaps NamedFieldPuns would be nicer?

Sure, no strong opinion on this one.

I think people reading xmonad source code already need to be familiar with monad transformers anyways, so there's no real harm in doing this. Especially with documentation outlining why this was done the way it is.

Okay. :-)

Completely overthinking this, while it's true that there can't be an Alternative instance for ∀ a. r -> Maybe a in Haskell, we can certainly just write down the composition (Compose ((->) r) Maybe a), for which there is an instance because it's also a newtype. Dressing this up as a Kleisli arrow we could define
type (~>) r a = Compose ((->) r) Maybe a

and be on our way. Although since Compose is a newtype as well it wouldn't necessarily shorten the implementation. I'm also not sure that we wouldn't lose even more people with this :)

Oh, I didn't know this one! And there even is an Alternative instance for Compose. The newtype wouldn't be a problem if there was a MonadReader instance, but I don't think there is, and ReaderT is probably still easier to understand anyway. But thanks a lot for teaching me something new. :-)

I just pushed https://github.com/liskin/xmonad-contrib/commit/089d80f3d8f6258602846b994c756afd368c610b which makes it possible to easily use the default/fallback ppPrinters and then maybe do something with their output. Like for example we can now have a copiesPP' that instead of using a different printer for workspaces with copies just adds a + at the end. (To add + inside of the parentheses/brackets and colors set by ppCurrent et al, ppRename is probably sufficient.) Surely there are other interesting uses as well.
So… can I now leave it up to @TheMC47 to clean this all up and fix the docs? Thanks!

So… can I now leave it up to @TheMC47 to clean this all up and fix the docs? Thanks!

All good :+1:

In the end, I didn't expose ?-> since it might be confusing (as @geekosaur mentioned in the IRC channel), and the gain from it is minimal (right now). We can change it if we see the need for that in the future, but it's not a must to figure this out before the release.
Regarding the name, nothing else came to mind.
PS: I'm gonna squash my last commit and @liskin's commits later

Surely there are other interesting uses as well.

I think the interface is really flexible, but I fear that fallbackPrinters wouldn't quite do it since we need PP as an argument (maybe I'm missing something). Defining type WSPP = WSPP' (PP -> WorkspaceId -> String) would solve this though

Just to document my "confusing" comment, X.H.ManageHelpers already uses -?> and the similarity is a bit uncomfortable.


[Feedback]  Why do want to discuss the role of the facilitator? Isn't this self instructed?  by CAROLYN

Feedback details
ID: 352 | created at 2023-05-11T10:17:12 | feedback type: feedback-addFeedback
Message 1 from user c2513f6b-89a2-400c-9d86-c79998e729d4
Selected text
explore
User feedback
Why do want to discuss the role of the facilitator? Isn't this self instructed?  by CAROLYN
Template target
[{"el": "container", "templatename": "session_overview"}, {"el": "component", "name": "goals", "type": "display_group"}, {"el": "component", "name": "goal_1", "type": "text"}]

Close this issue as it is a test.


Race condition in retrieval

I have found races in the retrieval package. Stack traces:
==================
WARNING: DATA RACE
Write by goroutine 321:
github.com/prometheus/prometheus/retrieval.(*Target).Update()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:222 +0xa94
github.com/prometheus/prometheus/retrieval.func·008()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:235 +0xbf
Previous read by goroutine 308:
github.com/prometheus/prometheus/retrieval.(*Target).scrape()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:390 +0xf36
github.com/prometheus/prometheus/retrieval.(*Target).RunScraper()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:312 +0x7a7
Goroutine 321 (running) created at:
github.com/prometheus/prometheus/retrieval.(*TargetManager).updateTargetGroup()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:237 +0x683
github.com/prometheus/prometheus/retrieval.(*TargetManager).handleTargetUpdates()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:115 +0x197
Goroutine 308 (running) created at:
github.com/prometheus/prometheus/retrieval.(*TargetManager).updateTargetGroup()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:257 +0xd15
github.com/prometheus/prometheus/retrieval.(*TargetManager).handleTargetUpdates()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:115 +0x197
==================
WARNING: DATA RACE
Write by goroutine 321:
github.com/prometheus/prometheus/retrieval.(*Target).Update()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:210 +0x5ef
github.com/prometheus/prometheus/retrieval.func·008()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:235 +0xbf
revious read by goroutine 308:
github.com/prometheus/prometheus/retrieval.(*Target).scrape()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:371 +0xcd9
github.com/prometheus/prometheus/retrieval.(*Target).RunScraper()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:312 +0x7a7
Goroutine 321 (running) created at:
github.com/prometheus/prometheus/retrieval.(*TargetManager).updateTargetGroup()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:237 +0x683
github.com/prometheus/prometheus/retrieval.(*TargetManager).handleTargetUpdates()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:115 +0x197
Goroutine 308 (running) created at:
github.com/prometheus/prometheus/retrieval.(*TargetManager).updateTargetGroup()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:257 +0xd15
github.com/prometheus/prometheus/retrieval.(*TargetManager).handleTargetUpdates()
/home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:115 +0x197

@fabxc I guess you are most qualified to deal with this.
Sorry for weird formatting. The stack trace is not meant to be markdown...

Another one:
==================
WARNING: DATA RACE
Write by goroutine 288:
  github.com/prometheus/prometheus/retrieval.(*Target).Update()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:208 +0x5ab
  github.com/prometheus/prometheus/retrieval.func·008()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:235 +0xbf

Previous read by goroutine 213:
  github.com/prometheus/prometheus/retrieval.(*Target).scrape()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:345 +0x3f3
  github.com/prometheus/prometheus/retrieval.(*Target).RunScraper()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/target.go:312 +0x7a7

Goroutine 288 (running) created at:
  github.com/prometheus/prometheus/retrieval.(*TargetManager).updateTargetGroup()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:237 +0x683
  github.com/prometheus/prometheus/retrieval.(*TargetManager).handleTargetUpdates()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:115 +0x197

Goroutine 213 (running) created at:
  github.com/prometheus/prometheus/retrieval.(*TargetManager).updateTargetGroup()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:257 +0xd15
  github.com/prometheus/prometheus/retrieval.(*TargetManager).handleTargetUpdates()
      /home/bjoern/prometheus/.build/root/gopath/src/github.com/prometheus/prometheus/retrieval/targetmanager.go:115 +0x197
==================


Update master to v4.1.1

Codecov Report

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

@@            Coverage Diff            @@
##             master     #106   +/-   ##
=========================================
  Coverage     14.19%   14.19%
  Complexity       36       36
=========================================
  Files            47       47
  Lines          1853     1853
  Branches        141      141
=========================================
  Hits            263      263
  Misses         1584     1584
  Partials          6        6

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 032bda4...0dd4f3b. Read the comment docs.


[WIP] [MOO-1597] Update app permissions

This should be ready to merge around Sep 18. Ahmed will reach out to the team via #docs.

This should be ready to merge around Sep 18. Ahmed will reach out to the team via #docs.


Wrong statement that Virtual Entities support update and delet

[Enter feedback here]
Your article begins stating that
"Virtual entities support create, updates and delete of data in the external system."
This is not really true today, only supports "read"
Br,
Hans
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 42ae2cb6-ce2a-21c7-cb81-b60e7b026753
Version Independent ID: 5a3cb7c0-6881-1d96-0dc3-639324a4568c
Content: Get started with virtual entities (Microsoft Dataverse) - Power Apps
Content Source: powerapps-docs/developer/data-platform/virtual-entities/get-started-ve.md
Service: powerapps
GitHub Login: @Sunil-Garg
Microsoft Alias: pehecke

True but recently update and delete support has been added with the OData provider. https://docs.microsoft.com/en-us/powerapps/developer/data-platform/virtual-entities/get-started-ve
Closing issue.


Better Error Info

What would you like to be added?
When there is a YAML error or dataview error that prevents the database from being populated, It would be helpful to know which files are causing the issue or to have a debugger hook
Why is this needed?

As shown here There is no way to know which of my 3k files is causing the issue from the error message

I think this would be a clear improvement and pretty easy to add 👍


refactor: use build tags to disable, instead of to enable a feature

Also, add a way to fetch the latest C header provided by watcher using go generate.

Fetching the watcher header is probably a good idea. Would it make senso to add a check in the pipeline that will make the watcher installation fail if a new header is available?

Also msan fails again with the watcher. We can either disable tests or try our luck at a memory sanitized stdc++. I found this Docker image with instructions I haven't tried yet: https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c/blob/master/.github/msan-tester.Dockerfile


pkg/k8s: Remove non running containers from gadget tracer manager

Fixes https://github.com/kinvolk/inspektor-gadget/issues/314

I would just add that the logic is not that easy to follow so I would suggest either rename createdChan to make clear that it is used to notify about pod creation and also updates, or separate it into two different channels (But it would require to modify also the logic inside the podinformer).

https://github.com/kinvolk/inspektor-gadget/pull/313 is changing also this code. I'll make further changes once that's merged.

LGTM... but could I pick up the change into #313 to avoid conflicts?

If we're able to have that ready for v0.3.1 that's fine. Otherwise I'll prefer to merge it to fix that problem ASAP.

If we're able to have that ready for v0.3.1 that's fine. Otherwise I'll prefer to merge it to fix that problem ASAP.

Ok, let's merge it now, and I'll rebase the other branch.

Note: There were some test failures related to traceloop. I restarted the jobs twice and now they're gone. I'm merging it as I think those failures are not related to these changes.


[dv] Add transmission integrity negative test for passthrough integrity

There are several blocks (flash_ctrl, rom_ctrl, otbn, sram_ctrl) where transmission integrity should not be generated in the gasket, but instead stored with the memory itself.
For these test cases, relying on the common transmission integrity test to pass is insufficient, as we do not know the integrity is actually coming from storage or from the gasket. (@weicaiyang please correct me if I am wrong).
Assuming the above is true, it is necessary to add directed test cases to these blocks where we purposely try to deposit incorrect integrity into the memory, either by changing the integrity or the data. (this will be block specific). This failed integrity should then manifest in a tlul error.  If instead the options / configurations are wrong, this error will not manifest as the gasket will re-generate the integrity for the "wrong" data.
This is related to a lot of confusion observed by @rswarbrick in #9536.  The reggen utility technically has an option to handle cases like this already, but we need to make sure it

is actually working as intended
correctly turned on by the modules that need it.

For these test cases, relying on the common transmission integrity test to pass is insufficient, as we do not know the integrity is actually coming from storage or from the gasket. (@weicaiyang please correct me if I am wrong).

you're right. Current common integrity test can't verify the case that the data integrity is from storage.

Assuming the above is true, it is necessary to add directed test cases to these blocks where we purposely try to deposit incorrect integrity into the memory, either by changing the integrity or the data. (this will be block specific). This failed integrity should then manifest in a tlul error.

Sorry, I need some clarification here. If the data integrity is wrong, the block won't report d_error=1 as data integrity is checked in ibex. Is it right?
IIUC, I'm thinking to create another common test for data integrity that is from storage.

inject data integrity error either from front-door or backdoor. (If it's RO mem, only backdoor. If WO, probably need to test separately, not sure if we have WO mem with integrity in storage)
issue a read at the same address and check
a. if inject error from front-door, read value and integrity should match to what we have written. We shouldn't auto correct the integrity and d_error should be 0.
b. If inject error from backdoor by flipping some of the bits, the new calculated integrity (based read data) should not match to the one from storage. We shouldn't auto correct the integrity and d_error should be 0.

For these test cases, relying on the common transmission integrity test to pass is insufficient, as we do not know the integrity is actually coming from storage or from the gasket. (@weicaiyang please correct me if I am wrong).

you're right. Current common integrity test can't verify the case that the data integrity is from storage.

Assuming the above is true, it is necessary to add directed test cases to these blocks where we purposely try to deposit incorrect integrity into the memory, either by changing the integrity or the data. (this will be block specific). This failed integrity should then manifest in a tlul error.

Sorry, I need some clarification here. If the data integrity is wrong, the block won't report d_error=1 as data integrity is checked in ibex. Is it right?

wait, i thought the block level default tlul agent had some kind of integrity checking?

IIUC, I'm thinking to create another common test for data integrity that is from storage.

inject data integrity error either from front-door or backdoor. (If it's RO mem, only backdoor. If WO, probably need to test separately, not sure if we have WO mem with integrity in storage)
issue a read at the same address and check
a. if inject error from front-door, read value and integrity should match to what we have written. We shouldn't auto correct the integrity and d_error should be 0.
b. If inject error from backdoor by flipping some of the bits, the new calculated integrity (based read data) should not match to the one from storage. We shouldn't auto correct the integrity and d_error should be 0.

yes this definitely works too. I think the only thing we need to make sure if the backdoor injection of flipping bits might need to be extended by the block (for example flash) if it is somewhat non-standard.

wait, i thought the block level default tlul agent had some kind of integrity checking?

Yes, by default the ECC integrity should always match with the data if ECC is generated in the gasket.
Will turn off that check if ECC is stored in the memory. And check the new calculated integrity (based read data) should not match to the one from storage if we inject errors.

yes this definitely works too. I think the only thing we need to make sure if the backdoor injection of flipping bits might need to be extended by the block (for example flash) if it is somewhat non-standard.

yes, thinking to create an empty virtual function for backdoor injection and each block owner need to extend it to implement the actual backdoor function.

wait, i thought the block level default tlul agent had some kind of integrity checking?

Yes, by default the ECC integrity should always match with the data if ECC is generated in the gasket. Will turn off that check if ECC is stored in the memory. And check the new calculated integrity (based read data) should not match to the one from storage if we inject errors.

yes this definitely works too. I think the only thing we need to make sure if the backdoor injection of flipping bits might need to be extended by the block (for example flash) if it is somewhat non-standard.

yes, thinking to create an empty virtual function for backdoor injection and each block owner need to extend it to implement the actual backdoor function.

this all sounds great to me, thanks @weicaiyang.
I wonder though if this will end up integrating with mem_bkdr_util somewhat, because that already kind of has the integrity format. The only difference for blocks like flash is it has to flip "other" bits too.

this all sounds great to me, thanks @weicaiyang. I wonder though if this will end up integrating with mem_bkdr_util somewhat, because that already kind of has the integrity format. The only difference for blocks like flash is it has to flip "other" bits too.

that's very likely to happen. I will try on the sram_ctrl first.

Create a checklist to test passthrough integrity

[ ] sram_ctrl #9871
[ ] flash_ctrl
[ ] rom_ctrl
[ ] otbn

@rswarbrick @prajwalaputtappa @nikola-miladinovic please follow #9871 to create a integrity mem test to ensure that the integrity is stored in the memory and passed directly to CPU.

just to clarify, flash_ctrl does not completely fall into this category. Because flash does not have enough space to store a plain text integrity. So that one is indeed generated on the fly.  However for flash, we need to check this mechanism still with the truncated integrity.

just to clarify, flash_ctrl does not completely fall into this category. Because flash does not have enough space to store a plain text integrity. So that one is indeed generated on the fly. However for flash, we need to check this mechanism still with the truncated integrity.

Thanks for the clarification. looks like we need to override the sequence a bit more in order to test flash_ctrl for this passthrough integrity

@jdonjdon does this test fall into flash block level now?

@jdonjdon does this test fall into flash block level now?

@tjaychen , I will update in this thread after sync up with @weicaiyang

@tjaychen , @weicaiyang
flash has directed test for this.
https://github.com/lowRISC/opentitan/blob/044b8e8cb9f2505d48870dbf697ba06cdfbd5e8d/hw/ip/flash_ctrl/dv/flash_ctrl_base_sim_cfg.hjson#L359
Test check whether dut can identify corruption of integrity check value or
mismatch of regenerated integrity check value with stored 4bit value during read operation.
Upon detecting integrity check fail, dut assert fatal alert.
Also error propagate to upstream two different ways.

Ctrl Read
Read data stored to read fifo and op_status.err and err_code.rd_err is asserted
at the end of each operation

Host Read
This is similar to the other tlul transactions.
Dut mark tlul response as an error.

So this test checks fatal alert and error detection accordingly per each transaction type.
@weicaiyang please update check list(https://github.com/lowRISC/opentitan/issues/9546#issuecomment-1005137613) for flash_ctrl
as done.

Thanks @jdonjdon
Closing this issue now


Connection error Is Streamlit still running? If you accidentally stopped Streamlit, just restart it in your terminal:  streamlit run yourscript.py

When I try to run webui.bat, it always crashes on this:

When I run it with main.py (I dont know what else to run it with) it crashes with "ERROR:    [Errno 10048] error while attempting to bind on address ('<IP_ADDRESS>', 8080): only one usage of each socket address (protocol/network address/port) is normally permitted"

https://github.com/harry0703/MoneyPrinterTurbo/issues/111#issuecomment-2032354030
Let's try this solution to see if it works properly.

It has been fixed.
You can try again after updating the code.
If there are any issues, feel free to provide feedback.


Fix a type on viewMessages method documentation.

The source argument should be marked as maybe null, not the force_reply argument.

Thank you!


stable/unstable/nightly-only features

Some packages have features that they intend to be "unstable" in that they enable functionality that may change over time, or may even be removed. Closely related to this are features that enable nightly-only functionality (see nightly-only features). I'm not sure if these two are distinct enough to consider separately, though they seem pretty similar to me.
Currently the documentation just recommends clearly documenting which features are unstable. However, that does not provide very good assurances that users know what they are opting into.
I don't know what would be a good way to make it clear that one is opting into an unstable feature. Another consideration is to possibly deny the use of unstable features.
Possible syntax may look like:
[features.foobar]
unstable = true

One thing to consider is the possible confusion of the term "unstable features" with Cargo's own Unstable Features. I'm not sure what terminology would be best here.
I'm opening this issue to track this feature request, but this isn't something we will likely pursue in the near term. This will require an RFC to explore the design in more detail.
See also:

private/hidden features: #10882
deprecated features: #7130
feature descriptions: #4956

I'd suggest that the definition of such a feature also be able to include a rust-version that's either nightly or a later stable version than the crate's rust-version, so that unstable features can use newer/unstable compiler features and the source of any incompatibility will be clear to the user.

Some packages have features that they intend to be "unstable" in that they enable functionality that may change over time, or may even be removed. Closely related to this are features that enable nightly-only functionality (see nightly-only features). I'm not sure if these two are distinct enough to consider separately, though they seem pretty similar to me.

Potentially tying in rust-version to nightly features I think highlights a potential distinctive need between nightly and unstable features.
In rust-lang/rfcs#3416, my proposal for unstable is that its viral (can only be used by other unstable features) but not much other special functionality.

It might also be nice to have any field to mirror the unstable #[stable] attribute


clone-blockify: Run cargo fmt in the end

I've noticed that cargo fmt still formats after the clone-blockify run.
Not a big deal, but maybe clone-blockify could do that for you.

It doesn't seem to be possible to run cargo fmt on just one file?

I'm kind of leaning towards not automatically formatting at all, that's really a separate step.

I think this is fixed now that the formatting doesn't get messed up anymore


missing uid, giud support ?

Hello I wish to benefit of uid,gid support but this fails
$ goofys -f -o allow_other,uid=1000 bucketname /mnt/s3/localbucket
2017/03/13 18:20:26.080288 s3.INFO Switching from region 'us-east-1' to 'eu-central-1'
2017/03/13 18:20:26.276935 main.FATAL Mounting file system: Mount: mount: running fusermount: exit status 1

stderr:
fusermount: mount failed: Invalid argument

I see that I can add --uid 1000 but I also need to specify this in /etc/fstab

You can't mix goofys flags with -o (the latter are fuse flags). Does specifying --uid=1000 not work in fstab? Note that you need to follow the format in README:
goofys#bucket   /mnt/mountpoint        fuse     _netdev,allow_other,--file-mode=0666    0       0

thank you
goofys#bucket   /mnt/mountpoint        fuse     _netdev,allow_other,--uid=1000    0       0

works fine!


Improve or-with disjoint checks

Objective
This PR attempts to improve query compatibility checks in scenarios involving Or filters.
Currently, for the following two disjoint queries, Bevy will throw a panic:
fn sys(_: Query<&mut C, Or<(With<A>, With<B>)>>, _: Query<&mut C, (Without<A>, Without<B>)>) {}

This PR addresses this particular scenario.
Solution
FilteredAccess::with now stores a vector of bitsets, where each member represents an Or "variant".
Filters like (With<A>, Or<(With<B>, With<C>)> are expected to be expanded into A * B + A * C.
When checking whether with and without are disjoint, the without bitset is tested against every with bitset.

Changelog

Improved system and query data access compatibility checks in scenarios involving Or filters

Wording improvement for you.

Improve compatibility checks in scenarios involving Or filters

Improved system and query data access compatibility checks in scenarios involving Or filters.

The implementation looks correct to me. The methods definitely need better names, now that the filter is no longer represented as a set (maybe names based on "and/or").
We can use the same ExpandedOrWithAccess for Without filters with very little changes (I think only is_disjoint needs to be changed), so it may be a good idea.

The implementation looks correct to me. The methods definitely need better names, now that the filter is no longer represented as a set (maybe names based on "and/or").
We can use the same ExpandedOrWithAccess for Without filters with very little changes (I think only is_disjoint needs to be changed), so it may be a good idea.

I would like to see both of these things done in this PR.

Updated the implementation to support Or filters for Without, added more tests (including the one suggested by Alice).

The short discussion on Discord prompted me to try to explain what this PR does as operations on boolean SAT formulas. I feel like this might be a nice addition to the internal documentation:
The new ExpandedOrAccess expresses the with/without clauses as a boolean SAT formula in disjunctive normal form (i.e. a sequence of OR of formulas that contain a sequence of AND of either terms or NOT of terms).
In the query type, normal tuples represent AND formulas while Or<(...)> represent OR formulas. With<T> represent a normal term while Without<T> represents a NOT term.
The sequence of ORs is represented as two SmallVec<[FixedBitSet; 8]> (one in each ExpandedOrAccess) and the inner formulas with AND is split in two FixedBitSets, one in each ExpandedOrAccess. One contains the terms that are "positive" (in the with ExpandedOrAccess) and the other the terms that are negative, i.e. are behind a NOT (in the without ExpandedOrAccess).
(Observation: wouldn't it be more intuitive to place the with and without FixedBitSet in the same structure, and then place instances of that one in a single SmallVec<[NewStructure; 8]>, in order to be more similar to the AND formulas?)
Regarding the operations:
extend_intersect_filter is essentially an OR between two sequences of ORs, so they can just be chained together.
add_with is essentially computing A & ((B1 & ... & Bn) | (C1 & ... & Cn) | ...), which is equivalent to (B1 & ... & Bn & A) | (C1 & ... & Cn & A) | ..., that is we need to insert A into each existing AND formula (i.e. into each FixedBitSet in the with or without ExpandedOrAccess depends on whether A is positive (With<T>) or negative (Without<T>))
extend/union_with is essentially computing ((A1 & ... & An) | (B1 & ... & Bn) | ...) & ((C1 & ... & Cn) | (D1 & ... & Dn) | ...), which is equivalent to (A1 & ... & An & C1 & ... & Cn) | (A1 & ... & An & D1 & ... & Dn) | (B1 & ... & Bn & C1 & ... & Cn) | (B1 & ... & Bn & D1 & ... & Dn) | ..., that is it computes the cartesian product of the two lists of AND formulas and maps each "tuple" to an AND formula, which can be flattened.
is_disjoint is equivalent to computing extend/union_with (with the difference that it can now be computed lazily) and then checking if the resulting formula can ever be satisfied, that is if any of the resulting AND formulas can ever be satisfied. Thus this reduces to check for each tuple of AND formula if they are disjoint, which can be computed by checking that both with FixedBitSet are disjoint with each without FixedBitSet. The PR does this in Filteredaccess::is_compatible and then ExpandedOrAccess::is_disjoint.
(Observation: the PR only checks two combinations of with and without, thus it assumes that a single FilteredAccess doesn't contain conflicting filters)

@SkiFire13 thanks for the excellent write-up! It's quite on point, and it's even been educational for me: for example, I was looking myself for terminology such as DNF to describe the idea behind this. You've done a much better job, as I still struggle with correct semantics, naming and documenting things :D

(Observation: wouldn't it be more intuitive to place the with and without FixedBitSet in the same structure, and then place instances of that one in a single SmallVec<[NewStructure; 8]>, in order to be more similar to the AND formulas?)

I was considering it, but I found it made the code much messier. Lengths of with and without arrays can be different, which requires additional workarounds to combine them into a single array, introducing more problems than it would actually solve.

(Observation: the PR only checks two combinations of with and without, thus it assumes that a single FilteredAccess doesn't contain conflicting filters)

I'm afraid I didn't understand this part, could you expand on that, please? I'm trying to understand if that means that I overlooked some edge cases.

@alice-i-cecile thank you for the comments! That's absolutely fair, I totally agree that things can be named and documented better. I feel somewhat limited by my vocabulary and discrete maths knowledge, so I'll appreciate direct suggestions for naming things and documentation. I feel a bit awkward asking others to document my code, so I'll do my best to improve the bits that I can, but I suspect that this PR will need an additional round of polish from someone with better tech writing skills ☺

I was considering it, but I found it made the code much messier. Lengths of with and without arrays can be different

I'm not sure how that can happen. Looks like every operation that extends one of them is immediately executed on the other one too, preserving the length equatility.

I'm afraid I didn't understand this part, could you expand on that, please? I'm trying to understand if that means that I overlooked some edge cases.

If you have a filter like (With<T>, Without<T>) then this can never match and thus is compatible with every query. In boolean logic this translates to every AND sequence containing both a T and a NOT T term. This can be checked by checking if self.with is ruled out by self.without (and equivalently if other.with is ruled out by other.without, essentially checking all the self and other combinations with is_ruled_out_by.

One additional observation: checking self.with.is_ruled_out_by(other.without) and other.with.is_ruled_out_by(self.without) separately is not enough. Consider for example Or<(With<A>, Without<B>)> and (With<B>, Without<A>). These two filters are actually disjoint, but if you manually calculate their with and without they are:

with
without

f1: Or<(With<A>, Without<B>)>
[[A], []]
[[], [B]]

f2: (With<B>, Without<A>)
[[B]]
[[A]]

When checking whether f1.with is ruled out by f2 you can see that [] and [A] are disjoint, so it's not ruled out.
However when checking whether f2.with is ruled out by f1.without you can see that [] and [B] are disjoint again, so it's not ruled out. So according to the algorithm they may conflict, but in practice we can reason that they can't (in other for an entity to match f1 it has to either have an A, but then it would not match the Without<A> in f2, or not have a B, but then it would not match the With<B> in f2).
So what's the error? We're requiring all of f1's withs to be ruled out by f2's without or the opposite, but a mix of them could happen: sometimes one rules out the other and sometimes the opposite, but one of them always happen for every combination of AND formula from the two filters. It becomes clear when you zip the with and withouts, like I previously observed. Then you get:
Or<(With<A>, Without<B>)>: [ { with: [A], without: [] }, { with: [], without: [B] } ]
(With<B>, Without<A>): [ { with: [B], without: [A] } ]
Finally, looking at every combination to see if they are compatible:

{ with: [A], without: [] } and { with: [B], without: [A] }

the first with is ruled out by the second without, so they are compatible

{ with: [], without: [B] } and { with: [B], without: [A] }

the second's with is ruled out by the first with, so they are compatible

@SkiFire13 I really appreciate all the effort you put into the discussion! I'll need to re-read your comment tomorrow morning and try to write a more complete response. But the thing I stumbled upon and I wanted to give a quick response is the following statement:

f1: Or<(With<A>, Without<B>)> | [[A], []] | [[], [B]]

I don't think the code will actually produce this kind of data structure.
I'd expect it to result in with: [[A]] and without: [[B]].
In this case, I believe the is_ruled_out_by check would behave correctly.

@SkiFire13 huge thanks! Your comments were absolutely on point, the logic was indeed flawed, and combining with and without filters under one array helped to fix it. My first impression of this approach was wrong, it actually made the implementation simpler and easier to follow.
I've added tests with all the scenarios that you described where the previous approach was falling and confirmed that the algorithm now handles them correctly.
I really appreciate the effort you've put into reviewing the code and the explanations that you've provided.


sst/NextjsSite: add option to specify custom build output path

updating NextjsSiteProps with the new option called buildOutputPath
updating the constructor to pass this value to OpenNext optionally

See issue #3515 for more details about why I belive this is beneficial.

Thanks, we'll take a look!

hey @jayair , have you had a chance to look at this? any feedback?

Hmm I missed this somehow. Checking on it with the team.

@jayair sorry to ping you again, just wondering if there is any feedback on this PR or if the team decided that there is no need to expose more options from OpenNext?

Oops sorry, been a bit busy with the holidays. I'll check again.

Hi, is this implemented yet ?

Oh I missed this. I'll ping the team.

Might've slipped on this one. Let me ping the team again.

Thanks @morficus! Moved the prop to:
new NextjsSite(stack, "Web", {
  openNext: {
    buildOutputPath: "...",
  }
}

Will be in the next release.


ci: added python

Added a GitHub CI action for the Python bindings with Maturin for building, Ruff for formatting checks, and pytest for running tests. This is related to #248

Merging, let's do follow-ups on @travenin's comments where appropriate.


chore(deps): update all non-major dependencies

This PR contains the following updates:

Package
Type
Update
Change

lint-staged
devDependencies
minor
^15.2.11 -> ^15.3.0

octokit
dependencies
patch
^4.0.2 -> ^4.0.3

pnpm (source)
packageManager
patch
9.15.1 -> 9.15.2

[!WARNING]
Some dependencies could not be looked up. Check the warning logs for more information.

Release Notes

lint-staged/lint-staged (lint-staged)
v15.3.0
Compare Source
Minor Changes

#1495 e69da9e Thanks @iiroj! - Added more info to the debug logs so that "environment" info doesn't need to be added separately to GitHub issues.

#1493 fa0fe98 Thanks @iiroj! - Added more help messages around the automatic git stash that lint-staged creates as a backup (by default). The console output also displays the short git hash of the stash so that it's easier to recover lost files in case some fatal errors are encountered, or the process is killed before completing.
For example:
% npx lint-staged
✔ Backed up original state in git stash (20addf8)
✔ Running tasks for staged files...
✔ Applying modifications from tasks...
✔ Cleaning up temporary files...

where the backup can be seen with git show 20addf8, or git stash list:
% git stash list
stash@{0}: lint-staged automatic backup (20addf8)

octokit/octokit.js (octokit)
v4.0.3
Compare Source
Bug Fixes

deps: bump @octokit/app and @octokit/types (#2763) (33d03d9)

pnpm/pnpm (pnpm)
v9.15.2: pnpm 9.15.2
Compare Source
Patch Changes

Fixed publish/pack error with workspace dependencies with relative paths #8904. It was broken in v9.4.0 (398472c).
Use double quotes in the command suggestion by pnpm patch on Windows #7546.
Do not fall back to SSH, when resolving a git-hosted package if git ls-remote works via HTTPS #8906.
Improve how packages with blocked lifecycle scripts are reported during installation. Always print the list of ignored scripts at the end of the output. Include a hint about how to allow the execution of those packages.

Platinum Sponsors

Gold Sponsors

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Hywax Assistant.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:
File name: pnpm-lock.yaml
Scope: all 2 workspace projects
Progress: resolved 1, reused 0, downloaded 0, added 0
 ERR_PNPM_FETCH_404  GET https://npm.pkg.github.com/@hywax%2Ftools-eslint: Not Found - 404

This error happened while installing a direct dependency of /tmp/renovate/repos/github/hywax/skillq

@hywax/tools-eslint is not in the npm registry, or you have no permission to fetch it.

An authorization header was used: Bearer ghp_[hidden]


Ax 1278 upgrade prediction page

Description
//Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes Jira Ticket #
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Is this a UI Change? If so please include screenshot of before and after states below
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have assigned 2 reviewers to check my work
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

Note to self:  Bloated PRs like this can't become the norm. Trim it down to smaller, bite-sized tasks

Added 5k items, removed 1.9k. gotta be aware of the bloat incoming here.


Add -Tags on Task

Add support for tags / metadata on tasks, to allow for advanced scenarios where metadata on the different tasks can make your solution more flexible.
Possible Solution

A new parameter, as a hashtable.
The detailed documentation needs to be extended to handle the display of the tags
Your Environment

Module version used: 4.9.0
Operating System and PowerShell version: 5.1+

@Splaxi Can you expand on what the purpose of tags would be? Would it be for grouping tasks and executing all tasks with a certain tag? A list of scenarios would be helpful.

Top of mind:
Category
My latest project will be having maybe 100 tasks, that the user can pick from and having a category would help with filtering.
Prerequisites
I know depends/dependson exists - but that is used as a execution order constrainment. Prerequisite would allow for having some kind of metadata that could help / guide the user in terms of what a given task needs - before being able to execute.
Execution/Segment
Making it possible to give the user an idea of the "rough" execution order of the different tasks - to help guide them in creating the buildfile. As I'm going to have 100 tasks, having an idea of when it makes sense to execute the different tasks, would be helpful
Version
To help the user to note when a task has changed, as tasks might evolve over time, a version on the task level would be helpful. Could be standalone property, that would allow PSake to load multiple tasks with the same name / alias, as the combination of the Task name AND version, would make it unique.


Can not run in parallel

When I want to start some model training programs at the same time, the program will shut down and the error reports Memory Error. What should I do if I want to run a few ffcv programs in parallel?

When I want to use multi-threading to run different models on different subsets of one big dataset, after creating these threads, this project will report ''Numba: Attempted to fork from a non-main thread, the TBB library may be in an invalid state in the child process.'' So what should I do if I want to run some different threads in one process?


Add support for cdk --parameters and --context

It would be great if we have the ability to supply --parameter and --context while we are deploying the stacks.

Yeah. Good point. As of now I suggest using OS-level environment variables that are implemented via "env" parameter in DeploymentExecutor.

@elgamala started working on this right now: https://github.com/Biomapas/B.AwsCdkParallel/pull/5/files. Still, a long way to go, but fundamentals are there. Will let you know when finished.

https://github.com/Biomapas/B.AwsCdkParallel/pull/5 merged


game crash

I changed the area of the animals and the game crashed
play.log

Closing bug. Please reopen in new bug report using the new templates if this issue persists.