[Backport to chef-17] Use new msys2 devkit for windows

Signed-off-by: Matt Wrock<EMAIL_ADDRESS>
Description
Back-porting https://github.com/chef/chef/pull/13038 to chef-17
Related Issue

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Chore (non-breaking change that does not add functionality or fix an issue)

Checklist:

[ ] I have read the CONTRIBUTING document.
[ ] I have run the pre-merge tests locally and they pass.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[ ] All commits have been signed-off for the Developer Certificate of Origin.

Holding on merge until kitchen tests are passing again (presumably a build configuration issue)

Devkit updated in other sources. Closing


Kokoro doesn't always start

For example for the latest master (https://github.com/SymbiFlow/sv-tests/commit/7c5794622c44fcccdcd018d3a0732d002a31e4ef) only the GHA started. There is no linked kokoro job.

We're not using kokoro anymore, closing.


[firebase_messaging] Table in "Receiving Messages" section should be updated

Describe the bug
Table in "Receiving Messages" section is outdated
Outdated table

Updated table should be like

Is there any way we can get the data messages on the background for iOS? (without bringing the app to foreground?) @Sylvain17

@krishnakumarcn Be aware of what you really speak about :

If you want a push notification on iOS if App is in background, method onMessage is called, then you can create a push with a local notifcation with this plugin : https://pub.dev/packages/flutter_local_notifications
If you speak about App killed, I think the only way is to call the "Notification Service Extension" which is a more complicated process.

Is there any way we can get the data messages on the background for iOS? (without bringing the app to foreground?) @Sylvain17

There is but support is not currently implemented as far as I know - we'll be looking to implement the same support in FlutterFire as we did for React Native Firebase; https://rnfirebase.io/messaging/usage#receiving-messages
Which should cover all scenarios;

When is this being updated? The current README is quite misleading.

Closing in favour of trying the latest messaging version which has since this issue was created been heavily reworked to improve it along with detailed and up to date documentation: https://firebase.flutter.dev/docs/messaging/overview
If you still have a problem please raise a new GitHub issue with up to date information and code snippets if possible. Thanks.


Fix race condition when initializing Enum overflow container

I'll need to think of another way to solve this problem

@singku Yes, that sounds like a better approach.


Chore: added utm code to basenames launch modal

What changed? Why?

added utm codes to launch modal on base-web

Notes to reviewers
How has it been tested?

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
0

Sum
1


FilterError at /login/

Unable to apply CachedCompilerFilter (sass --scss {infile} {outfile})
Could not find an option named "scss".
Usage: sass  [output]
COMPRESS_PRECOMPILERS = (
('text/less', 'lessc {infile} {outfile}'),
('text/x-sass', 'sass {infile} {outfile}'),
('text/x-scss', 'sass --scss {infile} {outfile}'),
)
I removed the -css on settings and work.
What is wrong?

@Sidon You need to install sass and less compilers. I will update installation instructions and release by docker to make it much easier.

@khushish22 Check updated installation instructions.

@Sidon check updated installation instructions.

@vermaakarsh https://github.com/MicroPyramid/Django-CRM/blob/master/docs/source/index.rst

Hi, I am also having this issue. I have installed sass and less. That above link did not help me at all.


Optimize forming tipsets

TipsetTracker could be improved in a few ways:

TipsetTracker::add holds the write handle of the RwLock for the entire duration of the function call, including blockstore reads.

Consider cloning the Vec<Cid> in order to release the lock before reading from the blockstore, and acquire it again at the end to add the new block to the hash map.
Consider not doing any blockstore reads at all by storing each block's miner address inside the TipsetTracker.

TipsetTracker::expand, similarly, holds the read handle of the RwLock during blockstore reads.

Consider cloning the Vec<Cid> like in TipsetTracker::add.
Consider caching the parent TipsetKeys internally, similar to TipsetTracker::add.
Consider combining add and expand  into a single function that adds all blocks of the tipset to the tracker, and expands the tipset by adding existing blocks to it that qualify.

Reducing priority since this would be a small performance improvement.


broken package: Tiled

Issue description
nix-env -iA nixos.tiled
On launch:
~❯ tiled
Cannot mix incompatible Qt library (version 0x50601) with this library (version 0x50602)
[1]    22746 abort      tiled

I thought 4a371795a687146df94a390b876f645553cf6665 had broken it, but its ancestors b6092775cb7e4eb0ea047106037eb524146018fa and 1076c93de3778f818d7e4cfe68b5232808f34fa0 had the same problem. IIRC I once ran tiled successfully on one of those revisions...
Technical details

System: 17.03.git.7634b41 (Gorilla)
Nix version: nix-env (Nix) 1.11.4
Nixpkgs version: "17.03pre97896.d15c62a"

I was able to reproduce the error on 16.09 stable, and fixed it there, but I couldn't reproduce it on d15c62a and 7634b41 doesn't seem to be a valid revision.

Seems to be fixed in 17.03pre98682.f673243 / f673243aff0bc9ae4d2e96ccd60124ff9fe5b103.


versions page

https://www.pombase.org/internal-details
I might put a link to this page in the application.
However some things seem a bit inconsistent, or out of date.
For example:
PSI-MOD: 11:12:2020 15:38 time stamp is old (I guess this is because we use our mini version?)
SO_feature_relations: 13:07:2012 17:15
gene_ontology: fypo/releases/2023-03-08/fypo-simple-pombase.obo. ?  mixture of GO & FYPO?
iao: 13:08:2012 11:25 (what is this?)

Maybe standards_versions would be a better name for the link?
I might put the link on the 'sue of standards section, it asks for a link)

PSI-MOD: 11:12:2020 15:38 time stamp is old (I guess this is because we use our mini version?)

We use the full PSI-MOD but we only update when we need a new modification.

SO_feature_relations: 13:07:2012 17:15

That's this file, which hasn't been update since 2012: pombe-embl/mini-ontologies/SO_feature_relations.obo

gene_ontology: fypo/releases/2023-03-08/fypo-simple-pombase.obo. ? mixture of GO & FYPO?

We get the gene_ontology namespace for the GO OBO file and from FYPO OBO file.  In the FYPO file it's from the occurs_in relation.  Probably we show it coming from FYPO is because we load the FYPO OBO file first.  I'll see if I can fix that.
Here's the relation from fypo-simple-pombase.obo that causes the problem:
[Typedef]
id: occurs_in
name: occurs in
namespace: external
namespace: gene_ontology
def: ...

iao: 13:08:2012 11:25 (what is this?)

It's this file: pombe-embl/mini-ontologies/mini-ontologies/iao.obo
Midori's log message from 2012-08-13 is:
file to get IAO_0000412 loaded

I don't know what IAO:0000412 is except that it's used by FYPO.

OK, good to know, I'll close this because nobody will dig this deep ;)


I can add a text annotation to a sequence flow

Is your feature request related to a problem? Please describe.
Currently, text annotations can't be added to sequence flows. It is allowed by the BPMN 2.0 spec, though:

Describe the solution you'd like
Make it possible to connect and add text annotations to a sequence flow.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
This has to be added to bpmn-js (rules and context pad action).

Number one reason I'm avoiding using Camunda fyi. My colleagues and I would prefer to create and pass distribute proposed flows but there's no easy way to add feedback within the spec itself.

You could also work with the document attribute.

@pinussilvestrus Can you explain what I should do here? I am interested in contributing!

I tried to implement this but then discovered that it's too complex for spring cleaning. We can tackle this later but need to make sure that we don't introduce bugs.
In bpmn-js, it's easy:

remove this line
add context pad entry

However, this requires also a new concept in diagram-js: connecting connections.
In diagram-js, there are two basic types of objects: shapes and connections. The layouting utils are built on an assumption that we always connect shapes with each other. In this case, however, we need to connect a Text Annotation to a Sequence Flow. This breaks the assumption and leads to errors.
I am afraid that even if I implement it now, we may expect crashes in some other places where we take the same assumption but which I haven't discovered yet.

I tried to implement this but then discovered that it's too complex for spring cleaning. We can tackle this later but need to make sure that we don't introduce bugs.
In bpmn-js, it's easy:

remove this line
add context pad entry

However, this requires also a new concept in diagram-js: connecting connections.
In diagram-js, there are two basic types of objects: shapes and connections. The layouting utils are built on an assumption that we always connect shapes with each other. In this case, however, we need to connect a Text Annotation to a Sequence Flow. This breaks the assumption and leads to errors.
I am afraid that even if I implement it now, we may expect crashes in some other places where we take the same assumption but which I haven't discovered yet.

@barmac thanks for giving it a try. This limitation of diagram-js will also affect the implementation of #1707.

@barmac thanks for giving it a try. This limitation of diagram-js will also affect the implementation of #1707.

We'd be interested in this enhancement too. The mentioned workaround with the document attribute doesn't work for us, as we use templates and as soon as a template is assigned, the document attribute disappears.


Improve documentation of Stackoverflow_Survey_Analysis.ipynb 2018 Dataset ( Part 1 )

Describe the bug
Comments explaining the code are currently too short and not present in some places well.
Expected behavior
Increasing frequency of comments and explaining the code more while learning about the code as well.
Curent Goal in Part 1
Reaching till half of 2018 Dataset and improving the comments as much as possible.
Kindly label the issue and assign it to me :)
Very excited for my first contribution.

kindly assign me the issue :)

Describe the bug Comments explaining the code are currently too short and not present in some places well.
Expected behavior Increasing frequency of comments and explaining the code more while learning about the code as well.
Curent Goal in Part 1 Reaching till half of 2018 Dataset and improving the comments as much as possible.
Kindly label the issue and assign it to me :) Very excited for my first contribution.

I see your point but describe more on how will you add more details without affecting the code readability and organization.

This is moved into backlog as one of the PR made different file than working on the existing file Stackoverflow_Survey_Analysis.ipynb 2018 Dataset ( Part 1 )


set default value

Set default value for jsbarcode

Sorry for missing the PR and that it took so long for me to respond!
But I don't see the meaning of setting the default values. JsBarcode (the library that this library wraps) does already set default values for everything if nothing is passed to it


v.2.0-proposal

This is a complete rewrite of the JS parser mainly done by @Salakar.
On top of that some further improvements were made for integers, bulk strings, simple strings and errors.
As the hiredis parser is now likely slower in almost every case, so I went ahead and removed it from the main code part. It's actually still usable by using the undocumented name option, but it'll print a warning in that case.
All errors returned by the parser are from now on "ReplyErrors" with a limited stack, as the stack is not meaningful at all and requires computation time.
OLD CODE: multiple chunks in a bulk string x 65,926 ops/sec ±2.52% (86 runs sampled)
HIREDIS: multiple chunks in a bulk string x 816,760 ops/sec ±0.40% (93 runs sampled)
NEW CODE: multiple chunks in a bulk string x 540,787 ops/sec ±0.95% (94 runs sampled)

OLD CODE: 4mb bulk string x 333 ops/sec ±1.60% (78 runs sampled)
HIREDIS: 4mb bulk string x 348 ops/sec ±1.39% (81 runs sampled)
NEW CODE: 4mb bulk string x 358 ops/sec ±1.55% (81 runs sampled)

