Pair indexval

Implements #106
Allows the notation T[i=>2,j=>1] for an ITensor with indices i,j.

Codecov Report

Merging #111 into master will decrease coverage by 0.04%.
The diff coverage is 91.3%.

@@            Coverage Diff             @@
##           master     #111      +/-   ##
==========================================
- Coverage   94.47%   94.42%   -0.05%
==========================================
  Files          27       27
  Lines        2570     2585      +15
==========================================
+ Hits         2428     2441      +13
- Misses        142      144       +2

Impacted Files
Coverage Δ

src/indexset.jl
100% <100%> (ø)
:arrow_up:

src/itensor.jl
97.57% <100%> (-0.03%)
:arrow_down:

src/index.jl
92.85% <71.42%> (-3.07%)
:arrow_down:

Continue to review full report at Codecov.

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

Thanks Matt. So those are a bit strange I agree. The idea, though, was that then the map calls in the fancier versions of getindex and setindex! for ITensor could just call ind to grab the Index and val to grab the value, and not have to check isa IndexVal. That was getting tricky, because now the inputs could either be IndexVal or Pair{Index,Int}.
But I'm open to a better solution for sure!
One thing I don't like about this solution is that it makes a function val with the behavior of val.

One idea could just be to move these val and ind overloads for AbstractVector{IndexVal} inside of getindex and setindex!, so that they don't get exported.

