Add terraform-credentials-vault and  tfvaultenv

These tools have helped me alot when working with terraform cloud and vault.  I have been able to pull secrets and not have them stored in state.

please add

terraform-credentials-vault
tfvaultenv

Thanks @ncecere!


onError didn't give me http response

server: user springboot，if There is an error in the business in the program，my program will return a 500 http status,and a json body："{'code':1001,'msg':'no permit'}"
onError: (oops) {
// Oops! Time to handle those little hiccups.
// You can also choose to disconnect here
print("---onError----");
print(oops.message);
}
print：
Connection Error Status:500, Connection Error Reason:
can't get 这body "{'code':1001,'msg':'no permit'}"

@lovepanda603 Thanks for filing the issue, Are you saying when there is a error, the status code and the json body is not getting printed by doing this?
onError: (oops) {
// Oops! Time to handle those little hiccups.
// You can also choose to disconnect here
print("---onError----");
print(oops.message);
}

@lovepanda603 Thanks for filing the issue, Are you saying when there is a error, the status code and the json body is not getting printed by doing this?
onError: (oops) {
// Oops! Time to handle those little hiccups.
// You can also choose to disconnect here
print("---onError----");
print(oops.message);
}

my print is :  I/flutter ( 5145): Connection Error Status:500, Connection Error Reason:
I can't get nothing,but Program business requirements zhe json

Hey @lovepanda603,
This is fixed on the latest version, 2.1.2. Please update the package to get this data.
Now the EventFluxException has message prop for you to get this.


Explore the Testing framework

Explore the testing framework, and create automated tests for the following tasks:

[x] Item creation, testing combinations of equipment
[x] Initialization of materials and items
[ ] Resource and texture creation
[x] #189

[ ] Explore different ways of testing damage of tools and equipment

Testing the texture parts of this issue does not need to be included in this issue, I should create a standalone issue when that is needed.


ATT00001.txt instead of mail body (sometimes)

I've gotten messages from a couple of students each week that some feedback mails they receive are empty and instead have an attached file named ATT00001.txt which contains the text that composes the mail body for most other students.
The strange thing is that it doesn't seem to happen consistently. Most sent feedback mails do not have this.

This is most likely a mailserver issue. My hypothesis is that all studentes forward this mail te their own sane mail server except a merry few that use the exchange facilities or webmail from the RU.
Google ATT00001.txt and you get myriads of hits fort exchange not healing correctly with some attachment formats.
On 7 October 2018 23:56:53 CEST, W-M-T<EMAIL_ADDRESS>wrote:

I've gotten messages from a couple of students each week that some
feedback mails they receive are empty and instead have an attached file
named ATT00001.txt which contains the text that composes the mail
body for most other students.
The strange thing is that it doesn't seem to happen consistently. Most
sent feedback mails do not have this.


bootstraptour.com is down

I'm not sure if this is the right place to report it, but it appears that bootstraptour.com has vanished from the Internet. This is problematic, because that's where the documentation for bootstrap-tour is located.

+1

+1

yep still down

It's back! Sorry for the inconvenience.


Fix mssql comment with escaped column 30

Q
A

Type
bug/feature/improvement

BC Break
yes/no

Fixed issues

Summary

Codecov Report

Merging #2 (299d473) into 3.0.x (db6f73c) will increase coverage by 0.00%.
The diff coverage is 97.77%.

@@           Coverage Diff           @@
##            3.0.x       #2   +/-   ##
=======================================
  Coverage   88.00%   88.01%
=======================================
  Files         210      210
  Lines        9955     9970   +15
=======================================
+ Hits         8761     8775   +14
- Misses       1194     1195    +1

Impacted Files
Coverage Δ

src/Platforms/SQLServer2012Platform.php
94.35% <97.77%> (-0.03%)
: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 db6f73c...15fa15c. Read the comment docs.

Codecov Report

Merging #2 (299d473) into 3.0.x (db6f73c) will increase coverage by 0.00%.
The diff coverage is 97.77%.

@@           Coverage Diff           @@
##            3.0.x       #2   +/-   ##
=======================================
  Coverage   88.00%   88.01%
=======================================
  Files         210      210
  Lines        9955     9970   +15
=======================================
+ Hits         8761     8775   +14
- Misses       1194     1195    +1

Impacted Files
Coverage Δ

src/Platforms/SQLServer2012Platform.php
94.35% <97.77%> (-0.03%)
: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 db6f73c...15fa15c. Read the comment docs.


rewrite src/modules/importer/YoutubeImporter.js with ES6 syntax

@neighborhood999 the functionality of importing Youtube playlist is broken after merging this refactor work. Please check again, thanks.

I just reverted your change by the way :)

#417


IonicV4 - inline SVG image disappears

Bug report
I am upgrading an application from Ionic-v3 to Ionic-v4.  My app has an inline SVG image and is very simply setup.
Expected behaviour
Simple inline SVG image will display and pan/zoom while using IonicV4.
Actual behaviour
It works great in V3 but in V4, upon setting up the library to connect to the SVG, the SVG image disappears.
Steps to reproduce the behaviour
I forked a rough Ionic V4 boilerplate  at the following URL.  It gives some TypeErrors upon changing code - but that is not the issue.  You can just refresh to get rid of those.
https://stackblitz.com/edit/ionic-v4-angular-tabs-svgpanzoom
Tab one has the full setup while tab 2 has svgPanZoom(elm, options) commented out.
In Tab 1, the SVG image no longer displays and interacting with the screen throws errors (ERROR Error: Failed to execute 'inverse' on 'SVGMatrix': The matrix is not invertible).
In Tab 2, the SVG still displays because it hasn't been setup.
The only difference between the two tabs is the svgPanZoom init.
Configuration

svg-pan-zoom version: 3.6.1
A relevant example URL: https://stackblitz.com/edit/ionic-v4-angular-tabs-svgpanzoom

@slclark I'm seeing this same issue. Did you figure out a work around?

@bsbechtel No, not yet.

@slclark This is a roadblock for something I'm working on, so I'll probably be focusing on it quite a bit over the next few days. @ariutta Do you happen to have any ideas on what might be causing this?
To add a little more detail to the discussion, the graphic element transform matrix has a bunch of NaN values in it when it is instantiated:

...

A relevant example URL: https://stackblitz.com/edit/ionic-v4-angular-tabs-svgpanzoom

I'm not sure if this is the real live example as this page shows quite different svg-content on both tabs:
1st tab, no svg shown:
<svg _ngcontent-itp-c2="" id="map" style="overflow: hidden; display: inline; width: inherit; min-width: inherit; max-width: inherit; height: inherit; min-height: inherit; max-height: inherit; " version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events">
	<g id="viewport-20191023145915309" class="svg-pan-zoom_viewport" transform="matrix(0,0,0,0,0,0)" style="transform: matrix(0, 0, 0, 0, 0, 0);">
		<circle _ngcontent-itp-c2="" cx="500" cy="500" r="50"/>
	</g>
[...]

2nd tab, svg is visible:
<svg _ngcontent-itp-c3="" id="map" style="display: inline; width: inherit; min-width: inherit; max-width: inherit; height: inherit; min-height: inherit; max-height: inherit; " version="1.1" viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg">
	<circle _ngcontent-itp-c3="" cx="500" cy="500" r="50"/>
[...]

On the 1st tab there is no viewBox element, but you have an additional group with strange command transform="matrix(0,0,0,0,0,0)". If I take this transform statement away, the dot becomes visible.

So I have a project that works on the web, and the implementation is exactly the same as the Ionic implementation, and I'm seeing the same issue with the graphic element being added improperly.
I've done a little digging, and with Ionic, so far from what I can tell the getBoundingClientRectNormalized method in svg-utilities is returning 0 values for all properties in Ionic. Not sure what's causing this yet, but that appears to be the root cause of the issue.

So I figured out what's going on here. See this issue. Basically your svg dimensions are not known when the component is initialized, as is the same with all ionic components, because they are based on web components. The easy fix is to wrap your zvg-pan-zoom initializer in a setTimeout function. The right and hard way to do it is to hook into your ionic lifecycle methods or wait for the web component to fire a ready event.


private method can be redeclared in a child class as public without the compiler fail to compile

Hi,
working in an example for Tour De Jewel found the following bug:

In 'components.ExampleAndSourceCodeTabbedSectionContent.as' I have a private 'changeHandler' method.
In 'ButtonBarPlayGround.mxml' (that extends 'ExampleAndSourceCodeTabbedSectionContent') I created a public 'changeHandler' method that is called from a ButtonBar instance in the 'change' event declared in mxml.

Running TDJ result in the following issue: 'change' event handler tries to call the private changeHandler in 'ExampleAndSourceCodeTabbedSectionContent' and fails with an error since event target is not the right one.
This seems to me a bug since compiler should fail to compile and report that 'changeHandler' method is already declared in the parent class as private. Or maybe I'm wrong?

Which code called addEventListener?
Try it in Flex and see what happen

HI Alex,
this is the addEventListener line: https://github.com/apache/royale-asjs/blob/b165d70107414be6ab18696c9b4bf2a7b5583bfb/examples/royale/TourDeJewel/src/main/royale/components/ExampleAndSourceCodeTabbedSectionContent.as#L90
I don't have currently a Flex environment available. If others can try it will be of help
Thanks

According to Adobe's ActionScript Compiler 2.0 Backward Compatibility document, it is intentional to "allow multiple definitions with the same unqualified name as long as they have disjoint namespaces".

Hi Josh, the example you mention refers to a class, and classes can be in different namespaces.
But in this case, I'm talking about methods in the same class, and that methods are in the same namespace.
A part from that, it seems that allowing that kind of behavior introduces confusion for the user (and that's what we want to avoid by using a compiler) and does not seems to solve a valid use case in the real world.
just my 2 :)

the example you mention refers to a class

I'll copy the quote here again and add emphasis: "allow multiple definitions with the same unqualified name as long as they have disjoint namespaces"
It specifically says "definitions". The classes there are just an example. Methods and variables are definitions too.

I'm talking about methods in the same class, and that methods are in the same namespace.

You are talking about methods in two classes (a subclass and a superclass), and they have different namespaces (one is public and the other is private).
Now, I'm not saying that we don't have a bug. It's just that the bug is that the wrong method is being called rather than the fact that there are two methods with the same name and different namespaces. In this case, the private method isn't supposed to be accessible to the subclass at all. That's why there are no compiler errors. The compiler knows that only the public method should be accessible in the subclass. The private method would need to be protected for the compiler to report an ambiguous reference error.
With that in mind, the fix is something along the lines of determining why the wrong method is being chosen by the JS emitter and choosing the correct one instead.

