Interfacing WPF controls

Hi, Is it possible to support controls like the ComboBox, or ListView for WPF?
With TestStack.White it is possible to get cell of a ListView, select a ComboBox item by index, how do you do that with WinAppDriver testing a WPF application?
for example:
var listView = myTestStackWindow.Get<ListView>(SearchCriteria.ByAutomationId(automationId));
var rowCount = listView.Rows.Count;
var gridPattern = listView.AutomationElement.GetCurrentPattern(GridPattern.Pattern) as GridPattern;
var cell = gridPattern.GetItem(row, column);
cell.TryGetCurrentPattern(ValuePattern.Pattern, out var valueObject);
var valuePattern = valueObject as ValuePattern;

Yes, it is possible. Everything is a WindowsElement when we're working with WinAppDriver. You just need to go through the items in a sequence, you might use XPath in some cases.
The children of combo-box are present in memory but they're not displayed while the list is not showing on screen. For this, I used a foreach loop to go through the children of a combo and called the click method on the one I wanted to select.
You may just use the SendKeys method with item text to select an item in Combo/ListView.

But you cannot invoke GridPattern or any other Pattern from the native AutomationElement as we could have done with CodedUI (c.f. the sample) ?

Hi @naeemakram, It would be great to see an example, perhaps with a combo box, expanding it and selecting the third item, obviously by no means of sending keys F4, DOWN, DOWN., DOWN because the test is trying to reproduce the mouse interaction.

Here's the code I created for my upcoming course about WinAppDriver. I hope you'll find it to be useful.
[TestMethod]
       public void ComboTest()
       {
           var combo = sessionWinForm.FindElementByAccessibilityId("comboBox1");
           var open = combo.FindElementByName("Open");

           var listItems = combo.FindElementsByTagName("ListItem");
           Debug.WriteLine($"Before: Number of list items found: {listItems.Count}");

           combo.SendKeys(Keys.Down);
           open.Click();

           listItems = combo.FindElementsByTagName("ListItem");
           Debug.WriteLine($"After: Number of list items found: {listItems.Count}");

           // maybe check number of elements in combo
           //Assert.AreEqual(6, listItems.Count, "Combo box doesn't contain expected number of elements.");

           foreach(var comboKid in listItems)
           {
               if(comboKid.Text == "NJ")
               {
                   WebDriverWait wdv = new WebDriverWait(sessionWinForm, TimeSpan.FromSeconds(10));
                   wdv.Until(x => comboKid.Displayed);

                   comboKid.Click();
               }
           }
       }

@naeemakram  but this doesn't work with UI (list in that case) virtualization on ?The native pattern woudl allow use to work with virtualization enables.
Does it mean all your UI testing have virtualization off ?

I don't get your question. In the past I've run my automation scripts on various virtual machines, it never has been a problem. I don't think there's a difference between a test running on a physical machine and a VM.

I'm talking about UI virtualization :
https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/optimizing-performance-controls#supporting-bidirectional-virtualization
Whcih means with inspect tool, you only see 4 list item currently rendered in the UI while there is potentially 100 of "view models" to be displayed. the scrollbard reflect that information.
It also means in codedUI we were able to use https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingscrollitem to ensure that virtualized item can be bring into view.

Interesting, this is new information for me.

Hi, @naeemakram thanks for the example, I suppose it works for a specific scenario in the controls that you are using, which is different when using some other controls let's say Telerik, DevExpress, and so on.
The ideal would be to have an equivalent documentation like this https://www.guru99.com/xpath-selenium.html but focused in WPF.
For example I had to try-error with X-Path in order to open button in the comboBox:
var open = comboBoxElement.FindElementByXPath("//Button[@Name='']");

Which is confusing because the element has a value in the Name property when it is inspected with Snoop.

It works in case of WinForms combo box. Even in that case I had to try a few things to make the scripts work. The following method calls appear to be nonsense but I've found them to be necessary.
combo.SendKeys(Keys.Down);
open.Click();

I will try to spend some time and create a WPF example as well in order to sort these problems.

@naeemakram, in the case of WPF bare in mind that SendKeys doesn't reflect the user interaction with the mouse. I'd prefer avoid generating a different interaction because falsifies the aim of the test.
For the case of
FindElementsByTagName("ListItem")

it doesn't find any list, I wonder how to query the items works in general so that I can see the elements for example in a DevExpress ComboBoxEdit

In WAD UI Recorder, what information is shown when you hover mouse on the ListView in question?

for the hover in one combo box item:
"/Pane[@ClassName=\"#32769\"][@Name=\"Desktop 1\"]/Window[@ClassName=\"Window\"][@Name=\""AMS - [Calculation\"]/Window[@ClassName=\"Popup\"]/Custom/List[@AutomationId=\"PART_Content\"]/ListItem[@ClassName=\"ListBoxItem\"][@Name=\"AMS.ClientApi.Client\"]/Text[@ClassName=\"TextBlock\"][@Name=\"Option 1\"]"

if I try to run this simple search:
        private AppiumWebElement FindElementByXPath(string xPath)
            => Timing(() => _session.FindElementByXPath(xPath), xPath);

        private AppiumWebElement FindElementByAutomationId(string automationId)
            => Timing(() => _session.FindElementByXPath($"//*[@AutomationId='{automationId}']"), automationId);

        private static AppiumWebElement FindElementByAutomationIdFrom(AppiumWebElement parentElement, string automationId)
            => Timing(() => parentElement.FindElementByXPath($"//*[@AutomationId='{automationId}']"), automationId);

        private static AppiumWebElement Timing(Func<AppiumWebElement> timingFunc, string automationId)
        {
            var start = DateTime.Now;
            var element = timingFunc();
            Console.WriteLine($"Finding '{automationId}' took:{(DateTime.Now - start).TotalSeconds}");
            return element;
        }
        public override async Task SelectCombo(string automationId, int index)
        {
            await WaitClick();
            var comboBoxElement = FindElementByAutomationId(automationId);
            var open = FindElementByAutomationIdFrom(comboBoxElement, "PART_Item");
            open.Click();
            var element = FindElementByXPath($"//Custom/List[@AutomationId='PART_Content']/ListItem[@ClassName='ListBoxItem'][{index}]");
            element.Click();
        }

The timing result is overwhelmingly slow for the size or complexity of the application:
Finding 'PerformanceAccountAId' took:2.2732279s
Finding 'PART_Item' took:0.1270051s
Finding '//Custom/List[@AutomationId='PART_Content']/ListItem[@ClassName='ListBoxItem'][5]' took:4.7501652s

Hi @naeemakram, please let us know if there is any plan to continue with WinAppDriver, especially for support of WPF

@paulovila  for us, we stopped using relative path (i.e. using //Custom...) but using absolute path (/Window...)
it is forcing us to describe more our WPF application but the absolute path is the only way we achieve proper performance on our compex WPF app

@fforjan Absolute and even relative paths are hard to maintain. I don't want to end up in a situation where changing a title of a window would end up in unintended tests broken.
The effort in writing ui tests should focus on change-proof robustness. Using paths introduce brittleness in your tests.
I’ve started using FlaUI3. It's fast, and extensible, all working with Automation ids

@paulovila we described our application in a relative manner but we convert them to full path when querying via winappdriver.
The idea is that yes, changing the title of a window will break tests but we should only change it at one place.

@fforjan, based on the activity of the repository, I don't have the feeling that they are going to fix this performance issue. Best you can do is move on and choose a UI test framework more focused in WPF


[WIP] numeric/BigDecimal

WIP that implements arbitrary precision support using num upcoming BigDecimal type.

[x] num crate released their BigDecimal support. num decided to split off BigDecimal to a separate project, while it's stabilising. A preliminary version has been published. I am working on that.
[x] PostgreSQL: I use PostgreSQL for my own needs, and I'll build that support.

[x] impl FromSql support
[x] impl ToSql support

[ ] Other databases; if someone wants to help here, feel free to file pull requests to my bigdecimal branch on my repo.
[x] The num dependency should be optional/a feature

Questions to be solved:

[x] Should the num dependency be optional/a feature? yes
[ ] Do we want FromSql<>/ToSql<> for f64/f32?

Bugs/issues:

[ ] BigDecimal should have a new release soon, containing all the stuff we need
[ ] Initialize the damn digits vector to something senseful.

Very cool! It's great to see someone working on this. I think @sgrif mentioned his frustration regarding missing big decimal support several times (I think he was close to writing an impl himself) 😄

Should the num dependency be optional/a feature?

Yes please :)

Yes please :)

Roger that.

It's optional now; I added it to extras, I hope that's okay.

It should build by now :)

It's been rebased on origin/master, and only crates from crates.io are used now.

Read the code but won't pretend to have understood everything :) I left some general comments.

Thanks for the comments, I'll try to address them all. The initialization of the vector will be a tough one though, but I'll try to figure something out :-)

What's blocking this?
Anything I can do to help out?

@theduke From @rubdos' checklist above I was assuming the bigdecimal release, but maybe that already happend (looking at https://crates.io/crates/bigdecimal)? I guess you could always have a look at https://github.com/akubera/bigdecimal-rs/issues :)
Regarding the other unchecked points:

Other databases; if someone wants to help here, feel free to file pull requests to my bigdecimal branch on my repo.

I'm fine with landing this for postgres only right now.

Don't worry about that, it's really minor.

Do we want FromSql<>/ToSql<> for f64/f32?

@rubdos, can you elaborate a bit on the use cases? A ToSql impl makes it easy to insert stuff without needing a specific Rust type (just a literal 13.37 should work), so that may be nice. But from what I understand there will probably always be the possible of introducing some inaccuracy in any of these conversions, right?

@theduke:

What's blocking this?

Me, basically :)

Anything I can do to help out?

Nah, I'm finishing this off today. I need it now

