[SPARK-29431][WebUI] Improve Web UI / Sql tab visualization with cached dataframes.

What changes were proposed in this pull request?
With this pull request I want to improve the Web UI / SQL tab visualization. The principal problem that I find is when you have a cache in your plan, the SQL visualization don’t show any information about the part of the plan that has been cached.
Before the change

After the change

Why are the changes needed?
When we have a SQL plan with cached dataframes we lose the graphical information of this dataframe in the sql tab
Does this PR introduce any user-facing change?
Yes, in the sql tab
How was this patch tested?
Unit testing and manual tests throught spark shell

Can one of the admins verify this patch?

Can one of the admins verify this patch?

ok to test

Test build #111998 has started for PR 26082 at commit 967b4f5.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/17010/
Test PASSed.

Test build #111998 has finished for PR 26082 at commit 967b4f5.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/111998/
Test PASSed.

Conflicts resolved

Test build #112183 has started for PR 26082 at commit 7d0ff6a.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/17174/
Test PASSed.

Test build #112183 has finished for PR 26082 at commit 7d0ff6a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/112183/
Test PASSed.

@joshrosen-stripe I see your emoji! Do you think it is and interesting feature for you too?

I don't have the bandwidth to shepherd / review this right now, but I am following along because I'm excited to see this UX pain-point get addressed: the SQL tab is one of my go-to debugging tools, but (prior to this PR) it was really unhelpful when using caching.
I do have a question about the new UX, though:
With today's existing behavior, the "number of rows scanned" metrics from inputs always reflect the total data volume read: if I have a table with a 100k rows and I scan the whole thing then I'll see  "100k input rows" on the scan node.
With your PR, I'd expect to see 100k rows scanned during the job which initially populates the cache.
What happens if we're reading the cache a second time? It sounds like we'd still display the cached part of the plan, but what metrics would we show? If we had 100% cache hits, would we see empty SQL metrics on the UI (e.g. zero rows scanned)? If we had a mixture of cache hits and misses, would we see metrics corresponding only to what's been recomputed?
I have slight concerns that the metrics might be confusing except to eagle-eyed readers who spot that there's a cache node in the middle of a plan. Maybe we could color nodes upstream of a cache? Or somehow give a clearer visual indication of the cache nodes, maybe via a different color or something? I'm not sure what's the right approach here.

Hi @joshrosen-stripe
It's very interesting what are you talking about. I have done some tests on it. I think the results are coherent but I'm not sure if enough clear.
First job with cached dataframe (full cached)

Second job using the same cached dataframe

At the second job thre is no data processed at the cached dataframe.
First job with partial cached dataframe

Second job that uses the previous dataframe but need to cache all the dataframe.

For me is enough clear if you know how cached dataframes are. ¿What do you think?

Hi @srowen,
Do you think it is and interesting feature?
Thanks

I don't have a strong opinion on this. Yes I guess the question is whether it clarifies more than confuses. So this always adds the 'relation' to the graph? Sounds plausible but I don't know if for some reason that isn't meant to be shown here with the other nodes. I don't necessarily think the metrics are an issue, but is there any indication at all that the source is a cached DataFrame in the output?

About your questions, yes, it add the relation to the graph always when appears InMemoryTableScan node. Looking for this kind of node it seems only appear when the chache method is called so there is no other uses of InMemorytableScan.
There is no special indication that this is a cached dataframe, only the node type (InMemoryTableScan). We could try to put a diferent color to the node to clarify it.

I think it could be OK. @cloud-fan do you have any opinions - is there any downside to showing more info this way?

Expanding to @dongjoon-hyun maybe for a check - does this sound reasonable? I don't see a downside other than a bigger graph, but it contains more info.

First job with partial cached dataframe

what do you mean by partial cached df?
In general this idea LGTM. Can you compare the UI with a parquet scan? Similar to parquet scan, the cached table also supports filter pushdown. Maybe better to display it so that users can understand why a query doesn't read all the rows of a cached table.

With partial dataframe I mean, for example, when you have a cached dataframe, and the first action you make on it is show(10), only a few elements of this dataframe will be cached. You could do count() on the cached dataframe and this will make the rest of the elements be cached. This is what I'm trying to show with the images.
I attach an example with a simple parquet file
sc.parallelize(1 to 100000).toDF("x").withColumn("x1",col("x") + 1).write.parquet("test.parquet")
val df = spark.read.parquet("test.parquet").filter(col("x")<100).cache()
res3.filter(col("x")<50).count

res3.filter(col("x")<50).count

Test build #114424 has started for PR 26082 at commit c030902.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/19261/
Test PASSed.

@dongjoon-hyun What is your opinion about this changes? Thank you

Test build #114426 has started for PR 26082 at commit 09b4ed3.

Test build #114426 has finished for PR 26082 at commit 09b4ed3.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/114426/
Test FAILed.

Test build #114424 has finished for PR 26082 at commit c030902.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/114424/
Test PASSed.

Hello, is there any ETA on when this might be merged? I have some follow-up changes I'd like to create a PR for these JIRAs.

I don't have an opinion on the UI change;  I know there is also some rumbling that it's already got far too much going on. I wouldn't open a bunch of JIRAs or changes just yet, unless they are clear wins or simplifications.

@viirya @cloud-fan I'm going to change the PR to add directly to the child. Thanks for your comments

@viirya @cloud-fan I have updated the PR with the comments. Sorry for the wait!

Test build #118482 has started for PR 26082 at commit c383de4.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/23239/
Test PASSed.

Test build #118482 has finished for PR 26082 at commit c383de4.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/118482/
Test PASSed.

LGTM, cc @gengliangwang

@cloud-fan @gengliangwang what are the next steps with this PR once @planga82 resolved conflicts with master?

Can one of the admins verify this patch?

Let's fix the conflict and get it merged.

Can one of the admins verify this patch?

@planga82 the conflict was simple. I am not sure if you are active recently. So I just resolved it for you.

ok to test

Thanks guys for picking this up again, awesome!

Test build #123427 has started for PR 26082 at commit a02a53e.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/28044/
Test PASSed.

Thanks @gengliangwang !

Test build #123427 has finished for PR 26082 at commit a02a53e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/123427/
Test PASSed.

Thanks, merging to master


Add omni completion source

This is a basic source that works, but I think that it should be filetype-specific, because it is only relevant in a few cases (e.g. when editing LaTeX files when https://github.com/lervag/vimtex is installed). However, there isn't a good way for users to configure filetypes for sources right now, since they don't have access to the source metadata.
It would be easy to add a global option and read it in get_metadata but that's quite ugly in my opinion.
Ideally, I'd like to configure filetypes via files in an ftplugin directory (which only works for Vimscript, Lua support is planned for 0.6, which is still far away) or autocommands. I feel that it shouldn't be the responsibility of a plugin to handle filetype management since (Neo)Vim already has a very good way to do that.
I can open an issue to discuss that if you don't have a plan for it yet.

Thank you very much! I really appreciate contribution!
I'm reviewing.

Thanks for the review, I was hoping for a discussion about filetypes before going into how the omnifunc works, but I'll just open a new issue.
I think we can merge it for all filetypes as it is now (unless you have more comments of course).

@cbarrete
Sorry. I was missing that point.
In compe, the filetype metadata can be confifured by g:compe.source.omni = { 'filetypes': ['tex'] }

Looks good. I will merge it.

In compe, the filetype metadata can be confifured by g:compe.source.omni = { 'filetypes': ['tex'] }

Ah thanks, I didn't realize that, I'll still open an issue as I don't think that it's an optimal solution, but we can discuss this :)


There missed a ending symbol

I have download the kriging.js and use it in my project,but there is a error when i try to change the code like this :
(function(a){
	console.log(a);
}(1234));

Or like this:
(function(a){
	console.log(a);
})(1234);

And i got a error
(intermediate value)(...) is not a function
But everything is ok when use it like this:
var fn=function(a){
	console.log(a);
}(12345678)

And finally,i find there missed a ";" in line 27,the old is:
Array.prototype.pip = function(x, y) {
    var i, j, c = false;
    for(i=0,j=this.length-1;i<this.length;j=i++) {
	if( ((this[i][1]>y) != (this[j][1]>y)) &&
	    (x<(this[j][0]-this[i][0]) * (y-this[i][1]) / (this[j][1]-this[i][1]) + this[i][0]) ) {
	    c = !c;
	}
    }
    return c;
}

When  add the ";" at last like this,the error is been fixed
Array.prototype.pip = function(x, y) {
    var i, j, c = false;
    for(i=0,j=this.length-1;i<this.length;j=i++) {
	if( ((this[i][1]>y) != (this[j][1]>y)) &&
	    (x<(this[j][0]-this[i][0]) * (y-this[i][1]) / (this[j][1]-this[i][1]) + this[i][0]) ) {
	    c = !c;
	}
    }
    return c;
};

So don't be lazy,add the ";" at the end of every assignment statement is very important!!!

@zhangiser Can you create a pull request for this bug? I can review it.


how to make a slick-slider undraggable to the left?

How to make a slick-slider undraggable to the left side and draggable only on the right side?

You can try the swipe event and abort it if the direction is to the left.
$('.your-element').on('swipe', function(event, slick, direction){
  console.log(direction);
  // left
});


I can see which versions of camunda an OSGi release is compatible with

Either on the releases page or somewhere else, I can see which versions of the process engine a particular OSGi extension release is compatible with.

Hi Daniel,
you're right, that would be some useful information.
I updated the release notes for 1.1.0. Unfortunately, I cannot add any description to 1.0.0. Seems like 1.0.0 wasn't a "usual" GitHub release. Maybe Christian can help me there?

Hi Ronny,
Just add some release notes through the GitHub tags url.

https://github.com/camunda/camunda-bpm-platform-osgi/releases/new?tag=1.0.0

Thank you!


[feat] Renamemake_deferrable() to defer() and make it publicly available along with evaluate()

make_deferrable() is renamed to defer() and is moved inside
reframe.utility.sanity.
evaluate() is moved inside reframe.utility.sanity
The old functions are deprecated.
Functions are now publicly visible and documentation is updated.
Tests that were making use of them are adapted.

Fixes #1038.

Hello @vkarak, Thank you for submitting the Pull Request!

In the file unittests/test_sanity_functions.py:

Line 386:80: E501 line too long (84 > 79 characters)
Line 389:80: E501 line too long (82 > 79 characters)
Line 392:80: E501 line too long (82 > 79 characters)
Line 397:80: E501 line too long (83 > 79 characters)
Line 400:80: E501 line too long (85 > 79 characters)

Do see the ReFrame Coding Style Guide

Codecov Report

Merging #1050 into master will decrease coverage by 0.04%.
The diff coverage is 98.6%.

@@            Coverage Diff             @@
##           master    #1050      +/-   ##
==========================================
- Coverage   91.97%   91.92%   -0.05%
==========================================
  Files          81       81
  Lines       10984    10991       +7
==========================================
+ Hits        10103    10104       +1
- Misses        881      887       +6

Impacted Files
Coverage Δ

unittests/test_deferrable.py
99.61% <100%> (ø)
:arrow_up:

