Enable selection by column

Enables selection by column in a much more concise way for the new 3.x codebase. I realize this pull request has historically been a source of contention, so if you don't want to merge immediately I understand. I'm going to use this in my application and then report back once I'm fully confident that this feature should be in PostgREST.
This request also includes the capability to embed rows by column without an _id, the row is also embedded with the sans _id name. This makes it more semantic and fixes the problem for some where say author_id could be both an integer and an object. It is the last resort option if no other relations could be found.
Oh, this PR also fixes a small capitalization bug (see here).

Back when we had the argument the code looked a bit different (the name of the types), in particular what a ApiRequest meant, when talking about relations it specifically mentioned "table", now it's refactored and it's called "NodeName", so no problem if that string would be used for a table or column.
The impact on the code is also minimal (i thought it would be much bigger and maybe it would've been in the old structure), basically just one additional function so that is great too.
Overall i am in favour of this pr.
There are a few things that need a bit of change like:
The name of the functions findRelationTable findRelationColumn need to change to findRelationByTable or something similar, right now it suggests it finds a related table or a related column.
Both functions need some comments to explain what they are doing and how they are going about doing that.
Matching _id && Id feels a bit hardcoded, at least one other (commonly used) name would be _fk. and there is no match for _ID.

@ruslantalpa Implemented all your suggestions.

Here are my general thoughts. I think you've got the right approach, i.e. we should be doing embedding by specifying the foreign key column(s) involved. This solves both the problem of compound foreign keys and of multiple, ambiguous keys like billing_address_id and shipping_address_id on an order. It's not enough to tell it to embed "address".
The final, high quality solution will require two things

The ability to specify multiple columns in a single embedding to accommodate compound foreign keys. I know these are rare and I'm "taking the bear's side" but the interface is not complete and does not fully support the relational database model without this ability.

Not sure of the syntax in the query string. Maybe /table?select=(fk_a,fk_b):name{*}

The ability (necessity even?) of choosing a name for the embedded resource. Tables and foreign keys can be named anything. The only way to prevent name collisions is allowing the client to choose the name for the embedding.

Should we try to help out here by choosing defaults? For instance stripping _?[Ii][Dd] or choosing the name of the destination table if a client does not specify the embedding name? I'd argue against it.
The renaming convention can't always work. Do you try the id stripping, then fall back to the destination name, then throw a 400 error?
I suggest requiring the client to choose an embedding name. It's clearer what's going on.

In fact I'd say we should be embedding through column names alone and remove the interface where you specify other table names in the select parameter. The only catch is I don't know how to do N-N embedding this way.

I think I agree on the suffixes. I included it because I thought it might ease some earlier problems with this proposal and to see how others felt about it. I also agree with the multiple column embedding and I do like your proposed syntax.
I don't agree with requiring a name however. If a developer really wanted a clean syntax (like myself) they could create a view with the foreign key column author in the hopes of requesting author{*}. Forcing a rename makes this design decision impractical. The only time where we should force a rename is a compound key (and even then we could use the referenced table name as an intelligent default).
If we are going to allow column renaming at all, we shouldn't care about column name collisions.
Finally, should we also consider how column renaming changes how we approach schema generation?

In short, i think this PR should be merged exactly as it is (with _id thing included) :)
About specifying an embed once using a fk column and in other cases using table name:
I think it's a bad idea to remove embedding by specifying table name (especially because you have no solution for n-n)
in this request
/projects?select=id,name,client{id,name},tasks{id,name}

where client is a fk and tasks is a table i think it makes perfect sense for them to mean different things because they are embeding different type or relations, a foreign key points to a single items, while table points to a collection/array. In addition, this is exactly the shape of the json (the name of the keys) you want to get back. By looking at this request you can clearly see how the json will look.
Consider the case where you would embed by only specifying fk, look at how you would wright the same query
/projects?select=id,name,client{id,name},project_id:tasks{id,name}

by looking at it it's unclear how the json will look, also notice that the fk project_id that is from tasks table, leaks out of the table and it seems as it's a column from projects table, i find this query very confusing/ugly.

In short i think this PR should be merged as it is.
Specifying the embeding using only fk
It's a bad idea, you are considering how an embed looks when referring to parent object, you forgot about child objects and you do not have a solution for embeding n-n
Consider this query
/projects?select=id,name,client{id,name},project_id:tasks{id,name}

notice how you are forced to specify :tasks which again has to be the table name (and not only a rename) because you do not know from what table to get that key (theyre could be multiple child tables that have the exact same key) so what does this accomplish?
Also notice how the "projects_id" key leaks out of the tasks table and makes it seem like its a column in projects table
The current query looks much nicer and it gives you a clear idea of how the json will look and all the columns are grouped by table.
/projects?select=id,name,client{id,name},tasks{id,name}