OLD CODE: + simple string x 2,823,151 ops/sec ±0.32% (91 runs sampled)
HIREDIS: + simple string x 2,119,120 ops/sec ±0.25% (95 runs sampled)
NEW CODE: + simple string x 4,947,326 ops/sec ±1.44% (93 runs sampled)

OLD CODE: + integer x 2,949,699 ops/sec ±0.73% (92 runs sampled)
HIREDIS: + integer x 2,017,224 ops/sec ±1.02% (95 runs sampled)
NEW CODE: + integer x 5,322,447 ops/sec ±0.85% (92 runs sampled)

OLD CODE: * array x 1,254,650 ops/sec ±0.68% (92 runs sampled)
HIREDIS: * array x 934,826 ops/sec ±0.53% (93 runs sampled)
NEW CODE: * array x 4,110,629 ops/sec ±1.11% (94 runs sampled)

OLD CODE: * error x 233,582 ops/sec ±0.99% (91 runs sampled)
HIREDIS: * error x 153,116 ops/sec ±0.83% (87 runs sampled)
NEW CODE: * error x 341,797 ops/sec ±0.80% (94 runs sampled)

The benchmark was run on a Lenovo T450s with an i7 on NodeJS 6.1.
Supersedes and closes #2

LGTM

I ran the new parser with ioredis, and the benchmark result is impressive. Awesome work!
However, when parsing a big array, new parser seems to be slower than the old one:
var bigArraySize = 10;
var bigArray = '*' + bigArraySize + '\r\n';
for (var i = 0; i < bigArraySize; i++) {
  bigArray += '$';
  var size = (Math.random() * 10 | 0) + 1;
  bigArray += size + '\r\n' + lorem.slice(0, size) + '\r\n';
}

var bigArrayList = bigArray.split('\r\n').map(function (str) {
  return new Buffer(str);
});

// BIG ARRAYS

suite.add('\nOLD CODE: * bigArray', function () {
  for (var i = 0; i < bigArrayList.length; i++) {
    parserOld.execute(bigArrayList[i]);
  }
})

suite.add('HIREDIS: * bigArray', function () {
  for (var i = 0; i < bigArrayList.length; i++) {
    parserHiRedis.execute(bigArrayList[i]);
  }
})

suite.add('NEW CODE: * bigArray', function () {
  for (var i = 0; i < bigArrayList.length; i++) {
    parser.execute(bigArrayList[i]);
  }
})

The result:
OLD CODE: * bigArray x 251 ops/sec ±30.59% (15 runs sampled)
HIREDIS: * bigArray x 459 ops/sec ±77.80% (5 runs sampled)
NEW CODE: * bigArray x 68.65 ops/sec ±83.74% (5 runs sampled)

I double checked my code above and found a mistake in it. I've updated the code and the result in the above comment. It turns out the new parser is faster than the old one, but slower than hiredis.

The array example is not good, as all the \r\n are removed and it also mixes the array itself with lots of small chunks that have to be collected first.

I updated the benchmark numbers and they look very promising to me :smiley:
I'm still wondering why NEW CODE: + simple string has decreased for me from 5 million to 4.5 million. That is the only drop with my further improvements (mainly about multiple chunks).
Currently I think it's difficult to get much better results than the ones we reached. @Salakar @luin do you mind doing another code review? I can move the new commits to another branch if you wish.

PING:          30220 ->  35188 ops/sec (∆ +   4968 +  16.44%)
PING:         560116 -> 678209 ops/sec (∆ + 118093 +  21.08%)
SET 4B str:    26703 ->  29798 ops/sec (∆ +   3095 +  11.59%)
SET 4B str:   399240 -> 439404 ops/sec (∆ +  40164 +  10.06%)
SET 4B buf:    15639 ->  16471 ops/sec (∆ +    832 +   5.32%)
SET 4B buf:   168772 -> 186605 ops/sec (∆ +  17833 +  10.57%)
GET 4B str:    30062 ->  31359 ops/sec (∆ +   1297 +   4.31%)
GET 4B str:   466553 -> 551120 ops/sec (∆ +  84567 +  18.13%)
GET 4B buf:    30314 ->  31256 ops/sec (∆ +    942 +   3.11%)
GET 4B buf:   462195 -> 554638 ops/sec (∆ +  92443 +  20.00%)
SET 4KiB str:  25856 ->  26534 ops/sec (∆ +    678 +   2.62%)
SET 4KiB str: 138105 -> 140484 ops/sec (∆ +   2379 +   1.72%)
SET 4KiB buf:  17436 ->  16626 ops/sec (∆ -    810 -   4.65%)
SET 4KiB buf: 122551 -> 129688 ops/sec (∆ +   7137 +   5.82%)
GET 4KiB str:  27888 ->  29539 ops/sec (∆ +   1651 +   5.92%)
GET 4KiB str: 136985 -> 203019 ops/sec (∆ +  66034 +  48.21%)
GET 4KiB buf:  27845 ->  29819 ops/sec (∆ +   1974 +   7.09%)
GET 4KiB buf: 138705 -> 204418 ops/sec (∆ +  65713 +  47.38%)
INCR:          30662 ->  31878 ops/sec (∆ +   1216 +   3.97%)
INCR:         454738 -> 572971 ops/sec (∆ + 118233 +  26.00%)
LPUSH:         29340 ->  30960 ops/sec (∆ +   1620 +   5.52%)
LPUSH:        388105 -> 504258 ops/sec (∆ + 116153 +  29.93%)
LRANGE 10:     27032 ->  27960 ops/sec (∆ +    928 +   3.43%)
LRANGE 10:    147841 -> 218313 ops/sec (∆ +  70472 +  47.67%)
LRANGE 100:    13812 ->  18485 ops/sec (∆ +   4673 +  33.83%)
LRANGE 100:    20144 ->  31267 ops/sec (∆ +  11123 +  55.22%)
SET 4MiB str:    151 ->    167 ops/sec (∆ +     16 +  10.60%)
SET 4MiB str:    164 ->    214 ops/sec (∆ +     50 +  30.49%)
SET 4MiB buf:    342 ->    436 ops/sec (∆ +     94 +  27.49%)
SET 4MiB buf:    368 ->    457 ops/sec (∆ +     89 +  24.18%)
GET 4MiB str:    158 ->    374 ops/sec (∆ +    216 + 136.71%)
GET 4MiB str:    154 ->    188 ops/sec (∆ +     34 +  22.08%)
GET 4MiB buf:    152 ->    383 ops/sec (∆ +    231 + 151.97%)
GET 4MiB buf:    156 ->    185 ops/sec (∆ +     29 +  18.59%)

As per our call, this is all good, so I say LGTM and released, unless @luin has any issues?
Further perf tweaks can be done in v2 minor versions if needed.

I just ran the benchmark and it looks good to me. 👍

@luin what's the perf increases like on ioredis?

@Salakar I didn't run it with ioredis. I just ran npm run benchmark of the parser. Here's my result:
OLD CODE: multiple chunks in a bulk string x 64,813 ops/sec ±0.78% (90 runs sampled)
HIREDIS: multiple chunks in a bulk string x 853,105 ops/sec ±0.64% (92 runs sampled)
NEW CODE: multiple chunks in a bulk string x 1,294,377 ops/sec ±0.80% (93 runs sampled)
NEW BUF: multiple chunks in a bulk string x 557,270 ops/sec ±2.72% (84 runs sampled)

OLD CODE: multiple chunks in a string x 100,941 ops/sec ±3.04% (82 runs sampled)
HIREDIS: multiple chunks in a string x 1,649,325 ops/sec ±1.64% (90 runs sampled)
NEW CODE: multiple chunks in a string x 843,755 ops/sec ±0.89% (92 runs sampled)
NEW BUF: multiple chunks in a string x 485,696 ops/sec ±7.20% (64 runs sampled)

OLD CODE: 4mb bulk string x 139 ops/sec ±3.91% (71 runs sampled)
HIREDIS: 4mb bulk string x 126 ops/sec ±6.80% (61 runs sampled)
NEW CODE: 4mb bulk string x 1,115 ops/sec ±3.81% (79 runs sampled)
NEW BUF: 4mb bulk string x 2,259 ops/sec ±3.14% (85 runs sampled)

OLD CODE: + simple string x 264,635 ops/sec ±6.05% (76 runs sampled)
HIREDIS: + simple string x 2,124,393 ops/sec ±2.77% (84 runs sampled)
NEW CODE: + simple string x 549,101 ops/sec ±2.07% (90 runs sampled)
NEW BUF: + simple string x 465,949 ops/sec ±2.78% (89 runs sampled)

OLD CODE: + integer x 682,709 ops/sec ±1.79% (86 runs sampled)
HIREDIS: + integer x 2,077,508 ops/sec ±3.23% (91 runs sampled)
NEW CODE: + integer x 1,325,230 ops/sec ±0.39% (93 runs sampled)
NEW STR: + integer x 4,502,721 ops/sec ±0.82% (92 runs sampled)

OLD CODE: + big integer x 324,049 ops/sec ±0.63% (91 runs sampled)
HIREDIS: + big integer x 1,991,291 ops/sec ±2.05% (91 runs sampled)
NEW CODE: + big integer x 613,294 ops/sec ±1.74% (91 runs sampled)
NEW STR: + big integer x 2,618,784 ops/sec ±2.24% (93 runs sampled)

OLD CODE: * array x 566,616 ops/sec ±2.53% (86 runs sampled)
HIREDIS: * array x 752,228 ops/sec ±5.04% (73 runs sampled)
NEW CODE: * array x 803,021 ops/sec ±6.25% (84 runs sampled)
NEW BUF: * array x 688,835 ops/sec ±2.95% (87 runs sampled)

OLD CODE: * bigArray x 16,244 ops/sec ±0.79% (92 runs sampled)
HIREDIS: * bigArray x 43,471 ops/sec ±0.80% (94 runs sampled)
NEW CODE: * bigArray x 20,995 ops/sec ±0.62% (93 runs sampled)
NEW BUF: * bigArray x 13,931 ops/sec ±2.18% (91 runs sampled)

OLD CODE: * error x 123,363 ops/sec ±2.25% (86 runs sampled)
HIREDIS: * error x 94,347 ops/sec ±2.51% (88 runs sampled)
NEW CODE: * error x 147,233 ops/sec ±3.63% (80 runs sampled)

I think the new parser is fast enough to replace hiredis.

Are we ready to go with this? 😸

No, there are regressions left while concatenating bulk strings that I addressed locally but I want to rewrite it a bit more but currently I'm occupied by hack 4 humanity.

@Salakar I'm going to do more tests this weekend. If the new parser is fast enough that we don't need to introduce dropBufferSupport, I'll definitely wait for it. 😆


Failed to activate the ionide-installer package

[Enter steps to reproduce below:]

Install atom editor
Install Ionide-installer

