Add netstandard2.0 support to C# wrapper

The c# wrapper has been reorganised in a new-style csproj to enable .NETStandard support. It targets, .NET 4.0, 4.6.1 and NETStandard2.0 and copies the c++ dll to each of the respective build folders. This PR also packages all of the above into a nuget package with a .targets file which redistributes the appropriate native dll on build. There is also a utility to automatically build librealsense during the wrapper build but it will fallback to the installed SDK if building isn't an option.

Hi @zivsha,
Got caught up with work last.
I have merged your edits with my own and made a couple of quick tweaks. That should all compile nicely now in VS2017+ or VS2015.
To my knowledge (although I'd be grateful if there are any other suggestions) there are three easy-ish ways to allow users to define their own build directories:
1. Specifying the BuildPath parameter at build time e.g. MSBuild.exe /p:BuildPath="c:\librealsense2.dll" but I think that only works from the command line
2. Edit the csproj and add that same parameter as a property in the csproj e.g.
<PropertyGroup>
    <BuildPath>c:\librealsense2.dll</BuildPath>
 </PropertyGroup>

That however means changes will be commited.
3. Use an environment variable which can be collected by the compiler through a very similar mechanism to the above.
We could then start parsing json and all sorts of other things but it becomes pretty heavy.
Let me know your thoughts

We'd like to use the C# wrapper and netstandard2.0.
Do you have any plans on including this in a release in the near future?

Hi @f00f
Yes, we are planning to merge this PR once it's complete.

@zivsha @dorodnic What are we missing to finish this off?

Hi @sebandraos
We just need to fix merge conflics and make sure this works for VS2015 and 2017 (manually, as the gated does not build it). Also - we've lowered the minimum required .NET framework to 3.5, will this cause an issue?

@zivsha I can at least confirm that this branch (merged with development) works flawlessly with VS2017. I am already using a custom build of it.

@jangernert thanks, I too am using VS17 and it worked for me as well, I did not test it yet with VS15, but prior to the last commits, it did not work, and I havn't had a chance to test it

I have split the VS2015 and VS2017 parts into two solutions which need to be built independently. Assuming the SDK itself works in Framework 3.5 these changes shouldn't affect that. There will have to be a minor tweak to enable compilation for 3.5 in the project files.

I think we're OK with having the tutorial projects compile with .NET 4.0 if that's what you mean

I have just changed the projects to target Framework 3.5. There are two points still to correct to my mind:

Do we default to x86 or x64 when running in AnyCPU?
(How) Do we allow a custom location of the libraries. My current favourite method is for the user to add a BuildPath property before the default in the .csproj or at the command line. (See options 1/2 in this comment )

Hi @sebandraos ,
I've opened a PR on your fork to fix the merge conflicts this PR has, please merge so this PR can be ready for merge.
Regarding your comments, I think that:

AnyCPU should build as x86 (My reason behind this, is that this is sort of a default state and CMake's default build platform is win32, so this is a nice fit)
I think that any solution is OK as long as we document it clearly in the instructions

I don't have VS2015 installed yet, but when I open the 2015 sln, I get the following error for all build platforms (the content differs a bit between the platforms):

Your project.json doesn't have a runtimes section. You should add '"runtimes": { "win-x64": { } }' to your project.json and then re-run NuGet restore.	Intel.RealSense.2015

I get the same error message in VS2017 but am building and running successfully in VS2015. I did, however, have to revert a few lines in the code so that they don't use c#7+ features which are incompatible with 2015.

Took me one hour to install VS15 :| but I confirm it works for me as well.
I do have a question though - if I build realsense2.dll for x64 and build the C# wrapper for x86 I don't get any warning telling me that I'm build with a different platform, do you know of a way to help users avoid getting this error, which informs them of absolutely nothing (even though the first google result point to the exact answer on SO)

Note (to self) - since the assembly name changed, need to update Unity documentation accordingly

This is where my question about AnyCPU comes in. I built realsense2.dll in 32-bit and ran the demos in AnyCPU on an x64 windows and got the same issue. Forcing the demo to be x86 or rebuilding realsense2.dll as 64-bit resolved the issue. This is normal behaviour. I think we therefore really need to check the OS/processor architecture and the library to ensure compatibility. I am working on an edit to allow the specification of x86 and x64 custom builds within the csproj and will try to add to that a processor arch check (easy) and lib check (not so easy).

Super cool, guys! Thanks.


chore(deps): update ci dependencies

This PR contains the following updates:

Package
Type
Update
Change

common-dev-assets

digest
bbf8903 -> 7cb1ccb

github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper
require
patch
v1.10.8 -> v1.10.14

Release Notes

terraform-ibm-modules/ibmcloud-terratest-wrapper (github.com/terraform-ibm-modules/ibmcloud-terratest-wrapper)
v1.10.14
Compare Source
Bug Fixes

deps: update gomod (#590) (b608f5f)

v1.10.13
Compare Source
Bug Fixes

deps: update gomod (#584) (faa3056)

v1.10.12
Compare Source
Bug Fixes

deps: update module github.com/ibm/platform-services-go-sdk to v0.41.0 (#582) (77a309d)

v1.10.11
Compare Source
Bug Fixes

deps: update module github.com/gruntwork-io/terratest to v0.43.8 (#581) (5b1468a)

v1.10.10
Compare Source
Bug Fixes

fixed a bug in upgrade test (#579) (8d18919)

v1.10.9
Compare Source
Bug Fixes

deps: update module golang.org/x/crypto to v0.11.0 (#578) (7d3a4ef)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

:tada: This PR is included in version 1.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Update HAPI section to use the auto generated documentation for protobuf APIs

Problem
This section is manually update every release and has the possibility to be out of date. GitHub creates automated documentation each time the protobufs are updated that should stay up to date.
Solution
Update the HAPI section with the link to the auto-generated protobuf API docs https://hashgraph.github.io/hedera-protobufs/.
Alternatives
No response
### Tasks
- [ ] Design the Hedera protobufs landing page
- [ ] Source the content required for the landing page and link the auto generated protobuf documentation
- [ ] SMEs to review the documentation

This might mean we change the pages in the HAPI section to hyperlinks to the auto generated page


StyleCI patch applier

Similar to what we have for Fabbot.io but then for StyleCI.io :)

This would be awesome. :)

@GrahamCampbell is there a way to get the patch-url for PR?
Fabbot provides this information with http://fabbot.io/patch/org/repo/pr-nr/hash/ but styleci hides this behind a shortened URI like https://styleci.io/analyses/qoWlZq/diff

The way to get the patch url for a pull request would be to use github's api to get the head commit in the PR, then look at the status API to get the analysis url.

The status API might even let you get the status for a pull request. I'm not sure. You might be able to use refs/pull/42/head as a ref, or something simelar.

Fabbot provides this information with http://fabbot.io/patch/org/repo/pr-nr/hash/

The trouble is that a single commit hash can have multiple analyses on our system, so it's not a one-to-one mapping.

Just read your comment again. If you have the sha id, all you need to do it go to github's status API and ask it for the styleci analysis id.
You;re going to want to call:
GET /repos/:owner/:repo/commits/:ref/status

Then look for the entry where context is StyleCI.

OK will try that :+1:

Its here :smile: #474


job array support

Can slurmpy support job arrays?

I was just about to ask the same question:) That would be really cool.

You can already do arrays:
slurm_array = Slurm("trim", {"array": "1-10"})
	jobId = slurm_array.run("echo ${SLURM_ARRAY_TASK_ID}",name_addition="testarray")


Closes: #1 Update validations.py python script

Update validations.py python script
Fixed the behavior of validate_user function in validations.py
Fixes #1

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

@googlebot I signed it!


Remove extra '**'

remove extra '*' from the end of the aritcle；
or they have other meanings :D

Good spot!
/lgtm

/approve


feat: slack-approval: show AWS Region in slack approval Dialog

sorry - there is still a bug in it!


Add nft module

About
Newly created a nft module
Initialized module by using starport
Changes

Added nft module
Removed remained irismod from app.go
Restricted editing token uri
Incrementally assign token id
Add test command to readme
Add protogen command to readme
impl handler

Issue
#38

Left todos

[] refactor msgServer
[] supporting cmd
[]  impl query

@EG-easy
I left comments, could you review again?


Resolved Output path of current Prisma

/claim #7771
/fixes #7771

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@aqrln @jharrell @rishi-raj-jain Thank you so much you reviewing this PR and guiding me.
Sorry for misunderstanding i guess it was just that we are encountering issues with inconsistent Prisma versions when running yarn prisma -v and need to ensure consistent Prisma versions across different environments.
So i though its just some scripts and dependency faults.
Closing this PR for now and will raise new one with right solution :)
Thank you.


envrc breaks ob-jupyter

In the switch from direnv to envrc I lost the ability to run jupyter-python source blocks.
I suspect it is because ob-jupyter tries to execute jupyter kernelspec list to retrieve available jupyter kernels. When using direnv, the command is successfully executed in the virtual environment. With the new envrc, the command gets executed in the "global python" and fails.
For now I solved it by switching back to direnv but it would be nice to get it to work :)

As of 6444662 this issue should be resolved. Let me know if that isn't the case and I'll reopen it. Thanks for bringing it to my attention!

Unfortunately it does not fix the issue for me!

How about:
;; add to ~/.doom.d/config.el
(require 'envrc)
(remove-hook 'change-major-mode-after-body-hook #'+direnv-init-h)
(envrc-global-mode +1)

Nevermind that suggestion, it won't work. Give this a try instead:
;; add to ~/.doom.d/config.el
(defvar +direnv--old-process-environment nil)
(defadvice! +direnv--persist-environment-in-org-babel-execution-a (orig-fn &rest args)
  :around #'org-babel-execute-src-block
  (if +direnv--old-process-environment
      (apply orig-fn args)
    (setq-default +direnv--old-process-environment (default-value 'process-environment)
                  process-environment process-environment)
    (unwind-protect (apply orig-fn args)
      (setq-default process-environment +direnv--old-process-environment
                    +direnv--old-process-environment nil))))

Yes, that worked! Thanks a lot!!

Great! I'll push this upstream soon. I'll leave this open until I have.


fix(table): add missing rowgroup roles

The native cdk-table adds thead, tbody, and tfoot elements but was
omitting the "rowgroup" role from these. This is necessary since we also
specifically add roles to all of the other table elements.

@andrewseguin please take a look at the new changes I've added to this PR


Q: React Demo

Is there a React SPR demo floating around somewhere? Given this is the example repo for a Next.js version I figure it's the most appropriate place I've seen so far to make a query about the existence of a React one.

I've experimented with SPR recently. It does decrease the evaluation metrics on the backend! So it can reduce your expenses indeed.
As for performance... it's not as good as I hoped. TTFB from Zeit CDN fluctuates heavily (they don't have many servers it seems). I got all numbers between 50ms and 1000ms and for the same app hosted on DGO I had stable 250-300ms TTFB.

@ivan-kleshnin Can you share your test methodology and deployment so we can replicate?

@ivan-kleshnin we are very close to launching the solution that addresses the "cold hit" problems of SPRv1. Internally we call it SPRv2. Look forward to sharing it with you all soon!

Hey folks! We have upgraded this repo to take advantage of incremental static site generation (iSSG). In short:

There’s never a cold boot anymore when accessing the page
The page gets incrementally re-built asynchronously
Always fast & available

This is thanks to Next.js' new hooks for static site generation, see the RFC here, where you can learn more about how this works.
I’m closing this issue for now as it’s no longer applicable. Feel free to ping me with any questions.


Develop

Status
READY/IN DEVELOPMENT/HOLD
Description
Impacted Areas in Library

Which issue(s) does this pull-request fix?

Any special notes for your reviewer?

Checklist

[ ] Automated tests exist
[ ] Updated Package Requirements (if required, and with maintainers' approval)
[ ] Local unit tests performed
[ ] Documentation exists link
[ ] Local pre-commit hooks performed
[ ] Desired commit message set as PR title and description set above
[ ] Link to relevant GitHub issue provided

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 94.172%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1018

Relevant Lines:
1081

💛  - Coveralls


Game of life firmware added

Please check the instructions, but no hurry.

Done in  pull request #11.


Remove direct use of reflect

Reflect is still used indirectly via encoding/json and sort.  Those will need to be removed in separate steps

Codecov Report

Merging #33 into master will decrease coverage by 0.74%.
The diff coverage is 80.95%.

@@            Coverage Diff            @@
##           master     #33      +/-   ##
=========================================
- Coverage   98.95%   98.2%   -0.75%
=========================================
  Files          20      21       +1
  Lines        1337    1337
=========================================
- Hits         1323    1313      -10
- Misses          8      17       +9
- Partials        6       7       +1

Flag
Coverage Δ

#dot
98.2% <80.95%> (-0.75%)
:arrow_down:

#dot_encoding
91.26% <80.48%> (-3.94%)
:arrow_down:

#dot_encoding_rich_text
100% <ø> (ø)
:arrow_up:

#dot_encoding_set
100% <ø> (ø)
:arrow_up:

#dot_encoding_sparse
100% <ø> (ø)
:arrow_up:

Impacted Files
Coverage Δ

encoding/catalog_reflect.go
100% <100%> (ø)

utils.go
98.42% <100%> (-0.03%)
:arrow_down:

encoding/catalog.go
81.08% <27.27%> (-13.04%)
:arrow_down:

encoding/encodings.go
93.1% <0%> (-3.45%)
: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 d0f03f7...13694bf. Read the comment docs.


future-proof handler traits

a subset of #173 that would still be necessary even after the TAIT regression is fixed.

Thanks. LGTM


Merge?

Looks like you did some cool work here! Can this be merged upstream? @eljojo
Cheers,
Matthias

Sure!
Thanks for opening the PR.
I haven't tested extensively but I think it works better.
:shipit:

LGTM Thanks!!


refactor(dialog): normalize event names

A while ago we made the output names of components consistent (e.g. #8053 and #8052), however that didn't cover the methods on the dialog. These changes align the dialog event names with the ones on the various components.

Addressed the feedback @jelbourn @josephperrott.

@crisbeto Can you rebase this?  There have been changes to the dialog that introduced new usages of the properties being renamed in this PR.

Rebased and sorted out the compilation error.


Demo Region Reset Optional

Add a bool to DemoRegion's constructor that makes adding a reset button optional.

There are a lot of ownership issues that need to be solved here.
The demos should probably be moved away from shared_ptr


Get-CsPoolUpgradeReadinessState is not available in Skype for Business Server 2019.

Get-CsPoolUpgradeReadinessState is not available in Skype for Business Server 2019, please see if this command is deprecated or missed in the build. Take action accordingly.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 91c9c3b1-7919-bd59-9ee8-5e2198c61fac
Version Independent ID: 4a0f1966-0c42-e2ba-1c61-c6602dcc9a46
Content: Get-CsPoolUpgradeReadinessState (skype)
Content Source: skype/skype-ps/skype/Get-CsPoolUpgradeReadinessState.md
Service: skypeforbusiness-powershell
GitHub Login: @kenwith
Microsoft Alias: kenwith

Any updates on assigning this to someone ?

@NeeranjanShettar Thank you for this feedback
This is a duplicate of https://github.com/MicrosoftDocs/office-docs-powershell/issues/1610 so I am closing this issue.


chore: Remove Get() in offerings in favor of Compatible()

Fixes #N/A
Description
Remove Get() in the offerings call in favor of Compatible()
Buddy Change for: https://github.com/kubernetes-sigs/karpenter/pull/1313
How was this change tested?
make presubmit
/karpenter snapshot
Does this change impact docs?

[ ] Yes, PR includes docs updates
[ ] Yes, issue opened: #
[x] No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 82.496%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
5552

Relevant Lines:
6730

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.007%) to 82.467%

Totals

Change from base Build<PHONE_NUMBER>:
-0.007%

Covered Lines:
5550

Relevant Lines:
6730

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.008%) to 82.481%

Totals

Change from base Build<PHONE_NUMBER>:
-0.008%

Covered Lines:
5551

Relevant Lines:
6730

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.02%) to 82.467%

Files with Coverage Reduction
New Missed Lines
%

pkg/providers/amifamily/ami.go
1
90.56%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
5550

Relevant Lines:
6730

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.007%) to 82.481%

Totals

Change from base Build<PHONE_NUMBER>:
0.007%

Covered Lines:
5551

Relevant Lines:
6730

💛  - Coveralls


Copy trigger price from other positions

If there are two positions with the same collateral but at different prices, the position with the lower price should be allowed to increase it to the level of the other position without being subject to cooldown.

Commit


proposal: remove import strategy option

I think having import strategy be a separate option creates unnecessary API surface - the usual arguments apply here - more to document, more to test, more to support, more potential sources of confusion for users, etc. This, in particular is sticky because it's not necessarily clear how the strategy option interacts with other import options Which other options apply to which strategies? Do some apply to all strategies, or a subset. If you pass an option that doesn't apply to a strategy, will it be silently ignored, or will there be an error?
The batch import strategy is basically what we've been doing and allows the user to tune a pretty straightforward latency/throughput tradeoff. What's missing is having timeouts to import smaller batches in the case that data isn't coming in at a high rate.
I think we can add this functionality in conjunction with the batch import strategy without having them be mutually exclusive. Whenever a new batch starts, we can start a timer which will be the upper bound on how long to wait before importing that batch. The expected case would be that the data reaches the batch size and is imported well before that timer fires, but in the case that incoming data is slow or sporadic, the timer ensures that data is indexed in a timely fashion and not buffered indefinitely.

My comment here is relevant: https://github.com/pilosa/pdk/issues/77#issuecomment-391846997

I created the following diagram representing my understanding of the go-pilosa import logic. The yellow notes indicate two areas where I think there are potential inefficiencies.

The diagram below is not a complete proposal, but it indicates some things that I think may improve import efficiency, and hopefully this can spur discussion. The main problem I have with this proposal is that it requires a map lookup (map[slice]chan Record) based on Record.Slice() for every record. The current solution uses a slice index, which is more efficient. What I do like about this proposal is that threadCount refers to the number of workers posting []Record batches to Pilosa. In this case, if records are added in column order, they will still bottleneck through the sliceChannel, but there will be multiple workers posting batches concurrently.

Some thoughts about the proposal:

As discussed in yesterday's meeting, a slice should be assigned to a single worker, so I think keeping the slice<->worker association in a map is not advantageous over using slice % worker as long as the number of workers is constant.
One of the points made in the proposal is sending always batch size bits from worker to the server. But that increases the memory usage a lot, especially if there are many workers. Also it may sometimes take a lot of time to fill the batch.
The channel between workers and the posters is a bottleneck, as the proposal mentions. Since there could be millions of bits in a batch, I think that channel may introduce quite a bit of overhead (and copying?). I am not sure I understand the advantage of separating the posting step from the worker.

A serious drawback of the current import code is, it creates the whole import mechanism on each importFrame. I think we should create that mechanism (workers, channels, etc.) only once, and each import should use the same channels, workers etc.
Also, it would be better to think about a stream of bits (e.g., coming from kafka) instead of batches of bits from a csv.


indentingWithTabs should work when pressing the ] button on the mac

Hi, when someone presses a button that should indent the lines, if they have indentWithTabs on it should work without having to keep pressing it to the tab width you provided.
Example
echo "";
if you press ] on the mac and the indentWithTabs is on it should indent that with tabs immediately and not wait for the the tab width to be reached.

