KOGITO-7084: SWF Viewer - UI blinks and state is lost, once reloading diagram continuously

Hey @romartin @inodeman, could you please review this PR?
JIRA: KOGITO-7084
JIRA: KOGITO-7205
Thanks!

Hey @handreyrc , please this needs rebase. Thanks!

Adding @LuboTerifaj as reviewer from the QE, meanwhile @domhanak is off (CC)
@LuboTerifaj do you know who to test this? Please notice:

This is not yet integrated with the vscode or any other plugin, from engineering we just build locally (using typical maven command) from the root [1] (being previsouly built the whole repo for generating artifacts locally..) -> This way you'll get a war in the target directory you can run, and just access localhost:8080/test.html
Not sure if @domhanak uses another way, but I think this is an straight one
We're actally working on the vscode integration, in fact this PR prevents from it, so this is just "temporal"

[1] https://github.com/kiegroup/kie-tools/tree/main/packages/serverless-workflow-diagram-editor/sw-editor/sw-editor-kogito-app
If any issues or Qs, please let us know! Appreciated early review as it blocks work others.
Thanks in advace!

Or maybe @handreyrc or @inodeman can you help on building the vsix for @LuboTerifaj , so he can test this in a "real" enviornment? I think would be nice having QE involved on the whole picture, not just the concrete fixes here. Also please guys sync with @caponetto if you need to merge his work on the vscode integration. If any issues or concerns, do not heasitate to ask! Thanks!

The (build) kie-tools-stunner-editors check has failed. Please check the logs.