...nittests/resources/checks_unlisted/deps_complex.py
97.64% <100%> (-0.03%)
:arrow_down:

unittests/test_sanity_functions.py
100% <100%> (ø)
:arrow_up:

reframe/utility/sanity.py
98.8% <100%> (+0.02%)
:arrow_up:

reframe/core/pipeline.py
92.24% <100%> (+0.01%)
:arrow_up:

unittests/test_pipeline.py
94.35% <100%> (-0.01%)
:arrow_down:

unittests/test_policies.py
98.86% <100%> (ø)
:arrow_up:

reframe/core/deferrable.py
92.94% <33.33%> (-3.79%)
: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 595f4a0...f282c55. Read the comment docs.


Release v0.4.0

Major bump because of the transition from num-complex 0.2 to num-complex 0.3.

Thanks for this!


Add migration to v4 document into Guides section

Create a document to migrate to webpack v4 (legato).
The document should be in a new Migrations subsection from Guides page.

[x] Create Migrations Section - It contains both the existing content which should be labeled v2/3 #1933

[ ] Complete Migration v4 Guide - It should contain the v2/3 -> v4 Migration information #1934

[ ] (Nice to have) - Add loader and plugin migration instructions in v4 Migration Guide #1935

i would quesstion v2 -> v4 migration guide necessity. Lets maybe do v3 -> v4? I've tackled the first item and probably can pick up next after rebuild gets merged


Extensions in extension manager cannot be installed

It seems that Slicer is trying to create directories on the application space, possibly without permissions. Need to check whether we can point Slicer to create directories somewhere else.
Update 1: https://discourse.slicer.org/t/unable-to-install-extensions-when-slicer-is-installed-in-system-location/16588/2?u=rafaelpalomar
Update 2: I suppose the path is computed in compile time (build environment), which leads to a non-usable directory in runtime

I am able to see the extension page now and install the extensions, however the some of installed extensions do not get loaded m (Monai Label and SlicerRT). SlicerIGT is loading properly, I believe this could be possibly due to issues with SimpleITK amongst others.
I have attached the error log here.
flatpak_extention_error.log


The fine-tuned model (.pth file) is very large

The fine-tuned file in the finetune/output is very large, around 2 times(35G) than the base pth(17G), dose anyone come across a same question?

already done


Create Posts “star-health”

Automatically generated by Netlify CMS

👷 Deploy Preview for ashfolios processing.

Name
Link

🔨 Latest commit
7d1b3be1360d6795f60698f31c9dc198c244d41b

🔍 Latest deploy log
https://app.netlify.com/sites/ashfolios/deploys/644a076912344700084e0625


space_travelers_hub kanban board creation

Project link: https://github.com/jorgeabrahan/space_travelers_hub/projects/1
Team members:
1- Jorge Abrahan
2- Nelson Araujo

Pull Request Approved ✅ 🎊 🎉
Hello TEAM! 👋
Things to Appreciate

[ ] Correct Flow ✅
[ ] Clean Code 👍
[ ] No Linter Errors 🔥
[ ] Descriptive Pull Request and Summary 👌

Your project is complete!  There is nothing else to say other than it's time to merge it.
Congratulations!!! 🎉 🥳 👏 🙌 🎊 ☑

Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Pages throw error

I just pulled from integration and I get the following error when trying to access pages in the backend:
Symphony Fatal Database Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY pt.type' at line 8

An error occurred while attempting to execute the following query

SELECT SQL_CACHE type FROM `sym_pages_types` AS pt WHERE pt.page_id = 1 ORDER BY pt.type ASC GROUP BY pt.type

Just pushed a fix, literally a couple of minutes ago :D

Perfect – will check it out :)


Make optional HTTP-referer configurable

This makes the HTTP Referrer configurable, which is required for requests to make OPENAI_API_HOST=https://openrouter.ai/api work (and then together with #358 it just works :tm:, with all their models). Spelling is consistent with header name, but could also be "proper" instead.
This implementation is a bit awkward and uses a special string "" for unset, because Config.get() requires truthy values, so it can't just be left empty. But at least this way it's very unlikely to break anything for anyone.

Hi @ecoughlan
Thank you for interest and effort. ShellGPT originally was designed to be used in pair with OpenAI API (things like prompts, roles, etc...). While using it with https://openrouter.ai/api (which also provides a lot of other LLMs) more likely a "personal" usecase. Also future migration to assistant API might break such multiple API integrations. Therefore I'm closing this PR, thank you for you effort.


feat: added User Role System feature

What does this PR do?
Implement a user role system that assigns different roles (admin, editor, user) with specific permissions for managing blog content.
This feature will allow for better content management, enabling specific users to edit or delete posts while restricting access for regular users.
Fixes #35
Type of change
Implemented roles such as Admin, Editor, and User.
Added role definitions in the user model to ensure clarity and maintainability.
Implemented middleware to enforce role-based permissions on various endpoints.
Only Admin users can perform actions like creating, editing, or deleting blog posts.
Editors can edit existing posts but cannot delete them.
Regular Users can only view posts.
Updated the user interface to reflect role-specific actions.

one request - can you add hacktoberfest label to my issue?

@aashiimathur resolve the conflict first

@aashiimathur resolve the conflict first

Resolved conflicting files.

@aashiimathur the application is broken . It is logging me in without asking me to sign in. Also there is no option to see trending,new and dashboard

Please begin from start and then implement and don't change the default configuration like port numbers etc


jest snapshots

Has anyone used glamor when using jest snapshot testing?

I think this would be a real winner for testing. Here's something I think would be super cool. Take this as an example:
import React from 'react'
import {style, compose, hover} from 'glamor'
import THEME from '../lib/styles/theme'
const container = style({ color: THEME.primary })
const item = compose({ backgroundColor: '#ccc' }, hover({ backgroundColor: 'white' }))
const selected = style({ fontWeight: 'bold' })

export default SomeUI

function SomeUI() {
  return (

 one

 two

 three

  )
}

I'd love to be able to do this in my tests:
import React from 'react'
import {render} from 'enzyme'
import {renderToJson} from 'enzyme-to-json'
import {setupForTests} from 'glamor'
import SomeUI from './some-ui'

setupForTests() // <-- magic function I made up

test('renders', () => {
  const wrapper = render(<SomeUI />)
  expect(renderToJson(wrapper)).toMatchSnapshot()
})

And this could result in a snapshot like this (beware, snapshot hand-crafted, could be inaccurate, but I think it should give you an idea):
exports[`test renders 1`] = `

 one

 two

 three

`;

What would be cool about this is now I could see when my styles change across my app when I make changes to my shared CSS in JS objects. That would be preeeeetty slick.

how about snapshotting the generated css instead of the whole render tree? it would look something like
let { styleSheet, flush } = require('glamor')

flush() // call this before every test
// ...do some rendering
expect(styleSheet.rules()).toMatchSnapShot()

Hmmmm... Perhaps. I guess that's a start. But I'd really like to see the styles for an element right next to the element in the snapshot rather than having to associate class names

is there a way to hook into renderToJson? for your idea to work, you need to process every node, pull out data attributes and classnames which are glamor-like, and copy the json in.

Hmmm... what if instead it was:
renderToJson(applyStylesInline(wrapper))

? The trouble here is wrapper is an enzyme-specific thing, but I'm pretty sure there's a way to get ahold of and manipulate the dom node it's wrapping. Then you could just query it and replace all the matching styles... maybe? 🤔💭  :)

not sure there's anything I can do from my side?
ps - how good is jest for browser based testing? If you have a look at my tests and my karma conf, is it possible for me to move to jest?

Yeah, I'm starting to think that the most reasonable thing to do would be to flush as you said. I wonder if there's a way we could write a plugin for react-storybook so storyshots would add glamor styles to the storyshot snapshot. I'll bet it's possible.
Jest does not really do browser-based testing. I don't think that it's really in the future plans either. Out of scope for the project I think.

I'm trying the styleSheet.rules() thing and getting back a CSSStyleRule. If I try to toString that I get [object CSSStyleRule] and if I try to JSON.stringify it I get {}.  Is there a way that I can get only the styles?

are you running this in a browser? CSSStyleRule only shows up there.

Yeah, I was testing things out in the browser.

But I just tried it out in the node repl and it looks like this will be perfect:
~/Developer/react-github-profile (master)
👻  $ node
> var glamor = require('glamor')
undefined
> glamor.style({padding: 10})
{ 'data-css-1qbd000': '*' }
> glamor.styleSheet.rules()
[ { cssText: '.css-1qbd000,[data-css-1qbd000]{padding:10px;}' } ]

Though... Hmmm... Should probably figure out a way to format that.

Ah, just realized that this wont work out if you've got jsdom simulating a browser environment, which most of the time you will... :-(

try styleSheet.rules.map(x => x.cssText)

(That should work on both browser/server/jsdom)

anything I need to do here further? Lemme know, else I'll close the issue. Cheers!

It does print out the string, but the string isn't formatted so the snapshot diff will be pretty bad. I wonder if there's a package to format a CSS string 🤔

Tons, lol https://www.npmjs.com/search?q=css+beautify
On Mon, 5 Dec 2016 at 10:30 PM, Kent C. Dodds<EMAIL_ADDRESS>wrote:

It does print out the string, but the string isn't formatted so the
snapshot diff will be pretty bad. I wonder if there's a package to format a
CSS string 🤔
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/threepointone/glamor/issues/104#issuecomment-264910986,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABJeMS1nYGyGLSD5nPznB7ryWOBeHPuks5rFEM1gaJpZM4KqGhd
.