It is ok to embed things some times by specifying fk and some times by specifying tables because they embed different types of relations.
A fk points to a specific item, thus you get a {}, a table means a collection, thus you get a [].
Using ..._id ..._fk ...Id ...Fk
It's the conventions used by most of the devs/dba. I don't see why adding this case that coveres most of the situations and makes life easy could not be supported.
This client{id,name} says:
Embed here the related object specified by the FK "client"
If we add the _id thing, the only thing that changes is
Embed here the related object specified by the FK "client", and by the way, the FK could actually be named client_id but i still want it back as client
By not supporting this, you will be forcing most of the queries to use the "rename" feature or force the dba to name the FK the way the client expects them
I think this client{id,name} looks much nicer then client_id:client{id,name}.
Supporting the rename feature
Sure, we need it for cases where the fk is not like client_id but something else or when the db uses my_table_name and the frontend wants it like myTableName but this can be done in a separate PR and does not infulence the part about how to detect a relation (FK or table), it's simply menat to be  "AS renamed" adition to the sql.
About the format of the rename, i propose we do this rename:fk_name{*}, graphql does it like this, the FK is always close to the {} object it references (not 100% sure on why do it exactly this way but i don't see any arguments for the other case)
Compound keys
I have no good solution for this that i am sure of, maybe jsut the [key_a,key_b] thing i mentioned before, but we are not in a hury to implement this, the cases are rare

To briefly support @ruslantalpa's _id etc argument and answer one of @begriffs questions, the _id stuff is last resort, so it is the last thing relation detection will attempt.

Also can you please add a note to the docs? http://postgrest.com/api/reading/#embedding-foreign-entities

Rebased & documented.

Thank you for the contribution!

Hi all, I just wanted to say thank you for resolving this!  I was playing around with PostgREST a couple weeks ago and ran into the exact issue described in #354, and it's so awesome to see that it's been fixed in the meantime.  Thank you!

Very sensible discussions here and in #354. In the outcome of this, what's now actually the approach to compound foreign keys? (maybe even several compound references to the same table)
I'm sorry I seem to be "the bear", or in a .01% minority (or both), but in schemas that I am using very frequently, there are lots of compound foreign keys, and many times a subset of a foreign key would be yet another foreign key (i.e., part of the primary key of a referenced table would be a foreign key to a third table). I haven't designed those schemas, but I have to work with them without altering them. (And I might also define my very own schemas similarly, as I don't see a fundamental relational design problem in it apart from this question how to deal with it in PostgREST.)
A cumbersome workaround for me might be creating views with all foreign/primary key columns concatenated into one single additional column on each table, but... well, cumbersome and much worse also on the frontend dev's side. I might rather go the way of multiple requests (not using embedding at all) then.
Also, do the foreign keys have to be expressly contained as FK constraints in the database schema for the embedding to work?

@SebAlbert at this moment there is no support for multiple fk, but stay tunned, it should not take very long to support that (there was no embeding at all 4 months ago). For any relation to be detected they have to be defined as FK as you said (views with cocnatenated columns will not work).

@SebAlbert i think i spoke too soon (forgot all the details)
There is some support for compound foreign keys.
https://github.com/begriffs/postgrest/blob/master/test/Feature/QuerySpec.hs#L221
The problem this PR fixed is when one table contained 2 FK pointing to the same column, but if your FKs point to different columns then the relation should be detected, try and see what happens


Regexp error

I have tried the binary for linux and also to build it myself, both giving me this error:
Could not get tokens from maintainance page. Error: no regexp matches
I'm using Arch btw 😉

Post the system information from your router: http://<IP_ADDRESS>/html/status/systeminfo.asp
(Remove the IMEI number)
Could be a different model with different firmware and in that case there is nothing I can do...
My model:
Product Information
Model:
B593s-22
SN:
S2Z7S15624000308
Hardware version:
Ver.B
Firmware version:
V200R001B270D10SP00C00
Firmware build time:
Aug 20 2014 / 11:22:16

Model: B593s-22
SN:<PHONE_NUMBER>87590
Hardware version: Ver.B
Firmware version: V200R001B270D25SP02C07
Firmware build time: Sep 19 2018 / 16:59:49

Yeah, different firmware, nothing i can do about that. I'm gonna archive this project

Ok, thanks anyway :+1:


Frozen browser after burning history

I just clicked the fire button for the first time. I had been distracted by #3231 which might be related somehow.
Steps:

Touch da spicy button 🔥
Choose All sites
Click Clear
Wait

Expected behavior:
History erased. Maybe a nice message saying Yay, good job!
The first part did happen, at least.
Actual behavior:
Browser was hung for a long time with the progress bar bouncing back and forth, then came good after a several minutes.
I quit out of the browser and loaded it back up and tried the button again, same result. This does not sound like the intended experience.

I think my DDG is haunted 👻
Will reinstall tomorrow if no further suggestions.

I (accidentally) tempted fate by leaving the browser open all night.
I just clicked the clear button again because it was up, and I got the animation complete quick enough that I didn't see the progress bar.

Not been able to reproduce, even after reinstall. I'm thinking it was caused by whatever caused #3231 since they resolved together.


RFH: syntax update

Syntax updating for compatibility with 0.6.0-dev

replaced KVPair{K,V} type with standard Pair{K,V}

changed factcheck to @test usage

Almost compatible with 0.5.0, except some problems marked in the test suite. Not sure what to do here:
julia> PersistentSet(Integer[1,2,3])
ERROR: MethodError: Cannot `convert` an object of type Pair{Int64,Void} to an object of type Pair{Integer,Void}

or here:
julia> append(vec(1:31), 32) == vec(1:32)
true
julia> @test append(vec(1:31), 32) == vec(1:32)
[...] ERROR: MethodError: no method matching unsafe_length(::Int64)

Travis passes for nightly, runs into the above errors for 0.5.0, and fails on 0.4.0 because @testset is not defined there

Would love help making this functional.

You could either depend on BaseTestNext on 0.4, or bump the minimum Julia version to 0.5.

Thanks @tkelman. I took the easy way out, avoiding the tests mentioned above that were breaking v"0.5". Hope build is successful now ...

Thanks @felixrehren! This is a great improvement.

Since this is almost a complete rewrite, you should probably double-check that it won't break Arbiter or Patchwork, its reverse-dependencies.

Not much has been rewritten, but code has been moved around. Just ran tests for Patchwork and Arbiter on 0.5 - all green.


Add instrumentation for monitoring

Provide instrumentation for recording request count and latency, also add capability to log every outbound request for debugging.

Resolved with #7


Minotaurs cause "mod instability detected" soft-crash on charge

Not sure how to replicate it as it doesn't seem to happen all the time, but Minotaurs and Minotaur Elites often cause the game to soft-crash when they charge. Potential theories:

I'm currently playing the custom module Terminal Reverie and I had this issue in multiple maps (both the orc caves and temple of earth so far), both of which were using the DM Pro flat rooms.
It could be something to do with party members being in stealth and having it cancelled by enemy movement, since it's only happened towards the start of fights the few times it has happened.

This is a vanilla game bug we hope TA fixes on DLC. Nothing we can do.


Variables generated with type 'InvalidType'

When I try to create a new theme with Theme Tailor my variables are generated with type 'InvalidType'.
Details

Build with command dart run build_runner watch --delete-conflicting-outputs
Flutter 3.10.6
Dart 3.0.6

Project example: https://github.com/egonm12/theme_tailor_issue

Hi, I have checked the issue by:

Cloning your example project.
Switching to Flutter version 3.10.6 and Dart version 3.0.6.
Running dart run build_runner watch --delete-conflicting-outputs.

After following these steps, I noticed that every 'InvalidType' in the core_colors.tailor.dart file was changed to 'Color' type. It appears to be working correctly for me. Please kindly double-check the steps once again to ensure it's resolved.

Hello, thank you for the provided code sample. I've conducted a review and found a few issues:
In app_colors.dart:
The core and component variables should be declared as static final instead of const. These values are not constants.
In component_colors.dart:
There are errors related to buttonBackground and buttonForeground. These variables are of type List, which makes them invalid as @themeExtension annotation targets since Color is not a ThemeExtension.
Additionally, it appears that CoreColors are not used as part of the theme in the provided sample. Unless there's a specific use case for them, they shouldn't be defined as ThemeExtension. (Initially, it seemed like these components had circular dependencies on themselves)
As a general recommendation, you might want to explore the ThemeTailorMixin generator, as it offers more capabilities with simpler syntax and reduces the chances of making these types of mistakes.
I'm going to close this for now, but please feel free to reach out if you have any further questions or require additional assistance.


updated static file handling for built-in PHP server

some assets like font-awesome by default add a get parameter with the version to their static files to improve caching. this change allows those files to be served directly as well

similar problem as in #30


Show poll-failure details

Ready for review
Fixes: #555

A question to be answered: how do we determine if an error is transient?
Currently we handle 3 classes of errors in UpdateMachine:

ZulipApiException: The event queue is lost. This is commonly caused by inactivity.
Server5xxException, NetworkException: A server-side bug, or hiccups due to unstable Internet connection.
default: Could be anything that happens in the client code during the getEvents call.

I think it is usually safe to assume that 1 is recoverable, while we are less certain about that for 2 and 3. An idea is to define a number of retries for the client to start displaying error messages. And then in a follow-up PR the client can try to do something different (which is #186).

For non-transient errors, we will probably show a modal instead.

If there's a ZulipApiException other than the event queue being gone, then that's likely non-transient — it's either a bug in the client, or some kind of unexpected incompatibility between server and client. A retry is likely to just hit the same error again.
(Those fall into the default case.)

Other than that point, the description above all looks right.

The PR has been updated. Thanks for the review!
I'm not entirely sure about the quality of the translation strings. These messages will appear more technical at the current stage for the ease of debugging. However, polishing user facing errors might be a post-launch task.

Updated the PR to avoid wrapping test calls in checkRetry.

Updated the PR to adjust comments on lib/log.dart and made dialog title a parameter. I also tweaked the formatting and made some other minor improvements.

This update modifies the translation strings to include the realm URL in error messages.

That fix LGTM on a skim, thanks. I'll leave @chrisbobbe to do the next round of full review.

Thanks for the comments. This should be ready for review again!

@PIG208 @chrisbobbe I recommend installing this PR version on your main devices for a while, with flutter run --release. I just installed it yesterday, and the output is interesting but can definitely use some tweaking to be less noisy (particularly with dialogs).

Regarding the noisiness of the error dialog, I think a better UX is to present a snackbar with a brief error summary and a "Show more" button that brings up the dialog page with the full error message.

Implemented the proposed change in a squash! commit. Before moving on to the next review, I would like to gather some feedback on this new UX (discussion)

Thanks! This revision LGTM. One thought is that it would be nice if the snackbar API gave us a way to identify a specific snackbar to remove, so we could be sure we're removing the one we intend to. But it looks like our choices are the "current" snackbar and all snackbars. The "current" snackbar I guess means the latest one from the queue, if it hasn't expired, and that could be right or wrong depending on the durations of the snackbars and how much time has passed.

Yeah, I figured that tracking if the last snack bar has expired would reduce collateral dismissal of unrelared snackbars in most cases.

Updated the PR to add a comment on the https://github.com/zulip/zulip-flutter/pull/868#discussion_r1733560511 implementation.

Pushed to rebase.

Thanks, LGTM! Over to Greg for his review.

Added a commit removing a stale TODO, and squashed the two of the error reporting commits (for transient and non-transient errors) together.

The public message history from CZO can be downloaded from this protected dropbox link. We probably will think of a better way of reusing this in the future.

(Was this comment intended for #917?)

Thanks for the review! The PR has been updated.

Quick observation on the UX:
I reopened the app after a while. It showed the loading indicator at top for a while, then successfully reconnected.
But then for some time after that, it showed a chain of several rounds of snack bars saying there was an error, followed by one saying "reconnecting". Each one lasts several seconds, and there were about three of them that started after the loading indicator finished.
I hit the "details" link on a couple of the errors. Both were NetworkException, saying the host name chat.zulip.org couldn't be resolved.

Opened #935 for the two commits implementing the report error feature,
and #936 for the other nfc commit.

Updated the PR to ignore NetworkException where the underlying cause is a SocketException, added some more documentation and cleaned up some diffs to make them easier to read. Feel free to install a build of this PR to test it out!

Thanks for the update! Installing on my phone now.

Thanks for the feedback! Dropped the last commit and previous changes relevant to the tests. A new group of tests is now responsible for testing the error reporting feature.

Thanks! Ready for review now.

Looks good — merging.


SVG viewBox not working well

Hi there.
I'm working with SVG and I need to parse my SVG to HTML for React.
Now, I realized that viewBox property has an issue.
Parsed SVG must have a viewBox but react-html-parser make it viewbox with small b.
It makes a mistake to render SVG especially in responsive.
Please fix this.
Reagards.

Ditto. Please fix, related to https://github.com/wrakky/react-html-parser/issues/45

I got a valid workaround working...
  renameProp = (oldProp, newProp, { [oldProp]: old, ...others }) => ({
    ...others,
    [newProp]: old
  });

  render() {
      ...
      const htmlOutput = ReactHtmlParser(htmlData, { transform: this.transform });
      const props = this.renameProp('viewbox', 'viewBox', htmlOutput[1].props);
      const newOutput = [];
      newOutput.push(null); //unsure if they're all null, but in my example I was seeing null in the first position
      newOutput.push({
        ...htmlOutput[1],
        props
      });

      return (
        <div className="slide-medium">
          {newOutput}
        </div>
      );

This is still an early POC, but thought I'd pass it along

Unfortunately, this works for viewBox but not a slew of other properties that are incorrect throughout the svg file.... still looking for a solution

Also having trouble with this but with react routers Link component, it is converted to link and so doesn't work.

Try this https://stackoverflow.com/a/43558609/6755649 and make sure you pass the Components that you want rendered correctly (without being converted to lowercase html tags) to JsxParser in the components prop

I ended up skipping this library altogether, there were too many issues with the SVG, and just setting the content like:
dangerouslySetInnerHTML={{ __html: '<svg>...</svg>' }}

I've used svg-to-jsx library to convert first to jsx and then run it by this one.  All of the properties are read correctly except "preserveaspectratio" which is reverted back to lowercase.

I came into the same problem when rendering KaTeX math formula, I wrote this to fix.
transform = (node, index) => {
  if (node.type === 'tag' && node.name === 'svg') {
    const child = node.children[0];
    const { width, height, viewbox, preserveaspectratio } = node.attribs;
    return (
      <svg
        key={index}
        width={width}
        height={height}
        viewBox={viewbox}
        preserveAspectRatio={preserveaspectratio}
      >
        {convertNodeToElement(child, index, this.transform)}
      </svg>
    );
  }
}

and
...
const renderedPost = HtmlParser(post, { transform: this.transform })
...

I tried @Yangjiaxi 's fix but i still had some issues, tried this https://www.npmjs.com/package/html-react-parser and it was fixed.

parse(svgList[key].toString(), {
replace:   attribs => {
if(attribs.name === 'symbol'){
attribs.attribs.viewBox = attribs.attribs.viewbox
delete attribs.attribs.viewbox
}
}
})

The related source code is here: https://github.com/wrakky/react-html-parser/blob/master/src/utils/htmlAttributesToReact.js#L41
Not sure what the correct fix would be. But adding viewbox: 'viewBox' to the map in ReactAttributes.js works.

Note, that other svg features stop working as well, for example:

gradientUnits attribute which gets converted to gradientunits
<linearGradient> element, which is converted to <lineargradient>.

i think that this lib is using htmlparse2 library and there is an option from htmlparser2 to not render lower case attributes of nodes.
So i don't know if this can be used as an option inside this library, but it should...

{ReactHtmlParser(svgHtmlString, { transform: transformFn })}
function transformFn(node, index) {
if (node.name === "svg") {
const { viewbox, ...rest } = node.attribs;

return (
  <svg   {...rest} viewBox={viewbox}>
    {node.children.map((child, index) => {
      return convertNodeToElement(child, index, transformFn)
    })}
  </svg>
)

}
}


Developers should not have to update webpack.config whenever they import a new NPM dependency

Right now we have Node packages explicitly in webpack.config.js
https://github.com/material-components/material-components-web-react/blob/master/packages/webpack.config.js#L71

Closing with https://github.com/material-components/material-components-web-react/pull/232


Allow specifying multiple component categories

An alternative to this would be to allow a complete mix/match, like this:
message ComponentSelector {
  // Set of component IDs / catogories
  repeated oneof selector {
    uint64 component_ids = 1;
    frequenz.api.common.v1.microgrid.components.ComponentCategory component_category = 2;
  }
}

It was decided against this approach for now.


Add build-time configuration options to pkgconfig file

This adds an openblas_config variable to openblas.pc, that will look like:
USE_64BITINT= NO_CBLAS= NO_LAPACK= NO_LAPACKE= DYNAMIC_ARCH=1 NO_AFFINITY=1 USE_OPENMP= HASWELL MAX_THREADS=4
and can be queried by pkg-config --variable openblas_config openblas (the idea is taken from the qt_config line found in some qt-related pc files)


Error pages not beneffiting from markdown directive

1. What version of Caddy are you running (caddy -version)?
Caddy (untracked dev build)
(0.9.3-r0 from alpine linux)
2. What are you trying to do?
I have declared a 404 error page, but I cannot make it markdownify even that the path is for markdown files
3. What is your entire Caddyfile?
8080
root /srv/www
log stdout
errors {
    404 404.html
}
status 404 /templates
markdown / {
    ext .html
    template blog templates/blog.html
    template page templates/page.html
}

4.  What did you expect to see?
I want the page /404.html to be rendered as markdown
6. What did you see instead (give full error messages and/or log)?
Plain text, including the front matter
7. How can someone who is starting from scratch reproduce this behavior as minimally as possible?
Reproduce a simple folder with a index (optional), caddyfile and a template for the page.
gerard@aldebaran:~/docker/caddy/www$ tree
.
├── templates
│   ├── blog.html
│   └── page.html
├── 404.html
├── Caddyfile
└── index.html

1 directory, 5 files
gerard@aldebaran:~/docker/caddy/www$

Place a "page" template and a 404 as follows
gerard@aldebaran:~/docker/caddy/www$ cat 404.html
---
title: Error 404
template: page
---

Error 404: BOOOM!
gerard@aldebaran:~/docker/caddy/www$ cat templates/page.html
<!DOCTYPE html>
<html>
	<head>
		<title>{{.Doc.title}}</title>
	</head>
	<body>
		{{.Doc.body}}
	</body>
</html>
gerard@aldebaran:~/docker/caddy/www$

visit http://localhost:8080/nonexistentpage and view the plain text in 404.html

One possibility for this issue and both #753 and #1447 is for the errors directive to be configured such that, upon an error, it rewrites the request and sends it back through the chain again. Then proxy or markdown or other middlewares could try to handle the "new" request, and do what they would want to with them.

The design of Caddy 2 allows for this.


Warning MaxListenersExceededWarning

While looking at the restate-chaos test failures, i stumbled on this warning:
TMzMzM5EAQYDhBS-01891ab91bf67db4b46ad36b5bf39e50] [Verify] : Invoking function.
[restate] [2023-07-03T07:48:06.291Z] DEBUG: [interpreter.CommandInterpreter-FwoTCg10ZXN0LTI4MTMzMzM5EAQYDhBS-01891ab91bf67db4b46ad36b5bf39e50] [Verify] : Function completed successfully.
[restate] [2023-07-03T07:48:06.335Z] DEBUG: [verifier.CommandVerifier-EwoNdGVzdC0yODEzMzMzORAEGA4=-01891ab91be67f6594d54c9026719c83] [Verify] : Function completed successfully.
(node:2) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 64 close listeners added to [Transform]. Use emitter.setMaxListeners() to increase limit

Probably unrelated to my research, but still worth noting. I ran the latest e2e-node-services:latest image.

Just stumbled on this again while playing with the https://github.com/technomage/restate-perf
I see this on the test service immediately after it sends the milion of background calls.
(node:21041) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drain listeners added to [ServerHttp2Stream]. Use emitter.setMaxListeners() to increase limit
(Use `node-18 --trace-warnings ...` to show where the warning was created)

Node and kernel version:
!11791 ➜ node --version
v18.18.2
!11792 ➜ uname -a
Linux fedora.fritz.box 6.6.3-100.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 28 20:36:17 UTC 2023 x86_64 GNU/Linux

if its on ServerHttp2Stream i reckon this is just inherent to nodes http2 libs if you have enough concurrent streams

the problem looks like you set a callback on the connection.send for each message

I haven't seen this anymore, so i'm gonna close it.


update color picker docs

PTAL @pbakaus

Nice, what you could include on this page are the little buttons that appear when you hover over the little plus on a style rule, that will then allow you to quickly add a background or foreground color.
Anyway, LGTM.


In Penalty Shoot-Outs some trials never end

We currently face the issue that during the penalty shoot-outs some of the trials are not ending (usually the second or third one). So the game just stays in the state playing indefinitely and the next trial can't starte. Note that we don't face the issue for the test scenarios, they are all passing. However, we did not manage to successfully play an entire penalty shoot-out game at the moment because of this.

After looking at the code, it sounds to me that it's related to the game.sent_finish that might not be reset to False because state goes to SET before one tick of the referee is performed. This makes the condition that gets out of the penalty trial always false:
if not game.sent_finish and game.state.seconds_remaining <= 0:
I'll try a hotfix for this, but I think it's still good to parallelize on this issue.


Unable to turn idle inhibition off

/usr/local/bin/waynergy version v0.0.13-8-g2a01d0c
xkb_key_offset = 8

[raw-keymap]
offset = 0
offset_on_explicit = false
331 = 113  #LEFT
328 = 111  #UP
333 = 114  #RIGHT
336 = 116  #DOWN
338 = 118  #INS
327 = 110  #HOME
329 = 112  #PGUP
339 = 119  #DEL
335 = 115  #END
337 = 117  #PGDN
347 = 133  #WIN
312 = 108  #RALT
349 = 135  #MENU

284 = 104  #KPEN
325 = 77   #NMLK
309 = 106  #KP/

[screensaver]
start = pkill -SIGUSR1 swayidle
stop = pkill swaylock

[idle-inhibit]
enable = false
#method = mouse
#interval = 30
#keyname = HYPR

I am using sway but I have some QT/KDE libraries and tools installed, I am not sure if that is what is causing this.
I have another machine where this was working, so it seems to be unique to this system.
0.0136155640.015209062: [INFO] Using KDE idle inhibition protocol
0.0209126240.025093393: [INFO] Using KDE idle inhibition protocol
0.3559128020.357063261: [INFO] Using KDE idle inhibition protocol
0.0352910920.039471789: [INFO] Using KDE idle inhibition protocol
0.0704790650.075712250: [INFO] Using KDE idle inhibition protocol
0.0725312050.077480146: [INFO] Using KDE idle inhibition protocol
0.0664478700.068386339: [INFO] Using KDE idle inhibition protocol
0.016435164: [DEBUG] Got idle manager
0.060752152: [INFO] Using KDE idle inhibition protocol

The KDE stuff is because the protocol used originates with KDE. In any case, this should work again.


KOMA-Script -classes work badly with fontspec of XeLaTeX

Please check out this bugreport:
http://bugs.debian.org/678079
Should I really create a minimal example file for you? Have ever even tested KOMA-Script -classes with XeLaTeX and fontspec?

I'm going to close this without an example that's minimal enough for me to quickly try. Hopefully the bug has been fixed in the mean time.


Add support for delays

Changes:

API now supports a delay (in seconds) with a test
Code formatting

reviewer: @sindresorhus

@sindresorhus PR updated per last comment :)


Unable detect the fakerlibrary

Why I will encounter this issue after executing command below?
python -m faker
/usr/bin/python: No module named faker

Hey @xyngfei , can you give me some more information? What steps did you follow to install your dependencies? What is the output of pip list?

@guykisel
Here is this...
> pyobjc-framework-WebKit                2.5.1
> pyOpenSSL                              0.13.1
> pyparsing                              2.0.1
> python-dateutil                        1.5
> pytz                                   2013.7
> requests                               2.18.4
> robotframework                         3.0.2
> robotframework-databaselibrary         1.0.1
> **robotframework-faker                   4.2.0**
> robotframework-jsonlibrary             0.2
> robotframework-requests                0.4.7
> robotframework-selenium2library        1.8.0
> scipy                                  0.13.0b1
> selenium                               3.5.0

ip-xxx:spec_functional xyngfei$ sudo pip install -U robotframework-faker
The directory '/Users/xyngfei/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/xyngfei/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting robotframework-faker
  Downloading robotframework_faker-4.2.0-py2.py3-none-any.whl
Requirement already up-to-date: robotframework in /Library/Python/2.7/site-packages (from robotframework-faker)
Collecting faker (from robotframework-faker)
  Downloading Faker-0.8.3-py2.py3-none-any.whl (629kB)
    100% |████████████████████████████████| 634kB 1.7MB/s
Collecting wrapt (from robotframework-faker)
  Downloading wrapt-1.10.11.tar.gz
Collecting python-dateutil>=2.4 (from faker->robotframework-faker)
  Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
    100% |████████████████████████████████| 194kB 2.8MB/s
Collecting email-validator==1.0.2 (from faker->robotframework-faker)
  Downloading email_validator-1.0.2-py2.py3-none-any.whl
Requirement already up-to-date: ipaddress; python_version == "2.7" in /Library/Python/2.7/site-packages (from faker->robotframework-faker)
Collecting six (from faker->robotframework-faker)
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting dnspython>=1.15.0 (from email-validator==1.0.2->faker->robotframework-faker)
  Downloading dnspython-1.15.0-py2.py3-none-any.whl (177kB)
    100% |████████████████████████████████| 184kB 2.4MB/s
Requirement already up-to-date: idna>=2.0.0 in /Library/Python/2.7/site-packages (from email-validator==1.0.2->faker->robotframework-faker)
Installing collected packages: six, python-dateutil, dnspython, email-validator, faker, wrapt, robotframework-faker
  Found existing installation: six 1.4.1
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling six-1.4.1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
    copy2(src, real_dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
    copystat(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
    os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/tmp/pip-S9SOm_-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
ip-xxx:spec

End up i only can use the command below to install
sudo pip install -U --ignore-installed six robotframework-faker
Can i confirm does it have any configuration issue on my mac machine?

can you try installing to a virtualenv? http://docs.python-guide.org/en/latest/dev/virtualenvs/
it's usually not a good idea to install things globally.

I face the same issue.
Meanwhile python -m faker lists all faker methods.
I use this setup:
(rf_demo) markus@markus-VirtualBox:~/mbo-rfdemo$ pip list
Package              Version
-------------------- -------
Faker                0.9.0
ipaddress            1.0.22
pip                  18.0
Pypubsub             4.0.0
python-dateutil      2.7.3
robotframework       3.0.4
robotframework-faker 4.2.0
setuptools           40.0.0
six                  1.11.0
text-unidecode       1.2
typing               3.6.4
wheel                0.31.1
wrapt                1.10.11

When I execute the following testcase
*** Settings ***
Library  OperatingSystem
Library  FakerLibrary

*** Test Cases ***
Verzeichnis soll nicht leer sein
	[Documentation]  Verzeichnis darf nicht leer sein.
	[Tags]  verzeichnis
	${Files}=  Anzahl Dateien im Windows-Verzeichnis
	Should Not Be Equal As Numbers  0  ${Files}

Wort Generator
	${words}=  FakerLibrary.Words
	Log  words: ${words}
	${words}=  FakerLibrary.Words  nb=${10}
	Log  words: ${words}

*** Keywords ***
Anzahl Dateien im Windows-Verzeichnis
	${Anzahl}=  Count Files In Directory  .
	Log  ${Anzahl}
	[Return]  ${Anzahl}

I get
[ ERROR ] Error in file '/home/markus/mbo-rfdemo/dir.robot': Importing test library 'FakerLibrary' failed: ImportError: No module named FakerLibrary
Traceback (most recent call last):
  None
PYTHONPATH:
  /home/markus/.local/bin
  /usr/lib/python2.7
  /usr/lib/python2.7/plat-x86_64-linux-gnu
  /usr/lib/python2.7/lib-tk
  /usr/lib/python2.7/lib-old
  /usr/lib/python2.7/lib-dynload
  /home/markus/.local/lib/python2.7/site-packages
  /usr/local/lib/python2.7/dist-packages
  /usr/lib/python2.7/dist-packages

I face the same issue.
Meanwhile python -m faker lists all faker methods.
I use this setup:
(rf_demo) markus@markus-VirtualBox:~/mbo-rfdemo$ pip list
Package              Version
-------------------- -------
Faker                0.9.0
ipaddress            1.0.22
pip                  18.0
Pypubsub             4.0.0
python-dateutil      2.7.3
robotframework       3.0.4
robotframework-faker 4.2.0
setuptools           40.0.0
six                  1.11.0
text-unidecode       1.2
typing               3.6.4
wheel                0.31.1
wrapt                1.10.11

When I execute the following testcase
*** Settings ***
Library  OperatingSystem
Library  FakerLibrary

*** Test Cases ***
Verzeichnis soll nicht leer sein
	[Documentation]  Verzeichnis darf nicht leer sein.
	[Tags]  verzeichnis
	${Files}=  Anzahl Dateien im Windows-Verzeichnis
	Should Not Be Equal As Numbers  0  ${Files}

Wort Generator
	${words}=  FakerLibrary.Words
	Log  words: ${words}
	${words}=  FakerLibrary.Words  nb=${10}
	Log  words: ${words}

*** Keywords ***
Anzahl Dateien im Windows-Verzeichnis
	${Anzahl}=  Count Files In Directory  .
	Log  ${Anzahl}
	[Return]  ${Anzahl}

I get
[ ERROR ] Error in file '/home/markus/mbo-rfdemo/dir.robot': Importing test library 'FakerLibrary' failed: ImportError: No module named FakerLibrary
Traceback (most recent call last):
  None
PYTHONPATH:
  /home/markus/.local/bin
  /usr/lib/python2.7
  /usr/lib/python2.7/plat-x86_64-linux-gnu
  /usr/lib/python2.7/lib-tk
  /usr/lib/python2.7/lib-old
  /usr/lib/python2.7/lib-dynload
  /home/markus/.local/lib/python2.7/site-packages
  /usr/local/lib/python2.7/dist-packages
  /usr/lib/python2.7/dist-packages

Its working fine now? I have the same issue and cannot fix.

@guykisel @laurentbristiel
Any update on the above issues? I try to install the latest release and the library still undetected
I can't use keywords like Name etc
pip list output
Faker                          8.9.1
robotframework-faker           5.0.0

Hello,
I just re-tried the latest versions of robotframework and robotframework-faker and it works OK for me.
Maybe there is a mix in your environment between python2 and python3.
If you want to work with Python2, could you do:

python2 -m pip install robotframework-faker
python2 -p pip freeze <= to check the install was done OK
python2

import robotframework-faker
=> doing so, ensure that you do everything with the same Python
And if you are willing to use Python3, do the same with python3

@guykisel @laurentbristiel
Any update on the above issues? I try to install the latest release and the library still undetected
I can't use keywords like Name etc
pip list output
Faker                          8.9.1
robotframework-faker           5.0.0

Were you able to fix this bug? I have the exact same one. I don't see keywords. But it's working.

I only see these keywords


Change "its" to "their" in HisHer function

Wow, I completely forgot it used 'it' for people who chose N/A. That's weird.


BrendelBethgeAttack breaks with array clip range

Describe the bug
This works
victim_policy = classifier(
model=policy_net,
loss=CrossEntropyLoss(), #most common func for classification
nb_classes=env.action_space[0].n,
input_shape=agent.observation_space.shape,
device_type='gpu',
clip_values = (0,1)
)
bba = BrendelBethgeAttack(estimator=victim_policy)
bba.generate(np.expand_dims(obs, axis=0))
but defining the clip range with arrays leads to the error below:
victim_policy = classifier(
model=policy_net,
loss=CrossEntropyLoss(), #most common func for classification
nb_classes=env.action_space[0].n,
input_shape=agent.observation_space.shape,
device_type='gpu',
clip_values =(agent.observation_space.low, agent.observation_space.high) #min and max values of each feature
)
Which seems to be an issue with numba's iadd.
{
"name": "TypingError",
"message": "Failed in nopython mode pipeline (step: nopython frontend)

Resolution failure for literal arguments:
Failed in nopython mode pipeline (step: nopython frontend)
Resolution failure for literal arguments:
Failed in nopython mode pipeline (step: nopython frontend)
No implementation of function Function() found for signature:

iadd(float64, array(float64, 1d, C))

There are 18 candidate implementations:
- Of which 16 did not match due to:
Overload of function 'iadd': File: : Line N/A.
With argument(s): '(float64, array(float64, 1d, C))':
No match.
- Of which 2 did not match due to:
Operator Overload in function 'iadd': File: unknown: Line unknown.
With argument(s): '(float64, array(float64, 1d, C))':
No match for registered cases:
* (int64, int64) -> int64
* (int64, uint64) -> int64
* (uint64, int64) -> int64
* (uint64, uint64) -> uint64
* (float32, float32) -> float32
* (float64, float64) -> float64
* (complex64, complex64) -> complex64
* (complex128, complex128) -> complex128
During: typing of intrinsic-call at c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py (697)
File "..\..\..\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py", line 697:
def _max_logit_diff(self, x, b, _ell, _u, c):

if b[n] > 0:
cmax += b[n] * (_u - x[n])
^

Resolution failure for non-literal arguments:
None

During: resolving callee type: BoundFunction((<class 'numba.core.types.misc.ClassInstanceType'>, '_max_logit_diff') for instance.jitclass.LinfOptimizer#28e19ab1300<bfgsb:instance.jitclass.BFGSB#28e19a5f8b0<>>)
During: typing of call at c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py (656)
File "..\..\..\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py", line 656:
def solve(self, x0, x, b, min_, max_, c, r):

x0, x, b = x0.astype(np.float64), x.astype(np.float64), b.astype(np.float64)
cmax, cmaxnorm = self.max_logit_diff(x, b, min, max_, c)
^

Resolution failure for non-literal arguments:
None

During: resolving callee type: BoundFunction((<class 'numba.core.types.misc.ClassInstanceType'>, 'solve') for instance.jitclass.LinfOptimizer#28e19ab1300<bfgsb:instance.jitclass.BFGSB#28e19a5f8b0<>>)
During: typing of call at  (3)
File "", line 3:

",
	"stack": "---------------------------------------------------------------------------
TypingError                               Traceback (most recent call last)
c:\\Users\\usr\\Documents\\CityLearn Examples\\ARTtest 1d discrete.ipynb Cell 45 line 1
----> 1 bba.generate(np.expand_dims(obs, axis=0))
File c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py:2368, in BrendelBethgeAttack.generate(self, x, y, **kwargs)
2365 _c = corr_logits_diffs[k]
2366 r = region[sample]
-> 2368 delta = self._optimizer.solve(_x0, _x, _b, bounds[0], bounds[1], _c, r)  # type: ignore
2369 deltas.append(delta)
2371 k += 1  # idx of masked sample
File c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages
umba\experimental\jitclass\boxing.py:61, in _generate_method..wrapper(*args, **kwargs)
59 @wraps(func)
60 def wrapper(*args, **kwargs):
---> 61     return method(*args, **kwargs)
File c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages
umba\core\dispatcher.py:468, in _DispatcherBase._compile_for_args(self, *args, **kws)
464         msg = (f"{str(e).rstrip()}

This error may have been caused "
465                f"by the following argument(s):
{args_str}
")
466         e.patch_message(msg)
--> 468     error_rewrite(e, 'typing')
469 except errors.UnsupportedError as e:
470     # Something unsupported is present in the user code, add help info
471     error_rewrite(e, 'unsupported_error')
File c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages
umba\core\dispatcher.py:409, in _DispatcherBase._compile_for_args..error_rewrite(e, issue_type)
407     raise e
408 else:
--> 409     raise e.with_traceback(None)
TypingError: Failed in nopython mode pipeline (step: nopython frontend)

Resolution failure for literal arguments:
Failed in nopython mode pipeline (step: nopython frontend)
Resolution failure for literal arguments:
Failed in nopython mode pipeline (step: nopython frontend)
No implementation of function Function() found for signature:

iadd(float64, array(float64, 1d, C))

There are 18 candidate implementations:
- Of which 16 did not match due to:
Overload of function 'iadd': File: : Line N/A.
With argument(s): '(float64, array(float64, 1d, C))':
No match.
- Of which 2 did not match due to:
Operator Overload in function 'iadd': File: unknown: Line unknown.
With argument(s): '(float64, array(float64, 1d, C))':
No match for registered cases:
* (int64, int64) -> int64
* (int64, uint64) -> int64
* (uint64, int64) -> int64
* (uint64, uint64) -> uint64
* (float32, float32) -> float32
* (float64, float64) -> float64
* (complex64, complex64) -> complex64
* (complex128, complex128) -> complex128
During: typing of intrinsic-call at c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py (697)
File "..\..\..\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py", line 697:
def _max_logit_diff(self, x, b, _ell, _u, c):

if b[n] > 0:
cmax += b[n] * (_u - x[n])
^

Resolution failure for non-literal arguments:
None

During: resolving callee type: BoundFunction((<class 'numba.core.types.misc.ClassInstanceType'>, '_max_logit_diff') for instance.jitclass.LinfOptimizer#28e19ab1300<bfgsb:instance.jitclass.BFGSB#28e19a5f8b0<>>)
During: typing of call at c:\Users\usr\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py (656)
File "..\..\..\anaconda3\envs\CityLearnART\lib\site-packages\art\attacks\evasion\brendel_bethge.py", line 656:
def solve(self, x0, x, b, min_, max_, c, r):

x0, x, b = x0.astype(np.float64), x.astype(np.float64), b.astype(np.float64)
cmax, cmaxnorm = self.max_logit_diff(x, b, min, max_, c)
^

Resolution failure for non-literal arguments:
None

During: resolving callee type: BoundFunction((<class 'numba.core.types.misc.ClassInstanceType'>, 'solve') for instance.jitclass.LinfOptimizer#28e19ab1300<bfgsb:instance.jitclass.BFGSB#28e19a5f8b0<>>)
During: typing of call at  (3)
File "", line 3:

"
}
To Reproduce
please see description, I will provide more detail if required
System information (please complete the following information):

OS: win10
Python version: 3.10.12
ART version or commit number: 1.16
PyTorch version
numba version: 58.1

Hi @KandBM Thank you for reporting this issue. I think your analysis of numba's iadd being part of the issue is correct. Do you think it is possible to replace it with code that can add floats and arrays?

@beat-buesser It does at least work with floats, so the minimal solution would be the verify that the estimator's clip range contains a single min and max value (none or arrys break it). I'm not familiar enough with numba to rewrite the operation to work with arrays, but fortunately my project works with just a single min and max value. If I do find something I'll be sure to share it.

Closing because of inactivity, please reopen if still current.


M3-4478 Add: access management for OBJ access keys

Description
Add limited access controls for OBJ access keys. See the JIRA ticket for details.
Note to Reviewers
Work for this is done, but some changes to the API for this endpoint are in the works, so marking it wait until that's ironed out.
To test:
Create access keys of both varieties (with and without the "Limited Access" toggle active). Check the payload and API response, if limited is not toggled, bucket_access: null should be sent, and that should come back from the API along with limited: false. If the switch is toggled, the selected permissions should be included in request and response payloads.
If you try to create a key with access to 0 buckets (select "limited access" and set all the radio buttons to "none"), you'll end up with a non-limited key--this is the bit the API has to fix.

The other part of the ticket was being able to view scopes of previously created Access Keys; not sure if you were planning on doing that here or separately, but we should add that before we release this.

Right, I forgot to mention this. Was planning to do this as a follow-up. We can't release until the API has adjusted this anyway, merging this on ~Monday after the release branch is cut makes sense. (If you'd like to demo what we've got from the branch to get feedback, that's fine too).


Add Geometric Algebra

Adds a geometric algebra library to the std and enhances some of the tests.

LGTM


Face not being detected when image contains face.

I'm trying to use your module with Electron in a renderer process.
I'm trying to retrieve the face descriptor of this image:

Which should work but doesn't. When I run the following code snippet, I get undefined:
var input = document.getElementById("myImg"); // Image of woman
console.log(faceapi); // Just to check if I have the right module.

(async () => {
    const MODELS = "./models"; // Contains all the weights.

    await faceapi.loadSsdMobilenetv1Model(MODELS)
    await faceapi.loadFaceLandmarkModel(MODELS)
    await faceapi.loadFaceRecognitionModel(MODELS)

    const fullFaceDescriptions = await faceapi // I tried the "detectAllFaces(input)" method too, with no success
    .detectSingleFace(input)
    .withFaceLandmarks()
    .withFaceDescriptor()

    console.log(fullFaceDescriptions); // Returns "undefined"
})();

When I try to run the following code snippet, I get an empty array:
var input = document.getElementById("myImg"); // Image of woman
console.log(faceapi); // Just to check if I have the right module.

(async () => {
    const MODELS = "./models"; // Contains all the weights.

    await faceapi.loadSsdMobilenetv1Model(MODELS)
    await faceapi.loadFaceLandmarkModel(MODELS)
    await faceapi.loadFaceRecognitionModel(MODELS)

    const fullFaceDescriptions = await faceapi // I tried the "detectAllFaces(input)" method too, with no success
    .detectAllFaces(input)
    .withFaceLandmarks()
    .withFaceDescriptors()

    if (!fullFaceDescriptors.length) { // This condition is satisfied.
        console.log(fullFaceDescriptors); // Returns an empty array.
        return;
    }

    console.log(fullFaceDescriptors); // Code doesn't even reach this point.
})();

My HTML file:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>FAJS</title>

    <style>
    </style>
</head>
<body>
    <img id="myImg" src="woman.jpg" alt="">

    <script src="./node_modules/face-api.js/dist/face-api.min.js"></script>
    <script src="index.js"></script>
</body>
</html>

Please help as I really need this to work for a project of mine. Thanks
P.S: Thanks for making this module. It's great!
EDIT: I've been looking for 2 days now and haven't been able to find a solution due to which I had to open this issue. My apologies if this has a very easy fix and wasted your time.

If you have an Intel GPU, use the new TinyFaceDetector, which should work on an Intel GPU instead of SSDMobilenetv1.
Intel Support is still an open topic for tfjs: https://github.com/tensorflow/tfjs/issues/510

I don't even have a GPU and my computer is very slow...
Does that mean that I won't be able to use this module?

Oh well, then what kind of cpu? If you don't have a then you can run everything on the CPU.
Are there any errors thrown by tfjs, when trying to register a backend?

Oh boy, this is embarrassing.
I have an Intel Core i3 with 4 GB of RAM and no, I don't see any errors by tfjs anywhere.

Hi, how can i train my own image so that it can recognize it in BBT face recognition..
I have some issues as it is recognizing them as unknown.
Please help.

@Frixoe did you manage to figure out the issue? Would be interested, what the issue was.

I am having a similar problem on a Samsung slate 7 with a i5 Processor 2467M,  Intel® HD Graphics 3000. I'm getting undefined when trying to compute a descriptor , when clearly the image contains a face. How do I debug this ? I've tried TinyFaceDetector and SSD , both return undefined.

@justadudewhohacks I guess the issue is, electron is integrating node env with the application. Hence face-api.js is considering it as node environment and running node specific code

@justadudewhohacks Sorry for the super late reply but I don't exactly remember what was causing the issue. I ended up fixing it somehow anyways.

I solved this issue by changing the faceDetectionOptions I use from SsdMobilenetv1Options to TinyFaceDetectorOptions
const faceDetectionOptions2 = new faceapi.TinyFaceDetectorOptions({
        minConfidence
    });
const detections = await faceapi.detectAllFaces(faceapi_img, faceDetectionOptions2).withFaceExpressions();

Then I got my result
{
            "detection": {
                "_imageDims": {
                    "_width": 400,
                    "_height": 350
                },
                "_score": 0.6168234741187992,
                "_classScore": 0.6168234741187992,
                "_className": "",
                "_box": {
                    "_x": 95.38415659855805,
                    "_y": 68.64911417852878,
                    "_width":<PHONE_NUMBER>4164075,
                    "_height":<PHONE_NUMBER>3445953
                }
            },
            "expressions": {
                "neutral": 0.06289584934711456,
                "happy": 0.000022686948796035722,
                "sad": 0.04720577597618103,
                "angry": 0.8852170705795288,
                "fearful": 0.0000011660883956210455,
                "disgusted": 0.0027700543869286776,
                "surprised": 0.001887441030703485
            }
        }
        ```

I hop this helps.


Incorrect timing stats published in 3.2.0

Expected behaviour
Timings are consistent with previous version (3.1.1) in an otherwise like-for-like environment.
Actual behaviour
Stats are incorrect by an order of magnitude, giving timings in hours which are impossible.

Steps to reproduce
Generate timing metrics using 3.2.0.
/cc @dv00d00

Caused by changes in #104.

on it


BUG: istiod ready status mark

Currently we mark istiod ready when waitForCacheSync returns true. It compares InboundUpdates and CommittedUpdates, and looks right, but the InboundUpdates is only added when the event handler get run, not the time istiod receives the resource event.  The event handler for a particular event is deposited into the queue and run by the queue worker asynchrounously.
func (s *Server) waitForCacheSync(stop <-chan struct{}) bool {
	if !cache.WaitForCacheSync(stop, s.cachesSynced) {
		log.Errorf("Failed waiting for cache sync")
		return false
	}

	if !cache.WaitForCacheSync(stop, func() bool {
		return s.XDSServer.CommittedUpdates.Load() >= expected
	}) {
		log.Errorf("Failed waiting for push context initialization")
		return false
	}

	return true
}

I  tested it by adding a debug log https://github.com/istio/istio/compare/master...hzxuzhonghu:test-sync?expand=1
The logs printed:
2021-06-02T09:05:11.045257Z     error   ====waitForCacheSync: committed 4061, expected 2140
2021-06-02T09:05:11.045327Z     info    ads     All caches have been synced up in 5.182093298s, marking server ready

It shows the InboundUpdates number is only 2140, but actually in my cluster there are 8777 pods + 550 svc + 550 endpoint + other resources(nodes, etc).
So the way to mark istiod ready is definitely not right, which could cause sidecar to get temporary xds config and then influence the traffic

Shouldn't the controller not pass HasSynced until it has completed all event handlers? Is it not doing that?

Yes, it is not doning as expected. Firstly, it is not guaranteed all the resources(service, endpoint, vs, dr all sent to the queue), not to mention the queue worker runs all the event tasks.
Fortunately, we have syncAll logic for service controller at the beginning, but no clear up the queue of it, a waste of cpu.
But for configcontroller, all the configs handling are async, no guarantee at all. , this could cause the Committed updates are only from a part of the total configs.

Clearing up queue is very necessary. If pilot is ready,but the queue still have a lot of events, new event will wait for a long time.
So pilot should not be ready until it has completed all event handlers, not only syncAll.

Yeah， as I said above, many tasks in the queue are duplicate with what SyncAll does, we should come up with a way to clear them out or not to enqueue them


how to add a solution to a kata

Sorry if this is a trivial question, but I could not find neither in documentations nor by scrolling up and down the website how to add my solution for a given kata!
I appreciate any comment/advice..

What do you mean by "add your solution for a given kata"? Where are you adding it in?

I am not sure.. that's actually my question. I'm a real beginner here. I found other people's solutions for each kata. How do they add it there?
I also found in documentation terms like "..when you added you solution.."

Where do you see other people's solution? Like, which page?
Also, if you solve a kata properly and submitted final, your solution will be in the solution page too.

"Also, if you solve a kata properly and submitted final" -> yeah how to do this?
I mean when I open a given kata (e.g. this link), I see 3 tabs: details, solutions, discourse. Under solutions, I see others solution. How can I add mine there?

By... solving the kata? I hope you know you're supposed to be solving katas most of the time, right?
Click "Train" to begin solving katas ;-)


Deprecation warning - ESLINT_LEGACY_OBJECT_REST_SPREAD

Bug report
Deprecation warning:
(node:7512) [ESLINT_LEGACY_OBJECT_REST_SPREAD] DeprecationWarning: The 'parserOptions.ecmaFeatures.experimentalObjectRestSpread' option is deprecated. Use 'parserOptions.ecmaVersion' instead. (found in "@nimbl3/eslint-config-nimbl3")

Fixed in #5


[REEF-969] Fix FailedEvaluatorHandlerTest

This addressed the issue by

Adding a verification message to check for FailedEvaluatorHandler being called.
Fix count to check for in ReefFunctionalTest.

JIRA:
REEF-969

@dongjoon-hyun Ready for a second review. Thanks!

It looks good to me, and I'm testing now.

I'll merge this.


Log file location

After the 1.10.2 update,  the process mods screen will not complete and closes the application.   I have no error message popup so I'm wondering if there is a log file location that I can see what actually happened and if it's a mod that causes or something else that I should report.

Yes, there is.  WIN+R, "%appdata", go to fsg-mod-assistant, the file you are looking for is "assist.log"

Rejection Timestamp : 2023-01-28T20:23:05.973Z
Caught rejection: Error: EPERM: operation not permitted, open 'C:\Users\scota\AppData\Local\fsg-mod-assistant-updater\pending\temp-FSModAssistant-Setup-1.10.2.exe'
Rejection origin: [object Promise]
Error: EPERM: operation not permitted, open 'C:\Users\scota\AppData\Local\fsg-mod-assistant-updater\pending\temp-FSModAssistant-Setup-1.10.2.exe'Exception Timestamp : 2023-01-28T20:25:58.440Z
Caught exception: Error: Tray is destroyed
Exception origin: uncaughtException
Error: Tray is destroyed
at Timeout._onTimeout (C:\Users\scota\AppData\Local\Programs\fsg-mod-assistant\resources\app.asar\modAssist_main.js:431:29)
at listOnTimeout (node:internal/timers:559:17)
at process.processTimers (node:internal/timers:502:7)
That was my crash.log file.   I didn't find anything in the assist.log file.

Well, the second part was simple, I've correct that.  The first part is more difficult, I have no idea why that file would be throwing a permission error, it looks like maybe windows got confused in some way?  I'd give deleting that file a shot:
C:\Users\scota\AppData\Local\fsg-mod-assistant-updater\pending\temp-FSModAssistant-Setup-1.10.2.exe
I've found one or two open issues on the electron github that hint at this, but nothing terribly helpful.


Fix DataTree.from_dict to be insensitive to insertion order

[x] Closes #9276
[x] Tests added
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst
[ ] ~New functions/methods are listed in api.rst~

The test failure is an unrelated flaky dask test so now I have an approval I will merge.


Smartgit installation stopped working

After a new version, you're unable to download SmartGit. Now both versions are available ARM and Intel.
`Actions from policy log:
[STEP 1 of 4]
Executing Policy SmartGit
[STEP 2 of 4]
Running script Installomator...
Script exit code: 2
Script result: 2021-11-18 14:31:30 shifting arguments for Jamf
2021-11-18 14:31:30 smartgit ################## Start Installomator v. 0.5.0
2021-11-18 14:31:30 smartgit ################## smartgit
2021-11-18 14:31:30 smartgit BLOCKING_PROCESS_ACTION=prompt_user
2021-11-18 14:31:30 smartgit NOTIFY=success
2021-11-18 14:31:30 smartgit LOGO=/System/Applications/App http://Store.app/Contents/Resources/AppIcon.icns
2021-11-18 14:31:30 smartgit no blocking processes defined, using SmartGit as default
2021-11-18 14:31:30 smartgit Changing directory to /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.8xQxExm7
2021-11-18 14:31:31 smartgit Spotlight not returning any app, trying manually in /Applications.
2021-11-18 14:31:31 smartgit could not find http://SmartGit.app
2021-11-18 14:31:31 smartgit appversion:
2021-11-18 14:31:31 smartgit Latest version of SmartGit is 21.2.0
2021-11-18 14:31:31 smartgit Downloading https://www.syntevo.com/downloads/smartgit/smartgit-x86_64-21_2_0.dmg
/downloads/smartgit/smartgit-aarch64-21_2_0.dmg to SmartGit.dmg
2021-11-18 14:31:31 smartgit error downloading https://www.syntevo.com/downloads/smartgit/smartgit-x86_64-21_2_0.dmg
/downloads/smartgit/smartgit-aarch64-21_2_0.dmg
2021-11-18 14:31:31 smartgit Deleting /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tmp.8xQxExm7
2021-11-18 14:31:31 smartgit App not closed, so no reopen.
2021-11-18 14:31:31 smartgit ################## End Installomator, exit code 2
Error running script: return code was 2.
[STEP 3 of 4]
[STEP 4 of 4]
`

Thank you for reporting this: It is now fixed in this PR: https://github.com/Installomator/Installomator/pull/317


Feature request: support encrypted private keys for ssl

It would be great if traefik's ssl configuration supported a private key using a passphrase. Something like:
...
[[entrypoints.https.tls.certificates]]
certFile = "/etc/traefik/ssl/cert.pem"
keyFile = "/etc/traefik/ssl/key.pem"
keyFilePassphrase = "foobar"
...

This would be especially useful when combined with #7. The keyfile password wouldn't even need to be written in the config file.
What version of Traefik are you using (traefik version)?
v1.1.2
What is your environment & configuration (arguments, toml...)?
defaultEntryPoints = ["http", "https"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      certFile = "/etc/traefik/ssl/cert.pem"
      keyFile = "/etc/traefik/ssl/key.pem"

in my case, I would like to have a passphrase for /etc/traefik/ssl/key.pem
What did you do?
I tried to use the above configuration in Traefik, where the keyFile was encrypted with a passphrase.
What did you expect to see?
A configuration option for the keyFile's passphrase
What did you see instead?
I saw the following log output before Traefik exited with an error:
time="2017-03-09T10:24:32+11:00" level=error msg="Error creating TLS config tls: failed to parse private key"
time="2017-03-09T10:24:32+11:00" level=fatal msg="Error preparing server: tls: failed to parse private key"

looks like crypto/tls supports this. https://github.com/golang/go/issues/10181#issuecomment-82072510

@sworisbreathing How would you envision the passphrase being provided to traefik? Via config?

How would you envision the passphrase being provided to traefik? Via the config toml?
That would be one option (see my example above). Also, once #7 is delivered the passphrase could be specified via environment variables.

if you provide the key and the passphrase via config, then isn't that the same?
It is, and there should be a warning in the documentation about storing the passphrase on the filesystem.

docker has nice feature docker secrets it would be nice to just provide file where password is stored like /run/secrets/passphrase

It would be nice if traefik could also do what apache and nginx do here and allow piping of the password from another utility.
https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslpassphrasedialog
also:
https://serverfault.com/questions/161768/restart-webserver-without-entering-a-password
https://serverfault.com/questions/71043/ssl-password-on-apache2-restart
(Forgive me for linking to serverfault... wish I had a better link to some official docs)
We are using traefik as a kubernetes ingress controller implementation and are getting push back that the "standard" mechanism isn't available.  We really like traefik's ability to hot load new config but the lack of support for encrypted private keys sets us up against some institutional hurdles.

@swestcott
anyone
How do we specify a passphrase while using custom tls certs in v2.0 ?

https://github.com/traefik/traefik/pull/6518 has been closed as 'declined', so this one can be closed as 'won't do', right?

Hello,
I'm closing this issue because we forgot to close it when we declined #6518.


Fix test error logs in EngagementForm tests

Issue #: https://github.com/bcgov/met-public/issues/2077
Description of changes:

Split EngagementForm.Edit into two tests
Add missing mocks

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the met-public license (Apache 2.0).

Codecov Report

Merging #2116 (7b31454) into main (74f7406) will decrease coverage by 0.02%.
The diff coverage is 100.00%.

:exclamation: Current head 7b31454 differs from pull request most recent head f849b68. Consider uploading reports for the commit f849b68 to get more accurate results

@@            Coverage Diff             @@
##             main    #2116      +/-   ##
==========================================
- Coverage   69.31%   69.30%   -0.02%
==========================================
  Files         459      459
  Lines       14741    14742       +1
  Branches     1151     1152       +1
==========================================
- Hits        10218    10217       -1
- Misses       4326     4328       +2
  Partials      197      197

Flag
Coverage Δ

metweb
61.79% <100.00%> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

.../form/EngagementFormTabs/EngagementTabsContext.tsx
71.15% <100.00%> (+0.28%)
:arrow_up:

... and 1 file with indirect coverage changes


Feature suggestion: Add a Hook for tab selection

If possible it would be nice to add a hook for tab selection. This way scripts can be run when a tab is selected and unselected.
What I'm looking to do is to run a short world script that renders the Paper Doll from https://foundryvtt.com/packages/fvtt-paper-doll-ui when the inventory tab is selected, then removed when another tab is selected.

Here's what I'm thinking:

tidy5e-sheet.preSelectTab

can be cancelled like how preUseItem can be cancelled, by returning false
params

app
element 👈 this is an HTML Element, not jquery
{ currentTab: string, newTab: string }

tidy5e-sheet.selectTab

occurs after the deed has been done
params

app
element
tab 👈 a string

This is ready to roll. When you get a chance, give it a shot. The API is as shown above.

Next step: Adding tabSelected call to the initial render of the tab strip.

The extra call to the tab selection hooks is now released in v0.2.4. I'm hoping to see the most rad paper doll appear on sheet open.

Closing as completed.


Console logging not supported

Slowly updating my PNPs script to use this Core version of PNP.
When I set my command
Set-PnPTraceLog -On -Level:Debug

I get the error message "WARNING: Console logging not supported"
Even trying the command
Set-PnPTraceLog -On -Level:Debug -WriteToConsole

I still get the error message.
Has this functionality been removed in the new version of PNP?
Originally posted by @pmatthews05 in https://github.com/pnp/powershell/discussions/258

@erwinvanhunen thanks. Didn't realise there was a file logging option until you mentioned it to me in the discussion thread.
Hope writing to the console isn't a limitation with .NET core, as it's very useful seeing the logs displayed on the screen in devops pipelines, and while developing when running Invoke-PnPSiteTemplate, especially if it falls over.

We re-enabled console logging. It will be available in the 1.3.7-nightly build tomorrow.

Thanks. I will test this Friday.

Hi @erwinvanhunen a bit later than expected to reply. But I have tested this today and can see console results.
Thank you.


Move performance tests to phpbench/phpbench based benchmarks

Sample output:
∙ ./vendor/bin/phpbench run tests/Doctrine/Performance --report=default                                                                                23:03  ocramius@Marcos-MBP
PhpBench 0.11-dev (@git_sha@). Running benchmarks.
Using configuration file: /Users/ocramius/Documents/Projects/doctrine2/phpbench.json

\Doctrine\Performance\ChangeSet\UnitOfWorkComputeChangesBench

    benchChangeSetComputation     I0 P0 	[μ Mo]/r: 10,708.000 10,708.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\MixedQueryFetchJoinArrayHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 384,761.000 384,761.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\MixedQueryFetchJoinFullObjectHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 425,848.000 425,848.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\MixedQueryFetchJoinPartialObjectHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 226,162.000 226,162.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SimpleHydrationBench

    benchHydration                I0 P0 	[μ Mo]/r: 1,314,011.000 1,314,011.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SimpleInsertPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 3,296,861.000 3,296,861.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SimpleQueryArrayHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 211,959.000 211,959.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SimpleQueryFullObjectHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 1,547,259.000 1,547,259.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SimpleQueryPartialObjectHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 493,229.000 493,229.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SimpleQueryScalarHydrationPerformanceBench

    benchHydration                I0 P0 	[μ Mo]/r: 168,561.000 168,561.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SingleTableInheritanceHydrationPerformanceBench

    benchHydrateFixContracts      I0 P0 	[μ Mo]/r: 6,438.000 6,438.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchHydrateFlexContracts     I0 P0 	[μ Mo]/r: 9,688.000 9,688.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchHydrateUltraContracts    I0 P0 	[μ Mo]/r: 6,742.000 6,742.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchHydrateAllContracts      I0 P0 	[μ Mo]/r: 12,120.000 12,120.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\Hydration\SingleTableInheritanceInsertPerformanceBench

    benchInsertFixContracts       I0 P0 	[μ Mo]/r: 13,407.000 13,407.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchInsertFlexContracts      I0 P0 	[μ Mo]/r: 14,660.000 14,660.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchInsertUltraContracts     I0 P0 	[μ Mo]/r: 14,608.000 14,608.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchInsertAllContracts       I0 P0 	[μ Mo]/r: 30,086.000 30,086.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\LazyLoading\ProxyInitializationTimeBench

    benchCmsUserInitialization    I0 P0 	[μ Mo]/r: 659,678.000 659,678.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchCmsEmployeeInitializationI0 P0 	[μ Mo]/r: 137,093.000 137,093.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchInitializationOfAlreadyInitializedCmsUsersI0 P0 	[μ Mo]/r: 11,143.000 11,143.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchInitializationOfAlreadyInitializedCmsEmployeesI0 P0 	[μ Mo]/r: 8,089.000 8,089.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

\Doctrine\Performance\LazyLoading\ProxyInstantiationTimeBench

    benchCmsUserInstantiation     I0 P0 	[μ Mo]/r: 881,038.000 881,038.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%
    benchCmsEmployeeInstantiation I0 P0 	[μ Mo]/r: 372,925.000 372,925.000 (μs) 	[μSD μRSD]/r: 0.000μs 0.00%

24 subjects, 24 iterations, 24 revs, 0 rejects
(best [mean mode] worst) = 6,438.000 [427,378.083 427,378.083] 6,438.000 (μs)
⅀T: 10,257,074.000μs μSD/r 0.000μs μRSD/r: 0.000%
suite: 133a00e92273cb425743468320756a5d22bd5346, date: 2016-05-26, stime: 21:04:02
+-----------------------------------------------------------+-----------------------------------------------------+--------+--------+------+------+-----+-------------+-----------------+---------+---------+
| benchmark                                                 | subject                                             | groups | params | revs | iter | rej | mem         | time            | z-value | diff    |
+-----------------------------------------------------------+-----------------------------------------------------+--------+--------+------+------+-----+-------------+-----------------+---------+---------+
| UnitOfWorkComputeChangesBench                             | benchChangeSetComputation                           |        | []     | 1    | 0    | 0   | 5,548,336b  | 10,708.000μs    | 0.00σ   | +39.88% |
| MixedQueryFetchJoinArrayHydrationPerformanceBench         | benchHydration                                      |        | []     | 1    | 0    | 0   | 31,754,640b | 384,761.000μs   | 0.00σ   | +98.33% |
| MixedQueryFetchJoinFullObjectHydrationPerformanceBench    | benchHydration                                      |        | []     | 1    | 0    | 0   | 18,816,960b | 425,848.000μs   | 0.00σ   | +98.49% |
| MixedQueryFetchJoinPartialObjectHydrationPerformanceBench | benchHydration                                      |        | []     | 1    | 0    | 0   | 12,578,840b | 226,162.000μs   | 0.00σ   | +97.15% |
| SimpleHydrationBench                                      | benchHydration                                      |        | []     | 1    | 0    | 0   | 67,909,120b | 1,314,011.000μs | 0.00σ   | +99.51% |
| SimpleInsertPerformanceBench                              | benchHydration                                      |        | []     | 1    | 0    | 0   | 23,329,640b | 3,296,861.000μs | 0.00σ   | +99.80% |
| SimpleQueryArrayHydrationPerformanceBench                 | benchHydration                                      |        | []     | 1    | 0    | 0   | 14,672,480b | 211,959.000μs   | 0.00σ   | +96.96% |
| SimpleQueryFullObjectHydrationPerformanceBench            | benchHydration                                      |        | []     | 1    | 0    | 0   | 65,055,072b | 1,547,259.000μs | 0.00σ   | +99.58% |
| SimpleQueryPartialObjectHydrationPerformanceBench         | benchHydration                                      |        | []     | 1    | 0    | 0   | 26,027,136b | 493,229.000μs   | 0.00σ   | +98.69% |
| SimpleQueryScalarHydrationPerformanceBench                | benchHydration                                      |        | []     | 1    | 0    | 0   | 14,932,704b | 168,561.000μs   | 0.00σ   | +96.18% |
| SingleTableInheritanceHydrationPerformanceBench           | benchHydrateFixContracts                            |        | []     | 1    | 0    | 0   | 7,221,224b  | 6,438.000μs     | 0.00σ   | 0.00%   |
| SingleTableInheritanceHydrationPerformanceBench           | benchHydrateFlexContracts                           |        | []     | 1    | 0    | 0   | 7,382,056b  | 9,688.000μs     | 0.00σ   | +33.55% |
| SingleTableInheritanceHydrationPerformanceBench           | benchHydrateUltraContracts                          |        | []     | 1    | 0    | 0   | 7,244,664b  | 6,742.000μs     | 0.00σ   | +4.51%  |
| SingleTableInheritanceHydrationPerformanceBench           | benchHydrateAllContracts                            |        | []     | 1    | 0    | 0   | 7,470,472b  | 12,120.000μs    | 0.00σ   | +46.88% |
| SingleTableInheritanceInsertPerformanceBench              | benchInsertFixContracts                             |        | []     | 1    | 0    | 0   | 6,698,104b  | 13,407.000μs    | 0.00σ   | +51.98% |
| SingleTableInheritanceInsertPerformanceBench              | benchInsertFlexContracts                            |        | []     | 1    | 0    | 0   | 6,710,896b  | 14,660.000μs    | 0.00σ   | +56.08% |
| SingleTableInheritanceInsertPerformanceBench              | benchInsertUltraContracts                           |        | []     | 1    | 0    | 0   | 6,756,424b  | 14,608.000μs    | 0.00σ   | +55.93% |
| SingleTableInheritanceInsertPerformanceBench              | benchInsertAllContracts                             |        | []     | 1    | 0    | 0   | 7,135,568b  | 30,086.000μs    | 0.00σ   | +78.60% |
| ProxyInitializationTimeBench                              | benchCmsUserInitialization                          |        | []     | 1    | 0    | 0   | 32,939,360b | 659,678.000μs   | 0.00σ   | +99.02% |
| ProxyInitializationTimeBench                              | benchCmsEmployeeInitialization                      |        | []     | 1    | 0    | 0   | 25,259,360b | 137,093.000μs   | 0.00σ   | +95.30% |
| ProxyInitializationTimeBench                              | benchInitializationOfAlreadyInitializedCmsUsers     |        | []     | 1    | 0    | 0   | 25,259,384b | 11,143.000μs    | 0.00σ   | +42.22% |
| ProxyInitializationTimeBench                              | benchInitializationOfAlreadyInitializedCmsEmployees |        | []     | 1    | 0    | 0   | 25,259,384b | 8,089.000μs     | 0.00σ   | +20.41% |
| ProxyInstantiationTimeBench                               | benchCmsUserInstantiation                           |        | []     | 1    | 0    | 0   | 5,470,976b  | 881,038.000μs   | 0.00σ   | +99.27% |
| ProxyInstantiationTimeBench                               | benchCmsEmployeeInstantiation                       |        | []     | 1    | 0    | 0   | 5,250,832b  | 372,925.000μs   | 0.00σ   | +98.27% |
+-----------------------------------------------------------+-----------------------------------------------------+--------+--------+------+------+-----+-------------+-----------------+---------+---------+

@guilhermeblanco remember to run with iterations and revolutions > 1, or else results may not represent the actual performance correctly ;-)


No Ldap authentication support for the UI

This application should be something that only allows employees of an organization to access. There should be a way to connect to the LDAP server to authenticate a user otherwise anybody with the url will be able to access Hygieia and there needs to be a greater degree of security.

I'm going to request one of our team members to look @ hygieia code and see if they can contribute to LDAP integration

Any updates plz?

Has any one tried LDAP authentication for Hygieia ? pls share some ideas/suggesstions around this topic.

We are working on it right now. Expect a PR soon. @pxk5958

@bjayagop I hope to have a PR in later this week to allow Hygieia to use LDAP authentication.

@MarkRx @brennanananan please coordinate. Thanks.

@pxk5958

Thanks Mark and brennan for update.

PR Can be found here: #958
@MarkRx
@bjayagop

we (mostly @brennanananan and @rob-miller-777) have some work in progress presently building out a more full-fledged security solution. anticipate a new pull request in early 2017.
here's a work in progress branch

Closed.


Update to llm-samplers v0.0.7

I'm not sure how you feel about putting llm-samplers in the main workspace. It's convenient right now when I was trying to get it to compile but that can be changed.
This is a little awkward also because it depends on llm, luckily I already had a pull there so I was able to point your deps at that.

This shouldn't be merged yet but is ready for review. You'll probably want to wait until after llm merges also (I'm assuming that won't be an issue).
I will change the deps to point to the actual version instead of the repo. Please let me know if you want me to also change the workspace dependencies back to how it was originally, or any other changes.

The workspace dependancies are good. I updated some dependancies to workspace dependancies at some point, but I haven't moved all shared dependancies to the workspace yet.

By the way, did you know you have a rphi/src/lanuage_model.rs?

Yes, it is an odd name, but it just contains the wrapper needed for the kalosm_language_model trait

it is an odd name

I meant that it's "lanuage" instead of "language". :)

Oh, oops no I must have mistyped that 😆

@ealmloff llm-samplers 0.0.7 has been released. I tried to resolve the conflicts from #76. I didn't update the llm dependencies because you basically cannot merge this until they accept it otherwise. Right now, the pull there is exactly identical to their main branch except for the llm-samplers changes.
I'm not sure if you use llm-samplers in places that don't depend on llm, but if not (in other words, you're always going to be depending on llm) you might want to just not depend on llm-samplers in Floneum and always just use it through the llm re-export. That would tie you to their updates even more closely, so maybe there's a downside also. Just an idea.
This now merges but I can't compile (it runs into plugin issues, doesn't look to be related to llm-samplers). I also had to manually edit the Cargo.lock to make it point to my update in the llm pull. Since I had to do weird stuff, you probably need to double check to make sure I didn't break anything with my flailing around.

Thank you!


Ca 10 tag based authorization

To allow for further tightening of IAM permissions, the VM module should allow users to set tags that will be applied to the Tamr VM and other resources created by this module.
Summary of changes:
Add new variable tags.
Add deprecation notice for additional_tags, update descriptions to keep consistency across modules.
Create Examples/Minimal with exampled tags.

This PR doesn't appear to be linked to a DevOps/SRE jira ticket

This PR doesn't appear to be linked to a DevOps/SRE jira ticket

This PR doesn't appear to be linked to a DevOps/SRE jira ticket

This PR doesn't appear to be linked to a DevOps/SRE jira ticket

This PR doesn't appear to be linked to a DevOps/SRE jira ticket


Fixes #1590: Tolerate UnsupportedOperation in _winconsole._is_console()

Details:

On Windows, calling 'f.fileno()' in '_winconsole._is_console()' may raise
UnsupportedOperation, for example when the pytest 'capsys' fixture is used
which captures stdout for testing purposes.
This change tolerates that exception and treats it as False.

Added a testcase test_echo_with_capsys() where the output of click.echo()
is captured using the pytest capsys fixture.

Interesting, thanks for the fix! I think this might address some other issues that have been reported when echoing in IDE consoles.


Refactoring in progress...

Hi! I've started a rewrite of core classes into typescript today. It'll be a limited refactoring work with the limited goal of:

Break out Table, Collection, WhereClause, Transaction, Version into their own ts classes
Break out types and interfaces from Dexie.d.ts into separate files. Let build script copy Dexie.d.ts with its dependencies into dist.
Update build process to use imported helper library and bundle the helper using rollupjs.

The outcome should be an identical library that passes all tests and hopefully does not increase too much in size.
Nothing committed so far. Will probably live in a branch named something like "refactor-classes-ts" or similar. Hoping to get it done within a week or so.

Hey @dfahlander ,
What TypeScript-Version are you targeting? I had a look in package.json and the version there is 2.1.4. In case the changes lead to a new major version of Dexie being released, we might want to target a newer TS version. Maybe 2.4. There are some nice new features in there like strictNullChecks and string enums and overall better type checking.

@nponiros Thanks for noticing. I've worked towards version 2.6.2 but I seem to have missed updating package.json.
Status now is that all used to compile recently but there I'm not sure right now is it still does. Pretty much everything is done but working with how to bundle src/public/types into dexie.d.ts and been struggeling with backward compatibility for the old namespace style d.ts (module Dexie {...}).
I was hoping to get all done before Xmas but the rewrite was bigger than I thought. It will be exciting to see how unit tests acts when done with the dts bundling and updated build script.
However, will take a code pause now over the holidays and probably until after new years eve.
Have some uncommitted stuff though that I might commit on Xmas day.

I wonder if it is worth the trouble to try getting the new code working with the old type definitions. Have you tried letting TypeScript create the type definition files and see if those pass the unit tests?
I do understand the point of backwards compatibility but if that gets too complex it will make it more difficult in the future to move forward using features from newer compiler versions. It will probably also make it more difficult to just implement new features since (if I understand correctly) we would also have to manually write .d.ts files. Maybe breaking backwards compatibility is a good idea in this case. Just my two cents :)


Filename generation

[x] Ability to add window name into the file title
[x] Ability to add a custom string into the file title

Added in commit 2a59fde2bb944a7a3f0cf59d76296d1803727455.


[Bug] Preview in mardown ignores

Describe the bug
If edit .md file, I can preview it. But all
 tags in preview do not wrap text to the next line and remain visible
To Reproduce

Create markdown file (example.md)
Write text,
 tag and again text
Right-Click to open preview
Bug in preview!

Expected behavior
The
 tag is not visible, text wrapping successfulity.
Screenshots
Bug:

Expected behavior:

Desktop (please complete the following information):

OS: Windows 10 Pro 1909 18363.959
Version: v<IP_ADDRESS>

Have you tried
 instead?

html tags are not supported.


chore(package): update levelup to version 3.0.1

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


client-node x-ray integration

Hi,
I've been looking into the source code and issues but could not find a way to trace the KMS requests made by client-node using AWS X-Ray.
Could you please confirm if that's possible?
Thank you.

I will try and get you a clear answer.  What environment are you running this in?  AWS Lambda?

@seebees
Yes, we are running APIG + Labdas with Node 10. Thank you.

The KmsKeyringNode uses a clientProvider to create the needed KMS Clients.
The default is the cacheKmsClients that will cache the clients per region.
To use AWS X-Ray, you need to wrap the KMS Clients.
You can create your own clientProvider
to wrap your own version of the AWS SDK with captureAWS like this.
const AWSXRay = require('aws-xray-sdk')
const { getClient, cacheClients } = require('@aws-crypto/client-node')
const { KMS } = AWSXRay.captureAWS(require('aws-sdk'))

const clientProvider = cacheClients(getClient(KMS))

Or you can wrap the KMS Client returned by getKmsClient with captureAWSClient from aws-xray-sdk.
const AWSXRay = require('aws-xray-sdk')
const { getKmsClient, cacheClients } = require('@aws-crypto/client-node')

const clientProvider = cacheClients(region => AWSXRay.captureAWSClient(getKmsClient(region)))

Now that you have a clientProvider that does what you want,
just pass this to the KmsKeyringNode
const keyring = new KmsKeyringNode({ clientProvider, /* Your generatorKeyId, and keyIds here */})

@seebees
Thanks a lot for the explanation. That's exactly what we needed.
Cheers!