Are indentUnit and tabSize set to the same value?

Nope, dosen't look like it is. I see indentUnit set at 2 and tabSize at 8.

The command bound to ctrl-] is defined to add one indentUnit of indentation. If you want that to be a tab, make sure those two options have the same value.


Image manager not listing the "on-server" images anymore

Image manager not listing the "on-server" images anymore

Any error in console?

I have the same error. Same issue (probably linked) in the image tab.


Update protocols-in-tls-ssl--schannel-ssp-.md

added Windows 11 support lines

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

I have just received another question on TLS support for Windows 11 referencing this page. Please merge this pull request to document Windows 11 protocol support. @lastnameholiu


test: attempt at preventing 'bind: address already in use'

Description

Address one TODO https://github.com/openfga/openfga/blob/d7cd331ffed5530f44fe2cd85a3886f197870ebd/cmd/run/run.go#L232

Prevent port clashing when running tests, as seen in https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458:

Run make test
go generate ./...
go test -race \
		-coverpkg=./... \
		-coverprofile=coverageunit.tmp.out \
		-covermode=atomic \
		-count=1 \
		-timeout=10m \
		./...
?   	github.com/openfga/openfga/assets	[no test files]
?   	github.com/openfga/openfga/cmd	[no test files]
?   	github.com/openfga/openfga/cmd/openfga	[no test files]
?   	github.com/openfga/openfga/cmd/util	[no test files]
?   	github.com/openfga/openfga/internal/authn	[no test files]
?   	github.com/openfga/openfga/internal/authn/presharedkey	[no test files]
?   	github.com/openfga/openfga/internal/build	[no test files]
?   	github.com/openfga/openfga/internal/condition/metrics	[no test files]
ok  	github.com/openfga/openfga/cmd/migrate	39.562s	coverage: 15.6% of statements in ./...
?   	github.com/openfga/openfga/internal/middleware/authn	[no test files]
?   	github.com/openfga/openfga/internal/mocks	[no test files]
?   	github.com/openfga/openfga/internal/test/check	[no test files]
?   	github.com/openfga/openfga/internal/test/listobjects	[no test files]
?   	github.com/openfga/openfga/pkg/middleware/logging	[no test files]
?   	github.com/openfga/openfga/pkg/server/health	[no test files]
?   	github.com/openfga/openfga/pkg/server/test	[no test files]
ok  	github.com/openfga/openfga/cmd/run	[4](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:5)8.390s	coverage: 4[5](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:6).8% of statements in ./...
ok  	github.com/openfga/openfga/cmd/validatemodels	2[6](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:7).061s	coverage: 22.3% of statements in ./...
ok  	github.com/openfga/openfga/internal/authn/oidc	4.381s	coverage: 45.0% of statements in ./...
ok  	github.com/openfga/openfga/internal/condition	1.108s	coverage: 56.8% of statements in ./...
ok  	github.com/openfga/openfga/internal/condition/eval	1.114s	coverage: 29.1% of statements in ./...
ok  	github.com/openfga/openfga/internal/condition/types	1.0[7](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:8)0s	coverage: 63.6% of statements in ./...
ok  	github.com/openfga/openfga/internal/graph	17.526s	coverage: 55.0% of statements in ./...
ok  	github.com/openfga/openfga/internal/keys	1.140s	coverage: 24.3% of statements in ./...
ok  	github.com/openfga/openfga/internal/server/config	1.025s	coverage: 90.9% of statements in ./...
ok  	github.com/openfga/openfga/internal/utils	1.034s	coverage: 100.0% of statements in ./...
ok  	github.com/openfga/openfga/internal/validation	1.090s	coverage: 21.0% of statements in ./...
ok  	github.com/openfga/openfga/pkg/encoder	1.011s	coverage: 7.7% of statements in ./...
ok  	github.com/openfga/openfga/pkg/encrypter	1.011s	coverage: 72.0% of statements in ./...
ok  	github.com/openfga/openfga/pkg/gateway	1.016s	coverage: 7.3% of statements in ./...
ok  	github.com/openfga/openfga/pkg/logger	1.012s	coverage: 17.6% of statements in ./...
ok  	github.com/openfga/openfga/pkg/middleware/http	1.0[8](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:9)8s	coverage: 12.3% of statements in ./...
ok  	github.com/openfga/openfga/pkg/middleware/requestid	3.233s	coverage: [9](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:10)2.3% of statements in ./...
ok  	github.com/openfga/openfga/pkg/middleware/storeid	1.069s	coverage: 90.9% of statements in ./...
ok  	github.com/openfga/openfga/pkg/middleware/validator	3.181s	coverage: [10](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:11)0.0% of statements in ./...
?   	github.com/openfga/openfga/pkg/storage/test	[no test files]
?   	github.com/openfga/openfga/pkg/testfixtures/storage	[no test files]
?   	github.com/openfga/openfga/pkg/testutils	[no test files]
ok  	github.com/openfga/openfga/pkg/server	70.912s	coverage: 67.2% of statements in ./...
ok  	github.com/openfga/openfga/pkg/server/commands	1.210s	coverage: 30.0% of statements in ./...
ok  	github.com/openfga/openfga/pkg/server/commands/reverseexpand	1.187s	coverage: [11](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:12).1% of statements in ./...
ok  	github.com/openfga/openfga/pkg/server/errors	1.098s	coverage: 49.3% of statements in ./...
ok  	github.com/openfga/openfga/pkg/storage	1.056s	coverage: 21.6% of statements in ./...
ok  	github.com/openfga/openfga/pkg/storage/memory	3.200s	coverage: 51.6% of statements in ./...
ok  	github.com/openfga/openfga/pkg/storage/mysql	76.309s	coverage: 50.7% of statements in ./...
ok  	github.com/openfga/openfga/pkg/storage/postgres	14.804s	coverage: 50.3% of statements in ./...
ok  	github.com/openfga/openfga/pkg/storage/sqlcommon	1.056s	coverage: 4.0% of statements in ./...
ok  	github.com/openfga/openfga/pkg/storage/storagewrappers	6.117s	coverage: 11.0% of statements in ./...
ok  	github.com/openfga/openfga/pkg/telemetry	1.048s	coverage: 13.9% of statements in ./...
ok  	github.com/openfga/openfga/pkg/tuple	1.070s	coverage: 52.1% of statements in ./...
ok  	github.com/openfga/openfga/pkg/typesystem	1.149s	coverage: 35.8% of statements in ./...
ok  	github.com/openfga/openfga/tests	3.189s	coverage: 37.9% of statements in ./...
2024/03/17 14:03:36 github.com/testcontainers/testcontainers-go - Connected to docker:
  Server Version: 24.0.9
  API Version: 1.43
  Operating System: Ubuntu 22.04.4 LTS
  Total Memory: 15981 MB
  Resolved Docker Host: unix:///var/run/docker.sock
  Resolved Docker Socket Path: /var/run/docker.sock
  Test SessionID: 4b2dd6b24092e8b6f427c1a42b07e33934e85566cf15e48c91848f2664764c77
  Test ProcessID: 709e79d2-b542-4[12](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:13)0-8cde-5a30a611cac3