Hi guys, great work!
I merged handreyrc/KOGITO-7084 (up to https://github.com/kiegroup/kie-tools/pull/1029/commits/a95ede46c9a9c4ce19bc2bdf0bd397ddc243b287) into our VS Code integration branch and built the vsix file.
The result can be found here.
Hope this helps!

Thanks a lot @caponetto !! great work too, I am just donwloading for testing as well. :+1:

Hello @handreyrc , @romartin , I will get to the review asap. In the meantime, please ensure everything is up to date and ready for testing.Thank you!

hey @LuboTerifaj
Please wait until we provide a new vsix for testing it. We're actually adding some commits and we will re-generate the visx.
Thx!

Hey @romartin, @Josephblt, @LuboTerifaj,
Here goes the new VSIX:
VS Code: plugin
Thanks!

Thanks for sharing @handreyrc !
I am just testing it, for now all identified issues are fixed, great work @handreyrc and @Josephblt .
Anyway I just found, for now, some improvements that maybe are a quick win (easy to implement on this PR):

The error message is meaningless - Eg: If any parsing error, it just shows "org.kie.workbench.common.stunner.core.diagram.DiagramParsingException". Can we obtain the message from the root exception and provide meaningfull info to the end user? In case this is actually not easy to achieve, I would suggest to use some i18n messages for each of the exceptions that may happen (eg: if DiagramParsingException -> just display a message like "Diagram parsing failed", and so on)

In case no error once setting some content, the error icon is still visible and may overlap some icon in the diagram, but not clickable. So what you think about just showing the error icon (in red) ONLY when an error exists?

@Josephblt WDYT about both points above?
Thanks guys!

@LuboTerifaj A part from the 2 improvements I reported on the comment above, please feel tree to give a try to latest vsix from handrey [1] . We are really interested on merging this ASAP, if no blocker issues found, but we really appreacite QE reviews on top of this, so would appreciate an early review here, this PR is really important and starting to be urgent. If any issues, Qs or concerns please don't hesitate to ping me.
Thanks in advance!
[1] https://github.com/kiegroup/kie-tools/pull/1029#issuecomment-1160841103

Hello @romartin, @handreyrc, and @LuboTerifaj. Here is the link to the VSIX with the latest changes. Thanks.
https://drive.google.com/file/d/12GabBCdZi8NL2HhnSy2o2aCOBtA4aPGG/view?usp=sharing

@LuboTerifaj please missing your review here. Several people is waiting for this PR to be merged, please consider giving it some priority. Thx in advance!

Hey @LuboTerifaj
This PR is really blocking the work from others at this point. I have tested the vsix and no blocker issues found. Also let you know that this Stunner SWF editor is not yet going to be the default one, so if any issue appears, we still have time for fixings after merging this.
I know you're busy guys with the RHPAM release testing, so as this work will not affect end users, but will allow developers to continue the work, would you agree on just moving forward this, as it is, and proceed with merge?
Thanks in advance!

Hi @LuboTerifaj,
Regarding your comment:
"If the state is selected and you try to edit its fields, the cursor is placed at the beginning of the name field. As a result, it is almost impossible to edit the state's fields when the state is selected."
I tried the vsix generated and I can see the issue.
If I try the code from the branch caponetto:KOGITO-6903-main, I cannot reproduce the issue.
Let me know if I can help you investigate on this.

Hello @fantonangeli, @LuboTerifaj. Let me generate the .vsix again. I see there are updates in KOGITO-6903-main branch.

Hey @romartin , I was focusing on tasks with higher priorities. I couldn't have provided the review sooner as I described in chat.
Hi @Josephblt , sure, once the file is ready, link it in the comment please. Could you please also comment on the other issues I found?
Note, I won't be available for another review next week. If the PR is blocking other people and you need to merge it, ensure the issues I found are fixed and no regressions are introduced.
Thank you!

Hello @LuboTerifaj, @handreyrc, @romartin. I manage to fix everything you described @LuboTerifaj. The only thing missing is the selection blinking. Still working on that. For now, you can go ahead, check out the code and test everything else.
Here is the link to the .vsix.:
https://drive.google.com/file/d/1l-7uA_h-jTMBYuPBY-YypjI-NGLf7ajs/view?usp=sharing

@Josephblt @romartin Can we make this in a separate PR? No reason to block the whole thing because of it, I guess.. WDYT?

Hello @tiagobento , @romartin . I agree, we should go ahead with this. I can create a separate PR for the blinking selection problem.

Thanks guys for moving this forward!
BTW @Josephblt Can you please share the link for the ticket about the "selection blinking" issue? Thx!

The issue with changing cursor position hasn't been fixed. I have reported it here: https://issues.redhat.com/browse/KOGITO-7539


New IA for docs

Here's the current organization of pages under docs and my suggested rework:

Overview
  Metadata   --> make top-level, and ensure `title` is "Roles and Metadata" (drop `linkTitle`)
  Project    --> make top-level and move down after Getting started
    Tap      --> move under Community
  Security   --> make top-level
Get started  --> rename to "Getting started" (we might not need this page after all, but we can discuss)
  Contributor --> delete
  Adopter     --> delete
History       --> make a subpage of Project
Timeline      --> make a subpage of Project
FAQ

@lukpueh - WDYT?

Oh, just to be clear, "make top level" means within /docs. That is, for example, "Project" would move to /docs/project.

TAP under community is a bit weird.  I'd like to keep that separate.
Where is the spec at here?
Where do we list adoptions?  Do we just omit it or is it rolled in elsewhere?

TAP under community is a bit weird. I'd like to keep that separate.

@JustinCappos - if you look at the current website, TAP is under Community:

Are you ok with leaving it there for now?

Where is the spec at here?
Where do we list adoptions? Do we just omit it or is it rolled in elsewhere?

Just to be clear, this issue is for the Documentation section of the website. For the full Information Architecture (IA), see https://github.com/cncf/techdocs/blob/main/analyses/0012-TUF/implementation.md#proposed-information-architecture-for-the-tuf-website.

Transferred to:

https://github.com/theupdateframework/theupdateframework.io/issues/93


Fix Document QA pipeline

Closes #218

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Bash auto completion: Filter list by task state

Changes

Added filtering to bash auto completion of kapacitor enable to only list disabled tasks
Added filtering to bash auto #completion of kapacitor disable to only list enabled tasks

Required for all non-trivial PRs

[x] Rebased/mergable
[ ] Tests pass
[ ] CHANGELOG.md updated
[x] Sign CLA (if not already signed)

@nathanielc
Do you update CHANGELOG.md when you merge this PR or shall I update CHANGELOG.md in this PR?

@bbczeuz I took care of the CHANGELOG. Thanks for the PR!


Improve Operator Overloading docs

Manu reported this on 2018-06-16T20:37:30Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=18998
CC List

Cristian Creteanu
Seb
Nick Treleaven (@ntrel)

Description
The language Operator Overloading document has devolved into chaos!

Picture that you don't know D, and you want to learn about operator overloading, and now read that document.

Press Ctrl-F and type "opSlice", scroll the highlighted text, try and understand how to implement a slicing operator properly. Note that the first contact you see looks like this:
  `-a[i..j]    a.opIndexUnary!("-")(a.opSlice(i, j))`  wat?!

I think this document needs a complete overhaul, starting with a list of special operators that exist, description of each special operator and example of how they work in **the most simple case**, and show complex compounds and aggregate rewrites towards the end, only after the basic meaning of all operators has been established.

This is a critical language document, and it's not terribly helpful to new users.

turkeyman commented on 2018-06-16T21:12:45Z
I also suggest, for each operator as it is introduced, demonstrate the 'canonical' signature; what is the 'most standard/correct' way to specify these functions in their most simple cases.

Imagine you were writing a D equivalent of std::vector, nothing could be simpler in terms of API spec.
Read the section "Array Indexing and Slicing Operators Overloading" from the perspective you were writing std::vector...

What indexing type to use? size_t?
What about argument ref-ness? ref? byval? auto ref?
Argument const-ness?
What should assignment operators return? `void`? A reference to `this` like C++?
How to correctly handle the operators that receive strings?
  constraint:     int opBinary(string op) if (op == "+") { ... }
  specialisation: int opBinary(string op : "+") { ... }
  static-if:      int opBinary(string op) { static if (op == "+") { ... } }
Each have subtly different semantics with respect to overload selection, error messages, etc. Default choices should be suggested.

This information being clearly provided will ensure that development of D container classes will follow the same set of guidelines.

It's worth noting, the document is almost obsessed with 2-d slicing/indexing/op-assignment concepts.
Make a point that multi-dimensional indexing is even supported, and that it is a separate topic, and requires different handling than 1d.
Users might not imagine that multi-dimensional indexing/slicing is possible on first contact.

I suggest establishing all indexing/slicing operators with respect to their typical 1-d cases, and then have a specific section at the end relating n-d (or 2-d in this case) indexing/slicing mechanics.

turkeyman commented on 2018-06-16T21:14:12Z
Convenience link: https://dlang.org/spec/operatoroverloading.html

nick (@ntrel) commented on 2022-12-11T13:55:01Z
This one adds examples for opCmp, opOpAssign, s.opIndex(s.opSlice(...)).
https://github.com/dlang/dlang.org/pull/3467

dlang-bot commented on 2023-07-10T11:07:51Z
dlang/dlang.org pull request #3652 "[spec] Improve opCast & `opCast!bool` docs" was merged into master:

- a6cfd0db7b7f74ec27c2d908d017d82e5355023b by Nick Treleaven:
  Part of
  Issue 18998 - Improve Operator Overloading docs

https://github.com/dlang/dlang.org/pull/3652

dlang-bot commented on 2023-07-03T18:36:14Z
@ntrel updated dlang/dlang.org pull request #3652 "[spec] Improve opCast & `opCast!bool` docs" mentioning this issue:

- Part of
  Issue 18998 - Improve Operator Overloading docs

https://github.com/dlang/dlang.org/pull/3652

nick (@ntrel) commented on 2022-12-11T16:30:37Z
> try and understand how to implement a slicing operator properly. Note that the first contact you see looks like this:
>   `-a[i..j]    a.opIndexUnary!("-")(a.opSlice(i, j))`  wat?!

I think the docs for opIndexUnary, opIndexAssign and opIndexOpAssign should be moved to the Indexing and Slicing Operators section where they make more sense.

> Make a point that multi-dimensional indexing is even supported, and that it is a separate topic,

With the 2nd pull I have tweaked the slicing docs to introduce 1D slicing first with an example, then move on to multidimensional.

> and requires different handling than 1d.

Well non-template opSlice(i, j) 'is discouraged', so they're not different really.

nick (@ntrel) commented on 2022-12-10T17:44:18Z
> Press Ctrl-F and type "opSlice", scroll the highlighted text, try and understand how to implement a slicing operator properly. Note that the first contact you see looks like this:
  `-a[i..j]    a.opIndexUnary!("-")(a.opSlice(i, j))`  wat?!

Tweaked unary operator docs so there's now a brief explanation and link to slice overloading above the lowering table for opIndexUnary:

https://github.com/dlang/dlang.org/pull/3463


Change the space between Search by Creator and Clear filters

In the search result page, the distance between filter Search by Creator and Clear filters is not correct. It should be 24px with a line separating the actions.
Expected design

May I work on this?

We will be adding "help wanted" labels to issues suitable for community contribution, please be patient. Once those are up, you can send PRs without any prior approval per our new contribution guidelines.

oh ohkk @kgodey


Show search box on every page

Currently is shows only on home page and phenocode page.

was done


[Translation]Simplified Chinese/简体中文

Simplified Chinese ,and not a full translation.
CN.properties.zip

还没有翻译完整，大概翻译了1/3

I have done the basic translation , so please include it in next release !
THANKS!

This is the Minecraft 1.18.1 Simplified Chinese language pack.
cn.lang.zip
@Defective4

I have reviewed your translation and it will be included in the next release.
Again, thank you very much for your contribution!

Your translation was added in release 1.5.4.
Once again, thank you for making Another Minecraft Chat Client better!
If you ever want to modify/improve your translation, or anything in general, feel free to open a new issue.


3 ➡ 4

Forward-port Citadel to Dome. This contains bug fixes, so it should be ok to go in during feature freeze.
Diff:
https://github.com/ignitionrobotics/ign-gazebo/compare/master...ign-gazebo3

I believe the homebrew test failures are flaky.

I believe the homebrew test failures are flaky.

I see segfauls in three of them. We can take care of them in different issues or PRs but at least one happens after a warning (that might be a hint):
93: Warning [Model.cc:212] Non-unique names detected in XML children of model with name[X3].
 93/130 Test  #93: INTEGRATION_multicopter ..............................***Exception: SegFault  1.35 sec

I just relaunch the job to see if we get more information.

Do they need to be changed?

Good point, removed in 6d0d0b1


chore: added the main structure for the port wait feature

Description:
Added the main structure for the port wait feature, it's disabled because the purpose of the PR is just to review the code and the we will create another PR which will enable the feature, I wanted to split the PRs in order to reduce the size.
Is this change user facing?
NO
References (if applicable):
https://www.notion.so/kurtosistech/Automatic-TCP-Port-Waiting-17f27247ddc14cca930f5cff5627319b
https://github.com/kurtosis-tech/kurtosis/issues/192

@gbouv


Login page

Includes:

Sweetalert
jQuery Backstretch
Express-Session module
New Routers
Router Cleanup

Comments added to both PRs and getting Gilbert's feedback
Then we'll get this merged and published

Sounds good!

Looks good. Defaulting to session auth seems the right way to go.


convert from docbook xml extension file to md file

Hi,
I can convert from docbook to markdown with xml file extension by using "pandoc -f docbook -t markdown -s howto.xml -o example31.text" command on pandoc.exe. (https://pandoc.org/demos.html)
But, when I try to convert with xml extension on this library, I get an error "Invalid input format!".
RuntimeError: Invalid input format! Got "xml" but expected one of these: biblatex, bibtex, commonmark, commonmark_x, creole, csljson, csv, docbook, docx, dokuwiki, epub, fb2, gfm, haddock, html, ipynb, jats, jira, json, latex, man, markdown, markdown_github, markdown_mmd, markdown_phpextra, markdown_strict, mediawiki, muse, native, odt, opml, org, rst, rtf, t2t, textile, tikiwiki, twiki, vimwiki
How can I convert from xml extension docbook file to markdown using by pypandoc?
Thanks in advance

Hi
this code worked ;)
output = pypandoc.convert_file("appendixa.xml", to='md', format='docbook', outputfile="appendixa.md")
Thanks


No example code in go tour page.

Context: https://go-tour-ua-translation.lm.r.appspot.com/methods/2
There is no example code there.

The translations are not maintained or controlled by the Go Project, please report the issue to the ua tour translator. Closing here since we cannot change externally hosted translations.


merge improvements from mfdz repo

I completely messed this up, I meant to PR the other way into my own repo


How to localize Text on an element inside of a ResourceDictionary ?

This seems to work just fine for localizing text within normal XAML views. But what about within a XAML ResourceDictionary?
For example, within Themes\Generic.xaml  I define this..
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     ...
                    xmlns:lex="http://WPFLocalizationExtension.DesignForge.com">
    <Style TargetType="layoutToolkit:AccordionItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="layoutToolkit:AccordionItem">
     <Style TargetType="layoutToolkit:AccordionItem">
                       <Border x:Name="Background"
                                            <TextBlock Text="{lex:Loc Step}"/>

This resource-key, "Step", fails to be translated. Also, if I put lex:ResxLocalizationProvider.DefaultAssembly=".." or .DefaultDictionary="..", the compiler complains about those.
Does WPFLocalizationExtension not work within XAML ResourceDictionaries ?

It is working. I tested this one right now to double-check:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:l="http://wpflocalizeextension.codeplex.com">
    <DataTemplate DataType="{x:Type sys:Enum}">
        <Grid>
            <TextBlock Text="{Binding ElementName=Proxy, Path=Result}" />
            <l:LocProxy Name="Proxy" Source="{Binding}" PrependType="True" />
        </Grid>
    </DataTemplate>
</ResourceDictionary>

What you cannot do there is setting any attached properties to the ResourceDictionary (DefaultAssembly & DefaultDictionary). But their values will be taken from the target where the templates will be used.

It is not working when I set this properties in element where this datatemplated object is used as content.
Textblock form example return nothing for me.


setup error

setup.py line: 20
long_description = open(os.path.join(here, 'README.md')).read()
-->
long_description = open(os.path.join(here, 'README.md'), 'r', encoding='utf-8').read()
else will get error: UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 3100: illegal multibyte sequence

anago/units.py line 64
with open(filename) as f:
-->
with open(filename, 'r', encoding='utf-8') as f:
else will get error

Hi @neolone
Thanks to let me know the problem.
Could you tell me the following information?

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
TensorFlow/Keras version:
Python version:
anaGo version:


Documentation does not reflect the product

Documentation for Hello Android, Quickstart does not reflect the shipping product:
There is no "New Project" - should this say "New Solution"?
But if I select that, there is no choice "Android" in the selections that come up.

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

ID: 660b0f7c-9941-2db3-63bf-fc8a97765b1e
Version Independent ID: 5aa1e6f6-534a-05b9-c44a-1f62b24c201a
Content: Hello, Android: Quickstart - Xamarin
Content Source: docs/android/get-started/hello-android/hello-android-quickstart.md
Product: xamarin
GitHub Login: @conceptdev
Microsoft Alias: crdun

@ralphrmartin if you are using Visual Studio 2017 on Windows, and the File > New dialog does not contain any Xamarin options, check that you have installed the Xamarin workload.

I'm using it on a Mac

New Project is a button (not a menu) as shown on the first screenshot above.
I cannot imagine why you do not see the welcome screen (get started, recent file list, and developer news) on startup. Please visit Developer Community to search for or raise a ticket to report this problem.

The app that was created using Visual Studio for Mac 2019 doesn't have the button shown in the illustrations. It's no biggie, but it is always disconcerting when docs designed to introduce people to a tech aren't current.


pull request for e2e test at 12/03/2016 10:15:01

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Errno::ECONNRESET when using get_multi

Please check following sample. Using dalli (2.7.10) and memcached 1.6.0
cache = Dalli::Client.new('localhost:11211')
cache.get_multi(:foo, :bar) # => {}

But I also receive this warning WARN -- : localhost:11211 failed (count: 0) Errno::ECONNRESET: Connection reset by peer
Why I am getting this warning when using get_multi? It happens just in case that there are no values stored under :foo and :bar keys...
There's no warning when using cache.get(:foo) # => nil it happens just with get_multi

I am seeing this too, in development on localhost, using fetch_multi. However when pointing it to cloud memcached servers (e.g. on Heroku) it works fine.
For what it's worth, in my own case, using :mem_cache_store in development.rb still produced a similar error but it at least worked -- meaning hitting fetch_multi would produce one error:
localhost:11211 failed (count: 0) Errno::ECONNRESET: Connection reset by peer
But the call would otherwise function properly, and subsequent calls to fetch_multi (with the values now stored in cache) wouldn't complain. However with :dalli_store in development, it would actually spit out multiple Errno::EPIPE: Broken pipe errors and the values did not seem to be getting cached at all. So my current solution is to just use :mem_cache_store in development and just ignore the errors if they do pop up.
Other notes: I am using Rails 5.2 and Puma 4.3.5. And just to help troubleshoot (since I know there is some description on the readme of Puma + multithreading), I did try using Thin as the server and got the same exact results.

It's working fine against master. We're not recommending :dalli_store anymore, users should migrate to Rails's official :mem_cache_store.
irb(main):001:0> require 'dalli'
irb(main):002:0> cache = Dalli::Client.new('localhost:11211')
irb(main):003:0> cache.get_multi(:foo, :bar)
=> {}
irb(main):004:0> cache.set(:foo, :bar)
=><PHONE_NUMBER>7927936
irb(main):005:0> cache.get_multi(:foo, :bar)
=> {"foo"=>:bar}


Weightgurus

Displays your most recent weigh-in from a Weight Gurus smart scale, along with a configurable trend plot.
Weight Gurus does not have an official OAuth api, so this uses reverse-engineered calls to the same API their mobile app uses.
Based on/steals from the existing FitBit applet to do the plotting and other layout.

I have read the CLA Document and I hereby sign the CLA

recheck


Double error on collision detection

Chrome / Latest Pro
When someone else is editing and you try to update a page:

I can't reproduce. Do you have steps to reproduce?

open a post which is already published on one computer, and make some edits
open the same post on another computer, make some edits, and try to 'update'

expected: 1 error, got: 2 errors

I don't have two computers. I am not getting two error messages when using two tabs.

I don't know what to tell you, you can see from the screenshot that it happened, and I've described what lead up to it 🙃
sounds like a race condition between these two error messages, I can't really suggest much more than that

@kevinansfield Any idea how this is possible? Thanks

Hmm, the first error is coming from the editor controller's _showErrorAlert function (found by the "Update failed:" prefix). The second doesn't have the prefixed text which suggests the error wasn't fully handled and as a result it bubbled up to the application route and hit the generic network error handling.
Alerts in the admin are keyed to avoid showing the same error twice but that won't work if an error gets handled in two different places in the app with alerts being generated with a different key in each.
I can't reproduce when editing text but maybe it was a different action that triggered a save. I'll try and dig further.

A slightly hacky fix but one that could help avoid similar situations could be to remove the prefixes added by the editor alert display (no longer necessary with the updated API errors anyway) and then update our notifications service to de-duplicate on message content as well as key.


⚠ Bofrost.es has degraded performance

In 6e69b13, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1096 ms

Resolved: Bofrost.es performance has improved in 83293ee after 6 minutes.


fiscalization, accounters

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.1
logical conflict every: 100
sleep for: 300s
close stale after: 4 hours
[pullrequest]
requests per hour: 0
deps=[a,f]

/trunk merge


Path.exists is not patched

Describe the bug
I call Path().exists immediately after shutil.copyfile and it returns False while os.path.exists returns True.
I guess Path().exists is using the real filesystem.
How To Reproduce
Path('/tmp/test').write_text('test')
print(Path('/tmp/test').exists())
print(os.path.exists('/tmp/test'))

Your environment
macOS-14.5-arm64-arm-64bit
Python 3.12.3 (main, Apr  9 2024, 08:09:14) [Clang 15.0.0 (clang-15<IP_ADDRESS>)]
pyfakefs 5.5.0
pytest 8.2.1

I also noticed Path().unlink doesn't work (maybe it is working on the real filesystem) while os.remove works.

Can you please show how you call that code? E.g. a reproducible example, if possible.

For illustration - the following test passes:
def test_fakefs(fs):
    fs.os = OSType.LINUX
    path = Path('/tmp/test')
    path.parent.mkdir(exist_ok=True)
    path.touch()
    path.write_text('test')
    assert path.exists()
    assert os.path.exists('/tmp/test')

So you must be doing something different.

Thanks for investigating it! I probably did something wrong, I will check it when I get back to my desk.

It was an issue on my side, I had pathlib in additional_skip_names from the past 🙈
I will make sure to create simple reproduction steps before reporting any issues in the future.

@mrbean-bremen Quick question, is Path().exists expected to respect additional_skip_names?

Well... I had hoped you won't ask :)
The truth is that I did want to implement a more generic solution for the handling of additional_skip_names in pathlib, but couldn't get it to work. The current implementation is incomplete (yes, actually all methods should respect additional_skip_names) and ugly (using the callstack). I had hoped that it will sufficient until I get back to it, but obviously I was wrong.
Feel free to write a new issue. Maybe you even have an idea on how to implement this in a better way...


Stop notification sliding back into header after interaction?

Hey, I have the notifee notifications working nicely in android except whenever the app is in the background and I interact with the notification it slides back up into the notification drawer or to be more accurate the whole notification drawer collapses back up. The interaction callback is called but I want the drawer and notification to remain visible so the user can press the interaction multiple times (it increments a timer). The notification is not cleared just updated.
To be clear I am not trying to prevent the notification from being dismissed but have added the properties "ongoing: false" and "autoCancel: false" anyway. I just want the drawer to stay open.
The interactions execute some callback which in turn calls  a function that updates the notification using this function:
export async function updateNotification(
    notificationData: NotificationDataType,
) {
    await notifee.displayNotification({
        id: NOTIFICATION_ID,
        title: notificationData.title,
        body: notificationData.body,
        android: {
            ongoing: true,
            autoCancel: false,
            channelId: notificationData.channelId,
            actions: notificationData.actions,
            pressAction: {
                id: 'default',
            },
        },
    });
}

I think this code is fine and not causing the notification/ drawer to slide up so I'm really not sure what is causing it.
I request the channel in the correct way too I believe:
    useEffect(() => {
        /**On mount we need to get permission to show notifications and also select a channel
         * for notifications to show on (android thing)
         */
        const requestNotificationPermission = async () => {
            await notifee.requestPermission();
            const newChannelId = await notifee.createChannel({
                id: 'default',
                name: 'Default Channel',
                importance: AndroidImportance.HIGH,
            });
            setChannelId(newChannelId);
        };
        requestNotificationPermission();
    }, []);

Any suggestions as to what is happening? I'd be very grateful. Otherwise I have found this to be a great library.

I have the same issue - all notification actions automatically close the notification drawer. It seems this is a hardcoded functionality within the Notifee library. Which is confusing because I can see the hideNotificationDrawer() function in the API, but no way to do the opposite.


nasm - 16 bit compilation

As discussed on Discord, my issue is getting nasm to compile 16 bit code.
Here is the log:
dev@tp:~/projects/bare-metal-x86-rambling-simulator$ xmake f -c -a "" --toolchain=nasm
checking for platform ... linux
dev@tp:~/projects/bare-metal-x86-rambling-simulator$ xmake -v
checking for nasm ... /usr/bin/nasm
checking for the assember (as) ... nasm
[100%]: build ok!
dev@tp:~/projects/bare-metal-x86-rambling-simulator$ tree ./build
./build
└── linux
    └── x86_64
        └── release

3 directories, 0 files
dev@tp:~/projects/bare-metal-x86-rambling-simulator$ xmake -rvD
error: @programdir/core/main.lua:290: @programdir/actions/build/main.lua:124: ...mdir/core/sandbox/modules/import/core/base/scheduler.lua:87: ...mdir/core/sandbox/modules/import/core/base/scheduler.lua:47: @programdir/modules/private/async/runjobs.lua:217: @programdir/core/sandbox/modules/os.lua:165: assertion failed!
stack traceback:
    [C]: in function 'assert'
    [@programdir/core/sandbox/modules/os.lua:165]: in function 'tryrm'
    [@programdir/actions/build/build.lua:33]: in function '_clean_target'
    [@programdir/actions/build/build.lua:143]: in function 'jobfunc'
    [@programdir/modules/private/async/runjobs.lua:193]:
    [C]: in function 'trycall'
    [@programdir/core/sandbox/modules/try.lua:121]: in function 'try'
    [@programdir/modules/private/async/runjobs.lua:186]: in function 'cotask'
    [@programdir/core/base/scheduler.lua:317]:

stack traceback:
	[C]: in function 'error'
	@programdir/core/base/os.lua:787: in function 'raise'
	@programdir/modules/private/async/runjobs.lua:217: in function 'catch'
	@programdir/core/sandbox/modules/try.lua:127: in function 'try'
	@programdir/modules/private/async/runjobs.lua:186: in function 'cotask'
	@programdir/core/base/scheduler.lua:317: in function <@programdir/core/base/scheduler.lua:315>
stack traceback:
	[C]: in function 'error'
	@programdir/core/base/os.lua:787: in function 'raise'
	...mdir/core/sandbox/modules/import/core/base/scheduler.lua:47: in function 'co_start_named'
	@programdir/modules/private/async/runjobs.lua:184: in function <@programdir/modules/private/async/runjobs.lua:144>
	[C]: in function 'trycall'
	@programdir/core/base/scheduler.lua:423: in function 'co_group_begin'
	...mdir/core/sandbox/modules/import/core/base/scheduler.lua:85: in function 'co_group_begin'
	@programdir/modules/private/async/runjobs.lua:144: in function 'runjobs'
	@programdir/actions/build/build.lua:222: in function 'build'
	@programdir/actions/build/main.lua:116: in function <@programdir/actions/build/main.lua:111>
	[C]: in function 'trycall'
	@programdir/core/sandbox/modules/try.lua:121: in function 'try'
	@programdir/actions/build/main.lua:110: in function <@programdir/actions/build/main.lua:83>
	[C]: in function 'load'
	@programdir/core/base/task.lua:519: in function 'run'
	@programdir/core/main.lua:288: in function 'cotask'
	@programdir/core/base/scheduler.lua:317: in function <@programdir/core/base/scheduler.lua:315>
stack traceback:
	[C]: in function 'error'
	@programdir/core/base/os.lua:787: in function 'raise'
	@programdir/core/main.lua:290: in function 'cotask'
	@programdir/core/base/scheduler.lua:317: in function <@programdir/core/base/scheduler.lua:315>

Thanks for looking into this!

Very strange, target:targetfile() is nil...What is your target kind set (set_kind)?
https://github.com/xmake-io/xmake/blob/49febf7add0f54c3edd06f790ffa5cdab453731c/xmake/actions/build/build.lua#L33
but it works for me.
Will you have the same problem when you revert to v2.3.9? I don’t remember changing this.

Very strange, target:targetfile() is nil...What is your target kind set (set_kind)?
https://github.com/xmake-io/xmake/blob/49febf7add0f54c3edd06f790ffa5cdab453731c/xmake/actions/build/build.lua#L33
but it works for me.
Will you have the same problem when you revert to v2.3.9? I don’t remember changing this.

I had set the target kind to an invalid type, "object", there was no error for an invalid type hence the confusion.
But what do I set the target kind to if I just want a binary blob with no ar or linking?

I had set the target kind to an invalid type, "object", there was no error for an invalid type hence the confusion.
But what do I set the target kind to if I just want a binary blob with no ar or linking?

At the moment I'm using a batch file for Windows and a bash script for Linux so I want to have an xmake file to make one cross platform build. I am just compiling a couple of files with nasm and cating the raw output together since the padding is done in the asm files.

At the moment I'm using a batch file for Windows and a bash script for Linux so I want to have an xmake file to make one cross platform build. I am just compiling a couple of files with nasm and cating the raw output together since the padding is done in the asm files.

Since few people use it, I haven't tested object kind for a long time. It may be supported, but some changes are needed.
You can try to rewrite the on_link script first.
target("xxx")
    set_kind("binary")
    on_link(function (target) end)

Since few people use it, I haven't tested object kind for a long time. It may be supported, but some changes are needed.
You can try to rewrite the on_link script first.
target("xxx")
    set_kind("binary")
    on_link(function (target) end)

I have fixed the above error about object kind, but I’m not sure if there will be errors in other places, but you can try it after updating

I have fixed the above error about object kind, but I’m not sure if there will be errors in other places, but you can try it after updating

The improvement to the object target work, thanks. At least there is no error any more.
Object files are produced in .deps and .objs so I can access them via these forbidden directories, but what would be the correct way of accessing them?

The improvement to the object target work, thanks. At least there is no error any more.
Object files are produced in .deps and .objs so I can access them via these forbidden directories, but what would be the correct way of accessing them?

The improvement to the object target work, thanks. At least there is no error any more.
Object files are produced in .deps and .objs so I can access them via these forbidden directories, but what would be the correct way of accessing them?

target:objectfiles()

The improvement to the object target work, thanks. At least there is no error any more.
Object files are produced in .deps and .objs so I can access them via these forbidden directories, but what would be the correct way of accessing them?

target:objectfiles()

Thanks!

Thanks!


Update dependencies to maintained projects

Prior to this commit this modules dependencies pointed at a hercules team project, that had since transferred hands to voxpupulli,
https://github.com/derdanne/puppet-nfs/issues/154

the spec failures seem to be a text environment based issue
NameError: uninitialized constant PuppetStrings
i see the gem present so ill have to take some time to see whats up


BODY_PART_PAF_IDS

I have a query related to how to define BODY_PARTS_PAF_ID for custom dataset?
I referred to TRAIN_ON_CUSTOM_DATA documentation.
BODY_PART_PAF_ID list seems to be a list of list where individual list in the list contains two corresponding indices. Does the order of the indices matter? Here for 18 keypoints it is defined as-
([12, 13], [20, 21], [14, 15], [16, 17], [22, 23], [24, 25], [0, 1], [2, 3], [4, 5],
[6, 7], [8, 9], [10, 11], [28, 29], [30, 31], [34, 35], [32, 33], [36, 37], [18, 19], [26, 27])
if [20,21] came before [12,13], will that affect the result? In case if I just made this list in sequence like [0,1][1,2]..to [36,37], will that have an effect on the result as well?

Hi! In general you may use any ordering. They are also specify the order in which body parts will be grouped together. It makes sense to start from the most confident part, e.g. neck, and connect everything to it. You need to assemble somehow keypoints into persons. If you start from left shoulder-elbow part, it will allocate data for the new person. Then if you next proceed with the right  shoulder-elbow (part which is not connected directly with left elbow), it will also allocate data for the new person. You will need to merge two data arrays together into one persons after that. If you instead will start from the neck and add next parts sequentially, where the next part is connected with previous, you will not need to merge different pieces of data for the same person.

Yes, in BODY_PARTS_KPT_IDs we are starting from the neck [1, 2], [1, 5], [2, 3]..starting from the neck and then gradually proceeding to other parts 1 to2 2 to 3 and so on.
However in BODY_PART_PAF_IDS the first value is [12,13]. As per definition, 12 13 are network indices of the output of the corresponding keypoint pairs. The first two keypoint pairs are [1,2] and [1,5]. How are these two pairs related to the indices [12,13]? Is there something in the model architecture that plays a part in the BODY_PART_PAF_ID definition?

As defined. For keypoints pair 1 and 2, the corresponding PAF maps in the output PAF tensor are with the indices 12 (dx) and 13 (dy). The same rule for the next keypoints pair 1 and 5, for them the corresponding PAF maps in the output PAF tensor are with the indices 20 (dx) and 21 (dy).

Okay this is how we are defining them. This aspect is clear.
Why does ./modules/keypoints.py and ./dataset/coco.py have different ordering for BODY_PART_KPT_IDS definition?
Will they be the same or there is a reason behind this difference?

They have the consistency between arrays, but just the different order. It is a legacy.

Thanks a lot for the clarifications.


Introducing the data source health check subsystem

Dear @chenlujjj and @jangaraj,
Originally coming from How to find out unused datasources?, based on our discussion at Finding unhealthy data sources, we finally made a start to lay out the foundation with #19. Health checks for a few data source types will be supported already [^ds], but we will have to complete the list diligently, which requires dedicated work.
Corresponding documentation how to work with the health check subsystem on behalf of an example program examples/datasource-health.py can be inspected at examples/datasource-health.rst. The program is intended to evaluate the new subsystem with different databases, in order to gradually improve the implementation. We tried to make it easily usable for others to run in order to support this endeavor.
When the feature is reasonably ready over here, we will return to https://github.com/panodata/grafana-wtf/issues/19 in order to continue the discussion how to use it within grafana-wtf appropriately.
If this resonates with you, you might want to lend a hand? All kinds of feedback, both in terms of testing and further contributions will be greatly appreciated. Thank you very much in advance.
With kind regards,
Andreas.

Usage
The documentation at examples/datasource-health.rst will guide you through a full development sandbox installation, including running Grafana and some database services as Docker containers, and setting up the working tree from the Git repository.
In this section, we outline an alternative approach how to work with the feature using the example program examples/datasource-health.py. It might save a few keystrokes, specifically when aiming to work on an existing infrastructure.
# Setup
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade git+https://github.com/panodata/grafana-client
wget https://raw.githubusercontent.com/panodata/grafana-client/main/examples/datasource-health.py

# Run
export GRAFANA_URL=http://daq.example.org:3000
export GRAFANA_TOKEN=eyJrIjoiUWVrYXJh....aWQiOjJ9
python datasource-health.py --type=influxdb --url=http://daq.example.org:8086

Details
The example program will create a data source item named probe-{dstype}, with the designated database target URL. Then, it will run a data source health check on it and report about its outcome.
This will work well in situations when running the database services as Docker containers, as outlined in the reference documentation at examples/datasource-health.rst. It might not work well in other situations, where the data source configuration might need further adjustments.
In this case, don't hesitate to adjust the datasource_factory() code correspondingly to match your setup.
References

Original feature request: https://github.com/panodata/grafana-wtf/issues/19
Discussion: https://github.com/panodata/grafana-client/issues/20
First patch: #19
Documentation: examples/datasource-health.rst
Example program: examples/datasource-health.py

[^ds]: CrateDB, Elasticsearch, InfluxDB, PostgreSQL, Prometheus, Testdata

Dear Jan,
thank you for sharing this information. This is very sweet. I will improve the implementation to use the new endpoint from Grafana 9 onwards.
With kind regards,
Andreas.

Hi @chenlujjj, @peekjef72, and @jangaraj,
with #24 and #25, the data source health check subsystem became mature enough that adding the most prominent missing data sources on behalf of #27 was a real breeze. You can take that as a reference if you need to add health check capabilities for further data sources.
Effectively, unless a data source would have a total different shape in terms of query and response formats, the gist is to fill in the gap solely within grafana_client/knowledge.py. If you are interested in how this works for the individual data sources, I recommend to look at the individual commits of this patch (#27).
With kind regards,
Andreas.

Hi again,
grafana-client==3.0.0 has been released. With this release, you will be able to use the new data source health check subsystem. We will be happy to hear about your observations and eventual bug reports.
With kind regards,
Andreas.

With GH-112 by @peekjef72 (thanks again!), this subsystem can now be used to also conduct generic queries to Grafana datasource databases, and people start using it for that purpose already, see GH-85.


log file is not saved after import

When I import a log, and then quit the app, it is not saved. After import, it should write to the app's log storage 😸

Which OS are you on?
Are you opening the app through Itch.io, manual build or download?

macOS build of 1.0.4 from itch.io. It has no problem writing the file when I create new entries.

When you import a file, the app starts reading from and writing to that file. It used to store everything in localStorage but apparently that gets overwritten if you update the app. By default, if you don't import anything and just start using the app, your data is stored in a file in appData which on Mac should be ~/Library/Application Support

Wait, did you import by dragging and dropping? I just noticed that it doesn't store the location of the dragged-and-dropped file and so the app won't write anything to it.

Yeah, it was a drag and drop. I see what you mean about recording data to the new location when you do an import. Thanks!

Oh cool. Alright I'll see if I have time to fix that today :)


Experiment with "lookahead" functionality

Basic outline :
in trajtrack.cc, in function GetTarget :

Find the nearest point where the curvature is maximum ( a local "maxima" for curvature, although it is indifferent to the direction of turning. The local maxima is found by evaluating the product of derivatives of curvature around a point. if the product of current derivative and previous derivative is negative, the sharpest point was just encountered. The product is positive as long as the curvature's magnitude keeps increasing)
Find the distance to that point (for now using euclidean distance. Can be improved later).

in controller.cc, in function GetControl, in the if condition for autodrive :
3) Evaluate whether braking is required by evaluating the deceleration required to hit the maximum speed at the point of maximum kappa found in 1). the deceleration is computed as dv/dx*current velocity (dv/dx * dx/dt = dv/dt . This works as long as we assume the deceleration to be uniform. again, these assumptions can be improved, but the basic idea would remain).
If the deceleration required is more than half the traction limit (because some traction will be required for turning too. Again, an assumption), then set the target velocity as the velocity at that point (max kappa point) and if not then set the target velocity as the velocity for the current kappa or the config.speed limit (whichever is smaller).

Nice idea. Another idea would be to annotate the offline computed path with target velocities for each point. Offline it’s easier to get the optimal speed based on friction circle and curvature for each point. Then, this somewhat heuristic-y approach in this pull request wouldn’t be necessary.
Another question based off the description of the PR, not the code: if the ideal velocity is dependent on being able to break for the slowest corner what happens in this scenario. For simplicity imagine a straight track (not closed loop) with two corners. The first corner has curvature just below the second corner’s curvature. Then the car will be way too fast for the first corner. I hope I explained that well.

Update regarding my earlier comment: from the code I can see that you find the first local curvature maximum. This is better than my assumption however it remains that the speed might be too high on the second maximum.

Hi! Thank you for your time!
I will address the second question first.
I can imagine a certain case where this method will likely not work great. I am imagining a turn like turn 15 on circuit of americas

However, the catch here is that the path is optimized before-hand (this is something that
happens already) and the optimized path around turns like turn 15 on CoAs would actually only have 1 local maxima and not 2. I am not sure exactly how the path is being optimized here, but if 2 local maximas are in succession (in a track), the optimized path only contains 1 local maxima (speaking from my experience as a racer, not a programmer or mathematician ).

(you could go in either direction, if approaching turn 15, there is actually only 1 maxima. If approaching turn 13 from turn 15, there is still only 1 maxima even though there are 2 turns).
So the problem that you describe is not very likely to occur. Nonetheless. I will think about it and fix it ASAP.
Answering the first question :
I can see the validity and benefit of the offline approach, the assumptions can be avoided because computational expense isn't a big deal (not that it's a big deal right now either). One correction I would like to make to your comment is that you wouldn't need the velocity at each point (since we can already find that using kappa), you'll need the deceleration/acceleration at each point (which will be computed in a way similar to the approach outlined in this PR ). That would allow us to make the most of the friction available to the car at all times (which is how human racers find the ideal braking points and the racing line in general, by keeping the car at the limit all the time). This approach works great for time attacks on a track where the conditions never change (so basically almost like a basic video game).
However, the offline approach, in my opinion, is not a good one (and in my car, as rudimentary as it is, I use an online method for generating trajectory (Its not exactly generating a trajectory but I will avoid going into the details here) ) because the system loses flexibility and becomes very rigid in how it operates. The reason why "rigidity" is bad is because the next logical step in autonomous racing is to race against other cars without being oblivious to them, which will require re-planning the path in real time (this is kind of why in local races or online racing sessions you see a lot of guys do really good lap-times in the qualification runs but they get lost in the back of the pack in the actual race, because they aren't used to re-planning their path while they are racing). If path re-planning (or maybe just diverting from the ideal path for a very small amount of time) in real time is required, then a method to find the optimal braking point in real time is also required because your speed coming out of the overtaking/dodge/defense maneuver will be different from your pre-calculated optimal speed.
The method can certainly be improved. I was just trying to find a quick and dirty fix so that I could create a pull request and bring this idea to light. We can develop this method further and make it less "heuristic-y".
As for the review, my bad, I was not aware of the importance of the "equal to" sign. I will make the correction ASAP.
P.S. In case you want to see my self driving car project (very rudimentary compared to this) : https://github.com/naughtyStark/Self-driving-car
Thanks,
Regards,
Sidharth.

Update regarding my earlier comment: from the code I can see that you find the first local curvature maximum. This is better than my assumption however it remains that the speed might be too high on the second maximum.

I came up with a solution for this. For now it only considers 2 local maximas of kappa ahead of the current position. However it can be made to consider multiple maximas following a similar logic (if there is a need for such a feature, I will implement that too, however, having 3 local maximas so close together and so drastically different in magnitude that you have to consider the 3rd maxima is just bad optimization in my opinion and somewhat unrealistic from my experience).
An intuitive explanation of how it works :

find the first 2 local maximas  ahead of the car.
find the gap (distance between them) and store their kappa values.
put values into a mathematical condition to check if the second maxima is such that brakes must be applied according to the second maxima and not the first (basically if the distance between the 2 points is not very large but the velocity difference is, then premature braking must be done in accordance to the second maxima.)

Mathematical explanation for the final condition :

The 2 curvatures are just 2 examples of the possible cases where this might become useful.

you can ignore the relu part.

The k's here are magnitudes of k's so the negative values don't matter.

This project has come a long way since back then! Good to see that you're in the 10 m/s range now (albeit with foam tires)! Would you mind if I take a look at the trackplan method you use? I want to use something similar in my own project as well: https://github.com/naughtyStark/Self-driving-car-STM-32 .
Also, since you have incorporated a lookahead function in your own way, this pull request seems irrelevant so you can close the pull request.

Yes, I've come up with a better way to generate optimal racing policies. It's all committed in this repo; my latest code is actually using value iteration in PyCUDA to generate a lookup table -- see tools/trackplan/vicuda.py. I just pushed the data for the track I'm racing on so it should run out of the box. there's also valueiter.py for the CPU version but it's so much slower I abandoned it and it's no longer compatible.


Fix some minor spelling mistakes, improve wording and delete some empty indented lines

Thanks for the pull request! Haven't had the time to fix spelling mistakes and typos!


Long job submission time

Hello,
I have been testing the Docker Imaging Galaxy lately. The instance itself could be created, but I got stucked while uploading data (200 kb JPG).  The entry appeared in the history as grey box ("This is a new dataset and not all of its data are available yet") and remained in this state for hours. Three hours (and heavy server communication) later, the job finished succesfully. These extremly long runtimes seem to be a common problem. Here are some snippets from the log file:

Job submission:

galaxy.tools.execute DEBUG 2016-11-30 16:49:02,378 Tool [upload1] created job [1] (2515.271 ms)

Job execution:

galaxy.jobs.runners.drmaa DEBUG 2016-11-30 20:13:56,412 (1/2) state change: job finished normally
galaxy.model.metadata DEBUG 2016-11-30 20:13:56,480 loading metadata from file for: HistoryDatasetAssociation 1
galaxy.jobs INFO 2016-11-30 20:13:56,770 Collecting metrics for Job 1
galaxy.jobs DEBUG 2016-11-30 20:13:56,876 job 1 ended (finish() executed in (446.705 ms))
galaxy.model.metadata DEBUG 2016-11-30 20:13:56,877 Cleaning up external metadata files
Taking a look in the job information, galaxy claimed the following runtime:
Job Start Time	2016-11-30 20:13:52
Job End Time	2016-11-30 20:13:55
, which appears to be more reasonable. Do you have any suggestions about this big delay between submission and execution of the jobs?
The docker image is running on a  8 core machine for testing...shall we move it to a bigger system?
I will attach the shortened log file. It also documents some errors regarding slurm/condor.
Regards,
Anne
imaging_log.txt

Hi Anne,
a bigger machine is not needed. Can you confirm that this also happens with the second file?

Hallo Björn,
I tried to upload another 200 kb picture - the same problems.

Submission

==> /home/galaxy/logs/handler0.log <==

galaxy.jobs DEBUG 2016-12-01 10:39:18,366 (3) Working directory for job is: /export/galaxy-central/database/job_working_directory/000/3
galaxy.jobs.handler DEBUG 2016-12-01 10:39:18,678 (3) Dispatching to slurm runner
galaxy.jobs DEBUG 2016-12-01 10:39:19,285 (3) Persisting job destination (destination id: slurm_cluster)
galaxy.jobs.runners DEBUG 2016-12-01 10:39:19,548 Job [3] queued (828.820 ms)
galaxy.jobs.handler INFO 2016-12-01 10:39:19,572 (3) Job dispatched
galaxy.tools.deps DEBUG 2016-12-01 10:39:20,138 Building dependency shell command for dependency 'samtools'
galaxy.tools.deps DEBUG 2016-12-01 10:39:20,138 Find dependency samtools version None

execution

galaxy.jobs.runners DEBUG 2016-12-01 14:03:36,467 (3) command is: mkdir -p working; cd working; /export/galaxy-central/database/job_working_directory/000/3/tool_script.sh; return_code=$?; cd '/export/galaxy-central/database/job_working_directory/000/3'; python "/export/galaxy-central/database/job_working_directory/000/3/set_metadata_6GzY5Z.py" "/export/galaxy-central/database/files/tmptkw1Fp" "/export/galaxy-central/database/job_working_directory/000/3/working/galaxy.json" "/export/galaxy-central/database/job_working_directory/000/3/metadata_in_HistoryDatasetAssociation_2_0TJawb,/export/galaxy-central/database/job_working_directory/000/3/metadata_kwds_HistoryDatasetAssociation_2_PqaSmg,/export/galaxy-central/database/job_working_directory/000/3/metadata_out_HistoryDatasetAssociation_2_Aykgf9,/export/galaxy-central/database/job_working_directory/000/3/metadata_results_HistoryDatasetAssociation_2_1ZH1UR,/export/galaxy-central/database/files/000/dataset_2.dat,/export/galaxy-central/database/job_working_directory/000/3/metadata_override_HistoryDatasetAssociation_2_xTXtV1" 5242880; sh -c "exit $return_code"
galaxy.jobs.runners.drmaa DEBUG 2016-12-01 14:03:36,678 (3) submitting file /export/galaxy-central/database/job_working_directory/000/3/galaxy_3.sh
galaxy.jobs.runners.drmaa DEBUG 2016-12-01 14:03:36,678 (3) native specification is: --ntasks=1 --share
==> /home/galaxy/logs/uwsgi.log <==
<IP_ADDRESS> - - [01/Dec/2016:14:03:36 +0000] "GET /api/histories/f2db41e1fa331b3e/contents?v=dev&q=update_time-ge&qv=2016-12-01T14%3A03%3A32.000Z HTTP/1.1" 200 - "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
[pid: 189|app: 0|req: 5032/7645] <IP_ADDRESS> () {46 vars in 954 bytes} [Thu Dec  1 14:03:36 2016] GET /api/histories/f2db41e1fa331b3e/contents?v=dev&q=update_time-ge&qv=2016-12-01T14%3A03%3A32.000Z => generated 2 bytes in 34 msecs (HTTP/1.1 200) 3 headers in 124 bytes (1 switches on core 2)
==> /home/galaxy/logs/slurmctld.log <==
[2016-12-01T14:03:37.279] _slurm_rpc_submit_batch_job JobId=4 usec=19791
==> /home/galaxy/logs/handler0.log <==
galaxy.jobs.runners.drmaa INFO 2016-12-01 14:03:37,279 (3) queued as 4
galaxy.jobs DEBUG 2016-12-01 14:03:37,280 (3) Persisting job destination (destination id: slurm_cluster)
==> /home/galaxy/logs/slurmctld.log <==
[2016-12-01T14:03:37.280] sched: Allocate JobId=4 NodeList=0062464d43e4 #CPUs=1
==> /home/galaxy/logs/slurmd.log <==
[2016-12-01T14:03:37.719] Launching batch job 4 for UID 1450
[2016-12-01T14:03:37.766] Received cpu frequency information for 8 cpus
==> /home/galaxy/logs/handler0.log <==
galaxy.jobs.runners.drmaa DEBUG 2016-12-01 14:03:38,720 (3/4) state change: job is running
==> /home/galaxy/logs/uwsgi.log <==
<IP_ADDRESS> - - [01/Dec/2016:14:03:40 +0000] "GET /api/histories/f2db41e1fa331b3e/contents?v=dev&q=update_time-ge&qv=2016-12-01T14%3A03%3A36.000Z HTTP/1.1" 200 - "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
[pid: 189|app: 0|req: 5033/7646] <IP_ADDRESS> () {46 vars in 954 bytes} [Thu Dec  1 14:03:40 2016] GET /api/histories/f2db41e1fa331b3e/contents?v=dev&q=update_time-ge&qv=2016-12-01T14%3A03%3A36.000Z => generated 2 bytes in 16 msecs (HTTP/1.1 200) 3 headers in 124 bytes (1 switches on core 3)
==> /home/galaxy/logs/slurmd.log <==
[2016-12-01T14:03:41.810] [4] sending REQUEST_COMPLETE_BATCH_SCRIPT, error:0
==> /home/galaxy/logs/slurmctld.log <==
[2016-12-01T14:03:41.812] completing job 4
[2016-12-01T14:03:41.814] sched: job_complete for JobId=4 successful, exit code=0
==> /home/galaxy/logs/slurmd.log <==
[2016-12-01T14:03:41.814] [4] done with job
==> /home/galaxy/logs/handler0.log <==
galaxy.jobs.runners.drmaa DEBUG 2016-12-01 14:03:42,490 (3/4) state change: job finished normally
galaxy.model.metadata DEBUG 2016-12-01 14:03:42,709 loading metadata from file for: HistoryDatasetAssociation 2
galaxy.jobs INFO 2016-12-01 14:03:43,419 Collecting metrics for Job 3
galaxy.jobs DEBUG 2016-12-01 14:03:43,529 job 3 ended (finish() executed in (1015.809 ms))
galaxy.model.metadata DEBUG 2016-12-01 14:03:43,531 Cleaning up external metadata files

I justed startet a second docker image on a VM, but problem seem to remain (upload running since half an hour).  The log file reports several errors in the "slurmctld.log". If you have a log file of an instance with a normal job performance, we can find out the reason for this behaviour.


View save-deadline button

I can see a button to click to save the deadline when done with filling the deadline from

Live Link: http://reminders.zuri.chat
PR Link
https://github.com/zurichat/zc_plugin_reminder/pull/279


Create a new API for dealing with sample sheets

This PR adds a new module sample_sheet.py which contains utility functions to create and validate a sample sheet, as well as a new class KLSampleSheet that builds upon the sample_sheet package. This new class also supports merging of sample sheets to avoid manual processes of combining files via Excel.
There are a lot of changes in this PR, mostly due to removing a lot of tests and code from metapool.py. My recommendation is to focus on metapool/sample_sheet.py and the corresponding tests. And once you have a sense for how the sheets are created and validated, then move onto the notebooks which only update the API  usage. Lastly, there's two more additions in metapool/metapool.py, read_plate_map_csv can now read partial plates, and in metapool/prep.py there's a new function parse_prep used to read in prep files as safely as possible. These two functions allow us to combine multiple plates and preps in the amplicon-pooling notebook.
Changes to the sample sheets in the test data folder are all pretty much the same, they now include the Contact and Bioinformatics sections we discussed in the Sample Sheet Specification document.

Thanks @charles-cowart comments should be addressed now.

@ElDeveloper thanks! Will approve and merge as soon as the check passes.

Thanks so much @charles-cowart

On Sep 1, 2021, at 10:37 AM, Charles Cowart @.***> wrote:
Merged #10 into master.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.


Visualization: + and - branches are shifted

Both branches + and - are shifted to the previous block, see and compare

Fixed in the next pull request

It's not shifted anymore


a little mistake about the "_createText" method in the source code

v0.3.1 ->leaflet-dvf.js
   _createText: function (layer) {
        // var options = layer.options.text || {};
        var options = layer.options || {};
       ......
        var textNode = document.createTextNode(options.text);
       ......
     }

Thanks for pointing this out, and apologies for the confusion.  The source code is actually the intended behavior.  The layer text option tells the code that you want to display text on the SVG element and provides configuration options for that text element that will be displayed.  One parameter is text, which is the actual text to be displayed, but you can also provide a path option that tells the browser to display the text along a path (if the element is a line or polygon) or provide more advanced styling options or override specific SVG text element attributes for the SVG text element that gets created.  For example:
var thing = new L.<object>(<geometry>, {
   text: {
      text: 'Test',
      attr: {
         // Keys/values for SVG text element attributes to specify explicitly
      },
      style: {
         'fill':  '#123',
         'stroke': '#fff'
      },
      path: {
          startOffset: '65%'
      }
   }
}

Does that make sense?

Opps, It seems that I did not look carefully enough,sorry for it and appreciate your patience.Now I know how to use it

@xiallyspider can you please mark as resolved? :)


Hand Tracking Terribly Shaky on Vision Pro

Description

Video attached.
https://github.com/user-attachments/assets/bb41a4df-7ebb-46a6-accf-2a664174cd71
Hands are super jittery and fly all over the place when moving them. Prediction settings seem to make little difference. This has been this way for months so I’m not sure if this is “normal” behavior. It’s never not been this way for me

General Troubleshooting

[x] I carefully followed the instructions in the README and successfully completed the setup wizard
[x] I read the ALVR GitHub Wiki

Environment
Hardware
Note: for Linux, an upload to the hw-probe database is preferred: hw-probe -all -upload
CPU:
GPU:
GPU Driver Version:
Audio:
Installation
ALVR Version:
All versions
ALVR Settings File:
SteamVR Version:
All versions
Install Type:

[ ] Packaged (exe, deb, rpm, etc)
[ ] Portable (zip)
[ ] Source

OS Name and Version (winver on Windows or grep PRETTY_NAME /etc/os-release on most Linux distributions):

Issue persists

@shinyquagsire23


feat(menu): allow use of input components in menu

use attribute directive md-menu-input-item on input components (e.g.
md-slider, md-input, etc) inside of menu to prevent menu from closing when
components are focused via click or tab. this will allow users to use menu
as a short form to input data without redirecting to another page or
calling a dialog box. Add styles to menu.scss to space and stretch components
properly. Add additional card to menu-demo to demonstrate use with all input
components.
closes issue 2612

I signed it!


Use Workspace Settings for Tabs and EOL

Updated TOC to use workspace settings for Tabs and Line Endings.

Hi, I had updated the extension, you can update to latest version.


How to access amplify GraphQL API on lambda function?

** Which Category is your question related to? **
API
** What AWS Services are you utilizing? **
Lambda, amplify GraphQL
** Provide additional details e.g. code snippets **
I'd like to operate amplify GraphQL API(authorised by cognito user pool) on lambda function (with rest API by express).
I make resources by amplify CLI like this.
? Choose the function template that you want to use:
  CRUD function for Amazon DynamoDB table (Integration with Amazon API Gateway and Amazon DynamoDB)
❯ Serverless express function (Integration with Amazon API Gateway)

? Do you want to access other resources created in this project from your Lambda function? Yes
? Select the category
 ◯ auth
 ◯ analytics
❯◉ api
 ◯ storage
 ◯ function

Api category has a resource called mygraphql
? Select the operations you want to permit for mygraphql
 ◯ create
 ◉ read
 ◉ update
❯◯ delete

my schema.graphql is here.
type Secret
  @model
  @auth(
    rules: [
      { allow: groups, groups: ["Admin"] }
    ]
  ) {
  id: ID!
  secret: String!
}

I want to do "query GetSecret" and "mutation UpdateSecret" on lambda function.
How to write codes in amplify/backend/function/myfunc/src/app.js to Graphql queries and mutations?
I want to get example codes, but there are no codes on official documents.
I'm waiting for your great supoort. Thank you.

@hi120ki We launch multi-auth support for GraphQL API yesterday which supports IAM authorization (used by lambda to call your GraphQL API).
Please take a look at - https://aws-amplify.github.io/docs/cli-toolchain/quickstart#graphql-from-lambda for more details.

Is there a plan of something similar for DataStore? Right now it seems it's not possible to use it from lambda (throws an error window is not defined)

@Bulletninja  thank you!
May I just add a comment:
Amplify Docs on how to call GraphQL API suggest to use
...
const data = await new Promise((resolve, reject) => {
        const httpRequest = https.request({ ...req, host: endpoint }, (result) => {
            result.on('data', (data) => {
                resolve(JSON.parse(data.toString()));
            });
        });
        httpRequest.write(req.body);
        httpRequest.end();
    });
...

Please note the use of result.on('data'.... This seems to rusilt in failed JSON parsing if API call results a "large" payload [probably because it is a steam].
A workaround I found (inspired by an answer here) was to have the following:
...
const data = await new Promise((resolve, reject) => {
      const httpRequest = https.request({ ...reqGQL, host: endpoint }, (result) => {
        let dataString = "";
        result.on('data', (data) => {
          dataString += data.toString();
        });
        result.on('end', function () {
          resolve(JSON.parse(dataString));
        });
      });
      httpRequest.write(reqGQL.body);
      httpRequest.end();
    });
 ...

Please note the addition of result.on('end'.... This seems to help to "rather" the whole payload from the stream, and in turn prevents failure of parsing "large" responses.
FYI @attilah

That is not just a workaround — that is the correct way of doing it as I have commented in other issues around the same subject. AWS documentation is just too wrong and error-prone.

@houmark I'm not sure that I've heard of this reported anywhere. Looks like a quick fix to ehs sample in the docs. Would you mind opening up a PR?

@undefobj I mentioned it here:
https://github.com/aws-amplify/amplify-cli/issues/1678#issuecomment-589250260

@hi120ki We launch multi-auth support for GraphQL API yesterday which supports IAM authorization (used by lambda to call your GraphQL API).
Please take a look at - https://aws-amplify.github.io/docs/cli-toolchain/quickstart#graphql-from-lambda for more details.

@kaustavghosh06 hi!
This is currently not working for me.
Obviously it does not work out of the box when mocking (because, as far as I know, local AppSync server has no SSL enabled).
I used http module instead of the https one and manually setup the port. Now I’m getting a not authorized error.
Is this really the “official” way of accessing GraphQL APIs from Lambda using Amplify framework? Signers class in AWS SDK is not even typed. My API has Cognito authentication as default method and IAM as alternative. My function has configured access to the API.

Is this really the “official” way of accessing GraphQL APIs from Lambda using Amplify framework? Signers class in AWS SDK is not even typed. My API has Cognito authentication as default method and IAM as alternative. My function has configured access to the API.

I've got to agree, this is an absolutely trash way to call AppSync from Lambda. It's basically like requesting it from anywhere. It would be nice if there was a simpler API for this. Especially dealing with streams for such a small request ???

The example at https://aws-amplify.github.io/docs/cli-toolchain/quickstart#graphql-from-lambda uses Signers.V4
But according to: https://github.com/aws/aws-sdk-js/issues/1247 this is not recommended and is considered a private API?
Looks like https://github.com/mhart/aws4/ should be used?


Extend default lease duration, renew deadline and retry period for op…

…erator and controllers.

Looks good thank you. With these hard coded you could also do 2 * time.Minute or 90*time.Second, but this is ok as is.
/lgtm

@jmelis FYI this is our attempt to stop the controller restarts in stage. We fail to get that leader election maybe 1-4 times a day, seemingly since that catastrophe last week but we dont have a lot of logs before that to work with. We do see it in prod occasionally as well though much more rarely. Prior to this change it would try to write to the configmap for leader election for 2 seconds, up to a max of 10, and sometimes that fails. This seems weird so we're suspicious something is wrong, but we don't have access to any metrics to see.

/test e2e

/test e2e

/test e2e

/retest


Document Keyboard Selection

Documents the updateSelection action that is introduced in https://github.com/microsoft/terminal/pull/10824. The WT Preview tag is added.
Also adds a note to copy that the key chord is sent directly to the terminal if no selection is present (a unique behavior between updateSelection and copy).

Docs Build status updates of commit a53e9f1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

TerminalDocs/customize-settings/actions.md
:bulb:Suggestion
View
Details

TerminalDocs/customize-settings/actions.md

Line 1147, Column 2: [Suggestion-column-header-missing] Column headers are required for tables. Add appropriate header text, or remove any extra table cells that cause an extra column.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Speed up for forms slow on firefox (#2734)

Pull request opened by the merge tool on behalf of #2734

Merged into branches iso4 in 98f190423b9660c4bd4eeb806cefbf22b7485b88


Add RG28XX

Hello everyone, I've bought a ANBERNIC RG28XX recently and try to tinker it for fun.
(maybe build my own simple GBA game first, and finally build some native application if I could)
And I found this wonderful repo! Great thanks for the information.
Recently there is a new model called RG28XX and not yet added to the list, so I add to the readme (and also formating the table so that the column will be aligned in plain text)
Offical store link of RG28XX:
https://anbernic.com/products/rg28xx

Thanks for your PR ✨


C# DNN OpenCV Example

Required Info

Camera Model
D435/D455

Firmware Version
<IP_ADDRESS>

Operating System & Version
Win 10

Platform
PC

SDK Version
v2.41.0

Language
C#

Issue Description
In April of 2020 I decided to convert the DNN OpenCV C++ example to C#. I was able to do that successfully and it was working perfectly fine. I just recently tested the code again and I keep getting an error when testing on the D435 and D455. The example I based it on is found here:
https://github.com/IntelRealSense/librealsense/tree/master/wrappers/opencv/dnn
It crashes on the following line:
 colorMat = colorMat[crop];

With the following error:
"OpenCvSharp.OpenCVException: 0 <= _colRange.start && _colRange.start <= _colRange.end && _colRange.end <= m.cols"
I ran the DNN C++ example and it worked perfectly fine. No code has been changed since I last tested it in April of 2020.
To convert it, I copied line by line over to C# (see below and feel free to copy and test):
using System;
using System.Linq;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Intel.RealSense;
using OpenCvSharp;
using OpenCvSharp.Dnn;

namespace DNNTest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : System.Windows.Window
    {
        //all dnn setups
        const int inWidth = 300;
        const int inHeight = 300;
        const float WHRatio = inWidth / (float)inHeight;
        const float inScaleFactor = 0.007843f;
        const double meanVal = 127.5;
        //all objects that the DNN is looking for
        String[] classNames = {"background",
                             "aeroplane", "bicycle", "bird", "boat",
                             "bottle", "bus", "car", "cat", "chair",
                             "cow", "diningtable", "dog", "horse",
                             "motorbike", "person", "pottedplant",
                             "sheep", "sofa", "train", "tvmonitor"};
        //pipeline receives all video data
        private Pipeline pipeline;
        //used to help color the depth stream
        private Colorizer colorizer;
        //thread streaming
        private CancellationTokenSource tokenSource = new CancellationTokenSource();
        //intel realsense processing block
        private IProcessingBlock block;

        //Function to write the video frame to the screen
        static Action<VideoFrame> UpdateImage(Image img)
        {
            var wbmp = img.Source as WriteableBitmap;
            return new Action<VideoFrame>(frame =>
            {
                var rect = new Int32Rect(0, 0, frame.Width, frame.Height);
                wbmp.WritePixels(rect, frame.Data, frame.Stride * frame.Height, frame.Stride);
            });
        }

        //do all the work here
        public MainWindow()
        {
            InitializeComponent();

                //open the DNN and read it in
                Net net = CvDnn.ReadNetFromCaffe("MobileNetSSD_deploy.prototxt",
                               "MobileNetSSD_deploy.caffemodel");

                // The colorizer processing block will be used to visualize the depth frames.
                colorizer = new Colorizer();

                // Create and config the pipeline to strem color and depth frames.
                pipeline = new Pipeline();

                //set up the configurations for each stream
                var cfg = new Config();
                cfg.EnableStream(Stream.Depth, 640, 480);
                cfg.EnableStream(Stream.Color, 640, 480, Format.Rgb8);

                //start streaming the video
                var pp = pipeline.Start(cfg);
                var profile = pp.GetStream<VideoStreamProfile>(Stream.Color);
                Align align = new Align(Stream.Color);

                //determine crop size
                OpenCvSharp.Size cropSize;
                if(profile.Width / (float)profile.Height > WHRatio)
                {
                    cropSize = new OpenCvSharp.Size((int)(profile.Height * WHRatio), profile.Height);
                }
                else
                {
                    cropSize = new OpenCvSharp.Size(profile.Width, (int)(profile.Width / WHRatio));
                }

                OpenCvSharp.Rect crop = new OpenCvSharp.Rect(new OpenCvSharp.Point((profile.Width - cropSize.Width) / 2, (profile.Height - cropSize.Height) / 2), cropSize);

                //set up the window to display the video streams
                string windowName = "Display Image";
                Cv2.NamedWindow(windowName, WindowMode.AutoSize);

                while (Cv2.GetWindowProperty(windowName, WindowProperty.AutoSize) >= 0)
                {
                        var frames = pipeline.WaitForFrames();
                        //align the frame
                        frames = align.Process<FrameSet>(frames);

                        var colorFrame = frames.ColorFrame.DisposeWith(frames);
                        var depthFrame = frames.DepthFrame.DisposeWith(frames);

                        // If we only received new depth frame,
                        // but the color did not update, continue
                        ulong lastFrameNumber = 0;
                        if (colorFrame.Number == lastFrameNumber) continue;
                        lastFrameNumber = colorFrame.Number;

                        var colorMat = FrameToMat(colorFrame);
                        var depthMat = DepthFrameToMeters(pipeline, ref depthFrame);

                        //input blobs
                        OpenCvSharp.Size blobSize = new OpenCvSharp.Size(inWidth, inHeight);
                        Mat inputBlob = CvDnn.BlobFromImage(colorMat, inScaleFactor, blobSize, meanVal, false); //convert Mat to batch of images
                        net.SetInput(inputBlob, "data"); //set the network input
                        Mat detection = net.Forward("detection_out"); //compute the output

                        Mat detectionMat = new Mat(detection.Size(2), detection.Size(3), MatType.CV_32F, detection.Ptr());

                        //crop both color and depth frames
                        colorMat = colorMat[crop]; //CRASHES RIGHT HERE WITH ABOVE ERROR
                        depthMat = depthMat[crop];

                        //confidence threshold
                        float confidenceThreshold = 0.8f;

                        for (int i = 0; i < detectionMat.Rows; i++)
                        {
                            float confidence = detectionMat.At<float>(i, 2);

                            if (confidence > confidenceThreshold)
                            {
                                UIntPtr objectClass = (UIntPtr)(detectionMat.At<float>(i, 1));

                                int xLeftBottom = (int)(detectionMat.At<float>(i, 3) * colorMat.Cols);
                                int yLeftBottom = (int)(detectionMat.At<float>(i, 4) * colorMat.Rows);
                                int xRightTop = (int)(detectionMat.At<float>(i, 5) * colorMat.Cols);
                                int yRightTop = (int)(detectionMat.At<float>(i, 6) * colorMat.Rows);

                                OpenCvSharp.Rect rect = new OpenCvSharp.Rect(xLeftBottom, yLeftBottom, (xRightTop - xLeftBottom), (yRightTop - yLeftBottom));
                                OpenCvSharp.Rect rect2 = new OpenCvSharp.Rect(0, 0, depthMat.Cols, depthMat.Rows);
                                rect = rect & rect2;
                            // Calculate mean depth inside the detection region
                            // This is a very naive way to estimate objects depth
                            // but it is intended to demonstrate how one might
                            // use depth data in general
                                Scalar m = Cv2.Mean(depthMat.SubMat(rect));
                                txtTimeStamp.Text = m[0] + " meters away";

                                //draw the rectangle
                                Scalar sc = new Scalar(0, 255, 0);
                                Cv2.Rectangle(colorMat, rect, sc);
                                OpenCvSharp.Size labelSize = Cv2.GetTextSize(txtTimeStamp.Text, HersheyFonts.HersheySimplex, 0.5, 1, out int baseLine);
                                var center = (rect.BottomRight + rect.TopLeft) * 0.5;
                                center.X = center.X - labelSize.Width / 2;

                                OpenCvSharp.Point pointLabel = new OpenCvSharp.Point(center.X, center.Y - labelSize.Height);
                                OpenCvSharp.Size recSize = new OpenCvSharp.Size(labelSize.Width, labelSize.Height + baseLine);
                                OpenCvSharp.Rect recLabel = new OpenCvSharp.Rect(pointLabel, recSize);
                                Cv2.Rectangle(colorMat, recLabel, new Scalar(255, 255, 255));
                                Cv2.PutText(colorMat, txtTimeStamp.Text, center, HersheyFonts.HersheySimplex, 0.5, new Scalar(0, 0, 0));

                            }
                        }
                        Cv2.ImShow(windowName, colorMat);
                }
        }

        //Function based off of frame_to_mat https://github.com/IntelRealSense/librealsense/blob/master/wrappers/opencv/cv-helpers.hpp and converted to C#
        private Mat FrameToMat(Intel.RealSense.Frame f)
        {
            var vf = f as VideoFrame;
            int w = vf.Width;
            int h = vf.Height;
            Mat m = null;
            if (vf.Profile.Format == Format.Bgr8)
            {
                m = new Mat(w, h, MatType.CV_8UC3, f.Data);
                return m;
            }
            else if (vf.Profile.Format == Format.Rgb8)
            {
                m = new Mat(w, h, MatType.CV_8UC3, f.Data);
                m.CvtColor(ColorConversionCodes.RGB2BGR);
                return m;
            }
            else if (vf.Profile.Format == Format.Z16)
            {
                m = new Mat(w, h, MatType.CV_16UC1, f.Data);
                return m;
            }
            else if (vf.Profile.Format == Format.Y8)
            {
                m = new Mat(w, h, MatType.CV_8UC1, f.Data);
                return m;
            }
            else if (vf.Profile.Format == Format.Disparity32)
            {
                m = new Mat(w, h, MatType.CV_32FC1, f.Data);
                return m;
            }
            else
            {
                MessageBox.Show("Error occurred!");
                return m;
            }
        }

        //Function to convert depth frame to a matrix of doubles with distances in meters.
        //Function based off of depth_frame_to_meters https://github.com/IntelRealSense/librealsense/blob/master/wrappers/opencv/cv-helpers.hpp and converted to C#
        private Mat DepthFrameToMeters(Pipeline pipeline, ref DepthFrame df)
        {
            Intel.RealSense.Frame f = df as Intel.RealSense.Frame;
            Mat dm = FrameToMat(f);
            var depth_scale = pipeline.ActiveProfile.Device.Sensors.First().DepthScale;
            dm = dm * depth_scale;
            return dm;
        }

        //close the threading source
        private void control_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            tokenSource.Cancel();
        }

        //function that sets up the video windows
        private void SetupWindow(PipelineProfile pipelineProfile, out Action<VideoFrame> depth, out Action<VideoFrame> color)
        {
            using (var p = pipelineProfile.GetStream(Stream.Depth).As<VideoStreamProfile>())
                imgDepth.Source = new WriteableBitmap(p.Width, p.Height, 96d, 96d, PixelFormats.Rgb24, null);
            depth = UpdateImage(imgDepth);

            using (var p = pipelineProfile.GetStream(Stream.Color).As<VideoStreamProfile>())
                imgColor.Source = new WriteableBitmap(p.Width, p.Height, 96d, 96d, PixelFormats.Rgb24, null);
            color = UpdateImage(imgColor);
        }
    }
}

I apologize for a sort of source code dump, but I have been debugging for a good while and I don't understand what could have changed to cause this error to keep occurring. Am I missing something?

Hi @bmils   What was the most recent librealsense SDK version that your code worked on, please?

Hi @bmils   What was the most recent librealsense SDK version that your code worked on, please?

@MartyG-RealSense I can't recall the exact version, but whatever the most recent SDK version was in April 2020.
I installed the entire v2.41.0 SDK from https://github.com/IntelRealSense/librealsense/releases (I am assuming that also updates the C# wrapper or does it not?). Then I replaced the DLLs that were in my project with the newly installed DLLs from the 2.41.0 SDK. I then rebuilt the solution and ran it with these results.
I do not have the UWP driver installed, so that shouldn't be an issue.

@MartyG-RealSense I can't recall the exact version, but whatever the most recent SDK version was in April 2020.
I installed the entire v2.41.0 SDK from https://github.com/IntelRealSense/librealsense/releases (I am assuming that also updates the C# wrapper or does it not?). Then I replaced the DLLs that were in my project with the newly installed DLLs from the 2.41.0 SDK. I then rebuilt the solution and ran it with these results.
I do not have the UWP driver installed, so that shouldn't be an issue.

If your most recent SDK version that the project worked with was installed in April 2020 then it was likely SDK version 2.34.0, as the next version 2.35.0 was not released until May 31 2020.
The transition between 2.34.0 and 2.35.0 was a notable one for the reason that 2.34.0 produced continuously generating timing errors for some RealSense users.
Because the project apparently jumped from 2.34.0 to 2.41.0, it is difficult to isolate the point at which the project broke.  So I would recommend testing different SDK versions in jumps of two (2.36, 2.38.1, 2.40.0).  That should help to identify the point at which compatibility with your C# project ended.
I am not able to compile and test code, only read scripts posted on the forum and advise on them.

If your most recent SDK version that the project worked with was installed in April 2020 then it was likely SDK version 2.34.0, as the next version 2.35.0 was not released until May 31 2020.
The transition between 2.34.0 and 2.35.0 was a notable one for the reason that 2.34.0 produced continuously generating timing errors for some RealSense users.
Because the project apparently jumped from 2.34.0 to 2.41.0, it is difficult to isolate the point at which the project broke.  So I would recommend testing different SDK versions in jumps of two (2.36, 2.38.1, 2.40.0).  That should help to identify the point at which compatibility with your C# project ended.
I am not able to compile and test code, only read scripts posted on the forum and advise on them.

@MartyG-RealSense Thanks for looking into it, I appreciate the help. I'll do what you suggested and try to test different SDK versions and comment on this if I get it working.

@MartyG-RealSense Thanks for looking into it, I appreciate the help. I'll do what you suggested and try to test different SDK versions and comment on this if I get it working.

Hi @bmils   Do you require further assistance with this case, please?   Thanks!

Hi @MartyG-RealSense I do not require any further assistance with this. Closing the issue now, thanks.

Thanks very much @bmils for the update!


Undefined reference to utils::Path and other methods

other.cpp:160: undefined reference to `utils::Path::concat(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test.cpp:129: undefined reference to `utils::Path::getName[abi:cxx11]() const'
test.cpp:647: undefined reference to `utils::Path::getExtension[abi:cxx11]() const'
test.cpp:995: undefined reference to `filament::viewer::writeJson[abi:cxx11](filament::viewer::ColorGradingSettings const&)'
test.cpp.o: in function `main::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#10}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const':
test.cpp:1026: undefined reference to `utils::Path::Path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test.cpp.o: in function `main':
test.cpp:612: undefined reference to `utils::operator<<(std::ostream&, utils::Path const&)'
test.cpp:618: undefined reference to `utils::Path::getExtension[abi:cxx11]() const'

To Reproduce
Build utils and viewer libraries for Linux and attempt to link with utils::Path(), utils::Path::concat(), utils::Path::getName(), utils::Path::getExtension(), viewer::writeJson()...
Desktop
arch Linux

What are you building exactly and how?

Thanks for the follow-up. The source code above is the gltf_viewer.cpp sample.

In scouring the Issues for a couple weeks, I gathered that I'm not the first to try using filamentapp sources slated for rework (https://github.com/google/filament/issues/2287) so it's not that I expect them to build yet without changes, but I'm trying to eliminate potential source of error; manually sussing out dependencies seems error-prone and hard to look at.

The Path class and its API is properly publicly exported, did you not link against libutils?

The Path class and its API is properly publicly exported, did you not link against libutils?

Apologies, I could have added that the API does seem properly publicly exported, the test apps compile, and I am linking against the installed (linux) libutils. Maybe there's a problem somewhere in my promiscuous including and linking to filamentapp and every supporting internal/external library..

Apologies, I could have added that the API does seem properly publicly exported, the test apps compile, and I am linking against the installed (linux) libutils. Maybe there's a problem somewhere in my promiscuous including and linking to filamentapp and every supporting internal/external library..

I'm currently having the exact same issue. Could you explain what specific library was incompatible with filament?

I'm currently having the exact same issue. Could you explain what specific library was incompatible with filament?

I think the error was most likely caused by my inadvertently attempting to link clang-produced libraries later with gcc.

I think the error was most likely caused by my inadvertently attempting to link clang-produced libraries later with gcc.

Okay, now I understand. It seems that utils::Path depends on std::string, which makes linking filament (compiled with libc++) with another library compiled with libstdc++ difficult. (Only the lower level parts of libstdc++ and libc++ seem to be compatible with each other, and STL containers aren't.) I think there were some efforts to remove any STL ABI dependencies (such as https://github.com/google/filament/pull/1050), but it still seems like the process is incomplete. Anyways, thanks for the tip!

Thanks for the details!