I think a better way would be to split apart the getindex and setindex! functions into a basic one that accepts IndexVal or Pair{Index,Int} (either with a union, or leaving it generic and then converting Pair{Index,Int} -> IndexVal, and then another one that accepts AbstractVector{IndexVal} (for now we could just not have that version work with Pair{Index,Int}?).

Ok I will give that a go!
You know, maybe it's also better to make a wrapper for the overloads taking Pair{Index,Int}. The wrapper would then convert them into IndexVals and call that version. Thinking about it more, it's weird to be able to mix notations: T[i(1),j=>2]

One way you could do that with a generic function is to have a signature getindex(::ITensor,::T...) where {T} which would mean that all of the inputs have to be the same type. You could also change it to ... where {T<:Union{IndexVal,Pair{Index,Int}} to make it more specific.

The wrapper version is fine too, I am just thinking that it may be good to come up with a nice generic pattern for this so that any function accepting IndexVal also accepts Pair{Index,Int}, like how I made it so that any function accepting TagSet also accepts AbstractString.

Good suggestions.
Just now, more out of curiosity than anything, I just tried defining IndexVal as Pair{Index,Int}. It actually works with very minimal changes needed (and no changes at all to any ITensor functions).
But that approach has some disadvantages:

seeing IndexVal as a type is nice for understanding the purpose of it (it's an Index paired with a value). If it's just a "typedef" i.e. const IndexVal = Pair{Index,Int} then when you do typeof on an IndexVal it just shows Pair{Index,Int}.
the constructor would not check if the value is valid (e.g. greater than the Index dimension)

One question just for my own education is, is the definition of (i::Index, c::Colon) as returning an array of IndexVal's a choice of ours? Or is that the standard way one slices arrays in Julia?
I ask because it seems a cleaner approach could be to just make something like Pair{Index,Colon} and have getindex and setindex! accept Pair{Index,T} where T could be Int and Colon, but also UnitRange{Int} which is the typeof(2:4) for example. Then we could be ready to allow Index slicing in the future when we want to get into that later.

I was also thinking that maybe we could define const IndexVal = Pair{Index,Int}, but I think your argument about wanting a size check in the constructor is a good reason not to do it.
This is the definition here: https://github.com/ITensor/ITensors.jl/blob/master/src/index.jl#L173.
I believe this definition was added by Katie at some point to help with a slicing operation. As you say, I think I would prefer to pair an Index with a range to represent slicing.
I think that idea of dispatching on Pair{Index,T} where T is Int, Colon, UnitRange, etc. is a good way to go. In that case, it seems like we may want a more general IndexRange object like the following:
IndexRange{T}
   i::Index
   r::T
end

that gets constructed from Pair{Index,T}. If T===Int it is treated as an IndexVal (we could define const IndexVal = IndexRange{Int}). Then slicing would involve IndexRange{Colon}, IndexRange{UnitRange}, and even non-contiguous ranges with IndexRange{Vector{Int}}.
We would need to think of course about what the result of slicing an ITensor is. I think it should be a view of the tensor data (i.e. share the storage of the original tensor). It also seems like the best approach is to have the new ITensor have indices that are themselves the sliced indices of the original ITensor (otherwise slices of ITensors with the same indices wouldn't recognize each other, which doesn't seem good). In that case, a sliced ITensor would have IndexRange indices.
However, this all makes me think that maybe instead of having a separate Index and IndexVal/IndexRange, it could all be merged into just Index that is parametrized over a slice type:
struct Index{T}
  id::IDType
  dim::Int
  dir::Arrow
  tags::TagSet
  slice::T
end

A standard Index would be when T===Colon. We could then define const IndexVal = Index{Int}, and const IndexRange = Index{UnitRange}. I am not sure what the implications of that would be, but it might be nice to just have a single base type Index that can get passed around.

Hi Matt, yes I think it’s good to discuss this in depth this week. I do want to get the design right in terms of having all these capabilities (different types of Index ranges, etc.). One other consideration is where do quantum numbers go when we add that in? A good design could be to have Index{T} where T is a type that holds extra information like that, then use IndexRange to add additional slicing information on top of either Index{Nothing} or Index{QNInfo} etc. (just making up some names there).
But an alternative to IndexRange{T} could just be Pair{Index,T} because the validity of the range will eventually be checked in lower-level code for sure. Then that way it’s easier for users to understand some code since they don’t have to understand a new type. And it lightens the code complexity. It’s a tradeoff for sure, though, because IndexRange is more self-documenting and gives us the opportunity to produce better (higher-level) error messages. Hm.

Ignoring the issues of IndexRange for now (by not allowing Pair{Index,Colon}), would this be good to go after conflicts are resolved?

I think I'll actually re-do this pull request instead, pulling out the best parts but leaving off some of the changes. (But let's leave it open for now so I can remember to do it!)


Add issue credential endpoint protection

Per discussion today on the DTS Standup, add protection to the "issue credential" endpoint to prevent issuance without whatever authentications are configured into the application.  I'm not sure technically how to protect the endpoint, but from a business perspective, the following apply:

if the service is protected by the need to proof an OIDC credential from a configured IdP (e.g. vc-authn, GitHub, IDIR, etc.), do not allow issuance without such a token.
if the service is protected by the need to have a valid email invitation token, do not allow issuance without such a token.
if the service is unprotected (e.g. "Unverified Person"), no issuance protection is necessary.

As noted, I'm not sure of the technical challenge of implementing those protections, but if it is difficult, let's discuss.
Thanks

The new rules will only be able to protect the issue-credential endpoints, since the services will have no way of knowing whether a request for  connection is legitimate or not in case of unprotected instances of the issuer web application.
I am planning for request to the issue-credential endpoints to work this way:

submit the invitation token OR
submit a valid authorization header containing a token issued by the trusted authority OR
specify a schema id that is whitelisted (unprotected) in the controller configuration.

I am not yet sure it will be possible to maintain the current flexibility configuring each instance if complex checks (e.g.: id token + invite token) need to be implemented, so I will leave this considerations on hold until the main part of the authorization framework is in place.


BigDecimal and Primitive Data Type Arithmetic Program in Java

Article checklist
Pre-submission checks

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

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

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

Formatting and structure checks

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

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

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

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

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

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

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

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

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

Grammar & plagiarism checks

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

Technical checks

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

Topic suggestion this closes

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

`This closes #3611

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

plagiarism check done ✅
I think this article is light on substance. What do you think? @Dawe-7

@ahmadmardeni1 @Dawe-7
I will add some more information in a while.
Thank you

plagiarism check done
I think this article is light on substance. What do you think? @Dawe-7

@ahmadmardeni1 I agree with you, it requires more content.
@NdoloBonface consider adding more content.

@ahmadmardeni1 @Dawe-7
Done

What is the status of this PR please?
@ahmadmardeni1 @Dawe-7

What is the status of this PR please?
@ahmadmardeni1 @Dawe-7

@NdoloBonface,  I'm reviewing one more article then i'll work on yours.

Changes done. Thanks @Dawe-7

Nice article @NdoloBonface, please go through the changes made by your peer reviewer and I to help improve the quality of your future articles.
Thank you for the review @Dawe-7.


Removed updateConstraintsIfNeeded from ARNavigationButton

Does anyone foresee any repercussions for removing this line?

According to @orta this line only existed for tests.
Can you rebase please?

🍏

👍


I forgot my transfer code

Hey, I have about 30 ada on my nami wallet which I want to transfer to a certain address. Now unfortunately I forgot the code you need to transfer it. Can I reset this password?
With kind regards,
Job

Talk to Cardano Dev on the Live support page so that your issue can be looked into.

He's a scammer don't go to that website @Job0202020


Linear scroll up ≠ down

Scrolling down works like a charm, but scrolling up works only for a faster turning speed of the wheel.

Thank you for your feedback!
What happened as you slowly scrolled up? Is it not linear, or is it not responding at all?
It would be helpful if you could possibly provide more specific details and instructions for reproducing this problem, for instance, what is your macOS version and what mouse or trackpad are you using?

I have a 2018 Intel MacMini with MacOS 12.3.1 and Logitech B100 mouse.
The scroll is always linear, but if I scroll up slowly, nothing happens, only if increasing the rotation speed of the wheel it start to react and scroll. In the case of scrolling down it works as it should: every single step of the wheel scrolls down the page with the amount set.
This behaviour is exactly the same in every application and I think there's nothing wrong with the mouse, because it works as expected when the linear scrolling is disabled.

Thank you for giving detailed information!
I can't reproduce this issue with my Logitech ERGO M575. I've added some detailed logs for troubleshooting. Would you mind upgrading to v0.6.0-beta.3 and sending me the logs? I'd like to see the events received when you scroll up slowly.
You can upgrade to that version by checking “Include beta” and clicking “Check for Updates...” in the Preferences.

BTW, have you installed Logitech Options or something similar?

I have no Logitech software installed.

The fix may have side effects for Magic Mouse; if anyone encounters problems with this version, please let me know.

Now it works perfectly!
Thank you!


Preserve HTML character entity references

Juice doesn't preserve the state of your HTML character entity references when it works with documents. It makes two types of modifications:

It will translate some HTML character entity references in the outputted document. For instance, – will be turned into – after being passed through juice.
It will do the opposite for other characters. For instance, & will become &.

This behavior might be fine in most cases, but it has a number of consequences. One consequence is that opening the HTML file in a browser will display â€“ instead of the n dash, to provide example for the 1st type of modification. Further, with my company's email system, sending the email like this will cause the email to be sent with utf-8 encoding instead of ascii, which is what it normally sends as. Independent of whether ascii is a good choice for encoding, or not, the fact that juice affects that is the principle I'm concerned with.
There would be more consistent input-output behavior if the character entity references were untouched by juice.
Edit: Upon looking at the source, this seems like an issue with JSDom. I'll be looking into the issue further there.

I confirmed this is resolved and added a test case to prevent regression. Closing.

Why are apostrophe's always converted to '? Even ' will be converted to '
I can't use ' as its for a HTML email.
Are there any potiental workarounds for this?

@begot I'm not which version you are using, but this example shows it working fine: https://tonicdev.com/56a97f108d0e800d0005f565/56a97f108d0e800d0005f566
If you can reproduce the issue, please post a link

I was confused by this for a bit. I was using declassify and it will convert ' to '. So no issue in juice, but if you are using declassify right afterwards you'll have this problem.


[WIP] Refactoring: Testing utils

This is a refactoring of the utils module testing. Not fully completed and haven't added any new test yet. Just restructured to a class-per-submodule based structure :-). Please let me know what you think.

I was a little bit sceptical at first since the test classes actually don't do any setup/teardown but I like how it give everything a clear structure -- good idea!

Looks great, just merge it :sunflower:

Great, thanks! My first contribution! :tada:

:birthday:


datsets typo causing push issue

I'm trying to compile an audiograph for an overlay and I'm getting this issue:
TypeError: datasets.push is not a function
    at normalizeSpecification (audio-graph-normalize.js:34:16)
    at Module.compileAudioGraph (audio-graph.js:18:106)

I think it might be because datasets is misspelled datsets in a few places:
https://github.com/see-mike-out/erie-web/blob/8255b2bb609ce135d71c0211fe111e7416af5ffa/src/classes/erie-datasets.js#L6
I'll try to submit a PR.

I don't have permissions to push a branch to start a pull request, but I went a little deeper into this problem and discovered a few things I had to change to get it working in my application.
In this section I added some more conditions that prevent a null dataset from getting pushed into datasets.
https://github.com/see-mike-out/erie-web/blob/8255b2bb609ce135d71c0211fe111e7416af5ffa/src/compile/audio-graph-normalize.js#L32
    if (spec.data && !spec.data.name && spec.data.type !== "unset" && spec.data.values) {

you probably don't need all four of those checks, but I wanted to be real sure it wasn't putting something in that shouldn't be there. I added the same set of conditions here:
https://github.com/see-mike-out/erie-web/blob/8255b2bb609ce135d71c0211fe111e7416af5ffa/src/compile/audio-graph-normalize.js#L43
then I added another condition to the getData function so the data values were grabbed if they were embedded in a data object with a name.
https://github.com/see-mike-out/erie-web/blob/8255b2bb609ce135d71c0211fe111e7416af5ffa/src/data/audio-graph-data-import.js#L21
  if (data_spec?.values) {
    return data_spec.values;
  } else if (data_spec?.data?.values) {
    return data_spec.data.values;
  } else if (data_spec?.csv) {

And that got the overlay working in my use case. Hope this helps!

Hi, thank you so much! I've been busy and finally discovered! I'll look into it later and make a related patch soon! Thank you again :)

I finally got time to reflect the suggested fixes. Thank you again. It is now available on this commit as well as via NPM.


[Localization] Reference Error when Using Localization in a Package

Hello,
I need to keep my localization along with my core features in a separate package, but I'm getting an error when ever I reference the file in my package that references flutter_gen
Error: Couldn't resolve the package 'flutter_gen' in 'package:flutter_gen/gen_l10n/app_localizations.dart'.
Here is a demo  in github
https://github.com/moneer-muntazah/demo_app
in my main application I get a slightly different error message
Error: Error when reading '.dart_tool/flutter_gen/gen_l10n/app_localizations.dart': The system cannot find the path specified.
Is there a problem with having localization in a package?
my flutter doctor -v
[√] Flutter (Channel stable, 3.3.4, on Microsoft Windows [Version 10.0.19043.2006], locale en-US)
    • Flutter version 3.3.4 on channel stable at C:\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision eb6d86ee27 (28 hours ago), 2022-10-04 22:31:45 -0700
    • Engine revision c08d7d5efc
    • Dart version 2.18.2
    • DevTools version 2.15.0

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Moneer\AppData\Local\Android\Sdk
    • Platform android-33, build-tools 30.0.3
    • ANDROID_HOME = C:\Users\Moneer\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android\Android Studio1\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[!] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.5)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.3.32922.545
    X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the "Desktop
      development with C++" workload, and include these components:
        MSVC v142 - VS 2019 C++ x64/x86 build tools
         - If there are multiple build tool versions available, install the latest
        C++ CMake tools for Windows
        Windows 10 SDK

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio1
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[!] Android Studio (version 4.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    X Unable to determine bundled Java version.
    • Try updating or re-installing Android Studio.

[√] IntelliJ IDEA Community Edition (version 2021.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] VS Code (version 1.71.2)
    • VS Code at C:\Users\Moneer\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.19.0

[√] Connected device (4 available)
    • Nokia 2 3 (mobile) • PT99621AA1A30902750 • android-arm    • Android 11 (API 30)
    • Windows (desktop)  • windows             • windows-x64    • Microsoft Windows [Version 10.0.19043.2006]
    • Chrome (web)       • chrome              • web-javascript • Google Chrome 105.0.5195.127
    • Edge (web)         • edge                • web-javascript • Microsoft Edge 105.0.1343.42

[√] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 2 categories.

Thank you

There is an option synthetic-package in l10n.yaml can anyone tell me what it does? I tried setting it to false but it doesn't seem to do anything.

@moneer-muntazah I fetch your project and run it but I don't see this issue. Can you provide Steps to reproduce?

There is an option synthetic-package in l10n.yaml can anyone tell me what it does? I tried setting it to false but it doesn't seem to do anything.

Please refer to this comment for more detail. This is a known issue being tracked at #84979, you can follow up on it for further updates.

Hi @huycozy thank you for the references. I will follow up with them.


Fix for back-button

If the back-button was tapped, the transition wasn’t updated in the
delegate when navigating through multiple layers.
This fixes this, by using the transition from the fromVC
Hopefully this fixes the final bug caused by the back-button

I need to first figure out some other problems


[feat] count and show file slices for run_cluster Procedure

show file slices for run_cluster Procedure as Integer

sorry for creating a wrong pull-request


Fix small typo

Also thank you for creating this!  I've been wishing I could easily source-control my dashboards since forever.  This finally gives me an easy way to do so.
Any chance this will be adopted by the Grafana org?

Thanks @geekdave, let make Grafana ecosystem better together :)

Its up to @torkelo and his team to adapt this. But I see a lot of people using wizzy as it gives you an ease of managing Grafana entities and automating them.

This is defiantly something we want make easier (this and define data sources & user & orgs via files), but no ETA or idea when time can be made for this :(


Documentation still refers to gpt_index instead of llama_index -

I appreciate the effort that is going into llama_index but please help avoid frustration.
The main page of the repo, mentions
2/25/2023: By default, our docs/notebooks/instructions now reference "LlamaIndex" instead of "GPT Index"
Please be more explicit, that the "default" does not mean up-to-date.  Please state that the documentation is out of date, and to translate "gpt-index" to "llama_index"
It is confusing to attempt to debug errors, like #926 when the latest version of the docs references to
classgpt_index.foo.bar
Thanks.

Fixed!


Navigating back to previous challenge, reset all the submitted code

Describe your problem and - if possible - how to reproduce it
It is happening after the update: When I go back to the previous challenge, it reset all the code even if I have submitted it already.
Add a Link to the page with the problem
No specific page because It is happening with all challenges.
Tell us about your browser and operating system

Browser Name: Chrome
Browser Version: Latest
Operating System: Windows 7

If possible, add a screenshot here

I think you mean: You submitted and successfully passed a challenge. Then navigated away to a different challenge. And then you came back to the original challenge?

exactly

This is an expected behaviour. We are not storing the challenge solution on a localStorage or on the Database once it has been completed and submitted successfully.
Although you do have the option to download your solution if you needed to on the completion modal. Thanks for reporting. I am going to close this.


Picker haptics

WHAT
Haptics threshold was exposed in rememberRotaryHapticHandler api.
Haptics were also added into pickerGroupItemWithRSB for better usability
WHY
There were no haptics in pickerGroupItemWithRSB
HOW
rememberRotaryHapticHandler was used for triggering haptics asynchronously
Checklist :clipboard:

[x] Add explicit visibility modifier and explicit return types for public declarations
[x] Run spotless check
[x] Run tests
[x] Update metalava's signature text files

@rajat4064g should approve, consider mine a +1, unless you need to land urgently.


FYI: Some projects not listed in README

FYI: The following projects are not listed in README:
bloc_flutter
mvi_flutter
simple_bloc_flutter

Thanks! I was planning on doing a write-up for those before publishing them, but they've been around for a while now and I've been too busy to get to it. I'll add the to the README and index.html


new image

Why putting a new image will restart all the indexing?

yes if you need to add new image then you need to run whole index, Thanks you to mentioning this in next update I will try to fix this

+1 yes if you added this feature it would add a lot to DeepImageSearch


⚠ Bofrost.fr has degraded performance

In 720d02d, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1090 ms

Resolved: Bofrost.fr performance has improved in 57bc82a after 6 minutes.


Simplify internal CN stats

Signed-off-by: Alex Tomlinson<EMAIL_ADDRESS>

I think it'd be useful to have rollup stats to total bytes read/written by each job type so that we can easily see the distribution of media usage by job.  Probably one per tree, with a rollup for the entire kvdb.

I think it'd be useful to have rollup stats to total bytes read/written by each job type so that we can easily see the distribution of media usage by job. Probably one per tree, with a rollup for the entire kvdb.

Persisted?  I'm a little leery about persisting it.  When would it be reset?

No, not persisted, just something we can dump via rest or at close.  But if that's out of scope we can add it in whenever, we're really gonna need it when we have to starting figuring out what to throw out in the cloud environment (probably scatter remediation has to be disabled or set really high to let gc clean up scatter, or something....)

Some worthy ideas here, but this would be a large code change and our focus is on other areas of HSE.


Added AO's logo to the homepage

Also removed the Location container from the wallet overview.

Added A0's logo to our homepage footer.


Are xrefs supposed to bidirectional? MONDO:0002144 "hyperuricemia" -> ICD9 790.6 "Other abnormal blood chemistry"

Mondo term (ID and Label):
MONDO:0002144 "hyperuricemia"
Xref that should be fixed (ID and label):
ICD9 790.6 "Other abnormal blood chemistry"
Other comments:
Is MonDO saying

If your patient has asymptomatic  hyperuricemia, you could encode it as 790.6?

I think that's fine.
But if it's saying

if you see a patient with 790.6 in their EHR, then they have asymptotic hyperuricemia

That would be wrong most of the time, right?

xref is inherently ambiguous - for some sources we ensure these are 1:1
(unless we do a proxy) merge, but not for ICD9
I recommend using the skos mappings or the owl equivalencies file for
precise unambiguous mappings
On Wed, Dec 11, 2019 at 2:58 PM Mark A. Miller<EMAIL_ADDRESS>wrote:

Mondo term (ID and Label):
MONDO:0002144 "hyperuricemia"
Xref that should be fixed (ID and label):
ICD9 790.6 "Other abnormal blood chemistry"
Other comments:
Is MonDO saying
If your patient has asymptomatic hyperuricemia, you could encode it as
790.6?
I think that's fine.
But if it's saying
if you see a patient with 790.6 in their EHR, then they have asymptotic
hyperuricemia
That would be wrong most of the time, right?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/monarch-initiative/mondo/issues/1033?email_source=notifications&email_token=AAAMMOJ2STGLQ6KDJFYCU7LQYFA5ZA5CNFSM4JZULLR2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4H73TPTA,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAMMOPMLTMA4BYHQVFCRHTQYFA5ZANCNFSM4JZULLRQ
.

Thanks, @cmungall . That's helpful clarification.

@cmungall I though of two followup questions

how do you decide which predicate to assert? Is there a paper I can read, or some web documentation?
there are ?mondo ?p ?external assertions as well as ?external ?p ?mondo assertions. What's the significance of the orientation of those statements?

@nicolevasilevsky can you provide a link to the section in the manual?
I think this only happens with owl:equivalentClass triples. This is a symmetric property. The owlapi writes these in an arbitrary (but deterministic) order.

https://mondo.readthedocs.io/en/latest/editors-guide/f-entities/#axiom-annotations-on-xrefs

Do we have anything in the users manual? What the editor sees and does will
be different
On Fri, Dec 13, 2019 at 11:43 AM Nicole Vasilevsky<EMAIL_ADDRESS>wrote:

https://mondo.readthedocs.io/en/latest/editors-guide/f-entities/#axiom-annotations-on-xrefs
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/monarch-initiative/mondo/issues/1033?email_source=notifications&email_token=AAAMMOPAO6KFLHMREHCWUG3QYPQUVA5CNFSM4JZULLR2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEG3BQNQ#issuecomment-565581878,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAMMOO4GZOICAAID7JLZQ3QYPQUVANCNFSM4JZULLRQ
.


Can't log in

I can't sign in on any of my devices or browsers, both Linux and Windows. Tried refreshing, tried clearing cache, didn't help. Same if I try to log in with username or email.

We just pushed a change which may or may not have addressed this (changed some underlying error messaging code)
Can you try again? And if it doesn't work, specify which browsers and versions you're using?

Works now! Thanks!


Prevent exec start on a non-running container

Currently, trying to do run execStart() will make docker-client throw
a DockerRequestException with a generic 500 error message.
Instead have docker-client check if the container is running and throw
an IllegalStateException otherwise.

I didn't do anything for execCreate since that method doesn't know about the container ID for which the exec was created. So even though you can't start an exec for a container that's not running, I think the way it works right now (ExecNotFoundException is thrown) is OK.


Naming - DID - Rename Distributed Identity to Decentralized Identifier

Rename the package extensions/iam/distributed-identity/.. to extensions/iam/decentralized-identifier/..
Dominik Pinsel<EMAIL_ADDRESS>Daimler TSS GmbH, legal info/Impressum

According to @jimmarino the name "Decentralized Identity" is preferred. Reopening to change it.


Update USWDS version to 2.7.0

Update the version of USWDS we're using to the latest (2.7.0 as of this writing). I don't believe there are any breaking changes relevant to our code but it's worth double checking.

https://designsystem.digital.gov/about/releases/

After reviewing, it doesn't look like there are any breaking changes.


HTML snippets

HTML snippets are generated in multiple places throughout multiple manners. This situation could soon spin out control sometime. It slows down code review, and makes it hard to maintain and scale.
I am taking this pace to discuss where we should plant our html snippets so it grow in the right place, our code can scale, easy to review, and easy to scale.

Close this, discuss it asynchronously.
https://docs.google.com/document/d/1NEUQ6txLOeq6jnenLCSE4mr3kpa0xC2v2emNJ4qcaY0/edit?usp=sharing


Typo and Error maybe??

URL for relevant page?
https://docs.influxdata.com/influxdb/v1.1/guides/writing_data/
What products and version are you using?
influxdb 1.1.1
Where did you look before opening the issue?
Writing a float to a field that previously accepted booleans:
---> It should be "Writing a float to a..."
And also, 200 OK isent supposed to be success? why is 204 the one considered OK and the 200 the one with an error?

@MrD2, thank you for pointing this out! It's actually not possible to get a 200 OK with a write so we've removed that very outdated part of the guide. 204 No Content is the response for a successful write.
Could you elaborate on the typo you mentioned? I'm having trouble identifying the typo in "Writing a float to a". Again, we really appreciate your feedback.

Closing this but feel free to reopen if there's still an issue!


Repeat action

Support for Repeat action through
f(x) "expression": "Repeat(count(sourceArrayField), sourceSimpleField)"

value of the 'sourceSimpleField' value gets repeated based on count of 'sourceArrayField' and assigned to target mapped field

Linked to issue - https://github.com/atlasmap/atlasmap/issues/2276

@shanthi4647 please squash all your commits into one and correct the commit message to conform to our conventions:
fix: one_to_many mapping - repeat source value based on count
Fixes #2276

Opening a new one at https://github.com/atlasmap/atlasmap/pull/2287


How to create table without primaryKey

Issue
I am trying to create a hyper-table in timescaleDb, instructions
When I try to run SELECT create_hypertable('conditions', 'time'); it gives me the below error
ERROR:  cannot create a unique index without the column "time" (used in partitioning)
SQL state: TS103

Based on this post seems table should not have a primary key to be able to become as hyper-table.
I wasn't able to config sequelize to prevent creating id (or PrimaryKey)
@Table({timestamps: false, tableName: "conditions"})
export class Conditions extends Model {
//   @Column({ type: DataType.UUIDV4, allowNull: true, primaryKey: false})
//   id: string;

  @Column({ type: DataType.DATE, allowNull: false})
  time: string;

  @Column({ type: DataType.TEXT, allowNull: false})
  location: number;

  @Column({ type: DataType.DATE, allowNull: false})
  temperature: number;

  @Column({ type: DataType.DATE, allowNull: true})
  humidity: number;
}

Not sure if it;s a defect or feature request (or something exists and I wasn't able to find it)
Versions

"sequelize": "^6.6.5",
"sequelize-typescript": "^2.1.0"
"typescript": "^4.3.5"
Issue type

[x] bug report
[ ] feature request

Actual behavior

Expected behavior

Steps to reproduce

Related code

insert short code snippets here

I was able to work around this by doing this:
@Column({ type: DataType.DATE, allowNull: false, primaryKey: true })   uptime!: string;
It seemed to work if I set the time field as the primary key.


page.goto is stuck on some websites on firebase cloud functions

Steps to reproduce
Tell us about your environment:

Puppeteer version: 1.13.0
Platform / OS version: Google Cloud
URLs (if applicable):
Node.js version: 8
2GB

A bit more information:

I tried literally all versions of puppeteer starting from 1.1.0 to 1.14.0
the problem occurs only in google cloud (cloud functions). it works on any other cloud platform or locally.
My website has ssl error.

What steps will reproduce the problem?
Please include code that reproduces the issue.
await.page.goto("somewebsite.com")
What is the expected result?
Page expected to be loaded.
What happens instead?
Instead I receive timeout in google cloud.
I didn't share the code because there is no problem with running it locally or on AWS.
I am stuck on this for few weeks already. The website does not load ONLY on Google Cloud however it does load locally or in AWS lambda.
The problem is that the error is not helpful at all, the page.goto is just timing out.
Navigation Timeout Exceeded
I was wondering if there is a proper way to debug this.
Could it be OS issue?
but then again, AWS and Google cloud are both Linux based?
Note: After opening a ticket on google cloud support, I was redirected to firebase support.
Looks like its firebase related

Same for: svyaznoy.ru
When increasing the timeout to a really big number (like 500000000) it's just stuck...
with puppeteer-firefox it's working fast...

I have the same problem with v1.7.0 & v1.14.0.
It shows following logs.
Function execution started
Unhandled rejection
TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
    at Promise.then (/srv/functions/node_modules/puppeteer/lib/LifecycleWatcher.js:143:21)
  -- ASYNC --
    at Frame.<anonymous> (/srv/functions/node_modules/puppeteer/lib/helper.js:110:27)
    at Page.goto (/srv/functions/node_modules/puppeteer/lib/Page.js:656:49)
    at Page.<anonymous> (/srv/functions/node_modules/puppeteer/lib/helper.js:111:23)
    at Main (/srv/functions/index.js:46:20)
Function execution took 32783 ms, finished with status: 'crash'

+cc @steren
This looks like a dupe of #3120

@aslushnikov no, this is not duplicate. It's not about being slow. It's about not being resolved at all.
page.goto is always timing out. no matter what.

I tried literally all versions of puppeteer starting from 1.1.0 to 1.14.0
RAM is set to 2GB in google cloud.
the problem occurs only in google cloud (cloud functions). it works on any other cloud platform or locally
My website has ssl error

I'm getting sporadic timeouts (usually every 3-4 requests) on my GCP Cloud Function, either with goto or setContent. I've tried different runtimes (8, 10) and regions to no avail.
I'm going to move this over to AWS in the meantime.

I previously submitted a ticket to support and I no longer receive the error
They mentioned my memory usage and suggested I increase from 512mb to 1GB
In addition node 8 was previously in beta and recommended to run in node 6, I don't think node 8 is beta anymore
They also told me that node 8 and node 6 were running on a different linux OS behind scenes
I also copied my function to a new one

@gamesbykevin Thanks, I also opened a ticket.
apparently in my case it is related to firebase environment

Looks like this has to do with Firebase rather than with Puppeteer.

Hey, @alexandrzavalii, did you find a workaround for this problem TimeoutError: Navigation Timeout Exceeded on Cloud Functions when you try to access a website with a bad certificate?
I'm currently struggling with the same problem... 😅

Was there any solution to this? Trying to add html directly inside goTo() with data:text/html but no matter what the timeout time is I still get TimeoutError: Navigation Timeout Exceeded.

I'm getting sporadic timeouts (usually every 3-4 requests) on my GCP Cloud Function, either with goto or setContent. I've tried different runtimes (8, 10) and regions to no avail.
I'm getting timeouts but no stack traces or even basic debug logging on these requests

Been getting this issue as well when trying to navigate multiple pages one after another

I am having the exact same issues and this is my code - No idea what to do. Contacted firebase and they say they're not puppeteer experts and so can't help 😢
exports.exampleBug = functions
  .region("europe-west2")
  .runWith({ timeoutSeconds: 300, memory: "2GB" })
  .pubsub.schedule("05 17 * * *")
  .timeZone('Europe/London')
  .onRun(async (/*context*/) => {
    const puppeteer = require("puppeteer");
    const browser = await puppeteer.launch({
          args: ["--no-sandbox", "--disable-setuid-sandbox"],
    });
    const page = await browser.newPage()
    console.log('navigate');
    await page.goto("https://publicaccess.aylesburyvaledc.gov.uk/online-applications/search.do?action=weeklyList");
    console.log('success');
});


feat: noIndent helper

Codecov Report

Merging #125 (67fdb61) into main (3d16399) will increase coverage by 0.04%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##               main     #125      +/-   ##
============================================
+ Coverage     85.86%   85.91%   +0.04%
  Complexity       35       35
============================================
  Files            31       31
  Lines          2547     2548       +1
  Branches        280      280
============================================
+ Hits           2187     2189       +2
  Misses          243      243
+ Partials        117      116       -1

Impacted Files
Coverage Δ

...java/com/decathlon/tzatziki/steps/ObjectSteps.java
84.84% <100.00%> (+0.03%)
:arrow_up:

...com/decathlon/tzatziki/kafka/KafkaInterceptor.java
89.36% <0.00%> (+1.06%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


What is the difference between 0.hic, 0.assembly and rawchrom.hic, rawchrom.assembly?

Dear developers.
Sorry to bother you again, but what is the difference between the two pairs of files I get when I run run-asm-pipeline.sh -r 0? Which pair of files j should I juicerbox? Also should I remove the area inside this chromosome indicated by the blue circle?

I look forward to your guidance and thank you most sincerely!

up


[AutoPR alertsmanagement/resource-manager] add missing host information to alerts management

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

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


Cross document bugs?

Hello.  First, let me say thank you very much for this tool.  Overall, it's been a really good experience.  That said, I'm trying to develop a very robust WYSIWYG content editing system.  Part of this means that there are additional interfaces from the ContentTools editor.
For this reason, I have attempted to load all CSS/JS into a wrapping document, wherein the document it's actually editing/modifying is in a full width/height iframe beneath.
Overall this was working swimmingly until I finally got to a point where some editable nodes were injected, I synced ContentTools, saw my editable areas pop up, then tried to edit.  While I'm able to type and even use most (perhaps all tools), I can't backspace.  It also seems to insert new elements above, so if hit enter in a paragraph, the new paragraph inserts above the other one.
I poked around the source and noticed there's some hard coded document uses in there.  I think this may be related.  Would it be possible to set the document somehow?  I'd try to do this myself, but I'm not very familiar with coffeescript and I'd fear I'd just waste a lot of time going back and fourth on bogus pull requests.  I'm hoping that once this initial functionality is in I can develop some plugins and learn it a bit more.

Hi @mattsah,
I'm not entirely sure I can visualise the issue you're getting, an example I could have a look at would be great.
Regarding the use of the document there are a number of places that rely on the document; incase it helps I've detailed them below:

The biggest use of document is the createElement method which is used to generate HTML elements that are inserted into the ContentEdit (CE) editable elements as well as the ContentTools UI.
Both CE and ContentTools (CT) add event handlers against the document to listen for mouse events when elements/UI widgets are dragged.
CE also uses document.body to add a CSS class to the body element to indicate if an element is being dragged or resized (ce--dragging, ce--resizing). CT does similar for ct--no-scroll and ct--dragging).
ContentTools uses document to add a number of document level event listeners (mostly for tracking key modifiers, the delete key, and the visibility of the current page/tab).
CT uses document to report on the scroll position of the page.
CT mounts the editor itself directly as the last element within the body using document.body.appendChild.

I'm not sure which of these approaches/uses would be causing the behaviour you describe, but happy to have a look if you can provide an example :)

Here's a small example:
Editor page:
Save as whatever you like
<!doctype html>

		<link href="https://rawgit.com/GetmeUK/ContentTools/master/build/content-tools.min.css" rel="stylesheet" />

Frame Page
Save this one as frame.html
<!doctype html>

Test

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum labore atque facere mollitia repellat dolores, similique nihil deleniti soluta perspiciatis at totam modi saepe suscipit esse reprehenderit quam! Libero, aperiam.

Then just open the editor page in the browser.

Just hit edit mode and try to delete some of the paragraph or whatever.  Or go to the end, hit enter and let it make a new one then start typing (the new paragraph will be above the original, not below).  It doesn't have the highlight styles in, but it is "editable."

Just as a note, Chrome won't do anything at all it seems cause of origin (which I'll solve separately), but firefox should load it properly at least.

Running a local server (origin policy limitation is on files) and testing in chrome, the same behavior is shown.

Hi @mattsah - so I've set up the demo you sent and can see that basically nothing works. The issue I believe mostly relates relates to the ContentSelect library which is not able to report on the current selection within the iframe as it's using window.getSelection. This means the selection is always reported as position as a range of [0, 0] meaning tools like bold are disabled, and other tools such as the line break, are always added at the start of the elements content (hence when you spawn a new paragraph with the return key it's like you hit return at the start of the paragraph and therefore added it above the current one).
As a quick solution you could patch the ContentSelect library replacing window.getSelection() with gIframe.contentWindow.getSelection() so long as you assign a value to gIframe. Before loading ContentTools (and hence ContentSelect).
I'll also look to update the ContentSelect library next week to allow you to set the window used to get the selection from against the ContentSelect namespace as a setting.
This probably wont solve all the issues your facing however, the library isn't designed to run in an iframe and no thought has been given to this scenario - it could be a bumpy road. One other option to consider (and I don't know how feasible this is for your project), is to run CT in the iframe but patch CT not to mount itself to the document.body, but to the window.parent.document.body here: https://github.com/GetmeUK/ContentTools/blob/master/src/scripts/editor.coffee#L307. I tried this using a simply JS patch and it appears to be a possible viable option (only slight annoyance I had to load the CSS in both the iframe and parent HTML.
<!doctype html>

        <link href="https://rawgit.com/GetmeUK/ContentTools/master/build/content-tools.min.css" rel="stylesheet" />

<!doctype html>

        <link href="https://rawgit.com/GetmeUK/ContentTools/master/build/content-tools.min.css" rel="stylesheet" />

Test

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illum labore atque facere mollitia repellat dolores, similique nihil deleniti soluta perspiciatis at totam modi saepe suscipit esse reprehenderit quam! Libero, aperiam.

As a first workaround attempt, I did try to insert ContentTools into the iframe document and work with that one.  The CSS is inserted anyhow, and the class names are namespaced enough that I'm not that concerned.  Because the whole thing is WYSIWYG editing, the reason I'm running in an iframe is to avoid conflicts between libraries/css needed for editing and libraries/css needed for the site.
I will actually try that solution and report back.  If it works flawlessly, there may be no need to patch, as I'd consider that a viable workaround if it were documented.
Thank you much.
As you probably saw from my pull requests, some of the crazy stuff I'm doing is probably going to uncover a lot of little bugs.  As I get more accustomed to coffeescript I'll aim to contribute as much as I can and my own patches when I run into bugs.
This was just a bit beyond my capacity at the moment though.

Thanks for the ideas... the below appears to be working without any prototype overload.
var viewpane = document.getElementById('viewpane');

var load = function() {
	setTimeout(function() {
		var contentTools = viewpane.contentWindow.ContentTools;

		if (contentTools == undefined) {
			load();
			return;
		}

		new Inkwell.ModulesDialog({
			data: {
				subdoc: viewpane.contentWindow.document,
				contentTools: contentTools
			}
		});
	}, 50);
};

$('link[data-copy], script[data-copy]').each(function() {
	var subdoc  = viewpane.contentWindow.document;
	var element = subdoc.createElement(this.localName);

	if (element.localName == 'script') {
		element.src = this.src;
	} else {
		element.href = this.href;
		element.rel  = this.rel;
	}

	subdoc.body.appendChild(element);
});

load();

I'd tried something like this before, but couldn't get it to budge.  This basically just enables an easy way to copy some CSS/JS into the document I'm editing in the iframe, waits for ContentTools to be available on that window, then injects then creates my Vue object with that one.
From there I'm able to use all the features on the "remote" ContentTools.

Yes the only difference is that in the above the CT UI will mount/display in the iframe and not in the parent window. I wasn't sure if that was acceptable for your project soso the prototype override I provided simply makes CT mount the base app element for the editor in the parent document.

I believe it's acceptable given the general use of good namespacing on classes and what not.  That said, I'll keep this in mind if it runs into a problem.
Thanks again.


Replace names of macros that are generic utils

Added this PR for the CLI:
https://github.com/elementary-data/elementary/pull/668


Using Docsify is the simplest solution; not the most robust

Closes #126
✅ Pull Request Checklist:

[x] Included link to corresponding GitHub Issue.
[ ] The commit message follows conventional commit extended guidelines.
[ ] Added/updated unit tests and storybook for this change (for bug fixes / features).
[ ] Added/updated documentation (for bug fixes / features)
[ ] Filled out test instructions.

📝 Test Instructions:

❓ Does this PR introduce a breaking change?

[ ] Yes
[ ] No

💬 Other information

We are moving ahead (with dev) using rspress for now. If we need to reevaluate that decision in the future this PR might be valuable but it was super simple to setup so there isn't much loss closing this for now.


[query] Translate not patterns

On top of #301 and #302, translating a not-join to SQL involves one of two branches:

If the enclosed CC doesn't generate any bindings, then it can simply be an expression negating the CC's wheres:
NOT (datoms123.e = 456 AND …)

If the enclosed CC does generate bindings, then we must generate a subquery:
NOT EXISTS (SELECT …)

This ticket will reuse a lot of code from #301, and will make it clear whether the abstractions in that ticket were well chosen!

https://github.com/mozilla/mentat/commit/bd389d2f0de395ef1bc46ea4363def098e2bd687


⚠ Bofrost.de has degraded performance

In a1321bc, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1188 ms

Resolved: Bofrost.de performance has improved in d2d318d after 8 minutes.


Feature: Parse declarations only

What version of Go are you using (go version)?

$ go version
go version go1.15 darwin/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/m/Library/Caches/go-build"
GOENV="/Users/m/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/m/Go/pkg/mod"
GONOPROXY="github.com/matthewmueller"
GONOSUMDB="github.com/matthewmueller"
GOOS="darwin"
GOPATH="/Users/m/Go"
GOPRIVATE="github.com/matthewmueller"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/m/Go/src/github.com/matthewmueller/duo/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/4f/tcxcr6_55v9bp38d8g4hjlf80000gn/T/go-build905655404=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

I'd like to be able to parse a file or package with only the type declarations and function signatures, without the function bodies. I find myself wanting this quite a bit for code generation, where you want the shapes, but you don't care about the implementations.
What did you expect to see?
In go/parser/interface.go, you'll find the following modes:
// A Mode value is a set of flags (or 0).
// They control the amount of source code parsed and other optional
// parser functionality.
//
type Mode uint

const (
	PackageClauseOnly Mode             = 1 << iota // stop parsing after package clause
	ImportsOnly                                    // stop parsing after import declarations
	ParseComments                                  // parse comments and add them to AST
	Trace                                          // print a trace of parsed productions
	DeclarationErrors                              // report declaration errors
	SpuriousErrors                                 // same as AllErrors, for backward-compatibility
	AllErrors         = SpuriousErrors             // report all errors (not just the first 10 on different lines)
)

I'd love an additional mode, perhaps DeclarationsOnly. This would parse a bit more than ImportsOnly, but not the whole source tree.
What did you see instead?
Unfortunately, I couldn't find a way to parse at this specific granularity.

Which declarations would be included? only var, type, const, and funcs? at the file level?

That's a good question. For my use-case, I'd be function signatures and struct declarations, but I could see all general declarations in that group as well as constants.
I think where I'd draw the line is parsing everything except function bodies and variables.

Parsing is generally really cheap. Typechecking is expensive, and go/types supports not typechecking function bodies. Also, the parser would still have to do the work to find out where the function body ends and ensure that there are no parsing errors inside the function body.
Have you determined that parsing is a bottleneck or performance issue for your application?

Have you determined that parsing is a bottleneck or performance issue for your application?

I have not. My line of thinking was try to eliminate as much work as possible and since there are already other modes for eliminating parsing, we could maybe add one more.
I'm running this inside a file watching loop that parses and re-generates code on each change, so every little bit adds up.

That's a good question. For my use-case, it'd just be function signatures and struct declarations, but I could see all general declarations in that group as well as constants.
I think where I'd draw the line is parsing everything except function bodies and variables. That would still eliminate parsing large chunks of the most files.

What about func, var, type, or const declarations inside a function?

the parser would still have to do the work to find out where the function body ends

This is a great point @josharian. This may make my suggestion invalid since it seems like you'd still need to do some bookkeeping as you're scanning over tokens. Then at that point, why not parse it?

What about func, var, type, or const declarations inside a function?

My suggestion would be to ignore everything inside the function body, including those declarations.
Pulling out some random code and re-purposing the diff syntax a bit. The red is what I'd expect to not be ignored with this mode:
package convo

import (
	"fmt"
	"regexp"
	"strings"

	"github.com/matthewmueller/jack/internal/pogo/standupuser"

	"github.com/dustin/go-humanize/english"
	"github.com/matthewmueller/convo"
	"github.com/matthewmueller/jack/internal/pogo/standup"
	"github.com/matthewmueller/jack/internal/pogo/team"
	"github.com/pkg/errors"
)

// StandupDeleteIntent intent
const StandupDeleteIntent = "standup_delete"

// StandupDeleteInput input
const StandupDeleteInput = "delete standup"

- // StandupDelete topic
- var StandupDelete = NewTopic(StandupDeleteIntent).
- 	Slot("standup_name", regexp.MustCompile(".*")).
- 	Slot("confirm_delete", regexp.MustCompile(".*")).
- 	Input(StandupDeleteInput).
- 	Input("delete a standup").
- 	Input("delete my standup").
- 	Input("remove standup").
- 	Input("remove a standup").
- 	Input("remove my standup").
- 	Topic(func(ctx *Context, intent convo.Intent) convo.Topic {
- 		return &standupDelete{ctx, intent}
- 	})

- // replies
- var (
- 	StandupDeleteIntro = Template(`
- 		Are you sure you want to delete {{.standup_name}}? You cannot undo this action.
- 	`)
-
- 	StandupDeleteIntroWithActiveUsers = Template(`
- 		Are you sure you want to delete *{{.standup_name}}*? This will also delete everyone's past reports for this standup. You cannot undo this action.
-
-
- 		Right now {{.user_list}} participate in standup.
- 	`)
-
- 	StandupDeleteAskStandup = Template(`
- 		Sure thing! Which standup do you want me to delete? Your team has the following standups: {{.standup_names}}.
- 	`)
-
- 	StandupDeleteBye = Template(`
- 		You're all set! I've deleted *{{.standup_name}}*.
- 	`)
-
- 	StandupDeleteStandupNotFound = Template(`
- 		Woops! I couldn't find that standup. You can update the following standups: {{.standup_names}}.
- 	`)
-
- 	StandupDeleteNoStandups = Template(`
- 		Woops! It looks like your team has no standups right now.
- 	`)
-
- 	StandupDeleteConfirmCatchAll = Template(`
- 		Oops! Sorry I didn't understand that.
-
- 		Are you sure you want to delete standup? You can say *yes* or *no*.
- 	`)
- )

// standupDelete struct
type standupDelete struct {
	*Context
	convo.Intent
}

- var _ convo.Topic = (*standupDelete)(nil)

// Handle team onboard
func (c *standupDelete) Handle(r *convo.Request, w *convo.Response) {
- 	if nevermind(r.Text) {
- 		w.Text = Nevermind()
- 		return
- 	}
-
- 	findingStandup := r.Slots["standup_name"] != nil
- 	confirmingDelete := r.Slots["confirm_delete"] != nil
-
- 	switch {
- 	case findingStandup:
- 		c.FindingStandup(r, w)
- 	case confirmingDelete:
- 		c.ConfirmingDelete(r, w)
- 	default:
- 		c.Introduce(r, w)
- 	}
}

func (c *standupDelete) Introduce(r *convo.Request, w *convo.Response) {
- 	// get the bot token
- 	botToken := r.Meta["bot_access_token"]
- 	if botToken == "" {
- 		c.catch(r, w, errors.New("no bot access token found"))
- 		return
- 	}
-
- 	// get the team
- 	tm, err := team.FindByBotAccessToken(c.db, botToken)
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error getting the team"))
- 		return
- 	}
-
- 	// Find all the standups for the team
- 	// TODO: access control
- 	standups, err := standup.FindMany(c.db, standup.NewFilter().TeamID(tm.ID))
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error finding many standups"))
- 		return
- 	}
-
- 	// get the standup names
- 	var standupNames []string
- 	for _, standup := range standups {
- 		standupNames = append(standupNames, fmt.Sprintf("*%s*", standup.Name))
- 	}
-
- 	// no standups found
- 	if len(standups) == 0 {
- 		w.Text = StandupDeleteNoStandups()
- 		return
- 	}
-
- 	// ask standup
- 	if len(standups) > 1 {
- 		w.Intent = StandupDeleteIntent
- 		w.Slot = "standup_name"
- 		state := make(map[string]interface{})
- 		state["standup_names"] = english.WordSeries(standupNames, "&")
- 		w.Text = StandupDeleteAskStandup(state)
- 		return
- 	}
-
- 	// inferred the standup, save the state
- 	stdup := standups[0]
- 	w.State["standup_id"] = stdup.ID
-
- 	// get the active users in the standup
- 	users, err := listActiveUsersInStandup(c.db, stdup.ID)
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error getting the standup users"))
- 		return
- 	}
-
- 	// get all the slack IDs of the active users
- 	var slackIDs []string
- 	for _, user := range users {
- 		slackIDs = append(slackIDs, user.SlackID)
- 	}
-
- 	// get the most up-to-date version of these users from slack
- 	slackUsers, err := c.slack.ListUsers(botToken, slackIDs...)
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error listing slack users"))
- 		return
- 	}
-
- 	// if we don't have any slack users, go straight to confirm
- 	if len(slackUsers) == 0 {
- 		state := make(map[string]interface{})
- 		state["standup_name"] = stdup.Name
- 		w.Intent = StandupDeleteIntent
- 		w.Slot = "confirm_delete"
- 		w.Text = StandupDeleteIntro(state)
- 		return
- 	}
-
- 	// format the slack users
- 	var userlist []string
- 	for _, slackUser := range slackUsers {
- 		userlist = append(userlist, fmt.Sprintf(`<@%[1]s>`, slackUser.SlackID))
- 	}
-
- 	// introduce
- 	state := make(map[string]interface{})
- 	state["standup_name"] = stdup.Name
- 	state["user_list"] = english.WordSeries(userlist, "&")
- 	w.Intent = StandupDeleteIntent
- 	w.Slot = "confirm_delete"
- 	w.Text = StandupDeleteIntroWithActiveUsers(state)
- 	return
}

// Finding the standup, because we received a name
func (c *standupDelete) FindingStandup(r *convo.Request, w *convo.Response) {
- 	standupName := strings.ToLower(*r.Slots["standup_name"])
-
- 	// get the bot token
- 	botToken := r.Meta["bot_access_token"]
- 	if botToken == "" {
- 		c.catch(r, w, errors.New("no bot access token found"))
- 		return
- 	}
-
- 	// get the team
- 	tm, err := team.FindByBotAccessToken(c.db, botToken)
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error getting the team"))
- 		return
- 	}
-
- 	// Find all the standups for the team
- 	standups, err := standup.FindMany(c.db, standup.NewFilter().TeamID(tm.ID))
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error finding many standups"))
- 		return
- 	}
-
- 	// find the standup by name
- 	var stdup *standup.Standup
- 	var standupNames []string
- 	for _, standup := range standups {
- 		standupNames = append(standupNames, fmt.Sprintf("*%s*", standup.Name))
- 		if strings.ToLower(standup.Name) != standupName {
- 			continue
- 		}
- 		stdup = standup
- 		break
- 	}
-
- 	// couldn't find that standup
- 	if stdup == nil {
- 		state := make(map[string]interface{})
- 		state["standup_names"] = english.WordSeries(standupNames, "&")
- 		w.Intent = StandupDeleteIntent
- 		w.Slot = "standup_name"
- 		w.Text = StandupDeleteStandupNotFound(state)
- 		return
- 	}
-
- 	// inferred the standup, save the state
- 	w.State["standup_id"] = stdup.ID
-
- 	// get the active users in the standup
- 	users, err := listActiveUsersInStandup(c.db, stdup.ID)
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error getting the standup users"))
- 		return
- 	}
-
- 	// get all the slack IDs of the active users
- 	var slackIDs []string
- 	for _, user := range users {
- 		slackIDs = append(slackIDs, user.SlackID)
- 	}
-
- 	// get the most up-to-date version of these users from slack
- 	slackUsers, err := c.slack.ListUsers(botToken, slackIDs...)
- 	if err != nil {
- 		c.catch(r, w, errors.Wrap(err, "error listing slack users"))
- 		return
- 	}
-
- 	// if we don't have any slack users, go straight to confirm
- 	if len(slackUsers) == 0 {
- 		state := make(map[string]interface{})
- 		state["standup_name"] = stdup.Name
- 		w.Intent = StandupDeleteIntent
- 		w.Slot = "confirm_delete"
- 		w.Text = StandupDeleteIntro(state)
- 		return
- 	}
-
- 	// format the slack users
- 	var userlist []string
- 	for _, slackUser := range slackUsers {
- 		userlist = append(userlist, fmt.Sprintf(`<@%[1]s>`, slackUser.SlackID))
- 	}
-
- 	// introduce
- 	state := make(map[string]interface{})
- 	state["standup_name"] = stdup.Name
- 	state["user_list"] = english.WordSeries(userlist, "&")
- 	w.Intent = StandupDeleteIntent
- 	w.Slot = "confirm_delete"
- 	w.Text = StandupDeleteIntroWithActiveUsers(state)
- 	return
}

func (c *standupDelete) ConfirmingDelete(r *convo.Request, w *convo.Response) {
-	confirm := *r.Slots["confirm_delete"]
-
-	// same as nevermind
-	if no(confirm) {
-		w.Text = Nevermind()
-		return
-	}
-
-	// catch all
-	if !yes(confirm) {
-		w.Intent = StandupDeleteIntent
-		w.Slot = "confirm_delete"
-		w.Text = StandupDeleteConfirmCatchAll()
-		return
-	}
-
-	// get the standup id
-	standupID, err := id(w.State["standup_id"])
-	if err != nil {
-		c.catch(r, w, errors.Wrap(err, "error getting standup id"))
-		return
-	}
-
-	// find the standup by the id
-	stdup, err := standup.FindByID(c.db, standupID)
-	if err != nil {
-		c.catch(r, w, errors.Wrap(err, "unable to find the standup by id"))
-		return
-	}
-
-	// unschedule the standup
-	if err := c.tempo.UnscheduleStandup(c.db, stdup.TeamID, standupID); err != nil {
-		c.catch(r, w, errors.Wrap(err, "unable to unschedule standup"))
-		return
-	}
-
-	// find many standup users
-	sus, err := standupuser.FindMany(c.db, standupuser.NewFilter().StandupID(stdup.ID))
-	if err != nil {
-		c.catch(r, w, errors.Wrap(err, "unable to get the standup users"))
-		return
-	}
-
-	// unschedule each tempo task
-	for _, su := range sus {
-		if err := c.tempo.UnscheduleUser(c.db, stdup.TeamID, su.StandupID, su.UserID); err != nil {
-			c.catch(r, w, errors.Wrapf(err, "unable to unschedule user standup=%d user=%d", su.StandupID, su.UserID))
-			return
-		}
-	}
-
-	// delete the standup
-	if _, err := standup.DeleteByID(c.db, stdup.ID); err != nil {
-		c.catch(r, w, errors.Wrap(err, "unable to delete the standup by id"))
-		return
-	}
-
-	// respond
-	state := make(map[string]interface{})
-	state["standup_name"] = stdup.Name
-	w.Text = StandupDeleteBye(state)
}

CC @griesemer

As @josharian has already observed, it's not trivial to "skip" over the contents of function bodies; i.e., at least if we don't know if they are correct. If we know that the code is correct, one could accelerate the parsing of function bodies by only counting opening/closing braces (they have to match up); but one would still have to read and tokenize the source text. One could do a little experiment and see what the performance difference would be, but it may not matter in the overall application (presumably, the result of parsing is used somehow).
@matthewmueller Is parsing a particularly time-consuming component of your application?

@matthewmueller Is parsing a particularly time-consuming component of your application?

I did some benchmarking of the parser in a more isolated environment and it's very fast. 2-4ms fast. 🙌
Closing. Thanks everyone!


feat.refactor safaricom integration

AB#28961
Describe your changes
Refactor the old implementation of safaricom FSP integration by following the intersolve visa implementation architechture.
Checklist before requesting a review

[x] I have performed a self-review of my code
[x] I have added tests wherever relevant
[ ] I have made sure that all automated checks pass before requesting a review
[x] I do not need any deviation from our PR guidelines

Converting this to draft to avoid it being merged by mistake


fix(iteration): allow pressing enter on iteration name to create/update iteration

Closes openshiftio/openshift.io#1995

@debloper fabric8/fabric8-ui:SNAPSHOT-PR-2496-1 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2496-fabric8-planner.badger.fabric8.io

Codecov Report

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

@@          Coverage Diff           @@
##           master   #2496   +/-   ##
======================================
  Coverage    9.85%   9.85%
======================================
  Files         195     195
  Lines       12680   12680
  Branches     1776    1776
======================================
  Hits         1249    1249
  Misses      11362   11362
  Partials       69      69

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 4c83c95...41cc120. Read the comment docs.

@debloper fabric8/fabric8-ui:SNAPSHOT-PR-2496-3 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2496-fabric8-planner.badger.fabric8.io


Fully allocate instance disks at launch

By default the disk was allocated on-demand. This could lead to a
scenario where space usage was not accounted for properly and space is
exhausted if instances start filling up their local disks. Changing data
within instances could be slower too due to copy on write happening vs
just writing to the already allocated space.
util-linux is required to get the fallocate utility which is used to
allocate the space.

Can we make this a configuration option, I can think of at least one customer who could be adversely affected by this change.

Done.


Bluetooth: controller: Use entropy driver directly in bt_rand

Use entropy driver directly in bt_rand instead of stitching together
calls to sys_rand32_get to improve efficiency. The use of
sys_rand32_get could also leak timestamps into keys.
Signed-off-by: Wolfgang Puffitsch<EMAIL_ADDRESS>

Close and reopen to rerun CI

@wopu-ot, nice proposal, does this not need some changes in Kconfig to select the entropy system ?

@Laczen The controller already accesses the entropy device directly in other places and accordingly already selects ENTROPY_GENERATOR in the Kconfig.

@Laczen The controller already accesses the entropy device directly in other places and accordingly already selects ENTROPY_GENERATOR in the Kconfig.

OK

On nRF51, if bt_rand is used in the ISR, I would like to profile the CPU usage. Hence, give me time until 26/09/2019, after which feel free to merge on approvals from others.

@carlescufi @cvinayak Do you have any further comments on this PR or can you approve?


Attachments are not forwarded

Describe the bug
When forwarding an email with an attachment, the attachment is ignored.
To Reproduce
Forward an email with attachment
Expected behavior
The attachment should appear in the forwarded email
Environment (please complete the following information):

K-9 Mail version: 5.600
Android version: 11
Device: Samsung Galaxy Note 12
Account type: IMAP

Duplicate of #3028


Getting KeyError: 'REQUEST_METHOD' sometimes

Getting this error sometimes when running flask with uwsgi and nginx:
Possibly similar to the issue here: 3357?
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask_uwsgi_websocket/_gevent.py", line 59, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2453, in wsgi_app
    return response(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py", line 700, in __call__
    app_iter, status, headers = self.get_wsgi_response(environ)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py", line 689, in get_wsgi_response
    app_iter = self.get_app_iter(environ)
  File "/usr/local/lib/python3.6/site-packages/werkzeug/wrappers/base_response.py", line 662, in get_app_iter
    environ["REQUEST_METHOD"] == "HEAD"
KeyError: 'REQUEST_METHOD'

Environment

Python version: 3.6.8
Flask version: 1.1.1
Werkzeug version: 0.16.0
uWSGI version: 2.0.18

I'm sorry, without more information I can't identify the issue or fix it.


Incompatible with anycable < 1.1.0 and anycable-rail < 1.1.0

anycable and anycabe-rails gems version below 1.1 do not have anycable-core as its dependencies. This causes errors, when adding yabeda-anycabl to a project with those gems installed.
This is caused because of a few things:

anycable introduces breaking changes at v 1.1 - https://github.com/anycable/anycable/blob/master/CHANGELOG.md#110rc1-2021-05-12
yabeda-anycable middleware relies on an interface that is introduced in anycable 1.1
When yabeda-anycable adds its middleware it causes AnyCable::Rails::Middlewares::LogTagging to throw undefined method metadata' for #AnyCable::ConnectionRequest`  error

It is most likely to be common for Rails projects below version 6, as anycable-rails 1.1 can not be added to Rails <6 projects.
I guess it should be at least, mentioned in the Readme.

Middleware interface introduced in AnyCable 1.1 is absolutely essential for this gem to work.
So the only way to get it working in Rails before 6 is to convince @palkan to add support for Rails < 6 to anycable-rails 1.1.x :stuck_out_tongue_winking_eye:

anycable-rails 1.1.x supports Rails 5; see also https://github.com/anycable/anycable-rails/issues/164

@Envek I totally get it. Issue is that you can install yabeda-anycable along with anycable-rails 1.0.x, which leads to an error.


Wallet animation not displaying correctly on mobile

I think this was added when I extended the length of the line of cryptocurrency logos (so they would continue off the page on desktop). Please ensure the length isn't affected, only that the double line of cryptocurrency logos is removed on mobile.

Fixed and deployed


Switch Component doesn't disable click functionality when disabled

Summary

:construction: Still work in progress :construction:
This issue fixes https://github.com/facebook/react-native/issues/30944
Changelog

[Android] [Fixed] - Fix
Test Plan

CLICK TO OPEN TESTS RESULTS - SET ACCESSIBILITY TO TRUE IF DISABLED

TEST SCENARIO

first switch has disabled={true} and accessibilityState={{disabled: false}}
second switch is not disabled

RESULT

the screen reader announces disabled on the first switch, but not on the second switch

      <Switch
        accessibilityState={{disabled: false}}
        disabled={true}
        trackColor={{
          true: 'yellow',
          false: 'purple',
        }}
      />
      <Switch
        trackColor={{
          true: 'yellow',
          false: 'purple',
        }}
      />

CLICK TO OPEN TESTS RESULTS - FAILURE - DISABLE SWITCH

TEST SCENARIO

The first Switch is disabled with disabled={true}

RESULT - FAILURE

The Switch is not disabled. Adding accessibiltyState props will re-enable disabled switches

         <Switch
          disabled={true}
          testID="on-off-initial-off"
          onValueChange={value => this.setState({falseSwitchIsOn: value})}
          trackColor={{
            true: 'yellow',
            false: 'purple',
          }}
          value={this.state.falseSwitchIsOn}
        />
        <Switch
          testID="on-off-initial-on"
          onValueChange={value => this.setState({trueSwitchIsOn: value})}
          value={this.state.trueSwitchIsOn}
        />

https://github.com/facebook/react-native/blob/eb410cdfe8469805152f4bcdd2924355eb9810bc/Libraries/Components/Switch/AndroidSwitchNativeComponent.js#L60-L62

@fabriziobertoglio1987 Sorry missing context, why was this closed?

Thanks a lot @lunaleaps The pull request adds this functionality, as you can see in the below test case the screen reader announces disabled as required
CLICK TO OPEN TESTS RESULTS - SET ACCESSIBILITY TO TRUE IF DISABLED

TEST SCENARIO

first switch has disabled={true} and accessibilityState={{disabled: false}}
second switch is not disabled

RESULT

the screen reader announces disabled on the first switch, but not on the second switch

      <Switch
        accessibilityState={{disabled: false}}
        disabled={true}
        trackColor={{
          true: 'yellow',
          false: 'purple',
        }}
      />
      <Switch
        trackColor={{
          true: 'yellow',
          false: 'purple',
        }}
      />

adding prop accessibilityState to AndroidSwitchNativeComponent creates regressions with disabled/enable Switch functionality.
For example in the below example the <Switch disabled={true} /> is disabled, but the Switch can be selected/unselected
CLICK TO OPEN TESTS RESULTS - FAILURE - DISABLE SWITCH

TEST SCENARIO

The first Switch is disabled with disabled={true}

RESULT - FAILURE

The Switch is not disabled. Adding accessibiltyState props will re-enable disabled switches

         <Switch
          disabled={true}
          testID="on-off-initial-off"
          onValueChange={value => this.setState({falseSwitchIsOn: value})}
          trackColor={{
            true: 'yellow',
            false: 'purple',
          }}
          value={this.state.falseSwitchIsOn}
        />
        <Switch
          testID="on-off-initial-on"
          onValueChange={value => this.setState({trueSwitchIsOn: value})}
          value={this.state.trueSwitchIsOn}
        />

https://github.com/facebook/react-native/blob/eb410cdfe8469805152f4bcdd2924355eb9810bc/Libraries/Components/Switch/AndroidSwitchNativeComponent.js#L60-L62

I did not further investigate it, possibly the mistake is my code implementation. I ended up working on other prs and though of closing this pr as I did not have a solution at the moment for the problem. Sorry If I did not completely answer your question. :pray: :peace_symbol:

Thanks @fabriziobertoglio1987 for the clarification!


fixing monte_carlo markdown file name error for lisp / scala

Small problem I didn't notice when merging #524 (I think that was the PR).

 Ignore this pull request.


Different link structure

This is more user friendly but considerably slower, probably because of type instabilities

This is kind of an important decision because this solves the need to overwrite methods, but at the same time now the code is not type stable... Maybe there is an easy way of redefining a method in a more clean way

I am going to close this one and leave the branch there, this type instability will annoy me too much to continue afterwards


Idea to handle The no key_up problem.

 I think i have some idea for the no key_up problem. The "Hover over all selections" option works.. but it also becomes to touchy. I think an alternative option could basically just act like the "hover over sub-menus, release on function" but instead you could simply click the button once to open the menu then again to exit(or go full blender and use left click/escape). so the app only needs to see the key_down input not the key_up. then its users choice to either have it auto apply when hovering outside the center/ for a given amount of time or to click the same button or mouse button in order to activate the action. might not be as fast but i think it would be an overall smoother experience and be prone to less accidental selections.

For sure!  That's a good solution.  So maybe a 4th activation mode called "Click Selections"?

You and me both... I just happened to have a lot of time to kill when I went down that rabbit hole.

The "Click selections" activation mode has been added in v1.0.19

For sure! That's a good solution. So maybe a 4th activation mode called "Click Selections"? I'll add this.

oh- I was not expecting that honestly! lol heck yeah I ill try this out cant wait!

Ok so idk if I should type this here or make a new one. Buutttt 2 things.

idk how hard it is to fix, but as it works now this does not work with windows ink. which means with a pen and tablet you can now bind whatever buttons you want and have the menu come up and stay, but you do need to make sure its not making clicks using windows ink. But I can now use my tablet with these menus after changing that option within wacoms software so still a win!

I do have one extension to clicking / exiting. (this is arguably targeting more of the pen tab crowd(which i am slowly joining) and might help deal with the problem noted above) what if you could toggle the activation button to do one of three things once the menu is up, along side the mouse click:

exit the menu( which would probably be the best use case for most people outside of it doing nothing)
alternative click function(same as mouse but would make pen life easier)
3)default state of nothing.( how it works now unless I am missing something)

on that note this seriously just helped a lot. Im also trying to make use of this macro pad I have(blender even with the ui updates still just needs all the hotkeys and there isnt enough!) but it apparently doesn't send key up options. Im also starting to get into using a pen tab and once I installed this that was my immediate wall.... which is now gone for the most part! Im honestly about to radial menu everything like ive been wanting to do! lol.

as it works now this does not work with windows ink.

I've been trying to figure this one out for a while, windows ink hates me. I've just been turning off windows ink.  Or I need a way to bypass windows ink whenever the pie menu is open.

exit the menu( which would probably be the best use case for most people outside of it doing nothing)
alternative click function(same as mouse but would make pen life easier)
default state of nothing.( how it works now unless I am missing something)

I like this, so for the "Hover over selections" and "Click selections" launchmodes a dropdown selection for these three modes would be added.  I'll try adding this.

Awesome!

This has been added in v1.0.20.