I feel like last time I looked through that list, they all transform files, none expose APIs to beautify strings :-(
Maybe I need to look closer

this has been solved by the incredible kent in https://www.npmjs.com/package/jest-glamor-react, closing this issue


Add rename command

Sometimes you decide your original plan for a name was a bad idea. It would be nice if you could rename a change.
To be clear: I am NOT asking that this work for stuff that's already been deployed. Presumably if you wanted that to work you'd need to add some kind of special support to sqitch.plan. That would be nice in the future, but it's a lot more work.
See also request for sqitch remove (#295).

Thumbs up!


Pin Rules Engine to exact version

Expected Behaviour
All dependencies for a given version of the Target package are pinned to exact versions
Actual Behaviour
https://github.com/adobe/aepsdk-rulesengine-ios.git is set to upToNextMajor in Package.swift - this means SPM in Xcode is more likely to regularly re-resolve packages and can mean what gets built on CI is different to what has been built locally.
Sample Code that illustrates the problem
https://github.com/adobe/aepsdk-target-ios/blob/d78737f8fc24965d385ced2efd2ba9fabb22348b/Package.swift#L23
Change to:
.package(url: "https://github.com/adobe/aepsdk-core-ios.git", .exact("3.1.0")),

@timsearle Please commit Packages.resolved to your repository to lock in specific version of the dependencies. Changing it to .exact is not possible as the app can include multiple extensions depending on aepsdk-core-ios.

Apologies - I referenced the wrong package, I meant to reference this one:
https://github.com/adobe/aepsdk-core-ios/blob/1f037918856101e863a8e6b1bc44e04ca40f189f/Package.swift#L29
We do have our Package.resolved committed, but Xcode's integration with SPM seems to often re-generate/update it with these downstream package resolutions to higher versions.


spoon: add version v0.0.1

This adds https://github.com/Bios-Marcel/spoon
It's a couple of milliseconds slower than https://github.com/shilangyu/scoop-search and offers completion, similar to https://github.com/Moeologist/scoop-completion.
The idea is to add more to this, as time goes on and improve it where possible. It currently doesn't offer any destructive capabilities, such as cleanup / uninstall and so on. Available commands are mostly wrappers around scoop.

[x] I have read the Contributing Guide.

/verify

I've executed shasum -a 256 on a freshly downloaded binary and it's the same as specified in the manifest. So I don't really know what the bot wants from me :)


feat(platform-log-middleware): display error in log "request.end"

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

v7.30.0
GitHub release

Your semantic-release bot :package::rocket:


bevy_kira_audio::audio_output: Failed to setup audio: BuildStreamError(BackendSpecific { err: BackendSpecificError { description: "ALSA function 'snd_pcm_sw_params' failed with error 'EINVAL: Invalid argument'" } })

runing it on Pop!_OS VERSION="22.04 LTS"
this is the code https://github.com/NiklasEi/bevy_game_template
there is no sound
i think it is because of pulseaudio

This looks like a failure to build Kira's AudioManager. That is either a setup or a Kira issue. I have pulseaudio set up, too and everything works fine.
Maybe you can ask for help with Kira directly? But please note, that bevy_kira_audio is currently not using the latest Kira version.

Can you retry with version 0.10, please? Now, bevy_kira_audio is using the latest Kira version again.
bevy_game_template is updated already.

it works :)


Use slug instead of id to retrieve a single project

Codecov Report

Merging #132 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #132   +/-   ##
========================================
  Coverage    73.33%   73.33%
========================================
  Files            8        8
  Lines           45       45
  Branches         6        6
========================================
  Hits            33       33
  Misses          12       12

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 dc19ec9...6097c2f. Read the comment docs.


First elmish state update discarded

The first state update is discarded, unless you use the html.elmish constructor that includes an initial Cmd<Msg>, AND the Msg is not a noop.
Fun.Blazor.Wasm 2.0.0-beta008
Simple repro:
type State =
    { Count: int }
    static member init = { Count = 0 }

type Msg = SetCount of int

let update msg state =
    match msg with
    | SetCount count -> { state with Count = count }, Cmd.none

let render state (dispatch: Msg -> unit) =
    Template.html
        $"""
        <div>
            {state.Count} <button onclick={fun _ -> SetCount(state.Count + 1) |> dispatch}>+</button>
        </div>"""

let app =
    html.elmish ((fun _ -> State.init, Cmd.none), update, render)

@omcnoe you should add package Fun.Blazor.Elmish.

I have all the necesary packages in the .fsproj
<PackageReference Include="Fun.Blazor.Elmish" Version="2.0.0-beta*" />
 <PackageReference Include="Fun.Blazor.HtmlTemplate" Version="2.0.0-beta008" />
 <PackageReference Include="Fun.Blazor.Wasm" Version="2.0.0-beta*" />

And my code does open the necessary modules. Sorry just got cropped out of the example.
I think it is an actual bug if init Cmd is Cmd.none :) Understood that project is in beta.

Sorry I misunderstanded your point. I can reproduce that now.
It is here: https://github.com/slaveOftime/Fun.Blazor/blob/29068b94fae0974323399ae116c4b729c24e4244/Fun.Blazor.Elmish/ElmComponent.fs#L31-L44
I will check how elmish work again and try to fix it. If you are very familiar with elmish your help will be very welcomed :)

@omcnoe hi, I changed the init a little bit. The bug should be fixed.
But I will lerarn more on elmish to improve it when I got more time.

Yes, issue is fixed. Thanks.


[help needed] redis with metrics / prometheus / grafana

Describe the bug
I have Istio 1.4.2 installed with grafana. I installed redis with metrics set to true. I then installed (into grafana) redis dashboard. I have tried many different settings but just can't get the data into grafana. Is there anyone that has it working and how?
Version of Helm and Kubernetes:
2.16
1.14.7-gke.23
Which chart:
redis
What happened:
No data into grafana.
What you expected to happen:
Grafana getting data.

Hi,
Do you see the metrics sidecar in the redis deployment? Could you try executing kubectl port-forward in the redis pod with port 9121 and then do curl <IP_ADDRESS>:9121/metrics?

I executed
gcloud container clusters get-credentials ridealto-app-integration-cluster --zone us-central1-a --project alto-application-integration && kubectl port-forward --namespace services $(kubectl get pod --namespace services --selector="app=redis" --output jsonpath='{.items[0].metadata.name}') 8080:9121