Atom Version: 1.0.15
System: Microsoft Windows 10 Pro
Thrown From: ionide-installer package, v1.2.1
Stack Trace
Failed to activate the ionide-installer package
At Cannot find module 'atom-package-deps'

Error: Cannot find module 'atom-package-deps'
  at Module._resolveFilename (module.js:334:15)
  at Function.Module._resolveFilename (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\module-cache.js:383:52)
  at Function.Module._load (module.js:284:25)
  at Module.require (module.js:363:17)
  at require (module.js:382:17)
  at Object.activate (C:\Users\Łukasz\.atom\packages\ionide-installer\lib\installer.js:8:16)
  at Package.module.exports.Package.activateNow (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\package.js:245:19)
  at C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\package.js:226:30
  at Package.module.exports.Package.measure (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\package.js:169:15)
  at Package.module.exports.Package.activate (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\package.js:218:14)
  at PackageManager.module.exports.PackageManager.activatePackage (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\package-manager.js:486:21)
  at C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\node_modules\settings-view\lib\package-manager.js:371:29
  at exit (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\node_modules\settings-view\lib\package-manager.js:60:16)
  at triggerExitCallback (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\buffered-process.js:213:47)
  at ChildProcess.<anonymous> (C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app.asar\src\buffered-process.js:235:18)
  at emitTwo (events.js:87:13)
  at ChildProcess.emit (events.js:172:7)
  at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)

Commands
     -0:40.7.0 core:confirm (atom-text-editor.editor.mini.is-focused)
     -0:26.9.0 core:backspace (atom-text-editor.editor.mini.is-focused)
     -0:26.5.0 core:confirm (atom-text-editor.editor.mini.is-focused)

Config
{
  "core": {}
}

Installed Packages
# User
ionide-installer, v1.2.1

# Dev
No dev packages

Using cmd or PS go to  C:\Users\USERNAME\.atom\packages\ionide-installer, run apm install from there, and try running Atom again.

λ C:\Users\Łukasz\AppData\Local\atom\app-1.0.15\resources\app\apm\bin\apm.cmd install
Installing modules done
But still the same info after atom start

Ok, that's interesting. Can You paste here content of C:\Users\USERNAME\.atom\packages\ionide-installer\package.json ?

Sure:
{
"name": "ionide-installer",
"main": "./lib/installer",
"version": "1.2.1",
"description": "Installer for Ionide project",
"repository": {
"type": "git",
"url": "git+https://github.com/Ionide/ionide-installer.git"
},
"license": "MIT",
"engines": {
"atom": ">=0.174.0 <2.0.0"
},
"dependencies": {
"atom-package-deps": "^2.1.3"
},
"package-deps": [
"atom-yeoman",
"linter",
"advanced-open-file",
"ionide-fsharp",
"ionide-paket",
"ionide-fake",
"ionide-fsi",
"ionide-yeoman"
],
"readme": "# Ionide-Installer\n\n## Contributing and copyright\n\nThe project is hosted on GitHub where you can report issues, fork\nthe project and submit pull requests.\n\nThe library is available under MIT license, which allows modification and\nredistribution for both commercial and non-commercial purposes.\n\n## Code of Conduct\n\nThis project adheres to No Code of Conduct. We are all adults. We accept everyone's contributions. Nothing else matters.\n\nFor more information please visit the No Code of Conduct homepage.\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/Ionide/ionide-installer/issues"
},
"homepage": "https://github.com/Ionide/ionide-installer#readme",
"_id"<EMAIL_ADDRESS>"_shasum": "a3bc487584be4fefd10f45dd49e577207fb058b4",
"_resolved": "file:..\d-115822-26328-upnxow\package.tgz",
"_from": "..\d-115822-26328-upnxow\package.tgz",
"_atomModuleCache": {
"version": 1,
"dependencies": [
{
"name": "atom-package-deps",
"version": "2.1.3",
"path": "node_modules\atom-package-deps\lib\main.js"
}
],
"extensions": {
".js": [
"lib\installer.js",
"node_modules\atom-package-deps\lib\helper.js",
"node_modules\atom-package-deps\lib\main.js",
"node_modules\atom-package-deps\lib\view.js"
],
".json": [
"node_modules\atom-package-deps\package.json",
"package.json"
]
},
"folders": [
{
"paths": [
"lib",
""
],
"dependencies": {
"atom-package-deps": "^2.1.3"
}
}
]
}
}

Does C:\Users\USERNAME\.atom\packages\ionide-installer\node_modules\atom-package-deps\lib\main.js exist?

Yes, all three files with content:
Directory: C:\Users\Łukasz.atom\packages\ionide-installer\node_modules\atom-package-deps\lib
Mode                LastWriteTime         Length Name

-a----       22.09.2015     21:43           1100 helper.js
-a----       22.09.2015     21:43           1457 main.js
-a----       22.09.2015     21:43           1599 view.js

That's exactly same as on my machine. Try to move whole ionide-installer folder to some different path (without Polish chars in path) and run apm link from it.

Small progress after linking:
Installing ionide-installer dependencies
Installing atom-yeoman, linter, advanced-open-file, ionide-fsharp, ionide-paket, ionide-fake, ionide-fsi, ionide-yeoman
But nothing happen..

