-IncludedAssemblies is assuming a namespace is an assembly

This also applies to -ExcludedAssemblies.
Need to split the detection of assembly and namespace.
The namespace is used by the folder names in dotnet-api-docs/xml/<folders>.
The assembly is used in the dotnet-api-docs xml files, in the <AssemblyInfo> section.
Some APIs, like those that live in the System namespace, are spread in several different assemblies, so sometimes the tool is unable to detect them properly when the user specifies the actual assembly in the -IncludedAssemblies argument.

Fixed in https://github.com/carlossanlop/DocsPortingTool/pull/19


thoughts on external server component with internal client boundary

https://github.com/hi-ogawa/vite-plugins/pull/384

Also the series of the issues related to client boundary resolution

https://github.com/hi-ogawa/vite-plugins/pull/187
https://github.com/hi-ogawa/vite-plugins/pull/315
https://github.com/hi-ogawa/vite-plugins/pull/316

todo

[ ] is it possible to see the original import source during transform? (though this doesn't really help anything)
[ ] is it possible to force stripping ?v=... certain dependenceis? (assuming they are not cjs and can put it in optimizeDeps.exclude)
[ ] setup artificial packages to demonstrate issue (also test it on Next.js)

[ ] legitimate one (self referential exports)
[ ] shaky-but-works one (like react-tweet)
[ ] broken one
[ ] deep dep

[ ] fully non-externalize deps

vendering? make it free from /node_modules/

[ ] try virtual:normalize-url/... like in https://github.com/hi-ogawa/vite-environment-examples/blob/c08e7e7f697e5b0734940f4111735b4727c78049/examples/react-server/vite.config.ts#L216-L265

Examples
probably impossible to support

package.json

externally only server.js is accesible as a package
"type": "module" or "commonjs" doesn't matter

{
  "name": "xxx",
  "type": "module",
  "exports": "./server.js"
}

server.js

import { SomeClientComponent } from "./client.js"

export function SomeServerComponent() {
  return

Server

    <SomeClientComponent />

}

client.js

"use client"

export function SomeClientComponent() {
  return
client

}

For browser, Vite needs to optimize client.js but is it possible for Vite to reference client.js which is not a public export entry?
Vite-friendly way to write the same package

package.json

{
  "name": "xxx",
  "type": "module",
  "exports": {
     ".": "./server.js",
     "./client": "./client.js" // 👈 expose client
  }
}

server.js

import { SomeClientComponent } from "xxx/client" // 👈 reference via package export even internally

export function SomeServerComponent() {
  return

Server

    <SomeClientComponent />

}

client.js

"use client"

export function SomeClientComponent() {
  return
client

}


restore purchases doesn't work in iOS 10.2.1

restore purchases doesn't work in iOS 10.2.1
it always returns error - restore_failed
I've tried to debug in XCode, the full error message is 'Cannot connect to iTunes Store'
but it worked great with previous ios version (don't remember exactly which one)
it asked for itunes credentials and returned purchases.
in 10.2.1 it stops to ask itunes credentials and always returns this error.

I have issue with restore too, I'm getting this error message in xcode
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]' *** First throw call stack: (0x1c46de07 0x1b6d3077 0x1c381e09 0x1c381c73 0x61b113 0x1c376a85 0x277c8dc9 0x277c8841 0xceed67 0xceed53 0xcf35f1 0x1c429a17 0x1c427cff 0x1c377073 0x1c376e81 0x1db1fbfd 0x2151dccf 0x21518401 0x102bc7 0x1bb4250b) libc++abi.dylib: terminating with uncaught exception of type NSException
I'm using iPhone 5s 10.0.1(14A403)

Cannot connect to iTunes Store could be temporary error?
Can you confirm restoring purchase on device with ios <10.2 works at the same time when it fails on device with ios >10.2.

I can confirm that, it worked for me today (unfortunately I forgot to check ios version).
When I've got complains from customers I decided to update ios version (10.2.1). After that it stops working.
I just checked it on 10.2, it doesn't work either.

I'm having this same problem

I also have the same issue  as @juancabraal  too, I'm getting this error message in xcode
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]'
*** First throw call stack:
(0x18db511b8 0x18c58855c 0x18da34eac 0x18da34d1c 0x100137d2c 0x18da29c18 0x19a7ff66c 0x19a7fef60 0x100421258 0x100421218 0x100426280 0x18dafe810 0x18dafc3fc 0x18da2a2b8 0x18f4de198 0x193a717fc 0x193a6c534 0x10007e49c 0x18ca0d5b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
I'm using iPhone 6 10.2.1(14D27)

Can you put a breakpoint in Xcode and see if originaltransaction is nil?

@kawashimaken can you try with this PR: https://github.com/chirag04/react-native-in-app-utils/pull/78

@chirag04
Thank you for your fast response!
I manually copied your updated file (InAppUtils/InAppUtils.m), after fixed two [:] into [;] in line 131,132 which was suggested by xcode complier, the reported error are gone, and It seems It retrieved all the data it supposed to. I haven't have a thorough check to confirm everything is working at all level, however I just want to let you know that the fix looks good. 👍
By the way, this may be out of the scope of this library, If I may please allow me to ask
in the following block
response.forEach( function(purchase) {
        if (purchase.productIdentifier == "my_app_id") {
          // Handle purchased product.
        }
      });

I can retrieve all the purchased product, the next thing I should do is to find the latest one and use its transactionReceipt to validate it, then I know if the user can continue using the app or not, am I right? (Since I am using automatic monthly purchase in my app)

Ok. published a new version on npm with the fix.
about the check, you can keep that check in your apps javascript code.


Questions about recording the time for each generation of GA

Hi,
Thanks for the good work!
I have a question for recording the time for each generation.
I used something like:
res = minimize(problem,
algorithm,
('n_gen', 60),
seed=1,
verbose=True,
save_history=True)
Then I used res.history[0].start_time. However the start time for each generation are the same, I guess it is the setup time not the actual strart running time.
Is there any way to record the running (execution) time for each generation (iteration) of genetic algorithm?
Thanks.
Rongqi

Checkout the Callback feature: https://pymoo.org/interface/callback.html
This should be exactly what you are searching for.


Images not showing in Flutter web

I have an async method that returns a list of jpg images loaded using the Image.network() constructor. Then I use a responsive_grid_list to render all the images. Everything was working fine when the total number of images was around 80, but when the number increased to 118 images, the problem started. The problem is that some of the images aren't displayed instead what's displayed is "Image Codec Exception: Failed to decode image data". What's even stranger is that the error images change randomly every time I reload the page. I checked the network activity and saw that a request has been sent to each image and a status code of 200 was received.
I tried to paginate the 118 images such that each page displays 20 images at a time. And what happened is even stranger, the first 4 pages out of the 6 loaded all the images correctly, but the fifth page displays only two images and the sixth page doesn't display anything. Note that the first 4 pages loaded don't have to be in order such that I can load page: 6, 2, 4, 1 and they will work, but pages 3 and 5 won't.
I hope someone can help.

Hi @lashinso
Can you please provide your flutter doctor -v and a minimal complete reproducible code sample with no third party plugins included in the code sample?
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Automated cherry pick of #2234: fix: no need to inject password by cloud-init for qcloud

Cherry pick of #2234 on release/2.8.0.
#2234: fix: no need to inject password by cloud-init for qcloud

/lgtm

/approve


UploadSet does not report error in case of upload fail

OpenUI5 version: 1.94.0
Browser/version (+device/version): Chrome 93.0.4577.63
Any other tested browsers/devices(OK/FAIL):
URL (minimal example if possible):
https://ui5.sap.com/1.94.0/#/entity/sap.m.upload.UploadSet/sample/sap.m.sample.UploadSetCustomUploader
User/password (if required and possible - do not post any confidential information here):
Steps to reproduce the problem:

Use UploadSet to upload file to any wrong url

What is the expected result?
Some sort of error status in completed event.
What happens instead?
Item status status states upload complete even when upload failed.
Any other information? (attach screenshot if possible)

Hello @vsingh-mscg,
Thank you for sharing this finding. I've created an internal incident<PHONE_NUMBER>. The status of the issue will be updated here in GitHub.
Regards,
Patric

Hello,
This feature is not supported by the UploadSet as of now.
UI5-SC Product team will evaluate and take further action in future development plans.
Regards,
Amiya Ranjan

So how to determine if the upload was a success or failure?

Hello,
We have added this feature in the latest release.
Now the uploadCompleted event will have parameters returning the backend response, status and more.
It's available from 1.98
https://sapui5.hana.ondemand.com/#/api/sap.m.upload.UploadSet%23events/uploadCompleted
Regards,
Amiya Ranjan
SAP UI5-SC

So your suggestion is not to use this control in 1.71 as there is no supported way of figuring out if a upload is error/success?

Hi @krisho007
The lower versions don't support this feature and as it is a new feature it cannot be downported to earlier versions.
However if using an oData service you can use the events of oDataModel to get the backend error/success response.
Regards,
Amiya Ranjan
SAP UI5-SC


feat: dashboard metrics

When a member logs into the app, we want to show them the key information that is relevant to them this includes:

Events currently registered
Games previously played
Current grade
History of grading progress

Here is a sample mock up:


[Existing API Name] : QR Code Generator API/Random Image Generator API

Brief Description 🤓
QR Code Generator API

QR code generator API is used to create QR code for any given URL.
QR Code is very efficient way of sharing various types of data among various users without sharing url with them. OQ Code makes
it simpler by providing the functionality of simply scanning and accessing.

Random Image Generator API

This API is used to generate random images referenced from unsplash.
User can generate random HD quality images and can use them as wallpaper.

Provide reference!
Referenced from API Ninja: QR Code Generator
https://api-ninjas.com/api/historicalevents
Referenced from unsplash: Random Image Generator
https://unsplash.com/developers
Select the open source program you are contributing to
hacktoberfest-23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINES of this project.

Greetings @dhruvishavaghani🎀 ! , We are excited to have you dive into another issue with us!🚀
Your involvement in our project has been invaluable, and we're confident that your skills and insights will help us conquer this challenge😇.  Use command /gdsc to self assign the issue.  This issue represents an exciting opportunity for us to improve and enhance our project, and we are thrilled to have you on board.
We request you to follow CONTRIBUTING GUIDELINES.
Looking for your PR soon!
In case of any issues, you can contact us on Discord.❣

/gdsc

/gdsc

Hey @harshjais369, The issue is already assigned and couldn't be assigned to you again.You can work on some other issue or create your own issue.🚀💗

Any updates @dhruvishavaghani?

Hey @dhruvishavaghani ! I wanted to inform you that we have closed issue.Thank you for your understanding, and we look forward to your continued engagement with our repository🤗.
In case of any issues, you can contact us on Discord.
Thank you! ❣
Happy Coding! ✨
Will See you soon❣


[NODE] feat: added error handlers

Type of change

[ ] Documentation change
[ ] Bug fix
[x] Feature

Summary of change

Added error handling to existing endpoints.
Checklist

[x] These changes follow the contributing guidelines
[x] This starter kit has been approved by the maintainers
[x] Changes for this new starter kit are being pushed to an integration branch instead of main
[x] All dependencies are version locked
[x] This fix resolves #549
[x] I have verified the fix works and introduces no further errors

LGTM with the changes


[FR] Request feature  to hide back button

Hi,
Request a mode to hide the back button when subview: true is set in view.
I made my own menu and I don't want to hide the menu bar, but I do want to hide the back button.
Can you implement this feature please?
Thank you.

Hi @dhoeben,
That falls out of the scope of this plugin which is not intended to hide random elements but those elements that are critical to avoid unauthorized users to interact with them in a kiosk-device.
But I‘ll see if it is posible to achieve what you are searching with alternative solutions. If I find a wauy to do it I‘ll add it to kiosk-mode complements.

Hi @elchininet ,
thanks for the quick reply. I actually want to hide it for unauthorized users. That’s why I created my own menu, which navigates between two subviews. Unfortunately even if you open the subview via link, the back button still brings them back to the main part (not allowed).
thansk anyhow! I will keep an eye out for the complements!
cheers

Hi @dhoeben,
That is something specific of your set up, if you don‘t want users to return to a view that they should not access you should create the subview from a view that they have access in the first place. Kiosk mode is not inetended to solve specific use cases, for specific use cases you should use generic and flexible approaches.
I have added a solution for your use case to the kiosk mode complements, you achieve what you are searrching in that way.
Regards


Fixed cors for preflight error on Safari

Kept the formatting the same this time! @ryanvanderpol

Sorry about this I'm having a hard time fixing the formatting. Going to create one more PR now


Make control flow cleaer to fix unguarded-action-lib alert

This should hopefully fix https://github.com/github/codeql-action/security/code-scanning/805 by making the control flow clearer so that our custom unguarded-action-lib.ql query can correctly determine which code is only run on actions.
Merge / deployment checklist

[ ] Confirm this change is backwards compatible with existing workflows.
[ ] Confirm the readme has been updated if necessary.

Looks like it works: https://github.com/github/codeql-action/pull/422/checks?check_run_id=2121292372


rootPath should be a path not URI

What is the correct way to path format for windows? Seems like backslash and colon confuses go-langserver.
langserver-go: reading on stdin, writing on stdout
--> request #1: initialize: {"capabilities":{},"rootPath":"file:///C:/Users/prshrest/go/src/github.com/prabirshrestha/del256"}
<-- result #1: initialize: {"capabilities":{"textDocumentSync":1,"hoverProvider":true,"definitionProvider":true,"referencesProvider":true,"documentSymbolProvider":true,"workspaceSymbolProvider":true}}
--> request #2: textDocument/definition: {"textDocument":{"uri":"file:///C:/Users/prshrest/go/src/github.com/prabirshrestha/del256/del256.go"},"position":{"character":32,"line":13}}
panic serving textDocument/definition: bad uri "file:///C:/Users/prshrest/go/src/github.com/prabirshrestha/del256/del256.go" (path "/C:/Users/prshrest/go/src/github.com/prabirshrestha/del256/del256.go" MUST NOT contain ':')
goroutine 7 [running]:
github.com/sourcegraph/go-langserver/langserver.(*LangHandler).Handle.func1(0xc04202be08, 0xc04203de30)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/handler.go:99 +0x12f
panic(0x7dffc0, 0xc0420da900)
	C:/Go/src/runtime/panic.go:458 +0x251
github.com/sourcegraph/go-langserver/langserver.(*HandlerShared).FilePath(0xc042008d40, 0xc0420f20f0, 0x4b, 0xa37c60, 0xc0420e8f90)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/fs.go:83 +0x403
github.com/sourcegraph/go-langserver/langserver.(*LangHandler).typecheck(0xc0420d1420, 0xa37c60, 0xc0420e8f90, 0xa31ee0, 0xc0420d1490, 0xc0420f20f0, 0x4b, 0xd, 0x20, 0x0, ...)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/loader.go:33 +0x41a
github.com/sourcegraph/go-langserver/langserver.(*LangHandler).handleDefinition(0xc0420d1420, 0xa37c60, 0xc0420e8c60, 0xa31ee0, 0xc0420d1490, 0xc04203de30, 0xc0420f20f0, 0x4b, 0xd, 0x20, ...)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/definition.go:13 +0xaf
github.com/sourcegraph/go-langserver/langserver.(*LangHandler).Handle(0xc0420d1420, 0xa37c60, 0xc0420e8c60, 0xa31ee0, 0xc0420d1490, 0xc04203de30, 0x0, 0x0, 0xa31d60, 0xc0420da910)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/handler.go:193 +0x1d7b
github.com/sourcegraph/go-langserver/langserver.(*LangHandler).handle(0xc0420d1420, 0xa37be0, 0xc04200c2b0, 0xc0420d1490, 0xc04203de30, 0x0, 0x0, 0x0, 0x0)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/handler.go:84 +0x6d
github.com/sourcegraph/go-langserver/langserver.(*LangHandler).(github.com/sourcegraph/go-langserver/langserver.handle)-fm(0xa37be0, 0xc04200c2b0, 0xc0420d1490, 0xc04203de30, 0x0, 0x0, 0x0, 0x0)
	c:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/handler.go:25 +0x59
github.com/sourcegraph/jsonrpc2.HandlerWithError.Handle(0xc04200d8e0, 0xa37be0, 0xc04200c2b0, 0xc0420d1490, 0xc04203de30)
	c:/Users/prshrest/go/src/github.com/sourcegraph/jsonrpc2/handler_with_error.go:15 +0x76
created by github.com/sourcegraph/jsonrpc2.(*Conn).readMessages
	c:/Users/prshrest/go/src/github.com/sourcegraph/jsonrpc2/jsonrpc2.go:421 +0x4ed
<-- error #2: textDocument/definition: {"code":0,"message":"unexpected panic: bad uri \"file:///C:/Users/prshrest/go/src/github.com/prabirshrestha/del256/del256.go\" (path \"/C:/Users/prshrest/go/src/github.com/prabirshrestha/del256/del256.go\" MUST NOT contain ':')","data":null}

This seems to be the upstream bug in Go, not sure if it is solved. https://github.com/golang/go/issues/6027
I'm very unfamiliar with windows, but will take a look into this since the stack trace makes it look easy to write a unit test for.

Hey sorry for not updating. So we are not spec complaint here, we are expecting a URI for the path, but in this instance it should just be a filepath. I'll update. Related issue https://github.com/Microsoft/language-server-protocol/issues/113

Once https://github.com/sourcegraph/go-langserver/pull/71 and https://github.com/sourcegraph/go-langserver/pull/73 land, this should work on windows. However, I do not have a windows machine handy to test, so will appreciate confirmation at that time.

@keegancsmith thanks for taking your time to look into this issue.
If you do have a temp branch that contains both the PR fix I can try it on my windows machine to verify if it works or not.

@prabirshrestha master should contain both fixes now.

Seems better but here is log.
langserver-go: reading on stdin, writing on stdout
--> request #1: initialize: {"rootUri":"file:///C:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver","capabilities":{},"rootPath":"file:///C:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver"}
<-- result #1: initialize: {"capabilities":{"textDocumentSync":1,"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"referencesProvider":true,"documentSymbolProvider":true,"workspaceSymbolProvider":true,"xworkspaceReferencesProvider":true,"xdefinitionProvider":true}}
--> request #2: textDocument/didOpen: {"textDocument":{"uri":"file:///C:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/ast.go","version":1,"languageId":"typescript","text":"package langserver\n\nimport (\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/token\"\n\n\t\"github.com/sourcegraph/go-langserver/pkg/lsp\"\n)\n\nfunc offsetForPosition(contents []byte, p lsp.Position) (offset int, valid bool, whyInvalid string) {\n\tline := 0\n\tcol := 0\n\t// TODO(sqs): count chars, not bytes, per LSP. does that mean we\n\t// need to maintain 2 separate counters since we still need to\n\t// return the offset as bytes?\n\tfor _, b := range contents {\n\t\tif line == p.Line \u0026\u0026 col == p.Character {\n\t\t\treturn offset, true, \"\"\n\t\t}\n\t\tif (line == p.Line \u0026\u0026 col \u003e p.Character) || line \u003e p.Line {\n\t\t\treturn 0, false, fmt.Sprintf(\"character %d is beyond line %d boundary\", p.Character, p.Line)\n\t\t}\n\t\toffset++\n\t\tif b == '\\n' {\n\t\t\tline++\n\t\t\tcol = 0\n\t\t} else {\n\t\t\tcol++\n\t\t}\n\t}\n\tif line == 0 {\n\t\treturn 0, false, fmt.Sprintf(\"character %d is beyond first line boundary\", p.Character)\n\t}\n\treturn 0, false, fmt.Sprintf(\"file only has %d lines\", line+1)\n}\n\nfunc rangeForNode(fset *token.FileSet, node ast.Node) lsp.Range {\n\tstart := fset.Position(node.Pos())\n\tend := fset.Position(node.End()) // node.End is exclusive, but we want inclusive\n\treturn lsp.Range{\n\t\tStart: lsp.Position{Line: start.Line - 1, Character: start.Column - 1},\n\t\tEnd:   lsp.Position{Line: end.Line - 1, Character: end.Column - 1},\n\t}\n}\n\ntype fakeNode struct{ p, e token.Pos }\n\nfunc (n fakeNode) Pos() token.Pos { return n.p }\nfunc (n fakeNode) End() token.Pos { return n.e }\n\nfunc goRangesToLSPLocations(fset *token.FileSet, nodes []*ast.Ident) []lsp.Location {\n\tlocs := make([]lsp.Location, len(nodes))\n\tfor i, node := range nodes {\n\t\tlocs[i] = goRangeToLSPLocation(fset, node.Pos(), node.End())\n\t}\n\treturn locs\n}\n\nfunc goRangeToLSPLocation(fset *token.FileSet, pos token.Pos, end token.Pos) lsp.Location {\n\treturn lsp.Location{\n\t\tURI:   \"file://\" + fset.Position(pos).Filename,\n\t\tRange: rangeForNode(fset, fakeNode{p: pos, e: end}),\n\t}\n\n}"}}
<-- result #2: textDocument/didOpen: {}
--> request #3: textDocument/documentSymbol: {"textDocument":{"uri":"file:///C:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/ast.go"}}
<-- result #3: textDocument/documentSymbol: []
--> request #4: textDocument/definition: {"textDocument":{"uri":"file:///C:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver/ast.go"},"position":{"character":30,"line":20}}
<-- error #4: textDocument/definition: {"code":0,"message":"import \"/C:/Users/prshrest/go/src/github.com/sourcegraph/go-langserver/langserver\": cannot import absolute path","data":null}

I get empty for textDocument/documentSymbol and error when using textDocument/definition.

Ok great, thanks for the logs. I should be able to follow up with that. I also have some experimental support to use AppVeyor to get some Windows CI :) Expect windows to be a bit more first class soon.