@theduke From @rubdos' checklist above I was assuming the bigdecimal release, but maybe that already happend (looking at https://crates.io/crates/bigdecimal)? I guess you could always have a look at https://github.com/akubera/bigdecimal-rs/issues :)

A new release, mostly. I'll trigger that with @iterion and the others at BigDecimal as soon as the ToSql implementation works decently. It's bugged as hell, needs a complete rewrite.

Regarding the other unchecked points:
Other databases; if someone wants to help here, feel free to file pull requests to my bigdecimal branch on my repo.

I'm fine with landing this for postgres only right now.

Don't worry about that, it's really minor.
Do we want FromSql<>/ToSql<> for f64/f32?

@rubdos, can you elaborate a bit on the use cases? A ToSql impl makes it easy to insert stuff without needing a specific Rust type (just a literal 13.37 should work), so that may be nice. But from what I understand there will probably always be the possible of introducing some inaccuracy in any of these conversions, right?

Yes indeed. It would be nice when one doesn't care about accuracy, but it could introduce bugs for people that do care about accuracy.

I cleaned up the commit history a bit.

@sgrif

If nothing else, this error message should more specifically state that the reason this is treated as an error is that the bigdecimal crate does not provide support for NaN, not that Diesel wishes to treat it as an error

I elaborated the error. Whenever we have that fixed, I'll come back. Classical "my use case doesn't encounter NaN", so I would rather have someone interested in NaN's implement this.

Yeah that's completely fine with me. Your error message is good.

Good news, BigDecimal 0.0.7 is out, so this should start building :-)

Okay, this is green! Do you want to do anything more in this PR? I'm not totally up to date on what happened so far, but from the comments it looks like it might actually be good to land?

Okay, this is green! Do you want to do anything more in this PR? I'm not totally up to date on what happened so far, but from the comments it looks like it might actually be good to land?

Well, the ToSql impl is a bit messy, but if you guys are okay with that currently, it's good for me. I'm using it "in production" already :P

Any new on that @rubdos ? :)

I updated on origin/master; now gonna fix the comments.

Well, I fixed what was there to fix! :-)

I removed num{,-integer} deps, and got rid of the merge commit.

Thanks! I think we've iterated enough here, and we can always improve it in future PRs. Let's finally get this merged!


Relocation information error v0.9.3 with Cobalt Strike v4.1

As discussed on slack, with donut v0.9.3 it is not possible to generate shellcode from a Cobalt Strike exe. CS 4.1 was used, 32 and 64 bit exes were generated, and on running donut the following error occured:
[ Error : This file has no relocation information required for in-memory execution.
However, with v0.9.2 the shellcode generation is successful. Possible root cause "I think we added the check for reloc information in v0.9.3"
Thanks for the help!

v0.9.2 doesn't check if a binary is a mixed assembly, so it doesn't show that error. The check was added with v0.9.3. Currently, Donut doesn't support mixed assemblies.


[BUG]  upsert multiple documents qdrant

upsert multiple documents qdrant does not work. It returns: Error: Bad Request
I have tested both .txt and .docx files as input, both failed.
What is working fine:

single document upsert

Upserting multiple documents in Pinecone works fine.

Hey. I'm working on this issue.  Will circle back to you if I can come-up with a fix.

Sounds great!
John
On Sat, 9 Sept 2023, 20:21 Anush, @.***> wrote:

Hey. I'm working on this issue. Will circle back to you if I can come-up
with a fix.
—
Reply to this email directly, view it on GitHub
https://github.com/FlowiseAI/Flowise/issues/834#issuecomment-1712571262,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASZ2MLTBS4QP4YDTWUFJKW3XZSXT7ANCNFSM6AAAAAA37ZTX5M
.
You are receiving this because you authored the thread.Message ID:
@.***>

@jsu-github, I looked at the implementation and upserting multiple .txt and .pdf files works as expected.
Can you provide the error logs to see if we can get something.

With PDF files

With text files

is this how we do multiple txt? i only see the option to upload one document???

is this how we do multiple txt? i only see the option to upload one document???

You can select multiple files from the file explorer.

that does not work for me
<img width="2535" alt="Screen Shot 2023-09-26 at 10 24 09 PM" src="https://github.com/FlowiseAI/Fl

owise/assets/41812691/d6ee5deb-bfb9-4c5e-9344-53217344c00d">

I am getting this error

I tried the same flow as yours. The upserting and retrieval worked fine for me. Can you confirm the collection is being created with your data from the Qdrant dashboard?

@Anush008 I don't know if this is related or if you can help me.
I notice that when I upload a document to QDrant using Flowise, it creates in qdrant a "content" field and when we use the langchain code it creates the field "page_content".
Because of that, I have an incompatibility when I try to chat with collections that I create using qdrant-client.
Any thoughts on that?

@Anush008 I don't know if this is related or if you can help me.
I notice that when I upload a document to QDrant using Flowise, it creates in qdrant a "content" field and when we use the langchain code it creates the field "page_content".
Because of that, I have an incompatibility when I try to chat with collections that I create using qdrant-client.
Any thoughts on that?


List relevant terminologies

We should list relevant terminologies. At least

All codes and vocabularies maintained by THL
Any relevant additional Kanta codes
"Kuntaliitto" codes for lab results

Also describe the status of Snomed CT adoption, international codes used in medications, etc...
And think about mentioning future EHDS developments and how they may affect local codings.

Fixed in #33 and in #35.


View Today's Results by Default

Hello.
This is technically not an issue, but more of a "let me try to help others" type of a post :-) Mods, feel free to move this where it should go because I am honestly not sure where i should post this. I just want to pass this along to anyone else who might find it useful.
If you're using Orthanc like I am, you will more than likely notice that this Viewer takes forever to display results because it is trying to load the whole Orthanc database. I found a good workaround that displays Today's Date only and it requires very little editing. This is split in two methods, one for the Docker Image and the other one is if you're compiling the Viewer yourself.
For Docker Installs:

Go to Viewers/dockersupport/ folder.
Modify the app.json file to include the following line:

"ui": {
"studyListDateFilterNumDays":1
I put the above line right after where it starts with public. So now, that part in my app.json file now looks like this:
"public": {
"ui": {
"studyListDateFilterNumDays":1
},
},
"proxy": {
"enabled": true
}
}
}
}]
}

That's it. Build the Docker image using docker-compose and you're ready to go. Please make sure the syntax and spacing are correct. It is not letting me paste it correctly here :-)

Building the Viewer yourself:

Go to Viewers/config.
Open the server config file that you want to use in your favorite editor. I used "orthancDIMSE.json".
In the "UI" section of the config file, add the following line and then save it:

"studyListDateFilterNumDays":1
My "orthancDIMSE.json" UI section now looks like this:
"ui": {
"studyListFunctionsEnabled": true,
"leftSidebarOpen": false,
"displaySetNavigationLoopOverSeries": false,
"displaySetNavigationMultipleViewports": true,
"autoPositionMeasurementsTextCallOuts": "TRLB",
"studyListDateFilterNumDays":1

Compile and then run the Viewer.

I really hope this helps someone :-)

This is a good point. We should update the default configuration to use this filter.

This is awesome! Thank you!

Hi, I have tho opposite problem of @davidi1, my OHIF viewer is for some demo data that can be quite old, I'd like to query all studies by default.  @swederik, is there a way to do this using the config file?


Dynamic set ControlDefinition attribute

[ControlDefinition("div", ContainingClass = "m-article-card", ComponentTypeName = "iTownpageItem")]
public class iTownpageItem : Control<_>
    {
...
    }

Could you please tell how I can set the value of attribute ControlDefinition at the runtime?

Unfortunately ControlDefinition can not be set dynamically for now. Probably we can add such a possibility in the future.
Anyway, why do you want to make it dynamic? Maybe we can solve your issue in a different way.

The layout of web element can be changed in the future so I move the hard code values such as xpath values to JSON config. I'm new to Atata so I'm not sure how to define custom control.

Unfortunately ControlDefinition can not be set dynamically for now. Probably we can add such a possibility in the future.
Anyway, why do you want to make it dynamic? Maybe we can solve your issue in a different way.

How I can click by element with dynamically defined language ?
         public void GivenIHaveOpenMainPage()         {             Go.To<MainPage>();             On<HeaderLanguageDropDown<MainPage>>().LanguageButton("en").Click();         }

For language drop-down LanguageButton method to choose option by data-langid attribute can be implemented this way :
public Link<TOwner> LanguageButton(string languageId)
{
    return Controls.CreateLink<TOwner>(languageId, new FindByAttributeAttribute("data-langid", languageId));
}

Works as expected.
Please close this question.


include user-defined cint.h directory for cmake

Looks like https://github.com/MatthewRHermes/mrh/pull/15 is not applied after migrating to pyscf-forge. Applied in this PR.

Commentary: I think PR #3 made this necessary by removing my copy-pasted code and grabbing things instead from PySCF; it's the PySCF header files that need to see cint.h; not nr_numint.c itself.


Banner component

I'm creating this issue to let chime in if this should be an atom/molecule or organism and if it should be implemented on faststore or on base.store.
The Banner component is a content driven component that displays some text and an image.
Figma link

Yes, this should be done on faststore as an organism

After few discussion we decided to classify it as molecule https://github.com/vtex/faststore/pull/1048, but I still think it suits better as an organism.

closing because https://github.com/vtex/faststore/pull/1048 was merged


[Request Feature] Using shared animation by multiple model in editor and build

Added in Build#153.
In Asset Meta, set EMBEDDED_ANIMATION to false will build animation (.pyxa) instead of model with embedded animation (.pyxf).
To use share animation, look for tutorial in pyxieTutorials repo.


Runner version v2.303.0 is deprecated and cannot receive messages.