Has it finished installation without any errors? If so, it should be good (unless Atom has really big problems with Polish chars in chat :( ). Try to open any F# file / project and start editing.

It finnished with many errors on almost every package :( But hhlighting works on F# files :)

Hmm... i don't really know what is problem. You can also try moving all ionide-* folders outside of path with Polish chars and run apm install and then apm link for each one

/cc @steelbrain.

Well, let's try an old school fix for this
Step 1: Close atom
Step 2: Do
mv ~/.atom ~/.atom-backup
apm install ionide-installer

Step 3: Run atom
Et Voila! Problem solved :tada:


Update cryptography, pyOpenSSL for openssl-1.1 support

Fixes issue #629
Regarding the versions chosen: The versions after cryptography-1.8.2 may break binary compability (see release notes of cryptography) pyOpenSSL has issues with current cryptography. cryptography needs the module "packaging".

Tested on debian-9

confirming - built fine on Debian 9

Oh I have to cancel the pull request. It will not work correctly. Dependencies are missing.

Which ones?
We can start testing it on the CDH OS combo at some point. Not that we are working on Django upgrade + drop of Python 2.6 so this might help for some of the dependencies.

cryptography needs a bunch of other dependencies (see setup.py of cryptography). idna, ipaddress and so one.
The reason it worked for me that some of them were actually present in my dev setup. It failed on bigtop environment. See for instance https://ci.bigtop.apache.org/job/Bigtop-trunk-packages/COMPONENTS=hue,OS=debian-9/206/console
In order to follow things I numbered the reasoning over that problem:

I missed the dependency of current pyOpenssl to have at least cryptopgraphy-2.1.something. (see setup.py)

BUT current cryptography submodule x509 breaks pyOpenssl.

cryptography-2.1.something needs to upgrade pip
(pip install --upgrade pip), since it needs a python version check. You can easily detect this issue if pip complains about python version < 3 or something like that.

Upgraded pip breaks some of the older modules in desktop/core/ext-py , IIRC ipython and the idb debugger installed by desktop/dev-modules.mk

ipython has to be upgraded to 5.x something, idb to 0.10 ... and then It looked quite promising. compilation wise.  I would have to reproduce everything in a sane environment,

I am sure we are not aligned with respect to the environment Bigtop uses and you are using against. And I doubt that we can resolve issues easily.

Problem for bigtop is the size of patches needed. Changes like that cannot be provided by a simple patch file any more since it is exceeds the size limit of Apaches JIRA. So I used a workaround by patching the file like this https://ci.bigtop.apache.org/job/Bigtop-trunk-packages/COMPONENTS=hue,OS=centos-7/ws/bigtop-packages/src/common/hue/do-component-build

ANd no, I did not have made any runtime test of current hue in Bigtop environment.

@romainr , that leads me to the question: Does your project have any specific reason it needs the dependencies unpacked in desktop/core/ext-py ? Can I propose a solution to use pip or setup.py to to setup the virtual env with dependencies included ? That would make it a lot easier to maintain the dependencies.

Ah one step further : https://github.com/pyca/cryptography/issues/4044
enum-0.4.4 from desktop/core/ext-py is incompatible with current pyopenssl and cryptography.


Add options.timeout for all requests

This will allow instantiation of Giphy API with a built-in timeout (default is 30secs):
var giphy = require('giphy-api')(null, { timeout: 10000 });

Thanks! :+1:


[tech-debt] Removes unused to_grype() methods from PackageMapper

Removes no-longer-needed functions. This change should be a no-op on the system.

Rebased to resolve conflicts


Where is the training code?

Hi @Kyfafyd,
Thanks for pointing out this is missing. I'll add a reference to the training code shortly.
Kind regards,
Joeran


Clean up porch guides

Removing kpt alpha cmds.
Condensing porchctl guides into 1.
Rename the porch user guide section.
Minor typo fixes and clean up.

/retest

https://github.com/nephio-project/nephio/issues/820

/approve

/gtm

/lgtm


Create OpenDrive in CarlaUE4

Hello, I’m a working student and try to use Carla for my first project. I wanted to ask you if you’re happened to know about an error and would be very pleased if you can help me to solve this. I built my own map with CarlaUE4 and when I try to execute python code on this, I get the error “ERROR: unable to parse the OpenDRIVE XML string An error occurred: failed to generate map”. Most likely, this is caused by a missing xodr file because there’s no xodr file for this map in the OpenDrive folder. Unfortunately, I didn’t find a way to export a xodr file for a self-built map. Do you know how to get this done? Thank’s a lot for your help!

The Open Drive usually comes along with the map. Open Drive is necesary to have spawn points traffic lights and other stuff. Programs like RoadRunner generates it.  If you have the OpenDrive map, you have to place it next to your umap location inside OpenDriveFolder. Remember that the Opendrive file name must match the umap name.
For Example
My umap Path: /Content/Carla/Maps/MyCustomMap/MyMap.umap
My umap Path: /Content/Carla/Maps/MyCustomMap/OpenDrive/MyMap.xodr
We would love to have a OpenDrive files generator but it is not the case. So we cannot help you.
If you do not need autonomus agents like the generate traffic, you can just copy paste one of our xodr files into the proper location and rename it. Remember it will spawn Traffic lights and more things so you would like to edit it to let it empty xodr

@kuebel329 Hey, I used the following tutorial to import my .xodr and .fbx to CARLA.
It worked for me.
Add a new Map


catch null segment info

Bug:
sometimes segment Info is null if asset is missing resulting in CalculateCorner() to throw an exception.
Solution:
check for null segment Info.

Just for the record @thebugfixnet managed to reproduce the problem consistently. then with this code the problem went away for him.


[WIP] Switch clusters page on projected read models

With this PR we are switching the /clusters view to use the projected read models.

Fantastic! I hope nobody disables the data collection, otherwise this won't work. Maybe it is a good moment to remove that option as well.
As a small comment, I think that the ClustersTable and ClustersRow structs (and all the related functions that now belong to the cluster service and model) are not used anymore, so they could be removed.

Thanks @arbulu89 cleaned up the ClustersTable and ClustersRow and removed reference to the collector-enabled flag, which is enabled by default now.

Great! Apart from the comments above, I think we still miss the agent configuration in the install agent script. This works fine in our CI because we are using environment variables, but when the user will try to install this it is not going to work out of the box.
Let's follow up on this, it might be time to use a generated config file and to tweak viper/the install-agent script a little.

@fabriziosestito as always, correct.
The thing you say is that our packaging/systemd/trento-agent.service which gets installed in the node
runs
[Service]
ExecStart=/usr/bin/trento agent start --consul-config-dir=/srv/consul/consul.d

which clearly is not considering the collector host, neither th mtls enabled nor the ceerificates :trollface:
Big yes for the config file :rocket:
Here's a .trento-agent.yaml that I use locally
enable-mtls: true
cert: ./test/certs/server-cert.pem
key: ./test/certs/server-key.pem
ca: ./test/certs/ca-cert.pem

collector-host: localhost
collector-port: 8443

which I use like this ./trento agent start --config=/path/to/.trento-agent.yaml
I am not saying it has to be a yaml or that the filename should be that one, it's just an example.
Let's find out what works best for the users.

Fantastic! I hope nobody disables the data collection, otherwise this won't work. Maybe it is a good moment to remove that option as well.
As a small comment, I think that the ClustersTable and ClustersRow structs (and all the related functions that now belong to the cluster service and model) are not used anymore, so they could be removed.

Thanks @arbulu89 cleaned up the ClustersTable and ClustersRow and removed reference to the collector-enabled flag, which is enabled by default now.

Great! Apart from the comments above, I think we still miss the agent configuration in the install agent script. This works fine in our CI because we are using environment variables, but when the user will try to install this it is not going to work out of the box.
Let's follow up on this, it might be time to use a generated config file and to tweak viper/the install-agent script a little.

@fabriziosestito as always, correct. The thing you say is that our packaging/systemd/trento-agent.service which gets installed in the node runs
[Service]
ExecStart=/usr/bin/trento agent start --consul-config-dir=/srv/consul/consul.d

which clearly is not considering the collector host, neither th mtls enabled nor the ceerificates :trollface:
Big yes for the config file rocket
Here's a .trento-agent.yaml that I use locally
enable-mtls: true
cert: ./test/certs/server-cert.pem
key: ./test/certs/server-key.pem
ca: ./test/certs/ca-cert.pem

collector-host: localhost
collector-port: 8443

which I use like this ./trento agent start --config=/path/to/.trento-agent.yaml
I am not saying it has to be a yaml or that the filename should be that one, it's just an example. Let's find out what works best for the users.
Followup for config #423

@nelsonkopliku i am a big fan of toml for this but we are pretty much yaml driven in the whole codebase, so i think we should go with that (sigh).
As a simple improvement we could create an example configuration in a /etc/trento folder (or whatever is idiomatic for SUSE) directly from the rpm, something like /etc/trento/config.yaml, with commented out lines that can act as documentation for the user.
Then the installer script should be able to generate a config.yaml by using the parameters (in this case, only the trento server IP/host would be enough).
Then we could alter the systemd file unit to read the configuration and let viper do the magic for us.
We could also use something like a conf.d path where several configuration that could be loaded with priorities, if this is something that can help the installation process.

I'm loving this. Ping me if you need some help on the RPM & systemd service file changes if you want :-)


Fix deprecation warnings for platformio.ini

The current (successful) CI actions report deprecation warnings. These should be fixed as to not cause issues in future.
Fix deprecation warnings:
Use pip install wheel in CI, since package 'wheel' was not installed.
Replaced src_filter for env:<target>  with build_src_filter for env:<target>

Thanks! Ill squash the commit and merge


07.02.01

As a claimant, I want a visual warning when trying to submit an expense claim when there are fields with missing values or there are any incompleteness indicators on the expense items.

This is a UI/View test.

I added the ability to flag expense items, and am about to start on the visual warning. Do you guys want it to be a second dialog to show up, saying something like "You're about to submit a claim flagged as incomplete, click okay to submit"?

That sounds pretty reasonable. Go for it

Done


Added annotation typing to models._utils

Hello folks :wave:
As per #2025, annotation typing are welcome in torchvision. So I started with torchvision.models._utils in this PR. A few points of attention:

I picked Callable[..., nn.Module] for module constructors (passing BatchNorm2d for instance), I'm unsure whether that is good choice? any recommendation?
I only used black styling in class constructors for now, the rest are only annotation typing additions. Happy to change everything to black linting if you prefer.

Any feedback is welcome!

@pmeier sure, I updated this PR to focus on models._utils. You got a dozen PRs incoming then haha

That is alright. I'll go through them one by one.

@frgfm Removing the annotation is not the way to go here. Either fix it or if it is unfixable (which might be the case here) use the correct annotations and add a #type: ignore[override] to the line.

The test failures are related. I'll look into it and get back to you.

@frgfm It seems torchscript is the offender here.  Could you remove that to see if my suspicion is right?
If it is I'm not sure to move forward. We can't make torchscript and mypy happy.

@pmeier Yes, I figured out the same thing yesterday unfortunately.
When I remove the ignore, mypy throws the following:
error: Signature of "forward" incompatible
with supertype "ModuleDict"  [override]

Let me know which way you prefer to proceed with!

In general torchscript > mypy holds. Thus, while the type hints are nice to have, passing tests for torchscript is a requirement. Could you simply remove the type: ignore comment and push that change? It is not important for now if mypy fails, but the unit tests need to pass.

Yes.
The situation with torchscript is delicate, and if we need to chose between mypy and torchscript, torchscript wins.
In general, all torchvision models already have type annotation in the forward because they all support torchscript. The difference with mypy is that torchscript assumes that

if no input type is passed to an argument, it's assumed to be a tensor
return types are inferred

So if you want to play safe, I would say to only add type annotations to the constructor of the models, or the model builder functions. This way it won't affect torchscript, but mypy won't probably be happy either.
Which means that it might be hard to enable full mypy testing to the models.

This way it won't affect torchscript, but mypy won't probably be happy either.

Right now, we allow untyped definitions. Thus, if we simply remove the annotations from forward, mypy should be happy.

LGTM. Thanks a lot @frgfm. Note that the further process will be delayed, since we are currently preparing the next release of torchvision.

Should I update
from torch.jit.annotations import Dict

to
from typing import Dict

though?

Yes that would be nice!


[BEAM-6027] Fix slow downloads when reading from GCS

Overrides io.RawIOBase.readall in filesystemio.DownloaderStream as proposed in BEAM-6027.
It improves download time in ~40x.

cc: @chamikaramj
Can you run some benchmarks and include your results here?

Hi @udim ,
Using this snippet:
import tempfile
import timeit

from apache_beam.io.filesystems import FileSystems
from apache_beam.io.gcp import gcsio
from apache_beam.io.filesystemio import DownloaderStream

# https://issues.apache.org/jira/browse/BEAM-6027
def downloader_stream_readall(self):
    res = []
    while True:
        data = self.read(gcsio.DEFAULT_READ_BUFFER_SIZE)
        if not data:
            break
        res.append(data)
    return b''.join(res)

original_read_all = DownloaderStream.readall

if __name__ == '__main__':
    test_file = 'gs://cloud-samples-tests/vision/saigon.mp4'
    num_executions = 1

    def test_original():
        DownloaderStream.readall = original_read_all
        with FileSystems.open(test_file) as audio_file:
            with tempfile.NamedTemporaryFile(mode='w+b') as temp:
                temp.write(audio_file.read())

    def test_refactored():
        DownloaderStream.readall = downloader_stream_readall
        with FileSystems.open(test_file) as audio_file:
            with tempfile.NamedTemporaryFile(mode='w+b') as temp:
                temp.write(audio_file.read())

    print(timeit.timeit("test_original()", setup="from __main__ import test_original", number=num_executions))
    print(timeit.timeit("test_refactored()", setup="from __main__ import test_refactored", number=num_executions))

I got the following output:
120.99772120200214
1.0684915780002484

Hope that helps

Thanks for the update. This looks great.
Seems like the file you used for your microbenchmark is about 4MB which will be within the first chunk for the new buffer size. Can you try running a Beam pipeline with a larger input (say 10GB) with Dataflow to confirm that there's no regression at large scale ?

Yes I can. Any advice on how this pipeline would be and how can we measure the reading performance?

Yeah, that pipeline looks good. End-to-end execution time and Total vCPU time show in Dataflow console should be good metrics to compare.

I ran the same pipeline, first with the original code and after with the new implementation of read_all. I used a text file with ~8.81Gb. Apparently performance wasn't affected. Check below the console snapshots from both executions:
Before the change:

After the change:

Thanks. I'll squash and merge.

Adding note to not forget to "run python postcommit" before merging


average strategy calculation

Hi,
Great work. I really enjoyed reading the paper. I have two questions about the implementation.
(1) I don't understand how the average strategy is calculated.
In the paper,

In the code,

I can see that strat_discount corresponds to t/(t+1), but I don't understand why the last strategies don't need to multiply by 1/(t+1).
(2) when linear_update is used, alpha = 2 / (t + 2).

I thought the discount value should be t/(t+2). But the code shows this.

Let assume that at step t sum_strategies hold \overline{\pi} / t. Then to get sum_strategies of the same kind for the next step, one has to do  ((sum_strategies * t) +  (t + 1) * last_strategies) / (t + 1). Here we go from sum_strategies to  \overline{\pi} , then apply the step of linear update, and go back to multiplied sum strategies. Simplifying the expression, we get sum_strategies  * (t / (t + 1)) + last_strategies.

Is similar. Note that alpha is applied to a diff of regret vs mean, not to the new regret.


FAST CI/CD - Adding WIF GitHub attribute mapping repository_owner

Adding GitHub attribute mapping for attribute.repository_owner so that the code is in sync with the documentation (fast/stages/00-bootstrap/README.md).

Closing this PR as the change has been implemented by @ludoo in #699


I think that some of the model names could be clearer and would like to propose the following changes.

Target -> NotificationTarget
OptOut -> NotificationOptOut
UserTarget -> UserInNotificationTarget

Assignees:
Labels: enhancement

#7


UI Step 2 - Issue no. 20

@FIN-casey
The fifth Information button states that:
"(iii) In the column "Species", type the name of the different species making up the new functional group (Latin names); suggestions will be provided to you as you start typing something.
OR
(iii) FOR BACKGROUND FUNCTIONAL GROUPS ONLY: In the column "Class", type the name of the different classes making up the new functional group; suggestions will be provided to you as you start typing something. Once a class name is entered, the species belonging to that class will automatically appear in the "Species" column of the new functional group."
However, none of this is currently implemented.
--> Therefore, could you please make sure that:
(1) If the user starts typing a Latin name in the available space of the column "Species" of the functional group, suggestions are providing to them.
and
(2) If the user starts typing the name of a class in the available space of the column "Class" of the functional group, suggestions are providing to them.
Many thanks!

@agruss2 This is the same issue in UI Step 2 - Issue no. 17 for the Species column and UI Step 2 - Issue no. 19 for the Class column.
The implementation was laid out in the corresponding issues.
Please verify. Thanks

@FIN-casey Many thanks! I just checked and the present issue has been solved; I can therefore close it now.


[Feature Request]: Implement a row click callback for table rows.

Requirements before reporting

[X] No duplicated issue reported
[X] I have checked the latest version if the feature exist there

Type of feature request
Functionality
What is your feature request?
I need a row click handler to handle events on a row click. If a row click is enabled we might want to style each rows so that the cursor is a pointer.
Background
In my case I want to route the user to a details page when the user clicks on a row.
The benefits is that it makes some actions easier to do for the users. Instead of locating a button or a menu item they can just click the row directly.
Idea
E.g. add a tdsClick event on table-body-row. Also change style on the cursor if tdsClick is defined.
Goals and objectives
A user can click on a row and a desired action is taken.
Timeline
No response
Resources
No response
Contact information
No response

Closing this issue since this feature is now available in the latest version of our packages 🙂


SQLAlchemy - Results have expired, rerun the query if needed.

Is the issue already present in https://github.com/cloudera/hue/issues or discussed in the forum https://discourse.gethue.com?
Describe the bug:
hue sqlalechmy interpreter to Oracle. When i run query i very often got Results have expired, rerun the query if needed.
This info is thrown immediately even if query history box show that query is still runing.
Steps to reproduce it?
HUE 4.10 run in docker without any loadbalancers, connection to oracle via sqlalchemy interpreter
[[[oracle]]]
options='{"url": "oracle://${USER}:${PASSWORD}@XXXXXXXXX:1521/?service_name=XXXX"}'
Hue version or source? (e.g. open source 4.5, CDH 5.16, CDP 1.0...). System info (e.g. OS, Browser...).
hue latest version 4.10 from github with installed oracle connector
pip install cx_Oracle
Sometimes i need to repeat query multiple times to get result.
What can I change to fix this issue?

I also met this error using mysql, and when i used the mysql jdbc configuration way, it worked and returned query results. It seems that the sqlalchemy way has some session or connection bugs.
You can also try the jdbc way(need to upload JDK and execute $HUE_HOME/build/env/bin/pip install py4j ahead): https://docs.gethue.com/administrator/configuration/connectors/#mysql


Add error handling support to android sdk

Support for Handled Errors need to be added to the Android SDK, we used hockeyapp in Xamarin now transferring to Kotlin and native android we cannot report full exceptions and stack traces to app centre.
Tried to do it via normal analytics but with the character limit on the property values we get truncated data. This is extremely important to our business and application.

Unfortunately, this isn't on our short term roadmap but bringing handled errors to other platforms outside of Xamarin and Unity is definitely on our radar. I'll post here with any updates. Thanks!

Hi all! We just released this with the Android SDK Version 2.5.0.
You can find the docs here: https://docs.microsoft.com/en-us/appcenter/sdk/crashes/android#handled-errors.


Spike for QuickSight Analytics

Jira Description
Perform a spike of an EWS data model for AWS QuickSight.
Full details here: [https://techdocs.ed-fi.org/display/TAHS/AWS+QuickSight+Spike+Definition]
Jira Metadata
Created: 2017-08-28T17:05:45.000-0500
Reporter: Eric Jansson (inactive account)

Jira Comment
2017-08-28T17:09:24.853-0500
Jira Metadata
Created: Artifacts from spike attached:

SQL files to build datamart
screenshots (since QuickSight analytics have no file format)

Commenter: Eric Jansson (inactive account)

Jira Comment
2017-08-29T13:05:19.790-0500
Jira Metadata
Created: A few findings from the spike:

QuickSight has no file format for transferring report configuration metadata - i.e. no equivalent of the PBIX format
No "analysis" (page-level) views based on a parameter - i.e. I can't choose a "school" and have all visualizations on that page regenerate and filter as a result
Security a question mark - how would row-level security be implemented, or is there another option?
Commenter: Eric Jansson (inactive account)


Feature/target deploy

Do not merge until github runner permissions have been reduced and approved.

Shall we remove the DEBUG bits here? Superseded by #145


affected/package: go template crash when meets content like {{.vars.X-test}}

What version of Go are you using (go version)?
go version go1.18.1 linux/amd64
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
wangbin@wubuntu:/code/test$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/wangbin/.cache/go-build"
GOENV="/home/wangbin/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/code/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/code/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/bin/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/bin/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.18.1"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build4148638487=/tmp/go-build -gno-record-gcc-switches"
What did you do?
I have a function using template to get value. It works OK until I have a map entry with key including "-"
code:

define StepResult
type Stack struct {
GinContext *gin.Context
StepResult map[string]interface{}
Name       string
}
2.create a map in StepResult
vars := make(map[string]string, paramLen)
stack.StepResult["vars"] = vars
vars["X-test"] = "abc"

3.use template to query variables {{.vars.X-test}}
func (stack Stack) QueryFromStepResult(template string) string {
tmpl, _ := template.New("key").Parse(template)
buf := new(bytes.Buffer)
tmpl.Execute(buf, stack.StepResult)
return buf.String()
}
What did you expect to see?
get the value
What did you see instead?
crash
runtime error: invalid memory address or nil pointer dereference
/usr/bin/go/src/text/template/exec.go:164 (0x9c1fba)
errRecover: panic(e)
/usr/bin/go/src/runtime/panic.go:838 (0x6366a6)
gopanic: done = runOpenDeferFrame(gp, d)
/usr/bin/go/src/runtime/panic.go:220 (0x64c835)
panicmem: panic(memoryError)
/usr/bin/go/src/runtime/signal_unix.go:818 (0x64c805)
sigpanic: panicmem()
/usr/bin/go/src/text/template/exec.go:215 (0x9c23ec)
(*Template).execute: if t.Tree == nil || t.Root == nil {
/usr/bin/go/src/text/template/exec.go:201 (0xb0a1d4)
(*Template).Execute: return t.execute(wr, data)
/code/go/tms-go-apihub/broker/hub/stack.go:26 (0xb0a0a7)
Stack.QueryFromStepResult: tmpl.Execute(buf, stack.StepResult)

Like go code, X-test is parsed as X - test.
Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions

This is obvious a bug, not a discussion.
If I can define a map using key including -, then template should be able to handle it.
This a key name not variable name.

See https://pkg.go.dev/text/template

The name of a key of the data, which must be a map, preceded by a period, such as
.Key
The result is the map element value indexed by the key.
Key invocations may be chained and combined with fields to any depth:
.Field1.Key1.Field2.Key2
Although the key must be an alphanumeric identifier, unlike with field names they do not need to start with an upper case letter. Keys can also be evaluated on variables, including chaining:
$x.key1.key2

You can use {{index .vars "X-test"}} in this case.


dnspyex: Add version 6.1.9

closes #8544
dnSpyEx is a continuation of the dnSpy project, a .NET debugger and assembly editor.
NOTES:

persist is not needed because config is at $Env:AppData\dnspy.

/verify


As soon as I imported this library into my project, webpack crashed.

I didn't start using the library yet. I just included it like this:
import HtmlToReact from 'html-to-react'
Here is the error I am getting in terminal:
/Users/gwen/Desktop/preferably6/node_modules/webpack-core/lib/NormalModuleMixin.js:151
				throw e;
				^
Error: ./~/ent/reversed.json
Module parse failed: /Users/gwen/Desktop/preferably6/node_modules/ent/reversed.json Unexpected token (2:7)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (2:7)
    at Parser.pp.raise (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:920:13)
    at Parser.pp.unexpected (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1483:8)
    at Parser.pp.semicolon (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1462:73)
    at Parser.pp.parseExpressionStatement (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1976:8)
    at Parser.pp.parseStatement (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1754:188)
    at Parser.pp.parseBlock (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1991:21)
    at Parser.pp.parseStatement (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1735:19)
    at Parser.pp.parseTopLevel (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1648:21)
    at Parser.parse (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:1616:17)
    at Object.parse (/Users/gwen/Desktop/preferably6/node_modules/acorn/dist/acorn.js:882:44)
 @ ./~/ent/encode.js 2:18-44./~/ent/entities.json
Module parse failed: /Users/gwen/Desktop/preferably6/node_modules/ent/entities.json Unexpected token (2:13)
You may need an appropriate loader to handle this file type.

I needed a loader for JSON. I guess because I normally have redux handling JSON so I don't have to include it directly in react components.
Anyway, this fixed it:
npm install json-loader --save

{
        test: /\.json$/,
        loader: 'json'
}

I guess we can close this issue then :)


feat: 🎸 Add support for renamed Rewarded event

Description
Add support for renamed Slashed, Rewarded event
Breaking Changes
BREAKING CHANGE: 🧨 Since new events-Slashed,Rewarded
from staking module needs to be indexed, this will require full-resync
JIRA Link

Checklist

[ ] Updated the Readme.md (if required) ?

/fast-forward


Optimized @async_unsafe.

Switched the order of the checks to reduce the overhead. Async unsafe methods are normally called syncrhonously, so we can avoid the overhead of checking the environment variable in the regular path.

Before:
In [1]: from django.utils.asyncio import async_unsafe

In [2]: ai = async_unsafe(int)

In [3]: %timeit ai()
1.37 µs ± 13.6 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

After:
In [1]: from django.utils.asyncio import async_unsafe

In [2]: ai = async_unsafe(int)

In [3]: %timeit ai()
395 ns ± 1.68 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Calling int() takes ~50ns, so we can take that from each number, giving ~1300ns before and ~350ns after, ~4 times faster.
A small boost but it multiplies as async_unsafe decorated functions are called several times per query.

Are the import changes related to the optimisation? 🤔

They're another micro-optimization to require fewer attribute accesses.

Whilst we're micro-optimising could we use _get_running_loop to shave a few more microseconds off. Then inner would become:
def inner(*args, **kwargs):
    if not _get_running_loop():
        return func(*args, **kwargs)
    if not os.environ.get('DJANGO_ALLOW_ASYNC_UNSAFE'):
        raise ValueError(message)

Or would the use of the private function be too subject-to-change for us to use?
Unfortunately, I'm not able to test this for time right now, but I suspect it would make it marginally quicker (famous last words...).

@tim-mccurrach I think that would be a bridge too far.

@tim-mccurrach I think that would be a bridge too far.

haha. Fair enough :)

@carltongibson
Although having said that, quickly testing just now, it does seem to cut the time in half again:
>>> timeit.repeat("ai()",repeat=7, number=100000, setup="from __main__ import ai")
[0.0292515020000792, 0.023990991999653488, 0.020490372999574902, 0.020217061000039394, 0.0210146330000498, 0.020252889999937906, 0.020329448000211414]
>>> timeit.repeat("ai2()",repeat=7, number=100000, setup="from __main__ import ai2")
[0.05905059799988521, 0.04216317100008382, 0.042790552000042226, 0.04461314699983632, 0.04397789999984525, 0.04326298099977066, 0.04322846100012612]

(ai2 is the function as it stands in this PR).
It's also (perhaps more importantly) more readable (IMO).
But I agree, it may well be a bridge too far 🤷

@tim-mccurrach given that Django 4.1 will support 4 or 5 versions of Python using private APIs is not a good idea.

@tim-mccurrach given that Django 4.1 will support 4 or 5 versions of Python using private APIs is not a good idea.

👍  Yes, that seems sensible.


save_family.php  file is  still missing .

Hello,
as you said you have added it,but still it is not getting.
The send button is not working, like entered data not getting sent. because on send button click save_family.php file gets called.which you have not added in a project.
can you please guide me.
Thanks.

Yes,I got the save_family.php file but its not working.

on send button click,no operation is performing,it should send/add entered data to the database.
what is database structure ?

Hello,
I shifted the project from local PC to server and kept the same post method and url.
on 'send data' button click ,I am getting the alert as 'completed' but as per written in save_family.php that is print_r($tree) , so it should print the tree data but nothing is displayed.
Thanks.

You have to check the console for checking what is the data structure.
Regarding database structure: I made a jQuery plug-in not a family tree application. It is your job to find out what to do with data received at save_family.php

This is most I can help you.


GPIO pins inaccessible via fs.js and user coder permissions, PI-GPIO

I have been experimenting with pi-gpio version 0.0.2, and node version 10.9
There seems to be a permissions problem. The call to define a pin works:

gpio.open(16, function(err, value) {
if(err) throw err;
console.log(value);    // The current state of the pin
});

It uses gpio-admin and the node fs.js to accomplish this. It results in permissions:

-rw------- 1 coder coder 4096 Oct  5 08:18 value

However, when we want to execute a gpio.read command, it eventually ends up at this call in fs.js, line 284

var fd = fs.openSync(path, flag, 438 /=0666/);

EDIT: this is the same in version of nodejs distributed with coder.
I tried setting the optional flag 'r', which it defaults to anyway. But editing the source of a node fs.js, I would rather not do.
I can get pi-gpio to succeed in reading the value by chmod'ing to 666.
So, what would the proper resolution to get IO going on this platform - a default umask for the coder user on that directory?
Any help greatly appreciated. I really want to get going with actually building a web UI instead of chasing down the inner-workings, however interesting it is.

Or you can
cd coder-base/node_modules
npm install gpio


Inference Demo

Does the inference demo just use the tang datasets (pre-training model )instead of the HDNet model，So the reasoning effect is not very good？

The pre-trained model provided is trained with RenderPeople data for the HDNet. Tang dataset is not used in our training.

提供的预训练模型使用 HDNet 的 RenderPeople 数据进行训练。我们的训练中不使用 Tang 数据集。

Thank you for your prompt reply. I would like to ask about how to generate preprocessing files for unlabeled data during training? I have downloaded the complete Tiktok dataset, but the preprocessed files (such as corr_mat.txt in the correspondences folder, similar to 0017634_0017637_i_r1_c1_r2_c2.txt and 0017634_0017637_i_limit.txt,), can provide the complete Tiktok dataset related training files Or preprocess the data code?

Thank you for your patience, the work is great！


New card :  Diploma card

New diploma card in Figma

Size: S

@hawkbee1 design not available in figma


Allow send additional data via meta key

@relekang @mxstbr
It should resolve https://github.com/micro-analytics/micro-analytics-cli/issues/24
But I think that opportunity to pass something more complicated than strings will be cool. How we should pass arrays or objects?

Codecov Report

Merging #56 into master will decrease coverage by 0.65%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #56      +/-   ##
==========================================
- Coverage   71.13%   70.47%   -0.66%
==========================================
  Files           6        6
  Lines          97      105       +8
  Branches       20       21       +1
==========================================
+ Hits           69       74       +5
  Misses         28       28
- Partials        0        3       +3

Impacted Files
Coverage Δ

src/handler.js
72.5% <100%> (-0.48%)
:arrow_down:

src/utils.js
90.9% <100%> (+2.67%)
:arrow_up:

src/index.js
0% <0%> (-7.7%)
:arrow_down:

src/db.js
77.77% <0%> (-5.56%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2add293...8439008. Read the comment docs.

But I think that opportunity to pass something more complicated than strings will be cool. How we should pass arrays or objects?

I am kind of thorn between this would be nice to have and it is a good thing to have the restriction.
What do you think @mxstbr? We can add it later under another param name e.g. meta_json.
If we want to support more complex data structures I think urlencoded json is a good way to go.

Honestly I don't think that ?meta=k1:v1,k2:v2 is a good way for passing additional data.

User should generate this string
Maximum lenght of url — 2000 symbols
Support meta and meta_json will be pain. 2 keys that do same things.
We need additional logic for parsing ?meta=k1:v1,k2:v2. It's not really hard, but it can be easier.

I think that POST is correct way for passing meta.
fetch('/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    meta: {…},
  })
})