@prabirshrestha we will have proper windows support soon, @alexsaveliev has a working branch at https://github.com/sourcegraph/go-langserver/pull/86 which you may want to try out.

The original rootPath issue has been fixed. Filed https://github.com/sourcegraph/go-langserver/issues/113 to track progress on supporting windows.


Fix crash on "Hook" from a CallStackDataView

The problem was that CallStackDataView is a subclass of FunctionsDataView
and CallStackDataView::GetFunction returned a "dummy" Function (e.g, with
pdb_ == nullptr) when the row selected corresponds to an unknown function.
Calling Function::Select on such dummy Function would cause segmentation
fault.
Let's return a nullptr instead of a dummy so that we can check for it even in
FunctionsDataView.
Let's have a different function to return a dummy when necessary.
Bug: b/153149392
Note that for a better fix we would probably want a CallStackDataView that
is not a subclass of FunctionsDataView, so that we can have a behavior
independent from FunctionsDataView, include some feature like context menu
action "Load Symbols" from SamplingReportDataView. But let's fix this first.

I added a commit to also fix filtering a CallStackDataView.


[SPARK-39951][SQL] Update Parquet V2 columnar check for nested fields

Spark-context

3.4: https://github.com/apache/spark/commit/b9bc3c7919
3.3: https://github.com/apache/spark/commit/a0242eabae

