Error: Parameter 'toolPath' cannot be null or empty.

When running the extension, I am getting the error below, Parameter 'toolPath' cannot be null or empty
2019-03-09T08:11:44.8283555Z ##[section]Starting: Publish Visual Studio Extension
2019-03-09T08:11:44.8286460Z ==============================================================================
2019-03-09T08:11:44.8286504Z Task         : Publish Visual Studio Extension
2019-03-09T08:11:44.8286547Z Description  : Publish Visual Studio extension to the Visual Studio Marketplace
2019-03-09T08:11:44.8286585Z Version      : 1.2.14
2019-03-09T08:11:44.8286613Z Author       : Microsoft Corporation
2019-03-09T08:11:44.8286653Z Help         : [More Information](https://marketplace.visualstudio.com/items?itemName=ms-devlabs.vsts-developer-tools-build-tasks)
2019-03-09T08:11:44.8286689Z ==============================================================================
2019-03-09T08:11:45.6123313Z Logging in as 'henrybeenconsultancy'
2019-03-09T08:11:45.6514219Z ##[error]Error: Parameter 'toolPath' cannot be null or empty.
2019-03-09T08:11:45.6525067Z ##[error]Error: Parameter 'toolPath' cannot be null or empty.
2019-03-09T08:11:45.6525680Z Logging out publisher 'henrybeenconsultancy'
2019-03-09T08:11:45.6843867Z ##[error]Unhandled: Parameter 'toolPath' cannot be null or empty.
2019-03-09T08:11:45.6853714Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6853906Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6854046Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6854400Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6854769Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6855194Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6856437Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6856624Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6856748Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6856895Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6856982Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6857221Z (node:12004) Warning: Use Cipheriv for counter mode of aes-256-ctr
2019-03-09T08:11:45.6912162Z ##[section]Finishing: Publish Visual Studio Extension

@henrybeen thanks for reporting. Taking a look. BTW, are you running this task on Hosted VS 2017 pool or private agent? Seems to me that task probably could not find vswhere.exe which is used to search VsixPublisher.exe tool. Can you provide logs with system.debug=true set?

I suspect this was on a VS2019 pool. I've updated the task to look for vswhere in the15-17 and replaced our own find logic with the vswhere find logic. Less to maintain.
Just published, can you try again @henrybeen ?

I did and the issue is now fixed, returning the previous one. So I'll close this one and reopen that one. :D


Tidy up annotations in gistPlace ontology

Tidy up annotations in gistPlace ontology according to consistent stylistic guidelines to be specified as part of issue https://github.com/semanticarts/gist/issues/253

Closed due to irrelevance after de-modularization. I've created a single issue for cleaning up all annotations #314.


started adding WAMP message muxing

Codecov Report

Merging #928 into master will decrease coverage by 0.03%.
The diff coverage is 34.48%.

@@            Coverage Diff             @@
##           master     #928      +/-   ##
==========================================
- Coverage    60.1%   60.07%   -0.04%
==========================================
  Files          73       73
  Lines       12837    12858      +21
  Branches     2069     2073       +4
==========================================
+ Hits         7716     7724       +8
- Misses       4465     4476      +11
- Partials      656      658       +2

Impacted Files
Coverage Δ

autobahn/_version.py
100% <100%> (ø)
:arrow_up:

autobahn/wamp/serializer.py
64.85% <23.8%> (-2.26%)
:arrow_down:

autobahn/wamp/message.py
62.75% <57.14%> (-0.03%)
:arrow_down:

Continue to review full report at Codecov.

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


Bump gtest and benchmark to work w/ latest runners

Fixes https://github.com/BYVoid/OpenCC/issues/746

@ayaka14732 , This is again due to github silently upgrading their runners and the code no longer being compatible. The way the C++ code is organised, it looks like this will happen every few months or so when github updates their runners. I have a release PR waiting to put on top of this one, if you are OK.


adding focus to input when clicking to search button

Fixes #4023
Describe the changes you have made in this PR -
open the CircuitVerse website and click on the search icon ,The cursor automatically focus on the search area
Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

@vedant-jain03 PTAL

@tanmoysrt PTAL


Manage LRU policy in all Salsa queries in LS

All Salsa queries, used in AnalysisDatabase must have a set sensible LRU policy to keep memory usage limited. Check out how this is done in Rust Analyzer for reference.
https://github.com/salsa-rs/salsa/blob/754eea8b5f8a31b1100ba313d59e41260b494225/book/src/rfcs/RFC0004-LRU.md
This task is spin off #5355

Currently - there's no LRU in salsa - there's a preparation for it.
For using LRU - an upgrade to salsa-rust-analyzer is required, or a move to salsa3.


6.14 Fix/talkback traversal

When TalkBack is turned on, dots were traversed in the following order:
1-4-2-5-3-6
Now shifted to proper 1-2-3-4-5-6 (works for API 22 and higher)
TODO before merge: find out why merging dev into this branch leads to compile-time error

Works only on API level >= 22.

Closes #86


Add Spark Summit East 2017 blog post

Description
https://jira.mesosphere.com/browse/OSS-561
Urgency

[ ] Blocker
[ ] High
[x] Medium

retest this please


Can't see the keyboard on the Android

Device information
Processor: Snapdragon 8 Gen2
Android Version: 14
RAM: 12GB
Device Model: MEIZU 20 Pro
Device Type: M391Q

Problem description
Can't see the keyboard on the Android

I have tried clearing the cache files in the android/data/com.example.pokerogue/files/game directory, but it did not work.

Oh that's odd, it must not be detecting your device as a mobile device or something. I haven't been able to recreate that issue myself, but if you have a bluetooth controller or something you might be able to get to the menu and turn those on?

ok，ty


horizontal scrolling

Type: Bug
the horizontal scroll wheel keeps jumping around when I try to select things or click on the page
VS Code version: Code 1.84.2 (1a5daa3a0231a0fbba4f14db7ec463cf99d7768e, 2023-11-09T10:51:52.184Z)
OS version: Windows_NT x64 10.0.22621
Modes:
Extensions (28)

Extension
Author (truncated)
Version

path-intellisense
chr
2.8.5

vscode-eslint
dba
2.4.2

gitlens
eam
14.5.2

prettier-vscode
esb
10.1.0

copilot
Git
1.140.0

copilot-chat
Git
0.10.2

json2ts
Gre
0.0.6

ts-extension-pack
loi
0.3.0

markdown-shortcuts
mdi
0.12.0

json
Mee
0.1.2

sort-typescript-imports
mic
1.4.1

csharp
ms-
2.12.19

vscode-dotnet-runtime
ms-
2.0.0

playwright
ms-
1.0.19

python
ms-
2023.20.0

vscode-pylance
ms-
2023.11.10

cmake-tools
ms-
1.16.32

cpptools
ms-
1.18.5

cpptools-extension-pack
ms-
1.3.0

makefile-tools
ms-
0.7.0

powershell
ms-
2023.8.0

vscode-typescript-next
ms-
5.4.20231206

tsimporter
pmn
2.0.1

typescript-hero
rbb
3.0.0

code-spell-checker
str
3.0.1

move-ts
str
1.12.0

cmake
twx
0.0.17

markdown-all-in-one
yzh
3.5.1

(1 theme extensions excluded)

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
vserr242cf:30382550
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscod805cf:30301675
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
vsaa593:30376534
pythonvs932:30410667
py29gd2263:30899288
vsclangdc:30486549
c4g48928:30535728
dsvsc012:30540252
azure-dev_surveyone:30548225
282f8724:30602487
89544117:30613380
showlangstatbar:30737416
fixshowwlkth:30771522
showindicator:30805244
pythongtdpath:30769146
i26e3531:30792625
welcomedialog:30910333
pythonnosmt12:30797651
pythonidxpt:30866567
pythonnoceb:30805159
asynctok:30898717
dsvsc013:30795093
dsvsc014:30804076
dsvsc015:30845448
pythontestfixt:30902429
pyreplss1:30897532
pythonmypyd1:30879173
pythoncet0:30885854
2e7ec940:30885897
pythontbext0:30879054
accentitlementst:30887150
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
aa_t_chat:30882232

Could you please share a screen recording demonstrating the problem? I don't see the horizontal scrollbar jumping around when selecting code.

Hey Alexandru,
I just noticed that the issue with the selection is that I move my cursor a-bit up while selecting, and that causes it to go back and select the previous line.
but the issue with clicking after selecting can be seen in the gif below:
[cid:d473faa5-fd72-4425-863f-1777c9be0e75]
Thanks,
Ameer

From: Alexandru Dima @.>
Sent: Friday, December 8, 2023 10:43 AM
To: microsoft/vscode @.>
Cc: Ameer Muslih @.>; Author @.>
Subject: Re: [microsoft/vscode] horizontal scrolling (Issue #200180)
Could you please share a screen recording demonstrating the problem? I don't see the horizontal scrollbar jumping around when selecting code.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vscode/issues/200180#issuecomment-1846778303, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BA7TS4ZI7S7Q44TWLV2FWRTYILHLTAVCNFSM6AAAAABAJ5CF7WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNBWG43TQMZQGM.
You are receiving this because you authored the thread.Message ID: @.***>

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

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


Replace Icon on the Activity Bar by an Octocat (or anything different to built-in Source Control)

Searched for duplicated issues, didn't find any

Situation: Current Icon for the Activity Bar is extremely similar to already existing menu "Source Control" (check the image)

Request: Change the Activity Bar icon of this extension.
Suggestion: I'd go for an Octocat; Octocat === Github , besides the icon is already in the repo (https://github.com/microsoft/vscode-pull-request-github/blob/master/resources/icons/github_logo.png)

I made it the svg logo they have in resources/icons/dark, it fits the monotone theme a bit better.


zipfile.py crashes

-----> Twin Star Exorcists (2015) #13 Onmyoji (9/2018) -- score: 0
2022-07-08T11:01:58 | comicapi.comicarchive | ERROR | Error rebuilding zip
file: kavitaManga/Twin Star Exorcists/Twin Star Exorcists v13 #13 (2018)
(Digital) (KG Manga).cbz
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/comicapi/comicarchive.py",
line 245, in rebuild_zip_file
zout.writestr(item, buffer)
File "/usr/lib/python3.8/zipfile.py", line 1817, in writestr
dest.write(data)
File "/usr/lib/python3.8/zipfile.py", line 1182, in close
self._fileobj.seek(self._zipfile.start_dir)
OSError: [Errno 29] Illegal seek
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/zipfile.py", line 1838, in close
self.fp.seek(self.start_dir)
OSError: [Errno 29] Illegal seek
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/comicapi/comicarchive.py",
line 248, in rebuild_zip_file
zout.comment = zin.comment
File "/usr/lib/python3.8/zipfile.py", line 1312, in exit
self.close()
File "/usr/lib/python3.8/zipfile.py", line 1843, in close
self._fpclose(fp)
File "/usr/lib/python3.8/zipfile.py", line 1953, in _fpclose
fp.close()
OSError: [Errno 29] Illegal seek
2022-07-08T11:02:01 | comicapi.comicarchive | ERROR | writing zip file fai
led [[Errno 1] Operation not permitted]: kavitaManga/Twin Star Exorcists/T
win Star Exorcists v13 #13 (2018) (Digital) (KG Manga).cbz
2022-07-08T11:02:01 | comictaggerlib.cli | ERROR | The tag save seemed to
fail!
Processing kavitaManga/Twin Star Exorcists/Twin Star Exorcists v14 #14 (20
19) (Digital) (1r0n) (f2).cbz...
^C

There are few computer systems dedicated servers or otherwise that do not have USB ports

@edgehub-cloud were you able to figure out what happened? This appears to be a hardware/filesystem issue were you able to attempt on an external drive?

If you can provide full logs and/or more information feel free to re-open


Add URL query parameters to webhook trigger result data

Description:
This PR adds trigger.query to the results for a webhook trigger, allowing to read parameters sent through the URL (for example /api/webhook/<webhook>?hello=world). My specific use-case for this is f.lux, which can only trigger webhooks in this format, but I'm sure there are other use-cases.
Pull request in home-assistant.io with documentation (if applicable): home-assistant/home-assistant.io#<home-assistant.io PR number goes here>
Checklist:

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

If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly (example).
[ ] New dependencies have been added to requirements in the manifest (example).
[ ] New dependencies are only imported inside functions that use them (example).
[ ] New or updated dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[ ] New files were added to .coveragerc.

If the code does not interact with devices:

[ ] Tests have been added to verify that the new code works.

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


[StatefulInput] Enter on password input field unmasks password

Current Behavior
Using a StatefulInput with type 'password' as the last element in a form results in the password becoming visible when the user hits enter in the input field, so what you see is:

Password unmasks
Form submits

Similarly, hitting the enter key when the focus is on the mask/unmask button results in the form submitting, when it should only mask/unmask the input.
You can reproduce with:
<form>
  <StatefulInput type="password" />
</form>

Expected Behavior

Hitting enter on the input field should have no impact on the password being masked/unmasked
Only hitting enter key while focused on the mask/unmask button should toggle password masking on and off
Hitting enter while focused on the mask/unmask button should not trigger the default input field enter key behaviour (i.e. submitting a form when in a form)

I'm seeing the same behavior and this is a pretty bad bug that I'm wondering how it made it in? Users privacy and overall security are being affected as the password is easily visible for 2-5 seconds when submitting a form (if someone is watching over your shoulder when logging in), depending on how long time for example login verification takes.

Reproducing codesandbox: https://codesandbox.io/s/input-for-passwords-bc94h

thanks @aitchiss @houmark - this was fixed and released in 8.13.0


Cannot unset some dataset options?

Perhaps I'm nullifying incorrectly, but when trying to unset dataset options I get the following errors:
PUT /dataset/3/settings
{"rematch decisions":false,"distribution gazetteer":"","nomenclatural code":"botanical","data format":"coldp","import frequency":"never"}
{
  "code": 400,
  "message": "Unable to convert value  for setting DISTRIBUTION_GAZETTEER into class life.catalogue.api.vocab.Gazetteer"
}

PUT /dataset/3/settings
{"rematch decisions":false,"nomenclatural code":"","data format":"coldp","import frequency":"never"}
{
  "code": 400,
  "message": "Unable to convert value  for setting NOMENCLATURAL_CODE into class org.gbif.nameparser.api.NomCode"
}

PUT /dataset/3/settings
{"rematch decisions":false,"data format":"","import frequency":"never"}
{
  "code": 400,
  "message": "Unable to convert value  for setting DATA_FORMAT into class life.catalogue.api.vocab.DataFormat"
}

PUT /dataset/3/settings
{"rematch decisions":false,"import frequency":""}

{
  "code": 400,
  "message": "Unable to convert value  for setting IMPORT_FREQUENCY into class life.catalogue.api.vocab.Frequency"
}

I also tried the following which results in the same errors:
{"rematch decisions":false,"distribution gazetteer": null,"nomenclatural code": null,"data format": null,"import frequency": null}

in order to set a property to null it has to be excluded from the object. For example to set distribution gazetteer to null you post this:
{
 "rematch decisions":false,
 "nomenclatural code":"botanical",
 "data format":"coldp",
 "import frequency":"never"
}

using the value "distribution gazetteer": null should also be valid, this looks like a specific bug in this case of settings

fix https://github.com/CatalogueOfLife/backend/commit/a00a2e1b5e851ef8201f571a17a0ffee464f805a


[BEAM-3499, BEAM-2607] Gives the runner access to positions of SDF claimed blocks

This addresses the following issues:

https://issues.apache.org/jira/browse/BEAM-3499 Watch can make no progress if a single poll takes more than checkpoint interval
https://issues.apache.org/jira/browse/BEAM-2607 Enforce that SDF must return stop() after a failed tryClaim() call

The former is the primary motivation for this PR. This PR changes SDF checkpointing timer countdown to start from the first claimed block, rather than from the beginning of @ProcessElement. This requires giving the runner visibility into claimed blocks. Such visibility enables fixing BEAM-2607 as well. It also is a required part of implementing SDF splitting over Fn API (tracked separately).
This PR also, of course, changes the Watch transform to the new API; and, while we're at it, does some related improvements:

Compresses Watch.GrowthState using Snappy. E.g. with 100k files, the encoded state is about 3MB instead of 8MB. Compressing it much more is difficult because the state includes uncompressible hashes. To address this, one must shard the filepattern, or implement the improvements suggested in https://issues.apache.org/jira/browse/BEAM-2680 .
Makes direct runner create a clone of state cells - I did this mainly because I noticed that GrowthStateCoder was never called on the Watch state, which risks missing coder bugs when testing with direct runner.

This PR is update-incompatible for users of the Watch transform, e.g. FileIO.match().continuously(). This is an experimental and very recent transform, so I'm going to ignore the incompatibility. It also requires a traditional Dataflow worker dance to get the worker container in sync with these runners-core changes - I'll perform that when the rest of the PR is approved.
R: @tgroh @chamikaramj
CC: @kennknowles @reuvenlax

Rebased but still waiting for some Dataflow worker side Google-internal stuff before I can merge.

Run Dataflow ValidatesRunner

Dataflow runner tests failed somewhere towards the end due to unrelated issues - I confirmed by looking at  Jenkins output that SDF tests passed. Merging.

Noting here, too, that InMemoryStateInternals is not part of the direct runner, but a general utility. The cloning changes caused perf regressions in multiple other contexts and need to be reverted and re-instantiated only in the direct runner.


Lfs build error

Hello, when i try build ninja in linux from scratch display this error:
(lfs chroot) I have no name!:/src/ninja-1.11.1# python3 configure.py --bootstrap
/src/ninja-1.11.1/configure.py:26: DeprecationWarning: 'pipes' is deprecated and slated for removal in Python 3.13
  import pipes
bootstrapping ninja...
warning: A compatible version of re2c (>= 0.11.3) was not found; changes to src/*.in.cc will not affect your build.
./src/ninja.cc: In function 'int {anonymous}::GuessParallelism()':
./src/ninja.cc:248:9: error: redeclaration of 'int j'
  248 |   int   j = 0;
      |         ^
./src/ninja.cc:243:9: note: 'int j' previously declared here
  243 |   int   j = 0;
      |         ^
./src/ninja.cc:249:9: error: redeclaration of 'char* jobs'
  249 |   char* jobs = getenv( "NINJAJOBS" );
      |         ^~~~
./src/ninja.cc:244:9: note: 'char* jobs' previously declared here
  244 |   char* jobs = getenv( "NINJAJOBS" );
      |         ^~~~
./src/ninja.cc: In constructor '{anonymous}::DeferGuessParallelism::DeferGuessParallelism(BuildConfig*)':
./src/ninja.cc:1410:16: warning: '{anonymous}::DeferGuessParallelism::config' will be initialized after [-Wreorder]
 1410 |   BuildConfig* config;
      |                ^~~~~~
./src/ninja.cc:1409:8: warning:   'bool {anonymous}::DeferGuessParallelism::needGuess' [-Wreorder]
 1409 |   bool needGuess;
      |        ^~~~~~~~~
./src/ninja.cc:1412:3: warning:   when initialized here [-Wreorder]
 1412 |   DeferGuessParallelism(BuildConfig* config)
      |   ^~~~~~~~~~~~~~~~~~~~~
when running:  /bin/g++ -MMD -MT build/ninja.o -MF build/ninja.o.d -g -Wall -Wextra -Wno-deprecated -Wno-missing-field-initializers -Wno-unused-parameter -fno-rtti -fno-exceptions -fvisibility=hidden -pipe '-DNINJA_PYTHON="python3"' -O2 -DNDEBUG -fdiagnostics-color -DUSE_PPOLL -DNINJA_HAVE_BROWSE -I. -c ./src/ninja.cc -o build/ninja.o
Traceback (most recent call last):
  File "/src/ninja-1.11.1/configure.py", line 553, in <module>
    objs = cxx('ninja', variables=cxxvariables)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/src/ninja-1.11.1/configure.py", line 287, in cxx
    return n.build(built(name + objext), 'cxx', src(name + '.cc'), **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/src/ninja-1.11.1/configure.py", line 169, in build
    self._run_command(self._expand(cmd, local_vars))
  File "/src/ninja-1.11.1/configure.py", line 194, in _run_command
    subprocess.check_call(cmdline, shell=True)
  File "/usr/lib/python3.11/subprocess.py", line 413, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '/bin/g++ -MMD -MT build/ninja.o -MF build/ninja.o.d -g -Wall -Wextra -Wno-deprecated -Wno-missing-field-initializers -Wno-unused-parameter -fno-rtti -fno-exceptions -fvisibility=hidden -pipe '-DNINJA_PYTHON="python3"' -O2 -DNDEBUG -fdiagnostics-color -DUSE_PPOLL -DNINJA_HAVE_BROWSE -I. -c ./src/ninja.cc -o build/ninja.o' returned non-zero exit status 1.

This is puzzling because there is no statement that looks like int  j = 0 (with any number of whitespace) in the src/ninja.cc of the 1.11.1 release. Are you sure you have not applied some incorrect patches on top of the official release?

Obviously the OP has entered the sed in the book twice.
Please do not report the issues building LFS directly to the upstream w/o a proper diagnostic yourself, nor a communication via #lfs-support or lfs-support mail list.  Such invalid issue reports annoys upstream maintainers and lowers the reputation of LFS team.


Jinja templates example not working correctly

Hi,
I tried to run the example on both Windows 10 and Ubuntu 18.04, but it's not working correctly. I don't have any problem with all the other examples. This is the result:

I am simply running the script "hello.py".
Am I missing something?
I'm sure that Jinja is working correctly, because I did some tests, so the problem seems to be somewhere else.
Any help it's appreciated.
Thanks.

After some investigations:

Inside init.py there is this line: _jinja_templates = kwargs.pop('templates', None). But, in the script of the example "hello.py" there is this line: eel.start('templates/hello.html', size=(300, 200), jinja_templates='templates'). It's a problem of name mismatch.
Keeping hello.html as "start page", always generates a bad view. I've noticed that substituting page2.html inside the start() function in the file hello.py, the page is rendered correctly. It's also rendered correctly when copying the code of hello.html inside page2.html.

@ChrisKnott Fix it. @mattiaornaghi  are right. It worked for me!

@mattiaornaghi please can you share what version of Eel you're using? I think you're using an older version of the library. 9c80660dd271ae196043558526db4ac030944965 fixed the kwarg name mismatch you're referring to. I suggest you update to v0.10.4
The current master branch of this repo is on v1.0.0-b1, although this isn't published to PyPi yet. I'll look at doing that, and setting up automated releases, in the next week or so.

FYI - I'm not able to reproduce this issue locally on any of the tagged versions of the code (from v0.10.0 to v0.10.4)

Based on no response, I'm going to close this issue for now. Please get back in touch if you think this is a mistake!


Port DocxMerge to .NET 6

Port DocxMerge to .NET 6 so that it will be portable and usable on several OS (Linux and Windows).

BTW: I am already on it on my fork.


Feature request: implement processPartialResponse wrapper function

Use Case
The Batch Processing utility allows you to instantiate a class & then call a process() method within a for loop. To further reduce boilerplate code for those customers who don't need low-level control over the iteration and simply want to do something along the lines of for (const record of records) { await batch.process(record); }, we can provide a function wrapper.
Customers will have to wrap their processor function and pass the array of records to process, along with any config. The wrapper will take care of iterating over the batch and call the processor function.
Solution/User Experience
The Python version of Powertools for AWS doesn't have this feature, however you can use the implementation we have in this repo for Idempotency here, and its related types as loose reference of a wrapper function.
Acceptance criteria

The function wrapper allows all the use cases supported by the utility, except the ones that explicitly require low-level access to the iteration
The function and its types are exported
Unit tests are implemented with 100% coverage

Optional/stretch

Functions are documented via docstrings, following project's conventions as much as possible

I am starting implementation on this!


Accomodate cancelled inserts via Postgres Triggers

Using Ecto 1.0, I have a Postgres table which has an associated before insert trigger.  This trigger filters out and discards some (based on complicated criteria) insertions.
However, all inserts from Ecto raise a StaleModelError if an id was not returned.  I cannot find any way to avoid this behavior.
To set up:
create table tests (id serial primary key);

create or replace function cancel() returns trigger as $$
begin
  return null;
end $$ language plpgsql;

create trigger cancel_insert before insert on tests for each row execute procedure cancel();

defmodule Test do
  use Ecto.Model

  schema "tests" do
  end
end

%Test{} |> Repo.insert

And the error returned is:
** (Ecto.StaleModelError) attempted to insert a stale model:

%Test{__meta__: #Ecto.Schema.Metadata<:built>, id: nil}

    (ecto) lib/ecto/repo/model.ex:259: Ecto.Repo.Model.apply/4
    (ecto) lib/ecto/repo/model.ex:83: anonymous fn/10 in Ecto.Repo.Model.do_insert/4

I think there might be a few things worth thinking about here:

Why are we raising Ecto.StaleModelError when optimistic locking is not implemented for this model?
How can a new model (via an insert) ever be considered stale?
An optional way to disable returning an id, or at least a way to gracefully accept an error message without raising an exception

Would love to hear your thoughts!

How can a new model (via an insert) ever be considered stale?

We never expected that cause to be triggered. Although we can fix the issue for insert, it is impossible for us to make a distinction between a failed trigger and a failed update, isn't it? Or does Postgrex return the proper information?

I can't think of a scenario where an insert / update itself would fail to complete without some sort of error message being returned (such as invalid column name).
So in this scenario we attempted to insert a single row, Postgres didn't complain about any errors, and returns a response of INSERT 0 0 indicating there nothing actually inserted - but it doesn't provide information as to why there was nothing inserted. The same would be true for updating.
For comparison on the same insert with ActiveRecord (no error returned):
> Test.create()
   (0.2ms)  BEGIN
  SQL (1.4ms)  INSERT INTO "tests" DEFAULT VALUES RETURNING "id"
   (0.2ms)  COMMIT
=> #<Test id: nil>

(I've updated my previous response with a little more detail.)
After thinking about it a little, the best route forward may be to raise the Ecto.StaleModelError only if:

The given model has opted into Optimistic Locking,
The operation is an update or delete, and
The number of rows returned is zero.

In all other cases, load the returned changes (if present) into the model struct and return the struct.
Would you be open to this behavior?

@stavro my concern is that we would support aborting triggers only on insert... why it would theoretically make sense on update/delete too. So while I agree raising StaleModelError is not a good idea, I think we should still raise something.

I think an error for these scenarios should only ever be raised if you opt into Ecto's implementation of Optimistic Locking.

my concern is that we would support aborting triggers only on insert

Using the above (3) rules would allow Ecto to work seamlessly with aborting triggers for inserts, updates, and deletes (with no error being raised) EXCEPT in the case of a model with optimistic locking.  It's not unreasonable to require users of Ecto to be careful when implementing a version tracking mechanism and also specialized postgres triggers at the same time.

It is not about optimistic locking only. If you try to update an ID that has been deleted, we need to error out as well.

It is not about optimistic locking only. If you try to update an ID that has been deleted, we need to error out as well.

I see.  I was misunderstanding the use case of the error.  Maybe perhaps this should be a default, but overridable behavior?  ActiveRecord, for instance, does not raise an error for inserts, updates, or deletes in which an indication of 0 rows were affected is returned.
The response of an insert or update operation (eg, INSERT 0 1) is not 100% reliable to determine whether or not a row was inserted.
Some more example usage patterns where the "affected row count" cannot be trusted:

Trigger-based partitioning. http://stackoverflow.com/a/1011329 and http://stackoverflow.com/a/12169992 . (A trigger re-routes the insert to a partitioned table. Every insert will return INSERT 0 0).
Trigger-based upsert (for < Postgres 9.5) http://digitalitility.com/tutori-alitility/postgresql/create-an-upsert-trigger/

Thank you. I am still skeptical about supporting this by default, I would raise as today. You can then just rescue the particular exception in your cases if you are sure it is an expected case for you. Thoughts?

Closing this per the previous discussion.

Hi, I've implemented soft-deletes in Postgres as described in the Trigger-based soft-deletes link from @stavro above - it works for all standard DB operations except for Repo.delete and Repo.delete! where it returns the StaleEntryError as described above - Ecto also reverts the change in the deleted_at field because of the delete being executed in a transaction...
However, I realized that the delete_all function works, since it accepts the result from Postgres that is returned by the trigger and doesn't do a rollback afterwards. I was wondering if this is the default behaviour and whether I should just be using delete_all everywhere then, or whether this could be fixed within delete

@ephe-meral this is tricky. Maybe we could have an option called on_stale: :raise_and_rollback | :accept that would you pass to delete. The first value is the default. However, if you are implementing soft-delete, maybe it makes more sense to use delete_all indeed.

So you'd also opt for delete_all, @josevalim? I was also wondering whether or not it might make sense to support any soft delete strategy within Ecto natively...

@ephe-meral for now i would go with delete-all because that means no code. But if you think it has limitations, then please let us know. :)

In case someone finds this in 2018 and wants to implement polymorphic foreign keys, I have a solution where you don't need to use insert_all/update_all.
Normally, your trigger for this kind of use case would be BEFORE INSERT, use an INSERT INTO to insert the data into the correct inherited table and RETURN NULL at the end so postgres doesn't duplicate the data in the main table.
However, if you do this, an INSERT INTO on the main table will always result in INSERT 0 0, which ecto doesn't like and it will raise a StaleEntryError.
We can trick ecto into thinking its new row was actually inserted by moving the trigger to after the insert has happened (with AFTER INSERT), and the first thing we'll do is delete the new row before we insert it ourselves. Obviously, you must be careful to limit your delete so it will actually only delete that one row.
That way, the database will still return INSERT 0 1, which makes ecto happy, and in the end, the data will end up in the correct inherited tables.
I'm not sure how you would use this workaround for soft-deletes though, since all the ON DELETEs will have been triggered after the delete has happened.


Permissions That Allow User to Edit but Not Publish

Description
Either describe or support a set of permissions allow a User/Group to be able to add and edit blog articles, but not publish blog articles.
Use cases
News organizations with a workflow that distinguishes who writes (adds and edits) articles, and who approves (publishes) articles.
Proposed solution

If not intuitive to set up, then document permissions that achieve the goal.
If possible to add "publish" permission, then add:djangocms_blog | blog article | Can publish blog article

Alternatives
I have found no combination of permissions that supports my organization's needs.
Additional information
This is how I currently have set up permissions:
Group Permissions
News Editor
Basically, this group can add, change, and view articles but not publish CMS pages. (I know articles differ from pages, but I don't see how to distinguish what data of an article can be edited and what cannot, so I am trying any possibly sensible combination.)
Markup of "CHOSEN PERMISSIONS"click to show/hide <select multiple ... >
<select id="id_permissions_to" multiple="multiple" size="0" name="permissions" class="filtered"
    style="height: 250.398px;">
    <option value="274" title="bootstrap4_media | bootstrap4 media | Can change bootstrap4 media">bootstrap4_media |
        bootstrap4 media | Can change bootstrap4 media</option>
    <option value="276" title="bootstrap4_media | bootstrap4 media | Can view bootstrap4 media">bootstrap4_media |
        bootstrap4 media | Can view bootstrap4 media</option>
    <option value="278" title="bootstrap4_media | bootstrap4 media body | Can change bootstrap4 media body">
        bootstrap4_media | bootstrap4 media body | Can change bootstrap4 media body</option>
    <option value="280" title="bootstrap4_media | bootstrap4 media body | Can view bootstrap4 media body">
        bootstrap4_media | bootstrap4 media body | Can view bootstrap4 media body</option>
    <option value="281" title="bootstrap4_picture | bootstrap4 picture | Can add bootstrap4 picture">bootstrap4_picture
        | bootstrap4 picture | Can add bootstrap4 picture</option>
    <option value="282" title="bootstrap4_picture | bootstrap4 picture | Can change bootstrap4 picture">
        bootstrap4_picture | bootstrap4 picture | Can change bootstrap4 picture</option>
    <option value="283" title="bootstrap4_picture | bootstrap4 picture | Can delete bootstrap4 picture">
        bootstrap4_picture | bootstrap4 picture | Can delete bootstrap4 picture</option>
    <option value="284" title="bootstrap4_picture | bootstrap4 picture | Can view bootstrap4 picture">bootstrap4_picture
        | bootstrap4 picture | Can view bootstrap4 picture</option>
    <option value="32" title="cms | cms plugin | Can change cms plugin">cms | cms plugin | Can change cms plugin
    </option>
    <option value="34" title="cms | cms plugin | Can view cms plugin">cms | cms plugin | Can view cms plugin</option>
    <option value="2" title="cms | page | Can change page">cms | page | Can change page</option>
    <option value="45" title="cms | page | Can view page">cms | page | Can view page</option>
    <option value="1" title="cms | placeholder | Can use Structure mode">cms | placeholder | Can use Structure mode
    </option>
    <option value="361" title="djangocms_blog | blog article | Can add blog article">djangocms_blog | blog article | Can
        add blog article</option>
    <option value="362" title="djangocms_blog | blog article | Can change blog article">djangocms_blog | blog article |
        Can change blog article</option>
    <option value="364" title="djangocms_blog | blog article | Can view blog article">djangocms_blog | blog article |
        Can view blog article</option>
    <option value="150" title="djangocms_link | link | Can change link">djangocms_link | link | Can change link</option>
    <option value="152" title="djangocms_link | link | Can view link">djangocms_link | link | Can view link</option>
    <option value="88" title="djangocms_text_ckeditor | text | Can add text">djangocms_text_ckeditor | text | Can add
        text</option>
    <option value="89" title="djangocms_text_ckeditor | text | Can change text">djangocms_text_ckeditor | text | Can
        change text</option>
    <option value="90" title="djangocms_text_ckeditor | text | Can delete text">djangocms_text_ckeditor | text | Can
        delete text</option>
    <option value="91" title="djangocms_text_ckeditor | text | Can view text">djangocms_text_ckeditor | text | Can view
        text</option>
    <option value="182" title="djangocms_video | video player | Can change video player">djangocms_video | video player
        | Can change video player</option>
    <option value="184" title="djangocms_video | video player | Can view video player">djangocms_video | video player |
        Can view video player</option>
    <option value="186" title="djangocms_video | video source | Can change video source">djangocms_video | video source
        | Can change video source</option>
    <option value="188" title="djangocms_video | video source | Can view video source">djangocms_video | video source |
        Can view video source</option>
    <option value="190" title="djangocms_video | video track | Can change video track">djangocms_video | video track |
        Can change video track</option>
    <option value="192" title="djangocms_video | video track | Can view video track">djangocms_video | video track | Can
        view video track</option>
    <option value="114" title="filer | image | Can change image">filer | image | Can change image</option>
    <option value="116" title="filer | image | Can view image">filer | image | Can view image</option>
</select>

Page Permissions
News (i.e. Blog) Page

USER
GROUP
CAN ADD
CAN EDIT
CAN DELETE
CAN PUBLISH
CAN CHANGE ADVANCED SETTINGS
CAN CHANGE PERMISSIONS
CAN MOVE
GRANT ON
DELETE?

-
News Editor
☑
☑

Page descendants

Page Global Permissions
News Editor
None.

I made progress.
To Ease Testing ⭐
Add these settings (source):
CMS_PERMISSIONS = True
# IMPORTANT: All values must be set (to prevent KeyError)
CMS_CACHE_DURATIONS = {
    'menus': 60,
    'content': 60,
    'permissions': 0,
}

To Easily Add Permissions ✅
See https://github.com/TACC/Core-CMS/blob/f090ccc/taccsite_cms/management/commands/group_perms/news_writer_advanced.py.
To Not Let User Publish Article 🐞
With caveats (see "Status"): https://github.com/TACC/tup-ui/pull/141.


python312Packages.greatfet: add missing dependencies

Description of changes

Adds missing dependencies and some fixups to the greatfet package.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

It does indeed now complain because of setuptools-git-versioning. Preparing a patch

Result of nixpkgs-review pr 331055 run on x86_64-linux 1

4 packages built:

python311Packages.greatfet
python311Packages.greatfet.dist
python312Packages.greatfet
python312Packages.greatfet.dist

I replaced the patch with subtituteInPlace because there's no need to add 80 lines to nixpkgs.

@dotlambda would you mind discussing to remove the patch the next time? I don't find it very nice to just "destroy" work done by someone else without any discussion, even it it does the same in the end

@dotlambda would you mind discussing to remove the patch the next time? I don't find it very nice to just "destroy" work done by someone else without any discussion, even it it does the same in the end

It would have taken longer to keep reviewing. I just copy-pasted this from other packages that patch out setuptools-git-versioning.


TextBox onTextChange issues with Elmish

Description
I've described the issue here https://github.com/fsprojects/Avalonia.FuncUI/discussions/389
However, I'm facing a new issue. For some reason updating a requests that has another request with the same URL, both URLs get updated when the 2nd request is selected. I'm not really sure what's causing this to happen.

Repro code
https://github.com/sixilli/funcman/tree/main/src/App
Expected and actual results
I expect that only 1 request should get updated and switching between requests should not cause unnecessary updates.
Related information

elmish version: 4.1
Operating system: Windows

@sixilli are you still having this issue?
If so please provide a tiny sample so I can reproduce it.
Btw. I've looked at the app you linked. I'd strongly recommend using immutable state values instead of mutating an array in place.


Fix linting issue with integer type

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Simple change to specify type of an integer as requested by S360.
Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[ ] update existing version for new feature
[x] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet.
When you expect to publish swagger? Please provide date, or month to public if date is not available yet.
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[x] No, no need to refresh for updates in this PR

Contribution checklist:

[x] I commit to follow the Breaking Change Policy of “no breaking changes
[x] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[ ] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[ ] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

@marcre , please follow the action in above comment for the breaking change review process.

Filled out swagger feedback form asking way to fix the linter error without triggering a breaking change.

Filled out swagger feedback form asking way to fix the linter error without triggering a breaking change.

@jianyexi , could you suggest on the fix of this linter error? Thanks.

Filed exception in S360


What type of update are you requesting?
A new version of an existing package
Current Package Identifier
stevencohn.OneMore
Package Version
6.5.2
Please describe the changes you would like to see
There are many new versions available at: https://github.com/stevencohn/OneMore/releases
Last version a the time of writing is 6.5.2, while Winget release is stuck at 5.9.0.

The package seems to have a hard dependency check on an installation of OneNote during installation. Most likely this check didn't exist in past versions. As OneNote can be installed in different variants (e.g. through Office 365 Enterprise, Office 365 Standalone, OneNote Standalone etc.). I think that this can't be specified with the current dependency options that are supported by winget. At least to my knowledge it's therefore not possible to create an update of this package. I'm open to suggestions if someone else has an idea on how to solve this.
https://github.com/microsoft/winget-pkgs/pull/178567#issuecomment-2395578711

If anyone else has another idea, feel free to give it a try. :)

This seems similar to the situations presented by Git and Java, where there are a variety of solutions which could be the dependency. Since we don't want to dictate the specific dependency used, we can just omit the dependency in the manifest. Please leave a note for moderators with some information about the dependency, so we can validate and verify the manifest data in our sandboxes and VMs.


chore: bdd-nh-1588666161 to 0.0.1

chore: Promote bdd-nh-1588666161 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


[OpenCL] Use HostMemory instead of memcpyDeviceToHost

I still need to test if this PR beaks anything on CPU. Once that's done I could more easily register ops for SYCL in training_ops.cc without too much changes!

Ok it works fine on CPU.
I didn't realise you already started this kind of changes in constant_op. Tell me if you prefer to avoid the macro USE_HOST_MEMORY_IF_SYCL (i.e. keep constant_op as it was).


Create endpoint for updating customer profile

Create an endpoint for updating a customer's profile

User Story
The admin should be able to update each customer's profile
Details to update

address
email
phone number

Tasks

[ ] Implement an endpoint to handle the API requests to the ../bank_app/servers/authentication dir.
[ ] Implement the queries and logic to update the records in the db to the ../bank_app/db/../authentication dir.
[ ] Add any environment variable to the ../bank_app/core/config.py file.


Research server side components usage inside Clutch

Research what will be needed to compose inside Clutch using server side components (runtime information, etc).

Server components will be the main and default way every single component works in clutch. Was agreed that client components at least initially would be fully code driven, so anywhere where state is needed or some complex client side logic that uses both state and/or interactivity, code seems to be the tool for the job and reduces complexity down from the editor.
As to inspection, this decision reduces a lot the need for a constant changing data flow since data isn't passed and transformed between scopes(components). So data in the server can be passed to a mocked component that is a placeholder just for the inspector to get the available data through the fiber node tree. We'll be able to cut down most of bridge or almost cut down entirely since we dont need the reports system which should actually be removed since it uses hooks that force a client only component


cellHeight prop on GridList broke after server-side-rendering

Problem description
After I refactor my ReactJS Application to work with server-side rendering, for some reason, my GridList broke, and by that, I mean that the property cellHeight doesn't work properly anymore, it doesn't change the height of the cells or the tiles. Below are 2 screenshots that show the before and after server-side rendering, with exactly the same code and the same cellHeight value.
Versions

Material-UI: ^0.18.7
React: 15.5.4
Browser: Chrome / Firefox

Images & references
Before Server-side rendering

After Server Side Rendering
Both pictures use the same properties and the same code.

-->

We have been porting the component on the v1-beta branch. We reimplemented it from the ground-up. While we haven't tested it, I think that the issue is most likely fixed on that branch. Hence, I'm closing it.
Still, we will accept PR fixes until v1-beta takes over the master branch.


Permission for making release

@jezdez I would like to make deploy. r?

Hi @safwanrahman, thanks for the PR, but releases in the Jazzband org are encouraged to run as described on https://jazzband.co/about/releases. Can you file a ticket please in https://github.com/jazzband/roadies/issues/new?


Add initial implementation

This adds a MVP for the token refresher

[x] Handle retries on error
[x] Better logging
[x] Config through flags
[x] Add documentation
[x] Add CI/CD

Would you mind adding Renovate support?
Could just add this file 1:1 : https://github.com/vshn/k8up/blob/master/renovate.json
Might need to enable Renovate app in the repo settings, not quite sure


Simplify top scripts (continuation of PR #101)

Continuation of PR #101.
Updated VexRiscv verilogs to remove wrappers and not rename the VexRiscv core with "_inner".
Small updates to the handling of Slim VexRiscv -- they can still use the new CFU integration,
their source just needs to be changed.

@robertszczepanski we will close PR #101, and your commits will be merged with this PR, which also contains the necessary VexRiscv updates.   Please check the Googlebot (google-cla) comment above.

@googlebot I consent.


No need to rewrite queries in unified highlighter

Description
Since QueryVisitor added the ability to signal multi-term queries, the query rewrite
call in UnifiedHighlighter has been essentially useless, and with more aggressive
rewriting this is now causing bugs like #11490.  We can safely remove this call.
Fixes #11490

I thought the changes you made for unrecognized queries fixed the issues with the surround query parser? If not it would be good to implement query visitors for the queries that it produces, or at the very least have a test in the highlighting module for them.

I thought the changes you made for unrecognized queries fixed the issues with the surround query parser?

I forget LOL but...

If not it would be good to implement query visitors for the queries that it produces, or at the very least have a test in the highlighting module for them.

Indeed; let's test & see

I ported the test in https://issues.apache.org/jira/secure/attachment/12919819/TestUnifiedHighlighterSurround.java to latest main, and I can confirm that it fails if you set withWeightMatches(false).  But! It fails if the empty searcher rewrite is in place as well, so this change makes no difference to it.  So I think we should merge it anyway, as it doesn't seem to break anything that isn't already broken?

+1 works for me; this change is the right thing to do, even if it surfaces issues that can be separately fixed.

Thanks for the fix!

@romseygeek Should it be backported to branch_9x?

Oops, yes, I should have backported it at the time.  Will do that now!


The extension corrupted after last update dev chanel(ASUS C302)

name: xenial
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xenial...
crouton: version git
release: xenial
architecture: amd64
xmethod: xiwi
targets: extension,audio,xiwi,keyboard,kde-desktop,gtk-extra,xorg,touch,cli-extra
host: version 12236.0.0 (Official Build) dev-channel cave
kernel: Linux localhost 3.18.0-19671-g83419c049dc9 #1 SMP PREEMPT Wed May 29 14:04:09 PDT 2019 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Please describe your issue:
The extension corrupted after last update dev chanel(ASUS C302).
When the first time open xiwi is correct, but when close xiwi and open it agin is corrupted.
I open the extions dev model and find
WebSocket connection to 'ws://localhost:30011/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Context
window.html?display=1&debug=0&hidpi=0&title=xenial%2Fpycharm%3A%20tdb%20%5B~%2FPycharmProjects%2Ftdb%5D%20-%20...%2Fsvd%2Fmodels.py%20%5Btdb%5D%20-%20PyCharm&mode=w
Stack Trace
window.html?display=1&debug=0&hidpi=0&title=xenial%2Fpycharm%3A%20tdb%20%5B~%2FPycharmProjects%2Ftdb%5D%20-%20...%2Fsvd%2Fmodels.py%20%5Btdb%5D%20-%20PyCharm&mode=w:0 (anonymous function)

Same issue as well:
name: buster
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/buster...
crouton: version 1-20190403182822~master:174af0eb
release: buster
architecture: amd64
xmethod: xiwi
targets: audio,core,extension,lxde,xiwi
host: version 12236.0.0 (Official Build) dev-channel eve
kernel: Linux localhost 4.4.180-16533-g77dd0cb94c17 #1 SMP PREEMPT Wed May 29 14:01:13 PDT 2019 x86_64 GNU/Linux
freon: yes

Same here Asus C302 on dev channel - Version 76.0.3807.0 (Official Build) dev (64-bit)
Worked flawlessly for 6 months until the last update, now the extension corrupts when a chroot is launched.
As a workaround, you can select 'repair extension' from the extensions menu in chrome, then click on the icon to select your chroot.

Same here Asus C302 on dev channel - Version 76.0.3807.0 (Official Build) dev (64-bit)
Worked flawlessly for 6 months until the last update, now the extension corrupts when a chroot is launched.
As a workaround, you can select 'repair extension' from the extensions menu in chrome, then click on the icon to select your chroot.

Confirmed this works for me. it's just a pain to repair the extension over and over again to access the chroot.

background.js:352 (websocketConnect)

sudo startxfce4 -X xiwi
Entering /mnt/stateful_partition/crouton/chroots/xenial...
/usr/bin/startxfce4: Starting X server
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
X.Org X Server 1.18.4
Release Date: 2016-07-19
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.4.0-128-generic x86_64 Ubuntu
Current Operating System: Linux localhost 3.18.0-19674-gc5ed4b68fc2c #1 SMP PREEMPT Wed Jun 5 00:35:58 PDT 2019 x86_64
Kernel command line: cros_secure console= loglevel=7 init=/sbin/init cros_secure root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 dm="1 vroot none ro 1,0 3686400 verity payload=PARTUUID=5f0c56f7-dbc8-5e42-9246-d5af7cb2842e/PARTNROFF=1 hashtree=PARTUUID=5f0c56f7-dbc8-5e42-9246-d5af7cb2842e/PARTNROFF=1 hashstart=3686400 alg=sha1 root_hexdigest=4a6b7311d614ce72947156e5dad5e13e173cefc3 salt=a122a68626db19998af068582df6a6e1deb80bfdccc4711bbb4223bca6c0dc95" noinitrd vt.global_cursor_default=0 kern_guid=5f0c56f7-dbc8-5e42-9246-d5af7cb2842e add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic intel_idle.max_cstate=7
Build Date: 10 August 2018  09:33:05AM
xorg-server 2:1.18.4-0ubuntu0.8 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.33.6
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/tmp/Xorg.crouton.1.log", Time: Tue Jun 11 10:23:22 2019
(++) Using config file: "/etc/X11/xorg-dummy.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
/usr/bin/xinit: XFree86_VT property unexpectedly has 0 items instead of 1
crouton: version 1-20181001133934~master:38012fdf
release: xenial
architecture: amd64
xmethod: xorg
targets: keyboard,xfce,extension,xorg,xiwi,touch
host: version 12239.3.0 (Official Build) dev-channel cave
kernel: Linux localhost 3.18.0-19674-gc5ed4b68fc2c #1 SMP PREEMPT Wed Jun 5 00:35:58 PDT 2019 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
The XKEYBOARD keymap compiler (xkbcomp) reports:

Warning:          Type "ONE_LEVEL" has 1 levels, but  has 2 symbols
Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
Error: not connected.
Cannot connect to extension, retrying...
Cannot open /sys/class/tty/tty0/active: No such file or directory
Connected to extension, launched crouton in a window.
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
xfce4-session: No GPG agent found

(xfsettingsd:5746): xfsettingsd-WARNING **: Unknown mode '1536x864 @ 59.5' for output default, aborting.
/usr/bin/xbindkeys_autostart: line 24: CONF: unbound variable
[WARN 10:23:26.526892] [Environment:161] XDG_SESSION_CLASS not set in this environment!
[WARN 10:23:26.527149] [Environment:192] XDG_SESSION_TYPE not set in this environment!
(polkit-gnome-authentication-agent-1:5834): polkit-gnome-1-WARNING **: Unable to determine the session we are in: No session for pid 5834
[WARN 10:23:26.842032] [Preferences:192] '/usr/share/plank/themes/Default/dock.theme' is read-only!
[WARN 10:23:27.056446] [TrashDockItem:35] GSettingsSchema 'org.gnome.nautilus.preferences' not found
[WARN 10:23:27.189390] [SurfaceCache:196] Creating surface took WAY TOO LONG (34ms), enabled downscaling for this cache!

sudo startxfce4 -X xiwi
Entering /mnt/stateful_partition/crouton/chroots/xenial...
/usr/bin/startxfce4: Starting X server
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
X.Org X Server 1.18.4
Release Date: 2016-07-19
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.4.0-128-generic x86_64 Ubuntu
Current Operating System: Linux localhost 3.18.0-19674-gc5ed4b68fc2c #1 SMP PREEMPT Wed Jun 5 00:35:58 PDT 2019 x86_64
Kernel command line: cros_secure console= loglevel=7 init=/sbin/init cros_secure root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 dm="1 vroot none ro 1,0 3686400 verity payload=PARTUUID=5f0c56f7-dbc8-5e42-9246-d5af7cb2842e/PARTNROFF=1 hashtree=PARTUUID=5f0c56f7-dbc8-5e42-9246-d5af7cb2842e/PARTNROFF=1 hashstart=3686400 alg=sha1 root_hexdigest=4a6b7311d614ce72947156e5dad5e13e173cefc3 salt=a122a68626db19998af068582df6a6e1deb80bfdccc4711bbb4223bca6c0dc95" noinitrd vt.global_cursor_default=0 kern_guid=5f0c56f7-dbc8-5e42-9246-d5af7cb2842e add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic intel_idle.max_cstate=7
Build Date: 10 August 2018  09:33:05AM
xorg-server 2:1.18.4-0ubuntu0.8 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.33.6
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/tmp/Xorg.crouton.1.log", Time: Tue Jun 11 10:29:51 2019
(++) Using config file: "/etc/X11/xorg-dummy.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
/usr/bin/xinit: XFree86_VT property unexpectedly has 0 items instead of 1
crouton: version 1-20181001133934~master:38012fdf
release: xenial
architecture: amd64
xmethod: xorg
targets: keyboard,xfce,extension,xorg,xiwi,touch
host: version 12239.3.0 (Official Build) dev-channel cave
kernel: Linux localhost 3.18.0-19674-gc5ed4b68fc2c #1 SMP PREEMPT Wed Jun 5 00:35:58 PDT 2019 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
The XKEYBOARD keymap compiler (xkbcomp) reports:

Warning:          Type "ONE_LEVEL" has 1 levels, but  has 2 symbols
Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
Error: not connected.
Cannot connect to extension, retrying...
Error: not connected.
Cannot connect to extension, retrying...
Cannot open /sys/class/tty/tty0/active: No such file or directory
Connected to extension, launched crouton in a window.
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
xfce4-session: No GPG agent found
/usr/bin/xbindkeys_autostart: line 24: CONF: unbound variable

(xfsettingsd:15825): xfsettingsd-WARNING **: Unknown mode '1536x864 @ 59.5' for output default, aborting.
[WARN 10:29:55.597234] [Environment:161] XDG_SESSION_CLASS not set in this environment!
[WARN 10:29:55.597336] [Environment:192] XDG_SESSION_TYPE not set in this environment!
(polkit-gnome-authentication-agent-1:15873): polkit-gnome-1-WARNING **: Unable to determine the session we are in: No session for pid 15873
[WARN 10:29:55.869020] [Preferences:192] '/usr/share/plank/themes/Default/dock.theme' is read-only!
[WARN 10:29:56.144996] [TrashDockItem:35] GSettingsSchema 'org.gnome.nautilus.preferences' not found
At this point the chroot is running, but the chrome extension has corrupted.
By going to manage extensions and repair extension (which just re-installs it) I can run the extension and enter the chroot. From then on everything works fine.

I've just found the extension doesn't corrupt when using xorg. For example:- 'sudo startxfce4 -X xorg'
I can then jump between windows using ctrl-alt-shift and the back or forward keys, and jump into the chroot using the extension.

Is there a solution for this. Do we get xiwi back or not?

@kayshcache,
No, a solution/fix has not yet been implemented/merged.
But, one workaround was posted above, I'll provide it here also:

As a workaround, you can select 'repair extension' from the extensions menu in chrome, then click on the icon to select your chroot.

Another workaround is to use the 'xorg' xmethod instead, also posted above.
I prefer 'xiwi' so I use the first workaround and repair the extension.
Hope this helps,
-DennisLfromGA

@DennisLfromGA Thank you for taking the time, Dennis. I was already aware that xorg is still working as before. I was hoping to get my xiwi workflow back again. The workarounds mention here, repairing the extension, either isn't working for me as it does for the person mentioning it, or just doesn't bring back single apps running in chrome windows as I knew it.

@kayshcache,
Sorry to hear the extension repair workaround doesn't work for you.
I just tried it myself and if I attempt to launch a xiwi app it will fail but if I repair the extension and immediately try to launch it again it works - for me at least -

Hope this helps,
-DennisLfromGA

@DennisLfromGA I really do appreciate you taking the time to advise me personally. Xiwi really is utterly broken for me. Since the last update on the Beta channel last week xiwi no longer successfully connects under any troubleshooting condition I have tried: with any app, either of my well functioning chroots, with any google account, all other extensions disabled, repairing repeating, repairing rebooting, etc.

I fund a way to solve this problem. Just load the unpacked extension.
copy the unpacked app to some directory
cp ~/Extensions/gcpneefbbnfalgjniomfjknbcgkbijom/2.5.2_0/  ~/Downloads/crouton-integration/
then go to  chrome://extensions/ and open dev mode and load  the ~/Downloads/crouton-integration/.
But when open the xiwi windows,It's very slow

I just came here to create an issue about this...I have same problem.
As a 'solution', I have been repairing extension after running the command for the 1st time.  It then runs on the second attempt.
My chroot is buster.  The following is the command I've been using to launch my chroot desktop:
(I get 'timeouts' if I try to do sudo startgnome directly [with the extension connecting], which is another problem I've had.  Works sometimes, most of the time not.  But the below command always launches.)
sudo startxiwi -f startgnome
I am on beta channel.

Same here Asus C302 on dev channel - Version 76.0.3807.0 (Official Build) dev (64-bit)
Worked flawlessly for 6 months until the last update, now the extension corrupts when a chroot is launched.
As a workaround, you can select 'repair extension' from the extensions menu in chrome, then click on the icon to select your chroot.

Confirmed this works for me. it's just a pain to repair the extension over and over again to access the chroot.

I also have this issue on an Acer Chromebook 15 CB5-571 https://www.reddit.com/r/Crouton/comments/ccsyps/crouton_integration_crashing/

As one of probably many sidetracked for a while by this issue, I suggest that more be done to detect the problem and notify the user, eg by detecting the corrupt extension and posting a warning message with a link to this issue. Many will not notice the corrupt extension and try updating crouton (possibly spending a while, as I did, on a tangent fussing with the recent mounted-fs noexec situation). A warning in the updated crouton start scripts would save lots of people some substantial time, until the problem is actually fixed.
That said, thanks very, very much for crouton, and the work everyone puts into it! I understand that Chrome OS is an especially active platform, and probably offers lots of challenges to maintaining an elaborate (but vital) add-on like this.

+1 with ASUS C302 in dev mode, xenial and bionic. The "repair" workaround does the job but would be nice to get back to a non corrupted plugin.
I'm joining kenmanheimer for the crouton great job, thanks a lot.
Daniel

Perhaps useful additional information: it's looking like my xiwi sessions are always gone after a system suspend. This makes the problem more serious, of course, since restarting is more frequently necessary.

I just received 76.0.3809.77 on beta channel and haven't been seeing 'corruption' anymore. The crouton windows still disappear as soon as the laptop lid is closed (even for a second) but now when I select them from the crouton icon, the windows just immediately reopen. Way better than having to 'repair' and turn hidpi back on every time.
Does this match other's experience with the latest beta?

I just received 76.0.3809.77 on beta channel and haven't been seeing 'corruption' anymore. The crouton windows still disappear as soon as the laptop lid is closed (even for a second) but now when I select them from the crouton icon, the windows just immediately reopen. Way better than having to 'repair' and turn hidpi back on every time.
Does this match other's experience with the latest beta?

I'm seeing something a bit more complicated.

If I let the system sleep while a xiwi session is going the windows disappear, but the processes are still going.
On one hand that's great - I can, for instance, use emacsclient to open new frames on my ongoing emacs session, when I forget and let the system sleep. And no need any more to repair the extension. Yay!
On the other hand, those processes accumulate, wasting resources and leaving the linux image unencrypted and mounted. That's not good.

I can explicitly track down the residual processes (ps a) and send TERM signal to the enter-chroot process (sudo kill -TERM ), so I feel like this situation is better. It would be a lot better still, though, if the xiwi windows survived system sleep.
Thanks, @danopia, for bring attention to the changed status!

In response to what I wrote:

I can explicitly track down the residual processes (ps a) and send TERM signal to the enter-chroot process (sudo kill -TERM ), so I feel like this situation is better. It would be a lot better still, though, if the xiwi windows survived system sleep.

Looks like unmount-chroot can be used to do all of this, more easily:
chronos@localhost ~ $: sudo unmount-chroot -fy xenial

On the other hand, those processes accumulate, wasting resources and leaving the linux image unencrypted and mounted. That's not good.

Hmm, have you tried re-opening the windows from the crouton icon?  Like so: https://drive.google.com/file/d/1ivOagkOTCJWOLWgG6rujXuPVXfIGRcvP/view Though I definitely lost one of the 5 when recording that 😏 This is how I'm dealing with the sleep issue now, and it's okay.
Obviously the windows surviving sleep would be better if we can figure out wtf these beta builds are doing. Maybe this ticket needs a rename - there's no corruption being reported for me anymore, the windows just close on lid close.

As mentioned by @kenmanheimer above, unmount-chroot can take care of all of the processes that crouton kicks off. Here's the usage message -
chronos@localhost ~ $ unmount-chroot
unmount-chroot [options] name [...]

Unmounts one or more chroots, optionally killing any processes still running
inside them.

By default, it will run in interactive mode where it will ask to kill any
remaining processes if unable to unmount the chroot within 5 seconds.

Options:
    -a          Unmount all chroots in the CHROOTS directory.
    -c CHROOTS  Directory the chroots are in. Default: /mnt/stateful_partition/crouton/chroots
    -f          Forces a chroot to unmount, potentially breaking or killing
                other instances of the same chroot.
    -k KILL     Send the processes SIGKILL instead of SIGTERM.
    -p          Print to STDOUT the processes stopping a chroot from unmounting.
    -t TRIES    Number of seconds to try before signalling the processes.
                Use -t inf to be exceedingly patient. Default: 5
    -x          Keep the root directory of the chroot mounted.
    -y          Signal any remaining processes without confirmation.
                Automatically escalates from SIGTERM to SIGKILL.

You can just list the processes if you're curious, I only have the lxde-desktop running on mine so that's all that's shown -
chronos@localhost ~ $ sudo unmount-chroot -ap
 4466 su -s /bin/sh -c export SHELL='/bin/bash'; export XMETHOD='xiwi-tab';'exec' 'xinit' '/usr/bin/startlxde'  - denny
Not unmounting /var/crouton/chroots/trusty as another instance is using it.

unmount-chroot is probably the best tool to use for this.
Hope this helps,
-DennisLfromGA

On the other hand, those processes accumulate, wasting resources and leaving the linux image unencrypted and mounted. That's not good.

Hmm, have you tried re-opening the windows from the crouton icon?  Like so: https://drive.google.com/file/d/1ivOagkOTCJWOLWgG6rujXuPVXfIGRcvP/view Though I definitely lost one of the 5 when recording that 😏 This is how I'm dealing with the sleep issue now, and it's okay.

Ah - that's very helpful!
My browser Crouton extension icon was hidden in the overflow area, and the shelf icon disappears when the windows go away, so I didn't realize this was an option! I've moved the browser extension icon to a more prominent place, and it's a great avenue for getting back the windows, without costing any more resources. Thanks!

Obviously the windows surviving sleep would be better if we can figure out wtf these beta builds are doing. Maybe this ticket needs a rename - there's no corruption being reported for me anymore, the windows just close on lid close.

Same for me. The ability to get my xiwi window back intact relieves the pain of the problem, leaving it more as a complicating quirk. But I'm not sure how much attention this is getting from anyone actively working on Crouton, who might change the name of the thread?
I do wonder whether some among Chrome OS developers might be aware of this thread, though. Maybe the beta alleviated the problem coincidentally, as part of addressing an issue noticed for other symptoms. Then again, maybe Crouton is among the Chrome OS developers and they addressed the Crouton issue directly? (If so, I wonder whether Crouton will become superfluous to them as Crostini advances...) Curious.

Update:
With the latest Chrome Dev - Version 77.0.3865.18 (Official Build) dev (64-bit) and the latest crouton I don't have to repair the extension anymore and things reconnect after locking the screen. It appears to be fixed.
crouton: version 1-20190807171712~master:6f45f06a
release: bullseye
architecture: amd64
xmethod: xiwi
targets: xorg,audio,core,extension,lxde,xiwi
host: version 12371.11.0 (Official Build) dev-channel eve
kernel: Linux localhost 4.4.186-16711-gde724c1209ce #1 SMP PREEMPT Tue Aug 6 00:25:30 PDT 2019 x86_64 GNU/Linux
freon: yes

Great news that new build works
I'm on Version 76.0.3809.102 (Official Build) (64-bit) and I'd rather stay out of dev
I've tried to repair the extension, however, when I go to More Tools > Extensions (search for crouton) found it - I don't see a "repair" option ???? - there's "Load Unpacked" "Pack Extension" "Update" "Manage Kiosk Applications" ???


feat(api gateway): Pocket api gateway construct with lambda proxy integrations

Goal
Create an API Gateway construct with lambda proxy integrations, for Pocket. Only minimal configuration options at this time, for our use case -- more can be added later in a backwards-compatible fashion.
Todos

[x] Create constructs
[x] Generate test snapshot
[x] Stand up and test dev

Testing
The below configuration creates an API Gateway with an endpoint named /endpoint that accepts POST requests and forwards them to the appropriate lambda.
class Example extends TerraformStack {
  constructor(scope: Construct, name: string) {
    super(scope, name);

    new AwsProvider(this, 'aws', {
      region: 'us-east-1',
    });
    new LocalProvider(this, 'local', {});
    new NullProvider(this, 'null', {});
    new ArchiveProvider(this, 'archive', {});

    const config: PocketApiGatewayProps = {
      name: 'test-api-lambda',
      stage: 'test',
      routes: [
        {
          path: 'endpoint',
          method: 'POST',
          eventHandler: {
            name: 'lambda-endpoint',
            lambda: {
              runtime: LAMBDA_RUNTIMES.PYTHON38,
              handler: 'index.handler',
            },
          },
        },
      ],
    };

    new PocketApiGateway(this, 'example', config);
  }
}

Tested the endpoint in Postman for the deployed test stage and received appropriate response.
Reference
Tickets:

INFRA-152

Implementation Decisions

Just doing minimal required configuration for now -- we can always add more options later.

Would like advice on

How should deployments be managed? I'm following the example on the docs, which warns that the ID attribute might not be enough to capture all REST changes. I tried using the whole resource (hashed) as a trigger rather than just the ID, but ran into a stack overflow error on the synth step.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Demo for the navigation task

Dear authors,
Thank you very much for releasing the code of the great work! We are now trying to deploy your model for the mobile robot navigation task. We are using inference_pretrained.ipynb as a reference and trying to adapt it for the navigation demo, but facing some troubles with that. Can you please outline the steps that should be done for running your model in navigation mode?
Thank you in advance!

To adapt the inference example from the notebook for navigation:

Use the navigation head by passing head_name='nav' into sample_actions
Use the omnimimic_gnm statistics to unnormalize the action by passing these into sample_actions
The observation dictionary should contain a single key image_nav containing the image observation

However, note that the full trajectory inference example in the notebook doesn't actually handle the timestep pad mask correctly. To actually roll out the policy on a robot you can use the evaluation server here. This is how we evaluated on mobile navigation robots. This server has a function stack_and_pad that will correctly stack the history of observations and create a correct timestep padding mask. Hope this helps!

Cool project!
Using head_name='nav' and unnormalization_statistics=model.dataset_statistics["omnimimic_gnm_dataset"]["action"] leads to an error:
ValueError: Incompatible shapes for broadcasting: shapes=[(6, 4, 2), (100, 2)]
Where 6 is my input batch size. 4 is the number of steps predicted by the model. 100 is number of steps in the statistics. 2 is the dimensionality of a single action.
I.e. my understanding is that this is because the model predicts 4 steps, while the statistics is for 100 steps.

Is there a simple way to either make the model predict 100 steps or to trim the statistics to 4 steps? For performance reasons, I would prefer the later. Looking at the statistics, I understand that worst case I can trim it myself.
What is the interpretation of the outputs of the nav head? Some kind of waypoints? Are they all relative to the robot, or somehow relative to the previous waypoint?

After trimming the stats myself with unnormalization_statistics=dict((stat_name, stat_value[:4,...]) for (stat_name, stat_value) in model.dataset_statistics["omnimimic_gnm_dataset"]["action"].items()), combined with knowledge from the paper and about previous related projects, I am guessing I am looking at metric waypoints relative to the robot, covering a short distance. The robot collecting the nav data is small and not very fast.


[CHAD-5883] Port 'Z-Wave Device Multichannel' DTH to Lua driver

Original DTH: https://github.com/SmartThingsCommunity/SmartThingsPublic/blob/master/devicetypes/smartthings/zwave-device-multichannel.src/zwave-device-multichannel.groovy
@SmartThingsCommunity/srpol-pe-team

@greens @varzac  I'm wondering if it is possible that non-MCD device which has multiple endpoints can support cc MultiChannel ? If so, I don't have any other ideas how to port this DTH to lua, because in this form if non-MCD device supports MultiChannel cc it going to be impacted by those changes.

So here's what I would do:
Add only one fingerprint that checks whether the device supports the multichannel cc. Assign it to a copy of the switch-multilevel profile with a unique name. Use that profile name in the can_handle function of a sub-driver that includes all the code you need to do the interrogation of the different endpoints using device:is_cc_supported(cc, endpoint). You'll probably need a couple of new profiles for the sensor-only endpoints, but the behavior in the defaults from the base driver should be sufficient.

@greens I've tried to make it following your instructions, but I can't dig into device profile name. Do you know how to get it?

@dsobierajsk Hmm. You are absolutely correct...
What you could do is add the "zwMultichannel" capability to the profile and check for its existence as your can_handle

Hi @greens @varzac what do you thing about creating new main driver "zwave-multichannel" to cover those devices. I'm asking because I've noticed that for every device.zwave_endpoints there is also device_class which could help determine child type for each endpoint. Without it, there will be duplicated profiles and lua code in zwave-switch and zwave-sensor drivers.

@dsobierajsk I think you want to only be working in zwave-switch. Other than sensor profiles it should already have everything you need.

2 TC's for sensors are failing now because some changes in battery defaults are needed

If you look at the multichannel DTH, the parent device is always a multilevel switch. The children can be switches, dimmers, or sensors, based on an interrogation of the supported command classes of each endpoint. What you have now has the parent device being either a sensor or a switch, and the children of a switch can only be binary switches and the children of a sensor can only be sensors.
The behavior of the DTH is why I said you should base your work in the zwave-switch driver, only creating a few child profiles for the sensor possibilities.
If you want to get really clever with the child devices, you can interrogate an endpoint that supports multilevel sensor with a SUPPORTED_GET and parse the result to determine the type of sensor it is, which is (as you've probably noticed) more in-depth than we did with the DTH. That's extra, though, and a generic sensor profile is sufficient.

I thought this integration was going to be its own driver? Did something change or is that needed?
cc @varzac

@lelandblue I don't think it's necessary. I have a bit of a hack in mind to avoid it.

Hi @greens, this is what you were thinking about, weren't you? Ofc, changes in battery defaults are still needed. I will prepare PR with fix asap.

I know, PR in scripting-engine that fixes it is waiting for review

I've checked it also with Qubino Flush 2 Relay (I've commented the fingerprints) and it also works well.

Thanks @cjswedes for comments. Now I'm 90% sure that current version will work in the same way as DTH. (The missing 10% are device labels 😄)


Run multimer with a "single receptor" and "multiple partners"

Hallo all,
Let's say that I have a protein to which I would like to dock multiple different proteins but always in a 1:1 ratio.
there is a way to provide a list in the fasta file so that the first protein (receptor) does not require to be re-calculated?
e.g. protein A with proteins B, C, D, E....
I hope my question was clear and that someone has a good suggestion
Thank you!

Certainly! You can dock multiple ligands (proteins B, C, D, E, etc.) to a fixed receptor (protein A) using molecular docking software that supports docking multiple ligands simultaneously in a single run. Prepare your receptor and ligands, create input files specifying them, and run the docking simulation. Analyze the results afterward. This approach saves time and resources compared to docking each ligand individually.
import subprocess
def run_autodock_vina(receptor_file, ligand_files, output_dir):
for ligand_file in ligand_files:
output_file = f"{output_dir}/output_{ligand_file.split('.')[0]}.pdbqt"
command = f"vina --receptor {receptor_file} --ligand {ligand_file} --out {output_file} --log {output_dir}/log.txt"
subprocess.run(command, shell=True)
if name == "main":
receptor_file = "receptor.pdbqt"
ligand_files = ["ligand1.pdbqt", "ligand2.pdbqt", "ligand3.pdbqt"]
output_dir = "dock_output"
run_autodock_vina(receptor_file, ligand_files, output_dir)

Thank you for the answer.
I meant by using alphafold multimer.
Moreover, are you sure you can dock proteins with vina? Where is this publushed? To my knowledge it can be used only with small molecules since it test conformations.
On another note lets say af multimer provides me a model. How do you test the quality of the docking?
Thanks

From: Tejas Amol Hande @.>
Sent: Friday, March 8, 2024 1:47 PM
To: google-deepmind/alphafold @.>
Cc: Cocucci, Ema @.>; Author @.>
Subject: Re: [google-deepmind/alphafold] Run multimer with a "single receptor" and "multiple partners" (Issue #902)
Certainly! You can dock multiple ligands (proteins B, C, D, E, etc. ) to a fixed receptor (protein A) using molecular docking software that supports docking multiple ligands simultaneously in a single run. Prepare your receptor and ligands,
Certainly! You can dock multiple ligands (proteins B, C, D, E, etc.) to a fixed receptor (protein A) using molecular docking software that supports docking multiple ligands simultaneously in a single run. Prepare your receptor and ligands, create input files specifying them, and run the docking simulation. Analyze the results afterward. This approach saves time and resources compared to docking each ligand individually.
import subprocess
def run_autodock_vina(receptor_file, ligand_files, output_dir):
for ligand_file in ligand_files:
output_file = f"{output_dir}/output_{ligand_file.split('.')[0]}.pdbqt"
command = f"vina --receptor {receptor_file} --ligand {ligand_file} --out {output_file} --log {output_dir}/log.txt"
subprocess.run(command, shell=True)
if name == "main":
receptor_file = "receptor.pdbqt"
ligand_files = ["ligand1.pdbqt", "ligand2.pdbqt", "ligand3.pdbqt"]
output_dir = "dock_output"
run_autodock_vina(receptor_file, ligand_files, output_dir)
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/google-deepmind/alphafold/issues/902*issuecomment-1986228464__;Iw!!KGKeukY!2dhx2hKwyp9ZINvsfetg2Gnj7QIfGEMDfgPIYbTaK1jpxo3jIMeMmkPD7dj6QL6LVVMeZhagh8GnrTN_amjy-ooJqw$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/BEVFMI6EQMDJRIGPYOMAYLDYXIBVVAVCNFSM6AAAAABD2ZJCLCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBWGIZDQNBWGQ__;!!KGKeukY!2dhx2hKwyp9ZINvsfetg2Gnj7QIfGEMDfgPIYbTaK1jpxo3jIMeMmkPD7dj6QL6LVVMeZhagh8GnrTN_ami0rxQjGw$.
You are receiving this because you authored the thread.Message ID: @.***>

The Alphafold source code does not support this feature, but my solution is manually generates MSA and imports it into the corresponding output folder.  The simplest solution is to first calculate A-B, copy their msas folder to the output folder of A-C, but please note that it is important to ensure that the protein A is in the first position in the fasta file and delete the B folder inside the msas folder. This will automatically read the MSA of protein A and calculate the MSA of protein C when you start with --use_precomputed_msas flag. @Cucco23

Thank you very much for the suggestion!
I will try this.
From: Xiao Guo<PHONE_NUMBER> @.>
Sent: Monday, March 11, 2024 10:30 PM
To: google-deepmind/alphafold @.>
Cc: Cocucci, Ema @.>; Mention @.>
Subject: Re: [google-deepmind/alphafold] Run multimer with a "single receptor" and "multiple partners" (Issue #902)
The Alphafold source code does not support this feature, but my solution is manually generates MSA and imports it into the corresponding output folder. The simplest solution is to first calculate A-B, copy their msas folder to the output folder
The Alphafold source code does not support this feature, but my solution is manually generates MSA and imports it into the corresponding output folder. The simplest solution is to first calculate A-B, copy their msas folder to the output folder of A-C, but please note that it is important to ensure that the protein A is in the first position in the fasta file and delete the B folder inside the msas folder. This will automatically read the MSA of protein A and calculate the MSA of protein C when you start with --use_precomputed_msas flag. @Cucco23https://urldefense.com/v3/__https:/github.com/Cucco23__;!!KGKeukY!xXcOSCdA3x5UiTa2VjDKKVEM6SobW7oqY8RMv4qk2x_SPXSvLjWXY7edbDdPmzqzjy-1r856ZX5qCeVFdN16QBETTQ$
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/google-deepmind/alphafold/issues/902*issuecomment-1989860542__;Iw!!KGKeukY!xXcOSCdA3x5UiTa2VjDKKVEM6SobW7oqY8RMv4qk2x_SPXSvLjWXY7edbDdPmzqzjy-1r856ZX5qCeVFdN0zsdGJ2g$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/BEVFMI25A5H72B4NRBPRS6TYXZSCFAVCNFSM6AAAAABD2ZJCLCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBZHA3DANJUGI__;!!KGKeukY!xXcOSCdA3x5UiTa2VjDKKVEM6SobW7oqY8RMv4qk2x_SPXSvLjWXY7edbDdPmzqzjy-1r856ZX5qCeVFdN0uT5eyLQ$.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

I believe the AlphaPulldown repository (by the Kosinski lab) seems to match what you want to use AF to do


Match

Hi ,
When I inserted this face into db :

and compared with this, he found the first one! why ? he should return unknown.

distance Threshold 0.5 and the actual threshold
"bestMatchPerson": {
"_label": "2",
"_distance": 0.44472999761672266
}
What do I miss ? the image inputs and compare are not good ?
Thanks in advance.

what exactly did you use? if you call explict match, it always returns a distance value. if you call findBestMatch, it will return best match if its above distanceThreshold
actual code:
public findBestMatch(queryDescriptor: Float32Array): FaceMatch {
    const bestMatch = this.matchDescriptor(queryDescriptor);
    return bestMatch.distance < this.distanceThreshold ? bestMatch : new FaceMatch('unknown', bestMatch.distance);
  }

there seems to be a typo in the method
fixed via https://github.com/vladmandic/face-api/commit/1b4580dd6ee175681655d9f4a9011310afc699a9#diff-e20cfb0253557048cbdfaa2de9a86d00cafa78932dd7ba9fb3ae6289b109473e
new version is published

I used this code:
const distanceThreshold=0.5;
let matcher = new faceapi.FaceMatcher(labeledFaceDescriptors, distanceThreshold);
bestMatchPerson = matcher.findBestMatch(faces[0].descriptor);

I check with another person that is not in DB:

And I got this people:

"bestMatchPerson": {
"_label": "103",
"_distance": 0.33258788746528983
}

i cannot reproduce the issue. post a link to a working gist (complete).

Here routing of register and compare all:
https://gist.github.com/danies8/2a4bec02851f3952f1e102f9120d0997

so what is the problem??
detected distance is 0.33 and distanceThreshold is 0.5
clearly distance is less than that so it returns a match!?!?!
and when someone asks for reproducible code, make an effort to write a reproduction that works
copy & paste from your app is not helpful
btw, this is the code i just wrote to test your two images
look how few dependencies it has and how short it is:
const fs = require('fs');
const tf = require('@tensorflow/tfjs-node');
const faceapi = require('../dist/face-api.node.js');

let optionsSSDMobileNet;
const minConfidence = 0.1;
const distanceThreshold = 0.5;
const modelPath = '../model';
const labeledFaceDescriptors = [];

async function initFaceAPI() {
  await faceapi.nets.ssdMobilenetv1.loadFromDisk(modelPath);
  await faceapi.nets.faceLandmark68Net.loadFromDisk(modelPath);
  await faceapi.nets.faceRecognitionNet.loadFromDisk(modelPath);
  optionsSSDMobileNet = new faceapi.SsdMobilenetv1Options({ minConfidence, maxResults: 1 });
}

async function getDescriptor(imageFile) {
  const buffer = fs.readFileSync(imageFile);
  const tensor = tf.node.decodeImage(buffer, 3);
  const faces = await faceapi.detectAllFaces(tensor, optionsSSDMobileNet)
    .withFaceLandmarks()
    .withFaceDescriptors();
  tf.dispose(tensor);
  return (faces && faces[0]) ? faces[0].descriptor : null;
}

async function registerImage(inputFile) {
  const descriptor = await getDescriptor(inputFile);
  if (descriptor) {
    const labeledFaceDescriptor = new faceapi.LabeledFaceDescriptors('1.png', [descriptor]);
    labeledFaceDescriptors.push(labeledFaceDescriptor);
  }
}

async function findBestMatch(inputFile) {
  const matcher = new faceapi.FaceMatcher(labeledFaceDescriptors, distanceThreshold);
  const descriptor = await getDescriptor(inputFile);
  return matcher.findBestMatch(descriptor);
}

async function main() {
  await initFaceAPI();
  await registerImage('1.png');
  const bestMatch = await findBestMatch('2.jpg');
  console.log(bestMatch);
}
main();

and you have NOT addressed issues or suggestions i made earlier:

use only models you actually need
for example, i dont see why you have age&gender detection
youre still loading models again and again
youre still writing temp file just to read it back immediately
when you already have a buffer
youre still using canvas library instead of native decoding
youre still assuming that number of detected faces in each image is exactly 1
not checking for more and not even checking if 1st face is valid
(only thing youve fixed is to use writeFileSync)

until you clean up your code i will not address any of your issues

so what is the problem??
detected distance is 0.33 and distanceThreshold is 0.5
clearly distance is less than that so it returns a match!?!?!
But is not the right person, how can i give enter ???

2.youre still loading models again and again
I used these modals in loading process when app is loading
const tf = require('@tensorflow/tfjs-node');
const faceapi = require('@vladmandic/face-api');
const path = require('path');
async function loadModals() {
const faceDetectionNet = new faceapi.FaceDetectionNet();
const modelPath = '../../node_modules/@vladmandic/face-api/model';
await faceDetectionNet.loadFromDisk(path.join(__dirname, modelPath));
await faceapi.nets.ageGenderNet.loadFromDisk(path.join(__dirname, modelPath));
await faceapi.nets.faceLandmark68Net.loadFromDisk(path.join(__dirname, modelPath));
await faceapi.nets.faceRecognitionNet.loadFromDisk(path.join(__dirname, modelPath));
await faceapi.nets.faceExpressionNet.loadFromDisk(path.join(__dirname, modelPath));
}
module.exports = { loadModals }
3.I valid for first face
youre still using canvas library instead of native decoding
// 2. Create tensor
let arr = imageStrEncodedBase64.split(',');
let bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
const tensor = tf.node.decodeImage(u8arr, 3);
4.
if (!faces) {
let detectAllFacesMessage = "compare all:faces is null or undefined";
utils.logger.log({
level: 'error',
message: detectAllFacesMessage,
label: 'faceRecognition.ts'
});
return { success: false, error: detectAllFacesMessage }
}

If distance is above threshold, you don't get a person, you get 'unknown'.
This is working as expected. Issue is closed.

So, how I can know if it right person or not ?
I will ask differently, how can i know if to let him enter or not?

i think you got entire concept wrong - distance means how different two faces are. distance of 0 means identical. so if distanced is below a threshold, you get a match.

I need to learn my pictures and define what is the distance that is right to my organization.
I see good match is up to 0.35  and above is not good match.
So 0.35 is the distance that above it will not enter, and below it it will enter.
While threshold is 0.5.
I understood you right ?


Error in prepare_data.sh

Hi,
I am trying to run prepare_data.sh. After successfully completing everything till LM6D_ds_2_gen_rendered.py, I am getting the following error:
Traceback (most recent call last):
File "toolkit/LM6d_ds_3_gen_rendered_pose.py", line 80, in
with open(sel_set_file) as f:
IOError: [Errno 2] No such file or directory: '/home/dp18-29/mx-DeepIM/toolkit/../data/LINEMOD_6D/LM6d_converted/LM6d_refine_syn/image_set/observed/LM6d_data_syn_train_observed_ape.txt'
('/home/dp18-29/mx-DeepIM/toolkit/../data/LINEMOD_6D/LM6d_converted/LM6d_refine_syn/data/rendered', 'FINNS ?????????????????', True)
('/home/dp18-29/mx-DeepIM/toolkit/../data/LINEMOD_6D/LM6d_converted/LM6d_refine_syn/image_set', 'FINNS ?????????????????', True)
start  0 ape
self.window:  <GLFW.Window object at 0x7f931dcaadd0>
self.render_kernel at init:  <glumpy.gloo.program.Program object at 0x7f9313e1d750>
Traceback (most recent call last):
File "toolkit/LM6d_ds_4_gen_rendered.py", line 89, in
with open(observed_list_path.format(set_type, class_name)) as f:
IOError: [Errno 2] No such file or directory: '/home/dp18-29/mx-DeepIM/toolkit/../data/LINEMOD_6D/LM6d_converted/LM6d_refine_syn/image_set/observed/LM6d_data_syn_train_observed_ape.txt'
Any idea how to proceed?

Got fixed! :)


[Engineering] Lower time for botbuilder-applicationinsights tests

Addresses # 2338
Description
This PR optimizes the time for the botbuilder-applicationinsights tests having no impact in the code coverage numbers.
Specific Changes

correlation context is null (disabled) middleware does not fail test removed since it's equal to calls logging middleware (when logActivityTelemetry is true)

Testing

Promoted