Please attach ButtonBarPlayGround.mxml and the transpiled ButtonBarPlayGround.js
In theory, the addEventListener you linked to will result in the private changeHandler getting called when the TabBar changes.  I think you are saying that some other thing dispatches a change event and results in the private changeHandler being called.

Here's the ButtonBarPlayGround.mxml modified to show the error (the actual one in repo is done to avoid name collisions. This is the corresponding js after compilation.
This is the error in browser console:

ExampleAndSourceCodeTabbedSectionContent.as:121 Uncaught TypeError: Cannot read property 'selectedItem' of null
at ButtonBarPlayGround.components.ExampleAndSourceCodeTabbedSectionContent.components_ExampleAndSourceCodeTabbedSectionContent_changeHandler (ExampleAndSourceCodeTabbedSectionContent.as:121)
at ButtonBarPlayGround.$EH8 (ButtonBarPlayGround.mxml:146)
at Function.goog.events.fireListener [as googFireListener] (events.js:744)
at Function.org.apache.royale.core.HTMLElementWrapper.fireListenerOverride [as googFireListener] (HTMLElementWrapper.as:170)
at Object.org.apache.royale.core.ElementWrapper.fireListenerOverride [as fireListener] (ElementWrapper.as:188)
at HTMLDivElement.goog.events.handleBrowserEvent_ (events.js:870)
at HTMLDivElement.f (events.js:289)
at org.apache.royale.jewel.ToggleButtonBar.org.apache.royale.core.HTMLElementWrapper.dispatchEvent (HTMLElementWrapper.as:401)
at org.apache.royale.jewel.beads.controllers.ListSingleSelectionMouseController.selectedHandler (ListSingleSelectionMouseController.as:151)
at org.apache.royale.jewel.itemRenderers.ToggleButtonBarItemRenderer.goog.events.EventTarget.fireListeners (eventtarget.js:284)

The JS file looks correct to me, and I do not understand how it could call
ExampleAndSourceCodeTabbedSectionContent_changeHandler.  Please set a breakpoint on ButtonBarPlayground.$EH8 and step through to see how it ends up in that method.

I've determined the cause of this issue. The emitter is outputting the following code when using addEventListener():
org.apache.royale.utils.Language.closure(this.components_ExampleAndSourceCodeTabbedSectionContent_changeHandler, this, 'changeHandler'));

The function name in the final parameter is wrong. It should be "components_ExampleAndSourceCodeTabbedSectionContent_changeHandler" instead.

Great you catch it Josh! :)


Add and_then method

Please consider adding the and_then method to the Result type.
I played around with the library a bit today. The first time I used map with a function, which in turn returns a result, I had a nested result as return value. The method and_then doesn't nest the result types but instead returns the result type of the callable. This make it easier to chain multible failable function calls and get the result of the last callable or an error in the chain.
It seems there was already and PR #32 which implements the feature.

I'll take a look at getting #32 updated if needed as it's an old PR at this point and merged as soon as I'm able. Thanks for bringing this up.

@ukaiser Hey, I've thrown up a proof of concept, hopefully I didn't make make a mistake somewhere, but I'll review the PR myself and get it merged tomorrow.
For now, if you'd like to try it out, you can do so using,
pip install git+https://github.com/rustedpy/result@feat/and_then.
Feel free to provide suggestions on the PR if you'd like to.

Hey, thanks for immediately addressing the issue!
I tried it with my test code and it seems fine.


Consider removing built-in Promise support in favor of until() directive.

Currently we don't support Promises in attributes (#272, #544). I've been doing some work to support this, but it starts getting pretty complex as we try to answer things like:

What is the value of a fully-controlled attribute before Promise resolution? Empty string or not present?
What is the value of an interpolated expression before Promise resolution?
What about boolean attributes? If the default value is not present, that's the same as defaulting to false. Is that correct?
Do Promises also auto-resolve in property bindings? If so, how would we pass Promises as properties to components that actually accept a promise?

While Promises in Node parts generally have none of these problems, support there sets the expectation that Promises just work in attributes as well. Promises support in NodePart also currently has some bugs due to race conditions. We have outstanding code to fix this, but it adds complexity to core.
So, one solution that limits complexity and keeps support consistent is to remove built-in Promise support from NodePart and require the until() directive to use Promises. This means that templates have to be explicitly aware of async values, which is also probably a good thing.
until() itself would get more complicated as it can't rely on built-in promise support, and has to track Promise identity and resolved state, but that complexity is pay-for-play.
This is obviously a breaking change, so deciding on this blocks a 1.0 release. I'm curious if anyone in the community has feedback here. Upgrading to a new version shouldn't be very difficult if you know where Promises are used in templates.

I think it is better to require use of until so people get into the habit of always providing a default value (even if it is empty string).
I don't think it is worth the complexity and flaky-ness of trying to guess what a default value should be. We would end up deciding that an unresolved promise renders as X but its almost guaranteed many people would rather it be Y.
It is better to be explicit than not.

One use case where we use promises a LOT is for translations.
const msg = () => { return Promise(..) }

render(html`
  <my-el label=${msg('my-el:label')}> // that does not work currently

${msg('my-el:heading')}>
 // works fine
  <my-el>
`, target);

See "working" example:
https://codepen.io/daKmoR/pen/xyqEEz?editors=1010
So whenever this is rendered and the translations files are not yet loaded it's not a problem as it will auto-resolve when it does.
I would understand that to reduce complexity to drop Promise support... however I'm not sure if it would be currently possible to provide ONE function/directive that could handle promise results for attribute and node cases?
e.g. would I need something like this?
const msgForAttributes = Directive();
const msgForProperty = Directive();
const msgForNode= Directive();

render(html`
  <my-el label=${msgForAttributes('my-el:label')} .description=${msgForProperty('my-el:label')}>

${msgForNode('my-el:heading')}>

  <my-el>
`, target);

if so it seem complexity remains => we just push it to our users
=> also creating a promise function is rather "common" so most devs would already know.
Directives on the other hand will need very specific lit-html knowlege... especially if it needs to support node, attribute and properties
=> so overall I am a little torn apart... I understand the need to reduce complexity but I also would like that lit-html becomes easy to use.

Regarding the until directive:
It currently does NOT support attributes (as it assumes lit-html core does it)
https://codepen.io/daKmoR/pen/XxMjGP?editors=1010
I guess we need to put the complexity somwhere.
So either it's in the core for each "part" (node, attribute, property) or we need to combine them all in the until directive?
if until directive supports all of that I guess I could have a msg function that "extends" it.
I guess that could work... still all this requires quite in depth knowledge

I do think we should be more tolerant of changes which require "lit specific knowledge".
If we forever try to avoid introducing concepts only we make use of, we'll always be dancing around problems and adding complexity where complexity wouldn't otherwise be needed.
It is ok to expect people to learn how to use directives, especially once we have the docs finished.

@justinfagnani I'm a strong proponent for putting the logic in the until directive, as I've already laid out in https://github.com/Polymer/lit-html/issues/544#issuecomment-427660318. Breaking API by removing support for promises in NodePart is a nice benefit in my opinion, because giving people to ways to do the same thing tends to lead to confusion and mistakes.
@daKmoR Multiple until directives would make things overly complex, so I hope we can make it work with the single directive we have now. That would mean your translation API doesn't need to change if you can make msg wrap the promise in a call to until

@43081j I may have badly articulated myself. I do agree that having some opinionated solutions will overall improve the situation. (I removed the relevant text from my comments)
@bgotink if that's possible then I'm all for it 👍  I could just replace the return "promise" function with a directive and no additional (user) code changes would be needed - sweet :)

My vote is for doing promises through directives, I would not call it until though as that implies an in between state which does not always apply.
It might be better for performance too, because regular renders dont need to do a promise check for each value.

If we change the name, I was thinking wait or waitFor since they're close to await.

@daKmoR as @43081j points out, you can wrap until, so that it's also a directive:
const msg = (id) => until(_promiseReturningImpl(id));

The notion of
async render() { ... }

was brought up in slack and might be worth some short consideration.
in any event this seems like a positive change.

The possibility of writing Promise-returning asyncRender() is one of the reasons I like built-in Promise support. asyncRender can collect Promise-valued expressions and wait for them while also allowing the incremental rendering. I've been thinking about how to do this with directives, when render wouldn't ever see the Promises. It'll require coordination between the directives and render function, I think.

If we rename it, I'd suggest waitFor of the two mentioned above.
An async render method could be nice whichever route we take I think.
The whole idea of built in promises means having a concept of what should exist by default until they resolve. I like using a directive because consumers have to specify this explicitly.
I suppose interpolating a promise into a string is a little unusual too. I'd personally expect to see the toString of the promise as that's how template literals would do it normally. At least directives make more logical sense as you would expect them to resolve into a string.

because consumers have to specify this explicitly.

One mark against waitFor is that await is potentially valid inside a template in an async function and means the opposite.
This returns immediately, can render the
 synchronously, and fills in the content with the Promise later:
const t = (promise) => html`<div>${waitFor(promise)}</div>`;

This returns a Promise, can't render the
 synchronously, and waits for the Promise to resolve to return a result:
const t = async (promise) => html`<div>${await promise}</div>`;

Huh... async is a valid identifier:
const t = (promise) => html`<div>${async(promise)}</div>`;

Sure, we could make the render method async still. It just means you can either incrementally update asynchronously (directives), or render asynchronously (await in render), right?
One is incremental and one is all at once. You could support both

Something like whenResolved might work I guess. To avoid confusion.
it's probably a bad name 😂

Fwiw until is fine. It's semantic she reads left to right
Until future results, do this.
until(promise, default)

I am on board with this solution. I've been thinking about how to handle Promises for attributes as well, but it's rather difficult, and as you mentioned there is a lot of undefined behaviour. I'm also not a huge fan of the added complexity to make Promises work in general, since it adds additional work to the hot path of every render action.
I think wait and waitFor are not good naming schemes, as they signal that the render is blocked somehow. I much prefer the current until nomenclature.

Thinking about this more I think this solution will run into the same fundamental problem as Promises. How can a directive know upon resolution of the promise that it has not been superseded by a different render?
Consider the following case
template = (thing) => html`

${thing}

`

render(template(some_promise, 'hello'));
render(template('goodbye'));