What changes were proposed in SPARK pull request?
Update the supportsColumnarReads check for Parquet V2 to take into account support for nested fields.
Why are the changes needed in Spark?
Match Parquet V1 in returning columnar batches if nested field vectorization is enabled:
PARQUET_VECTORIZED_READER_NESTED_COLUMN_ENABLED
Does this PR introduce any user-facing change?
Parquet V2 scans will return columnar batches with nested fields if the config is enabled.
private val supportsColumnar = enableVectorizedReader && sqlConf.wholeStageEnabled &&
    !WholeStageCodegenExec.isTooManyFields(sqlConf, resultSchema)

Why it might affect RAPIDS?
Changes are done in the parquetFileFormat and partitionReader.
Scanning the parquet will have supportsColumnar equal to true with nested types.
The new flag spark.sql.parquet.enableNestedColumnVectorizedReader is set to true by default.
It requires spark.sql.parquet.enableVectorizedReader which is set to true by default.
Impact on Testing?
Yes
Requires Doc update?
Yes

Likely just a performance improvement in areas of the code we do not use.


Add more runtime dependencies

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Please explain the need for this. Typically, if these are essential then the package should change its DESCRIPTION upstream and release a new version.

Ok then we will do it upstream already and pull this in here 👍 we used the package with Conda and found some dependencies have not been included yet.

@neslihanky / @smlms / @kabrrrp - we need to fix this in the R package, pull from there and update conda recipe following that 👍🏻


Brand new to any of this, moving from yt-dl for faster speeds

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2023.01.06 (update instructions) or later (specify commit)
[X] I've searched the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
So I do not know how to use this yt-dlp thing and I follow the instructions for installing, but winget isn't on my pc even though the microsoft store says the app installer is already on my pc.  When i try to open winget, it just opens and immediately closes.  Help plz
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
No response

Download https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe

Install ffmpeg (Optional, but recommended):

Download https://github.com/yt-dlp/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip
Extract the files and find ffmpeg.exe and ffprobe.exe inside the bin folder
Copy those two files to the same folder as yt-dlp.exe

Download a video:

Open windows explorer to the folder where you downloaded yt-dlp.exe
In the address bar of the the folder that yt-dlp.exe is in, type cmd and press enter
Then in the terminal window that opens, type yt-dlp "URL", replacing URL with the actual link you want to download.
Wait for your video to finish downloading :smile:

Skim through the documentation https://github.com/yt-dlp/yt-dlp#readme to learn about more features

Make sure to do this before asking further questions. It's not expected that you to read and understand the whole thing, but skim through it so you have a rough idea what kinds of options are available.

[OPTIONAL] Add the yt-dlp folder to PATH https://www.java.com/en/download/help/path.html


Remove spacing form components

Please remove spacing from the outside of components, this will allow easier positioning in layouts for teams.

Fixed in PR #56


Improve formula examples in the readme

Improve the formula examples in the readme
Changes

Formula examples are now much more detailed

Testing
Take a look at the readme and see if the examples are informative.
Review

@mistergone

Todos

Copy the changes in the readme to the gh-pages page

:+1:


Top up data fetching refactor

Merge requested: fix-top-up-one-deposit <- fix-top-up-one-deposit-refactor
Following up on @hwwhww's PR #592, realized we could do a fair amount to clean up the fetching logic being performed on this component. Given I overhauled this function, figured I would post as a separate PR instead of as a suggestion on #592, or just committing directly to that branch.

Switches to async/await syntax
Uses new URL() objects to build dependable URL link
Uses try/catch/finally block with guard clauses for error handling

These changes help remove the function chaining and nesting of code, and should improve readability and reliability.
Additionally, this cleans up the expected return values for the data we're fetching.

The first call is fetching all pubKeys for a given eth1 address, and always returns type BeaconChainValidatorEth1Deposit[] (an array)
The second call fetches validator details by pub key... if only one pub key is provided, an object is returned, but if a comma-separated list of pub keys is passed, the response is an array... thus its type would be BeaconChainValidator | BeaconChainValidator[]