and was able to get the following response:
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.7079e-05
go_gc_duration_seconds{quantile="0.25"} 4.0101e-05
go_gc_duration_seconds{quantile="0.5"} 5.3872e-05
go_gc_duration_seconds{quantile="0.75"} 0.000107843
go_gc_duration_seconds{quantile="1"} 0.000794318
go_gc_duration_seconds_sum 0.022852497
go_gc_duration_seconds_count 259
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 7
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.13.4"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 471296
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 9.317168e+06
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 1.445531e+06
# HELP go_memstats_frees_total Total number of frees.
# TYPE go_memstats_frees_total counter
go_memstats_frees_total 88465
# HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.
# TYPE go_memstats_gc_cpu_fraction gauge
go_memstats_gc_cpu_fraction 1.2977037915307644e-06
# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.
# TYPE go_memstats_gc_sys_bytes gauge
go_memstats_gc_sys_bytes 2.377728e+06
# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.
# TYPE go_memstats_heap_alloc_bytes gauge
go_memstats_heap_alloc_bytes 471296
# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.
# TYPE go_memstats_heap_idle_bytes gauge
go_memstats_heap_idle_bytes 6.5282048e+07
# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.
# TYPE go_memstats_heap_inuse_bytes gauge
go_memstats_heap_inuse_bytes 1.400832e+06
# HELP go_memstats_heap_objects Number of allocated objects.
# TYPE go_memstats_heap_objects gauge
go_memstats_heap_objects 1998
# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.
# TYPE go_memstats_heap_released_bytes gauge
go_memstats_heap_released_bytes 6.524928e+07
# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.
# TYPE go_memstats_heap_sys_bytes gauge
go_memstats_heap_sys_bytes 6.668288e+07
# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.
# TYPE go_memstats_last_gc_time_seconds gauge
go_memstats_last_gc_time_seconds 1.5771071138571296e+09
# HELP go_memstats_lookups_total Total number of pointer lookups.
# TYPE go_memstats_lookups_total counter
go_memstats_lookups_total 0
# HELP go_memstats_mallocs_total Total number of mallocs.
# TYPE go_memstats_mallocs_total counter
go_memstats_mallocs_total 90463
# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.
# TYPE go_memstats_mcache_inuse_bytes gauge
go_memstats_mcache_inuse_bytes 6944
# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.
# TYPE go_memstats_mcache_sys_bytes gauge
go_memstats_mcache_sys_bytes 16384
# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.
# TYPE go_memstats_mspan_inuse_bytes gauge
go_memstats_mspan_inuse_bytes 19856
# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.
# TYPE go_memstats_mspan_sys_bytes gauge
go_memstats_mspan_sys_bytes 65536
# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.
# TYPE go_memstats_next_gc_bytes gauge
go_memstats_next_gc_bytes 4.194304e+06
# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.
# TYPE go_memstats_other_sys_bytes gauge
go_memstats_other_sys_bytes 1.272413e+06
# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.
# TYPE go_memstats_stack_inuse_bytes gauge
go_memstats_stack_inuse_bytes 425984
# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.
# TYPE go_memstats_stack_sys_bytes gauge
go_memstats_stack_sys_bytes 425984
# HELP go_memstats_sys_bytes Number of bytes obtained from system.
# TYPE go_memstats_sys_bytes gauge
go_memstats_sys_bytes 7.2286456e+07
# HELP go_threads Number of OS threads created.
# TYPE go_threads gauge
go_threads 7
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 2.01
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 7
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 1.0838016e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.57704142678e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 1.14835456e+08
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1
# HELP redis_allocator_active_bytes allocator_active_bytes metric
# TYPE redis_allocator_active_bytes gauge
redis_allocator_active_bytes 2.281472e+06
# HELP redis_allocator_allocated_bytes allocator_allocated_bytes metric
# TYPE redis_allocator_allocated_bytes gauge
redis_allocator_allocated_bytes 2.052592e+06
# HELP redis_allocator_resident_bytes allocator_resident_bytes metric
# TYPE redis_allocator_resident_bytes gauge
redis_allocator_resident_bytes 4.943872e+06
# HELP redis_aof_base_size_bytes aof_base_size_bytes metric
# TYPE redis_aof_base_size_bytes gauge
redis_aof_base_size_bytes 181160
# HELP redis_aof_buffer_length aof_buffer_length metric
# TYPE redis_aof_buffer_length gauge
redis_aof_buffer_length 0
# HELP redis_aof_current_rewrite_duration_sec aof_current_rewrite_duration_sec metric
# TYPE redis_aof_current_rewrite_duration_sec gauge
redis_aof_current_rewrite_duration_sec -1
# HELP redis_aof_current_size_bytes aof_current_size_bytes metric
# TYPE redis_aof_current_size_bytes gauge
redis_aof_current_size_bytes 185582
# HELP redis_aof_delayed_fsync aof_delayed_fsync metric
# TYPE redis_aof_delayed_fsync gauge
redis_aof_delayed_fsync 0
# HELP redis_aof_enabled aof_enabled metric
# TYPE redis_aof_enabled gauge
redis_aof_enabled 1
# HELP redis_aof_last_bgrewrite_status aof_last_bgrewrite_status metric
# TYPE redis_aof_last_bgrewrite_status gauge
redis_aof_last_bgrewrite_status 1
# HELP redis_aof_last_cow_size_bytes aof_last_cow_size_bytes metric
# TYPE redis_aof_last_cow_size_bytes gauge
redis_aof_last_cow_size_bytes 0
# HELP redis_aof_last_rewrite_duration_sec aof_last_rewrite_duration_sec metric
# TYPE redis_aof_last_rewrite_duration_sec gauge
redis_aof_last_rewrite_duration_sec -1
# HELP redis_aof_last_write_status aof_last_write_status metric
# TYPE redis_aof_last_write_status gauge
redis_aof_last_write_status 1
# HELP redis_aof_pending_bio_fsync aof_pending_bio_fsync metric
# TYPE redis_aof_pending_bio_fsync gauge
redis_aof_pending_bio_fsync 0
# HELP redis_aof_pending_rewrite aof_pending_rewrite metric
# TYPE redis_aof_pending_rewrite gauge
redis_aof_pending_rewrite 0
# HELP redis_aof_rewrite_buffer_length aof_rewrite_buffer_length metric
# TYPE redis_aof_rewrite_buffer_length gauge
redis_aof_rewrite_buffer_length 0
# HELP redis_aof_rewrite_in_progress aof_rewrite_in_progress metric
# TYPE redis_aof_rewrite_in_progress gauge
redis_aof_rewrite_in_progress 0
# HELP redis_aof_rewrite_scheduled aof_rewrite_scheduled metric
# TYPE redis_aof_rewrite_scheduled gauge
redis_aof_rewrite_scheduled 0
# HELP redis_blocked_clients blocked_clients metric
# TYPE redis_blocked_clients gauge
redis_blocked_clients 0
# HELP redis_client_recent_max_input_buffer_bytes client_recent_max_input_buffer_bytes metric
# TYPE redis_client_recent_max_input_buffer_bytes gauge
redis_client_recent_max_input_buffer_bytes 2
# HELP redis_client_recent_max_output_buffer_bytes client_recent_max_output_buffer_bytes metric
# TYPE redis_client_recent_max_output_buffer_bytes gauge
redis_client_recent_max_output_buffer_bytes 0
# HELP redis_cluster_enabled cluster_enabled metric
# TYPE redis_cluster_enabled gauge
redis_cluster_enabled 0
# HELP redis_commands_duration_seconds_total Total amount of time in seconds spent per command
# TYPE redis_commands_duration_seconds_total counter
redis_commands_duration_seconds_total{cmd="auth"} 0.207545
redis_commands_duration_seconds_total{cmd="client"} 2e-06
redis_commands_duration_seconds_total{cmd="config"} 0.000107
redis_commands_duration_seconds_total{cmd="get"} 8e-05
redis_commands_duration_seconds_total{cmd="info"} 0.021327
redis_commands_duration_seconds_total{cmd="ping"} 0.056486
redis_commands_duration_seconds_total{cmd="psync"} 0.043985
redis_commands_duration_seconds_total{cmd="replconf"} 0.446899
redis_commands_duration_seconds_total{cmd="set"} 1.7e-05
# HELP redis_commands_processed_total commands_processed_total metric
# TYPE redis_commands_processed_total counter
redis_commands_processed_total 330133
# HELP redis_commands_total Total number of calls per command
# TYPE redis_commands_total counter
redis_commands_total{cmd="auth"} 66428
redis_commands_total{cmd="client"} 1
redis_commands_total{cmd="config"} 1
redis_commands_total{cmd="get"} 9
redis_commands_total{cmd="info"} 159
redis_commands_total{cmd="ping"} 65793
redis_commands_total{cmd="psync"} 475
redis_commands_total{cmd="replconf"} 197265
redis_commands_total{cmd="set"} 2
# HELP redis_config_maxclients config_maxclients metric
# TYPE redis_config_maxclients gauge
redis_config_maxclients 10000
# HELP redis_config_maxmemory config_maxmemory metric
# TYPE redis_config_maxmemory gauge
redis_config_maxmemory 0
# HELP redis_connected_clients connected_clients metric
# TYPE redis_connected_clients gauge
redis_connected_clients 2
# HELP redis_connected_slave_lag_seconds Lag of connected slave
# TYPE redis_connected_slave_lag_seconds gauge
redis_connected_slave_lag_seconds{slave_ip="<IP_ADDRESS>",slave_port="6379",slave_state="online"} 0
# HELP redis_connected_slave_offset_bytes Offset of connected slave
# TYPE redis_connected_slave_offset_bytes gauge
redis_connected_slave_offset_bytes{slave_ip="<IP_ADDRESS>",slave_port="6379",slave_state="online"} 95990
# HELP redis_connected_slaves connected_slaves metric
# TYPE redis_connected_slaves gauge
redis_connected_slaves 3
# HELP redis_connections_received_total connections_received_total metric
# TYPE redis_connections_received_total counter
redis_connections_received_total 66428
# HELP redis_cpu_sys_children_seconds_total cpu_sys_children_seconds_total metric
# TYPE redis_cpu_sys_children_seconds_total counter
redis_cpu_sys_children_seconds_total 0.011985
# HELP redis_cpu_sys_seconds_total cpu_sys_seconds_total metric
# TYPE redis_cpu_sys_seconds_total counter
redis_cpu_sys_seconds_total 64.008536
# HELP redis_cpu_user_children_seconds_total cpu_user_children_seconds_total metric
# TYPE redis_cpu_user_children_seconds_total counter
redis_cpu_user_children_seconds_total 0.002861
# HELP redis_cpu_user_seconds_total cpu_user_seconds_total metric
# TYPE redis_cpu_user_seconds_total counter
redis_cpu_user_seconds_total 87.609864
# HELP redis_db_keys Total number of keys by DB
# TYPE redis_db_keys gauge
redis_db_keys{db="db0"} 0
redis_db_keys{db="db1"} 0
redis_db_keys{db="db10"} 0
redis_db_keys{db="db11"} 0
redis_db_keys{db="db12"} 0
redis_db_keys{db="db13"} 0
redis_db_keys{db="db14"} 0
redis_db_keys{db="db15"} 0
redis_db_keys{db="db2"} 0
redis_db_keys{db="db3"} 0
redis_db_keys{db="db4"} 0
redis_db_keys{db="db5"} 0
redis_db_keys{db="db6"} 0
redis_db_keys{db="db7"} 0
redis_db_keys{db="db8"} 0
redis_db_keys{db="db9"} 0
# HELP redis_db_keys_expiring Total number of expiring keys by DB
# TYPE redis_db_keys_expiring gauge
redis_db_keys_expiring{db="db0"} 0
redis_db_keys_expiring{db="db1"} 0
redis_db_keys_expiring{db="db10"} 0
redis_db_keys_expiring{db="db11"} 0
redis_db_keys_expiring{db="db12"} 0
redis_db_keys_expiring{db="db13"} 0
redis_db_keys_expiring{db="db14"} 0
redis_db_keys_expiring{db="db15"} 0
redis_db_keys_expiring{db="db2"} 0
redis_db_keys_expiring{db="db3"} 0
redis_db_keys_expiring{db="db4"} 0
redis_db_keys_expiring{db="db5"} 0
redis_db_keys_expiring{db="db6"} 0
redis_db_keys_expiring{db="db7"} 0
redis_db_keys_expiring{db="db8"} 0
redis_db_keys_expiring{db="db9"} 0
# HELP redis_evicted_keys_total evicted_keys_total metric
# TYPE redis_evicted_keys_total counter
redis_evicted_keys_total 0
# HELP redis_expired_keys_total expired_keys_total metric
# TYPE redis_expired_keys_total counter
redis_expired_keys_total 3
# HELP redis_exporter_build_info redis exporter build_info
# TYPE redis_exporter_build_info gauge
redis_exporter_build_info{build_date="2019-11-15-19:34:34",commit_sha="e15c7d22b9151c3681c60b5df5cd552584bef10d",golang_version="go1.13.4",version="v1.3.4"} 1
# HELP redis_exporter_last_scrape_duration_seconds exporter_last_scrape_duration_seconds metric
# TYPE redis_exporter_last_scrape_duration_seconds gauge
redis_exporter_last_scrape_duration_seconds 0.003477687
# HELP redis_exporter_last_scrape_error The last scrape error status.
# TYPE redis_exporter_last_scrape_error gauge
redis_exporter_last_scrape_error{err=""} 0
# HELP redis_exporter_scrape_duration_seconds Duration of scrape by the exporter
# TYPE redis_exporter_scrape_duration_seconds summary
redis_exporter_scrape_duration_seconds{quantile="0.5"} NaN
redis_exporter_scrape_duration_seconds{quantile="0.9"} NaN
redis_exporter_scrape_duration_seconds{quantile="0.99"} NaN
redis_exporter_scrape_duration_seconds_sum 0
redis_exporter_scrape_duration_seconds_count 0
# HELP redis_exporter_scrapes_total Current total redis scrapes.
# TYPE redis_exporter_scrapes_total counter
redis_exporter_scrapes_total 1
# HELP redis_instance_info Information about the Redis instance
# TYPE redis_instance_info gauge
redis_instance_info{os="Linux 4.14.138+ x86_64",redis_build_id="3259c77a1d3a0c8d",redis_mode="standalone",redis_version="5.0.7",role="master"} 1
# HELP redis_keyspace_hits_total keyspace_hits_total metric
# TYPE redis_keyspace_hits_total counter
redis_keyspace_hits_total 7
# HELP redis_keyspace_misses_total keyspace_misses_total metric
# TYPE redis_keyspace_misses_total counter
redis_keyspace_misses_total 2
# HELP redis_last_slow_execution_duration_seconds The amount of time needed for last slow execution, in seconds
# TYPE redis_last_slow_execution_duration_seconds gauge
redis_last_slow_execution_duration_seconds 0
# HELP redis_latest_fork_seconds latest_fork_seconds metric
# TYPE redis_latest_fork_seconds gauge
redis_latest_fork_seconds 0.000341
# HELP redis_loading_dump_file loading_dump_file metric
# TYPE redis_loading_dump_file gauge
redis_loading_dump_file 0
# HELP redis_master_repl_offset master_repl_offset metric
# TYPE redis_master_repl_offset gauge
redis_master_repl_offset 95990
# HELP redis_memory_max_bytes memory_max_bytes metric
# TYPE redis_memory_max_bytes gauge
redis_memory_max_bytes 0
# HELP redis_memory_used_bytes memory_used_bytes metric
# TYPE redis_memory_used_bytes gauge
redis_memory_used_bytes 1.987176e+06
# HELP redis_memory_used_lua_bytes memory_used_lua_bytes metric
# TYPE redis_memory_used_lua_bytes gauge
redis_memory_used_lua_bytes 37888
# HELP redis_memory_used_peak_bytes memory_used_peak_bytes metric
# TYPE redis_memory_used_peak_bytes gauge
redis_memory_used_peak_bytes 2.092968e+06
# HELP redis_memory_used_rss_bytes memory_used_rss_bytes metric
# TYPE redis_memory_used_rss_bytes gauge
redis_memory_used_rss_bytes 5.009408e+06
# HELP redis_net_input_bytes_total net_input_bytes_total metric
# TYPE redis_net_input_bytes_total counter
redis_net_input_bytes_total 1.1977772e+07
# HELP redis_net_output_bytes_total net_output_bytes_total metric
# TYPE redis_net_output_bytes_total counter
redis_net_output_bytes_total 1.697394e+06
# HELP redis_process_id process_id metric
# TYPE redis_process_id gauge
redis_process_id 1
# HELP redis_pubsub_channels pubsub_channels metric
# TYPE redis_pubsub_channels gauge
redis_pubsub_channels 0
# HELP redis_pubsub_patterns pubsub_patterns metric
# TYPE redis_pubsub_patterns gauge
redis_pubsub_patterns 0
# HELP redis_rdb_bgsave_in_progress rdb_bgsave_in_progress metric
# TYPE redis_rdb_bgsave_in_progress gauge
redis_rdb_bgsave_in_progress 0
# HELP redis_rdb_changes_since_last_save rdb_changes_since_last_save metric
# TYPE redis_rdb_changes_since_last_save gauge
redis_rdb_changes_since_last_save 2
# HELP redis_rdb_current_bgsave_duration_sec rdb_current_bgsave_duration_sec metric
# TYPE redis_rdb_current_bgsave_duration_sec gauge
redis_rdb_current_bgsave_duration_sec -1
# HELP redis_rdb_last_bgsave_duration_sec rdb_last_bgsave_duration_sec metric
# TYPE redis_rdb_last_bgsave_duration_sec gauge
redis_rdb_last_bgsave_duration_sec 0
# HELP redis_rdb_last_bgsave_status rdb_last_bgsave_status metric
# TYPE redis_rdb_last_bgsave_status gauge
redis_rdb_last_bgsave_status 1
# HELP redis_rdb_last_cow_size_bytes rdb_last_cow_size_bytes metric
# TYPE redis_rdb_last_cow_size_bytes gauge
redis_rdb_last_cow_size_bytes 512000
# HELP redis_rdb_last_save_timestamp_seconds rdb_last_save_timestamp_seconds metric
# TYPE redis_rdb_last_save_timestamp_seconds gauge
redis_rdb_last_save_timestamp_seconds 1.577041433e+09
# HELP redis_rejected_connections_total rejected_connections_total metric
# TYPE redis_rejected_connections_total counter
redis_rejected_connections_total 0
# HELP redis_replication_backlog_bytes replication_backlog_bytes metric
# TYPE redis_replication_backlog_bytes gauge
redis_replication_backlog_bytes 1.048576e+06
# HELP redis_slowlog_last_id Last id of slowlog
# TYPE redis_slowlog_last_id gauge
redis_slowlog_last_id 0
# HELP redis_slowlog_length Total slowlog
# TYPE redis_slowlog_length gauge
redis_slowlog_length 0
# HELP redis_start_time_seconds Start time of the Redis instance since unix epoch in seconds.
# TYPE redis_start_time_seconds gauge
redis_start_time_seconds 1.577041426e+09
# HELP redis_target_scrape_request_errors_total Errors in requests to the exporter
# TYPE redis_target_scrape_request_errors_total counter
redis_target_scrape_request_errors_total 0
# HELP redis_up Information about the Redis instance
# TYPE redis_up gauge
redis_up 1
# HELP redis_uptime_in_seconds uptime_in_seconds metric
# TYPE redis_uptime_in_seconds gauge
redis_uptime_in_seconds 65800