When some_promise resolves, how does until know not to override The 'goodbye' value? It could check the value of the NodePart and compare with the fallback value, but then you still have the same problem with render(template('hello')).
The only way for until to know if it is the current rendered value is if NodePart sets or clears some property whenever it renders, similar to how rendering Promises is implemented.

The new directive in #555 @ruphin.
It keeps a weak map of parts to promise state so each time a new promise is passed, the old one does nothing once it resolves.
There's no problem with default content either as it has to be explicitly specified.

Yes, I understand that if you only ever render to that NodePart through the directive, it can be trivially solved. However, that does mean the NodePart contract becomes more restrictive. (You can render any value, but if you ever render an until directive value, you cannot render a non-until directive value anymore without breaking)

Do you have a real world use case for doing such a thing?
Sounds like something in need of a refactor to me. Why not use a promise which resolves to your "non-until" value? Why are you doing your switching outside the promise?
I get your point but it sounds like there are better ways to engineer such a thing.

@justinfagnani I personally don't think the asyncRender function requires built-in support for promises. What that function does (dumbed down) is await on all promises passed into the html template tag before performing a sync render operation. Moving promise handling in the sync render case into a separate directive is still useful in the case of an asyncRender scenario:
const somePromise = Promise.resolve('value');
const longPromise = new Promise(resolve => setTimeout(resolve, 2000, 'long');

render(html`<div>${somePromise} ${longPromise}</div>`, container);
//
[object Promise]

// once microtask queue is flushed:
[object Promise]

render(html`<div>${async(somePromise, 'temp')}</div>`, container);
//
temp

// once microtask queue is flushed:
value

asyncRender(html`<div>${somePromise} ${longPromise}</div>`, container);
// doesn't render
// once microtask queue is flushed: doesn't render
// once 2 seconds pass and microtask queue is flushed:
value

// -> This is awesome, I can block the render until promises resolve but I can also tell the renderer to use a temporary value instead
asyncRender(html`<div>${somePromise} ${async(longPromise, 'temp')}</div>`, container);
// doesn't render
// once microtask queue is flushed:
value temp

// once 2 seconds pass and microtask queue is flushed:
value long

@bgotink i dont think your example is quite right..
if we made render async (or provided an async version of it), built-in promises still wouldn't be supported as that is a whole different issue/concept...
async render() {
  return html`<div>${somePromise}</div>`;
}

This would render the exact same thing as the non-async render call, [object Promise]. You interpolated an object, you'd expect the toString of it to be rendered.
It is for async work where you don't care about incremental rendering:
async render() {
  const items = await this.getItemsAsync();
  const response = await fetch(url);
  const text = await response.text();
  return html`
${text}

    ${items.map((i) => html`<span>${i}</span>`)}`;
}

You are thinking of LitElement render(), not lit-html render(). The examples you show can be supported even with a synchronous render from lit-html.
What I mentioned before is not an issue of supporting certain use cases, it's about the shape of the API. 'The API works fine as long as you use it right' is a bad excuse for having edge cases in your API. A good API produces expected results regardless of what the user does. My point is that the suggested directive adds edge cases that have unexpected results, which adds cost. Either users need to be educated on edge cases which adds documentation complexity and increases the learning curve, or they randomly run into issues and using the library feels like a minefield.

true i am.
i don't see any use in an async lit-html render then, only a lit element one.
I never said the api works fine as long as you use it right.
If you try render an async value then render a non-async value meanwhile (in a second render call), it is perfectly logical to overwrite it once the promise one resolves. Nothing is unexpected about that at all, with basic understanding of promises it is exactly what one would expect.

So you're saying that if you use an API to render a promise, it's expected behaviour that you can't undo or cancel that promise, and you're effectively locked to rendering it once it resolves?
Do you think it's a nice API that the only way to cancel a promise is to render another promise?

Yes I am saying that. It should behave the same way as any async functionality in JS. If you want to prevent it, reject the promise or some such thing.
How do you normally "cancel" a promise? I think you're trying to treat lit differently to a normal async function and shouldn't be. None of this concept is specific to lit, treat it like you do any promise.

It's not about changing the resolution of the promise, but about using the result. I think it's perfectly valid to say that at some point you don't care about the result of a promise anymore. Consider the following scenario:
You want to show a message, with a loading indicator. You implement like this:
html`

    ${ until(this.message, 'Loading...') }

`;

Now you want to add localization to this template. You have a localize() function that returns a promise, because you don't want your render to be blocked on loading the translations. Your template becomes this:
html`

    ${ until(this.message, localize('Loading...')) }

`;

But now things break, because your localize() can finish after this.message. It seems obvious to me that once you render this.message you no longer care about the localize() promise, and you don't want to render that anymore.
An other example is a promise on a long-running request. If the user requests some kind of thing and it takes a while to load, and while it's still loading, the user changes the view or requests some other kind of data, you no longer want to render the result of the original request when it resolves.
It's not about promises behaving like in pure JS, it's about API design and user expectation. I expect that if I use an API to render X, and then afterwards render Y, then the result will always be Y. It doesn't matter if X is a promise or not. You are suggesting that I concede all control over what actually happens the moment I decide to render a promise, and what shows up on my screen will be determined by whichever item happens to resolve last. That seems like an unusable API to me.

You're kind of misusing until, there, I would say.
The whole point about async (until) is to render the result of a promise, but until then, render a default value. It makes no sense for the default value to be another promise. This shouldn't even be allowed, the async directive exists for the reason of rendering something until a promise resolves. where's the sense in using yet another promise? you defeat the whole point of the directive, in that case you'd need a 3rd non-async value to render until both promises resolve.
async(Promise, primitive) is the correct signature as far as im concerned.

I'm with @43081j here on using the primitive.
Using the extra promise for localization is a great example, but an implementation of that will likely end up just using the same async(Promise, primitive).  So does it make sense to add the complexity to this directive, or implement this logic elsewhere?

I would much rather lit-html was only concerned with rendering templates and kept as simple as possible with as few directives as possible so it doesn't try to turn into a language itself. Concrete values are converted into DOM nodes / attributes - that should be its sole purpose IMO.
Any handling of Promises, Observables or anything else should be done elsewhere, in higher-order components or some other part of the app (e.g. Redux saga's handling async and producing concrete values to feed the templates).
I get that it will be 'neat' for demos and examples, "look how easy it is to show a loading message, fetch data and then render it!", but IMO it doesn't really add that much that wouldn't be clearer by separating that logic out of the template.

We're getting bogged down into details. The use of until in the example was just to illustrate a point. It doesn't matter which deferring mechanism you use, or what the API or intended usage of that mechanism is, there is a simple fundamental problem here.
There are plausible scenarios in which you render a promise of which the result is no longer relevant before it resolves. Whatever system you use, there has to be a way to override that promise, or to stop it from rendering the irrelevant result once it resolves.
As I mentioned before, it is technically impossible to do this, unless either lit-html has some form of builtin support for it, OR you accept an API that breaks if you render any other value after rendering a promise (through whatever system you use, be it an async directive, or an until directive, or whatever API you want).

I think there is a lot of value in lit-html having a deferred rendering system. If you only render static values, that means the entire template needs to re-render whenever any one deferred value resolves. Imagine a page with 10 different values that are all resolved through some higher order logic, redux or whatever. Do you think it's a good idea to just re-render the entire page every time one of these values resolve? I think there clearly is added value in allowing partial deferred rendering, so you only defer the part of the template that has not resolved yet.

async is for rendering a non async value until an async value resolves.
Any variation of that such as with the default being a promise belongs in its own directive I think.
Simple enough

If you only render static values, that means the entire template needs to re-render whenever any one deferred value resolves ... Do you think it's a good idea to just re-render the entire page every time one of these values resolve?

Isn't the point of lit-html that it does this efficiently? (with immutable state update patterns helping that to happen)

A bunch of things to tease out here.
First, I think Promises being canceled is fine, but that's a general Promise issue that applies to all of JavaScript. The initial idea there was cancelable Promises, but that stalled (it introduced a new third state to function completion: return, throw and now cancel). The current approach is AbortController/AbortSignal: https://developer.mozilla.org/en-US/docs/Web/API/AbortController as used by fetch(). fetch() will reject its Promise with an AbortError when aborted.
If a Promise passed until()/async() rejects for any reason, it won't render.
Second, there are some really tricky cases with directives in general that are caused by them being values, and not actually being part of the template. That falls out from our desire to put most features on the expression side of template, and not encode them into strings (binding type being the exception). Directives don't really have any identity or state, so directives that need to keep state, so far, have done so by storing it with the Part. That causes problems with composition, because in a pattern like async(promise1, async(promise2)), we can't currently associate state with each directive call separately.
I suspect the vast majority of the time directives are used "statically" (they appear inline with the template) and one-at-a-time, not composed. We have some tests with say, repeat rendering async list items, but directives don't compose that well generally, not without careful handling in the directive implementations.
Third, on async in general, especially in relation to state management - I view lit-html as a low-level, standalone rendering piece that doesn't assume Web Components, or any component library, and doesn't assume state management. At the same time asynchronous values are becoming more and more central to JS development. We can break down the core types of values in JS according to sync/async, and single/multi axes:

Single
Multi

Sync
T
Iterable<T>

Async
Promise<T>
AsyncIterable<T>

I think lit-html should be able to handle all these types of values to some degree - they're that fundamental.
lit-html also follows a pattern where a TemplateResult is just a description of the DOM, that can be rendered by code in another place, at another time, even multiple times. Adding some amount of async handling means that the template definition and the template rendering don't necessarily have to coordinate. Yes, you can remove asynchronicity in templates by re-rendering, but lit-html does not provide a way for a template to tell a renderer to re-render. LitElement does, Redux-like patterns do, but those are not lit-html.
So, I think it's really valuable, even if there are some caveats currently. The caveats are actually with directives in general, and I hope they can be removed in general.
Right now I'm trying to think if there's a way that lit-html can help with managing state for directives so that composition works better. It's possible that directives should work more like html and TemplateResults, so that directive arguments are part of the tree of values contained in a TemplateResult - currently only the closure is a value and it's arguments are hidden in the closure. An approach like that might let us pass previous state back to the directive as long as the structure of directives doesn't change between renders - very similar to how we decide to re-render based on the type of TemplateResult rendered to a Part.

Allowing directives to have access to some kind of state helps, but again, it won't solve the particular issue of rendering some value (any value) after rendering some promise-like deferred value (using whatever mechanism).
It's still totally an option to accept that this is simply invalid behaviour and just isn't supported, but I think we should be explicit about making that choice, and it should be explicitly documented.

Allowing directives to have access to some kind of state helps, but again, it won't solve the particular issue of rendering some value (any value) after rendering some promise-like deferred value (using whatever mechanism).

I think it could, by letting a directive query the state object to see if it's still valid. If another value renders there, it could invalidate the state. This is basically a lightweight disconnect signal.

It's still totally an option to accept that this is simply invalid behaviour and just isn't supported, but I think we should be explicit about making that choice, and it should be explicitly documented.

No matter what, we'll do this. We might even still do that even if we have a design for better stateful directives.

I'm in favor of offering more hooks to directives about their context / state. The WeakMap bookkeeping takes a lot of knowledge of how directives work, and it's really easy to mess up performance.

I'm a little confused by this change.  Will someone please do a pros/cons before and after this change (and code would be helpful here)?

I agree there's been a lot of opinionated drill down as to methods. It
would be helpful if we can see a few before and after code examples on
proposed changes.

Following was suggested (or maybe partially supported already):
const promise = Promise.resolve('foo');
render(html`<div>${promise}</div>`);
// eventually renders
foo

Following will be required in future to be more explicit about what non-async value to render meanwhile (until promise resolves):
const promise = Promise.resolve('foo');
render(html`<div>${async(promise, 'default')}</div>`);
// renders
default

// eventually renders
foo

Okay got it. Thanks for the comparison. I'm not seeing anything in the latest proposed change that worries me. I end up doing the most complex logic in redux or similar tools anyway, but using async method would be fine I'd reckon.

@43081j please don't confuse the issue.
First, rendering Promises is currently already supported by lit-html without use of directives. As you can see here, NodePart currently has support for rendering Promises, which allow a deferred partial render, or an asynchronous render, if you will. When you render a Promise, lit-html renders nothing, and once the promise resolves, lit-html will render the result of the promise in that location.
The current implementation in lit-html to render Promises is very inefficient. There is an outstanding PR that fixes this performance issue, but it adds some unavoidable complexity to the lit-html core, since fixing Promise rendering essentially boils down to fixing cache invalidation, which is a hard problem in computer science.
Second, there currently already exists a directive that renders a Promise (or async value) with a placeholder (a synchronous value) until it resolves, the until directive. Because lit-html currently supports rendering Promises internally, the implementation of until is really trivial.

Now, the proposed change is to move the complexity of rendering Promises out of lit-html core altogether, and into the until directive (or a similar directive with another name).
The advantages of this approach are:

It simplifies the core implementation of lit-html.
The new directive would be able to render Promises to both NodeParts and AttributeParts (lit-html currently only supports Promises in NodeParts).

The problems of this approach are:

It adds several edge cases that cause unexpected values to render.
The solution to this requires directives to have access to some kind of state of the Parts they are rendering to, but they are currently stateless.

@justinfagnani suggests that we may be able to alleviate these problems by tracking some more internal state in Parts, so that directives have more information into the current state of the Part, which solves the above problems.

My personal views
The solution suggested by @justinfagnani effectively requires the same type of internal state tracking as the outstanding PR to fix Promises, which means that some complexity in lit-html core is unavoidable. The unfortunate part is that this added complexity adds some performance overhead (I estimate around 1-2%) for every render, but this is technically unavoidable if we want any kind of reliable asynchronous rendering.
However, since tracking this additional state offers added benefits for other directives, and is capable of supporting promises for AttributeParts, I think the suggested solution is clearly a superior implementation over the current PR, because it allows more flexibility for future directives to use.

I never wanted the ability to have promises as default values. I used the example to illustrate a potential problem with this solution.
Let me try again this time with using all the proper syntax as you suggest. If I get the syntax wrong again, please let me know.
Do you think it is a non-issue that the following template can lead to all sorts of weird race conditions when the loggedIn state changes?
html`

    ${ when(loggedIn,
         async(asyncContent, 'Loading content'),
         'Please log in to see your content'
    )}

`

If a Promise passed until()/async() rejects for any reason, it won't render

Presumably just that part not the whole template? No chance to render anything in it's place? Would it be left showing, for instance, a loading message / spinner for a failed fetch?

I think it's an issue for another directive, if any. Not async which is being discussed here as a replacement to the built in promise support.
It is a use case but I think tracking state across async calls is something we should have a dedicated issue for. As it probably affects more than the async directive too.

@CaptainCodeman It just won't render the result of the promise. The rest of the render will happen as expected.

@43081j It is not a general directive problem, it is specifically async that leads to undefined behaviour when combined with other primitives (any other primitive). Here's the same example, but without other directives this time:
html`

    ${ loggedIn ?
         async(asyncContent, 'Loading content') :
         'Please log in to see your content'
    )}

`

Do you still think it's not a problem that this produces unexpected results?
This problem is caused by the implementation of async, and it cannot be fixed unless there is specific support for it from lit-html core, for example by adding state tracking, which is what @justinfagnani suggested.

I don't think it's a problem for the async directive to tackle.
It exists to render a non-async value until an async one resolves.
It does that. Keep it simple.
Complex things like state tracking belong in another directive or somewhere else I would say. This directive answers all questions in the issue we are currently in, the original post.

This will simplify the core, not make it more complex.
It doesn't account for many edge cases really either, this discussion got blown up a little. It is an incredibly trivial directive to allow async values, if you want them (entirely optional).


sys.exc_info() can't put to queue in MultiProcessRunner

Please make sure that this is a bug. As per our
GitHub Policy,
we only address code/doc bugs, performance issues, feature requests and
build/installation issues on GitHub. tag:bug_template
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):no
OS Platform and Distribution (e.g., Linux Ubuntu 16.04):none
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:none
TensorFlow installed from (source or binary):none
TensorFlow version (use command below): master branch https://github.com/tensorflow/tensorflow/commit/498e5b4f6db80df13b54c44cbd657a2750067564
Python version:nan
Bazel version (if compiling from source):none
GCC/Compiler version (if compiling from source):none
CUDA/cuDNN version:none
GPU model and memory:none

You can collect some of this information using our environment capture
script
You can also obtain the TensorFlow version with:

TF 1.0: python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
TF 2.0: python -c "import tensorflow as tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"

Describe the current behavior
code line see multi_process_runner.py:594
sys.exc_info() can't put to queue in MultiProcessRunner, because the traceback object can't be pickle, see stackoverflow.
when a subprocess raise an error, the line 497 of multi_process_runner.py will throw an error
TypeError: can't pickle traceback objects
Describe the expected behavior
Pls use other way to implement this. one way is using traceback.print_exc() or format_exc() functions. Don't put traceback objects in queue.
Standalone code to reproduce the issue
Provide a reproducible test case that is the bare minimum necessary to generate
the problem. If possible, please share a link to Colab/Jupyter/any notebook.
none
Other info / logs Include any logs or source code that would be helpful to
diagnose the problem. If including tracebacks, please include the full
traceback. Large logs and files should be attached.
none

@Hacky-DH
Request you to provide colab link or simple standalone code to reproduce the issue in our environment.It helps us in localizing the issue faster.Thanks!

I rewrite the MultiProcessRunner class, so it can run any where, not only in unittest.
See link.
I use traceback.print_exc() fix this.
I don't test this in any unittest or colab.


modify build_electrodes function

modify build_electrodes function to make it usable for other types of probes

Since we are revisiting this topic - I'd suggesting looking into using: https://github.com/SpikeInterface/probeinterface

Thanks @JaerongA.  Are we holding off on merging, pending @ttngu207's suggestion above?  If so, let's draft this pull request.
Please update:

[ ] version.py
[ ] changelog.md

Ok, @ttngu207 and I haven't followed up on this. I'll convert this to draft in the meantime.

Thanks @JaerongA. Are we holding off on merging, pending @ttngu207's suggestion above? If so, let's draft this pull request.
Please update:
* [ ]  version.py

* [ ]  changelog.md

Hi, @kabilar. I think this pr's good to go.  If you can review & merge this pending pr, I'll update the version of this one accordingly. Thanks!


For some reason, my JSON's won't load.

I tried some other files of mine, and they loaded up fine. I'm not sure if why these ones are refusing to load
monstermaker.zip
.

the flies are failing to validate due to a save in the attack object being null. Not quite sure how that happened but I can adjust the load protocol to fix that up. while i'm at it, i should output the validation errors so this kind of thing isn't a silent failure.

this should be fixed now and those files should load :)