The following error is being logged by both focal and jammy self-hosted runners:
An error occurred: Runner version v2.303.0 is deprecated and cannot receive messages.

We need to upgrade to a later version of the runner based on the available releases from https://github.com/actions/runner/releases.


Scroll over fixed elements

I have a fixed element off the canvas. When I'm over it and I try to scroll the page, the page doesn't scroll at all! How can I solve this issue? Thanks

Any luck @andreamaiolo? I am having the same problem.


Store data on EEPROM when power fail

I am using  internal band gap voltage measurement in one of my sketch for home automation which only write the data on EEPROM when power fail. If we can add in the library it will increase the life of  EEPROM .  Or if I want to use  external  EEPROM  than what I should add.
Sketch for band gap measurement is only for  arduino UNO, nano and mini:
unsigned int ADCValue;
double Voltage;
double Vcc;
long readVcc() {
long result;
// Read 1.1V reference against AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1125300L / result; // Back-calculate AVcc in mV
return result;
}
void setup() {
Serial.begin(9600);
Vcc = readVcc()/1000.0;
ADCValue = analogRead(0);
Voltage = (ADCValue / 1024.0) * Vcc;
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
Serial.println( readVcc());
while(readVcc() <4900){
digitalWrite(LED_BUILTIN, HIGH);}
delay(300);
}

Does this sketch need any additional hardware other than plain arduino board?
I was thinking about storing changed settings to EEPROM right away and came to a conclusion that 100 000 changes is a lot - especially when the user will have to do it by hand with the 4 available buttons.

No it did not require any additional hardware. You can try to upload above sketch in Arduino UNO and power it through VCC it will work and once voltage drop below 4.9 V (4900) than digitalWrite(LED_BUILTIN, HIGH); .
I am already using this sketch and can write on EEPROM successfully.  3 millisecond is enough to write an address. if we have dozen of values to write than simply add bulk capacitor or use power adopter with transformer which will give more time to write the addresses.
Definitely 100 000  is much more than enough and can easily goes up to 10 years.
I am happy with current version of library and specially after last update more easy.
I am try to add pushbutton which detect long press to enter in configuration menu if you can help me .
Thanks,

A menu item saves changes only after it's been hidden and even then only the bytes that have changed (text characters). Although your proposal makes sense, it will cause trouble when analog ports will be used for anything else than voltage monitoring.
About the long press for entry, you can use the Button objects as you wish and only do menu.check() after a long press has been detected. This is beyond the scope of the menu library.

This voltage monitoring is not through analog pin . Its internal band gap voltage .
Ref
"https://jeelabs.org/2012/05/04/measuring-vcc-via-the-bandgap/"
Thanks for last updates now it completely cover almost every type of entries.  Last thing to know how select / calculate  "DLM_ADDR_TEST"     //the eeprom address of the index

Thanks for that link, it clears up many things. I'll throw some numbers in calculator to see how much data can be saved on power off on Arduino and stand-alone circuits (Atmega/Attiny).
For selecting addresses, you need to know how much space your data takes up:
4 bytes for integer, 4 for float, 1 for choice and 1 byte per character of text; so in the example I selected addresses:
DLM_ADDR_TESTINT 0
DLM_ADDR_TESTFLOAT 4
DLM_ADDR_TESTCHOICE 8
DLM_ADDR_TESTTEXT 9
Since I defined text 8 characters long, the next entry would be at address 17. As defined, these addresses place all entries in EEPROM without any other data/empty spaces. You could select any address in Arduino EEPROM (1024 bytes) as long as it doesn't overlap with other stuff that will overwrite or doesn't go over the last byte.


Cannot receive txs. When sending a tx to a wallet account the tx won’t be received and the account balance won’t update. (This is one place that Vite differs from Ethereum. Txs need to be received by the recipient. )

You will have to synchronize your wallet and then you debug it

Gotcha. Working on it now..
On Thu, 3 Mar 2022, 03:48 Yuxanju Lee, @.***> wrote:

You will have to synchronize your wallet and then you debug it
—
Reply to this email directly, view it on GitHub
https://github.com/0xkarl/vite-extension/issues/13#issuecomment-1057549497,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATTUYKTH7EVIW3RPSTTCOXTU6AD4XANCNFSM5PY2X5DQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>

I can send you an encrypted secure ellipal link for the synchronization,
all you have to do is to make sure you follow the steps till you get to
synchronize and then you click on it. Make sure you reboot your wallet
device after synchronizing
On Wed, Mar 2, 2022 at 5:28 PM 0xkarl @.***> wrote:

Gotcha. Working on it now..
On Thu, 3 Mar 2022, 03:48 Yuxanju Lee, @.***> wrote:

You will have to synchronize your wallet and then you debug it
—
Reply to this email directly, view it on GitHub
<
https://github.com/0xkarl/vite-extension/issues/13#issuecomment-1057549497
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ATTUYKTH7EVIW3RPSTTCOXTU6AD4XANCNFSM5PY2X5DQ
.
Triage notifications on the go with GitHub Mobile for iOS
<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
<
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub
.
You are receiving this because you authored the thread.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
https://github.com/0xkarl/vite-extension/issues/13#issuecomment-1057568933,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AX54U7BW36DAT4AJUKPISILU6AIS3ANCNFSM5PY2X5DQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you commented.Message ID:
@.***>

Implemented.


chore(deps): update resolve-kit, remove minimatch resolution

Description
minimatch vulnerability was 3.0.4 and below
no longer needed the resolution once resolve-kit was updated
Test plan
ci
Related issues
na
Backwards compatibility
na

this works with the latest code from resolve-kit but that needs to get published before it can be updated here


feat: update schema component

parse schema from bucket, scope and collection
update config
update query

close #6

More feedback:
In general, method signatures should match the documentation. Examples of breaking this rule include:

In query.ts lines, 353 - 354 parameters don't match the function signature.
In query.ts some functions have documentation of parameters and some don't.  We should document every function.

In general, do not leave code comments out in the codebase. Here are some examples:

In query.ts lines 53 - 61 are commented out with no idea why they are still in the code.
In query.ts lines 90 - 95 are commented out in the switch statement and you are just throwing back an error.
In query.ts lines 224 - 260 are commented out and no idea why.
In query.ts lines 282 - 283 are commented out.
In query.ts lines 359 - 366 are commented out.
In query.ts lines 445 - 490 are commented out and not sure if this is documentation or not because trying to understand how it relates to the code below it.

This is co-reviewed by @ejscribner


Document RDF properties in the http://islandora.ca/islandora8 namespace

We are using RDF properties within the http://islandora.ca/islandora8 namespace, For example, at https://github.com/Islandora/Crayfish/blob/dev/Homarus/static/convert.ttl#L5 and https://github.com/Islandora/Crayfish/blob/dev/Homarus/static/convert.ttl#L5. We should document these properties in a central location.
For Islandora 7, we have https://github.com/Islandora/islandora_ontology.

We are also blindly using non-real namespaces in https://github.com/Islandora-Devops/migrate_7x_claw/blob/master/migrate/tags.csv for the purposes of moving datastreams from 7 to 8.


Validate missing arguments in Google docstring

Should pydocstyle be validating that all arguments are set when using Google style docstrings?
When I have the following in test.py
"""Create a Test."""

def functor(foo, bar):
    """Call the functor.

    Args:
        foo: This is the bar argument

    Returns:
        object:
    """
    print("bar")

and I run
pydocstyle --convention=google test.py

All checks pass, but I was hoping it would flag the missing bar argument in the docstring.
I am looking for enforcement of arguments. At the very least when one argument is specified I would like the other arguments to be specified.
Is this a bug or is there no implementation for this check yet?

Duplicate of #459


test utils: address various code smells

What this PR does / why we need it:
This is a re-open of https://github.com/kubevirt/kubevirt/pull/7222
The PR cleans up a bunch of things in tests/utils.go, like:

Variables named after imports / builtins
Unused parameters
Redundant parentheses / casts
Capitalized error strings and incomplete function comment
Empty slice declarations using literals (x := []Type{})
Non-explicit function return ignoring

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

/lgtm


load keys is super slow

Setting gopass config loadkeys true make startup very slow (~ 500ms for me). The more mounts there are the slower it gets as it will call gpg once per recipient and store.

We may be able to work around this limitation by only checking missing keys after a git pull.


Server issues?

Some requests are hanging, taking over ten seconds to go through on a good connection. Even curl cht.sh hangs for seemingly an indefinite amount of time.

Please try again

Seems to be working, thanks!


[Question] Error Handling

struct State {
   var error: Error?
}

reactor.state.map { $0.error }
   .distinctUntilChanged()
   .subscribe(onNext: { _ in
        ...
   })
   .disposed(by: disposeBag)

If I write the above code and the same error flows twice, it will be stopped by distinctUntilChanged(). Is it correct to have error in state?
How can I handle the same error twice?

Hey, this is really hard part of ReactorKit. Since the every states are in the single State stream, it is difficult to distinguish the state changes and events. To handle this kind of situation there are two ways:

Revision the value:
struct RevisionedError: Equatable {
  fileprivate let revision: UInt
  let error: Error
}

struct State {
  var errror: RevisionedError
}

func reduce(state: State, mutation: Mutation) -> State {
  var newState = state
  if case let .setError(error) = mutation {}
    newState.error = RevisionedError(
      revision: newState.error.revision + 1,
      error: error
    )
  }
  return newState
}

Create an Observable:
private let errorRelay = PublishRelay<Error>()
let error: Observable<Error> = self.errorRelay()

func mutate(action: Action) -> Observable<Mutation> {
  return doSomething()
    .do(onError: { [weak self] error in
      self?.errorRelay.accept(error)
    })
}

Thank you for the kind answer.
This was exactly the way I was looking for.