anything else you can think of to get the output the rest of the way?

Ok, so the exporter is generating the metrics entries. Are you able to access the prometheus admin panel and check the targets section? There you can see if this exporter is being accessed

I did get to the admin portal >targets and I see some complaints about it seeming "unhealthy" (see screenshot). There are a few places that seem healthy (see second screen shot). Do you think it is the unhealthy ones? is this the exporter you were hoping to be accessed?

Hi,
The issue is that it is trying to access using HTTPS, but the exporter is exposing using HTTP. Could you show the annotations that the redis statefulset and have? You should see some annotations regarding prometheus using kubectl get pods -o yaml or kubctl get statefulset -o yaml and the corresponding name. I do not know if there's an annotation or a setting that is forcing HTTPS access to the endpoints. Maybe it's istio the one that sets it up?

looking/sharing:
from redis-master
apiVersion: apps/v1
kind: StatefulSet
metadata:
  creationTimestamp: "2019-12-22T18:21:03Z"
  generation: 1
  labels:
    app: redis
    chart: redis-10.2.1
    heritage: Tiller
    release: redis
  name: redis-master
  namespace: services
  resourceVersion: "34459257"
  selfLink: /apis/apps/v1/namespaces/services/statefulsets/redis-master
  uid: cfe9fdcc-24e7-11ea-b093-42010a8000e6
spec:
  podManagementPolicy: OrderedReady
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: redis
      release: redis
      role: master
  serviceName: redis-headless
  template:
    metadata:
      annotations:
        checksum/configmap: b8a413468bb89cdfbbf05e8230a63a5b75888b1394e8ba52b2d6e6580dc43d62
        checksum/health: d98b7f94cc89c9aec7a97dadc20f2cb9f73fc0458566d5c4e3330e7383c58457
        checksum/secret: fccdb01d40c053d99b51f5f262a932d209aa7cd59defed8a1fea86f1db5a65a6
        prometheus.io/port: "9121"
        prometheus.io/scrape: "true"

from redis-slave
apiVersion: apps/v1
kind: StatefulSet
metadata:
  creationTimestamp: "2019-12-22T18:21:03Z"
  generation: 1
  labels:
    app: redis
    chart: redis-10.2.1
    heritage: Tiller
    release: redis
  name: redis-slave
  namespace: services
  resourceVersion: "34446023"
  selfLink: /apis/apps/v1/namespaces/services/statefulsets/redis-slave
  uid: cfe9f24b-24e7-11ea-b093-42010a8000e6
spec:
  podManagementPolicy: OrderedReady
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: redis
      release: redis
      role: slave
  serviceName: redis-headless
  template:
    metadata:
      annotations:
        checksum/configmap: b8a413468bb89cdfbbf05e8230a63a5b75888b1394e8ba52b2d6e6580dc43d62
        checksum/health: d98b7f94cc89c9aec7a97dadc20f2cb9f73fc0458566d5c4e3330e7383c58457
        checksum/secret: fccdb01d40c053d99b51f5f262a932d209aa7cd59defed8a1fea86f1db5a65a6
        prometheus.io/port: "9121"
        prometheus.io/scrape: "true"

I'm wondering if the port is wrong for https and that istio is making it as a requirement. I'm looking to see what might be in other systems. I think this is good to know though as I'm sure I'm not the only one trying to have redis work on an istio enabled cluster.