And JSON.parse on server.
I prefer to decide how it will be before shipping something for users.

I agree, I am thinking that it would be great if we turned it so that get only reads and post is the way to put things into the db.

If we split get and put it would be major release, so for now we can merge this PR and release it as minor version. After this I can start splitting.

it would be great if we turned it so that get only reads

I'm not a fan of that, I quite like that GET also increments because it supports this pattern: (which is what I built micro-analytics for initially)
window.onload = () => {
  fetch(`my-analytics.com/${window.location.href}`)
    .then(data => console.log(`${data.views} views`))
}

I do agree that ?meta isn't the best choice though, we could just do POST to add meta data but GET still increments?

I do agree that ?meta isn't the best choice though, we could just do POST to add meta data but GET still increments?

👍

Closing this as we want to revisit without meta in GET requests. The meta-branch contains a wip version of that on top of the lerna restructure.


[WIP] Explore ways to make napari-animation work with async prototype

This task is motivated by a comment in the NAP's first PR.
The napari-animation plugin is an example of a plugin that relies on the mutation of Dims.current_step being synchronous (both with an active viewer and headless). There are likely others too, but it should serve as a good example that we know is well used.
Here are some possible solutions/ideas, but others likely exist.

Define new async entry points in the API and leave the existing sync ones alone (e.g. Dims.set_current_step_async).
Define a context manager that forces synchronous (or maybe asynchronous?) slicing.
Define functions like LayerSlicer.waitUntilIdle to wait for any pending slicing tasks to be done.