Thanks for the review @hwwhww! This PR was against your #592 PR, so given your approval here I'll go ahead and merge that to your branch to close this out.


Possible type inference regression (from v3.2.4 onwards)

TypeScript Version:  3.4.0-dev.201xxxxx

Search Terms: type inference regression
Code
export function f<A>() {
  let a:undefined extends A | undefined ? A | undefined : undefined = undefined;
  return a;
}

Expected behavior: No type error. TypeScript compiler version 3.2.2 gives no error.
Actual behavior:
Starting version 3.2.4 TypeScript compiler gives the following type error:
$ tsc --strict error.ts
error.ts:2:7 - error TS2322: Type 'undefined' is not assignable to type 'undefined extends A | undefined ? A | undefined : undefined'.

2   let a:undefined extends A | undefined ? A | undefined : undefined = undefined;

Playground Link:  could not reproduce in TypeScript Playground.
Related Issues:

Looks related to #29662

Looks to be fixed in 4.3.
export function f<A>() {
    let a: undefined extends A | undefined ? A | undefined : undefined = undefined;
    return a;
}


fix(admin): succeed to /varlog.vmspb.ClusterManager/UpdateLogStream when already updated

What this PR does
This patch makes the RPC /varlog.vmspb.ClusterManager/UpdateLogStream succeed
when the replicas are already updated.
Which issue(s) this PR resolves
Resolves #126
Anything else

This change is

Codecov Report

Merging #137 (3c451a1) into main (43aeecb) will decrease coverage by 0.04%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main     #137      +/-   ##
==========================================
- Coverage   62.76%   62.71%   -0.05%
==========================================
  Files         125      125
  Lines       16880    16880
==========================================
- Hits        10594    10586       -8
- Misses       5739     5742       +3
- Partials      547      552       +5

Impacted Files
Coverage Δ

internal/admin/admin.go
61.61% <0.00%> (+1.29%)
:arrow_up:

pkg/mrc/mrconnector/mr_connector.go
73.28% <0.00%> (-2.68%)
:arrow_down:

...metarepos/dummy_storagenode_client_factory_impl.go
62.50% <0.00%> (-1.39%)
:arrow_down:

internal/storagenode/replication_server.go
76.00% <0.00%> (-1.00%)
:arrow_down:

internal/metarepos/storage.go
80.10% <0.00%> (-0.63%)
:arrow_down:

internal/metarepos/raft_metadata_repository.go
71.66% <0.00%> (-0.27%)
:arrow_down:

internal/metarepos/raft.go
80.13% <0.00%> (+0.13%)
:arrow_up:

internal/metarepos/report_collector.go
77.59% <0.00%> (+0.40%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


https://github.com/run-llama/rags/issues/7#issue-2005861281

https://github.com/run-llama/rags/issues/7#issuecomment-1823001346

https://github.com/run-llama/rags/issues/7#issuecomment-1823001346


Allow using all 4 speeds with the HomeSeer HS-FC200+ fan controller

Description:
The HomeSeer HS-FC200+ fan controller supports 4 speeds, but the current implementation of the ZWave fan component only allows you to choose 3 of them.
This PR updates the fan component to detect if the device is an FC200+, and if it is, treat it as a 4-speed fan controller with the speeds [off, low, medium-low, medium, high.  Other fan controllers are assumed to be 3-speed only.
Caveat:
The FC200+ can actually be configured in 3-speed mode and 4-speed mode.  I've been working on detecting the device configuration setting during initialization, but I haven't gotten that reliably working (see https://community.home-assistant.io/t/questions-about-updating-the-z-wave-fan-component-for-4-speed-support/80718/2).  I figured that this PR is still a step forward, because users with 3-speed fans on FC200+ controllers will still be able to hit all 3 speeds, they'll just have an extra redundant speed in the middle  (speeds "medium-low" and "medium" will be equivalent), while everything will work perfect for users with FC200+ devices in 4-speed mode.
Checklist:

[X] The code change is tested and works locally.
[X] Local tests pass with tox. Your PR cannot be merged unless tests pass
[X] There is no commented out code in this PR.

Hi @mkowalchuk,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!

This will likely break the 4 speed fans in Google assistant.
Is that because it drops the low/medium/high names?  Would using names like low/medium/medium-high/high be better for compatibility?

The trait code uses the 4 constants and only those four constants. (Off, low, medium, high) those constants will need to exist otherwise these fans will not work. I don't think there is any desire to handle extra speeds in that integration at this time either.

The trait code uses the 4 constants and only those four constants. (Off, low, medium, high) those constants will need to exist otherwise these fans will not work. I don't think there is any desire to handle extra speeds in that integration at this time either.

What do you recommend here?
There are other fan devices that don't use low/medium/high, like the Dyson Cool Link (components/fan/dyson.py).  I assume those fans don't work with Google Assistant at all, because they don't use those traits.
For this PR, what if we used [off, low, medium-low, medium, high] for the speed list, with off/low/medium/high being the standard traits, and medium-low being a new one?  Would the Google Assistant integration at least tolerate that, even if it couldn't hit the medium-low speed?

For this PR, what if we used [off, low, medium-low, medium, high] for the speed list, with off/low/medium/high being the standard traits, and medium-low being a new one? Would the Google Assistant integration at least tolerate that, even if it couldn't hit the medium-low speed?

As long as the off/low/medium/high exist, GA will behave. You can set that intermediate speed to whatever you want/whatever makes the most sense.
As for dyson, looks like that one won't work at all based on the supported features and the fact that they don't send any of the magic values.

This PR has gone stale.  Please update the code and open a new PR if you wish to continue with this contribution.


Correct virtio parameter default value

A small correction to my last pull request. Digital Ocean's web interface defaults to virtio be checked. I think it makes more sense for the virtio parameter in dopy to also default to True. This way you get the same behavior whether using dopy or creating the server manually with the web interface.

Added.


Create "CLI Test Suite"

Description
For the CLI, there needs to be a Test Suite, which should cover all CLI-related integration tests. We need to come up with a test setup / framework, which can easily be enhanced with all CLI-Tests that are needed in the future.
Done Criteria

[x] Concept for a "Framework" for a CLI Test Suite discussed and agreed
[x] "Framework" implemented and set-up as per the concept
[x] Code has been reviewed by other team members
[x] Internal technical Documentation created for the framework
[x] Successful demonstration in Review

Successful demo in review, initial version of CLI Test Suite up and running. New Tests can easily be added.
=> Closing this issue.


www.rsi.ch doesn't work, but www.srf.ch does

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like that [x])
Use Preview tab to see how your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2016.12.01. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[ x] I've verified and I assure that I'm running youtube-dl 2016.12.01

Before submitting an issue make sure you have:

[x ] At least skimmed through README and most notably FAQ and BUGS sections
[x ] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x ] Bug report (encountered problems with youtube-dl)

I tried downloading:
http://www.rsi.ch/play/tv/video-intrattenimento-rsi/video/lampi-di-futuro?id=8337244
I also tried test download from www.srf.ch and it works.

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
youtube-dl http://www.rsi.ch/play/tv/video-intrattenimento-rsi/video/lampi-di-futuro?id=8337244 -v
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'http://www.rsi.ch/play/tv/video-intrattenimento-rsi/video/lampi-di-futuro?id=8337244', u'-v']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.12.01
[debug] Python version 2.7.10 - Darwin-14.5.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
[SRGSSR] 8337244: Downloading JSON metadata
[SRGSSR] 8337244: Downloading f4m manifest
WARNING: Unable to download f4m manifest: HTTP Error 403: Forbidden
[SRGSSR] 8337244: Downloading f4m manifest
WARNING: Unable to download f4m manifest: HTTP Error 403: Forbidden
[SRGSSR] 8337244: Downloading m3u8 information
WARNING: Failed to download m3u8 information: HTTP Error 403: Forbidden
[SRGSSR] 8337244: Downloading m3u8 information
WARNING: Failed to download m3u8 information: HTTP Error 403: Forbidden
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 694, in extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 357, in extract
    return self._real_extract(url)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/srgssr.py", line 79, in _real_extract
    self._sort_formats(formats)
  File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 924, in _sort_formats
    raise ExtractorError('No video formats found')
ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
...
<end of log>

La pagina non è stata trovata.
Forse l'indirizzo internet utilizzato non è più disponibile. Puoi cercare il contenuto desiderato tramite la navigazione principale, la ricerca o la pagina iniziale.


cannot search case insensitive with full length word

Please select the area your bug applies to. (Multiple selections are Possible. You can leave blank if you're not sure.)

[x] Workspace.  VSCode workspace, vaults, Intellisense/autocomplete, Dendron settings
[ ] Lookup.  Dendron's Lookup Command
[ ] Views.  Dendron Preview, Tree View, Side Panels in the UI
[ ] Schema.  Dendron Schemas
[ ] Pod.  Data import from / export to Dendron
[ ] Publish.  External Site Publish
[ ] Markdown.  Markdown features, such as syntax support and features

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

there is a note Interview.md
use ctrl + l to look up notes
type interview
Interview won't show up

Expected behavior
A clear and concise description of what you expected to happen.

Interview show up

Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information)