Notification sometimes incorrectly shows "Nothing Playing"

I'm experiencing intermittent failure of the Kore notification.  It sometimes gets stuck saying nothing is playing.  The main window shows the correct information, only the notification is wrong.  It seems like it happens after I watch episodes on the "Simpsons World" addon but I can't be sure yet.  One thing I can say for sure, to fix it I go into "App Info" for Kore and press "Force Stop".  When I reopen Kore the notification shows the correct info with ff/pause/rewind buttons.  Just closing / reopening the Kore window doesn't fix it.  I'm using Kore 2.4.4 installed from Google Play Store.

Closing this as notifications have been extensively reworked


update readme and demo, and allow set_object(geom, material)

Codecov Report

Merging #4 into master will decrease coverage by 0.28%.
The diff coverage is 86.66%.

@@            Coverage Diff             @@
##           master       #4      +/-   ##
==========================================
- Coverage   86.46%   86.17%   -0.29%
==========================================
  Files           5        5
  Lines         362      369       +7
==========================================
+ Hits          313      318       +5
- Misses         49       51       +2

Impacted Files
Coverage Δ

src/meshcat/visualizer.py
77.38% <100%> (+0.27%)
:arrow_up:

src/meshcat/tests/test_drawing.py
93.54% <100%> (ø)
:arrow_up:

src/meshcat/commands.py
88.57% <81.81%> (-4.54%)
: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 cb07fde...f0c61c8. Read the comment docs.


Organization users list 'Add user' button arrow icon & users list email fixed

CR @xavijam

@gfiorav could you take a look to the Ruby changes?

Ping!

Sounds good this solution?

Frontend part -> :+1:

Backend part -> Once you take care of trailing spaces and my other comment, ship it! :package:

:shipit:

\o/
Will merge on Monday :D


Csr env var

Please check if the PR fulfills these requirements:

[X] After these changes, the app was run and still works as expected
[X] Tests for these changes were added (if applicable)
[X] All existing unit tests were run and still pass