Awesome. Thanks!


Creating new strategy

Morning at all,
I am creating my own strategy and i need a little help please.
The only trouble i have is with the 'BUY' & 'BOUGHT' signals.
I want the bot buy when it begin to start and i have these functions to buy & sell:
var trendUp = function(s, cancel){         if (s.trend !== 'up') {           s.acted_on_trend = false         }         s.trend = 'up'         s.signal = !s.acted_on_trend ? 'buy' : null         s.cancel_down = false         if(cancel)           s.cancel_down = true       },       trendDown = function(s){         if (s.trend !== 'down') {           s.acted_on_trend = false         }         s.trend = 'down'         s.signal = !s.acted_on_trend ? 'sell' : null       };
So i call the 'BUY' function with trendUp(s, true) and the bot respond to 'buy' on the screen.
But the 'BOUGHT' signal appears 6 hours later... I don't want that & i don't understand why ...
Is there a tips to force the bot to buy if i ask this signal ? Or simply how to have the 'bought' signal ?
All helps will be amazing. I stuck at this time ... :-(
For informations, i only use SIM mode & not paper or live.
Thank's a lot

But the 'BOUGHT' signal appears 6 hours later...

As a market maker you of course have to wait for a taker to [sic] "take" your order, which can take anywhere from a second to a couple of hours to ad infinitum.
If you don't want too wait trade as a market taker yourself.
Use --order_type taker or set c.order_type = 'taker' in conf.js
!!! Be advised that this almost always incurs higher fees on any exchange !!!

This issue was moved to highvelocityspace/zenbot#34

This issue was moved to highvelocityspace/zenbot#64

Dear issue reporter,
We have slightly changed our github issue policy and would now kindly request folks that have questions that they ask them in our zenbot subreddit.
You can find it here: https://reddit.com/r/zenbot
This issue will be closed, but if you disagree with your ticket being marked as a question feel free to leave a comment defending your case.
Thanks for contributing time and effort!
Greetings,
🤖


[Backport 2.5][Istio] k8s IP service is set to default IP which does not work for all environments

Backport: https://github.com/rancher/rancher/issues/35339

On 2.5-head provisioned a downstream cluster with 1 CP, 1 ETCD and 2 Worker nodes.
However, the Chart Repositories are not showing up. Created a Chart Repository, but it remained "In Progress" state.
Wasn't able to install any charts.

#35820

Verified on v2.5-head

Created a node driver rke1 AWS 2 worker, 1 etcd and 1 cp cluster
Added the following in the edit as yaml while creating the cluster

    kube-api:
      service_cluster_ip_range: <IP_ADDRESS>/16
    kube-controller:
      service_cluster_ip_range: <IP_ADDRESS>/16
    kubelet:
      cluster_dns_server: <IP_ADDRESS>

Verified the kubernetes cluster IP is set to <IP_ADDRESS>
Installed istio in the downstream cluster version 1.10.400.
Installation went through fine without any error.


Taglist options wrong position when searching

Reproduction
https://formkit.link/cfde31cae5eee4932f3ba53189bca05c
Describe the bug
When searching in the taglist, the available options won't always be in the correct position

Environment
• OS: Ubuntu
• Browser: Chrome
• Version 1.6 & 0.122.16

@azertyalex Hey there! Yes, that's quite odd. It seems to behave correctly when not using the popover prop. Definitely something we can take a look at.

any update @sashamilenkovic ?

hey @jdelrue This one's on me — I'll be sitting down to work through issues hopefully today so that we can ship some QoL updates before we're on the road for VueConf US.


Program groups and items

Write a new format for the program group and program items and create working program groups with corresponding MDI windows. Preferably implement dialog functionality for creating these program groups before Alpha 1.

Memory management implemented, groups and items can now be created (groups can be removed but item removal is still WIP). Listview implementation needs to occur now which, for me, is the hard part. Expect delays.

listview works now, working on getting/setting item info, item removal still going to be put off, items don't have pictures yet

programs and items have a basic implementation now, i'll do a new issue when i'm about to extend their functionality, programs launch now.

reopening, will close again after i fix the following:
cannot delete program groups or items
program items don't save properly between restarts
cannot edit program groups or items

@freedom7341

@u130b8


declare() is seen as a control structure

I think it makes sense in the case where you use it like:
declare () {
   ...
}

But for example:
declare(strict_types=1);
declare(ticks=100);

Will get reformated right now as:
declare (strict_types = 1);
declare (ticks = 100);

And I don't really think that's correct, at least not the space after declare. As it's clearly used like a function in this case.

We are adding a space? There should not be a space at all.
What version are you using?
ref #1495

I was just coming back to say.. it works with latest so never mind me :)