OS: [e.g. iOS]
Browser: [e.g. chrome, safari]
Version: [e.g. 22]

Additional context
Add any other context about the problem here.
Dendron Log file
Please attach the output of > Dev:Dendron: Open Logs here

Thank you for the report. We'll track this and let you know when we come up with a solution.
pinging @nickolay-kondratyev for fuse related UX issue.

Hi, @Ding-Fan,
The lookup seems to work with case-insensitive input now in the latest version of Dendron:

Could you please check if you still having this problem? Thank you!

it works well, thanks :+1:


miya1259 -> ogam1239

miya1259 is a language group, whereas Ogami (Miyako) is the coded variety.

see #11


Thank you

Hi,
Couldn't find another way to get in contact, but just wanted to say thank you for this - it's such a lifesaver :)
Adam

You are welcome,
I am glad you found this javascript useful
Have a nice day
Simone


Changed 16bit memory access oeder to follow actual CPU behavior.

LD/ST and PSHx/PULx instruction behavior change. Eventually, the result is identical but storing/loading order is different. This change may have benefits in case of some corner case problems.

Took it!  Thanks!


Run single Travis CI job

Free 2x build speed-up :)

Sweet!

dope! @zdfs will you merge this if it looks ok to you? You have done most of our Travis setup.


New version publish

After I committed 2 days ago, will you publish the new package (and therefore update package.json)?

Closed by a8e4d17236c5c271e3c8bf654ee64e6f71f5e995


Profiles

This is an implementation of profiles extension mechanism for PSA tokens. This pull also removes CCA claims; they are now implemented as a profile inside ccatoken.

@setrofim Thanks for addressing my comments!


Add entryApplicationInstanceID field for service topological

Coverage increased (+0.03%) to 17.739% when pulling 81f73fb5e8bf22431318298132211fcdcb7d5ee0 on ascrutae:zhangxin/feature/entry-application-instanceID into 42e53aad88629c0e1177133183aa7c84703bcdf2 on wu-sheng:master.

Coverage increased (+0.05%) to 17.734% when pulling 7fd8b74b3553b8489eca95b9906479f44b8ecfd3 on ascrutae:zhangxin/feature/entry-application-instanceID into 9559c75c580ac180102001fe9599b09795a9c62e on wu-sheng:master.

Coverage increased (+0.05%) to 17.734% when pulling 7fd8b74b3553b8489eca95b9906479f44b8ecfd3 on ascrutae:zhangxin/feature/entry-application-instanceID into 9559c75c580ac180102001fe9599b09795a9c62e on wu-sheng:master.

Coverage increased (+0.05%) to 17.97% when pulling ae81c4fc36648d44cfebbd6f859aaf8287b8d191 on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.98% when pulling 9a8c45a30007e2da56eeed6b7a830d8a58d866a7 on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling 92f7873db33d7b014fd5d805f47975871b137b44 on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling cd171f0defa8336b52d75754ef2e59172aca229e on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling 8fd01c6617b10b48dd5c7abdfd63eb1331959dce on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling 8fd01c6617b10b48dd5c7abdfd63eb1331959dce on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling c89c6968760f279b50715fe17ad9d5a566ecbc4b on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling e1d9701b3fd1d881bc3b697c5869b2833d4f0bd6 on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling e1d9701b3fd1d881bc3b697c5869b2833d4f0bd6 on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.

Coverage increased (+0.06%) to 17.984% when pulling 0ed0848853c56eb47351aa5f76e2e405e9458e14 on ascrutae:zhangxin/feature/entry-application-instanceID into 243c0007949ca24f93b7daefea070a0833db550b on wu-sheng:master.


Reduce the number of database fetch count from PluginManager

The plugin configurations are fetched for every GraphQL requests which scales poorly and wastes resources: https://github.com/saleor/saleor/blob/65349faa97dc6d4666813719c7fb03b51389bf3e/saleor/plugins/manager.py#L158-L162
Figure out a way to reduce the number of calls (e.g. caching)

Much of that time is spent in Python code, not DB calls.

PluginsManager fetches all channels from the (writer) database during initialization and then, once again, fetches channels from the (reader) database in _get_db_plugin_configs:
1. https://github.com/saleor/saleor/blob/0d21c08210ea9e1785d0f19638840cca35047a23/saleor/plugins/manager.py#L143
2. https://github.com/saleor/saleor/blob/0d21c08210ea9e1785d0f19638840cca35047a23/saleor/plugins/manager.py#L163

We need to profile PluginsManager with representative data (e.g. has 100 plugin configurations across 25 channels, it’s fast when we test it with just one plugin and one channel)

Drop prefetch_related in favor of map in Python.
Use the reader database instead of the writer.


Loop partition fix extent for the post_stmt

This is Mirror PR for #3734 , to check for the flaky CI.
@ZihengJiang

@ZihengJiang CI fails even on this PR on the same test_topi_math.py.
I am closing this PR for now.


Fix changelog generation with default template

This PR fixes changelog generation when no changelog template is specified. Previously it would set the default template too late in the process, resulting in broken links because the VCSURL variable was not set.
This should resolve #438

Thanks!


attr docs persist on yard server -r when removed

When running the yard server and removing a previously existing attr (reader/writer/accessor), it remains documented upon refreshing the page.
Additionally, if a reader changed to a writer (or vice-versa), YARD will think the reader is still there and interpret it as accessor. Expected result is for it to say read/write only respectively.
Steps to reproduce
This is the minimal reproduction for the issue. I've done my best to remove
all extraneous code and unique environment state on my machine before providing
these steps:

lib/yardtest.rb

attr_reader :test