The output of this task should describe a solution with working prototype code. We should probably cover the examples in the napari-animation repo. We should incorporate the description into the NAP to address the questions and feedback in the original comment and replies.
Edit: Initial text comes from @andy-sweet. Github didn't seem to track the attribution.

A synchronous solution will be best for keeping plugins simple.

This error comes up when running https://github.com/napari/napari-animation with the async prototype (my update of Andy's branch: https://github.com/kephale/napari/tree/async-slice-proto). The video is still generated, but there is no viewer content recorded (although it was rendered in the window).
Rendered:

Recorded:

Rendering frames...
  0%|                                                                                | 0/151 [00:00<?, ?it/s]WARNING : 2022-08-23 08:11:52,191 : MainThread : /Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/imageio_ffmpeg/_io.py:547 : IMAGEIO FFMPEG_WRITER WARNING: input image is not divisible by macro_block_size=16, resizing from (3456, 2054) to (3456, 2064) to ensure video compatibility with most codecs and players. To prevent resizing, make your input image divisible by the macro_block_size or set the macro_block_size to 1 (risking incompatibility).
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 151/151 [00:20<00:00,  7.50it/s]
DEBUG : 2022-08-23 08:12:12,146 : MainThread : /Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/layers/image/_image_slice.py:67 : ImageSlice.__init__
DEBUG : 2022-08-23 08:12:12,146 : MainThread : /Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/_vispy/layers/image.py:100 : VispyImageLayer._set_slice : _ImageSliceRequest(ndim=3, ndisplay=2, point=(64.0, 64.0, 64.0), dims_order=[0, 1, 2])
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
File ~/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/superqt/utils/_ensure_thread.py:31, in CallCallable.call(self=<superqt.utils._ensure_thread.CallCallable object>)
     28 @Slot()
     29 def call(self):
     30     CallCallable.instances.remove(self)
---> 31     res = self._callable(*self._args, **self._kwargs)
        self = <superqt.utils._ensure_thread.CallCallable object at 0x29234c940>
        self._callable = <function QtViewer._on_slice_ready at 0x290108280>
        self._args = (<napari._qt.qt_viewer.QtViewer object at 0x295c03dc0>, <Event blocked=False handled=False native=None source=None sources=[] type='ready'>)
        self._kwargs = {}
     32     self.finished.emit(res)

File ~/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/_qt/qt_viewer.py:350, in QtViewer._on_slice_ready(self=<napari._qt.qt_viewer.QtViewer object>, event=<Event blocked=False handled=False native=None source=None sources=[] type='ready'>)
    347 # These came from the previous implementation of Layer.refresh.
    348 # Some of these should probably be removed in the future.
    349 layer.events.set_data()
--> 350 layer._update_thumbnail()
        layer = <Image layer 'blobs' at 0x16c0bf4f0>
    351 layer._set_highlight(force=True)

File ~/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/layers/image/image.py:1106, in _ImageBase._update_thumbnail(self=<Image layer 'blobs'>)
   1104 with warnings.catch_warnings():
   1105     warnings.simplefilter("ignore")
-> 1106     downsampled = ndi.zoom(
        ndi = <module 'scipy.ndimage' from '/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/scipy/ndimage/__init__.py'>
        image = <class 'numpy.ndarray'> (128,) float64
        zoom_factor = (0.25, 0.25)
   1107         image, zoom_factor, prefilter=False, order=0
   1108     )
   1109 low, high = self.contrast_limits
   1110 downsampled = np.clip(downsampled, low, high)

File ~/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/scipy/ndimage/_interpolation.py:767, in zoom(input=<class 'numpy.ndarray'> (128,) float64, zoom=(0.25, 0.25), output=None, order=0, mode='constant', cval=0.0, prefilter=False, grid_mode=False)
    765 if input.ndim < 1:
    766     raise RuntimeError('input and output rank must be > 0')
--> 767 zoom = _ni_support._normalize_sequence(zoom, input.ndim)
        input = <class 'numpy.ndarray'> (128,) float64
        zoom = (0.25, 0.25)
        _ni_support = <module 'scipy.ndimage._ni_support' from '/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/scipy/ndimage/_ni_support.py'>
    768 output_shape = tuple(
    769         [int(round(ii * jj)) for ii, jj in zip(input.shape, zoom)])
    770 complex_output = numpy.iscomplexobj(input)

File ~/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/scipy/ndimage/_ni_support.py:67, in _normalize_sequence(input=(0.25, 0.25), rank=1)
     65     if len(normalized) != rank:
     66         err = "sequence argument must have length equal to input rank"
---> 67         raise RuntimeError(err)
        err = 'sequence argument must have length equal to input rank'
     68 else:
     69     normalized = [input] * rank