Please specify the type of change this PR introduces (Bug fix, feature addition, content update, chore, etc.):
--Add CSR environment variable checks to code
--Add new route to properly redirect pages as needed
--Fix resulting bugs (eg. properly update page title and consent modal after the page redirect)
Additional Notes:
Due to the size of this PR, I've included a code breakdown below to elaborate on specific changes.
--Add key to header title and consent modal to force re-render on page redirect
--change this.pageTitle() and isConsentModalOpen() to be functions instead of computed values, since the computed values' caching causes bugs otherwise
--add new route, commonRoutes.SPECIFIC_PAGE_NOT_FOUND to send pages instead of routing to the catch-all (I needed a specific route to check requests against in order to send them to the PageNotFound page. That way I'm not trying to intercept all routes matching /* hahaha)
--change global route guard to send all requests for SPECIFIC_PAGE_NOT_FOUND directly to their destination (eg. without checking for a pay patient base URL or anything like that)
--add SPA_ENV_PPPP_IS_CSR_ENABLED to spa-env-service
--add checks for CSR, spa env variables to ClaimCountPage page load, redirect to SPECIFIC_PAGE_NOT_FOUND if needed

Right after I opened this, the thought occurred to me that the ClaimCountPage created() functions for Pay Patient and Pay Prac could probably use more unit tests (right now it only checks for logService being called). I can work on that more tomorrow, but please let me know if there's anything else I need to fix before I can deploy this, since the testing team would appreciate this getting out the door as soon as possible


add option to disable quorum for gets with etcd backend

having the quorum flag active for all get requests breaks our etcd cluster because of too much load with simple get requests
it would be really important for us to disable that or have readOptions implemented (see pull request https://github.com/docker/libkv/pull/167)

fixed in fork https://github.com/abronan/libkv/pull/33


Not cleaning bindings from elements loading via compose

Thanks for this plugin! We have some tests which compare snapshots of HTML and there would break if the  aurelia id's changed.
One thing we have noticed is that bindings arent don't appear to be cleaned from some elements. It appears that it's because they are loaded in compose elements but I've not looked further yet. Is this something you would expect or should I dig deeper?

Hi @timfish. How can I reproduce your issue? Can you show me some code?

@lgabeskiria I'll see if I can put together a repository reproducing it.


Setting "bare" properties is not valid ES6?

I'm looking at migrating over to Aurelia from Durandal (which I found to be fantastic, by the way) and in updating my text editor to have ES6 highlighting came across this bug which I assumed to be in editor plugin.
However, it seems that setting properties on classes with below syntax isn't strictly valid ES6, although Babel supports it.
class Thing{
  size = 1
  colour = 'green'
}

The above syntax is used in various places in the source of this repo. Concerned we might be teaching people bad habits by leaving it that way.
Really excited about starting to use Aurelia, keep up the good work!

The syntax above is an extension to classes that is being proposed as part of ES7. You can use Aurelia with or without that. The Babel configuration controls whether it is turned on or not.

I'd better look for an ES7 highlighter then :)


Open Predict is not returning results for this query

https://arax.ncats.io/?source=ARS&id=7c8d4771-cbdb-4e71-84bc-33fb65e068cb

@arifx OpenPredict is encountering a 500 internal server error with this query

@vemonet

Only the ID is not enough to reproduce the query and fix it

Please send the query or a link to it

@vemonet, looks like this is the query that was used:
{
  "message": {
    "query_graph": {
      "edges": {
        "e0": {
          "object": "n1",
          "predicates": [
            "biolink:correlated_with"
          ],
          "subject": "n0"
        }
      },
      "nodes": {
        "n0": {
          "ids": [
            "SNOMEDCT:197358007"
          ],
          "name": "drug-induced liver injury"
        },
        "n1": {
          "categories": [
            "biolink:DiseaseOrPhenotypicFeature"
          ],
          "name": "Disease Or Phenotypic Feature"
        }
      }
    }
  }
}

We don't expect OpenPredict to return any results for the biolink:correlated_with predicate, but it's currently throwing a 500 internal server error.
{
  "detail": "The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.",
  "status": 500,
  "title": "Internal Server Error",
  "type": "about:blank"
}


Error: Network Error. Check console for details.

Additional context
I start go server listen localhost:8080

localhost support is not implemented yet. This is a security feature imposed browsers. Please track of it's progress on #274 and hopefully will be solved on #267


build: allow uportal-auto-screenshot to be installed as script on PATH

https://docs.npmjs.com/files/package.json#bin

Thanks!


[WIP] Remove _listConnected on _test property & fix tests to use module

Coverage decreased (-0.7%) to 77.828% when pulling 7a74ce09b132e564f741d791f1be48e5b5e33e71 on listConnected into bf2e76d176ca33000a48cad151e204fc91191a71 on master.


Generating coverage report outside source code?

Is it mandatory to have access to source code when generating report?
I thought I could do this: execute coverage run in my docker container. Get the .coverage file and then use it to generate report. But if I try that outside of container (e.g. coverage lcov --data-file=src/common/test/coverage/.coverage -o coverage.lcov), I get errors like:
No source for code: '/opt/odoo/projects/custom/demo_module/__init__.py'.

If I generate report inside container, then it works fine. I thought .coverage file has everything you need to generate report? Or it still needs to access source code during generation?

Your source code is only used during the report generation, not while running the code.  You need to run the reporting commands (report, html, xml, json, or lcov) somewhere that the source is available.  You might need a [paths] section in your configuration file to tell coverage how to map the paths between the running environment and the reporting environment.


x86 FPU: add semantics for all x86 FPU instructions

While working on #293 I noticed some x86 FPU instructions are not modeled in capstone2llvmir. As discussed in #193, not all of them have to be fully translated into LLVM IR. Also, there might be some already modeled instructions that would be better represented with intrinsic function calls or pseudo assembly function calls. But all of these need to be analyzed and decided how to best represent them. Once decided, I might add info on what to do to every instruction in this list.
List of x86 FPU missing instructions:

F2XM1
FBLD
FBSTP
FNCLEX
FCMOVcc
FFREE
FISTTP
FLDCW
FLDENV
FPATAN
FPREM
FPREM1
FPTAN
FRSTOR
FNSAVE
FSCALE
FNSTCW
FNSTENV
FNSTSW
FXAM
FXRSTOR
FXRSTOR64
FXSAVE
FXSAVE64
FXTRACT
FYL2X
FYL2XP1

This issue might get solved as part of a bachelor thesis - see milestone.


Jellyfin background will start flickering after a few minutes

Describe the bug
If Jellyfin is left on the home screen or shows screen for a few minutes with this custom CSS the background image will start flickering to black and then back to the image.
Both user and admin themes are set to dark
To Reproduce
Leave the homepage or "shows" tab open for a few minutes
Screenshots
I'd post a gif but the issue seems to happen when I least expect it

/* Recommended /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/fixes.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/jf_font.css');
/ Required /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/base.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/accentlist.css');
/ Rounding /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/rounding.css');
/ Smaller Cast /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/smallercast.css');
/ Compact Episodes*/
/* Transparent top bar /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/header/header_transparent.css');
/ Login Screen /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/login/login_minimalistic.css');
/ Input Fields /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/fields/fields_noborder.css');
/ Watched/Unwatched Indicators*/
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/cornerindicator/indicator_floating.css');
/* Choose Type /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/type/colorful.css');
/ Title Page /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/titlepage/title_banner.css');
/ Progress Bar /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/overlayprogress.css');
/ Effects /
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/hoverglow.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/glassy.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/pan-animation.css');
/ @import url('https://ctalvio.github.io/Monochromic/backdrop-hack_style.css'); */
/Style backdrop/
.backdropImage {filter: blur(18px) saturate(120%) contrast(120%) brightness(60%);}

I'll take a look, but first, you've added comments incorrectly, or something went wrong when you pasted that.
Correct commenting would look like this:
/* Recommended */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/fixes.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/jf_font.css');
/* Required */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/base.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/accentlist.css');
/* Rounding */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/rounding.css');
/* Smaller Cast */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/smallercast.css');
/* Compact Episodes*/
/* Transparent top bar */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/header/header_transparent.css');
/* Login Screen */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/login/login_minimalistic.css');
/* Input Fields */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/fields/fields_noborder.css');
/* Watched/Unwatched Indicators*/
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/cornerindicator/indicator_floating.css');
/* Choose Type */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/type/colorful.css');
/* Title Page */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/titlepage/title_banner.css');
/* Progress Bar */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/overlayprogress.css');
/* Effects */
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/hoverglow.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/glassy.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/pan-animation.css');
/* @import url('https://ctalvio.github.io/Monochromic/backdrop-hack_style.css'); */
/* Style backdrop */
.backdropImage {filter: blur(18px) saturate(120%) contrast(120%) brightness(60%);}

If your code is correct, then try removing the pan-animation effect and see if the issue still occurs.

I am getting the same issues:
https://user-images.githubusercontent.com/7817335/155201956-2a688d0b-9e13-4a6b-8c47-5618ee41a2f3.mp4
As time goes on it gets progressively worse then the sidebar menu starts flashing as well.
My Custom CSS:
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/fixes.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/jf_font.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/base.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/accentlist.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/rounding_circlehover.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/smallercast.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/episodelist/episodes_grid.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/header/header_transparent-dashboard.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/login/login_frame.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/fields/fields_border.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/cornerindicator/indicator_floating.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/type/dark_withaccent.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/titlepage/title_banner-logo.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/progress/floating.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/hoverglow.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/glassy.css');
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/pan-animation.css');
@import url('https://ctalvio.github.io/Monochromic/backdrop-hack_style.css');
/*Style backdrop*/
.backdropImage {filter: blur(18px) saturate(120%) contrast(120%) brightness(40%);}

/*Login background*/
#loginPage {background: url(https://i.imgur.com/9vL4iNf.png) !important;}

/*Accent and roundingd*/
:root {--accent: 98, 121, 205;}
:root {--rounding: 12px;}

I've been using the same CSS @Fortfite provided, and have not experience the same issue. I use firefox and the desktop media player.
What browsers/clients are you using?

@CTalvio I use the latest chrome version. I just tested it on my Firefox version and I am not experiencing the issue. Maybe jellyfin's rendering in chrome is messed up?

If the problem were in the CSS, I'd expect it occur with all browsers/clients.
Still, if it is not happening unless ultrachromic is used, something is triggering the issue. If you like, you can narrow it down by removing/adding lines until you find which is causing it. You can also paste in the actual code behind the imports. And do the same until you find the exact snippet of code.
Start with anything that affects the backdrop. And you're not up to it, I'll do this myself eventually.

I narrowed it down to the pan animation: @import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/pan-animation.css');
I am still narrowing down what combo of CSS is specifically causing it. It doesn't occur with just the pan animation enabled. Also it seems there is some weird rendering issues with jellyfin and chromium that might be the ultimate reason for this. I made a bug report here about it - https://github.com/jellyfin/jellyfin-web/issues/3469

Ok, so I narrowed things down:
@import url('https://cdn.jsdelivr.net/gh/CTalvio/Ultrachromic/effects/pan-animation.css');

/*Style backdrop*/
.backdropImage {filter: blur(18px) saturate(120%) contrast(120%) brightness(40%);}

This combo causes it.

So if you use just the pan animation, it's fine? But not if you modify the backdrop with any kind of filter?
That's definitely a chrome issue, then. I'll add a warning to the readme.

Issue still happens with the following line removed on Chrome 99.0.4844.51
.backdropImage {filter: blur(18px) saturate(120%) contrast(120%) brightness(40%);}

Here's a gif, I don't know how to embed them, sorry.
https://gfycat.com/MemorableParallelAfricanrockpython


fixes broken provide() when followed by require() of a parent module …

Fixes #14

Thanks for the PR, I'll check it out soon and merge it if everything works to my expectation :)

I just merged this and I will soon publish a new version


add instructions to readme for exampleproject to build on windows usi…

Added instructions into readme for exampleproject file to get a successfull build using visual studio

Instead of changing the readme telling people what to change in the CMake file, I've made the changes directly to the CMake file.  See this:  https://github.com/stephanecharette/DarkHelp/commit/b41ac9f13b1d4ed6910758648275c7d1d71600a0
Closing this PR, as I hope the changes I've made address the problem originally brought up by @berkgungor.  Thank you for the contribution.  Hope you're OK with me modifying the CMake file instead.


RATIS-1021. Fix failed UT: testMultipleLinearRandomRetry

What changes were proposed in this pull request?
randomized.getDuration() got from the following code, i.e. rounded. multiplier is a double value less than 1.5 in the test, such as 1.4999999, duration is 1000, then product will be 1499.9999, so rounded will be 1500, which is not less than d*1.5, i.e. 1500.

What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/RATIS-1021
How was this patch tested?
No need to add ut.

@bshashikant @lokeshj1703 Could you help review this patch ? Thank you very much.

Thanks @runzhiwang for the contribution. I have committed this.

Hello! Can you tell me what is UT for Ratis? Is it integration tests tool?

I just realized UT means unit tests :-)


Introdude ActionView::Component in favor of presenters

This PR installs ActionView::Component (to be a part of Rails core in v6.1) and converts most of our presenter objects to use it.
The biggest commit is "Convert work history presenters to ActionView::Components" which is quite gnarly, due to those presenters also being quite gnarly in order to do their job efficiently. This was effectively a direct port from our presenter pattern to the component pattern with very little code changed.
If you want to learn how to make a component, the best commit to look at is "Make publication status badge into an ActionView::Component" which is a nice, small, self contained component used for our publication statuses. Formerly this was a partial with a bit too much logic inside it, now happily converted into a component.
The only weird gotcha is, despite following the installation instructions as best I could, I needed to require 'action_view/component' atop each component class in order to get them to run properly. I don't know why, this doesn't seem desireable, and there's no mention of this in the Component gem readme. I wasn't sure whether to dig in and try to fix this now, or perhaps wait until we upgrade to Rails 6.1.
Speaking of upgrading to Rails 6.1, I kind of think we should leave the first commit "Install ActionView::Component" as un-squashed in the git commit history. That way when we do upgrade to Rails 6.1 which ships with Component out of the box, presumably we'll need to undo whatever is done in this commit?
Fixes #153

@rschenk Agreed, I'm all for granular commits if we think, or are at least reasonably sure, they should be reverted at a later date.

@awead Component gem's readme says the convention should be plural... that being said, they never actually do that in any of their examples


ansible: 2.6.2 -> 2.7.0

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/python2.7-ansible/versions.
meta.description for ansible is: '"A simple automation tool"'.

Checks done (click to expand)

built on NixOS
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-config had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-connection had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-console had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-doc had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-galaxy had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-inventory had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-playbook had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-pull had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/ansible-vault had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-config-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-config-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-connection-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-connection-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-console-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-console-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-doc-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-doc-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-galaxy-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-galaxy-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-inventory-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-inventory-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-playbook-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-playbook-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-pull-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-pull-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/..ansible-vault-wrapped-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin/.ansible-vault-wrapped had a zero exit code or showed the expected version
0 of 30 passed binary check by having a zero exit code.
0 of 30 passed binary check by having the new version present in output.
found 2.7.0 with grep in /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0
directory tree listing: https://gist.github.com/e39c79e2c56face8c864ee9ba6375de3
du listing: https://gist.github.com/725b9739e0e11f93dcc52c2340631f2a

Outpath report (click to expand)

Outpath difference report
23 total rebuild paths
6 package rebuilds
6 x86_64-linux rebuilds
6 i686-linux rebuilds
5 x86_64-darwin rebuilds
6 aarch64-linux rebuilds
First ten rebuilds by attrpath
ansible
ansible-lint
ansible2
ansible_2_6
kargo
python27Packages.pytest-ansible

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A ansible https://github.com/r-ryantm/nixpkgs/archive/f9b912afdb6c7dc3a514d121b86fbb959ae4ed8f.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0
ls -la /nix/store/ifw0bbmafwh67xwls48hvw8nd3z2xq70-python2.7-ansible-2.7.0/bin

cc @jgeerds @joamaki for testing.


Workbook explaining Quorum gas 0

https://github.com/Nethereum/Nethereum/issues/120
"The use of gas (with gasPrice = 0) is the intended design. We want to prevent infinite loops in the EVM and want DApp developers to be aware of the computation costs associated with their designs, but we don't see cost/benefit justification for reducing balances in a permissioned/consortium network. One future change we've discussed is to automatically pre-fund newly created accounts with an amount of Ether to make things easier since an account with a zero balance cannot send transactions (even though gasPrice = 0). In the mean time you can just do a value transfer from a funded account to new accounts that need to be created."

It is already defaulted to 0 https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/Web3Quorum.cs#L27

is a workbook addressing the issue still relevant @juanfranblanco?


Add python 3.13 support

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

Project coverage is 100.00%. Comparing base (52f223d) to head (09ae79d).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #254   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           68        68
  Lines         1395      1395
  Branches        52        52
=========================================
  Hits          1395      1395

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


AWX Upgrade results in container manager error

Environment

k3s version v1.21.5+k3s2 (724ef700)
go version go1.16.8

OS: CentOS 8
AWX Operator: 0.17.0

Description

Followed your guide and upgraded from 0.14.0 to 0.17.0. First attempt failed due to resources, but worked after deleting the old deployment.
An error occurs when I execute the backup and the following command:
kubectl -n awx logs deployments/awx-operator-controller-manager -c manager --since=60m --tail=4
error: container manager is not valid for pod awx-operator-controller-manager-775b5cfc56-46htw
NAME                                               READY   STATUS    RESTARTS   AGE
awx-postgres-0                                     1/1     Running   3          121d
awx-operator-controller-manager-775b5cfc56-46htw   2/2     Running   0          22h
awx-7f55c57c85-7d6q8                               4/4     Running   0          22h

[root@awx backup]# kubectl -n awx describe pod awx-operator-controller-manager-775b5cfc56-46htw
Name:         awx-operator-controller-manager-775b5cfc56-46htw
Namespace:    awx
Priority:     0
Node:         awx.domain.local/<IP_ADDRESS>
Start Time:   Thu, 17 Feb 2022 12:17:54 +0100
Labels:       control-plane=controller-manager
              pod-template-hash=775b5cfc56
Annotations:  <none>
Status:       Running
IP:           <IP_ADDRESS>
IPs:
  IP:           <IP_ADDRESS>
Controlled By:  ReplicaSet/awx-operator-controller-manager-775b5cfc56
Containers:
  kube-rbac-proxy:
    Container ID:  containerd://2d90e3940e25a32c2d0da5436ddd817b8b3cc3cb2a7a1c612bf3284d1f85cedd
    Image:         gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
    Image ID:      gcr.io/kubebuilder/kube-rbac-proxy@sha256:db06cc4c084dd0253134f156dddaaf53ef1c3fb3cc809e5d81711baa4029ea4c
    Port:          8443/TCP
    Host Port:     0/TCP
    Args:
      --secure-listen-address=<IP_ADDRESS>:8443
      --upstream=http://<IP_ADDRESS>:8080/
      --logtostderr=true
      --v=10
    State:          Running
      Started:      Thu, 17 Feb 2022 12:17:55 +0100
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-frw4h (ro)
  awx-manager:
    Container ID:  containerd://408d16164ed4bb4b63f5f8a5e619b73d569a057f7674a93807cf0918e4151c9f
    Image:         quay.io/ansible/awx-operator:0.17.0
    Image ID:      quay.io/ansible/awx-operator@sha256:2ffa0449b9ee0961df3e4794c5da5bcea2a0f7677df2ddad63e07652fd11ef54
    Port:          <none>
    Host Port:     <none>
    Args:
      --health-probe-bind-address=:6789
      --metrics-bind-address=<IP_ADDRESS>:8080
      --leader-elect
      --leader-election-id=awx-operator
    State:          Running
      Started:      Thu, 17 Feb 2022 12:17:56 +0100
    Ready:          True
    Restart Count:  0
    Liveness:       http-get http://:6789/healthz delay=15s timeout=1s period=20s #success=1 #failure=3
    Readiness:      http-get http://:6789/readyz delay=5s timeout=1s period=10s #success=1 #failure=3
    Environment:
      ANSIBLE_GATHERING:   explicit
      ANSIBLE_DEBUG_LOGS:  false
      WATCH_NAMESPACE:     awx (v1:metadata.namespace)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-frw4h (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  kube-api-access-frw4h:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

Any ideas? Thx in advance...

kubectl -n awx logs deployments/awx-operator-controller-manager -c manager --since=60m --tail=4

The container name (-c) should be awx-manager instead of manager as follows:

kubectl -n awx logs deployments/awx-operator-controller-manager -c awx-manager --since=60m --tail=4

The container manager in AWX Operator's Pod had been renamed to awx-manager in 0.15.0. So if you upgraded your operator to 0.17.0, you should specify new name.
The actual names for containers are included in your output:
[root@awx backup]# kubectl -n awx describe pod awx-operator-controller-manager-775b5cfc56-46htw
Name:         awx-operator-controller-manager-775b5cfc56-46htw
...
Containers:
  kube-rbac-proxy:     👈👈👈
    Container ID:  containerd://2d90e3940e25a32c2d0da5436ddd817b8b3cc3cb2a7a1c612bf3284d1f85cedd
    ...
  awx-manager:     👈👈👈
    Container ID:  containerd://408d16164ed4bb4b63f5f8a5e619b73d569a057f7674a93807cf0918e4151c9f
    ...

Doh! Thanks for the quick reply. Issue resolved.


[WIP] [NDTensors] Add AMDGPU.jl (ROCm) based extension for NDTensors

Description
This PR adds an AMDGPU.jl extension for NDTensors following the same structure as the CUDA extension.
It is still a WIP, but I am hoping to get feedback on a few points before finishing it up.

Dot product on ITensors sometimes fails or falls back on slow default methods. If I implement a simple method that makes a copy and permutes the indices if they are different, I can then just call dot on the underlying ROCArrays, like so:

function dot(A::ITensor, B::ITensor)
  pB = B
  if (inds(A) != inds(B))
    pB = permute(B, inds(A))
  end
  return dot(NDTensors.data(tensor(A)), NDTensors.data(tensor(pB)))
end

I'm having trouble understanding which low level functions (presumably in LinearAlgebra) ITensors.dot actually calls. Trying to trace the functions in the Julia REPL brings me to NDTensors.contract but I can't figure out what it calls past that.
This brings me to a file in SimpleTraits.jl
julia> i, j = Index(10, "i"), Index(5, "j")
((dim=10|id=395|"i"), (dim=5|id=574|"j"))

julia> A = ITensor(randomTensor(ROCArray, (i, j)))
ITensor ord=2 (dim=10|id=395|"i") (dim=5|id=574|"j")
Dense{Float64, ROCArray{Float64, 1, AMDGPU.Runtime.Mem.HIPBuffer}}

julia> B = ITensor(randomTensor(ROCArray, (i, j)))
ITensor ord=2 (dim=10|id=395|"i") (dim=5|id=574|"j")
Dense{Float64, ROCArray{Float64, 1, AMDGPU.Runtime.Mem.HIPBuffer}}

julia> labelsA, labelsB = ITensors.compute_contraction_labels(inds(A), inds(B))
((-1, -2), (-1, -2))

julia> @edit NDTensors.contract(A.tensor, labelsA, B.tensor, labelsB)

I expect it's very similar to an issue I was having with other slow tensor contraction with ROCArray backed ITensors which I was fixed by exposing the right parameters for LinearAlgebra.mul! in AMDGPU.jl (https://github.com/JuliaGPU/AMDGPU.jl/pull/585).

Though this PR does implement the rocSOLVER Jacobi method for SVD, I found it to be significantly slower than divide-and-conquer on CPU for the TDVP simulations I'm doing. To make using the CPU SVD work I added a roc_to_cpu_svd option for svd_alg which simply copies the matrix to host, calls SVD, and then converts USV back to ROCArrays. However, I'm guessing there may be a cleaner or more general way to do this (maybe to allow the other NDTensors extensions like the CUDA extension to also easily use CPU for SVD).

When calling the rocSOLVER SVD algorithm, the function may try to allocate extra memory on the GPU (even though I can't find any documentation for why in the rocSOLVER documentation from AMD), so if the memory pool has allocated the entire GPU's memory (i.e. AMDGPU.Mem.free() returns 0) the function may fail. This is why I am trimming the pool if there is less than 1GB free before calling gesvdj!. I will try to investigate this more to see if there is a proper way to handle it.

There is a small bug in the rocSOLVER SVD algorithms in AMDGPU.jl which has been fixed but not released yet (https://github.com/JuliaGPU/AMDGPU.jl/pull/588).

How Has This Been Tested?
I added the new NDTensors.roc function to the devices list in the NDTensors tests. However, there are several tests failing due to:

The aforementioned dot issue
Tests that call svd directly on ROCArrays which seems to return junk https://github.com/ITensor/ITensors.jl/blob/98b95a20f7b3c31324a2f23c730af4fc173b61f3/NDTensors/src/lib/Unwrap/test/runtests.jl#L94 I believe this should be fixed by AMDGPU.jl.
There are many tests that are calling ql on ROCArrays which is not handled by AMDGPU.jl (similar to CUDA.jl). There seems to be an exception made for CUDA arrays in various QL decomposition functions, e.g. https://github.com/ITensor/ITensors.jl/blob/98b95a20f7b3c31324a2f23c730af4fc173b61f3/NDTensors/src/linearalgebra/linearalgebra.jl#L392 Not sure if I should add similar code for ROCArrays here.

I also added an example script similar to the CUDA one.
Checklist:

[x] My code follows the style guidelines of this project. Please run using JuliaFormatter; format(".") in the base directory of the repository (~/.julia/dev/ITensors) to format your code according to our style guidelines.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have added tests that verify the behavior of the changes I made.
[ ] I have made corresponding changes to the documentation.
[ ] My changes generate no new warnings.
[ ] Any dependent changes have been merged and published in downstream modules.

At first glance this looks good, thanks! This is a nice payoff for a lot of work @kmp5VT and I have been doing to make the overload requirements for new GPU backends as minimal as possible, I'm glad to see this doesn't seem to require very much code to get working.
The SVD code definitely looks like it is the most complicated part that we will have to look at carefully, but besides that it all looks similar to what we needed to overload for the CUDA and Metal backends.
In terms of dot, it just calls tensor contraction: https://github.com/ITensor/ITensors.jl/blob/v0.3.55/src/itensor.jl#L1905 so maybe you are hitting a corner case of tensor contraction that is going wrong for the AMDGPU backend? You would have to share a minimal example for us to have more information.

Looks like there is some package compatibility issue in the tests.

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

Comparison is base (98b95a2) 84.06% compared to head (5ddad54) 53.89%.

:exclamation: Current head 5ddad54 differs from pull request most recent head 01f6c71. Consider uploading reports for the commit 01f6c71 to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1325       +/-   ##
===========================================
- Coverage   84.06%   53.89%   -30.17%
===========================================
  Files         100       99        -1
  Lines        8545     8492       -53
===========================================
- Hits         7183     4577     -2606
- Misses       1362     3915     +2553

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

One suggestion I would have to make this first PR simpler to review would be to just support an SVD implementation that transfers to CPU, and then add in other SVD backends in a future PR.
I think it is a subtle question to figure out how to select different SVD backends for different devices (say you want to specify that if you run on CUDA you want to use a certain cuLAPACK implementation, but then on AMD you want to transfer to CPU to perform SVD, then on Metal you want to...). That will be a longer discussion and may require us to think about the higher level SVD interface.
It may by that we should add support to the svd function that the alg keyword argument could in general be a function which takes in information about the backend and returns a string or Algorithm object depending on that backend, i.e.:
svd_alg(::Type{<:CuArray}) = "cpu"
svd_alg(::Type{<:ROCArray}) = "jacobi_algorithm"
svd_alg(::Type{<:MtlArray}) = "cpu"

u, s, v = svd(t, (i, j); alg=svd_alg)

We would also like to add automated testing for AMD GPUs, @kmp5VT will start to look into that.

@wbernoudy I am currently working on finding a way to access an AMD GPU device. Would it be possible to provide me access to your branch so I can help accelerate your development? I am not that familiar with the AMDGPU.jl package but it does look like there is a rocblas and rocsolver directory which links the julia code to the C libraries in ROC. We should be able to access these functions through linearalgebra.jl , if we can't thats something we could bring up to AMDGPU.jl and should be a relatively easy implementation. regarding the dot function I believe we are using LinearAlgebra.mul! to launch a BLAS dot function.

Would it be possible to provide me access to your branch so I can help accelerate your development?
Of course, I added you as a collaborator on my fork.

To be clear, this extension is already using the accelerated BLAS functions provided by AMDGPU.jl for tensor operations, and it is using the SVD provided in rocSOLVER (and even eigen methods).
AMDGPU.jl now provides both the three and five argument versions of LinearAlgebra.mul!. But I'm guessing there is a certain transformation on one or more of the matrices used somewhere in the call stack of dot that is not yet handled by AMDGPU.jl. I found another of these cases that I fixed here https://github.com/wbernoudy/ITensors.jl/blob/01f6c71844114eb92a9a50c4b23343161b9b028f/NDTensors/ext/NDTensorsROCmExt/mul.jl#L27

@mtfishman I tried the idea of disabling scalar indexing to see if some generic matmul function is using that in the dot code path, but no luck. I disabled the indexing simply by commenting out the relevant functions in NDTensors/ext/NDTensorsAMDGPUExt/indexing.jl, which I believe was the right thing to do to test this (and I do see it it reaching a ERROR: Scalar indexing is disallowed. on some calls). Is there another way it's allowing scalar indexing that I might be missing?
Here you can see the standard dot function does not hit any scalar indexing (other than the very final reading of the zero dimensional tensor) but is ~500x slower than calling dot on the underlying arrays.
julia> using AMDGPU

julia> using ITensors

julia> using NDTensors

julia> using LinearAlgebra

julia> i, j = Index(6152, "i"), Index(1324, "j")
((dim=6152|id=857|"i"), (dim=1324|id=611|"j"))

julia> A = ITensor(randomTensor(ROCArray, (i, j)))
ITensor ord=2 (dim=6152|id=857|"i") (dim=1324|id=611|"j")
Dense{Float64, ROCArray{Float64, 1, AMDGPU.Runtime.Mem.HIPBuffer}}

julia> B = ITensor(randomTensor(ROCArray, (j, i)))
ITensor ord=2 (dim=1324|id=611|"j") (dim=6152|id=857|"i")
Dense{Float64, ROCArray{Float64, 1, AMDGPU.Runtime.Mem.HIPBuffer}}

julia> dot(A, B)
ERROR: Scalar indexing is disallowed.
(rest of stack trace)

julia> dag(A) * B
ITensor ord=0
Dense{Float64, ROCArray{Float64, 1, AMDGPU.Runtime.Mem.HIPBuffer}}

julia> AMDGPU.@allowscalar (dag(A) * B)[]
-3066.643034152186

julia> AMDGPU.@elapsed dag(A) * B
0.29850277f0

julia> function LinearAlgebra.dot(A::ITensor, B::ITensor)
         pB = B
         if (inds(A) != inds(B))
           pB = permute(B, inds(A))
         end
         return dot(data(tensor(A)), data(tensor(pB)))
       end

julia> dot(A, B)
-3066.643034153356

julia> AMDGPU.@elapsed dot(A, B)
0.000623521f0

Actually I think I have figured out the slowdown with dot (so my previous comment can be ignored). The issue is actually that it is calling the AMDGPU gemm method, but this method itself is quite slow when doing the dot product on large vectors. Perhaps other GPU libraries (e.g. CUDA) are able to handle that case better, but I'm guessing the rocblas_{T}gemm functions are doing the naive thing and having threads write to the same output value atomically.
Calling dot directly on the arrays calls the method defined in the GPUArrays library, which uses mapreduce and seems to be far faster. This makes me think there should be definition of dot in ITensors.jl that does call dot on the underlying arrays instead of calling general matmul implicitly by contracting as normal. I'd be happy to make a separate PR for this.

One suggestion I would have to make this first PR simpler to review would be to just support an SVD implementation that transfers to CPU, and then add in other SVD backends in a future PR.

This is exactly what I added the "roc_to_cpu_svd" alg type for. I would be happy to make this the default in this PR (instead of "jacobi_algorithm").
@mtfishman Would it be better if I removed the Jacobi implementation from this PR?

One suggestion I would have to make this first PR simpler to review would be to just support an SVD implementation that transfers to CPU, and then add in other SVD backends in a future PR.

This is exactly what I added the "roc_to_cpu_svd" alg type for. I would be happy to make this the default in this PR (instead of "jacobi_algorithm").

Yes, I understand that. I just don't like that name. How would you choose the CPU SVD backend? Would we need to define a new "*_to_cpu_svd" for every GPU backend? That doesn't seem like a sustainable forward-looking API. I think we will have to think more carefully about how to allow users to control device transfers in low level operations more generally, perhaps with an API that is orthogonal to the alg keyword argument.

@mtfishman Would it be better if I removed the Jacobi implementation from this PR?

Yes, I think so. The code you wrote seems more appropriate to add as an svd function to AMDGPU.jl, and given that it doesn't appear to help with performance it doesn't seem very compelling to add it here and have to support it. It would also simplify the code a lot and let us push off a decision about what to name the alg arguments.

Yes, I understand that. I just don't like that interface. How would you choose the CPU SVD backend? Would we need to define a new "*_to_cpu_svd" for every GPU backend? That doesn't seem like a sustainable forward-looking API.

Very much agreed. An orthogonal argument that allows you to choose the device (in addition to the SVD algorithm) sounds great to me.
Either way, I'm happy to either wait until after a more precise API has been figured out to finalize this PR, or keep the awkward roc_to_cpu_svd for now. Or perhaps there is a cleaner way to do this now without the API change? My understanding is that we need something for the name of the SVD alg type for ROCMatrix, as it must be used here: https://github.com/ITensor/ITensors.jl/blob/2fd3e0a2658831903317b753934d04f37fcdcb46/NDTensors/src/linearalgebra/linearalgebra.jl#L86

The code you wrote seems more appropriate to add as an svd function to AMDGPU.jl

I figured this might be the case, and it certainly makes sense to handle the out-of-memory properly in AMDGPU.jl instead. I will take this out :+1:

Yes, I understand that. I just don't like that interface. How would you choose the CPU SVD backend? Would we need to define a new "*_to_cpu_svd" for every GPU backend? That doesn't seem like a sustainable forward-looking API.

Very much agreed. An orthogonal argument that allows you to choose the device (in addition to the SVD algorithm) sounds great to me.
Either way, I'm happy to either wait until after a more precise API has been figured out to finalize this PR, or keep the awkward roc_to_cpu_svd for now. Or perhaps there is a cleaner way to do this now without the API change? My understanding is that we need something for the name of the SVD alg type for ROCMatrix, as it must be used here:

Glad we're in agreement about that. I think since there will be only one SVD backend for ROCMatrix with the current plan (one where we transfer to CPU), we wouldn't need to involve the alg keyword argument in this PR, see for example the factorizations defined for Metal: https://github.com/ITensor/ITensors.jl/blob/main/NDTensors/ext/NDTensorsMetalExt/linearalgebra.jl. So we could still finish this PR in a simpler form and then add back other SVD backends later as they become available, with a better API for choosing between those backends on GPU or transferring to CPU.

Sorry, I didn't see you referring to default_svd_alg(T). I forget how that is handled for Metal but it could just be handled the same way, presumably it chooses the default that would be used for CPU and then forwards that choice to the CPU SVD backend.

Oh, I didn't think about just overloading LinearAlgebra.svd directly! That's much more straightforward for this. I will make that change.

@wbernoudy Hi, just giving you an update. I now have access to an AMD GPU and have made a few changes (nothing significant). One thing is that the changes I am making in another PR also affects the work here.  What I am doing is working to finish this other PR, pull the changes in here and make those modifications here as well so that we don't have to write this code twice. I am hoping to finish 1331 this week and put more time into your PR next week.

As far as I can tell, the RUN NDTensors tests CI check is failing because latest version of AMDGPU.jl that supports Julia 1.6 is 0.2.17.

─AMDGPU [21141c5a] log:
...
├─restricted by julia compatibility requirements to versions: 0.1.0-0.2.17 or uninstalled, leaving only versions: 0.1.0-0.2.17

I'm guessing upgrading the CI check to Julia 1.9 may not be easy/feasible, but I'm not sure how else we can handle this.

@wbernoudy We use both Julia v1.6 and Julia v1.10 in our CI tests. I completely understand the problem you are running into and can definitely help you fix it. I think we are running into the same issue with Metal.jl and both will need to be addressed in order to create CI unittesting for these backends.
To give you an update this PR is number 3 on my list of things to do. The first two things are related to the module TypeParameterAccessors. I am currently in the works of updating the system across the ITensors library. To limit the number of rewrites of this PR I want to finish the integration first. I would guess that it will take me about a week to finish this integration and next week I can get to this PR.

@mtfishman If you have time to look through this PR I have made some comments in the code about why I have programmed things up. For the most part its exactly the same as the other extensions. I found two issues. One is that AMDGPU doesn't have an append! function which means that Blocksparse dmrg fails. The other is that there is something happening in qr when singular=true and real(elt) = Float32. I suspect this is in the ROCSolver library and I have disabled these tests.  Otherwise all NDTensors test pass using AMDGPU.

@wbernoudy Does this PR look good for you? Also do you know why I am seeing the F32 and ComplexF32 QR failing? Thanks!

Looks good! Thanks @wbernoudy and @kmp5VT.


fix(firebase_auth): Fix email link signin on Android

Description
Changes the ActionCodeSettings.asMap implementation so that it is correctly consumed in all platforms (Android/iOS/Web).
This fixes a bug where the sign in link generated on Android doesn't work. (see https://github.com/FirebaseExtended/flutterfire/issues/4711#issuecomment-773791945)
Related Issues
Fixes #4711
It might fix other bugs related to ActionCodeSettings.
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]).
This will ensure a smooth and quick review process. Updating the pubspec.yaml and changelogs is not required.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

Note on the fix: another option would be to change the way the ActionCodeSettings map is consumed in all platforms. But changing the ActionCodeSettings.asMap method seemed more inline with the intent of the original refactoring, and has less impact on the code.

Do you have an ETA for this bug fix? Developers with Android phones literally cannot work with firebase_auth: ^0.20.0+1, because they cannot sign in to their apps on Android phone or emulator, and the iPhone emulator doesn't allow one to install email apps.
Only option to continue working is downgrade to firebase_auth: ^0.18.4. I need to know if I should do the work of downgrading or wait for bug fix.


Update no match page copy

Trello Card
Context
The 'no match' page copy is wrong – it shouldn't be the "we could not find your TRN".
Changes proposed in this pull request
Update as per designs https://tra-digital-design-history.herokuapp.com/get-an-identity/no-match-journey/
Guidance to review

Ensure copy matches design
Check test coverage

Checklist

[x] Attach to Trello card
[x] Rebased main
[x] Cleaned commit history
[x] Tested by running locally

This changes the content on the No match page for all users, not just the Identity ones.
Could we either fork the logic in the template itself, or if it's cleaner, create a separate template?

Will create a separate template as well as include a test for this on the identity journey


readme: Resolve redirects, correct urls, use HTTPS

Travis: Update code to the new standard.  (Move away from the odl "secure" domain, and using
SVG for which looks better on HiDPI/Retina displays.)
David: Update code to the new standard.
Karma: Consistently link to v0.12 documentation.
github.io: Opt-in HTTPS.
YouTube: Opt-in HTTPS.
Angular: Redirect (https).
Twitter: Redirect (https).
Google Code: Redirect (https).

Also updated LICENSE link. Was hardcoded to the old raw.github.com (redirects to githubusercontent.com), used the relative link feature instead (simpler, and works as expected with branches).

Landed as df2b386e6991c12f7fb08f93271c7d752de8a748


Undefined symbol 'stime'

It looks like in the linux version there is an undefined reference to 'stime'
_ftd2xx_linux.py in <module>
   1506 /usr/include/time.h:283"""
   1507 # /usr/include/time.h 294
-> 1508 stime = _libraries['libftd2xx.so'].stime
   1509 stime.restype = c_int
   1510 # stime(__when)

Commenting out the stime ctypes wrapper fixes this issue.

Reference explaining its removal

@nathanrpage97  it’s fixed in the beta version. Please try 1.2.0-b.2 or 3 (coming soon)

Now that PR is linked and package versions with the fix are in this thread, maybe the issue should be closed.


Allow reading config from "well known" location

At the moment reading the config file from the startup directory is a) unexpected and b) annoying.
Suggest to add functionality to also look for the file in $HOME/.config/zellij and/or $ZELLIJ_CONFIG_DIR.

I agree that the current option designation is unexpected.
The following plugin options will be available starting with Zellij 0.38 and are planned to be changed.
layout {
    pane size=1 borderless=true {
        plugin location="file:./target/wasm32-wasi/debug/zellij-datetime.wasm" {
            timezone1 "UTC:0"
            timezone2 "PDT:-9"
            timezone3 "JST:+9"
            background_color "#ffffff"
            default_timezone "JST"
        }
    }
    pane
}

(I would think a little more about formatting, since this specification is key-value and not a tree structure.)

zellij-datetime v0.17.0 now supports the new plugin configuration for Zellij 0.38.
layout {
    pane size=1 borderless=true {
        plugin location="file:./target/wasm32-wasi/debug/zellij-datetime.wasm" {
            timezone1 "PDT/-9"
            timezone2 "UTC/0"
            timezone3 "CEST/+2"
            timezone4 "JST/+9"
            default_timezone "JST"
            background_color "#0080a0"
            foreground_color "#ffffff"
            pane_color "#1e1e1e"
            enable_right_click false
        }
    }
    pane
}

add support plugin config and permission system on zellij 0.38

Thanks, working perfect!


Blinking block cursor shifts letter down

Repro:

set your cursor to be a block -- setting   "editor.cursorStyle": "block",
open an editor
:bug: see blinking block cursor shifting the letter down

https://github.com/microsoft/vscode/assets/16353531/d226b61d-e2bd-4f8c-ba3c-b9a939d2f1d7
Version: 1.88.0-insider
Commit: be210b3a60c7d60030c1d3d92da00d008edf6ab9
Date: 2024-03-15T06:00:06.808Z
Electron: 28.2.6
ElectronBuildId: 27476517
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Darwin arm64 23.3.0

Introduced with https://github.com/microsoft/vscode/pull/207326

I've been seeing this for years, and only just now bothered to check if it really was moving, or it's a red/green eye-test optical illusion thing. Sure enough, it really does move the character down a pixel or two. I Googled, and just found this issue that's only been open for 3 days! It'll probably never get fixed, but at least I know I'm not imagining it after all.


Learning a codebase

How to tackle a large codebase and understand it

Maybe do this in October? After 1 year working with spaCy?

Closing because not interested anymore


Fix proxy unit tests by removing example and directly testing mockcmd

Currently we are testing this library by proxy by testing an example.go file that uses this library. Instead, we should remove the example.go and example_test.go files and directly test against the mockcmd.go file now we know it's working.

Fixed in v0.2.0

Fixed in v0.2.0


Push button does not enable bluetooth

[x ] I understand that this is only to report software bugs and not for customer support. Please use nebra.io/helium-support.

Describe the bug
Bluetooth button not working.
As described in the manual, in order to enable the Bluetooth we must press the back button for 10 seconds however nothing happens. Workaround is to turn off and turn on - since bluetooth is enabled for some minutes after boot.
Other people experiencing this issue:
https://www.reddit.com/r/NebraMiner/comments/thrivl/my_experience_with_4_rock_pis_so_far/
To Reproduce

Press button for 10-15 seconds

Expected behavior
Bluetooth enabled and visible in Helium app
Screenshots
N/A
Desktop (please complete the following information):
N/A
Smartphone (please complete the following information):

Device: OnePlus Nord
OS: Android 11
Helium app v. 4.0.1

Additional context
Model of unit: Nebra HNT Indoor Hotspot Miner - RockPi version 868 MHz (SKU: NBR-0063) - NEBHNT-HHRK4-868

@antonioli86 I'm moving this over to hm-config repo. We will investigate.
Can you create a ticket at https://support.nebra.com with a picture of the label on the device? And reply back with the ticket number?


Splitting commands up?

Trying to split my command up in to separate files with the sub-commands each in their own file.  However, this seems to not work as you can't pass in root_cmd when you require (so you could do the add_command in each file) and if you set a variable in the sub-command file it won't exist in the root_cmd file...
So, is it possible to create classes instead, or am I missing something else obvious?

Hi,
The approach that I use in Nanoc is the following.
To define a command, read it and call .define with the code and filename (the filename is useful because it ensures any back traces are sensible):
code = File.read(filename, encoding: 'UTF-8')
cmd = Cri::Command.define(code, filename)

I realised that .define used this way is not documented — will fix.
You can infer the name of the command from the filename, if you wish:
command_name = File.basename(filename, '.rb')
cmd.modify { name command_name }

You can stick that code in a helper function e.g. load_command, and then use it as follows to load subcommands:
root_cmd = load_command('commands/nanoc.rb')
root_cmd.add_cmd(load_command('commands/compile.rb'))
root_cmd.add_cmd(load_command('commands/view.rb'))
root_cmd.add_cmd(load_command('commands/deploy.rb'))

You can additionally use something like Dir[…] to remove the repetition, if you want.
Does this solve your concern?

The upcoming release of Cri will add .load_file, so you’ll be able to do
root_cmd = Cri::Command.load_file('commands/nanoc.rb')
root_cmd.add_command(Cri::Command.load_file('commands/comile.rb'))
root_cmd.add_command(Cri::Command.load_file('commands/view.rb'))
root_cmd.add_command(Cri::Command.load_file('commands/check.rb'))

It is a convenient wrapper around Cri::Command.define with a string containing code.

… and an infer_name option as well, e.g.
cmd = Cri::Command.load_file('commands/check.rb', infer_name: true)

cmd.name will be check.

This is now released in v2.14.0.