Run the following command: yard server --reload
Open browser to Top Level Namespace (server/docs/toplevel)
Edit the file to a different name or to writer (In our example, we'll just change to test2
Refresh the browser

Actual Output
Both objects exist
https://i.imgur.com/aw6pKMR.png
Expected Output
Expected test to be removed and test2 to remain.
Environment details:

OS: Windows 10 Pro 64 Bit
Ruby version: ruby 2.4.1p111 (2017-03-22 revision 58053) [i386-mingw32]
YARD version yard: 0.9.9

I have read the Contributing Guide.

This is actually expected (though understandably confusing) behavior. The reload feature in the Yard server is only additive, and cannot remove objects. This will happen for all objects, not just attributes.
The intended use case for the reload server is for adding documentation to an existing API, or styling/customizing templates. Making large structural changes to code while running the server is not well supported.
If you so want to do this, you can work around this limitation by deleting the .yardoc directory everytime a change is made. This will allow Yard to reparse data, though it will run a little slower.
As a side note, if yo lunch are interested in tackling a fix for this, I would be open to accepting a PR.
Hope that helps.


DBZ-5478: Restart SQL Server task on "Socket closed" exception

https://issues.redhat.com/browse/DBZ-5478

Hi @morozov did you intend for this to remain a draft?

No, it’s ready for review.

Applied to main (=2.0) and branch 1.9.


MTB phylogenetics tutorial

This is a second tutorial for the planned Galaxy workshop on WGS of M. tuberculosis (see request #3211). It covers the interpretation and inference of phylogenetic trees.

@cstritt @pvanheus do you think this fits ok to any of the existing GTN topics? https://training.galaxyproject.org/ we try and avoid creating new topics for just a single tutorial, when possible. Maybe visualisation? Sequence analysis feels very NGS-y, so maybe not there. We could rename genome annotation to genomics and include it there?

@cstritt @pvanheus do you think this fits ok to any of the existing GTN topics? https://training.galaxyproject.org/ we try and avoid creating new topics for just a single tutorial, when possible. Maybe visualisation? Sequence analysis feels very NGS-y, but we're trying to expand it, maybe there?

So I see two issues here:

the work here forms part of a theme - which is quite an exciting development and not particularly well catered for in the GTN repo. I.e. @cstritt et al probably have a workshop website that pulls together at least 3 Galaxy tutorials with other background into a coherent exploration of the topic (M. tuberculosis sequence analysis / bioinformatics). Does that mean there should be some tags to make this theme easier to follow?
perhaps we need a phylogeny category? You and I have discussed SARS-CoV-2 phylogeny, now this is M. tuberculosis phylogeny - maybe a new category won't be on its own for long? On the other hand, where does the transmission analysis tutorial fit? Is there perhaps a larger category of "relatedness analysis" or "evolution" that is a better fit here?

@hexylena , @pvanheus , many thanks for the helpful comments! I'll start working on them today.
Regarding the category for the tutorial, I like the idea of an 'evolution' topic, as suggested by @pvanheus (there already is 'ecology'). The current topics don't really fit, I'd be surprised to find phylogenetics there...

perhaps we need a phylogeny category? You and I have discussed SARS-CoV-2 phylogeny, now this is M. tuberculosis phylogeny - maybe a new category won't be on its own for long? On the other hand, where does the transmission analysis tutorial fit? Is there perhaps a larger category of "relatedness analysis" or "evolution" that is a better fit here?

That can make sense to me. The thing we try and avoid is topics with a single tutorial, but with our discussed covid phylogeny, yeah, that makes more sense. Evolution it is.

Just one more thought here - there really is not much of a workflow for this tutorial because it follows on from previous work. Its not a stand-alone. I understand the desire to note make the "transmission" tutorial too long, but perhaps add a workflow that illustrates the process from VCF to phylogeny at least?

Just one more thought here - there really is not much of a workflow for this tutorial because it follows on from previous work. Its not a stand-alone. I understand the desire to note make the "transmission" tutorial too long, but perhaps add a workflow that illustrates the process from VCF to phylogeny at least?

At present the tutorial is conceived as part of a workshop, where other tutorials and webinars cover sequencing, SNP calling, etc. Thus the students will go from VCF to alignments in the clustering tutorial in the morning, and from there to the phylogeny in the afternoon. Maybe it would make sense to extent the tutorial into a standalone after the workshop?

Just one more thought here - there really is not much of a workflow for this tutorial because it follows on from previous work. Its not a stand-alone. I understand the desire to note make the "transmission" tutorial too long, but perhaps add a workflow that illustrates the process from VCF to phylogeny at least?

At present the tutorial is conceived as part of a workshop, where other tutorials and webinars cover sequencing, SNP calling, etc. Thus the students will go from VCF to alignments in the clustering tutorial in the morning, and from there to the phylogeny in the afternoon. Maybe it would make sense to extent the tutorial into a standalone after the workshop?

Perhaps.
BTW thinking about your workflow again, I realised that you don't address ascertainment bias. Perhaps constant sites can be computed in the previous tutorial (snp_sites has a mode for computing constant sites... its actually aimed at IQ-TREE's -fconst parameter... I'm not sure if RAxML has a direct equivalent?) and copied over to here? (As an example, here's a workflow that is similar to what is done in your set of tutorials but adds that constant site calculation: https://galaxy.sanbi.ac.za/u/pvanheus/w/snippy-tb-sample-iqtree-015)

I just realized that the ape library is not available in RStudio on Galaxy. Would it be possible to install it?

I just realized that the ape library is not available in RStudio on Galaxy. Would it be possible to install it?

Users can install libraries as needed in Rstudio in Galaxy. That said, if this would e.g. take too much time we can look into changing the base image to include the library.

Users can install libraries as needed in Rstudio in Galaxy. That said, if this would e.g. take too much time we can look into changing the base image to include the library.

install.packages("ape") crashes with:
/bin/sh: 1: x86_64-conda-linux-gnu-cc: not found
make: *** [/opt/miniconda/lib/R/etc/Makeconf:170: BIONJ.o] Error 127
ERROR: compilation failed for package ‘ape’

removing ‘/opt/miniconda/lib/R/library/ape’

BTW thinking about your workflow again, I realised that you don't address ascertainment bias. Perhaps constant sites can be computed in the previous tutorial (snp_sites has a mode for computing constant sites... its actually aimed at IQ-TREE's -fconst parameter... I'm not sure if RAxML has a direct equivalent?) and copied over to here? (As an example, here's a workflow that is similar to what is done in your set of tutorials but adds that constant site calculation: https://galaxy.sanbi.ac.za/u/pvanheus/w/snippy-tb-sample-iqtree-015)

@pvanheus , This was indeed a weighty omission. I now address it in the alignment part, and added a section at the end about rescaling and dating the tree. I use the rescaled branch lengths = (branch lengths * alignment length) / genome size approach, and ask in the exercise what could be the problem of assuming that sites not present in the SNP alignment are invariant.

@pvanheus, to create a new topic: https://training.galaxyproject.org/training-material/topics/contributing/tutorials/create-new-topic/tutorial.html
(and I am realising I forgot to add instructions for faq folder there, but I can help too)

So the only thing which remains to be done on our side is to create the 'evolution' topic and move both tutorials there, right? As far as I can see this would only involve renaming the existing folder ('phylogenetics') and modify the corresponding metadata.yml. I'm not sure, though, how both tutorials can be moved there, given that they are both in open pull requests

@cstritt yes, @hexylena and I will deal with the renaming and moving this morning. We will merge it as draft tutorials, so that it will be accessible for your course next week, and afterwards we can polish all the last things.
(We have been thinking for a while already to rename metagenomics topic to "microbial analysis" so then it could fit there as well)

Users can install libraries as needed in Rstudio in Galaxy. That said, if this would e.g. take too much time we can look into changing the base image to include the library.

install.packages("ape") crashes with:
/bin/sh: 1: x86_64-conda-linux-gnu-cc: not found make: *** [/opt/miniconda/lib/R/etc/Makeconf:170: BIONJ.o] Error 127 ERROR: compilation failed for package ‘ape’
* removing ‘/opt/miniconda/lib/R/library/ape’

@cstritt You might be able to install in via conda (using the terminal tab in Rstudio) ..I'm testing it now and will add it to the instructions in the tutorial if it works :+1:

ok @cstritt, it appears to work if you install via conda :+1: ..it does give a warning that the package was built with R 4.1.2 while the Rstudio runs 4.1.0. It probably won't be a problem, but maybe good to test
I will merge this now

@cstritt here are the links to your tutorials:
https://training.galaxyproject.org/training-material/topics/evolution/tutorials/mtb_transmission/tutorial.html
https://training.galaxyproject.org/training-material/topics/evolution/tutorials/mtb_phylogeny/tutorial.html
(I've also put them on the course program page)

Excellent, thanks a lot for the great support!


Wrong typescript type on createStore when using generics

Describe the bug
The first argument of createStore which is store, is optional, so you can pass undefined, but when using a type in generics, it become requeried, even if you type is optinal. The follow code generates the type error:
`
interface AuthContextData {
user?: IUser;
}
type IUser = {
id: string;
email?: string;
} | undefined;
const AuthContext = createContext({} as AuthContextData);
export function AuthProvider(props: { children: JSX.Element }) {
const [user, setUser] = createStore(undefined);
return <AuthContext.Provider value={{user}}>{props.children}</AuthContext.Provider>;
}
`
Your Example Website or App
https://github.com/ChrisCoy/videos-notes-solidjs
Steps to Reproduce the Bug or Issue
Pass a optional type to createStore generics.
Expected behavior
I exptected store to be optional when i pass an optional type.
Screenshots or Videos
No response
Platform
solid 1.6.10
Additional context
I dont know pretty much about type script, but the follow code fixes the error:
export declare function createStore<T extends object | undefined>(...[store, options]: {} extends T ? [store?: T | Store<T>, options?: {     name?: string; }] : [store: T | Store<T>, options?: {     name?: string; }]): [get: Store<T>, set: SetStoreFunction<T>]; export {};
The file i edited is located in solid-js/store/types/store.d.ts. I only changed the generic type from <T extends object = {}> from <T extends object | undefined>.
Btw, loving solid-js💙, thank you for all your work.

I can't look at the repro now (could if it were in a playground) but the first argument is meant to only be optional if the actual type has no required properties. If this still errors with id being optional then this is a bug, otherwise it is expected behaviour. Another issue is that it seems like the return type can include undefined if T extends undefined, which is never the case, it is always a store.

I tested with id being optinal and its like you said, theres no bug. Thanks for you help! have a nice day :D


raftstore, tikv_util: move QueryStats from raftstore to tikv_util component

Signed-off-by: zeminzhou<EMAIL_ADDRESS>
What is changed and how it works?

Issue Number: close#13505
What's Changed:

Move QueryStats from raftstore to tikv_util component to resolve test_pd_client's dependency on raftstore

Check List
Tests

Unit test
Integration test

None

/cc @pingyu @haojinming

/cc @Connor1996 PTAL~, thanks!

/merge


Create listOfPairsToJson encoder for Web component

We need a way to generate JSON.
Teh Web component can decode JSON to lists of pairs, and we should have an operation that goes the the other way.    There's also a desire to include dictionaries as an AI data type that should also translate back and forth to JSON, but let's not wait for that in before adding this simpler version.  Include an example of posting JSON to a Web service.

I'm against this idea. How can you distinguish a list of pairs that's supposed to be a dictionary from a list of pairs that's not supposed to be a dictionary? We should just add dictionaries soon and do The Right Thing rather than doing a kludge we'll have to fix later.

Do you want to sign up to add dictionaries?
This would be a pretty big change.    By the way, isn't there some book
with a preface by some guy named Perlis that says:
"It's better to have 100 functions that operate on one data structure than
to have 10 functions that operate on 10 data structures".
;)
Think about it.
== Hal Abelson
<EMAIL_ADDRESS>Prof. of Comp. Sci. and Eng.
MIT Dept. of Elec. Eng. and Comp. Sci.
MIT Media Lab, Second Class Faculty
On Sun, Jul 19, 2015 at 9:55 AM, Franklyn Turbak<EMAIL_ADDRESS>wrote:

I'm against this idea. How can you distinguish a list of pairs that's
supposed to be a dictionary from a list of pairs that's not supposed to be
a dictionary? We should just add dictionaries soon and do The Right Thing
rather than doing a kludge we'll have to fix later.
—
Reply to this email directly or view it on GitHub
https://github.com/mit-cml/appinventor-sources/issues/287#issuecomment-122663022
.

Yes, you can sign me up for this.  It's on my near term to do list (i.e,
something I want to complete before the fall semester).
As for Perlis's advice, there are two compelling reasons to add
dictionaries to AI:

JSON is a standard data interchange format with a well-defined
semantics. Any attempt to specially treat list of two-element lists like
JSON objects (i.e., dictionaries) will fail to preserve this semantics. In
particular, round-trip conversions from JSON to AI values and back or from
AI values to JSON and back must act like the identity, and an approach
that uses only lists cannot support this. Also, AI programs cannot produce
JSON consumed by other users in the world without proper JSON object (=
dictionary) support.
Independently of JSON, dictionaries will be an powerful addition to
AI. The key benefit they add over association lists is quick (constant-time
or at least sublinear time) access to values by keys, whereas association
lists imply linear access to values by keys. In many programs written by AI
users that will loop over all keys in a dictionary-like structure, this can
mean the difference between a quadratic algorithm (which is unacceptably
slow) and a linear algorithm (which works fine).

lyn -

On Sun, Jul 19, 2015 at 10:17 AM, hal<EMAIL_ADDRESS>wrote:

Do you want to sign up to add dictionaries?
This would be a pretty big change. By the way, isn't there some book
with a preface by some guy named Perlis that says:
"It's better to have 100 functions that operate on one data structure than
to have 10 functions that operate on 10 data structures".
;)
Think about it.
== Hal Abelson
<EMAIL_ADDRESS>Prof. of Comp. Sci. and Eng.
MIT Dept. of Elec. Eng. and Comp. Sci.
MIT Media Lab, Second Class Faculty
On Sun, Jul 19, 2015 at 9:55 AM, Franklyn Turbak<EMAIL_ADDRESS>
wrote:

I'm against this idea. How can you distinguish a list of pairs that's
supposed to be a dictionary from a list of pairs that's not supposed to
be
a dictionary? We should just add dictionaries soon and do The Right Thing
rather than doing a kludge we'll have to fix later.
—
Reply to this email directly or view it on GitHub
<
https://github.com/mit-cml/appinventor-sources/issues/287#issuecomment-122663022
.

—
Reply to this email directly or view it on GitHub
https://github.com/mit-cml/appinventor-sources/issues/287#issuecomment-122665246
.

Understood.
But also think about how/if to deprecate the list-of-pairs stuff.   (And
note that we just added it to EXTRAS in the ActivityStarter).
== Hal Abelson
<EMAIL_ADDRESS>Prof. of Comp. Sci. and Eng.
MIT Dept. of Elec. Eng. and Comp. Sci.
MIT Media Lab, Second Class Faculty
On Sun, Jul 19, 2015 at 10:45 AM, Franklyn Turbak<EMAIL_ADDRESS>wrote:

Yes, you can sign me up for this. It's on my near term to do list (i.e,
something I want to complete before the fall semester).
As for Perlis's advice, there are two compelling reasons to add
dictionaries to AI:

JSON is a standard data interchange format with a well-defined
semantics. Any attempt to specially treat list of two-element lists like
JSON objects (i.e., dictionaries) will fail to preserve this semantics. In
particular, round-trip conversions from JSON to AI values and back or from
AI values to JSON and back must act like the identity, and an approach
that uses only lists cannot support this. Also, AI programs cannot produce
JSON consumed by other users in the world without proper JSON object (=
dictionary) support.
Independently of JSON, dictionaries will be an powerful addition to
AI. The key benefit they add over association lists is quick (constant-time
or at least sublinear time) access to values by keys, whereas association
lists imply linear access to values by keys. In many programs written by AI
users that will loop over all keys in a dictionary-like structure, this can
mean the difference between a quadratic algorithm (which is unacceptably
slow) and a linear algorithm (which works fine).

lyn -

On Sun, Jul 19, 2015 at 10:17 AM, hal<EMAIL_ADDRESS>wrote:

Do you want to sign up to add dictionaries?
This would be a pretty big change. By the way, isn't there some book
with a preface by some guy named Perlis that says:
"It's better to have 100 functions that operate on one data structure
than
to have 10 functions that operate on 10 data structures".
;)
Think about it.
== Hal Abelson
<EMAIL_ADDRESS>Prof. of Comp. Sci. and Eng.
MIT Dept. of Elec. Eng. and Comp. Sci.
MIT Media Lab, Second Class Faculty
On Sun, Jul 19, 2015 at 9:55 AM, Franklyn Turbak <
<EMAIL_ADDRESS>
wrote:

I'm against this idea. How can you distinguish a list of pairs that's
supposed to be a dictionary from a list of pairs that's not supposed to
be
a dictionary? We should just add dictionaries soon and do The Right
Thing
rather than doing a kludge we'll have to fix later.
—
Reply to this email directly or view it on GitHub
<

https://github.com/mit-cml/appinventor-sources/issues/287#issuecomment-122663022

.

—
Reply to this email directly or view it on GitHub
<
https://github.com/mit-cml/appinventor-sources/issues/287#issuecomment-122665246
.

—
Reply to this email directly or view it on GitHub
https://github.com/mit-cml/appinventor-sources/issues/287#issuecomment-122667359
.

Resolved by #1982


baremetal IPI: Bootstrap Node starts, fails to provision Infrastructure

I originally opened this on the Installer project: https://github.com/openshift/installer/issues/3046
Version
$ openshift-baremetal-install version
openshift-baremetal-install 4.4.0-0.okd-2020-01-28-022517
built from commit 7ca0817244033e5f543541def5b18ea1bac440f7
release image registry.svc.ci.openshift.org/origin/release@sha256:2350fee6c0d8a980d499b7bbb3ba20137ffa58416bc1381304596772957f7836

Platform:
baremetal IPI
Pre-configured libvirt VMs (No Operating System) with virtualBMC to provide IPMI.
What happened?
The installer appears to be looking for etcd systems that don't exist yet.  Almost as though it is attempting a UPI install rather than an IPI install.  Sample output from journalctl -b -f -u bootkube.service on the bootstrap VM:
Feb 03 13:51:27 localhost bootkube.sh[1106]: {"level":"warn","ts":"2020-02-03T13:51:27.515Z","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-843ed98b-ddaa-4b14-933e-bf1201773202/etcd-2.okd4.oscluster.clgcom.org:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest connection error: connection error: desc = \"transport: Error while dialing dial tcp: lookup etcd-2.okd4.oscluster.clgcom.org on <IP_ADDRESS>:53: no such host\""}
Feb 03 13:51:27 localhost bootkube.sh[1106]: {"level":"warn","ts":"2020-02-03T13:51:27.515Z","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-a3310b6e-8cce-4be3-b4b0-e1a696c1077d/etcd-0.okd4.oscluster.clgcom.org:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest connection error: connection error: desc = \"transport: Error while dialing dial tcp: lookup etcd-0.okd4.oscluster.clgcom.org on <IP_ADDRESS>:53: no such host\""}
Feb 03 13:51:27 localhost bootkube.sh[1106]: {"level":"warn","ts":"2020-02-03T13:51:27.515Z","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-5705bca3-cf78-4311-af1d-23b7ba2e9ce9/etcd-1.okd4.oscluster.clgcom.org:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest connection error: connection error: desc = \"transport: Error while dialing dial tcp: lookup etcd-1.okd4.oscluster.clgcom.org on <IP_ADDRESS>:53: no such host\""}
Feb 03 13:51:27 localhost bootkube.sh[1106]: https://etcd-2.okd4.oscluster.clgcom.org:2379 is unhealthy: failed to commit proposal: context deadline exceeded
Feb 03 13:51:27 localhost bootkube.sh[1106]: https://etcd-0.okd4.oscluster.clgcom.org:2379 is unhealthy: failed to commit proposal: context deadline exceeded
Feb 03 13:51:27 localhost bootkube.sh[1106]: https://etcd-1.okd4.oscluster.clgcom.org:2379 is unhealthy: failed to commit proposal: context deadline exceeded
Feb 03 13:51:27 localhost bootkube.sh[1106]: Error: unhealthy cluster