RuntimeError: sequence argument must have length equal to input rank
DEBUG : 2022-08-23 08:12:12,428 : MainThread : /Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/layers/image/_image_slice.py:67 : ImageSlice.__init__
DEBUG : 2022-08-23 08:12:12,435 : MainThread : /Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/_vispy/layers/image.py:100 : VispyImageLayer._set_slice : _ImageSliceRequest(ndim=3, ndisplay=3, point=(64.0, 64.0, 64.0), dims_order=[0, 1, 2])

It looks like the color change is happening in napari-animation itself. However, the objects in the viewport should have been multicolored segments instead of all yellow.

The color change issue might be related to https://github.com/napari/napari-animation/issues/110

If you pull on the prototype branch, I think the error above should be fixed. But there may be other/new issues!

@andy-sweet, this is from the latest napari-animation being run with the latest napari.
python ../napari-animation-async/test_async_movie.py
Traceback (most recent call last):
  File "/Users/kharrington/dev/napari-animation-test/../napari-animation-async/test_async_movie.py", line 10, in <module>
    from napari_animation import Animation
  File "/Users/kharrington/dev/napari-animation-test/napari-animation/napari_animation/__init__.py", line 1, in <module>
    from ._hookimpls import napari_experimental_provide_dock_widget
  File "/Users/kharrington/dev/napari-animation-test/napari-animation/napari_animation/_hookimpls.py", line 3, in <module>
    from ._qt import AnimationWidget
  File "/Users/kharrington/dev/napari-animation-test/napari-animation/napari_animation/_qt/__init__.py", line 1, in <module>
    from .animation_widget import AnimationWidget
  File "/Users/kharrington/dev/napari-animation-test/napari-animation/napari_animation/_qt/animation_widget.py", line 16, in <module>
    from .keyframeslist_widget import KeyFramesListWidget
  File "/Users/kharrington/dev/napari-animation-test/napari-animation/napari_animation/_qt/keyframeslist_widget.py", line 1, in <module>
    from napari._qt.containers import QtListModel, QtListView
  File "/Users/kharrington/dev/napari-animation-test/napari/napari/_qt/containers/__init__.py", line 2, in <module>
    from .qt_layer_list import QtLayerList
  File "/Users/kharrington/dev/napari-animation-test/napari/napari/_qt/containers/qt_layer_list.py", line 10, in <module>
    from ._layer_delegate import LayerDelegate
  File "/Users/kharrington/dev/napari-animation-test/napari/napari/_qt/containers/_layer_delegate.py", line 47, in <module>
    from ..qt_resources import QColoredSVGIcon
ImportError: cannot import name 'QColoredSVGIcon' from 'napari._qt.qt_resources' (unknown location)

That error seems odd as the napari._qt_.qt_resources package is in the napari repo, in which QColoredSVGIcon. Can you check your installed version to make sure it's there? Maybe there's a python path issue, but I feel like that would cause bigger issues.

I did check for it, and the SVG wasn't showing up at the time. I did have some issues with the napari.__version__ losing the patch version which I started overriding with SETUPTOOLS_SCM_PRETEND_VERSION. I did things fresh and it seems OK for now.

@andy-sweet I do still get this error:
WARNING : 2022-08-23 17:42:16,307 : MainThread : /Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/vispy/app/backends/_qt.py:234 : Traceback (most recent call last):
  File "/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/superqt/utils/_ensure_thread.py", line 31, in call
    res = self._callable(*self._args, **self._kwargs)
  File "/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/_qt/qt_viewer.py", line 350, in _on_slice_ready
    layer._update_thumbnail()
  File "/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/napari/layers/image/image.py", line 1118, in _update_thumbnail
    downsampled = ndi.zoom(
  File "/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/scipy/ndimage/_interpolation.py", line 767, in zoom
    zoom = _ni_support._normalize_sequence(zoom, input.ndim)
  File "/Users/kharrington/miniconda3/envs/napari-animation-async/lib/python3.9/site-packages/scipy/ndimage/_ni_support.py", line 67, in _normalize_sequence
    raise RuntimeError(err)
RuntimeError: sequence argument must have length equal to input rank

With this napari commit
Author: Andy Sweet<EMAIL_ADDRESS>Date:   Mon Aug 22 16:34:52 2022 -0700

    Disable buggy offset calculation

The video recording still completes and the UI is visible in the video, but no image data.

@kephale : can you share test_async_movie.py? Or can you confirm if this can be reproduce with one of the napari-animation examples?

It is one of the napari-animation examples:

"""
Display a labels layer above of an image layer using the add_labels and
add_image APIs
"""

from skimage import data
from scipy import ndimage as ndi
from napari_animation import Animation
import napari

blobs = data.binary_blobs(length=128, volume_fraction=0.1, n_dim=3)
viewer = napari.view_image(blobs.astype(float), name='blobs')
labeled = ndi.label(blobs)[0]
viewer.add_labels(labeled, name='blob ID')

animation = Animation(viewer)
viewer.update_console({'animation': animation})

viewer.dims.ndisplay = 3
viewer.camera.angles = (0.0, 0.0, 90.0)
animation.capture_keyframe()
viewer.camera.zoom = 2.4
animation.capture_keyframe()
viewer.camera.angles = (-7.0, 15.7, 62.4)
animation.capture_keyframe(steps=60)
viewer.camera.angles = (2.0, -24.4, -36.7)
animation.capture_keyframe(steps=60)
viewer.reset_view()
viewer.camera.angles = (0.0, 0.0, 90.0)
animation.capture_keyframe()
animation.animate('/Users/kharrington/Documents/demo3D_async.mov', canvas_only=False)

if __name__ == '__main__':
    napari.run()

I can't reproduce the error with animateMixed.py (which seems to be where the above comes from), though the output movie shows nothing in the canvas on the async proto (it works fine on napari's main).
Just to double check, can you rerun pip install -e . for napari in that environment. I'm thinking if you ran into something like this issue described on Zulip because the error messages refers to site-packages/napari, whereas I'd expect the error to show the local install path.

This gives me a little bit of funkiness:
% python ../napari-animation-async-1661290317/test_async_movie.py
Traceback (most recent call last):
  File "/Users/kharrington/dev/napari-animation-async/../napari-animation-async-1661290317/test_async_movie.py", line 10, in <module>
    from napari_animation import Animation
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/__init__.py", line 1, in <module>
    from ._hookimpls import napari_experimental_provide_dock_widget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_hookimpls.py", line 3, in <module>
    from ._qt import AnimationWidget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_qt/__init__.py", line 1, in <module>
    from .animation_widget import AnimationWidget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_qt/animation_widget.py", line 13, in <module>
    from ..animation import Animation
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/animation.py", line 12, in <module>
    from .frame_sequence import FrameSequence
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/frame_sequence.py", line 11, in <module>
    from .viewer_state import ViewerState
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/viewer_state.py", line 8, in <module>
    class ViewerState:
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/viewer_state.py", line 27, in ViewerState
    def from_viewer(cls, viewer: napari.viewer.Viewer):
AttributeError: module 'napari' has no attribute 'viewer'

Not sure why that import isn't there, but I can add import napari.viewer into viewer_state.py to fix it, then I get:
% python ../napari-animation-async-1661290317/test_async_movie.py
Traceback (most recent call last):
  File "/Users/kharrington/dev/napari-animation-async/../napari-animation-async-1661290317/test_async_movie.py", line 10, in <module>
    from napari_animation import Animation
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/__init__.py", line 1, in <module>
    from ._hookimpls import napari_experimental_provide_dock_widget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_hookimpls.py", line 3, in <module>
    from ._qt import AnimationWidget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_qt/__init__.py", line 1, in <module>
    from .animation_widget import AnimationWidget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_qt/animation_widget.py", line 16, in <module>
    from .keyframeslist_widget import KeyFramesListWidget
  File "/Users/kharrington/dev/napari-animation-async/napari-animation/napari_animation/_qt/keyframeslist_widget.py", line 1, in <module>
    from napari._qt.containers import QtListModel, QtListView
  File "/Users/kharrington/dev/napari-animation-async/napari-async/napari/_qt/__init__.py", line 53, in <module>
    from .qt_event_loop import get_app, gui_qt, quit_app, run
  File "/Users/kharrington/dev/napari-animation-async/napari-async/napari/_qt/qt_event_loop.py", line 14, in <module>
    from .. import Viewer, __version__
ImportError: cannot import name '__version__' from 'napari' (unknown location)

Yet:
% cat /Users/kharrington/dev/napari-animation-async/napari-async/napari/_version.py
# coding: utf-8
# file generated by setuptools_scm
# don't change, don't track in version control
__version__ = version = '0.4.8rc3.dev1092+gadc2fb7e'
__version_tuple__ = version_tuple = (0, 4, 8, 'dev1092', 'gadc2fb7e')

@andy-sweet yeah, this seems to be something going wrong with the editable installations. Maybe from installing napari-animation then installing the editable napari after.

@kephale Read linked discussion from zulip. Locate site-packages directory for your env and remove napari directory inside.

Yeah, that is why I was mentioning it. I'm not 100% sure that this was the cause, but it is the most plausible explanation I have for now. But I'm no longer blocked at least.

By overriding napari.layers.Image._is_async and forcing the layers in the async branch to be treated as synchronous, I can get a rendered output:

This is clearly still not correct yes.

If I run the script incrementally through a prompt, then I get an improved result:

Note that:

the labels in the main napari frame are yellow instead of multicolored
the thumbnail for the labels layer is correctly multicolored
the recorded video is white, but has reasonable shading now

The issue of image data being rendered with a yellow color is present in 2D as well:

@andy-sweet I am guessing this might be an actual issue with the current async implementation and the way labels are rendered, but I'm still looking.

Yeah, I think that's my best guess too. Though if you're overriding _is_async, then it should be following the old path. My changes to _ImageBase could definitely have still broken things though.

Yep, just running python examples/add_labels.py shows that same issue. Though defining Labels._is_async to return False fixes it for me.

Arr yes, I was just overriding for Image. Indeed, this works when async is disabled. Phew.

loving watching this from afar @kephale and @andy-sweet !

Define a context manager that forces synchronous (or maybe asynchronous?) slicing.

I think I like this option the most :)

It looks like a promising strategy so far!

How napari-animation works
napari-animation works with napari by applying a set of Viewer atttributes (from Dims and Camera) over a sequence of frames and generating a screenshot for each frame1.

Updating Dims is an event that triggers a canvas update, which becomes asynchronous with the async slicing prototype.
Actual screenshot acquisition happens at the QT level, and there is no check if the current canvas is stale or not.

Feedback
Suggested change: either (1) viewer.screenshot() should check if async threads are complete, or (2) async threads should always be complete when viewer.screenshot() is evaluated.
If screenshots are working in the async branch and there are no major changes to Viewer attributes, then napari-animation is likely to still run but would still need the above suggested change.
Bugs found

Labels layer is not rendered correctly (wrong colors): https://github.com/napari/napari/issues/4969#issuecomment-1225862463 (Resolved: https://github.com/napari/napari/pull/4905/files/adc2fb7e797bbff823f599e66611672af3cd46c1..6740474f72ebbdcc75f2284f7c509dcd44e80a28)
Bug in napari-animation on M1: https://github.com/napari/napari-animation/issues/123