Great to hear!


Allow AuthToken to accept SHA256 or SHA1 hashes

⚠  This repo is Continuously Deployed: make sure you follow the guidance ⚠

Makes SHA256 tokens the default again (as per Rails 7 defaults)
Adds a rotate to the decrypter that allows it to accept SHA1 tokens as well as SHA256 tokens.

This will allow it to accept the current SHA1 tokens from email-alert-api, and the SHA256 tokens from when email-alert-api is updated properly.
https://trello.com/c/Iz4TyAzx/1321-fixes-for-email-alert-api-email-alert-frontend-update-incident
Note - due to the way email-alert-api is set up, not currently possible to test this end to end. Has been tested by generating a token in the email-alert-api integration console:
token = AuthTokenGeneratorService.call(hello: 'world')
...then checking it decrypts on the email-alert-frontend integration console:
irb(main):007:0> token = AuthToken.new(data)
=> #<AuthToken:0x00007f23de69fb78 @token="1xZjrFbz4korhQywWP9H2nycQBNdySnzq...
irb(main):008:0> token.valid?
=> true
irb(main):009:0> token.data
=> {:hello=>"world"}

Reverting - the links are advertised as being valid for 7 days, so I think we'd want to wait a week between updating email-alert-api and updating this (it wouldn't strictly be a revert because currently email-alert-frontend is only accepting SHA1 tokens, and we'd want it to move to only accepting SHA256 once we were sure all the SHA1 tokens from email-alert-api were expired).
Details in commit - yeah, I can update the commit with the notes.


Use tox instead of make and improve github actions workflow

QKT currently uses a Makefile to control testing of the repo. To come in line with other prototypes, we should use tox. This will also make CI/CD integration more straightforward.

Resolved by #29


feat(organisme): ajout exemple csv personnel 498

:tada: This PR is included in version 1.8.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


⚠ Bofrost.lu has degraded performance

In 3265c7d, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1825 ms

Resolved: Bofrost.lu performance has improved in 70f896b after 6 minutes.


Delegate now button for all active pools

Let's get a delegate now button for the pools in VM. There is a lot of new users coming in from Nunet we should make it as easy as possible to delegate to VM pools. @aryelciu001 will need your expertise here.

New release https://github.com/TosiDrop/vm-frontend/releases/tag/v3.1.0 added this feature.


Feature request: a --quiet option

It would be nice to turn all stdout off, like many other tools that have --quiet or similar option.

I also need this feature

Thank you for your suggestion, we already have this feature in our lastest version of CLI.


Add debug logs for terminated, scheduled workflow executor

TL;DR
This change adds logging and optional reconnect attempts for the scheduled workflow executor to address https://github.com/lyft/flyte/issues/198
This is step 1 in diagnosing the problem (it's difficult to reproduce locally). Step 2 is adding behavior to handle the observed failure causes :)
Type

[x] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[x] Code completed
[ ] Smoke tested
[ ] Unit tests added
[ ] Code documentation added
[x] Any pending items have an associated Issue

Complete description
How did you fix the bug, make the feature etc. Link to any design docs etc
Tracking Issue
https://github.com/lyft/flyte/issues/198
Follow-up issue
https://github.com/lyft/flyte/issues/88

cc @rstanevich

PTAL @EngHabu

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@7d179a7). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #92   +/-   ##
=========================================
  Coverage          ?   63.00%
=========================================
  Files             ?      100
  Lines             ?     7007
  Branches          ?        0
=========================================
  Hits              ?     4415
  Misses            ?     2086
  Partials          ?      506

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 7d179a7...7c209eb. Read the comment docs.

@katrogan
Thanks you a lot for this fix!
So, more than one month we have no any interrupting with scheduled workflows :)
There are a few errors from Gizmo client like
{"json":{"src":"workflow_executor.go:246"},"level":"error","msg":"Gizmo subscriber closed channel with err: [RequestError: send request failed\ncaused by: Post https://sqs.us-east-1.amazonaws.com/: read tcp read: connection reset by peer]","ts":"2020-05-26T15:36:50Z"}

But subscriber restarts gracefully as I see.


Search - Unable to perform search by hitting Enter on search bar when expense is selected

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.53-1
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?: N/A
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause - Internal Team
Action Performed:

Go to staging.new.expensify.com
Go to Search
Click Filters
Apply any filter that will return results
Select an expense via checkbox
Click on the search input field
Type anything and hit Enter

Expected Result:
App will perform a new search
Actual Result:
The dropdown button is expanded
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Standalone
[ ] Android: HybridApp
[ ] Android: mWeb Chrome
[ ] iOS: Standalone
[ ] iOS: HybridApp
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

https://github.com/user-attachments/assets/cab1eefa-0d9f-46a0-bb50-052c2c62e1f4
View all open jobs on GitHub

@anmurali  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

Proposal
Please re-state the problem that we are trying to solve in this issue.
Search - Unable to perform search by hitting Enter on search bar when expense is selected
What is the root cause of that problem?
We have set pressOnEnter on the drop down button and in side the button we already have a code that disable the shortcut based on the active element role but it only disables it if the active element is presentation, which is correct
https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/Button/index.tsx#L163
but we set our text inputs role as presentation
https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/Search/SearchRouter/SearchRouterInput.tsx#L99
What changes do you think we should make in order to solve the problem?

I propose two options

We should give the text input a proper role like textbox
We need to add the role here

        TEXTBOX: 'textbox',

Along with active role element management we can keep track if a text input is focused. Here
https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/ActiveElementRoleProvider/index.tsx#L9-L11

const [isTextInputFocused, setIsTextInputFocused] = useState<boolean | null>(null);
    const handleFocusIn = () => {
        setRole(document?.activeElement?.role ?? null);
        setIsTextInputFocused(['INPUT', 'TEXTAREA'].includes(document.activeElement?.nodeName ?? ''));
    };