Feb 03 13:53:55 localhost podman[39792]: 2020-02-03 13:53:55.673829482 +0000 UTC m=+5.444225642 container died 01d6e60fd8689675f2172cb9e65f7adac0b62d5bcb5191beb8bf684c47a5acc0 (image=registry.svc.ci.openshift.org/origin/4.4-2020-01-28-022517@sha256:f0fa1e9c84c55121634eeb5dd992dd0958835d330515c4d0fb0508e92ef3011e, name=etcdctl)
Feb 03 13:53:55 localhost podman[39792]: 2020-02-03 13:53:55.714960024 +0000 UTC m=+5.485356193 container remove 01d6e60fd8689675f2172cb9e65f7adac0b62d5bcb5191beb8bf684c47a5acc0 (image=registry.svc.ci.openshift.org/origin/4.4-2020-01-28-022517@sha256:f0fa1e9c84c55121634eeb5dd992dd0958835d330515c4d0fb0508e92ef3011e, name=etcdctl)
Feb 03 13:53:55 localhost bootkube.sh[1106]: etcdctl failed. Retrying in 5 seconds...
Feb 03 13:54:00 localhost podman[41503]: 2020-02-03 13:54:00.861605141 +0000 UTC m=+0.094330958 container create 14f77117b8606dd7801ad806f64a43788e09654f9df0c1412e1dba5646322315 (image=registry.svc.ci.openshift.org/origin/4.4-2020-01-28-022517@sha256:f0fa1e9c84c55121634eeb5dd992dd0958835d330515c4d0fb0508e92ef3011e, name=etcdctl)
Feb 03 13:54:01 localhost podman[41503]: 2020-02-03 13:54:01.139714166 +0000 UTC m=+0.372439863 container init 14f77117b8606dd7801ad806f64a43788e09654f9df0c1412e1dba5646322315 (image=registry.svc.ci.openshift.org/origin/4.4-2020-01-28-022517@sha256:f0fa1e9c84c55121634eeb5dd992dd0958835d330515c4d0fb0508e92ef3011e, name=etcdctl)
Feb 03 13:54:01 localhost podman[41503]: 2020-02-03 13:54:01.151937117 +0000 UTC m=+0.384662826 container start 14f77117b8606dd7801ad806f64a43788e09654f9df0c1412e1dba5646322315 (image=registry.svc.ci.openshift.org/origin/4.4-2020-01-28-022517@sha256:f0fa1e9c84c55121634eeb5dd992dd0958835d330515c4d0fb0508e92ef3011e, name=etcdctl)

What you expected to happen?
Installer to provision an IPI OKD4.4 cluster with 3 master and 3 worker nodes.
How to reproduce it (as minimally and precisely as possible)?

Note: I had to disable selinux for the bootstrap node to deploy properly:

setenforce 0

Prepare a set of libvirt VMs to represent bare metal systems:

RAM - 20GB
CPU - 4c
Disk - 200GB
NIC - 2 (one for cluster network, one for provisioning network)
Boot order - hd, network (will PXE boot since there's no OS on the /dev/sda)

Configure vbmc to provide IPMI for each of the VMs

vbmc add --username admin --password password --port 6230 --address <IP_ADDRESS> --libvirt-uri<EMAIL_ADDRESS>okd4-master01
vbmc start okd4-master01

Add DHCP IP reservations for each VM
Reserve IP addresses for API, Ingress, and DNS
Create DNS entries for API and Ingress
Create install-config.yaml (see example below)
Retrieve the baremetal installer:

oc adm release extract --command='openshift-baremetal-install' registry.svc.ci.openshift.org/origin/release:4.4.0-0.okd-2020-01-28-022517

Create the cluster:

openshift-baremetal-install --dir=okd4-install create cluster

Note: the first time you run this, it will fail with a checksum error.  You have to uncompress the image file in the cache, then run the installer again.  It will be happy with the checksum of the uncompressed image.

Anything else we need to know?
Sample install-config.yaml:
apiVersion: v1
baseDomain: oscluster.clgcom.org
metadata:
  name: okd4
networking:
  machineNetwork:
  - cidr: <IP_ADDRESS>/24
compute:
- name: worker
  replicas: 3
controlPlane:
  name: master
  replicas: 3
  platform:
    baremetal: {}
platform:
  baremetal:
    externalBridge: br0
    provisioningBridge: br1
    apiVIP: <IP_ADDRESS>
    ingressVIP: <IP_ADDRESS>
    dnsVIP: <IP_ADDRESS>
    provisioningNetworkCIDR: <IP_ADDRESS>/24
    hosts:
      - name: okd4-master01
        role: master
        bmc:
          address: ipmi://<IP_ADDRESS>:6230
          username: admin
          password: password
        bootMACAddress: 52:54:00:be:f9:b3
        provisioningNetworkInterface: eth1
        hardwareProfile: default
      - name: okd4-master02
        role: master
        bmc:
          address: ipmi://<IP_ADDRESS>:6231
          username: admin
          password: password
        bootMACAddress: 52:54:00:e8:15:4c
        provisioningNetworkInterface: eth1
        hardwareProfile: default
      - name: okd4-master03
        role: master
        bmc:
          address: ipmi://<IP_ADDRESS>:6232
          username: admin
          password: password
        bootMACAddress: 52:54:00:da:56:7f
        provisioningNetworkInterface: eth1
        hardwareProfile: default
      - name: okd4-appnode01
        role: worker
        bmc:
          address: ipmi://<IP_ADDRESS>:6233
          username: admin
          password: password
        bootMACAddress: 52:54:00:ad:0d:11
        provisioningNetworkInterface: eth1
        hardwareProfile: default
      - name: okd4-appnode02
        role: worker
        bmc:
          address: ipmi://<IP_ADDRESS>:6234
          username: admin
          password: password
        bootMACAddress: 52:54:00:25:74:f5
        provisioningNetworkInterface: eth1
        hardwareProfile: default
      - name: okd4-appnode03
        role: worker
        bmc:
          address: ipmi://<IP_ADDRESS>:6235
          username: admin
          password: password
        bootMACAddress: 52:54:00:64:e6:b8
        provisioningNetworkInterface: eth1
        hardwareProfile: default
pullSecret: '{"auths": {"quay.io": {"auth": "PULL-SECRET-KEY-HERE", "email": ""}}}'
sshKey: ssh-rsa AHSHDFHS...

References
https://github.com/openshift/installer/issues/3046

baremetal IPI is not yet supported - Ironic images are stubs and need to be replaced with upstream metal3 images

Ah, that would explain why it doesn't work.  ;-)
Keep me posted.  I'm more than happy to help.

@cgruver the user provided libvirt / baremetal guide should get you started for now! :)
https://github.com/openshift/okd/blob/master/Documentation/UPI/libvirt/libvirt.md

@sgreene570 Thanks!
That will get the lab up and running!

xref: https://github.com/openshift/okd/issues/12

I haven't tested this one in a while.
@vrutkovs Do you know if the needed ironic images are in place yet?  If so, we can probably close this pending a test of baremetal IPI.  I don't know if anyone else has attempted it yet.

I don't think there's been any progress on this yet :(
We need to ensure ironic-* images built on CI are using RDO packages. At this point these are skipped and replaced with UBI8 stubs.
cc @hardys @dtantsur

#197 has more details on ironic images replaced with stubs


Fix html head tag

Add html_tag (used by epub builder: http://www.sphinx-doc.org/en/stable/_modules/sphinx/builders/epub3.html?highlight=html_tag
Add missing html tag? Not sure what is going on here. ALso add lang_attr to that tag.

Question do we even need the IE conditionals? The .no-js class is not used in WYRM or our theme.
None of the other sphinx templates do this either.

See #467


Updated implode and join statements to follow the argument order from the documentation.

The documented argument order for the implode function is implode($glue, $pieces);. Although the function accepts any order for "historical reasons".
https://www.php.net/manual/en/function.implode.php
But in PHP 7.4.0beta2 (which I am using to build a Laravel application with) seems to have deprecated this support and the arguments must now be entered in the documented order.
Running php artisan migrate --seed encounters this deprecation warning and fails altogether. So I decided to contribute in a change to all implode calls.
Note: join is just an alias of implode.

@japalekhin
Since the build is failing here and we have #1748 - would you mind if we closed this as duplicate?

Not at all. I guess I forked at the time the build was failing. Glad this has been resolved.

Thank you, @japalekhin!


Expressions: Hide the edit button for repeating group rows

Description
In the expressions implementation (#540), it is now possible to hide the addButton, saveButton and deleteButton for a repeating group. It should also be possible to hide the edit button this way, and have the expression evaluate per-row so that each row can decide to have their edit button hidden on their own.
Additional Information

#540
#61

org/ssb

@Magnusrm This should be easy now, after #61 and #64, right? :pray: Up for grabs if you want it!

@olemartinorg I can definitely pick this up. 😄
I imagine the expression part is already done, I guess this is mostly a matter of finding a good way to display different combos of edit and delete buttons in the rows. Ex: one row with only delete button and one with only edit button and one with no buttons. I imagine the header columns to be a bit tricky to handle with the current implementation, we might need to create a "action" column instead of "edit-button" and "delete-button" columns.
We might also need UX to decide how we want to display the different combos.

@Magnusrm Great point! Tagging @Febakke and @mrosvik. I think we just implement this short-term, but possibly reconsider the design in the long term.


Enable Matrix SSO login via Google and GitHub

Enable Matrix SSO login via Google and GitHub.
Like Element, Cinny does add Google and GitHub login support. The Spektr should check which SSO type is available and show icon for login with Google and/or GitHub.

@tuul-wq prototype for SSO login with GitHub or Google https://www.figma.com/proto/XUbuZFQVVRXM5NNGoaB8uq/Gavin's-feedback?page-id=0%3A1&type=design&node-id=24-60022&viewport=502%2C397%2C0.13&t=asZICzJVqOKA9lwk-9&scaling=min-zoom&starting-point-node-id=24%3A60022&show-proto-sidebar=1

Button for login link
New icon set link

@tuul-wq that's how element handles deeplink https://github.com/element-hq/element-desktop/blob/develop/src/protocol.ts#L97

Status verification: ⏳
What has been verified:

Login via GitHub
Login via Google

Found during testing:

https://github.com/novasamatech/nova-spektr/issues/1460

Status verification: ✅