2024/03/17 [14](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:15):03:36 🔥 Reaper obtained from Docker for this test session bb30e880f46aed703f227448c9706172227d65bb04b521c48f7dc373e95b3c04
2024/03/17 14:03:36 🐳 Creating container for image postgres:14
2024/03/17 14:03:36 ✅ Container created: 4556f010298f
2024/03/17 14:03:36 🐳 Starting container: 4556f010298f
2024/03/17 14:03:37 ✅ Container started: 4556f010298f
2024/03/17 14:03:37 🚧 Waiting for container id 4556f010298f image: postgres:14. Waiting for: &{timeout:<nil> deadline:0xc00146dc08 Strategies:[0xc000d54bd0]}
2024/03/17 14:03:38 🔔 Container is ready: 4556f010298f
2024/03/17 14:03:45 🐳 Terminating container: 4556f010298f
2024/03/17 14:03:45 🚫 Container terminated: 4556f010298f
2024/03/17 14:03:45 🐳 Creating container for image mysql:8
2024/03/17 14:03:45 ✅ Container created: 78b4ff4214d1
2024/03/17 14:03:45 🐳 Starting container: 78b4ff4214d1
2024/03/17 14:03:46 ✅ Container started: 78b4ff4214d1
2024/03/17 14:03:46 🚧 Waiting for container id 78b4ff4214d1 image: mysql:8. Waiting for: &{timeout:<nil> Log:port: 3306  MySQL Community Server IsRegexp:false Occurrence:1 PollInterval:100ms}
2024/03/17 14:03:57 🔔 Container is ready: 78b4ff4214d1
2024-03-17T14:03:57.866Z	FATAL	HTTP server closed with unexpected error	{"error": "listen tcp <IP_ADDRESS>:32803: bind: address already in use"}
FAIL	github.com/openfga/openfga/tests/check	23.393s
ok  	github.com/openfga/openfga/tests/listobjects	46.914s	coverage: 52.3% of statements in ./...
ok  	github.com/openfga/openfga/tests/writemodel	1.445s	coverage: [15](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:16).1% of statements in ./...
FAIL
make: *** [Makefile:[71](https://github.com/openfga/openfga/actions/runs/8315961409/job/22754902642?pr=1458#step:5:72): test] Error 1
Error: Process completed with exit code 2.

I believe the root cause of this error is that on main we are doing this when spinning up a server for testing:

ask for a random TCP port "x"
free "x"
spin up a test container (which can take time)
start the server on port "x"

which can occasionally produce this:

test A ask for a random TCP port "x"
test A frees "x"
test A spins up a test container (which can take time)
test B, in parallel, asks for a random TCP port and also gets "x"
test B spins up the test container quickly and starts the server on port "x"
test A tries to start the server on port "x" and gets bind: address already in use

I'm not sure this will fix the issue, because net.Listen binds the port early on in the process. I think the issue ends up relating more to the number of available ports relative to how many tests get run in parallel all at once. Only ports 49152 through 65535 are available for the server processes and containers, and with all of our tests running concurrently it's low-probability but possible we consume all of those ports (we also consume at 2-3x because we run HTTP, gRPC, and the container). I think this is why we see this occasionally more so that regularly.
My recommendation would be to take a slightly alternative approach and attempt to connect and if we fail do a more appropriate retry/backoff. Each retry we can attempt to grab a new port to do our best to avoid collisions.


ImportError: cannot import name 'Hypothesis'

I'm getting an error with both Python 2.7.5 and Python 3.6.9:

ImportError: cannot import name 'Hypothesis'

I didn't see any information in the README about installing requirements (maybe I missed something?) but here's what I tried:
Install hypothesis:
~$ pip install hypothesis
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: hypothesis in ./.local/lib/python3.6/site-packages (5.6.0)
Requirement already satisfied: sortedcontainers<3.0.0,>=2.1.0 in ./.local/lib/python3.6/site-packages (from hypothesis) (2.1.0)
Requirement already satisfied: attrs>=19.2.0 in ./.local/lib/python3.6/site-packages (from hypothesis) (19.3.0)

Run the program:
~$ python3 h_notify.py
Traceback (most recent call last):
  File "h_notify.py", line 2, in <module>
    from hypothesis import Hypothesis, HypothesisAnnotation
ImportError: cannot import name 'Hypothesis'

For anyone else getting this issue, I was able to solve this by having the hypothesis.py file from https://github.com/judell/Hypothesis/ in the same directory as h_notify.py


purge: reset-failed ceph-crash

This ensures we always reset-failed the ceph-crash service.
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2055992
Signed-off-by: Guillaume Abrioux<EMAIL_ADDRESS>

jenkins test centos-container-purge

jenkins test centos-non_container-purge


Migration to non-legacy bots

The rtm integration is now legacy. See #251. What do we need to do to un-legacy a slack-ruby-bot?

I've prepared this google document to illustrate the trouble I came across with when trying to get a New Slack App to work with my Stackbot project
The document contains the sequence of steps I took to attempt to communicate with the new Slack API using my project. My Stackbot works fine with a Classic Slack App. However, it returns an error message when trying to communicate with a New Slack App.
There is some documentation for migrating classic apps apparently. However, it's beyond my skill set, and I probably won't have the time right now to go through the learning curve. I hope the information I've posted here at least helps as a starting point.
Cheers!

Thanks, this step-by-step guide explains clearly the issue in https://github.com/slack-ruby/slack-ruby-bot/issues/241. The newer bots require that you install them via oauth, which is what https://github.com/slack-ruby/slack-ruby-bot-server is about.

@voscarmv You can turn your bot project into one of those bots with a "add to slack" button fairly easily, then you don't have to do any of the token work by hand.

@dblock I'll check it out, thanks!

Based on what I can tell from slack-ruby-server, the new OAuth token can be used as a drop-in replacement for the classic Bot User token, and it's valid till manually revoked (no refresh)? So the quick approach might be to migrate via Slack's UI and do the OAuth process manually to obtain the token, and then use that as SLACK_API_TOKEN 🤣
If we want to support the OAuth flow in this repo, then that means the user must:

setup an API to handle the authorization grant
have a persistence option to save the token

On our end, maybe:

allow the App to run without tokens configured, and have users update the token in the authorization grant API? (I guess that could be problematic without other changes throughout the codebase)

Is this what you were thinking of? Or was it something more along the lines of "how do I migrate from this to slack-ruby-server"?

@dblock Is this what you were thinking of? Or was it something more along the lines of "how do I migrate from this to slack-ruby-server"?

I think the latter, and/or some clarification in README to what people are supposed to do. One option is use slack-ruby-bot-server, another is roll out your own oauth (for which we don't have an example).


Support requests for channel handles that contain periods

youtube handles can contain periods as per https://support.google.com/youtube/answer/11585688

thanks!


 I think one of your main issues is the height variable as I have no clue what it's doing. Doing BoxHeight * Your current armor is completely arbitrary and then dividing it by 100 is just why.  Replace it instead with something like this:
int ArmorSize = (Box.bottom - Box.top) * (-(Armor / MaxArmor) + 1);
DrawRect(Box.left - 4, Box.top + ArmorSize, Box.left - 3, Box.bottom, ArmorColor, 1.f, true);

Hope this helps!


Colours

Use this issue to discus Colours in the ONS Design System

After speaking with @will-madebymoon we noticed that the secondary button background colour should be #eee.

Focus colour is out of date. And highlight should use the same shade of yellow as the new focus colour.

We need a white on amber combo - so need to change amber to be AA accessible

$color-grey-4 missing from colours documentation

$color-grey-4 is too close to $color-grey-3 in level of lightness.

Suggestion
Darken $color-grey-3 to: #acacac
Currently color-grey-3 is used for:

collapsible and text-indent content border-left (change to use $color-grey-4 instead)
download resources dividing borders (change to use $color-grey-4 instead)
download image border (change to use $color-grey-4 instead)
sortable table th arrows (keep new color-grey-3)
patternlib table th and td boder-bottom (keep new color-grey-3)

We can then use the darker $color-grey-3 for footer__hr (it currently uses $color-grey-2 which is too dark see: #1026)

Wrong colour for btn-secondary doucmented
Should be #d0d0d0 ($color-button-secondary: $color-grey-4), not #f0f0f0 ($color-grey-5)
Needs updating in the accessiblity colour combination too

It would be good to meet and discuss how these will align with the central colour palette as the work Leah and @JNATION85 did on the harmonised palette should be incorporated.

The following documented colour combination doesn't pass WCAG AA, as stated.
I'm not sure it's used anywhere in the DS any more, so could probably be removed or updated with the combination: FG #4263C2 on BG #F0F0F0, as used in the featured article component


How much GPU RAM is necessary to run the OPT-175B? and question about inferences/second

A little confused on what is necessary here. In the documentation y'all mention

Where can I run this?
Right now only on Azure, as it requires the 80GB A100s. To enable it on other locations, we need to either try CPU offloading, or we need to use MP 16. FSDP should not be used because some workers will only be used for parameter hosting, and will not actually perform computations.
Does this mean that 80*8 = 320 GB of RAM would suffice for running the model? If that is the case, then it seems like there would be more options for hosting such as AWS g4dn.metal (384 GB RAM w/ 8 GPUs). Is this assumption correct?

Also quick question about how many inferences OPT-175B can make per second, y'all say

How fast is generation?
Slow. As of 2022-04-7, QPS is about 40 with 3 workers.
Does QPS stand for Queries Per Second? Meaning that we are looking at about 25 ms per inference. The word Slow makes me think that I may also be misunderstanding something here.
BTW Thanks so much for building this repo I love the work! Also thank you for the continued support!

The model is 350gb of weights. It won't naively fit on AWS which only gas 8x40gb nodes. It CAN work (should work already even) with 2 AWS nodes and careful setup. It's just very inefficient, as one node gets only used as spare RAM and not for computation. This can also be alleviated with some nontrivial logistical bookkeeping.
The model can fit on much smaller nodes via use if CPU or disk offloading. This will substantially increase latency, but generations will work. Think 1.5s/token generated vs 70ms/token which we're at now with the expensive hardware -- the generation becomes dominated by transferring weights back and forth.
That quoted Queries Per Second is a bit older. By the identical test I can get closer to 3x that these days.
However, QPS is a measure of throughput, not latency. We achieve high QPS by processing many generations in parallel, not sequentially. The average still can look good though.
Its also worth noting that 40QPS would immediately collapse under anything remotely resembling moderate load. 😀


Unable to connect to internet without desktop application open

Describe the bug
After the most recent update, I am unable to use the internet on my laptop without the graph proxy desktop application open
To Reproduce
Steps to reproduce the behavior:

Close Graph Proxy desktop application
Attempt to visit any website

Expected behavior
I should be able to visit the website, instead I see what's in the screenshot down below
Screenshots

Desktop (please complete the following information):

OS: macOS 12.4
MacBook Pro (16-inch, 2021) w/ Apple M1 Pro Chip

Additional context
Please advise on how to do a complete uninstall until the bug can be fixed

I have figured out that manually disabling the proxies in the network tab allows me to connect to the internet without the desktop app open

No problem! Thank you for acting on it so quickly!

The update has fixed the issue! Once again, thank you so much for your fast response time


WIP: Add new actions API to the plugin

OpenVR introduced a new actions based API.
This means that instead of reacting to button presses or joystick input directly on your controller you define the actions you want to support and map that action to the button.
So you can have an action "Fire" and then bind that to your right hand controllers trigger.
This allows users to change the mapping. While an example of "Fire" being one that is unlikely to change other actions such as teleport may especially be subject to changing with controllers like the MR controllers having both a touchpad and joystick directional control.
As such you can specify default bindings for different controllers for users to chose between.
There are a lot of issues with this approach that we need to solve in our plugin however and with Godots own action system already allowing us to build this logic into the game engine and exposing the choices in game instead of in Steam setup I'm not convinced yet this will actually be an improvement. However we have no choice because some of the new features are only accessible to the action system.
I hope to be proven wrong because once you start using the action system the old poses and state logic gets disabled.
The bindings are stored in a json configuration file that basically fixes what you're support. Have a game that can have any number of tracking pucks or where you want to use more than a left hand and right hand controller and suddenly you're faced with a configuration that no longer matches.
The other when functionality on a controller changes depending on game conditions while we're now fixed our actions. So Fire is bound to my right hand trigger but I'm holding a gun in my left hand and a shield in my right.... ?
Anyway enough ranting about the problem I think we'll face and will need to solve as I implement this. For now some practical things.
The configuration files are stored in the addons folder, we'll supply default config files. For now they are based on the hello world example but we'll soon rejig them for our needs.
We will add standard mappings to these files for the standard buttons we support to get parity with our current implementation and not break anything. When a controller becomes active and we detect if it is a left hand or right hand controller, we will look for the button mappings for those controllers. This does mean a 3rd controller won't have any automatic mappings.
If the user removes these mappings because they want to do their own thing or if the user wants additional actions they can add those to their copy of the configuration files (for this reason I am thinking about moving them into the project but I fear people may forget to include them) and edit them to their harts content.
To register their custom actions we'll add register functions to the OpenVRConfig object. These need to be called after initialization and map an action to a Godot callback similar to how signals work.

Did some major refactoring of the process function.
The controller handling is now completely internalized into openvr_data, made a new structure to track controller data.
Next up is binding default actions for those controllers so we get button feedback again.

Got a bunch further with loading the handles and stuff but currently it seems to hang after initialisation with a couple of transforms being messed up. I'm guessing its because I'm still using the old style of pose updates while I'm now loading the new handles.
Going to continue on this tomorrow.

OK, this is starting to work. All the basic buttons and haptics are working on the left and right controllers.
Because the action system is declarative no buttons will work on any additional controllers.
I am planning on doing something more with that, we'll see.
Last thing I'll be working on before this gets merged is custom actions.
So you will be able to add your own actions to the manifest file and be alerted of those.

I've added actions for analog feedback of the triggers, added a proper default bindings file for the oculus touch (I will be doing index later today) and improved the demo a little bit so it shows feedback of one of the controllers (might change the project to show them for both).

I have to admit, I'm impressed with the interface Valve came up with here. If you make a mistake in your configuration files it does fail without really letting your know whats up, but once it's up and running it rocks. I managed to configure our default actions for all supported controllers.
Obviously the Vive wands and Windows controllers don't have A and B buttons so they won't action anything.

I also restructured a few things in the demo project so we have more scripts to get people up and running quickly.
Finally rendering is now done to a dedicated viewport while I'm outputting the preview with a texture rect to screen. This texture rect applies a linear to sRGB conversion so the colors are correct both in the headset and on screen.

Ok, I've added two new GDNative classes.
OpenVRPose is a spatial node that you can bind to any pose you've defined in your actions.json
So say you add:
    {
      "name": "/actions/godot/in/left_hand_grip",
      "type": "pose"
    },

And you bind that to the left hand grip pose slot than you can use /actions/godot/in/left_hand_grip as the action property in the inspector:

When you do this the position of the spatial node will be automatically updated. Just like the other ARVR nodes that are being positioned this node must be a child of ARVROrigin!
The other new class is OpenVRAction which has two bind slots. The first is a pressed action, the second an analog action. So you can add the following to the actions.json:
    {
      "name": "/actions/godot/in/custom_boolean",
      "type": "boolean"
    },
    {
      "name": "/actions/godot/in/custom_analog",
      "type": "vector2"
    }

And then bind these to buttons/joysticks on your controller.

You can place the OpenVRAction node anywhere you like in the scene. The button presses will emit signals on this node but the joystick position needs to be read with get_analog which returns a Vector2 (you can bind this to say your trigger and use "type": "vector1" in actions.json and only the x of the vector will be populated).
I'll be added two more classes soon:
OpenVRHaptic which gives you complete control over a haptic output
OpenVRSkeleton which will return a hand skeleton based on the skeletal logic in OpenVR.

@beniwtv this latest commit should fix your problems though I am not 100% sure if the hmd_transform one works. That one is weird.

I've added support for a new haptics class. Just add a spatial node somewhere in your scene and add the OpenVRHaptic.gdns script to it. Now you can set the output action which should be defined like so:
    {
      "name": "/actions/godot/out/left_haptic",
      "type": "vibration"
    },

Set the duration, frequency and amplitude, and call trigger_pulse on the object.
I could have made this an Object and just purely do it in script but I like the visual interaction.
I've also added some logic to the demo where the controllers now have a collision shape that follow the controllers around BUT they don't go through solid objects! When a collision is detected it moves no further and I use the new haptic function to trigger a pulse. You can see it in action here:
https://youtu.be/oRc1pTUI_CQ
https://youtu.be/PIdCYWW-R_0
The blue sphere is purely there to visualize what is happening.

Tomorrow I start working on documentation, I'm looking to merge this pretty much as we have it right now unless I get feedback people don't like it.
I'm doing the hand skeleton work in a separate PR

If you make a mistake in your configuration files it does fail without really letting your know whats up

If it's a json parse error, it should show up in steam/logs/vrserver.txt, or wherever that log file is on windows.

Obviously the Vive wands and Windows controllers don't have A and B buttons so they won't action anything.

That's where the problem with the "everything has to look like an xbox 360 controller" style input comes in.
The intention for the action system in OpenVR and OpenXR was really to abandon hardcoding a default controller layout and replace it with directly exposing actions to game developers.

The action and binding json manifests for SteamVR could then be dynamically generated when building the project.
It doesn't look like a huge advantage at first glance, but a lot of people are huge fans of this approach.
For example if you try the "Show bindings on controllers in VR" option from SteamVR, you are supposed to see what each of the buttons does via action name/description as you touch them:

Because the action system is declarative no buttons will work on any additional controllers.

This responsibility is pushed into SteamVR or OpenXR runtimes. In SteamVR users can see all the actions a game uses, and can bind whatever inputs they have to the actions. Those bindings can then be shared with others in the Steam workshop.

Everything including overlay works for me with the latest code

Hey @ChristophHaag ,

The intention for the action system in OpenVR and OpenXR was really to abandon hardcoding a default controller layout and replace it with directly exposing actions to game developers.

Yup, the problem I'm dealing with is building an engine that supports OpenVR, OpenXR and many others, many of which don't have an action system. So making it possible to deploy to multiple platforms with suddenly needing vastly different approaches is a pain.
The action system is growing on me though, especially considering people only have two hands it really makes sense.
Right now the default actions that are in the action.json file basically allow you to mimic the old approach having actions for each old button. But it's meant as a stepping stone or for people who indeed want to deploy to a Quest and the Oculus Store and to SteamVR and can't use an action system that only works on one system.
If you DO want to use the action system as intended, trash the action system and start using the new functionality. For now as OpenVR only objects but once I sink my teeth into OpenXR (Still have to start playing with your plugin) I'll start looking at how we can feed some of this logic back into the core for Godot 4 (3.2 is feature locked now so).
The only thing I'm not happy about currently is the way OpenVRAction works. I feel this needs to be integrated into a ARVRController subclass. But OpenVRPose and OpenVRHaptic I think are the right approach.

@ChristophHaag btw, one thing I can't wrap my head around is how a "fire gun" action would work. You bind it to your left hand trigger and you pick your gun up with your right hand...

So this is where sub-action paths come in. I'd have to double-check my notes to explain exactly how, but this is the exact reason for sub-action paths.

@ChristophHaag btw, one thing I can't wrap my head around is how a "fire gun" action would work. You bind it to your left hand trigger and you pick your gun up with your right hand...

Hello I'm Jakob and work on Moando a OpenXR runtime (and is a member of the Khronos OpenXR WG, but only speak for myself). So I can not speak for it is done in OpenVR as I have no experience with it. But in OpenXR you would use sub action groups, where you can ask for the state of action with either sub-action /user/hand/left, /user/hand/right or none.

thank you Jakob - It's been a while since I reviewed the subaction stuff so I didn't want to say too much more to avoid getting it wrong :D  (I'm also a Monado dev, and the OpenXR spec editor but as with Jakob, I'm not speaking for the group as a whole most of the time)

In xrdesktop at first we had duplicate actions for each hand, but then SteamVR did introduce a way to assign one action to both hands, and poll action data while restricting to certain device paths
First in the actions.json you may need something like
   "action_sets": [
      {
         "name": "/actions/godot",
         "usage": "leftright"
      }
    ]

with "usage": "leftright", and the same action bound to both left and right hands.
And then the actions would be polled once per hand or device. If you want to have it completely dynamic, you can query those first (somewhat pseudocode):
  VRInputValueHandle_t *origin_handles = malloc(sizeof(VRInputValueHandle_t) * k_unMaxActionOriginCount);
  EVRInputError err = VRInput()->GetActionOrigins(actionset_handle, action_handle, origin_handles, k_unMaxActionOriginCount);

  int origin_count = -1;
  while (origin_handles[++origin_count] != k_ulInvalidInputValueHandle);

  for (int i = 0; i < origin_count; i++) {
    InputOriginInfo_t origin_info;
    err = VRInput()->GetOriginTrackedDeviceInfo(origin_handles[i], &origin_info, sizeof (origin_info));

    devicepath_list.append(origin_info.devicePath);
  }

And then when polling
  for (VRActionHandle_t devicepath: devicepath_list) {
    InputAnalogActionData_t data;
    VRInput()->GetAnalogActionData(action_handle, &data, sizeof(data), devicepath);

    // also possible:
    InputOriginInfo_t origin_info;
    VRInput()->GetOriginTrackedDeviceInfo(data.activeOrigin, &origin_info, sizeof (origin_info));
  }

Thanks for the feedback guys. I'm going to write up some documentation of what I've build so far tonight but I think I'm going to change the objects to allow filtering on hand and probably look into doing OpenVRActions differently and just combine that logic into an ARVRController subclass.

Ok, simplified a bunch of things and made it possible to bind OpenVRAction, OpenVRPose and OpenVRHaptic to a either hand or have them work on any.
Also removed the left/right hand duplication of actions in the default actions.json file. You can bind the same default action to both controllers and Godot will be able to ensure actions react to the right controller.
It does seem that OpenVR does not have any hints in the actions.json file to indicate to the user if the action has to be bound to a specific controller or can be used on any controller.

I've made a start on documenting the new system:
https://github.com/GodotVR/godot-openvr-asset/wiki/OpenVR-actions

I'm happy with how this turned out so far, documentation is pretty much up to date now as well:
https://github.com/GodotVR/godot-openvr-asset/wiki/OpenVR-actions
I'm planning to merge this sometime this week so I can start working on finger tracking.
Any feedback is very welcome.

I honestly have no idea on the complications that this would cause, but do you see any possibility to include the logic of the action-files in the native input map of godot?


Question: What is the difference between git-with-openssh and git plus openssh

With the latest git (2.8.2.windows.1) and openssh (5.4p1-1) packages I become an error when cloning a git repo:
git clone<EMAIL_ADDRESS>Cloning into '...............
      0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x71690000, RegionSize 0x240000, State 0x10000
C:\Users\User\AppData\Local\scoop\apps\openssh\5.4p1-1\bin\ssh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

So, I uninstalled both and tried git-with-openssh (2.8.2.windows.1) and than I get:
git clone<EMAIL_ADDRESS>Cloning into '...........
error: cannot spawn C:\Users\User\AppData\Local\scoop\apps\openssh\5.4p1-1\bin\ssh.exe: No such file or directory
fatal: unable to fork

Hmm, I didn't expect that. Any idea?
I am using Win 10.
I also tried to find a solution for the first problem but the "solution" was to rebase a DLL. Here I stopped and started to try git-with-openssh.

Today I tried to install openssh on Windows 10 and I had the same issue. But OpenSSH is working fine installing through git-with-openssh. The current version (2.9.0) is more recent than the version you tried.

I'm having the same problem. git-with-openssh works like charm

Git 2.16 has issues with openssh 5.4. If you need to use them together, install git-with-openssh, and not each of them individually.


Added new available regions

new storage regions for routing preference

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

sign-off

#sign-off


chore(travis): make one-component-by-one test optional

Overview
This PR makes the test run faster, by making one-component-by-one test optional.
Added

Travis test matrix for testing multiple categories of tests in parallel
Put one-component-by-one test in the “excluded” bucket

Testing / Reviewing
Should make sure our Travis test is not broken.

:+1:


test problem

While I running:
bin/grappa_srun -n 2 -p 1 -- applications/demos/hello_world.exe
I get the error information:
bin/grappa_srun:80:in exec': No such file or directory - srun (Errno::ENOENT)         from bin/grappa_srun:80:in '
but when I run: bin/grappa_run -n 2 -p 1 -- applications/demos/hello_world.exe
I get the correct result
My ruby version is 2.2.0
Which ruby :~/lib/ruby/bin/ruby
$PATH: ~/lib/ruby/bin
How to fix the problem? Thank you.

If you don't have Slurm installed on your cluster, you should run Grappa jobs like any other MPI job, instead of using grappa_srun. The details depend on which version of MPI you use and whether your cluster has a different scheduler (PBS, GridEngine, etc.). Running hello_world.exe will probably involve a command like mpiexec -np 2 -hosts <comma-separated list of hosts> ./applications/demos/hello_world.exe, but you'll have to check your MPI documentation to be sure.

Thank you for replay.

Hi, I am new to distributed computing. We want to test the performance of Grappa. Notice that the tests can be run by mpirun and the scripts provided(grappa_srun, i.e. on top of Slurm). Is there any difference between these running modes, specifically for performance ?

Performance should be identical.


Could "Switch active theme" have a "Default" option

Thank you for this amazing plugin.
I love "Switch active theme" and have it on my ribbon.
As far as I can see, to turn off all themes I need to go to the main Appearance settings, select Themes > Manage and select Default/Obsidian...
Might it be possible for BRAT to streamline that? Adding it an an extra option to "Switch active theme" sounds to me like a good place, but I don't know the technicalities involved...

1 for this :) Would it be possible to add an option to switch to the default theme?

For plugin development, I like to switch every now and then to Default, to ensure it works well on the vanilla theme as well.

Just added this with last update.
https://github.com/TfTHacker/obsidian42-brat/releases/tag/0.6.1

Awesome - huge thanks, this is a real timesaver :-)


AC temperature units scale factor

Describe the bug
An AC unit shows up in HomeKit as having a minimum temperature of 160° and maximum temperature of 880°.
Those are the values reported by the Tuya API. The actual unit goes from 16° to 31°.
Needless to say, temperature can't be adjusted through Homekit. The temperature sensor displays the correct temperature, however. I tried adding a scale factor of 48 as a device config, but saw no changes. And the temperature factor only changes the displayed temperature, not the actual thermostat.
Homebridge Config
{
    "name": "TuyaWebPlatform",
    "options": {
        "username": REDACTED,
        "password": REDACTED,
        "countryCode": REDACTED,
        "platform": "tuya",
        "pollingInterval": 600
    },
    "defaults": [
        {
            "id": "08502800a4e57c9f8832",
            "device_type": "climate",
            "current_temperature_factor":null
        }
    ],
    "scenes": false,
    "platform": "TuyaWebPlatform"
}

Device Config
{"data": {
        "current_temperature": 24,
        "max_temper": 880,
        "min_temper": 160,
        "mode": "auto",
        "online": True,
        "state": "true",
        "support_mode": [
          "cold",
          "hot",
          "wind",
          "auto"],
        "temp_unit": "CELSIUS",
        "temperature": 160},
        "dev_type": "climate",
        "ha_type": "climate",
        "icon": "https://images.tuyaus.com/smart/product_icon2/kt_1.png",
        "id": "08502800a4e57c9f8832",
        "name": "Living AC"},

Did you find a solution to this? in the same boat here.


In Flutter integration_test make args parameter work

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
1- add integration test
2- add screenshot driver logic
Future<void> main() async {
    await integrationDriver(
      onScreenshot: (
        String screenshotName,
        List<int> screenshotBytes, [
        Map<String, Object?>? args,
      ]) async {}
);
}

Actual results
args parameter is always null
Logs
No response
Flutter Doctor output

Doctor output

[✓] Flutter (Channel stable, 3.16.1, on macOS 14.1 23B74 darwin-x64, locale
    en-EG)
    • Flutter version 3.16.1 on channel stable at /Users/apple/.pvotal/flutter
    • Upstream repository<EMAIL_ADDRESS>    • Framework revision 7f20e5d18c (3 days ago), 2023-11-27 09:47:30 -0800
    • Engine revision 22b600f240
    • Dart version 3.2.1
    • DevTools version 2.28.3

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/apple/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.14.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Community Edition (version 2023.2.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 76.0.4
    • Dart plugin version 232.10072.19

[✓] VS Code (version 1.84.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (3 available)
    • Android SDK built for x86 64 (mobile) • emulator-5554 • android-x64    • Android 8.0.0 (API 26) (emulator)
    • macOS (desktop)                       • macos         • darwin-x64     • macOS 14.1 23B74 darwin-x64
    • Chrome (web)                          • chrome        • web-javascript • Google Chrome 119.0.6045.199

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Cause: args is not implemented, I wonder if you could make it work
  Future<Map<String, dynamic>> takeScreenshot(String screenshot, [Map<String, Object?>? args]) async {
    assert(args == null, '[args] handling has not been implemented for this platform');

https://github.com/flutter/flutter/blob/918e336014e1ab05501520d585ab15d0dd9919d1/packages/integration_test/lib/src/_callback_io.dart#L88C8-L88C8

Thanks for the report. Seeing the same behavior as reported.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.16.0, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.16.0 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision db7ef5bf9f (12 days ago), 2023-11-15 11:25:44 -0800
    • Engine revision 74d16627b9
    • Dart version 3.2.0
    • DevTools version 2.28.2
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.17.0-20.0.pre.10, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.17.0-20.0.pre.10 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision be268ebde2 (2 hours ago), 2023-11-30 22:07:26 -0500
    • Engine revision c26e6ced11
    • Dart version 3.3.0 (build 3.3.0-174.2.beta)
    • DevTools version 2.30.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.


shlex broken parsing

it differs a lot with how real shell quoting works. in particular, it tries to parse quotes from quotation marks inside heredocs.

probably worth replacing shlex with bashlex or libdash
i cannot find anything similar for specifically busybox ash, but these should be close enough?


global.env is undefined (Node and Typescript)

Hi,
I am using node and Typescript and when sharing data accross thread using global.env, the property "env" is undefined.
Am I missing something?
$> node --version
v9.3.0
$>
paralleljs": "^0.2.1"

let iterArray : number [] = Array.from(Array(40).keys());
let p = new Parallel(iterArray, {
    env : {
        test: "test"
    }
});

let computeIter = function (iter) {
    //@ts-ignore
    console.log(global.env.test);
    return iter;
};

p.map(computeIter).then(function () {
    console.log(arguments);
});

TypeError: Cannot read property 'test' of undefined

I was facing the same issue. After I dived in the source code and read the post by @adambom , I believe that this issue should have been resolved.
So I checked @adambom 's code and I found out that his code is different from my node_modules/paralleljs.
I tried to npm update, uninstall & reinstall, but my code is still different from the latest code in github.
I gave up. Now I just downloaded the code from github and copied it into node_modules/paralleljs.
This issues is resolved. Now console.log(global.env) has shown some data.
Perhaps the issue is in npm not be able to pull the latest code from github.

HAve a look at https://stackoverflow.com/questions/17509669/how-to-install-an-npm-package-from-github-directly regarding how to install directly from github


Add --debug-logs and creation metadata

--debug-logs flag will add an extra environment variable read in start.sh which will enable debug logs on the server/worker
Also added CREATOR and CREATION_DATE to environment to make it easier to determine when an instance was created and by whom.

Good idea.  Renamed it to turbinia_created_by.


Feat: Contact us page can be improved

Describe the feature
The existing get in touch form doesnt look so good, it can be improved
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

I can improve it, looking forward to contribute here.

Please make it cool @riffhi

Shall i give my best to make it more creative , please do assign this task to me


runtime: minpc or maxpc invalid on windows/arm

I installed 386 go 1.14.4 onto Windows 10 arm64 to C:\go. Then I cross compiled go 1.14.4 for Windows using CGO_ENABLED=0 GOOS=windows GOARCH=arm GOARM=7 ./make.bash, and then copied bin/ and pkg/ over to C:\go\bin and C:\go\pkg. Then I ran .\all.bat inside of the latest git master (e64675a79 as of writing) and kaboom:

cc @aclements @alexbrainman @rozmansi

Running a second time gives me:

I wonder if this is another variant of #38440 hitting more often by virtue of being inside of an emulator.

It would be nice if there was a native ARM64 build of golang for Windows. Linux has one, why not Windows?

What's the relevance of your request (which is handled by this issue) to this bug report? I agree with you, but I don't see how it helps here.

I'd like to point out that we don't seem to have any Windows/ARM builders at the moment, and the person nominally listed as the Windows/ARM port seems to be MIA.  It is hard to see how to work on this bug without a functioning builder.

Please follow #38607 for planning around Windows ARM builders, and add any help you can there.

Closing in favor of https://github.com/golang/go/issues/42786


[BleepingComputerBridge] New bridge

This bridge will support full-text feed for BleepingComputer page.

gj @csisoap !


Rails 7.1 - error when multi_tenant defined in abstract class

After updating to Rails 7.1, I'm getting this error when running my tests:
TypeError:
       no implicit conversion of nil into String

I've tracked it down to this definition of multi_tenant in the parent abstract class:

I can confirm that MultiTenant.current_tenant is set. Moving the method directly to the subclass causes it to start working again. Removing the multi_tenant method will give me the expected invalid model (because the organization is nil).
I'm not seeing anything about this in the changelog... am I missing something?

Did you ever find a solution to this, other than moving multi_tenant to the subclasses?

@joshforbes
I was also struggling with almost the same issue!
Now I updated to Rails 7.1 by replacing the abstract class with a mix-in. The code is as follows:
module MultiTenantOrganization
  extend ActiveSupport::Concern

  included do
    multi_tenant :organization
    belongs_to :organization
  end
end

class Account < ApplicationRecord # Previously, an abstract class was inherited here
  include MultiTenantOrganization

  # account implementation...
end


Feat: Undo command

Undo up to 5 previous commands.  (Capped at 5 tentatively. Need to monitor the effect on performance and adjust accordingly)

Testing will be added in future, as noted in #94

Closes #90


[Suggestion] Add possibility to "silent" command

Hello,
Is it possible to add a suffix to all commands so that they don't display messages to the player if they're executed by the console ?
Example:
/huskhomes:spawn PLAYER -s → The value -s after a command means that the player does not receive the result in the chat.

I think probably not. That's add a bunch of logical overheads for a use case probably better served by the API

I think probably not. That's add a bunch of logical overheads for a use case probably better served by the API

Why I ask this ?
Because I'm from CMI, and this was one of the useful features there and I could teleport players by hiding the result of the command, and displaying another message instead (especially for warps).

I've decided to decline this feature request just due to it being too niche to support - thank you for the suggestion though.


malformed multipart body

I got a error "Malformed multipart body", when I want upload a file to google drive. I use Unity 5.6.
How can I do to fixed this error??

Make sure you're using the latest available version (it requires Unity 2019.1 or later).


[BUG]  model.save method does not save trained W&D TF model with two optimizers

Describe the bug
Outbrain W&D TF model cannot be saved after training is completed, and results in error ( see below). We need to save the model properly to be able to serve it at inference step.
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-19-5fe45a9d7548> in <module>
----> 1 model.save('./outbrain_tf/1/model.savedmodel')
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py in save(self, filepath, overwrite, include_optimizer, save_format, signatures, options, save_traces)
   1999     """
   2000     # pylint: enable=line-too-long
-> 2001     save.save_model(self, filepath, overwrite, include_optimizer, save_format,
   2002                     signatures, options, save_traces)
   2003
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/saving/save.py in save_model(model, filepath, overwrite, include_optimizer, save_format, signatures, options, save_traces)
    154         model, filepath, overwrite, include_optimizer)
    155   else:
--> 156     saved_model_save.save(model, filepath, overwrite, include_optimizer,
    157                           signatures, options, save_traces)
    158
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/saving/saved_model/save.py in save(model, filepath, overwrite, include_optimizer, signatures, options, save_traces)
     87     with distribution_strategy_context._get_default_replica_context():  # pylint: disable=protected-access
     88       with utils.keras_option_scope(save_traces):
---> 89         save_lib.save(model, filepath, signatures, options)
     90
     91   if not include_optimizer:
/opt/conda/lib/python3.8/site-packages/tensorflow/python/saved_model/save.py in save(obj, export_dir, signatures, options)
   1030   meta_graph_def = saved_model.meta_graphs.add()
   1031
-> 1032   _, exported_graph, object_saver, asset_info = _build_meta_graph(
   1033       obj, signatures, options, meta_graph_def)
   1034   saved_model.saved_model_schema_version = constants.SAVED_MODEL_SCHEMA_VERSION
/opt/conda/lib/python3.8/site-packages/tensorflow/python/saved_model/save.py in _build_meta_graph(obj, signatures, options, meta_graph_def)
   1196
   1197   with save_context.save_context(options):
-> 1198     return _build_meta_graph_impl(obj, signatures, options, meta_graph_def)
/opt/conda/lib/python3.8/site-packages/tensorflow/python/saved_model/save.py in _build_meta_graph_impl(obj, signatures, options, meta_graph_def)
   1160         function_aliases[fdef.name] = alias
   1161
-> 1162   object_graph_proto = _serialize_object_graph(saveable_view,
   1163                                                asset_info.asset_index)
   1164   meta_graph_def.object_graph_def.CopyFrom(object_graph_proto)
/opt/conda/lib/python3.8/site-packages/tensorflow/python/saved_model/save.py in _serialize_object_graph(saveable_view, asset_file_def_index)
    752
    753   for obj, obj_proto in zip(saveable_view.nodes, proto.nodes):
--> 754     _write_object_proto(obj, obj_proto, asset_file_def_index,
    755                         saveable_view.function_name_map)
    756   return proto
/opt/conda/lib/python3.8/site-packages/tensorflow/python/saved_model/save.py in _write_object_proto(obj, proto, asset_file_def_index, function_name_map)
    798           version=versions_pb2.VersionDef(
    799               producer=1, min_consumer=1, bad_consumers=[]),
--> 800           metadata=obj._tracking_metadata)
    801       # pylint:enable=protected-access
    802     proto.user_object.CopyFrom(registered_type_proto)
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _tracking_metadata(self)
   3077   @property
   3078   def _tracking_metadata(self):
-> 3079     return self._trackable_saved_model_saver.tracking_metadata
   3080
   3081   def _list_extra_dependencies_for_serialization(self, serialization_cache):
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/saving/saved_model/base_serialization.py in tracking_metadata(self)
     53     # TODO(kathywu): check that serialized JSON can be loaded (e.g., if an
     54     # object is in the python property)
---> 55     return json_utils.Encoder().encode(self.python_properties)
     56
     57   def list_extra_dependencies_for_serialization(self, serialization_cache):
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/saving/saved_model/layer_serialization.py in python_properties(self)
     39   def python_properties(self):
     40     # TODO(kathywu): Add python property validator
---> 41     return self._python_properties_internal()
     42
     43   def _python_properties_internal(self):
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/saving/saved_model/model_serialization.py in _python_properties_internal(self)
     39
     40     metadata.update(
---> 41         saving_utils.model_metadata(
     42             self.obj, include_optimizer=True, require_config=False))
     43     return metadata
/opt/conda/lib/python3.8/site-packages/tensorflow/python/keras/saving/saving_utils.py in model_metadata(model, include_optimizer, require_config)
    189                 generic_utils.get_registered_name(model.optimizer.__class__),
    190             'config':
--> 191                 model.optimizer.get_config()
    192         }
    193       metadata['training_config']['optimizer_config'] = optimizer_config
AttributeError: 'ListWrapper' object has no attribute 'get_config'

The reason for that we use two optimizers as list, one for deep model, one for wide model as below:
wide_and_deep_model.compile(
    optimizer=[wide_optimizer, deep_optimizer],
    loss='binary_crossentropy',
    metrics=[tf.keras.metrics.BinaryAccuracy(), tf.keras.metrics.AUC()],
    experimental_run_tf_function=False
)

A related bug was already reported: https://github.com/tensorflow/tensorflow/issues/38143. A workaround was proposed.
Potential solutions:

Save model with  include_optimizer=False param.
.wide_and_deep_model.save('/outbrain/outbrain_tf/1/model.savedmodel', include_optimizer=False)

this seems like it works at first, but then we get the same error above when we do
from nvtabular.inference.triton import export_tensorflow_ensemble
export_tensorflow_ensemble(wide_and_deep_model, workflow, "outbrain", "/outbrain/models/", ["clicked"])

Looks like TF doesn't provide an elegant method to save models with multiple optimizers. Maybe we could extend the ListWrapper and provide such method by combining the dict of configs of all optimizers.

Dawid from JOC team has his own solution to save model with two optimizers: https://gitlab-master.nvidia.com/dl/JoC/wide_deep_tf2/-/blob/inference/trainer/model/layers.py#L163-174
Steps/Code to reproduce bug
You can visit this notebook: https://github.com/rnyak/NVTabular/blob/outbrain-inf/examples/inference_triton/inference-Outbrain/03-Training-with-TF.ipynb
Environment details (please complete the following information):

Environment location: [Bare-metal, Docker, Cloud(specify cloud provider)]: Docker
Method of NVTabular install: [conda, Docker, or from source]: merlin-tf-training container.

If method of install is [Docker], provide docker pull & docker run commands used

*Additional comments
Another issue is related to wide_and_deep_model.inputs return empty therefore we get an error from _generate_tensorflow_config because model.inputs is none.
    """given a workflow generates the trton modelconfig proto object describing the inputs
    and outputs to that workflow"""
    config = model_config.ModelConfig(
        name=name, backend="tensorflow", platform="tensorflow_savedmodel"
    )

    for col in model.inputs:
        config.input.append(
            model_config.ModelInput(
                name=col.name, data_type=_convert_dtype(col.dtype), dims=[-1, 1]
            )
        )
       ....

A solution to that could be doing something as here: https://github.com/tensorflow/tensorflow/blob/v2.4.1/tensorflow/python/keras/premade/wide_deep.py#L94-L97

@benfred @oyilmaz-nvidia  for viz.
Linking other GH issue here https://github.com/NVIDIA/NVTabular/issues/669

@benfred @oyilmaz-nvidia
Two issues to handle here:

How to save model with a list of optimizers?

Tested Solution:
wide_and_deep_model.save('/outbrain/tf_models/outbrain_tf/1/model.savedmodel', include_optimizer=False)

that saves the model.

wide_and_deep_model.inputs returns None.

Tried solution:
model = tf.keras.models.load_model("/outbrain/tf_models/outbrain_tf/1/model.savedmodel")
model.inputs = dnn_model.inputs
model.outputs = dnn_model.outputs

That seems working, and we can create the config.pbtxt for outbrain_nvt, however, when we try to load the model on the server we get this error:
E0324 20:01:20.545014 32015 model_repository_manager.cc:963] failed to load 'outbrain_tf' version 1:
Invalid argument: unexpected inference input 'TE_ad_id_clicked', allowed inputs are: inputs/TE_ad_id_clicked, inputs/TE_advertiser_id_clicked, inputs/TE_campaign_id_clicked, inputs/TE_document_id_promo_clicked, inputs/TE_publisher_id_clicked, inputs/TE_source_id_clicked, inputs/ad_id, inputs/advertiser_id, inputs/campaign_id, inputs/document_id, inputs/document_id_document_id_promo_sim_categories, inputs/document_id_document_id_promo_sim_entities, inputs/document_id_document_id_promo_sim_topics, inputs/document_id_promo, inputs/geo_location, inputs/geo_location_country, inputs/geo_location_state, inputs/platform, inputs/publish_time_promo_since_published, inputs/publish_time_since_published, inputs/publisher_id, inputs/publisher_id_promo, inputs/source_id, inputs/source_id_promo

Somehow, it wants us to add inputs before the name of each input variable, and I assume this is because we do model.inputs = dnn_model.inputs.
So the issue remains.

This is fixed by #681


All Features added from reference id-#162253696

Thi is the final build, merging to the develope for coverage and all.

I think All is well!


Add Linux containers support

https://github.com/linuxkit/linuxkit

Note: Windows Server doesn't have WSL2. But it has WSL1. It isn't clear whether Docker daemon can properly run in WSL1.

https://github.com/agowa338/WSL-DistroLauncher-Alpine/blob/master/DistroLauncher/DistroSpecial.h#L29
wsl --import <name> <dir> <tar_or_tar.gz>

https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux

https://github.com/yuk7/wsldl

It isn't yet clear who is listening on \.\pipe\docker_engine_linux and routing traffic into WSL2.

com.docker.backend.exe does this.

It might be possible to open docker.sock in AF_UNIX mode directly from Windows. See net.DialUnix and https://github.com/moby/moby/issues/36442

I'm currently working on https://github.com/slonopotamus/docker-wsl-proxy
It is supposed to become the missing puzzle piece that converts Windows <-> WSL2 paths and router docker requests into WSL2.
When https://github.com/slonopotamus/docker-wsl-proxy is ready, the work will continue in linux-containers branch of current repo.

After several days of messing with docker-wsl-proxy, I start to think that using moby routes is a dead-end for several reasons:

I cannot passthrough client API version
I cannot provide a proper ContainerDecoder. Proxy runs on Windows, so doesn't have access to Linux implementation living in sysinfo_linux.go
Moby routes are not very well adopted for third-party usage: https://github.com/moby/moby/pull/43180
There are issues with systemrouter. Several route implementations simply do not expect that server could fail.
Client.NewClientWithOpts is very restrictive and doesn't allow me to pass AF_UNIX transport. This could be implemented on Moby side (see https://github.com/docker/go-connections/pull/98), but that repo is nearly-dead, so god knows how many years it will take.

New plan: we go one level lower and instead implement a HTTP proxy. Currently, it looks like the only place that requires paths conversions is container creation. We could intercept that API call in the proxy and rewrite JSON.

I suddenly understood that paths is not the only thing we need to do. We also need to support container port bindings to Windows host ports. This possibly can wait though.

HTTP proxy ended up being so much simpler: https://github.com/slonopotamus/docker-wsl-proxy/commit/7c75d2deb751ec6db2210537282a15e374d69910
Missing bits are:

Make it talk to docker-inside-wsl
Do bind path rewriting

First proof-of-concept that works across WSL boundary (docker server is inside, docker client is outside).

That's what was committed to main branch:
https://user-images.githubusercontent.com/92637/153852434-f4518f98-fde2-4902-81f0-655df9c554f7.mp4

Docs: https://github.com/slonopotamus/stevedore#experimental-linux-containers-support


Add a responsive nav menu #479

https://github.com/netlify-templates/one-click-hugo-cms/pull/479

👷 Deploy Preview for incredible-madeleine-1ba44f processing.

Name
Link

🔨 Latest commit
875fb57e0f1d8a5baf952f10e23f205e1b071ae7

🔍 Latest deploy log
https://app.netlify.com/sites/incredible-madeleine-1ba44f/deploys/63e6ec122937ac0008732dcf


Update Java version in README.md

Java 8 has been required since #457.
(Only a small documentation change, so I'm skipping most of the PR template.)
Checklist

[x] I have read the Auth0 general contribution guidelines
[x] I have read the Auth0 Code of Conduct
[x] All existing and new tests complete without errors

Thanks!


Using VMware Fusion Delete is continuous

I am using windows 7 using VMware fusion which is why I wanted to buy Powerkey,
I have just bought it and it works immediately in Mac but when I press the power key once in the virtual machine it deletes continuously as if I have held the delete key down on a normal PC
Anyone had this issue or have any ideas to solve it?
I am running Windows 7 Ultimate on VMware Fusion Professional v7 0 0

There appear to be some known key-repeat issues with VMware, even without the use of PowerKey:
https://communities.vmware.com/thread/450571
http://stackoverflow.com/questions/9313915/why-is-vmware-workstation-adding-keystokes-when-i-type
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=196
Are you having the same key repeat issues with other keys, or is it only the power/delete key?
Does the power/delete key ever work correctly (one keypress) in the VM, or is it always repeated?
Thanks!

Closing this issue... please reopen or send me an email if you continue to experience this issue.