....

    const value = React.useMemo(
        () => ({
            role: activeRoleRef,
            isTextInputFocused,
        }),
        [activeRoleRef, isTextInputFocused],

then
const useIsTextInputFocused = () => {
    const {isTextInputFocused} = useContext(ActiveElementRoleContext);
    return isTextInputFocused;
};

https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/Button/index.tsx#L163
const isTextInputFocused = useIsTextInputFocused();
    const shouldDisableEnterShortcut = useMemo(
        () => isTextInputFocused || (accessibilityRoles.includes(activeElementRole ?? '') && activeElementRole !== CONST.ROLE.PRESENTATION),
        [activeElementRole, isTextInputFocused],
    );

What alternative solutions did you explore? (Optional)

Proposal
Please re-state the problem that we are trying to solve in this issue.
Search - Unable to perform search by hitting Enter on search bar when expense is selected
What is the root cause of that problem?
We have set pressOnEnter on the drop down button and in side the button we already have a code that disable the shortcut based on the active element role but it only disables it if the active element is presentation, which is correct
https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/Button/index.tsx#L163
but we set our text inputs role as presentation
https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/Search/SearchRouter/SearchRouterInput.tsx#L99
What changes do you think we should make in order to solve the problem?

I propose two options

We can give the text input a proper role like textbox
We will need to add the role here

        TEXTBOX: 'textbox',

Along with active role element management we can keep track of whether a text input is focused. Here
https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/ActiveElementRoleProvider/index.tsx#L9-L11

const [isTextInputFocused, setIsTextInputFocused] = useState<boolean | null>(null);
    const handleFocusIn = () => {
        setRole(document?.activeElement?.role ?? null);
        setIsTextInputFocused(['INPUT', 'TEXTAREA'].includes(document.activeElement?.nodeName ?? ''));
    };

....

    const value = React.useMemo(
        () => ({
            role: activeRoleRef,
            isTextInputFocused,
        }),
        [activeRoleRef, isTextInputFocused],

then
const useIsTextInputFocused = () => {
    const {isTextInputFocused} = useContext(ActiveElementRoleContext);
    return isTextInputFocused;
};

https://github.com/Expensify/App/blob/f46bce0b96c533b6aac0e2464ae27615101a7f7d/src/components/Button/index.tsx#L163
const isTextInputFocused = useIsTextInputFocused();
    const shouldDisableEnterShortcut = useMemo(
        () => isTextInputFocused || (accessibilityRoles.includes(activeElementRole ?? '') && activeElementRole !== CONST.ROLE.PRESENTATION),
        [activeElementRole, isTextInputFocused],
    );

What alternative solutions did you explore? (Optional)

I don't think it's very clear how this should behave. You are changing the filter criteria, but there is a selected expense. Should the filter results update? What if the selected expense no longer matches the criteria? cc @luacmartins @trjExpensify @JmillsExpensify

I imagine we'd just clear the selection and perform the new Search. cc @JmillsExpensify for your input as well.

Reviewing proposals

We can remove the pressOnEnter prop.

@Krishna2323 Thanks for your proposal. Is there any drawback if just remove pressOnEnter?

Rotating to get another BZ assigned while OOO

Thanks for your proposals!
I think we can go with @Krishna2323 's proposal - just remove the pressOnEnter prop to fix the issue.
🎀👀🎀 C+ reviewed

This one is kind of weird ... I think it falls under #expense? But I'm not sure about the platform 😅

Payment summary:
Contributor: @Krishna2323 - $250 - Upwork
C+: @eh2077 - $250 - Paid via NewDot manual request

Next up @eh2077 can you complete the checklist? Thank you!

BugZero Checklist:

[ ] [Contributor] Classify the bug:

Bug classification

Source of bug:

[ ] 1a. Result of the original design (eg. a case wasn't considered)
[ ] 1b. Mistake during implementation
[ ] 1c. Backend bug
[ ] 1z. Other:

Where bug was reported:

[ ] 2a. Reported on production
[ ] 2b. Reported on staging (deploy blocker)
[ ] 2c. Reported on both staging and production
[ ] 2d. Reported on a PR
[ ] 2z. Other:

Who reported the bug:

[ ] 3a. Expensify user
[ ] 3b. Expensify employee
[ ] 3c. Contributor
[ ] 3d. QA
[ ] 3z. Other:

[ ] [Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment:

[ ] [Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:

[ ] [Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.

Regression Test Proposal Template

[ ] [BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue:

Regression Test Proposal
Precondition:

Test:

Do we agree 👍 or 👎

BugZero Checklist:

[ ] [Contributor] Classify the bug:

Bug classification

Source of bug:

[ ] 1a. Result of the original design (eg. a case wasn't considered)
[ ] 1b. Mistake during implementation
[ ] 1c. Backend bug
[ ] 1z. Other:

Where bug was reported:

[ ] 2a. Reported on production
[ ] 2b. Reported on staging (deploy blocker)
[ ] 2c. Reported on both staging and production
[ ] 2d. Reported on a PR
[ ] 2z. Other:

Who reported the bug:

[ ] 3a. Expensify user
[ ] 3b. Expensify employee
[ ] 3c. Contributor
[ ] 3d. QA
[ ] 3z. Other:

[ ] [Contributor] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
Link to comment:

[ ] [Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
Link to discussion:

[ ] [Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.

Regression Test Proposal Template

[ ] [BugZero Assignee] Create a GH issue for creating/updating the regression test once above steps have been agreed upon.
Link to issue:

Regression Test Proposal
Precondition:

Test:

Do we agree 👍 or 👎

We're adding tests as part of the project wrap up, so no need to do that now,

Okay, thanks @luacmartins

Requested payment in NewDot


Use SVG version of Travis CI status icon

Hi @jdanford, thanks for the pull request. Before we can merge it, we need you to sign our Contributor License Agreement. You can do so electronically here: http://opensource.box.com/cla
Once you have signed, just add a comment to this pull request saying, "CLA signed". Thanks!

CLA signed

Verified that @jdanford has just signed the CLA. Thanks, and we look forward to your contribution.

Can you update this and run the CI build again?


DOCTYPE html PUBLIC

Description
DOCTYPE html PUBLIC
Repro Steps
1.Run command to push new version code
2.I got an error
Expected behavior
Code update new version successfully
Actual Behavior
MicrosoftThe request is blocked.0C2w2ZAAAAABeAJ1srDFCQr6a6ce+uTEJVFlPMDFFREdFMjMyMgBmZGMzYmE0Ny0zODk2LTQyNjAtYjFlNC02MDJmM2I2YzQwYmI=
Details
I use:
appcenter version 2.13.4
react-native-code-push 7.1.0
"react-native": "0.67.3"

The same here trying to push a new release through the app center cli.
Response status code: 403
Error: failed to set release notes for release
Process exited with code 3

As you can see on status page -  AppCenter code push service is experiencing some issues due to overload right now.
Please, check the status page and try again later, once the status page will be green.


Custom Rules sometimes missing parameters

What happened?
When we create custom rules with "Skip" action via pulumi sometimes it create the rule without the skip phase All remaining custom rules inside action_parameters. This paremeters it's not an explicit phases, and saw the behaviour of the others rules who are created with these field, i can understand it's a default parameters
Expected Behavior
Every rules created inside the cycle must have a All remaining custom rules enabled
Steps to reproduce
I not understand how i can reproduce that, because in the same cycle randomly someone skip this parameters
Output of pulumi about
CLI
Version      3.49.0
Go Version   go1.19.3
Go Compiler  gc
Host
OS       ubuntu
Version  22.04
Arch     x86_64
Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

Hey @VitoSantos22, I see you closed this. Were you able to determine what the issue was?

Hi @AaronFriel, i've missed "ruleset: current" in some action_parameters.
No code issue.


Turn off diagnostics and IO for GPU pipeline

Purpose
Turn of diagnostics and IO for GPU pipeline

[ ] I have read and checked the items on the review checklist.

See also #2521

Actually, if we turn off diagnostics in all the GPU jobs, we are not testing if diagnostics work on GPU? @sriharshakandala @charleskawczynski Should we add one test?

Actually, if we turn off diagnostics in all the GPU jobs, we are not testing if diagnostics work on GPU? @sriharshakandala @charleskawczynski Should we add one test?

We may need to update ci_plots entries, but it appears this CI test has active callbacks in a GPU run https://buildkite.com/clima/climaatmos-ci/builds/16435#018d6633-58f7-4a16-85c2-7ce236899682

We may need to update ci_plots entries, but it appears this CI test has active callbacks in a GPU run https://buildkite.com/clima/climaatmos-ci/builds/16435#018d6633-58f7-4a16-85c2-7ce236899682

This one only has the most basic diagnostics though. For example, the error in #2579 won't be caught if the diagnostics are removed.

We may need to update ci_plots entries, but it appears this CI test has active callbacks in a GPU run https://buildkite.com/clima/climaatmos-ci/builds/16435#018d6633-58f7-4a16-85c2-7ce236899682

This one only has the most basic diagnostics though. For example, the error in #2579 won't be caught if the diagnostics are removed.

Fair point - thanks!

We can have a different pipeline for testing/tuning IO, diagnostics on the GPU. We can use this pipeline purely for GPU performance monitoring!

We can have a different pipeline for testing/tuning IO, diagnostics on the GPU. We can use this pipeline purely for GPU performance monitoring!

Sounds good. Some of the config files in gpu_config are not used in the target GPU simulations - they are used in ClimaAtmos ci for GPU compatibility tests. I can add the diagnostics back to those config files (in #2622), if that sounds good to you.

We can have a different pipeline for testing/tuning IO, diagnostics on the GPU. We can use this pipeline purely for GPU performance monitoring!

Sounds good. Some of the config files in gpu_config are not used in the target GPU simulations - they are used in ClimaAtmos ci for GPU compatibility tests. I can add the diagnostics back to those config files (in #2622), if that sounds good to you.

Sure. We can also consider having separate config files for CI, GPU pipeline, GPU IO pipeline, etc.


SecureHeaders fixes

Is there any plan to merge this in the near future? We are stuck on v2.9.1 because of the broken interaction with secure_headers.


Run in unauthenticated mode?

Is there a recommendation on how to configure this to run in unauthenticated mode? The scenario is that I want High School kids to be able to access this for 2 hours and then shutdown the resource until the next time I see a group of High School kids. I'm trying to move away from having them use ChatGPT because the login process is unreliable and felt this would be a better solution but then was surprised that auth was required here as well.
Any help would be greatly appreciated, I'm open to suggestions regarding alternative approaches to unauth, but it needs to be dead simple / easy so I can rinse and repeat with groups of 20-40 high school students

Anyone? @thivy ? I have something coming up end of January that I could leverage this solution for if it had an unauthenticated experience. If not I have to look elsewhere

You might be able to leverage the local dev account option by editing the code in https://github.com/microsoft/azurechat/blob/601086b1b3b462965d23f355b33438d91b1eb454/src/components/login/login.tsx#L31-L33
Which will allow you to just type in your name and continue to the app


Use thread parking to handle paused flag in background

Rather than polling every 10 ms for resumption in handle_pause, park until the thread is unparked by resume/cancel.

Ah, that's a bit nicer, ta.


Sybil Attacker Report

Related Safe Addresses
0x377c364e09057dbe4169ebabb857b1663511ed23
0xb4c87e483546a35b7666c5fdab89920acf0cc463
0x0e2dbf98bdfa0dd2f2a6031c989d0bd0f7be4fd7
0xb255ad9ca333bd456fc9dd3fc79851d7fd6724a9
0xfc2cfc73ef51c660c4da5fd510e9500a9e77512e
0xb3df9e9c713433208d6c62bb578dd6759f6c7275
0x2f64a5ed71230e60db2cb55a8a2ebb3ec7d6cf35
0x71557990b0d8913a6874642cddd4046d3c244ba4
0x922fe6d42668f96484409ecada8699467195d439
0x0ef98a437746bf1808523a0772fb3278af777279
0x84b4eade5f61397df7e4550a31f72fd545cf696b
0x5db437f110ef8b05b7e37a85b64e2486b2d58b33

Related Safe Creator Addresses
0xf0687e090fe3b11160596bcca10ddd2415012881 0xf0
0xb9178768f6d8d61f00bcf9767885befe7e54b48a 0xb9
0xe4da6192a89dff5c02d754e5e7b319155109f43c 0xe4
0x9e25d80b3838e816b07a868f598f4c115e9d7eca 0x9e
0x7a3cac5012e7fbe9b0557757598da7e9c4e6a87e 0x7a
0x772cb5a031623cd7ac3fa8fa4125596672b6c4ac 0x77
0x503612b9914f1c74618d30ea167d58a55d132335 0x50
0x2aff3c5f51c0ae4a111edaec1daa305395361896 0x2a
0x54a9aadbfb39ea9906b823353978193da0032684 0x54
0x0e61ff4845d4e365fc8e44a410102a5b0bb2a5ee 0x0e
0x0196ded59afe1df493cd2ae4c205c549f6e6d6fc 0x01
0x6d4a56f6d55dbc0531d380752ba17d2c13f3ad9d 0x6d

Reasoning
We analyze 12 safe addresses creator and found they are highly related by checking their Ethereum transaction history.
Below are the evidence that 0xf0/0xb9/0x9e/0x7a/0x77/0x01/0x6d receive initial ETH gas from 0x50
(0xf0)687e090fe3b11160596bcca10ddd2415012881 Receive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX: https://etherscan.io/tx/0x23395fa1c24ccd5289d8410d706cf590d7feb1268955797bebc4d0029e73d895
(0xb9)178768f6d8d61f00bcf9767885befe7e54b48a Receive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX:https://etherscan.io/tx/0xc3f1239accdd9d346657296c0e220621984f930ae581eebb0e0dbd02d9f3edeb
(0x9e)25d80b3838e816b07a868f598f4c115e9d7eca Receive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX:https://etherscan.io/tx/0x7e8c14f6e7de72d94cfff24de31d541eff0e28832f08f8d98cd31dd3da73954f
(0x7a)3cac5012e7fbe9b0557757598da7e9c4e6a87e Receive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX:https://etherscan.io/tx/0x459906d528f753b0093da771bb069ad8fb3dfba51a3d8dd36cbe38ceac182170
(0x77)2cb5a031623cd7ac3fa8fa4125596672b6c4acReceive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX:https://etherscan.io/tx/0xe590d6d13aacbd294854500ca3ad633a590f1199105fdacebc17011e60c8a8fe
(0x01)96ded59afe1Df493CD2aE4C205c549F6e6D6fC Receive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX:https://etherscan.io/tx/0xca7730b1937d3b99c9447cb8eee42abf12d50ad5e80167df7260caf9fe7c047b
(0x6d)4a56f6d55dbc0531d380752ba17d2c13f3ad9d Receive initial Gas from (0x50)3612b9914f1c74618d30ea167d58a55d132335
TX:https://etherscan.io/tx/0xb209618b0f79ab7ab6fcd27180efaf479fcdf48d96431d35ae2c7145280e36d6
Below are the evidence that 0x50/0x2a/0x54/0x0e Receive initial Gas from 0xe4
(0x50)3612b9914f1c74618d30ea167d58a55d132335 Receive initial Gas from
(0xe4)da6192a89dff5c02d754e5e7b319155109f43c
TX:https://etherscan.io/tx/0xa8dcdafc4952ad25a381078fd4b138ef6520c9eb4a3cbfed1ab7284f36a72015
(0x2a)ff3c5f51c0ae4a111edaec1daa305395361896 Receive initial Gas from
(0xe4)da6192a89dff5c02d754e5e7b319155109f43c
TX:https://etherscan.io/tx/0xa88acd2a25402288cbb5910ec161c1c2651dea7932a6544deac6f2552881008a
(0x54)a9aadbfb39ea9906b823353978193da0032684 Receive initial Gas from
(0xe4)da6192a89dff5c02d754e5e7b319155109f43c
TX:https://etherscan.io/tx/0x6e4d48f139781c7d97a4343ab9323ce10577f2691224e60b0b5b3be88c6e95e0
(0x0e)61ff4845d4e365fc8e44a410102a5b0bb2a5ee Receive initial Gas from
(0xe4)da6192a89dff5c02d754e5e7b319155109f43c
TX:https://etherscan.io/tx/0x53a1cd45e8008cb96cbc2a88894791100310385050dd19537412efb0f79ffa37
Besides they have same initial gas provider, they are have multiple transactions with each other.
This alone can connect them with each other, and we also find that some of the addresses shares very similar transaction history and they are interact with Aztec at the same period.
(0x01)96ded59afe1Df493CD2aE4C205c549F6e6D6fC

(0x54)A9AadbFB39EA9906b823353978193DA0032684

(0x7A)3cAc5012e7fbE9B0557757598dA7E9c4E6a87e

(0x77)2cb5a031623cD7AC3Fa8fA4125596672B6c4aC

(0x61)0e8A3Be9Ad6c0bFcE18D3bb3878bDE894fb6c2

(0xb9)178768F6d8D61f00Bcf9767885BeFE7E54b48A

(0xf0)687e090fe3b11160596bcca10ddd2415012881

Methodology
We used an algorithm that generate address groups based on the Safe creator address.
Basically, if  addresses have one of these relations, they get grouped together:

have the same initial gas provider
are other addresses' initial gas provider
interact with the same CEX deposit addresses
have multiple transactions with each other
have similar transaction history

We run the algorithm to automate group creator addresses and find many groups.
Here are some stats:

We choose one of the groups to check their Etherscan tx history to extract detailed transactions to provide the above reasoning and will keep analyzing more groups in a later report.
If the team is interested in our full group results, we can talk in private.
But we can be 100% sure the addresses in this report are controlled by the same person.
Safe Address
eth:0x4038982805b0Eaa4cD075b59d0EA5Ba1d8E0E311

Thanks for the report, we've found the following to the related to airdrop farming:
0x377c364e09057dbe4169ebabb857b1663511ed23
0xb4c87e483546a35b7666c5fdab89920acf0cc463
0x0e2dbf98bdfa0dd2f2a6031c989d0bd0f7be4fd7
0xb255ad9ca333bd456fc9dd3fc79851d7fd6724a9
0xfc2cfc73ef51c660c4da5fd510e9500a9e77512e
0xb3df9e9c713433208d6c62bb578dd6759f6c7275
0x2f64a5ed71230e60db2cb55a8a2ebb3ec7d6cf35
0x71557990b0d8913a6874642cddd4046d3c244ba4
0x922fe6d42668f96484409ecada8699467195d439
0x0ef98a437746bf1808523a0772fb3278af777279
0x84b4eade5f61397df7e4550a31f72fd545cf696b
0x5db437f110ef8b05b7e37a85b64e2486b2d58b33


Fix typo in Approvals section

@ashokm : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@ashokm Thanks!


"Members" team

Like "Owners", organizations should have a "Members" team that is the default team for anyone who is a member of the organization. All owners should be members by default.
The members team does not provide administrative access. It's instead the default team for anywhere that access has to be restricted in any way (filing expense reports in Kharcha or posting to a discussion group). The Members team is used in situations where managing teams is too much detail.
An app that does not have access to an organization's teams can still be aware of the existence of Owners and Members (and a user's membership in these) and can therefore be reasonably functional until team access is granted.

Re-opening this as the use case described in #108 is a problem. Parking #33 for now.

As brought up in #151, the notion of "member" of an organization has changed from "member of any team in the organization" to just "member of the Members team". This change needs to reflect in four places:

[ ] In Lastuser's User model, which has a helper method to return the organizations a user is a member of.
[ ] In Lastuser's API, which returns org memberships in the user info.
[ ] In Flask-Lastuser, which provides a UserBase that has identical methods to Lastuser's User model.
[ ] In the userinfo JSON dictionary persisted to database in all apps, if that app had organizations in the scope requested.

We need to confirm all cases are (a) correctly updated or (b) in the case of (4) confirmed irrelevant.

With #118, members will switch to a role rather than a team. The other semantics described in the previous comment remain valid.


SSLError

Command Ran

twint -u networkchuck

Description of Issue
Every time I try to look for an user, I get the following error:

WARNING:root:Error retrieving https://twitter.com/: SSLError(MaxRetryError('HTTPSConnectionPool(host='twitter.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')")))')), retrying

Environment Details

Ubuntu 20.04 LTS
Terminal

Nevermind, pihole was blocking some requests and I didn't realize 😅


Help wanted Armnn build failed for Android

error: variable 'numOutputElements' set but not used [-Werror,-Wunused-but-set-variable]

Hi @Saikatsaha1996,
which version of armnn and android-nn-driver are you using?
Regards

Hi,
are you following this guide: https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md ?

Hi,
are you following this guide: https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md ?

Yes i am following this guide

Hi,
are you following this guide: https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md ?

Can you tell me exactly why i am getting this error ? Any dependency problem ?

Hi,
are you following this guide: https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md ?

@TeresaARM waiting for solution.. any solution please

Hi,
please try this patch:
https://review.mlplatform.org/c/ml/armnn/+/7393
Regards

Hi,
please try this patch: https://review.mlplatform.org/c/ml/armnn/+/7393
Regards

Okay trying thank you for your response!

Hi,
please try this patch: https://review.mlplatform.org/c/ml/armnn/+/7393
Regards

Fast error solved thank you for your help 😃
Getting new error ArmNN && ComputeLibrary v22.02

Hi,
that got fixed here: https://review.mlplatform.org/c/ml/armnn/+/7336
Could you please apply that patch as well?
Regards

Hi, that got fixed here: https://review.mlplatform.org/c/ml/armnn/+/7336
Could you please apply that patch as well?
Regards

Okay 👌👌 trying

Hi, that got fixed here: https://review.mlplatform.org/c/ml/armnn/+/7336 (this is already merged in master, but not part of 22.02, it will be part of 22.05)
Could you please apply that patch as well?
Regards

How to build without tensorflow ?  -DTENSORFLOW=0 ?

Hi @Saikatsaha1996 ,
to build without tensorflow, you should do what you are doing, it is the default.
to build with tensorflow, you could use the script get_tensorflow.sh and set the -DTENSORFLOW_ROOT= to the path where tensorflow is.
could you send us a log/show us the error message you are seeing now?
Regards

Hi @Saikatsaha1996 ,
to build without tensorflow, you should do what you are doing, it is the default. to build with tensorflow, you could use the script get_tensorflow.sh and set the -DTENSORFLOW_ROOT= to the path where tensorflow is.
could you send us a log/show us the error message you are seeing now?
Regards

Hello @TeresaARM
getting this error

Hi @Saikatsaha1996 ,
to build without tensorflow, you should do what you are doing, it is the default. to build with tensorflow, you could use the script get_tensorflow.sh and set the -DTENSORFLOW_ROOT= to the path where tensorflow is.
could you send us a log/show us the error message you are seeing now?
Regards

Hi,
Please have a look at BuildGuideAndroidNDK.md
and search for  -fpic
The error message is asking you to recompile with -fPIC
please let us know how it goes
Thank you for your messages
Kind Regards

Hi,
Please have a look at BuildGuideAndroidNDK.md and search for -fpic
The error message is asking you to recompile with -fPIC
please let us know how it goes
Thank you for your messages Kind Regards

CFLAGS="-fPIE -fPIC"
cmake .. -DCMAKE_SYSTEM_NAME=Android -DARMCOMPUTE_ROOT=$HOME/armnn-devenv/ComputeLibrary -DARMCOMPUTE_BUILD_DIR=$HOME/armnn-devenv/ComputeLibrary/build -DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMNNREF=1 -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXE_LINKER_FLAGS="-pie -llog -lz" -DTENSORFLOW_ROOT=$HOME/armnn-devenv/tensorflow
make -j8
Getting same error

@TeresaARM tried to build with , but same error..
cmake .. -DARMCOMPUTE_ROOT=$HOME/armnn-devenv/ComputeLibrary -DARMCOMPUTE_BUILD_DIR=$HOME/armnn-devenv/ComputeLibrary/build -DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMNNREF=1 -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXE_LINKER_FLAGS="-pie -llog -lz" -DTENSORFLOW_ROOT=$HOME/armnn-devenv/tensorflow-protobuf/tensorflow -DCMAKE_CXX_FLAGS="-fPIE -fPIC" -DCMAKE_POSITION_INDEPENDENT_CODE=ON

Hi @Saikatsaha1996,
which command have you used to build Compute Library?

Hi @Saikatsaha1996,
which command have you used to build Compute Library?

@TeresaARM  hi!
scons Werror=0 -j8 debug=0 neon=1 opencl=1 os=android arch=arm64-v8a asserts=0 extra_link_flags=" -fPIC -fopenmp -static-openmp" benchmark_tests=0

@TeresaARM  scons build complete without any error..
But you should edit "SConstruct"
after that you can able to compile Computlibrary
line 325 and 326
env['CC'] = env['compiler_cache'] + c_compiler
env['CXX'] = env['compiler_cache'] + cpp_compiler
Build done..

Hi @Saikatsaha1996 ,
could you please try to build with a command more similar to the one in the guide?
scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \
 benchmark_tests=0 validation_tests=0 os=android -j16

You are using, extra_link_flags, instead of extra_cxx_flags="-fPIC"
SConstruct file is correct, I checked with the Compute Library team, who are the owners of the file. But if removing that part instead of giving a prefix is ok as well.
Regards

Hi @Saikatsaha1996 ,
could you please try to build with a command more similar to the one in the guide?
scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \
 benchmark_tests=0 validation_tests=0 os=android -j16

You are using, extra_link_flags, instead of extra_cxx_flags="-fPIC"
SConstruct file is correct, I checked with the Compute Library team, who are the owners of the file. But if removing that part instead of giving a prefix is ok as well.
Regards

Okay trying..

Hi @Saikatsaha1996 ,
could you please try to build with a command more similar to the one in the guide?
scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \
 benchmark_tests=0 validation_tests=0 os=android -j16

You are using, extra_link_flags, instead of extra_cxx_flags="-fPIC"
SConstruct file is correct, I checked with the Compute Library team, who are the owners of the file. But removing the part you have removed, instead of giving a prefix should be ok as well.
Regards

@TeresaARM  Hi!
😃👌🤩
Ultimately build done without warning, errors full green build with cmake and without android ndk && with your , @Computelibrary team's support..
Build complete with Android mobile, not used any pc desktop...
Thank you so much!

Solution is if you are build with mobile..
scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" benchmark_tests=0 validation_tests=0 os=android extra_link_flags="-fopenmp -static-openmp" Werror=0 asserts=0 -j8

@TeresaARM
UnitTests faild because it is tensorflow problem.. when you clone tensorflow with get-tensoflow.sh please use chrrypik patch.. i am not use this patch that's why getting segmentation fault.. but it is ok .. i will re-compile with tensorflow patch version r2.5

Hi @Saikatsaha1996,
glad you hear it is working now. Here you can find the versions of the build dependencies for Arm NN:
https://github.com/ARM-software/armnn/releases/tag/v22.02
Tensorflow needs to be 2.5

Hi @Saikatsaha1996,
glad you hear it is working now. Here you can find the versions of the build dependencies for Arm NN: https://github.com/ARM-software/armnn/releases/tag/v22.02
Tensorflow needs to be 2.5.
Please let me know how it goes.
Kind Regards

Full build done .. with termux.. and now i need to test but my pc GPU gone for RMA so i can't test with adb push && pull for 2 or 3 days
..

How to test ?
Help wanted @TeresaARM
Which command i should use?

Hi @Saikatsaha1996
could you please try to do a clean build, and then run the UnitTest the same way you have run them?
Regards

Hi @Saikatsaha1996
could you please try to do a clean build, and then run the UnitTest the same way you have run them?
Regards

Okay trying

No same problem happened .. compute library working properly.. but ArmNN not working..

Hi @Saikatsaha1996 ,
could you please try to build with a command more similar to the one in the guide?
scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \
 benchmark_tests=0 validation_tests=0 os=android -j16

You are using, extra_link_flags, instead of extra_cxx_flags="-fPIC"
SConstruct file is correct, I checked with the Compute Library team, who are the owners of the file. But removing the part you have removed, instead of giving a prefix should be ok as well.
Regards

@TeresaARM Hi!
😃👌🤩
Ultimately build done without warning, errors full green build with cmake and without android ndk && with your , @Computelibrary team's support..
Build complete with Android mobile, not used any pc desktop...
Thank you so much!

Hi @Saikatsaha1996
I meet the same erros, when build armnn using ndk-r25 in pc,How to deal with its build erros , looking forward your replay!

Hi @Saikatsaha1996 ,
could you please try to build with a command more similar to the one in the guide?
scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags="-fPIC" \
 benchmark_tests=0 validation_tests=0 os=android -j16

You are using, extra_link_flags, instead of extra_cxx_flags="-fPIC"
SConstruct file is correct, I checked with the Compute Library team, who are the owners of the file. But removing the part you have removed, instead of giving a prefix should be ok as well.
Regards

@TeresaARM Hi!
😃👌🤩
Ultimately build done without warning, errors full green build with cmake and without android ndk && with your , @Computelibrary team's support..
Build complete with Android mobile, not used any pc desktop...
Thank you so much!

Hi @Saikatsaha1996 I meet the same erros, when build armnn using ndk-r25 in pc,How to deal with its build erros , looking forward your replay!

please share more details about the error..

@Saikatsaha1996 for details:
armnn22.02
android-ndk-r25
build follow:https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md
when building ,appears link erro:

@Saikatsaha1996 for details:
armnn22.02
android-ndk-r25
build follow:https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md
when building ,appears link erro:
...

ld error:relocation R_AARCH64_ADD_ABS_L012_NC can not be used against symbol "google:protobuf::internal::NullLogHander(google::protobuf::LogLevel, char const*,int ,sting ...)
::ndk1::allocator const&) ';recompile with -fPIC "

defined in ../../third-party/prebuild/protobuf/android/lib/libprotobuf.a(common.o)
referenced by common.cc::273 (../../src/google/protobuf/stubs/common.cc:273)

@Saikatsaha1996 for details: armnn22.02 android-ndk-r25 build follow:https://github.com/ARM-software/armnn/blob/branches/armnn_22_02/BuildGuideAndroidNDK.md when building ,appears link erro: ...

ld error:relocation R_AARCH64_ADD_ABS_L012_NC can not be used against symbol "google:protobuf::internal::NullLogHander(google::protobuf::LogLevel, char const*,int ,sting ...)
::ndk1::allocator const&) ';recompile with -fPIC "

defined in ../../third-party/prebuild/protobuf/android/lib/libprotobuf.a(common.o)
referenced by common.cc::273 (../../src/google/protobuf/stubs/common.cc:273)

Re compile google:protobuf with -fPIC
Than try agan

Closing due to age of issue, please reopen if you are still having problems.
Thanks,
Francis.

Closing due to age of issue, please reopen if you are still having problems.
Thanks, Francis.

Sorry for asking here..!
I have Mali G-610 MC6 GPU
I am facing some issues.. and i was tried to login Arm community forum but i am unable to login from 40 days.. i was created support tickets 1 month ago but not a single reply received from #ARM so i understood #ARM don't care about it.. okay that's very fine..
But i have a question about ARM MALI G-610 MC6
I want Mali 3rd generation Valhall open-source driver link 🔗 but i am unable to find proper ARM MALI G-610 MC6 GPU driver..
Can it possible to share with me 🙂..
I hope i can receive atleast reply positive or negative..
Thanking you
Regards
Saikat Saha

Hi @Saikatsaha1996,
This is a bit outside ArmNN's domain but the latest 5 releases on this download page should support G610:
https://developer.arm.com/downloads/-/mali-drivers/valhall-kernel
However:

Note that these components are not a complete driver stack. To build a functional OpenGL ES you need access to the full source code of the Mali GPU DDK, which is provided under the standard Arm commercial licence to all Mali GPU customers.

These open source kernel drivers are intended to be used along side the user-space binary releases we provide. https://developer.arm.com/downloads/-/mali-drivers/user-space
These binaries are only for a select number of boards, otherwise the device should come with them already included or should be able to be obtained from the device vendor.
Regards,
Francis.

Hi @Saikatsaha1996,
This is a bit outside ArmNN's domain but the latest 5 releases on this download page should support G610: https://developer.arm.com/downloads/-/mali-drivers/valhall-kernel
However:

Note that these components are not a complete driver stack. To build a functional OpenGL ES you need access to the full source code of the Mali GPU DDK, which is provided under the standard Arm commercial licence to all Mali GPU customers.

These open source kernel drivers are intended to be used along side the user-space binary releases we provide. https://developer.arm.com/downloads/-/mali-drivers/user-space
These binaries are only for a select number of boards, otherwise the device should come with them already included or should be able to be obtained from the device vendor.
Regards, Francis.

Yes sir i already have my vendor GPU driver inbuilt.. my device Xiaomi k50i
I am useing proot linux.. but GPU driver not available because mesa driver not available for Mali G-610 MC6 Valhall generation 3rd.. i mean not supported that's why i can't use proot linux with gui desktop..
And i am really sorry.. for asking here.. actually i was snapdragon user but new generation mediatek chipset cpu & GPU are just awesome .. so my fast device from ARM family.. so i am newbe in Arm.. that's why facing problem..
But thank you so much for your response..
Mey be Kernel driver will only work if i am build os.. because i am using proot linux.. don't have root permission..