Footnotes
1 https://github.com/napari/napari-animation/blob/d0d5778cf37f191d53934eeff18f7a455049fafd/napari_animation/viewer_state.py#L58

I think that waiting for slicing threads to be done in Viewer.screenshot is an attractive solution that also hits some other usage of screenshot in scripts. The main problem is that we don't actually want to take a screenshot until we've set the new vispy node data, which must necessarily happen on the main thread. Assuming screenshot is called on the main thread, then it won't have been set yet and it can't wait for that be done (because the two tasks occur on the same thread).
So, I think the preferred technical approach is to force slicing to be synchronous at the time when attributes/properties/fields like Dims.current_step or Camera.zoom are changed - that way we can wait for everything to be done on the main thread before calling screenshot or similar. Initially that should probably be the default behavior, but if that ever changes, we should consider adding something like ViewerModel.sync_slicing that would return a context manager to force that behavior.

Thanks for all the work here @kephale!
Do you think there's any extra work needed to close this issue? The write up in the previous comment is probably enough for me. I also incorporated this investigation into the latest version of the async slicing NAP.
I also added the context manager approach to the prototype PR. Maybe it would be worth trying that out? I tried it from the console quickly with success, but have not tried to modify napari-animation to make it work.

Great. I'm happy to close this one now.


v4.4 - Missing clearfix on docs for responsive navbar

Fixes 20749.

This was fixed in Alpha 5 with #19890.


Reflections on Natural Disaster Dash App

Hi everyone, I've added few comments on our dash app in reflection.md. Please feel free to add on to it about how you think we can improve our app in the future. Thanks.

Added the new points


Design the performance measruement pipeline (experiment pipeline)

the experiment class will additionally contain templated example functions for data loading and  preprocessing/

Integration with super twin will be added. This will be an optional parameter for the user.


Allow to use attribute routing

@freshrob when we upgrade internally, we need to ditch our one

I approve this PR. Oh! too late ;)


Add ap-southeast-1 mapping

Add bucket mapping for the ap-southeast-1 region.
Of course the bucket will also need to be created and populated.

Hi @flosell, I just added mappings for every region, please see the latest commit on master. The code for the Lambda functions is also deployed to all buckets. Could you please check everything works on your end? If it does, we will not need this PR

@mrcoronel tried in ap-southeast-1, looks good, thank you! Closing this PR.


Eliminate metadata from state to solve issues with lack of dependent lenses

The pull request supersedes #68 because we have decided to give up on tracking proof metadata in the state, and instead maintain it in invariants we prove.  This eliminates some painful issues with the lack of dependent lenses, preventing us from faithfully modeling the code we are verifying.  Now:

Consensus.Types is unaware of EpochConfig; definitions related to EpochConfig are now in Types.EpochDep, which now has an inner module WithEC that is parameterised by an EpochConfig
We can have all the lenses, and the previous workarounds have been eliminated, which eliminates a number of differences between the Haskell and Agda codes.
All the proofs are fixed up; only a couple required any thinking; these were due to the proof obligations changing slightly when we switch from patterns like:

st <- get
let x = _someSpecialFunction st
...

to
x <- use aRegularLens

@mark-moir I have sketched in the latest commit a proposal for how the properties that were previously tracked in RoundManager itself can be proven extrinsically.

Thanks @cwjnkins, this looks great!


Make the Policy field optional and eventually deprecate/remove it from the AppArmorProfile CR

What would you like to be added:
The Policy field was originally introduced to store the raw apparmor profile installed by the operator. Later, a new field Abstract was additionally added. The later defines a detailed schema of the apparmor profile. This looks like a duplication in the API which can lead to complications and out of sync data.
At the moment, the Policy is a requied field in the AppArmorProfile CR definition. This make the Policy field mandatory, otherwise the API validation will fail before reaching the operator.
The plan is to make this optional, and use the abstract as a source for apparmor profiles. The raw profile can be generated on the fly by the operator when the Policy field is empty.
Eventually, we should deprecate and remove the policy field. Not sure, what is the impact of directly removing it. This can break the cluster where apparmor profile is installed via the Policy field.
Why is this needed:
Improve the ApparmorPolicy API by removing data duplication.
User story covered

@mhils Was this completed? What's still left to be done? Thanks

This can be closed, but I don't have permissions to do so. :)


Add Support for Big Integers

Now the range of Minimum and Maximum is -2147483648~2147483646. It seems not large enough. Can it be larger?

Encrypt random numbers.
using System;
using System.Numerics;
using System.Security.Cryptography;

private BigInteger RandomBigInteger(BigInteger min, BigInteger max, RNGCryptoServiceProvider r)
{
    BigInteger range = max - min;
    byte[] buffer = new byte[(int)(range).BitLength /8 + 1];
    do { r.GetBytes(buffer); } while (new BigInteger(buffer) > range);
    return new BigInteger(buffer) + min;
}

Seems very, very hard...

Seems it can be solved.


Research cluster/infrastructure chaos options

Figure out what is currently available (to work with Azure)
What tests are possible
How would it integrate

There has been some research done on this. The next steps are:

Implementation of a fab definition for kubemonkey.
Latency injection with Istio

CC @munishmalhotra @shwetams

fabrikate HLD is at https://github.com/munishm/fabrikate-kubemonkey

@jmspring @andrebriggs - Need some pointers on how to integrate to Bedrock.

@munishm were you able to create any documentation around integrating Kubemonkey?


[BUG] unable to enter maintenance mode on last node of 2 nodes cluster

Describe the bug
The node would be cordoned but not updated to maintenance and no further message displayed.
To Reproduce
Steps to reproduce the behavior:

Install Harvester with 2 nodes
Enable maintenance mode on the last node

Expected behavior
The node should entered maintenance mode.
Environment:

Harvester ISO version: v1.3-2c8332b7-head (after v1.3.0-rc4)
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): MegaRAC SP-X 2 nodes (arm-based)
ui-source Option: Auto

Additional context
link to #371

unable to currently reproduce the error on 1.3.0

during my testing, this error cannot be reproduced on arm nodes.
based on my chat with @lanfon72 there seems to be a small discrepancy in how the test is run.
the UI makes a set of api calls:

endpoint/harvester/nodes/${node}?action=maintenancePossible, which checks if maintenance is currently possible on the node
endpoint/harvester/nodes/${node}?action=listUnhealthyVM, which checks if there are any VMs running in the cluster which may have their last healthy replica on node being targeted for maintenance
endpoint/harvester/nodes/${node}?action=enableMaintenanceMode, places the node in maintenance when first two calls are successful.

It seems the testing is skipping the first two calls and only running action=enableMaintenanceMode, which seems to attempt and place the single controlplane node into maintenance mode which is not possible in a 2 node cluster. The controller subsequently skips the controlplane node but it floods the logs with messages while retrying to reconcile the node.
We should either change the set of api calls during the tests or update the api calls to move isMaintenancePossible and listUnhealthyVM in the enableMaintenanceMode action.

We can add those 2 API calls in our tests, but as those API endpoint are new added in v1.2.0^1, I thought we should still consider that check maintenancePossible while user calling enableMaintenanceMode directly.  (to prevent some users using automation to control nodes and didn't aware the change.)
This bug would only happened on 2 nodes environment, so severity could be more lower. (as we don't suggest users to use Harvester with only 2 nodes)
cc @bk201

FYI, looks fine in harvester-v1.3.1-rc2
Environment

harvester-v1.3.1-rc2

Profile: 2 nodes, aarch64, 32C/64G/1T per node
ui-source: Auto

Step

Enter maintenance mode

Disable maintenance mode

FYI, looks fine in harvester-v1.3.1-rc2

To reproduce this bug, you need to enable maintenance mode on first node (via API calls), then the node will have the annotation to block 2nd node.

@mergifyio backport v1.3

Verified this bug has been fixed.

Test Information

Environment: qemu/KVM 2 nodes
Harvester Version: v1.4-63a0567-head
ui-source Option: Auto

Verify Steps

Install Harvester with 2 nodes
Enable maintenance mode on the first node
First node should not have annotation harvesterhci.io/drain-requested: "true"^1


zone 1 not present

Hi, i am using this integration successfully, and thank you for the work done.
I can clearly see the water pressure and the status of the heat pump, but in no way can I set the temperature of zone 1.
No sensor and no set appear for this.
thanks
Daniele

Hello, Daniele!
Did you setup the zone on Ariston web application([https://www.ariston-net.remotethermo.com/])?
At the begining i've been stuck on the same problem.
Thank you!
Ovidiu

Hello,
In my model Zone 1 is necessary to manage the shift of the climatic curve, not a real temperature set..
The setting is correct on the site and from there it works correctly, but from this integration it is not displayed.

There can be different reasons for integration not showing things:

incorrect integration selected (probably not your case as aristonaqua probably has no zone heatings and DHW requests are different)
correct integration but some missing data from REST request returned from the website, which crashes the processing

Without more precise data I can't say anything for sure

Api changed and no info provided


impaired/enhanced short-term object recognition memory

If this is a request for a new term, please provide us with the following information.

Preferred term label (e.g., asplenia)

impaired short-term object recognition memory
enhanced short-term object recognition memory

Synonyms (e.g., absent spleen)

short-term recognition memory deficit
decreased short-term recognition memory
increased short-term recognition memory

Textual definition (the definition should be understandable even for non-specialists. Include a PubMed ID or URL(s) to refer to any relevant article(s) that provides information about the suggested term).

decrease in the ability of short-term memory to recognize objects during the first few minutes after training
increase in the ability of short-term memory to recognize objects during the first few minutes after training

Any additional notes to clarify the meaning or use of the term. Please provide a PubMed ID or URL(s) for the source of this information.

PMID:38378836

Suggested parent term (Please look in the hierarchy of the MP using the MP Browser or other browsers such as OLS and find the place in the MP where the new term best fits)

abnormal short-term object recognition memory (MP:0002800)

If you would like a nanoattribution, please indicate your ORCID id or provide a label such as MGI:sbello (organization, first initial-last name)

ORCID:0000-0001-5356-4174

Added
impaired short-term object recognition memory - MP:0014365
enhanced short-term object recognition memory - MP:0014366
Also added the same for long-term
impaired long-term object recognition memory  - MP:0014367
enhanced long-term object recognition memory - MP:0014368

In the latest release


Add support for extracting preview image from Canon CR3 file

Hi, I have added a feature to extract preview image from Canon CR3 file.
The preview file should be stored in the 4th block and its UUID is equal to eaf42b5e-1c98-4b88-b9fb-b7dc406e4d16 so I just call ReadMetadata function again to process the preview block.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 79 (0.0%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 33.239%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

isobmff/moov.go
0
2
0.0%

isobmff/uuid.go
0
4
0.0%

imagemeta.go
0
24
0.0%

isobmff/prvw.go
0
49
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0%

Covered Lines:
1990

Relevant Lines:
5987

💛  - Coveralls

Thanks for your work on this. Looks appropriate, merged.