this might be a dumb question (and I'm fairly prometheus ignorant) but I noticed that my prometheus port is 9090. would I need to change the port in redis? or is it something else?

Hi,
The port 9090 is irrelevant for what the redis exporter is concerned. Which prometheus version are you using? I do not see any annotation that forces an HTTPS access.

Just looked it up. v2.8
Jonathan Campos
CTO and Vice-president of Engineering
ridealto.com
On Fri, Dec 27, 2019, 3:12 AM Javier J. Salmerón-García <
<EMAIL_ADDRESS>wrote:

Hi,
The port 9090 is irrelevant for what the redis exporter is concerned.
Which prometheus version are you using? I do not see any annotation that
forces an HTTPS access.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/helm/charts/issues/19740?email_source=notifications&email_token=AKJW2HV7D45WDOK5NLXX7QLQ2XBJDA5CNFSM4J6ND5N2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHW3UVA#issuecomment-569227860,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKJW2HX4YYKEHCJJ4N4HBCDQ2XBJDANCNFSM4J6ND5NQ
.

Would there be any reason not to just install a second instance of Prometheus that you'd know would work and get that picked up also from grafana?

You could configure this second prometheus in grafana and should not find any issue importing the data from both.

last questions: I used helm to install a clean prometheus (in namespace: telemetry) and I have also previously used helm to install redis (in namespace: services). I've gone to the prometheus targets and don't see redis in there. Is there anything special I'll need to do to make this connection? After that I think things should be pretty "normal".

@javsalgar thank you for all your help.
For others that might make it here, I didn't get the initial istio prometheus working with redis but did get the second one working. After reinstalling redis, prometheus picked up the source. Then I followed steps similar to the following medium post to get the rest setup.
https://medium.com/@chris_linguine/how-to-monitor-your-kubernetes-cluster-with-prometheus-and-grafana-2d5704187fc8


Basic auth does not always work

We're getting growing number of reports that http basic auth is turned off for some users by their orgs. This means they can't access prototypes as we use basic auth so the general public can't mistake a prototype for a real service. It also totally prevents search engines from finding prototypes, which in turn stops browsers from marking prototypes as phishing sites.
If this is a trend, we may need to find a solution other than http basic auth - for example writing our own authentication layer.
https://answers.microsoft.com/en-us/microsoftedge/forum/msedge_issue-msedge_win10/latest-version-of-edge-no-longer-shows-basic/3601252b-e56b-46c0-a088-0f6084eabe47
A workaround for now is to temporarily disable authentication:

Go to the Heroku app > Settings > Config vars
Set KEY to USE_AUTH
Set VALUE to 'false'
When the research session is over, set it to 'true'

Internal working doc:
https://docs.google.com/document/d/10FysEv5A7YOWYdFpvIxGm1nzhh0rwLFrOrSHiurkkO0/edit#

more reports on support recently

Need to implement our own auth

Some context from another part of government:

We have replaced Edge browser with the updated, Chromium-based version (Edge Chromium).  The move is an attempt by Microsoft to improve standardisation between browsers by adopting the open-source technology that underpins Google Chrome, creating a safer, faster, and more stable way to use the web.
In line with the release of Edge Chromium, Microsoft has updated their security baseline. This baseline prohibits the use of deprecated authentication mechanisms such as Basic access and Digest authentication, which are being used on the prototype.
Basic authentication relies on sending usernames and passwords – often stored on or saved to the device – with every request, increasing the risk of attackers capturing users’ credentials, particularly if not TLS protected; whilst digest authentication is vulnerable to replay attacks, increasing the likelihood of a successful attack.
Given the risk, we have elected to follow Microsoft's guidance as we do not want to encourage the use of insecure authentication mechanisms. Administrators and service providers are urged to use NTLM or Negotiate as a minimum or alternative login control whereby the web site is password protected at the application level; this would also protect content which could be embargoed.

if we implement out own auth page, it should redirect back to the page the user originally requested

Another thing that I found in two different departments was that I as a designer wasn't allowed access to the environment variables for the department's hosting system. Having the auth as a config would mean not having to bug a developer to change the password (or worse, not be able to change it at all).

@joelanman I think a properly styled page is a great idea. I do wonder with the way it’s currently done, are the environment variables really necessary? Everything else in the kit is held in a config file which is easy to edit, but the passwords are held in the environment which is an awkward concept for designers if they’ve not come across them before. I know the idea is to not expose them in production services, but for prototypes i do wonder if it's perhaps overkill? is the password to stop people accessing the service and seeing sensitive stuff? In which case the code being on GitHub is a risk in itself, or is it purely to stop people accidentally accessing prototypes and believing them to be real services? In which case a config password would be easier to manage.

@abbott567 for some depts I imagine the credentials do need to be kept private. But there's no reason the kit couldn't read in from multiple places - in a separate file in the repo, and from env vars.

Would it not be more prudent to work with the departments that are enforcing policy changes on the browsers to allow basic auth. Changing all the prototypes that are out there will be a big ask of all the teams.

sked 30 min session with the team next week @Izabela-16

@ma3574 sorry for the delayed response. We can look into that too but its hard for us to influence the policy of depts all around government. Hopefully this will allow affected teams to resolve the issue themselves

Ready for the next steps.


Gradle 7.1.1 and Dependency Version Upgrades

PR description
Upgrade gradle to 7.1.1.
Upgrade most dependencies to current versions
Changelog

[ ] I thought about the changelog and included a changelog update if required.

Not all versions were updated

Versions with non-release markings (rc, alpha, etc) we were not already using were skipped.
Others didn't merge simply or cleanly and will be left for another PR

Dagger
Kubernetes client
OpenTelemetry
JMH

Some dependencies advertised major version upgrades and were not taking to the most recent version

vertx
web3j

Rocks DB should have performance testing before upgrading


Update the site admin permissions

Summary
This updates the permissions for the site_admin role to allow content/taxonomy administration for all types.

This adds the non-content/taxonomy permissions to the user.role.site_admin.yml file.
This updates the profile's install hook to add the permissions for all enabled node/taxonomy bundles to the site admin.
This adds two new post_update hooks:

The first will re-add the workflow permissions to the proper roles.
The second will add all non content/taxonomy related permissions to the site_admin role.

Unit test coverage was added to the EcmsWorkflowBundleCreate class.

This will need a rebase after #70 lands.
Metadata

Question
Answer

Did you use a meaningful pull request title?
yes

Did you apply meaningful labels to the pull request?
yes

Did you perform a self review first?
yes

Documentation reflects changes?
no

CHANGELOG reflects changes?
yes

Unit/Functional tests reflect changes?
yes (unit)

Did you perform browser testing?
yes

Risk level
Medium

Relevant links
RIG-129

@ben-hamelin, this is good for review now.

Ok this looks good!
/approved

/approved


CE-OCP-bug-install

Fixes missing step in OCP installation

For CE 3.15, 3.16, 3.17
Aligns with fixes in: https://github.com/tigera/docs/pull/447

@bmckercher123 Do you want to add 3.14 to this PR? My PR was meant as a model only -- it didn't get into the code.
That one thing aside, LGTM!


allowArbitraryExtensions does not work as expected

🔎 Search Terms
allowArbitraryExtensions
🕗 Version & Regression Information

This is unexpected error from<EMAIL_ADDRESS>
⏯ Playground Link
https://codesandbox.io/p/sandbox/typescript-playground-export-forked-mfz7rg?file=/index.ts:10,28
💻 Code
import {} from "./app.css";

export {};

my tsconfig.json
{
  "compileOnSave": false,
  "compilerOptions": {
    "module": "ESNext",
    "target": "ESNext",
    "lib": [
      "ESNext",
      "DOM",
      "DOM.Iterable"
    ],
    "moduleResolution": "bundler",
    "customConditions": [
      "dev"
    ],
    "jsx": "react-jsx",
    "declaration": true,
    "emitDeclarationOnly": true,
    "isolatedModules": true,
    "strict": true,
    "allowJs": true,
    "skipDefaultLibCheck": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "allowArbitraryExtensions": true,
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "sourceMap": false,
    "rootDirs": [
      "./src",
      "./esm"
    ],
    "outDir": "./esm"
  },
  "include": [
    "./src/**/*"
  ]
}

🙁 Actual behavior
I have set allowArbitraryExtensions to true, but it still throw error when import a .css file.
As mentioned in document:

you can suppress the error with the new --allowArbitraryExtensions compiler option.

🙂 Expected behavior
should not throw error
Additional information about the issue

You're missing the app.d.css.ts file.

doesn't it mean any errors about this file with unknown extension would be suppressed ?

发件人: Martin Johns @.>
发送时间: Friday, August 25, 2023 4:23:17 PM
收件人: microsoft/TypeScript @.>
抄送: indooorsman @.>; Author @.>
主题: Re: [microsoft/TypeScript] allowArbitraryExtensions does not work as expected (Issue #55507)
You're missing the app.d.css.ts file.
―
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/TypeScript/issues/55507#issuecomment-1692965097, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABFRA3O73WC455ZKZLSNL2TXXBOHLANCNFSM6AAAAAA355TP4M.
You are receiving this because you authored the thread.Message ID: @.***>

Not sure where you got that idea.
https://github.com/microsoft/TypeScript/pull/51435, where this was implemented:

Add --allowArbitraryExtensions, a flag for allowing arbitrary extensions on import paths

And, correspondingly, the .d.ext.ts files needed to describe the shape of whatever it is [you’re] importing.

You still need types for the file you’re importing, as with any other import.  The flag just prevents the import from failing on the basis of the file extension alone.

Got it, thanks for the explanation

发件人: Bruce Pascoe @.>
发送时间: Friday, August 25, 2023 9:07:30 PM
收件人: microsoft/TypeScript @.>
抄送: indooorsman @.>; Author @.>
主题: Re: [microsoft/TypeScript] allowArbitraryExtensions does not work as expected (Issue #55507)
Not sure where you got that idea.
#51435https://github.com/microsoft/TypeScript/pull/51435, where this was implemented:
Add --allowArbitraryExtensions, a flag for allowing arbitrary extensions on import paths
And, correspondingly, the .d.ext.ts files needed to describe the shape of whatever it is [you’re] importing.
You still need types for the file you’re importing, as with any other import. The flag just prevents the import from failing on the basis of the file extension alone.
―
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/TypeScript/issues/55507#issuecomment-1693334661, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABFRA3MEKW2N4XEXGAZFMALXXCPRFANCNFSM6AAAAAA355TP4M.
You are receiving this because you authored the thread.Message ID: @.***>


feat: Use memoized request_class value

Description

Use memoized request_class value

Closes

@all-contributors add @kedod for code

For interests sake, the memoization of resolve_response_class() was removed in #357.
That PR added resolve_response_handler() which is itself cached and appears to be the only place that we call resolve_response_class() internally - so I can understand why its caching was removed in that case.
However, it has since always been documented as being cached, even though it isn't, and we offer it as public API, so if users are calling it more than once they'd benefit from the caching as documented and it wouldn't really cost us anything. So, now that we are caching resolve_request_class() I think its it probably better to memoize it too so the similar methods are consistent.
In that PR we also removed caching for resolve_response_cookies() and resolve_response_headers(), but the docstrings of those methods were updated to reflect that.


Device tracker

Not sure if this is the right place....
Would be nice if the presence of the pet could be a Device_tracker. In this way could be linked as a person (badge)

Under the current beta, if you add the binary_sensor.pet_xxx as an entity card, it will show you a picture of the pet and show them as either Home or Away. Furthermore, you can use the custom component for the composite device tracker to make a person for your pet/s.
https://community.home-assistant.io/t/sureflap-connect-pet-door/41488/386

a "real" one is wip here but its not really usable yet

v0.4.0 👀 🕵♀


HHH-15975 documentation tests must rely on SharedDriverManagerConnectionProviderImpl

This PR fixes some documentation tests so that they rely on SharedDriverManagerConnectionProviderImpl instead of the default DriverManagerConnectionProviderImpl Connection Provider.
Tests modified:

AcmeCorpPhysicalNamingStrategyTest
TransactionsTest

Thanks!


Python File

The mrash.py file found in the main page of this repository is an empty file. Please fix that.
Thank you,
Punyathorn

The source code are for sell sperately. Feel free to dm


Update storage-use-azcopy-files.md

correct to single quotation mark per https://github.com/MicrosoftDocs/azure-docs/issues/90911

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

#sign-off


Vision Transformer by vit_pytorch tutorial

This PR adds example which shows OpenFL ability to work with vit-pytorch library (vit-pytorch is the library which implements Vision Transformer architecture).

I have read the CLA Document and I hereby sign the CLA

Jenkins please retry a build


LEAN-1111 - LW - R5: PDF Figure is missing from editor

Can one of the admins verify this patch?

add to whitelist

Please note in the PR name if the change involves a version updated so it's visible in the commit list later on.


adds a total

Release the new version to rubygems. Thanks.
On Wednesday, November 30, 2011 at 7:08 PM, Ryan Mulligan wrote:

You can merge this Pull Request by running:
git pull https://github.com/ryantm/Rubybooty add_total
Or you can view, comment on it, or merge it online at:
https://github.com/russ/Rubybooty/pull/1
-- Commit Summary --

adds a total

-- File Changes --
M lib/rubybooty.rb (9)
-- Patch Links --
https://github.com/russ/Rubybooty/pull/1.patch
https://github.com/russ/Rubybooty/pull/1.diff

Reply to this email directly or view it on GitHub:
https://github.com/russ/Rubybooty/pull/1


Testing on the Hetzner CCX33 PC

Hi, I saw that you benchmark everyone's code on your env (same one as the old official evaluation env).
Could you please run my code on that server against both the default and 10K datasets? It'd be really appreciated. Thanks!
To test using full CPU: ./run_cpp.sh
To test using 8 threads: ./run_cpp.sh 8
https://github.com/lehuyduc/1brc-simd

Oops... I saw this just now :) I kind of phased out of 1brc for a while. Is this still relevant?

Oh no worry, I have tested on so many PCs now so it's not necessary anymore 🤣


Python Language Server (Pylance and Jedi) docstring tooltips hide code

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.65.2
OS Version: Linux Mint 20.3

Steps to Reproduce:

Type basically anything that contains a docstring underneath into code.

For example:

Then when I begin adding more variables this pops up immediately:

As I understand it, it is Pylance/Jedi doing this.  There are no settings to disable it, delay it, or move it elsewhere.  The only way around this is to hit "ESC" constantly while typing.  It would be nice to have an option to delay the pop up or at the very least move it off to a corner of the screen.
All of these settings are available for "Quick Suggestions" but not for docstring output.

Apparently this has been an issue for years #150
Why can't these language server tooltips have a setting to be placed away from the code?  Why does it have to be next to the code blocking off huge chunks of the screen?

Will start with @roblourens since it happens in notebooks. Not sure if we do anything special there or if this is a general editor problem.

Probably not notebook specific. I can't repro any issue though. Can you share a screenshot with full context so I can see your window size and layout?

This is not notebook specific.  I can't provide images right now but like I said, if you use any code that contains docstrings, the docstrings will immediately pop up as your typing parameters within a function/class you're trying to use.  It sometimes pops up underneath text, other times right next to it, but regardless it is obtrusive I'm both contexts and cannot be modified, delayed, or moved elsewhere.  The only way to disable docstrings pop up is by disabling the Language Server completely.

@392781 Guessing that you mean parameter hints, not the symbol hover nor IntelliSense, you can try disabling this setting editor.parameterHints.enabled. That allows to control if parameter hints show as you type or they need to invoked manually

Alright, that does work... Weirdly enough the setting didn't do anything for me when I initially posted the issue.
That said, the issue still stands that when parameter hints are enabled, they are intrusive and at times block out other sections of code by their placement.
I would still like to see the option of delaying the hint pop up after typing or the possibility of selecting a corner location of the editor for them to pop up in (away from the cursor).

Hey @jrieken, this issue might need further attention.
@392781, you can help us out by closing this issue if the problem no longer exists, or adding more information.

Things get a lot worse when there are lots of parameters. Vscode doesn't even try to guess or scroll to the parameter I'm currently typing.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


USER - Handle Unauthorized Access to pages

Currently some pages require the user to be logged in to access.
We should hide pages in the menu bar that users are not allowed to access.
We should create a page (or redirect) for when people try to access a page they cannot reach (instead of the default "Unauthorized Access" page.

@abercilla I think create-event is the only one right now, and one of my PR's takes care of hiding it from non-admins. I'll merge that in tonight.
But right now we have an "unauthorized access" page that doesn't look very good. Ideally the user would be redirected to the home page with a flash indicating that aren't permitted to access that page. If we can't make that work, then at least have an "Unauthorized" bage that includes the base template, so users can navigate back to the main site.


indexInParent replacement for use with replacing(childAt

Description
I had some SwiftSyntax code that did:
override func visit(_ node: ImportDeclSyntax) -> DeclSyntax {
    guard let importAccessPathSyntax = node.path.first(where: { $0.name.text.contains("Foo") }) {
        return super.visit(node)
    }

    let newToken = importAccessPathSyntax.name.withKind(.stringSegment("Bar"))
    let newPath = node.path.replacing(childAt: importAccessPathSyntax.indexInParent,
                                        with: importAccessPathSyntax.with(\.name, newToken))
    let newNode = node.with(\.path, newPath)
    correctionPositions.append(importAccessPathSyntax.positionAfterSkippingLeadingTrivia)
    return super.visit(newNode)
}

In order to replace imports of Foo with Bar. I was able to do this without affecting any trivia using this approach, but it seems like with recent changes on the release/5.9 branch there is no way to get the equivalent of importAccessPathSyntax.indexInParent anymore. I attempted to use importAccessPathSyntax.keyPathInParent as a replacement here but in this case that results in nil. Should that be the new option? Should replacing(childAt: take SyntaxChildrenIndex now instead of an Int? In the meantime I worked around this case by assuming that 0 was the right index always:
override func visit(_ node: ImportDeclSyntax) -> DeclSyntax {
    guard let importAccessPathSyntax = node.path.first(where: { $0.name.text.contains("Foo") }) {
        return super.visit(node)
    }

    let newToken = importAccessPathSyntax.name.with(\.tokenKind, TokenKind.stringSegment("Bar"))
    let newPath = node.path.replacing(childAt: 0, with: importAccessPathSyntax.with(\.name, newToken))
    let newNode = node.with(\.path, newPath)
    correctionPositions.append(importAccessPathSyntax.positionAfterSkippingLeadingTrivia)
    return super.visit(newNode)
}

Tracked in Apple’s issue tracker as rdar://111591397

You should be able to get the index of the element you want to replace when finding the element that contains “Foo”. This is similar to what you would do in a normal Swift array as well.
override func visit(_ node: ImportDeclSyntax) -> DeclSyntax {
    guard let (index, importAccessPathSyntax) = node.path.enumerated().first(where: { $0.element.name.text.contains("Foo") }) else {
      return super.visit(node)
    }

    let newToken = importAccessPathSyntax.name.with(\.tokenKind, .stringSegment("Bar"))
    let newPath = node.path.replacing(childAt: index, with: importAccessPathSyntax.with(\.name, newToken))
    let newNode = node.with(\.path, newPath)
    correctionPositions.append(importAccessPathSyntax.positionAfterSkippingLeadingTrivia)
    return super.visit(newNode)
}

Thinking about this a little bit more, though, replacing(childAt:with:) probably shouldn’t exist. Instead we should make the subscript on SyntaxCollection writable. I’ll update once I have thought about this a little bit more.

I'm wondering if the issue was completely resolved in #1880?

I still have two small small items on my to-do list to resolve this. I think I should get to them this week. So: no, not quite resolved yet.

Closing this now that we have https://github.com/apple/swift-syntax/pull/1919. I also wanted to do https://github.com/apple/swift-syntax/pull/1921 as part of this but it has SILGen issues on Windows that I need to investigate and it’s not really necessary to resolve this issue.


Can't open crouton

I have installed crouton on this machine before and it worked fine. Its an Acer chromebook powerwashed and in Dev Mode. Now it won't do anything with crouton.
chronos@localhost ~/Downloads $ sh ~/Downloads/crouton -r trusty -t xfce
sh: Can't open /home/chronos/user/Downloads/crouton
chronos@localhost ~/Downloads $
Any ideas?

Problem solved. Crouton located in ~/Downloads/crouton-master/installer/crouton


[HIGH][ESM] Localize System Messages

Following the Localize System Messages section of the Enhance System Messages design doc, make the necessary changes to NewDot to ensure that system messages can be displayed in both English and in Spanish.
CC: @deetergp @dylanexpensify I've moved this issue from E/E here.

Hey, I'm a developer from SWM I'd like to take over this issue

Perfect! Doc has been shared to you for access to the section referenced. 👍

Update for today:

I've prepared a draft PR, but until I get more details regarding the messages I won't be able to both test and apply proper types
Also, there are some things waiting to be resolved - translations and the questions above

I've asked about your questions:

I'm not sure if I understand where ended up in the discussion regarding the delayed reimbursement part, am I supposed to treat this reason as a param, or is it still during verification?

Here
And

I assume that in here it's about this url specifically https://help.expensify.com/articles/expensify-classic/reports/Set-a-random-report-audit-schedule

Here

@BrtqKr: @dylanexpensify went ahead and got the translations for you:
English: changed merchant from [X] to [Y]
Spanish: cambió de comerciante de [X] a [Y]

English: changed amount from [X] to [Y]
Spanish: cantidad cambiada de [X] a [Y]

English: changed X from [Y] to [Z]
Spanish: cambió X de [X] a [Y]

English: sent this report to USER_B, as USER_A is on vacation
Spanish: envié este informe a USER_B, ya que USER_A está de vacaciones

English: exported this report to [CSV/Integration/QuickBooks]
Spanish: exportó este informe a [CSV/Integración/QuickBooks]

English: marked this report as manually exported to $destination
Spanish: marcó este informe como exportado manualmente a $destination

English: removed the receipt
Spanish: quitó el recibo

English: added a receipt
Spanish: agregó un recibo

English: processed the payment but it’s delayed by 1-2 more business days
Spanish: procesó el pago pero se retrasó entre 1 y 2 días hábiles más

English: canceled the payment
Spanish: canceló el pago

English: paid $X.XX elsewhere
Spanish: pagó $X.XX en otro lugar

English: paid $X.XX via integration
Spanish: pagó $X.XX mediante integración

English: randomly selected for review
Spanish: seleccionado al azar para revisión

English: invited user B
Spanish: usuario invitado B

English: removed user B
Spanish: usuario eliminado B

English: paid $X.XX
Spanish: pagado $X.XX

English: took control
Spanish: tomó el control

English: unapproved $X.XX
Spanish: no aprobado $X.XX

English: failed to export this report to NetSuite. [Specific error message]
Spanish: No se pudo exportar este informe a NetSuite. [Specific error message]

English: couldn’t process the payment, as the payer doesn’t have sufficient funds
Spanish: no se pudo procesar el pago porque el pagador no tiene fondos suficientes

English: couldn’t process the payment due to a problem with the payer’s bank account
Spanish: no se pudo procesar el pago debido a un problema con la cuenta bancaria del pagador.

English: couldn’t process the payment, as the payer changed bank accounts
Spanish: no se pudo procesar el pago porque el pagador cambió de cuenta bancaria.

Update for today:
I've applied the translation changes. I'm waiting for the messaging part, so I can apply types, test the whole flow, and pass it to the review. Please let me know when it's available 🙏

Update for today:
Haven't touched this ticket - still waiting for the back-end PR, which is close to being merged and deployed.

The backend PR should be merged sometime today 🤞

Thanks a lot! I'll try to wire this up soon

Answered some questions @BrtqKr had in Slack.

Okay @BrtqKr I think this should give you what you need. If you see a blank array, that means you just need to show the actor's display name. Please let me know if you have any remaining questions:
{
    "ACTION_CHANGE_FIELD": {
        "fieldName": "<string>",
	"oldValue": "<string>",
	"newValue": "<string>"
	},
    "ACTION_CHANGE_POLICY": {
        "fromPolicy": "<string>",
        "toPolicy": "<string>"
    },
    "ACTION_CHANGETYPE": {
        "newType": "<string>"
    },
    "ACTION_DELEGATE_SUBMIT": {
        "automaticAction":"<bool>",
        "delegate":"<string> email",
        "harvesting":"<bool>",
        "harvestingGUID":"<string>",
        "isOnPolicy":"<bool>",
        "lastModified":"<string> datetime",
        "originalManager":"<string> email"
    },
    "ACTION_EXPORTED_TO_CSV": [],
    "ACTION_EXPORTED_TO_INTEGRATION": {
        "label":"<string> integration name",
        "markedManually": "<bool>",
        "automaticAction":"<bool>",
        "reimbursableUrls":[],
        "nonReimbursableUrls":[]
    },
    "ACTION_FORWARDED": {
        "automaticAction": "<string>"
    },
    "ACTION_MANAGER_ATTACH_RECEIPT": {
        "merchant": "<string>"
    },
    "ACTION_MANAGER_DETACH_RECEIPT": {
        "merchant": "<string>"
    },
    "ACTION_REIMBURSEMENT_DELAYED": {
        "automaticAction": "<bool>"
    },
    "ACTION_REIMBURSEMENT_ACH_CANCELED": {
        {"cancellationReason":"<string> consts that symbolize preset reasons"}
    },
    "ACTION_MARKEDREIMBURSED": {
        "isApproved": "<bool>",
        "who": "account of sender"
    },
    "ACTION_MARK_REIMBURSED_FROM_INTEGRATION": {
        "label":"<string>",
        "amount":"<string>",
        "currency":"<string>"
    },
    "ACTION_SELECTED_FOR_RANDOM_AUDIT": [],
    "ACTION_SHARE_REPORT": {
        "message":"<string>",
        "to":"<string>"
    },
    "ACTION_UNSHARE": {
        "lastModified":"<string>",
        "message":"<string>",
        "to":"<string>"
    },
    "ACTION_STRIPE_PAID": [],
    "ACTION_TAKE_CONTROL": {
        "delegate":"<string> email"
    },
    "ACTION_UNAPPROVED": {
        "delegate":"<string> email",
        "lastModified":"<string> datetime"
    }
}

@deetergp

I think the format of this message was identical to the rest change actions, so this is probably missing oldType, right?

    "ACTION_CHANGETYPE": {
        "newType": "<string>"
    },

What is automaticAction in this case? I expected something akin to the rest of the messages containing specific values since the message is approved $XXX.XX.

    "ACTION_FORWARDED": {
        "automaticAction": "<string>"
    },

I'm missing the INTEGRATIONSMESSAGE action with a param, will this be passed as errorMessage?

({errorMessage}: IntegrationsMessageParams) => failed to export this report to NetSuite. ${errorMessage}``

MARKEDREIMBURSED is probably also missing currency and amount

paid $X.XX elsewhere

STRIPEPAID as above

paid $X.XX

UNAPPROVED as above

unapproved $X.XX

@BartoszGrajdek I'll give you some real world example of each of these from the DB.
I don't think oldType is a part of this message.
CHANGETYPE

{"newType":"invoice"}
{"newType":"invoice"}
{"newType":"expense"}
{"lastModified":"2023-06-16 03:26:42.677","newType":"expense"}
{"lastModified":"2024-05-09 16:09:45.019","newType":"expense"}
{"delegate":"user@email.com","newType":"expense"}
{"newType":"expense"}
{"delegate":"user@email.com","lastModified":"2024-03-11 15:52:43.248","newType":"expense"}
{"lastModified":"2023-08-22 14:01:55.092","newType":"expense"}
{"newType":"expense"}

FORWARDED

{"cc":"","hasExternalComment":false,"lastModified":"2024-02-15 00:23:54.166","message":"","to":"user@email.com","workflow":"ADVANCED"}
{"message":"Andy please review, thanks!","to":"user@email.com","cc":"","workflow":"ADVANCED","hasExternalComment":false}
{"cc":"","hasExternalComment":false,"lastModified":"2023-08-17 21:13:47.444","message":"","to":"user@email.com","workflow":"ADVANCED"}
{"cc":"","hasExternalComment":false,"lastModified":"2023-11-13 15:17:18.730","message":"","to":"ruser@email.com","workflow":"ADVANCED"}
{"message":"","to":"user@email.com","cc":"","workflow":"ADVANCED","hasExternalComment":false}
{"cc":"","hasExternalComment":false,"lastModified":"2024-05-08 19:20:14.264","message":"","to":"user@email.com","workflow":"ADVANCED"}
{"cc":"","hasExternalComment":true,"lastModified":"2024-03-29 19:33:10.125","message":"","to":"user@email.com","workflow":"DYNAMIC_EXTERNAL"}
<EMAIL_ADDRESS>is set as the next approver in the policy settings.","to":"user@email.com","cc":"","workflow":"DYNAMIC_EXTERNAL","hasExternalComment":true}
{"cc":"","hasExternalComment":false,"lastModified":"2024-04-16 15:50:16.740","message":"Detail review completed by MB, provide final approval if expenses are appropriate","to":"user@email.com","workflow":"ADVANCED"}
{"message":"","to":"user@email.com","cc":"","workflow":"ADVANCED","hasExternalComment":false}

INTEGRATIONSMESSAGE

{"result":{"code":200,"success":true,"messages":["Error marking NetSuite Expense Report ID 176906 (Expensify ReportID:<PHONE_NUMBER>609444) as paid: We weren't able to create a Bill Payment for this report, because we don't know what value we should set for Department. This is because the Department field is required on the Bill Payment form, but we couldn't see a value for Department either in the expense report in Expensify, or on the employee's record in NetSuite. You'll need to set this field as not required, or provide a value on the report in Expensify or in the employee record in NetSuite."],"action":"Mark as Paid"},"automaticAction":true,"source":"netsuite","label":"NetSuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2024-02-18 00:16:51.997","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 59187 (Expensify ReportID:<PHONE_NUMBER>475635) as paid: We weren't able to create a Bill Payment for this report, probably because we couldn't find the department field on the Bill Payment form. Please enable the department field on the Bill Payment form."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2023-12-13 01:12:21.936","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 9240584 (Expensify ReportID:<PHONE_NUMBER>609086) as paid: Invalid account reference key 229 for subsidiary 2."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2023-09-22 08:23:29.740","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 1399549 (Expensify ReportID: 53545916) as paid: Invalid account reference key 897 for subsidiary 13."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2024-04-20 14:21:51.632","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 47511 (Expensify ReportID: 96158533) as paid: We weren't able to create a Bill Payment for this report, because the payable account is not applicable this type of payment. You will need to make sure that you have set the correct A/P Approval Account via the Advanced section of your NetSuite connection configuration."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2023-11-27 07:59:03.757","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 2040619 (Expensify ReportID: 73293945) as paid: Invalid entity reference key 103156."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2024-05-03 15:10:11.499","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 116545 (Expensify ReportID: 70583154) as paid: We weren't able to create a Bill Payment for this report, because the payable account is not applicable this type of payment. You will need to make sure that you have set the correct A/P Approval Account via the Advanced section of your NetSuite connection configuration."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2024-01-28 01:34:22.210","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 218120 (Expensify ReportID:<PHONE_NUMBER>108838) as paid: Invalid account reference key 1 for subsidiary 10."],"success":true},"source":"netsuite"}
{"automaticAction":true,"label":"NetSuite","lastModified":"2023-06-22 17:24:16.280","result":{"action":"Mark as Paid","code":200,"messages":["Error marking NetSuite Expense Report ID 214531 (Expensify ReportID:<PHONE_NUMBER>527700) as paid: We weren't able to create a Bill Payment for this report, probably because we couldn't find the department field on the Bill Payment form. Please enable the department field on the Bill Payment form."],"success":true},"source":"netsuite"}
{"automaticAction":false,"label":"Intacct","lastModified":"2023-12-11 19:12:48.410","result":{"code":200,"messages":["Sage Intacct appears to be unavailable at this time; please try again later."],"success":true},"source":"intacct"}

MARKEDREIMBURSED

{"message":"Reimbursed- see Nov 15th, 2022 paycheck"}
{"message":""}
{"lastModified":"2023-10-09 15:47:10.595","message":""}
{"delegate":"user@email.com","lastModified":"2023-07-14 11:26:50.528","message":""}
{"message":""}
{"lastModified":"2023-12-06 15:20:28.944","message":"reimbursed manually"}
{"lastModified":"2023-10-24 08:21:41.426","message":""}
{"delegate":"user@email.com","lastModified":"2023-12-12 11:23:15.752","message":""}
{"message":""}
{"lastModified":"2024-03-15 12:01:26.015","message":""}

STRIPEPAID

All empty arrays 🤷
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]

UNAPPROVED

{"delegate":"user@email.com","lastModified":"2023-08-10 15:25:17.006"}
[]
[]
[]
[]
[]
[]
[]
[]
[]

Wrong mention ^ 😅

yeah, that was for @BrtqKr!

Apologies for the ping Bartosz — I was too quick with the tab-completion 😅

Haha, we're moving! ETA on this being ready for review, @BrtqKr?

Just reviewed the draft PR. Final should be out for review soon!

@parasharrajat I just sent a doc share/invite to<EMAIL_ADDRESS>Let me know if that isn't right.

Done!

Coming up!

$500 approved for @parasharrajat


Update README.md

I didn't write the README, but don't think it's a typo. Sane defaults could mean reasonable defaults. I'll update that line to avoid confusion.


Minor edits to formatting and phrasing

This is a docs-only PR, so targeting master.

Awesome, thanks for helping improve the documentation!


SnackBar validation renderer

Crouton is deprecated since android design support library has added Snackbar for same feature.
Therefor better to use Snackbar

Thanks for the contribution @swsachini . Please add the MIT licence on the top of newly created file with your name.


BugFix: Android reading included files error

In the ./locale folder, we have files with roots and filenames.
Like:

./locale/english/sprite.txt: ./sprite/battle_button_fight.ini

And the source code load files by this root:

GMU_LANG_PATH_BASE+LANG+"/"+GMU_LANG_PATH_STRING

which results in ./locale/english/./sprite/battle_button_fight.ini
In Windows, this error can be handled by Windows itself, but will not in Android.
A change to files like ./sprite/battle_button_fight.ini -> sprite/battle_button_fight.ini is fine, you can also change the source code to fix this.
Another to fix is in
./scripts/Lang_Custom/Lang_LoadList.gml:
function Lang_LoadList() {
	Lang_ClearList();

	var STR=Lang_LoadFileToString(GMU_LANG_PATH_BASE+GMU_LANG_PATH_LIST);
	if(STR==""){
		return false;
	}

	var LIST=global._gmu_lang_list;
	var FILE=file_text_open_from_string(STR);
	while(!file_text_eof(FILE)){
		var LANG=file_text_read_string(FILE);
		file_text_readln(FILE);
		if(!Lang_IsExists(LANG)){
-			if(directory_exists(GMU_LANG_PATH_BASE+LANG)){
+			if(true){
				ds_list_add(LIST,LANG);
			}
		}
	}

	file_text_close(FILE);

	return !ds_list_empty(LIST);

}

This is a strange bug that directory_exists does not run properly in Android, which might be a bug from Gamemaker itself.
You may also make a change in  ./scripts/Lang_Custom/Lang_Custom.gml:
I made a change here for safety but has not tested if it is necessary.
- #macro GMU_LANG_PATH_BASE "./locale/"
+ #macro GMU_LANG_PATH_BASE working_directory+"locale/"
#macro GMU_LANG_PATH_LIST "list.txt"
#macro GMU_LANG_PATH_STRING "string.txt"
#macro GMU_LANG_PATH_SPRITE "sprite.txt"

#118 fixed this.


[BUG] :bug: Closed label should be removed when pr is reopened

Current Behaviour
when a pr is closed Closed label is added to that pr
but if it is reopened than closed label is not removed
Expected Behaviour
closed label should be removed and Ready for Review label should be added
Steps To Reproduce

Create a new PR
Close that PR
Reopen that PR

Anything else?

:tada: This issue has been resolved in version 1.7.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Doc: improve performance of using Arcus libs in DevOps pipelines

We've heard multiple comments from people that are using Arcus.Scripting in their DevOps pipelines that they're frustrated by the time it takes to install an Arcus package in their pipeline.
I personally have experienced this myself:  In one of my steps in the pipeline, I want to make use of functionality provided by Arcus, and I execute for instance this command:
Install-Module -Name Arcus.Scripting.KeyVault -Force

This step takes over 5 minutes to execute, which is way too long, and people are being frustrated about that.
I think it takes 5 minutes, because the -Force parameter makes sure that all dependent modules are also being installed.
I suggest that we add some tips regarding this in our documentation.
Instead of using the -Force parameter, we could suggest to use the commands below.  It will drastically increase performance 👍🏻
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
Install-Module -Name Arcus.Scripting.KeyVault -AllowClobber

Aha aha! Yeah, if this combination indeed helps faster installation. Why not? We don't mention the -Force switch, though, in our docs.
This is rather something typical PowerShell, and not per-se Arcus. I image the same would be true for all other PS modules out there. But, yeah, maybe people are only copy-pasting what they see 😅 . This is maybe even something for the academy, on how to work with PowerShell in DevOps.

@spasal , great that you already worked on this! Mind that assignment of issues/work is also important, as someone else could be doing the same thing without anyone dedicated assigned on the issue. If the issue is of your own making and you want to propose something, by all means! But an other issue from someone else, can maybe lead to duplicate work, without knowing of each other. Just a quick ping, and we can assign you 😉 . We wouldn't want to disappoint anyone that their work and time was already done by someone else. Super super much thanks for your effort on Arcus! Very very much appreciated! ❤

I think we can close this issue ?

I'd like to reopen this.
We have already updated our documentation for this, but only the specific documentation on how to install the AzureDevops module contains this information.
You can use other modules in DevOps pipelines as well, so I'd like to have this information more on a 'global' section in the docs.
Why not add a section between 'Welcome' and 'Features' that is called 'Guidelines' , where we put some best practices / advise ?

I'd like to reopen this. We have already updated our documentation for this, but only the specific documentation on how to install the AzureDevops module contains this information. You can use other modules in DevOps pipelines as well, so I'd like to have this information more on a 'global' section in the docs.
Why not add a section between 'Welcome' and 'Features' that is called 'Guidelines' , where we put some best practices / advise ?

Good idea 👍🏻  will pick this up.

Good idea 👍🏻 will pick this up.

Thx @pim-simons! We could rename the /preview/02-Features to /preview/03-Features so that the /preview/02-Guides are above the features in the side bar. A suggestion 😉 .