Default Fullscreen Mode

There should be a way of setting the display window to fullscreen by default, hiding the menu. This is useful in the situation that core/desktop is installed on a laptop, and you just want to control it from a phone or laptop straight away.

Could you explain this a little more? As I understand you are asking for the ability to start the program in full screen with no navigator/controller being shown. If you're on windows and are automating the task you can use AutoHotKey to Ctrl+F and Ctrl+H after the window opens. It is not ideal, but perhaps we can look into improving this via native / gui options in the future.

^^ as you've said. AHK is what I had planned to use, but it's obviously not ideal for Gurdwaras or non-technical users. I don't mind chucking in a PR if this project is still in active development.

It should not be too hard to add two options in settings:

Open in fullscreen
Hide controller on start

Would very much appreciate any PRs, already saw your dockerise request which I will look into later as I'm on vacation currently. Yes, this project is "active" and we are often thinking about improvements/overarching directions.

Awesome. Is there anywhere that we can discuss general direction etc? Would love to suggest a few things, and give my feedback from a technical and user experience perspective.

Hi, your website gave a "mail server down" error. Please send an email to the team with contact info.

Dev branch: Do we need to add gui options for "open in fullscreen" and "hide controller on start"?
If so, both options should be set to "true" by default

Should the controller be hidden by default on start?

Yes, but not minimized
Same with titlebars or any other UI elements
Only thing that should be seen is a bg (by theme) and the title "Shabad OS" animation in the middle

Can rename "Hide controller on start" to "Hide UI on start"

@bhajneet would this just be for the main window?

That would be a good start. Ultimately, it should apply to any "presenter" window that is opened on startup. Not sure what the spec is for #456. I would imagine that the "main window" is the full screen controller (which is different from this issue), and that the other displays would all be presenters, which if this issue's feature is toggled on would start up in full screen windows.
Goal is for a gurdwara to be able to start their "server/PC" without having to actually configure anything. They can then use their mobile devices / alternate PCs to control the projectors.

@bhajneet  im testing this right now and if i set the fullscreen option to true, everything pops in fullscreen ( the app, settings, etc). Is this what we want?

We only want the initial windows that are loaded onServerReady to be fullscreened

Im not sure why other windows are also being full screened (settings etc) even mainWindow is only one

You might be setting a global value. Make sure you instead iterate over getDisplayWindows export from windows.js and call fullscreen for each of those.

it still doesnt exclude the settings for some reason...

playing around with a workaround for mac rn


[Fix] Augment reality to show hidden infrastructure empty map

Description
This PR removes an unneeded NavigationView that prevented the map view from displaying on iPad in the Augment reality to show hidden infrastructure sample. The rest of the changes are just resulting indentation updates.
Linked Issue(s)

N/A quick fix

How To Test

Add a pipe to the map.
Ensure the AR scene view opens on both iPad and iPhone by tapping the camera button.

@dfeinzimer in case you missed this 👀

Thank you guys!


[Bug]: Highlighting of query syntax is different when this is embedded

Description

From clause usages goes from pink to blue. Is this expected?
Steps to Reproduce
No response
Affected Version(s)
2201.3.0-rc3
OS, DB, other environment details and versions
No response
Related area
-> Editor
Related issue(s) (optional)
No response
Suggested label(s) (optional)
No response
Suggested assignee(s) (optional)
No response

We should improve this. @hevayo @NipunaRanasinghe who can take a look at this?


AxoCover does not detect Visual Studio 2017 (aka MSTest V2) Test projects

While AxoCover does detect unit tests for my existing (pre Visual Studio 2017) projects, it does not seem to work with MSTest V2
Here are the steps to reproduce

Create a new project with visual studio 2017
Create a new test project with visual studio 2017 (or just reference MSTest.TestAdapter and MSTest.TestFramework within any project)
While MSTest Window automatically detects the unit tests, AxoCover does not.

Happens even with 1.0.70 installed, it looks like 9f1e9a0c9e4cb918c4632ba271ce2c16f67e46da should address this but it doesn't.

Thanks for the report, I will investigate it tomorrow.

That is weird, it is working for me:

Can you please verify that you have the latest version?

That is really weird,
I basically just did the same:

Create a new project with visual studio 2017
Create a new test project with visual studio 2017

and it works out of the box while my ConsoleApp1 still doesn't. I really can't tell why.
Even a diff of the project files shows nothing different.


Test GH action -> semantic release

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


ScrollViewer + SelectableTextBlock: app just silently dies when I try to show about 1-2 MB of text

Describe the bug
I am trying to display 1-2 MB of text with the help of SelectableTextBlock + ScrollViewer. But the application just crashes.
To Reproduce
<Border>
	<ScrollViewer HorizontalScrollBarVisibility="Disabled">
		<SelectableTextBlock Margin="5" Text="{Binding Text}"
						 TextWrapping="Wrap"></SelectableTextBlock>
	</ScrollViewer>
</Border>

Expected behavior
Text display + possibility of scrolling.
Avalonia version
11.0.10
OS
Windows
Additional context
No response

TextBlock is not virtualized, it is not designed to display huge text.

@rabbitism Any alternative?
Understand about huge text but we speak about 1 MB, not 1 GB.

The general recommendation is to use Avalonia Edit which is virtualised.
https://github.com/AvaloniaUI/AvaloniaEdit
But it's more of a code editor than a text block. Although if you need to display 1mb of text then I would argue you should be using something like that anyway.

@thevortexcloud Thanks, I've already thought about AvaloniaEdit and it seems it is working for my purposes. Thanks, will close it for now.


Add darwin-arm64-tar and no-jdk-darwin-arm64-tar archive distributions.

Signed-off-by: Cédric Pelvet<EMAIL_ADDRESS>Description
Add darwin-arm64-tar and no-jdk-darwin-arm64-tar flavors for the archives distribution.
Issues Resolved
#1667
Check List

[x] New functionality includes testing.

[x] All tests pass

[x] New functionality has been documented.

[x] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

start gradle check

start gradle check

Looking at the build error, looks like an issue with networking.
> Task :test:fixtures:s3-fixture:composeUp

ERROR: for 56aa93ed60e3e11b06e2067e06b0dd8c_s3-fixture__s3-fixture-with-session-token_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for 56aa93ed60e3e11b06e2067e06b0dd8c_s3-fixture__s3-fixture-repositories-metering_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for 56aa93ed60e3e11b06e2067e06b0dd8c_s3-fixture__s3-fixture-other_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)

ERROR: for 56aa93ed60e3e11b06e2067e06b0dd8c_s3-fixture__s3-fixture-with-ec2_1  UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
Creating 56aa93ed60e3e11b06e2067e06b0dd8c_s3-fixture__s3-fixture-with-ecs_1              ... done

Not sure how my changes could impact this. Or maybe an issue on GitHub's side

I had a deeper look at what's happening by running locally and it looks like there is something wrong with tests around BWC:
Project :qa:full-cluster-restart declares a dependency from configuration 'opensearch_distro_extracted_testclusters-qa-full-cluster-restart-v1.3.0-1-1.3.0-' to configuration 'expanded-darwin-arm64-tar' which is not declared in the descriptor for project :distribution:bwc:minor.

I spent some time in these tests but I cannot understand where this comes from. Can anyone help here? Thanks

I had a deeper look at what's happening by running locally and it looks like there is something wrong with tests around BWC:
Project :qa:full-cluster-restart declares a dependency from configuration 'opensearch_distro_extracted_testclusters-qa-full-cluster-restart-v1.3.0-1-1.3.0-' to configuration 'expanded-darwin-arm64-tar' which is not declared in the descriptor for project :distribution:bwc:minor.

I spent some time in these tests but I cannot understand where this comes from. Can anyone help here? Thanks

@saratvemulapalli is familiar with this, help?

This needs a rebase please.

@sharp-pixel Do you want help with this? Want to finish it up?

I had a deeper look at what's happening by running locally and it looks like there is something wrong with tests around BWC:
Project :qa:full-cluster-restart declares a dependency from configuration 'opensearch_distro_extracted_testclusters-qa-full-cluster-restart-v1.3.0-1-1.3.0-' to configuration 'expanded-darwin-arm64-tar' which is not declared in the descriptor for project :distribution:bwc:minor.

I spent some time in these tests but I cannot understand where this comes from. Can anyone help here? Thanks

@saratvemulapalli is familiar with this, help?

I somehow missed this. Will take a look.

@sharp-pixel could you rebase this and merge from main?
We could run another gradle check and start debugging.

@sharp-pixel could you rebase this and merge from main? We could run another gradle check and start debugging.

I rebased my changes. I did more debugging on my side from on an Apple Silicon Mac, and it looks like the BWC process is checking compatibility with previous versions (starting from 7.x) with the darwin-arm4 arch. The problem is that these distributions don't exist. I would need to explicitely say that the first darwin-arm64 version is this one for the backward compatibility checks, but couldn't find out how.

@sharp-pixel Do you want help with this? Want to finish it up?

Yes, sorry for the delay, was checking more things on my side + holidays

Beware that even though all tests pass here, ./gradlew check is failing on an M1 mac due to BWC (see my previous comment about missing previous versions in this new architecture)

Beware that even though all tests pass here, ./gradlew check is failing on an M1 mac due to BWC (see my previous comment about missing previous versions in this new architecture)

Yes, this is a step forward, but we have more work to do to CI/CD for Darwin.

@sharp-pixel We have a parent item, https://github.com/opensearch-project/opensearch-build/issues/38, so if there's something we can do here next to advance the big picture?

@sharp-pixel could you rebase this and merge from main? We could run another gradle check and start debugging.

I rebased my changes. I did more debugging on my side from on an Apple Silicon Mac, and it looks like the BWC process is checking compatibility with previous versions (starting from 7.x) with the darwin-arm4 arch. The problem is that these distributions don't exist. I would need to explicitely say that the first darwin-arm64 version is this one for the backward compatibility checks, but couldn't find out how.

Could you open an issue with the failures?
I believe we have 2 steps here:

Run the CI in Darwin Arm64
Fix BWC for Darwin Arm64

Run the CI in Darwin Arm64

https://github.com/opensearch-project/OpenSearch/issues/1449

Fix BWC for Darwin Arm64

I'll let @sharp-pixel do that and describe it nicely ;)

Hello, I was wondering if this could be applied to the 1.3.x branch as well? I would like to be able to install that version specifically on my Mac.

@radar AFAIK there are no more 1.3.x releases except for high sev security patches, https://github.com/orgs/opensearch-project/projects/1

No problems @dblock, thank you for the headsup.


Issue #79 - Complete or replace default options

Add the --replace-defaults option to backup and restoration commands to control the behavior of the --extra-options option.

After our discussion IRL and the changes I've made on the code, I prefer to close this PR and create a new one.


Photoshop Crack | Adobe Photoshop Crack

PHOTOSHOP-CC-FREE-2024

PHOTOSHOP-CRACK
Adobe Photoshop is a complete solution for professional digital imaging that contains the most advanced imaging tools and new creative options that dramatically increase productivity. Edit images with exceptional precision, use new intuitive tools and workflows to create three-dimensional graphics, two-dimensional projects, and movies.

PHOTOSHOP-CC-FREE-2024

PHOTOSHOP-CRACK
Adobe Photoshop is a complete solution for professional digital imaging that contains the most advanced imaging tools and new creative options that dramatically increase productivity. Edit images with exceptional precision, use new intuitive tools and workflows to create three-dimensional graphics, two-dimensional projects, and movies.
**  **


define more MSG_NOSIGNAL

follow-up on rust-lang/rust#36824

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

@bors: r+

:pushpin: Commit a59d299 has been approved by alexcrichton

:hourglass: Testing commit a59d299 with merge 5a17b4a...

:sunny: Test successful - status-appveyor, travis
Approved by: alexcrichton
Pushing 5a17b4a733a22d445fdd63326f826fcd8a584328 to master...


the pod-cpu-hog function does not work.(helper pod timeout err)

What happened:
I want to execute the pod-cpu-hog function.
when the execution is applied, it is deployed in the order of runner -> experience pod -> helper pod, and it ends sequentially.
However, if you look at the log of the helper pod, you can see that timeout has occurred, and the details are as follows.
time="2024-01-23T06:48:12Z" level=info msg="Helper Name: stress-chaos"
time="2024-01-23T06:48:12Z" level=info msg="[PreReq]: Getting the ENV variables"
time="2024-01-23T06:48:12Z" level=info msg="container ID of amcs container, containerID: d199bd63e5d39b1e02710250cc8abb04ee59c35a17aa1ee7706ddcaadf2a98e9"
time="2024-01-23T06:48:12Z" level=info msg="[Info]: Container ID=d199bd63e5d39b1e02710250cc8abb04ee59c35a17aa1ee7706ddcaadf2a98e9 has process PID=1572728"
time="2024-01-23T06:48:12Z" level=info msg="[Info]: Details of Stressor:" CPU Core=1 Timeout=30
time="2024-01-23T06:48:12Z" level=info msg="[Info]: starting process: pause nsutil -t 1572728 -p -- stress-ng --timeout 30s --cpu 1"
time="2024-01-23T06:48:12Z" level=info msg="[Info]: Sending signal to resume the stress process"
time="2024-01-23T06:48:15Z" level=info msg="[Wait]: Waiting for chaos completion"
time="2024-01-23T06:49:15Z" level=info msg="[Timeout] Stress output: "
time="2024-01-23T06:49:15Z" level=info msg="[Cleanup]: Killing the stress process"
time="2024-01-23T06:49:15Z" level=info msg="[Info]: Stress process removed sucessfully"
time="2024-01-23T06:49:15Z" level=fatal msg="helper pod failed, err: the stress process is timeout after 60s"
Please advise me how to analyze and resolve the timeout.
Anything else we need to know?:
And the description of chaosresult is counted as pass as follows.
However, the results did not cause any disability.
Spec:
Engine:      litmus-chaos
Experiment:  pod-cpu-hog
Status:
Experiment Status:
Fail Step:                 N/A
Phase:                     Completed
Probe Success Percentage:  100
Verdict:                   Pass
History:
Failed Runs:   0
Passed Runs:   3
Stopped Runs:  0
Targets:
Chaos Status:  reverted
Kind:          pod
Name:          test-9wqgp
Events:
Type    Reason   Age    From                      Message

Normal  Awaited  8m15s  pod-cpu-hog-mzavhp-zlcjr  experiment: pod-cpu-hog, Result: Awaited
Normal  Pass     6m58s  pod-cpu-hog-mzavhp-zlcjr  experiment: pod-cpu-hog, Result: Pass
Normal  Awaited  5m38s  pod-cpu-hog-vc7c3q-bhzpw  experiment: pod-cpu-hog, Result: Awaited
Normal  Pass     4m19s  pod-cpu-hog-vc7c3q-bhzpw  experiment: pod-cpu-hog, Result: Pass
On the other hand, pod-cpu-hog-exec normally causes chaos.
I want to get the same result in two experiments.
time="2024-01-23T06:59:50Z" level=info msg="Experiment Name: pod-cpu-hog-exec"
time="2024-01-23T06:59:50Z" level=info msg="[PreReq]: Getting the ENV for the  experiment"
time="2024-01-23T06:59:50Z" level=info msg="[PreReq]: Updating the chaos result of pod-cpu-hog-exec experiment (SOT)"
time="2024-01-23T06:59:51Z" level=info msg="The application information is as follows" Namespace=test Label="app=test" Chaos Duration=120 Ramp Time=0
time="2024-01-23T06:59:51Z" level=info msg="[Status]: Verify that the AUT (Application Under Test) is running (pre-chaos)"
time="2024-01-23T06:59:51Z" level=info msg="[Status]: Checking whether application containers are in ready state"
time="2024-01-23T06:59:51Z" level=info msg="[Status]: The Container status are as follows" Readiness=true container=test Pod=test-f85d79bc5-xldzl
time="2024-01-23T06:59:53Z" level=info msg="[Status]: Checking whether application pods are in running state"
time="2024-01-23T06:59:53Z" level=info msg="[Status]: The status of Pods are as follows" Pod=test-f85d79bc5-xldzl Status=Running
time="2024-01-23T06:59:55Z" level=info msg="[Info]: chaos candidate of kind: deployment, name: test, namespace: test"
time="2024-01-23T06:59:55Z" level=info msg="[Chaos]:Number of pods targeted: 1"
time="2024-01-23T06:59:55Z" level=info msg="Target pods list for chaos, [test-f85d79bc5-xldzl]"
time="2024-01-23T06:59:55Z" level=info msg="[Chaos]: The Target application details" Target Container=test Target Pod=test-f85d79bc5-xldzl CPU CORE=10
time="2024-01-23T06:59:55Z" level=info msg="[Chaos]:Waiting for: 120s"
time="2024-01-23T07:01:55Z" level=info msg="[Chaos]: Time is up for experiment: pod-cpu-hog-exec"
time="2024-01-23T07:02:13Z" level=info msg="[Confirmation]: pod-cpu-hog-exec chaos has been injected successfully"
time="2024-01-23T07:02:13Z" level=info msg="[Status]: Verify that the AUT (Application Under Test) is running (post-chaos)"
time="2024-01-23T07:02:13Z" level=info msg="[Status]: Checking whether application containers are in ready state"

my litmus version is 1.13.8

Hi @hmi, Can you try using the latest version of this experiment we have handled such issues in one of the later version. Even with 2.x or 3.x you should be able to run it.
Closing the issue feel free to reopen if you still face any issues in the latest one.


Use Prow env variable to detect if we run under the CI environment

What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

/retest


build(backend): Update Rust version

A new Rust version available.

#3786 should make the CI pass here.


ERROR: 3an6NlxPo84: "token" parameter not in video info for unknown reason; please report this issue on https://yt-dl.org/bug

youtube-dl -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2<IP_ADDRESS>
[debug] Python version 3.5.3 - Linux-4.9.0-8-amd64-x86_64-with-BunsenLabs-9.6-helium
[debug] exe versions: ffmpeg 3.2.12-1, ffprobe 3.2.12-1, rtmpdump 2.4
[debug] Proxy map: {}
i check on apt-get and youtube-dl is the latest version

I am facing the same issue

Same here

same as well

All videos are pulling this error in my testing. Possibly something on youtube's end has just been deployed and its broken the current yt-dl build.

Same for me. Tested on yt-dl 2018.09.10, 2019.01.17 and 2019.04.24 with the same result
Video example: https://www.youtube.com/watch?v=xeQe-TemEfI
But looiks like it can be reproduced on any video

All videos are pulling this error in my testing. Possibly something on youtube's end has just been deployed and its broken the current yt-dl build.

this appears to be correct, i tried youtube-dl with this result:
[generic] watch?time_continue=175: Requesting header
[redirect] Following redirect to https://www.youtube.com/
[generic] www.youtube: Requesting header
WARNING: Falling back on generic information extractor.
[generic] www.youtube: Downloading webpage
[generic] www.youtube: Extracting information
ERROR: Unsupported URL: https://www.youtube.com/
youtube itself is blocking the method

@garvint update youtube-dl and read https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command.

@remitamine  seems like I have the latest version and still have the same issue. Should I file another bug report?

if you're getting the same error then you're not using the latest version(2019.04.24).


[CCI] bump caniuse-lite package

Currently, when you attempt to run ESLint you will get a warning
  npx browserslist@latest --update-db
  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating

###Expected behavior
No warning
###Fix
Running the command mentioned in the warning should work

To me this looks like a good first issue for new contributors?

(Or I can solve it, if no one would pick it up for a couple days)

Go for it!


GetMoneyModel hook

It's can be useful when different amount of money must have different models. It's can make the process of transferring money more realistic when, for example, a dollar looks like a dollar and five dollars looks like five dollars and so on.

Nice suggestion, however please make a pull request to the 1.2.3-wip branch, as that is our working grounds for the next update.


Footstep Toggle Foreign Language & UpdateChecker Grammar

Wanting to get CM out in a couple days. Think we can get this put in by then?

FYI you might want to drop the commit https://github.com/tsunamods-codes/7th-Heaven/pull/29/commits/465f6e1f62bf75c19f2d245b9f6861ba9f6447fb in favor of #34
This should provide your own mod the ability to autoconfigure the user environment and ensure it will always work no matter what :)

I would tend to agree but I would like @wturner859's opinion, see if he can make a mod that will do this using the new Canary :D

Problem with that is if I add the "footsteps=true" to my mod.xml, it would be an "always on" thing... There's no way for the user to decide if they want them or not.
It's nice for being able to automatically set audio.dat to VGMStream, but not so much for footsteps.

Understood. I'm not sure how the 7th mod.xml conditionals work for that layer so we might check that and implement accordingly to allow you configure the driver, depending on what your mod configuration looks like.
Regarding #28 you've deleted the repo so it was impossible to merge it anyway. Therefore please add that same change in this PR. Thank you.

Currently, since the footsteps feature is just re-routed sound 159's, the footsteps are just files included with the rest of the regular sounds... If I made a folder of just footstep sounds and made it conditional in the mod config (like I do for UI sounds or whatever) and then turned it off so that all the new sounds effectively aren't in the game, the game would just fall back on to the original 159 on every field (assuming footsteps=true) and still play footsteps... What we would need is essentially the toggle submitted in this PR itself to be toggleable in the mod config by the user, or for footsteps=true ONLY if a certain mod option is on, not if the mod is just active. something like:
  <FFNxConfig>     <use_external_sfx>true</use_external_sfx> 		<ActiveWhen>              <And>               <Option>Footsteps = 1</Option>              </And>          </ActiveWhen>   </FFNxConfig>

@julianxhokaxhiu @wturner859 i would hope this would work using the options system that we currently have, where the options get present in a UI when you double click on them may be a dedicated section for FFNx controls, the same as like ESUI and such, we provide users with the options?

@julianxhokaxhiu @wturner859 i would hope this would work using the options system that we currently have, where the options get present in the mod settings UI when you double click on them may be a dedicated section for FFNx controls, the same as like ESUI and such, we provide users with the options?

That's essentially what we have with with driver settings and what this PR was for in the first place, kind of, right?... Also I just realized, where this footstep feature isn't just a Cosmo Memory feature and can be used without mods, whether we get this auto-toggle working or not, would it not still make sense to have the submitted toggle placed in those driver settings for those people?

Sorry I updated my based on your updates, so removed that comment @wturner859 if your want to reply your more than welcome to :D

@julianxhokaxhiu with the above, while I like the idea think it's badly formatted in terms of adding size to a mod.xml and parsing speeds, but would something like
<FFNxConfig>
    <ff7_footsteps option="footsteps">true</ff7_footsteps>
</FFNxConfig>

So that when the option attribute is present it uses that option if that option exists otherwise defaults to the value inside the tag in this case true,
This means the default options system works, and can feed the values into the FFNx Config

Mod options are either in an "off" or "on" state (or a list of more than 2 options)
It would need to know that the mod option "footsteps" is "on" before it turns FFNx to true, not just that the the option is present, otherwise we're where we started.
so maybe:
> <FFNxConfig>
>     <ff7_footsteps option="footsteps=1">true</ff7_footsteps>
> </FFNxConfig>

@julianxhokaxhiu with the above, while I like the idea think it's badly formatted in terms of adding size to a mod.xml and parsing speeds, but would something like
<FFNxConfig>
    <ff7_footsteps option="footsteps">true</ff7_footsteps>
</FFNxConfig>

So that when the option attribute is present it uses that option if that option exists otherwise defaults to the value inside the tag in this case true,
This means the default options system works, and can feed the values into the FFNx Config

Mod options are either in an "off" or "on" state (or a list of more than 2 options)
It would need to know that the mod option "footsteps" is "on" before it turns FFNx to true, not just that the the option is present, otherwise we're where we started.
so maybe:
> <FFNxConfig>
>     <ff7_footsteps option="footsteps=1">true</ff7_footsteps>
> </FFNxConfig>

No the options are controlled by the user by double-clicking on a mod in 7th heaven, so you point it at the option has a default value but the user can override the default value so in your footsteps mod you would create the option, and then tell the FFFNx to use that option's value, if you look at Qhimm - Gameplay Mod so install it then double click on it you will see how the options system works in 7th heaven

I'm aware how 7h's mod options system works. I don't need to download gameplay. I've made several mods with more complex configs than gameplay lol... I think you're confused as this isn't a "footsteps mod" we're talking about... the footsteps are just a feature of a much larger mod which can turned on or off, and only if that particular footstep option is turned on would we want ffnx to turn footsteps on.

I'm aware how 7h's mod options system works. I don't need to download gameplay. I've made several mods with more complex configs than gameplay lol... I think you're confused as this isn't a "footsteps mod" we're talking about... the footsteps are just a feature of a much larger mod which can turned on or off, and only if that particular footstep option is turned on would we want ffnx to turn footsteps on.

Ok, I don't know who you are or what your level is so I'm making sure to explain everything I'm saying and give examples, there is also the fact that this might become a reference for other people it is public after all so step of your high horse.
but also you don't seem to understand how a pointer to another value would work and that's all I'm saying is we tell the FFNx config parser that if the attribute option is present use the value from the ConfigOption that the attribute's value matches to the ID of said Config Option.

I'm Bonez

Calm down everyone.
@barkermn01 got your point and i'll look into this layer later, in order to see if I can filter out config flags matching Options. If yes, then every modder could use the syntax you suggested to apply a config only if an option is enabled.
@wturner859 calm down, and give us some time to discuss about improvements and ways to tackle this. We are aiming in hiding "trivial" flags in a much smarter way which will allow modders like you to govern that behavior, on top of users choice.
Having that flag added in the panel like you are suggesting might solve your issue, but not ours.
Work with us, instead than on top of us.


Icons Flashing on & off constantly

I have edited Open Layer's "Icon Symbolizer" example for my case and latest code is different until layer definition part(line 35 on example code). Rest of the code will be same with the example.
Question is: When I put too much different colors with different features I get flashing points instead of showing all points constantly.
To Reproduce
function getRandForCoordinates(from, to, fixed) {
  return (Math.random() * (to - from) + from).toFixed(fixed) * 1;
}

function GetVectors() {
  let icons = [];
  for (let i = 0; i < 850; i++) {

    icons[i] = new Feature({
      geometry: new Point([getRandForCoordinates(-180, 180, 3)*500, getRandForCoordinates(-180, 180, 3)*5000]),
      name: 'Null Island',
      population: 4000,
      rainfall: 500,
    });
  }

  return new VectorSource({
    features: icons,
  });
}

function StyleBuilder() {
  var MyColor =
    'rgba(' +
    Math.floor(Math.random() * 254) +
    ',' +
    Math.floor(Math.random() * 254) +
    ',' +
    Math.floor(Math.random() * 254) +
    ',' +
    1 +
    ')';
  return new Style({
    image: new Icon({
      color: MyColor,
      crossOrigin: 'anonymous',
      src: 'data/icon.png',
    }),
  });

}

const vectorLayer = new VectorLayer({
  source: GetVectors(),
  style: StyleBuilder,
});

Expected behavior
Flashing Icons

I have tried to give style on feature definition. It is resolving the issue but using with clusters as well and needing style on layer definiton is a problem it seems.

You can set random styles on a cluster source by calculating it once for each new cluster when the cluster is added https://codesandbox.io/s/cluster-forked-mqml5h?file=/main.js  Each cluster can have a random color even if the clusters contain the same number of features.

Icons are flashing because you are creating new icons with each animation frame and OpenLayers by default only caches 32 icons for your convenience.
Loading icons takes a few ms during which they cannot be drawn to the map. If you exceed the maximum cached amount some needed icons are evicted from the cache to make room. And each time an icon has been loaded OpenLayers will redraw the map automatically.
You can increase the IconImageCache size ...
import {shared as iconImageCache} from 'ol/style/IconImageCache.js';
iconImageCache.setSIze(maxIcons);

... or, as in @mike-000's example you can cache the style/icon objects yourself (on the Feature objects, or in an array) to avoid creating style objects on each render.

Both solves my problem, thank you so much.


🌐 improve text for benchmark explanation on pt and en documentation

The goal of the PR is to update the version in English and in Portuguese of the documentation.

Thanks @lipemorais! The word "among" is not what I meant here, it was what is written there, as the internal implementation of those tests are all using Uvicorn, so all of them, FastAPI, Starlette (and pure Uvicorn) use Uvicorn.
So I'll pass on this one, but thanks for the interest! ☕


creating the login template and controller #14

verify if the user exist and the password is correct
stock the user id in $_SESSION['id'] to be used in other places

Actually login_14 has been rebased on feature/register_37 to limit the conflict we will need to merge register into develop before merging login, for better clarity


Insert plot level height histogram into Clowder geostreams; height into BETYdb

Description

We have scripts to generate plot level height histogram on Roger. The next step is to create a pipeline for this extractor.
Completion Criteria

[ ] @solmazhajmohammadi need to provide a parameter of "the position of the calibration object"

we are now making our assumptions of where is the (0,0,0) point in the field coordinate system.
from @solmazhajmohammadi we know that "We have used a special object to calibrate the point clouds. (0,0,0) point in the point cloud is somewhere in middle of the field, we will provide the transformation matrix to the gantry coordinate system in metadata"

[ ] make sure the correlation between hand measurements and predictions is high enough

correlation in 9/8, 9/15, 9/22, 9/29 is around 90% with our assumptions
we found that in 8/31, almost all of plots have a same highest height level at lv. 83, it seems point above lv. 83 was 'disappeared'.

[ ] add to pipeline

insert histogram into geostreams database as attribute
need a set of raw data from clowder as input, like #85
insert estimate of canopy_height into BETYdb with appropriate method

@ZongyangLi @rmgarnett @pless
For this extractor, I would suggest that we write the summary stats (histogram) into the metadata and insert a few statistics into BETYdb. For example, we have inserted a trait called '95th quantile height'.
But the key trait from the point cloud is the height estimate calibrated to field measurements. This trait will have the same name as the trait that Maria measured, i.e. 'canopy_height'. I think it would make sense for this extractor to use the calibrated model that Roman developed in #175.

@rmgarnett what are the (slope, intercept) parameters from the model in #175?
When estimating height at the plot level, can we also estimate uncertainty?

[hand height] = 28.2cm + 0.661 * [89th height percentile]
The RMSE/MAE gives a rough estimate of L2/L1 uncertainty. I will do a more thorough analysis in January now that all height distributions are extracted.

@rmgarnett I suspect RMSE scales with height?
From your plot it is hard to tell how the data are distributed b/c of overlapping points. But I gather strongly right-skewed. I wonder if log transforming x and y would be appropriae, if it would more evenly weight the smaller values. The small plants are important too!

@dlebauer
I have got all height distribution data for season 2 from 8/8 to 11/25, and I created 90th and 95th height percentile csv file, according to @rmgarnett 's research.
90th percentile
95th percentile
Scanner3DTop data in Season 2 is much better than those in Season 1, but still data from 10/13 to 11/04 are unexpected, there are just a few points in those days ply files.
I am wondering if point cloud files might be fixed in those days, if not, what's your opinion of putting them into BETYdb.

@solmazhajmohammadi could you please check into whether we can recover useful data from 10/13 to 11/04?
@ZongyangLi we need to discuss with @rmgarnett about how to implement this extractor.

@rmgarnett have you made any progress on adding uncertainty?

I will pick this up again this week.
On Wed, Jan 11, 2017 at 2:13 AM David LeBauer<EMAIL_ADDRESS>wrote:

@rmgarnett https://github.com/rmgarnett have you made any progress on
adding uncertainty?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/terraref/computing-pipeline/issues/210#issuecomment-271668753,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAjpCbAL13MIg5xXZ0OKTTsr-lbYxIahks5rQ9hBgaJpZM4LIBt3
.

@ZongyangLi you can go ahead and insert the data that you have. We can create another issue for adding uncertainty to the height calculations (moving forward this should be done by default ... )

@dlebauer @ZongyangLi, for the data from 10/13 to 11/04, the png files have not been collected correctly, but we can get the height information from the scans that it is done at ~5m

@smarshall-bmr can you please scan the checker boards to find the pointcloud origin?

@solmazhajmohammadi,  are you saying to estimate the plot level height base on the highest points in the remaining 3d data? That might be different from what we have done before, because we are using all point cloud data to create a height histogram and calculate quantiles data to make predictions.

@ZongyangLi This could be an option, otherwise the data has been collected with a wrong setting, so we are not able to recover it.

I have been reinvestigating the hand measurements using @ZongyangLi's most-recent data. The final model may differ from what's written above, but it will be the same form. I presume the extractor will be easy to modify if we wish to change the model slightly?

Yes, we could store parameters as metadata and have the extractor pick them
up (eg if they change by crop, year, or location)
On Fri, Jan 13, 2017 at 4:21 PM Roman Garnett<EMAIL_ADDRESS>wrote:

I have been reinvestigating the hand measurements using @ZongyangLi
https://github.com/ZongyangLi's most-recent data. The final model may
differ from what's written above, but it will be the same form. I presume
the extractor will be easy to modify if we wish to change the model
slightly?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/terraref/computing-pipeline/issues/210#issuecomment-272564064,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAcX5xs8Q3cOxCiNSQpFMcN6MlWYskaiks5rR_jygaJpZM4LIBt3
.

Perfect.

@robkooper and @max-zilla - should this go into geostreams?  @ZongyangLi -what will be visualized?

@rmgarnett @ZongyangLi
PointCloud data from 2016/08/07 to 2016/09/05 was collected with a wrong setting. There is no way to fix this dataset. Maybe we can delete them or mark them to exclude from the pipeline.
@dlebauer @max-zilla any idea?

Please don't remove them unless it is clear that they contain no useful
information - i.e. all points have been randomly redistributed. We can keep
them but exclude them from our workflow (even if the information is not
useful within the current scope of the project, others may find it useful).
One possibility:

Describe the problem in a file called 'readme-error' and put it in every
folder with unuseable data.
Append all files with -error
Have extractors skip files containing 'error' in the filename or
directory path

On Wed, Feb 8, 2017 at 11:02 AM Solmaz Hajmohammadi <
<EMAIL_ADDRESS>wrote:

@rmgarnett https://github.com/rmgarnett @ZongyangLi
https://github.com/ZongyangLi
PointCloud data from 2016/08/07 to 2016/09/05 was collected with a wrong
setting. There is no way to fix this dataset. Maybe we can delete them or
mark them to exclude from the pipeline.
@dlebauer https://github.com/dlebauer @max-zilla
https://github.com/max-zilla any idea?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/terraref/computing-pipeline/issues/210#issuecomment-278390593,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAcX5w1Q6lA3VinMXYbJufMSIO1x86ATks5rafU-gaJpZM4LIBt3
.

I think that's reasonable.  Unfortunately, I am not sure these points can be used to reliably estimate height, but they could be useful for some other purpose.
I could try to learn a separate model for this range and for the days afterwards, but I hesitate to do so.

@ZongyangLi @rmgarnett any updates on this issue?

I was worried about providing untrue data into Clowder geostream or BETYdb, so I asked for a transformation matrix to the gantry coordinate system in metadata to get a plot level height histogram.
If these uncertain result can be insert into those database, @max-zilla could you send me an instruction of Clowder geostreams?

@ZongyangLi we can write data to geostreams that we can regenerate and replace later once we have corrections to the code, absolutely.
Here is a comment I left in another issue about Geostreams:
https://github.com/terraref/computing-pipeline/issues/252#issuecomment-286189327
If you look at the links there, you can see an example of how I use it. The basic approach is:

determine which "plot" /sensor to use. I've already created a geostreams sensor entry for each plot, and you can query for the nearest one by lat/long with this:
https://github.com/terraref/extractors-metadata/blob/use-pyclowder-geostreams/sensorposition/terra_sensorposition.py#L101

sensor_data = pyclowder.geostreams.get_sensors_by_circle(connector, host, secret_key, sensor_latlon[1], sensor_latlon[0], 0.01)

determine which stream to use. you'll want to create a new stream for your data within the plot. e.g. "Height Histogram - Range X Pass Y" (where Range X Pass Y is the name of returned in sensor_data above). Here is a code snippet where we can look for an existing stream with that name and create it if it doesn't exist:
https://github.com/terraref/extractors-metadata/blob/use-pyclowder-geostreams/sensorposition/terra_sensorposition.py#L129

stream_data = pyclowder.geostreams.get_stream_by_name(connector, host, secret_key, stream_name)
		if not stream_data:
			stream_id = pyclowder.geostreams.create_stream(connector, host, secret_key, stream_name, sensor_id, {
				"type": "Point",
				"coordinates": [sensor_latlon[1], sensor_latlon[0], 0]
			})
		else: stream_id = stream_data['id']

Add datapoints to that stream ID.
https://github.com/terraref/extractors-metadata/blob/use-pyclowder-geostreams/sensorposition/terra_sensorposition.py#L161
The "metadata" JSON properties object can have whatever you want - at least the height histogram in this case.

Take a look at the code and let me know if it kind of makes sense. If it's helpful, here's the pyclowder 2 geostreams source code:
https://opensource.ncsa.illinois.edu/bitbucket/projects/CATS/repos/pyclowder2/browse/pyclowder/geostreams.py

@max-zilla Thanks a lot! I will take a look into it and start working on this.

@ZongyangLi the "error registering extractors" is not a big problem - registering just makes Clowder allow that extractor to be selected in manual extractor lists in the GUI. If you got "Waiting for messages" I think it's working properly.
you do want pyclowder 2, yes

@max-zilla
Could you give me the definition of all the input arguments to the geostreams. Because it seems I need to build all the arguments myself, such as sensor_data stream_name geomand so on

@ZongyangLi that is included in the geostreams source code:
https://opensource.ncsa.illinois.edu/bitbucket/projects/CATS/repos/pyclowder2/browse/pyclowder/geostreams.py
def create_sensor(connector, host, key, sensorname, geom, type, region):
    """Create a new sensor in Geostreams.

    Keyword arguments:
    connector -- connector information, used to get missing parameters and send status updates
    host -- the clowder host, including http and port, should end with a /
    key -- the secret key to login to clowder
    sensorname -- name of new sensor to create
    geom -- GeoJSON object of sensor geometry
    type -- JSON object with {"id", "title", and "sensorType"}
    region -- region of sensor
    """

def create_stream(connector, host, key, streamname, sensorid, geom, properties={}):
    """Create a new stream in Geostreams.

    Keyword arguments:
    connector -- connector information, used to get missing parameters and send status updates
    host -- the clowder host, including http and port, should end with a /
    key -- the secret key to login to clowder
    streamname -- name of new stream to create
    sensorid -- id of sensor to attach stream to
    geom -- GeoJSON object of sensor geometry
    properties -- JSON object with any desired properties
    """

def create_datapoint(connector, host, key, streamid, geom, starttime, endtime, properties={}):
    """Create a new datapoint in Geostreams.

    Keyword arguments:
    connector -- connector information, used to get missing parameters and send status updates
    host -- the clowder host, including http and port, should end with a /
    key -- the secret key to login to clowder
    streamid -- id of stream to attach datapoint to
    geom -- GeoJSON object of sensor geometry
    starttime -- start time, in format 2017-01-25T09:33:02-06:00
    endtime -- end time, in format 2017-01-25T09:33:02-06:00
    properties -- JSON object with any desired properties
    """

def get_sensor_by_name(connector, host, key, sensorname):
    """Get sensor by name from Geostreams, or return None.

    Keyword arguments:
    connector -- connector information, used to get missing parameters and send status updates
    host -- the clowder host, including http and port, should end with a /
    key -- the secret key to login to clowder
    sensorname -- name of sensor to search for
    """

def get_sensors_by_circle(connector, host, key, lon, lat, radius=0):
    """Get sensor by coordinate from Geostreams, or return None.

    Keyword arguments:
    connector -- connector information, used to get missing parameters and send status updates
    host -- the clowder host, including http and port, should end with a /
    key -- the secret key to login to clowder
    lon -- longitude of point
    lat -- latitude of point
    radius -- distance in meters around point to search
    """

As an aside, not sure how you're chopping these to plots right now but this task becomes a lot easier after we have a way to stitch + clip images to plots: https://github.com/terraref/computing-pipeline/issues/265

@ZongyangLi is this extractor ready to deploy?

@dlebauer
Insert existed 'height' trait into BETYdb is ready, the only thing I need your confirm is using 864 plots or 1728 plots.
To make it as an extractor in clowder, I still need some support mentioned here:
https://github.com/terraref/computing-pipeline/issues/193#issuecomment-290507753

@ZongyangLi sorry if I missed it, where is code for this extractor? I know the canopycover extractor is in https://github.com/terraref/extractors-stereo-rgb
If you can share what you have I can contribute to the Clowder part.

@max-zilla Insert existed 'height' trait into BETYdb is not an extractor, 'height' data for season 2 is on my desktop, I have a local script can upload them to BETYdb.
To make it as an extractor in clowder there are something I am not sure:

(0,0,0) point in the point cloud is somewhere in middle of the field, I have no idea where is this (0,0,0) point in gantry coordinate system, and what's the positive orientation for west scan and east scan, this relate to https://github.com/terraref/reference-data/issues/44.
‘an individual plot is made up of several ply files, which means I need a set of raw data from clowder as input automatically’

I made a comment here https://github.com/terraref/computing-pipeline/issues/193#issuecomment-270767586 to describe the support I needed and discuss with @dlebauer , but I didn't find the answer to this issue yet. I am sorry too if I missed any response for this.

@ZongyangLi for #2, unless @dlebauer says different I say we do your second option:
Another way of solving this problem is create several traits for a plot for one day if it is acceptable, and that will be much easier.
...when the field stitching is done, we can modify this extractor to trigger on the full merged PLY file and avoid the need to generate multiple traits, but we can do that for now just to have something running.
I pinged Solmaz and Stuart about #1.

@max-zilla
This comment is from @dlebauer 'While It is possible to add replicate measurements for a single plot (we are already doing this for field data), we should do this when it is scientifically useful and not because of the way that the data are written.'

PLY chunks...

need to consider sampling rates across PLY files so we dont mix and match.
better to stitch & subset according to a design.
we can deploy what we have now & replace with final version by end of May.

@max-zilla I am going to upload my code associate with plant height. Is there anywhere on Github may I upload and update my code?

@ZongyangLi if using PLY data, please upload here: https://github.com/terraref/extractors-3dscanner

@max-zilla
Okay! Could you please create a new directory there?

@ZongyangLi created 'plantheight' directory

I don't see the plantheight directory, but could you change it to
plant_height to match the naming in BETYdb?
On Fri, Apr 21, 2017 at 2:43 PM Max Burnette<EMAIL_ADDRESS>wrote:

@ZongyangLi https://github.com/ZongyangLi created 'plantheight'
directory
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/terraref/computing-pipeline/issues/210#issuecomment-296289043,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAcX510N6jN20XWP-y3ekYu-GXqBroN7ks5ryQbpgaJpZM4LIBt3
.

codes updated to https://github.com/terraref/extractors-3dscanner/tree/master/plantheight

@dlebauer @ZongyangLi renamed to plant_height:
https://github.com/terraref/extractors-3dscanner/tree/master/plant_height

created this issue to finish deployment: https://github.com/terraref/computing-pipeline/issues/303
There was an error scanning the PLY, but code is 90% there. Last missing piece is how to extract the actual values to geostreams - I can create the datapoints if you can show how to get an array of values from the histogram.npy file

@ZongyangLi will mention on phone, but remaining piece is to extract values from height file for BETYdb and histogram file for geostreams. Right now these outputs are just uploaded to Clowder as .npy files.

@max-zilla I think there are still some other issues on this extractor. Maybe we could ignore them for now, but it will not be a true pip-line without solving these problem

The single scan covers about 1 meters in NS-direction, a plot length in NS is around 4 meters, we will need to integrate 4 or 5 scan's data to get a plot-level height.
The existed 'yshift' value here https://github.com/terraref/extractors-3dscanner/blob/master/plant_height/full_day_to_histogram.py#L597 only works for season2. This relate to https://github.com/terraref/reference-data/issues/44 as I mentioned before.
To extract values from histogram.npy, they are here:
https://github.com/terraref/extractors-3dscanner/blob/master/plant_height/full_day_to_histogram.py#L277

@solmazhajmohammadi is going to share the point cloud offset to gantry for #2.
for #1, calibrated in august and validation in November. Saw misalignment between two different point clouds ~4cm. Suspect that alignment is shifting with temperature. @smarshall-bmr will do that scan. maximum we recorded up to now is about ~5cm between hot summer and middle winter.

@ZongyangLi will look at 2017 data for the merge and ignore season 1 issues for the moment.
I will add the geostreams function and then we can deploy initial version.

@smarshall-bmr it seems that the misalignment in pointclouds is due to the temperature change. It would be great if you can do multiple scan in different time of the day to see the variation with changing the temperature.
Thanks

@dlebauer I'm going to insert height data into BETYdb. Here is an example of csv file. Could you please review and have a check. Thanks!
https://drive.google.com/open?id=0B5QCp_Onc6nOUGR0WVpsREl5NWc

@zongyangli that looks good. Go ahead and upload. Thanks!

@dlebauer
When I do that, I receive below error report:
"mean": "31.505",             "local_datetime": "2016-08-08T12:00:00",             "access_level": "2",             "error": "bad date specification; see error output",             "species": {               "scientificname": "Sorghum bicolor"             },
"site": {               "sitename": "MAC Field Scanner Field Plot 1603 Season 2",               "error": "match not found"             },
"method": {               "name": "height Estimation from 3D Scanner using formula: [hand height] = 28.2cm + 0.661 * [89th height percentile]",               "error": "match not found"             },

@zongyangli

The date looks correct - what is the error output?
The sitename needs to match a record in the database terraref.ncsa.illinois.edu/bety/sites
the method name needs to match a name in the methods table terraref.ncsa.illinois.edu/bety/methods

@dlebauer

the error is 'bad data specification', I think it's because of error 2 and error 3.
This is a plot number definition problem I mentioned here: https://github.com/terraref/computing-pipeline/issues/210#issuecomment-295475495, here I upload a totally 1728 plots data, maybe this makes error 2.
the method name comes from you comment here: https://github.com/terraref/computing-pipeline/issues/193#issuecomment-271668626, I failed to access the methods table.

Hmm. error 1 is the only one that says 'see error output'. @gsrohde any ideas?
For season 1, Plot names for the 1728 plots are the same as for the 864 plots, but with E, W appended. We don't have the same 1728 plots specified for season 2; I can create the 1728 plots for Season 2 or we could go with the 864 plots.
sorry I was not clear. for the method, please create a new record here: https://terraref.ncsa.illinois.edu/bety/methods/new. Can you access that page?

@dlebauer I successfully create a new method called: 'Scanner 3d ply data to height', and error 3 goes away. Since the 1728 plots still not work, I used the 864 plots definition to finish the operation.
One another error comes out:
"model_validation_errors": "{:mean=>[\"The value of mean for the height trait must be at most 120.\"]}",
By the way, @solmazhajmohammadi gave us the origin in point cloud data last week, I am creating new height estimate data using the new metadata.
Also, we are creating algorithm to use stereo top image to do the 3d reconstruction, and trying to use this stereo 3d model to recover the missing height data from 2016/10/11 to 2016/11/04, once we get the new available data, I will resend them to BETYdb.

@ZongyangLi thanks,

the error you observed is caused by the fact that each variable has a valid range, and in the case of 'height' the valid range is [0, 120]. And the variable height has units in meters (as you can tell, these ranges are generally very generous; the tallest known tree is 115m).
however, I think that we should be using the variable `canopy_height, since this is the variable that Maria recorded, and I assume that these are the data used to fit the model (please confirm)
See also https://github.com/terraref/reference-data/issues/118 for disambiguating terms related to height.

In summary:

if the model is trained only on Maria's canopy_height measurements, we should call the output canopy_height.
if it is trained on both canopy_height and either panicle_height or its synonym spike_height, we should call the variable plant_height (plant_height = max(canopy_height, panicle_height).
I am assuming that the algorithm does not differentiate plants with or without fruit.

@dlebauer and @ZongyangLi The message should probably say "See error list" instead.  The error list contains the key-value pair date_data_errors=>[\"You can't have a local_datetime attribute on a trait-group's defaults element if no default site has been specified.\"].  But this itself is unclear except when an XML file, not a CSV file, is being uploaded.  And I think the error itself is bogus in this case.  I'm making an issue for this.

change to plant_height

Currently this extractor generates two numpy files:
ls /projects/arpae/terraref/sites/ua-mac/Level_1/scanner3DTop_plant_height/2017-05-06/2017-05-06__05-05-58-934
scanner3DTop - 2017-05-06__05-05-58-934 highest.npy  scanner3DTop - 2017-05-06__05-05-58-934 histogram.npy

In #303 we mention pushing the max value to geostreams - this isn't implemented yet.
Additionally we should convert the .npy files to an image or geotiff.

@max-zilla I have just uploaded recent codes to https://github.com/terraref/extractors-3dscanner/tree/master/plant_height
And I know it's really a mess code, I need to take some time to make it much more beautiful.

@ZongyangLi I ran a PLY file from feb through the plant_height extractor - I'm making a pull request to show @nickheyek that writes .tif instead of .npy and pushes some values to geostreams.
The "highest" numpy array looks like this for sample file:
>>> f = r"/Users/mburnette/globus/111fb573-a351-4bf8-9594-aedddc53a850__Top-heading-east_0.ply"
>>> plydata = PlyData.read(f)
>>> hist, highest = full_day_to_histogram.gen_height_histogram(plydata, False)
>>> highest
array([[ 1051.20507812],
       [ 1042.48278809],
       [ 1005.7802124 ],
       [ 1016.98535156],
       [ 1013.16113281],
       [ 1053.45422363],
       [ 1031.78356934],
       [ 1024.53540039],
       [ 1019.98809814],
       [ 1020.35986328],
       [ 1007.30383301],
       [<PHONE_NUMBER>7],
       [<PHONE_NUMBER>8],
       [<PHONE_NUMBER>8],
       [    0.        ],
       [    0.        ]])
>>> len(highest)
16

What exactly do these 16 numbers represent? I see the "hist" array is also length 16, but each of its members is itself an array:
>>> hist
array([[ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       ...,
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.],
       [ 0.,  0.,  0., ...,  0.,  0.,  0.]])
>>> len(hist)
16

If I were to summarize the "highest" numbers into geostreams, what would you recommend? Something like this is hard to interpret:
{
"highest": [[ 1051.20507812],
       [ 1042.48278809],
       [ 1005.7802124 ],
       [ 1016.98535156],
       [ 1013.16113281],
       [ 1053.45422363],
       [ 1031.78356934],
       [ 1024.53540039],
       [ 1019.98809814],
       [ 1020.35986328],
       [ 1007.30383301],
       [<PHONE_NUMBER>7],
       [<PHONE_NUMBER>8],
       [<PHONE_NUMBER>8],
       [    0.        ],
       [    0.        ]]
}

Can I select the maximum number of this array as a simple "tallest plant in this plot" number?

What exactly do these 16 numbers represent?
Every ply file supposes to cover one row between east boundary and west boundary in the field. At the very beginning, field were divided into 16 column, these 16 numbers represent for the highest point in the column, and the unit is mm. Please use the most recent updated function named
gen_height_histogram_for_Roman(plydata, scanDirection, out_dir, sensor_d, center_position)
This will consider a east or west side sensor, and add the newest origin offset in both side, and make the ground plane as hist[0], and use a 32 column definition.

With these numbers recorded, I would integrate all scanned result to create a full field highest and histogram file, using the according json file.

And what for the 'hist'?
hist records the height distribution, 16 lengths of hist has the same definition as 'highest'. For 400 numbers in each element, it is bins to record how many points in that height level. you can treat col 0 as ground plane in the field, each height level equals to 1 cm in the field. So number(for example 5) in the 400 bin means there are 5 points in height level 400, which means 4 meters in the real world.

Recommended way of summarizing data:

use 'gen_height_histogram_for_Roman' to create hist and highest array, use json file to determine the plot number for each bin, then change to whatever unit that might fit the database.
Notice that each plot might made up of several ply files, so you might create several different number for each plot for one day by a separated process.
create different quantiles data with 'hist' for each plot and use @rmgarnett 's formula to create an estimate height. reference codes: https://github.com/terraref/extractors-3dscanner/blob/master/plant_height/draw_field_scanned_in_grid.py#L195

Would it make sense to use the same workflow as we are using with other image data, i.e.:

full field stitch
plot subset
analysis,

so that each result represents a single plot?

i believe we've discussed stitching point clouds into plots - I will try to track down comments from @solmazhajmohammadi

I don't think that the files overlap (after R and L ply are merged into a single las)
I think using the stitch then subset approach is okay.

@solmazhajmohammadi can you confirm that independent passes do not overlap each other.

I think we can close this issue and open a new one with low priority that will deal with full field merge then split.

@dlebauer to confirm the independencies between passes, we need to apply the transformation to all the ply files from a single day and merge them together.
The transformation is available in Issue 44


allow operations on editable blackbox schema fields

The Issue
When there's an editable blackbox field in the schema, it's contained in the allowedFields array. However, any property of that field, which can be anything and not defined in the schema, will not be listed in that array. So if a field in the modifier is a property of that blackbox field, the operation will be rejected by the allowCheck function as that field will still be there after executing _.difference(fields, allowedFields).
The Solution
Before checking against the allowedFields, the fields are filtered out of any field whose name has a prefix that matches the name of one of the editable blackbox fields that exist in the schema.

Hey @Mostafa-Samir, Telescope has changed a lot in the past months, and there is a new React-based version, Telescope Nova (intro video). If you know Crater, it runs on the latest version.
The Legacy version is no longer supported. Thanks for your PR, however I'm closing it.
I invite you to check the new version, it's awesome!
Happy hacking! 🚀
Ps: by the way, don't hesitate to join the Slack to ask any question, you are welcome! 👍


Add eslint to renovate ignore list

Closes #277
See https://github.com/api3dao/chains/pull/271

I'm a bit worried that we're going to forget to remove this later. Can't we just close the renovate PR instead?
From the renovate PR itself:

Close this PR and you won't be reminded about this update again.

Can't we just close the renovate PR instead?

I lean towards this solution as well

Let's just close the PR but it is most likely will work for 9.1.1 version only.


[Bug] Edimax BLE Dongle Fails After Teardown and Re-Instantiation

Bug: Edimax BLE Dongle Fails After Teardown and Re-Instantiation
Overview
Replacement for #497 with the logic for the HCI parser removed now that packets are handled without a parser for USB. This bug was observed with some RTK BLE dongles (specifically cheaper CSR dongles as well as the Edimax BT-8500). Sometimes, when a reset is attempted, the host will fail to receive a result, instead receiving an invalid packet or corrupt data. This results in blocking forever in driver_info_for_host(). In testing, I found that allowing that to time out, then trying again can work with dongles like the Edimax.
With cheaper CSR dongles, sometimes the first packet in response to a command after the reset will be an invalid packet. This occurs when the Local Version request is sent. The result is similar to the above in which case we wait forever on a packet that isn't coming in. In testing, I found that re-sending the command can sometimes avoid this, but not in all cases, so in the case that we do not get the local version information, we should skip over it and return upstream.
Summary of Changes

In RTK driver_info_for_host attempt a HCI reset with a timeout; on time out, retry the HCI reset and assume the host is ready.
In RTK driver_info_for_host exit if the Local Version Information response is invalid.
In bumble/host.py, for send_command() allow an optional response_timeout to allow the caller to time out if a response is not received.
In bumble/host.py, for on_packet(), do not crash if from_bytes() fails to parse an HCI packet as may be the case with invalid data.

This PR is good to go. Can you please just fix the linter/formatter errors before we can merge it?

This PR is good to go. Can you please just fix the linter/formatter errors before we can merge it?

Done!

This PR is good to go. Can you please just fix the linter/formatter errors before we can merge it?

Done!

There are still some type checker errors (see the output of the GitHub actions that run on the PR, or runinvoke project.pre-commit to run the checks locally.
Those are not type checking errors that were introduced by your change, but they are only detected now, because your change adds type annotations to the send_command functions (which is good, as we're adding type annotations throughout the code base as time goes), which means that now that function will be type-checked, whereas it wasn't before.
The type checker output says:
bumble/transport/usb.py:118: note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs  [annotation-unchecked]
bumble/host.py:526: error: Incompatible types in assignment (expression has type "Future[Any]", variable has type "None")  [assignment]
bumble/host.py:531: error: Argument 1 to "wait_for" has incompatible type "None"; expected "Union[Future[Never], Generator[Any, None, Never], Awaitable[Never]]"  [arg-type]
bumble/host.py:532: error: "None" has no attribute "result"  [attr-defined]
bumble/host.py:537: error: "HCI_Command_Status_Event" has no attribute "status"  [attr-defined]

Those errors can be fixed easily:
self.pending_response should be explicitly typed, so that the assignment to a non-None value doesn't generate an error (probably something like  self.pending_response: Future = None on line 174 would work fine.

I'm not sure how to work around this one:
bumble/host.py:537: error: "HCI_Command_Status_Event" has no attribute "status"  [attr-defined]

It seems like PyLint doesn't like how the constructors for the events are done, as it can't tell the class instance has an attribute called status.

I'm not sure how to work around this one:
bumble/host.py:537: error: "HCI_Command_Status_Event" has no attribute "status"  [attr-defined]

It seems like MyPy doesn't like how the constructors for the events are done, as it can't tell the class instance has an attribute called status.

The comment # type: ignore[attr-defined] should solve the issue I think.


New Switzerland primary & secondary school

School of Lausanne.
Can be found at : https://www.lausanne.ch/vie-pratique/enfance-jeunesse-famille/scolarite-a-lausanne/etablissements-scolaires/eps-cframuz.html

edu-vd.ch


Having "https:/" in my url causes internal NodeJS error

Hey folks, whenever there's a https:/ in my URL, I get this error (instead of my 404 page):
Invalid URL: /https:/
next@183:5
internal/url.js:258:9
onParseError
internal/url.js:334:5
new URL
node_modules/@nuxt/vue-renderer/dist/vue-renderer.js:2106:15
parseURL
node_modules/@nuxt/vue-renderer/dist/vue-renderer.js:2110:56
normalizeURL
node_modules/@nuxt/vue-renderer/dist/vue-renderer.js:4436:25
VueRenderer.renderRoute
node_modules/@nuxt/server/dist/server.js:918:38
Server.renderRoute
node_modules/@nuxt/server/dist/server.js:158:26
nuxtMiddleware
node_modules/connect/index.js:239:7
call
node_modules/connect/index.js:183:5
next
node_modules/serve-placeholder/src/index.js:29:16
servePlaceholderMiddleware
node_modules/connect/index.js:239:7
call

Thank you @danielroe. I struggled thinking it's coming from our app but I realized it's something from core. By the way any part of the URL will have the same result, even as a part of a query (as redirect query for example)

Hi @gkatsanos thanks for reporting. Would you please try v2.14.12?

Thanks guys! amazing speed !


DC - List of Labs with Total Test result counts

Problem Statement
On the bi-weekly DC call - they stated that the lab data we previously sent them didn't include total counts.  They also didn't see the value added by receiving test results from small labs.
What you need to know
[https://app.zenhub.com/files/304423150/5b733dfc-09bf-4b88-b439-588cd7b17158/download]
Please generate a new list for the State of DC that includes the lab name, total counts for the past year. Where the ordering provider is DC and resident is DC.
Acceptance Criteria
-List includes the lab name and city.
-Residents city and state
-Total test counts for the past two years
To Do
A quick note to the assignee of the ticket.
Additional Comments
If applicable, add screenshots, links, etc. to further explain the ticket

query_result_2023-08-02T23_32_11.057001Z.csv
As requested, assuming where "resident" is stated, "patient" is meant. There are very few tests where both the ordering facility and patient state are DC. I filled in Washington for all patient cities since it was stated that the patient must reside in DC and Washington is the only city in DC. I will be uploading another version shortly that includes patient county and state instead since that one will be using either the ordering facility or the patient state are DC and we do not record patient cities.

This is the query with the OR and using patient county instead of city
SELECT testing_lab_name, testing_lab_city, patient_county, patient_state,  sum(case when "public"."covid_result_metadata"."specimen_collection_date_time" >= DATE_TRUNC('month', (NOW() + INTERVAL '-12 month'))    AND ("public"."covid_result_metadata"."specimen_collection_date_time" < DATE_TRUNC('month', NOW())) then 1 else 0 end) count_from_past_year,  sum(case when "public"."covid_result_metadata"."specimen_collection_date_time" >= DATE_TRUNC('month', (NOW() + INTERVAL '-24 month'))    AND ("public"."covid_result_metadata"."specimen_collection_date_time" < DATE_TRUNC('month', NOW())) then 1 else 0 end) count_from_past_two_years FROM "public"."covid_result_metadata" WHERE "public"."covid_result_metadata"."patient_state" = 'DC' or "public"."covid_result_metadata"."ordering_provider_state" = 'DC' group by testing_lab_name, testing_lab_city, patient_county,patient_state order by testing_lab_name asc
And the results:
query_result_2023-08-02T23_44_46.205101Z.csv

That.... looks like the same file I provided so I'm not sure what you want me to review. And yes, that is the count for the past two years because in one place you said you wanted the past year and in another you said the past two, so I put both.

@adegolier I just added the total at the bottom and cleaned it up a little.


4.x Error Handling

Description
As discussed on issue #2170 I feel that the error handling has always been a bit clunky and very tightly coupled to the rendering of the error. This PR eliminates all native error handlers and replaces it with ErrorHandler which handles all errors. You can create a handler for any exception in these ways:
/*
 * Via Shortcut Method
 * Notice that the callable also gets passed $displayErrorDetails optionally from the App settings
 * You can either pass a callback or a resolvable callable as the second parameter
 * My implementation uses CallableResolver when
 */
$handler = function ($req, $res, $exception, $displayErrorDetails) {
    return $response;
};
$app->setErrorHandler(\Your\Namespaced\Exception::class, $handler);

/*
 * Via Named Shortcut Methods Currently NotFound and NotAllowed only
 */
$app->setNotFoundHandler(function ($request, $response, $exception) {
    return $response;
});

/*
 * Via App Settings
 */
$app = new \Slim\App([
     /*
      * The default error handler can be set using this variable
      * or the $app->setDefaultErrorHandler() method
      * All exceptions are caught by this handler by default which is an instance of ErrorHandler
      */
    'defaultErrorHandler' => function ($req, $res, $exception, $displayErrorDetails) {
       return $res->withJson(['Oops...']);
    },

     /*
      * You can also set multiple error handlers via the settings object
      * by passing an associative array with 'Namespace\Exception' => function () {}
      * You can also pass a resolvable callable since this PR implements CallableResolver
      */
    'errorHandlers' => [
       \Slim\Exceptions\HttpNotFoundException::class => function (...) {...},
       \Your\Namespaced\Exception::class => ResolvableCallable::class
    ]
]);

Error Handling/Rendering
The rendering is finally decoupled from the handling. Everything still works the way it previously did. It will still detect the content-type and render things appropriately with the help of ErrorRenderers. The core ErrorHandler extends the AbstractErrorHandler class which has been completely refactored. By default it will call the appropriate ErrorRenderer for the supported content types. Someone can now provide their custom error renderer by extending the AbstractErrorHandler class and overloading the protected renderer variable from the parent.
class MyCustomErrorRenderer extends \Slim\Handlers\AbstractErrorRenderer
{
    public function render()
    {
        return 'My awesome format';
    }
}

class MyCustomErrorHandler extends \Slim\Handlers\AbstractErrorHandler
{
    protected $renderer = MyCustomErrorRenderer::class;
}

HTTP Exceptions
I just think it makes sense to throw HTTP based exceptions within the application. These exceptions works with nicely with the proposed native renderers. They can each have a description and title attribute as well to provide a bit more insight when the native HTML renderer is invoked.
The base class HttpException extends Exception and comes with the following sub classes :

HttpBadGatewayException
HttpBadRequestException
HttpForbiddenException
HttpInternalServerErrorException
HttpNotAllowedException
HttpNotFoundException
HttpNotImplementedException
HttpUnauthorizedException

The developer can extend the HttpException class if they need any other response codes that we decide not to provide with the base repository. Example if you wanted a 504 gateway timeout exception that behaves like the native ones you would do the following:
I
class HttpForbiddenException extends HttpException
{
    protected $code = 504;
    protected $message = 'Gateway Timeout.';
    protected $title = '504 Gateway Timeout';
    protected $description = 'Timed out before receiving response from the upstream server.';
}

Status

[x] Build Passing
[x] Unit Tests (Coverage Increased +2.03%)
[ ] Discussion and Code Review.

Thanks for doing this. I will review and provide feedback at some point, but may not get to it until next week.

Coverage decreased (-6.06%) to 90.158% when pulling dfa2a4792f5e65bc07bca35f4cc3d15ee74320d0 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage decreased (-6.06%) to 90.158% when pulling 0446badea85b7bc8b6743aab4d74e47e1e21c64a on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage decreased (-6.2%) to 90.043% when pulling 686bb43164ff15433b0d91bd1ce4c783730a67b2 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage decreased (-3.4%) to 92.779% when pulling c2f455a1c829e44b35a6376d1c3c21b75022494a on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage decreased (-2.3%) to 93.914% when pulling fa2e48fa853d731b641c79b07652b1493b72ab13 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage decreased (-0.05%) to 96.161% when pulling 3454b3a8f07ce906b2d81fb804931f8e3dd09c37 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage decreased (-0.05%) to 96.161% when pulling 52140aa939cb67e336dd7b6dab458b2c8cd181eb on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.07%) to 96.283% when pulling 4e5fe99f290ab227b3026ba484a5a71f48e76ea4 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.4%) to 96.648% when pulling 145335a904bb546e6bfe04ce91a666e25575054e on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.5%) to 96.705% when pulling db17f1feba7ca99071a3944e3b311c1e8af6db9c on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.5%) to 96.705% when pulling 025be5df780befc7daa091db329ebd12b6fc6fe1 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.5%) to 96.701% when pulling e448e173434ad43c19bed8771d79ddcd7482b02a on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.5%) to 96.709% when pulling c9bb1abb98a7ecd8f2aaee9ee5bd463850ef3eaf on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.7%) to 96.959% when pulling 44bcaded3dbbbbf2db7ae4c4b08488545f166f89 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.9%) to 97.139% when pulling 1aad31847233e2ba6baaa0f03dad3eada9d288ce on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.9%) to 97.146% when pulling a3377933079d20774b5a26a54156a639675db076 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+0.9%) to 97.146% when pulling 6fc9102191856afc123a6dcc58e3ebbfcd3b04a2 on l0gicgate:4.x into 54401a4f5df38da67cfcf665051c166ee669a911 on slimphp:4.x.

Coverage increased (+1.9%) to 96.057% when pulling 8dbbaac42064eda6dab094598acc54c1b88c2535 on l0gicgate:4.x into 72eea92845b090ce8c8f56702a571bbbf7fdb01f on slimphp:4.x.

By using Exceptions as objects you mean like it carrying request/response or extra details like allowed methods for said route?
What are my actionable items here @geggleto?

There's a lot here and it's going to take me a while to go through.
First thoughts.

Please get rid of PhpException. This only exists in Slim 3 because we had type hinted the handler to need an Exception which meant we wouldn't use the standard handler.
I don't want the additional stack trace because we've wrapped the Error into an Exception just so we can type hint handleException().

Why is displayErrorDetails marked as an optional parameter for the error handler signature?

@akrabat

Will do
It's "optional" because not everybody cares about the parameter $displayErrorDetails. I passed it in just in case people needed to use it for a dev/prod scenario where they would want to handle the errors differently. It still gets passed to the handler always, you as a developer can choose to use it in the signature, or not. That's all I meant by "optional".

@akrabat Do we even need these renderers? ... Why are we even rendering content and not just letting exceptions bubble to where a user can catch and do something with them....
even in production, this could be a bad thing... what if I want to deregister all of the renderers?

It makes more sense to me to have it bubble outside of app and catch it at a global level.
we can then decouple all rendering things and App becomes a middleware runner that returns a response or throws an exception.

Currently we render errors and I think that's part of Slim - otherwise, you may as well just use FastRoute directly. What I'm not sure about is whether we should have middleware to do it rather than having it built into dispatch.

@akrabat I'm not saying we don't render them, it's just I would rather do it in a very decoupled way.
I think Middleware is at least a good first step.

Coverage increased (+2.03%) to 96.163% when pulling 2d2411654a914bed5eeec05b583acc70c3bb38ed on l0gicgate:4.x into 72eea92845b090ce8c8f56702a571bbbf7fdb01f on slimphp:4.x.

Coverage increased (+2.03%) to 96.163% when pulling 24ad11bb9bdb814377a18a016795403d140ee22d on l0gicgate:4.x into 72eea92845b090ce8c8f56702a571bbbf7fdb01f on slimphp:4.x.

Coverage increased (+2.0%) to 95.369% when pulling fbca712e7ac6dcca02d705dafc7f5ab4b6ae9c1b on l0gicgate:4.x into 6f765adb5dad996b586ecf6e362bb2ef7ae64ea4 on slimphp:4.x.

@akrabat +1 for moving error handling to Middleware.

I suspect that we're going to do a multi-step error handling refactorying process.
This is a big PR which is why it's taking me a while. It's better than what we have now, but it's where I think we'll end up by 4.0.

Coverage increased (+1.8%) to 95.19% when pulling 492430ebd14d826c3c839c7b9d6b8c2b64cc0ac2 on l0gicgate:4.x into 6f765adb5dad996b586ecf6e362bb2ef7ae64ea4 on slimphp:4.x.

Is this something that should be moved to a middleware?

I think so.  I like a lot of the concepts in here and would like to explore how to make it middleware.

I think this comment is still relevant: https://github.com/slimphp/Slim/issues/1686#issuecomment-261306557

Coverage decreased (-3.1%) to 91.772% when pulling 60a9ea1d6aecc51ade6c80bd366ec347babd1e5f on l0gicgate:4.x into 6e1d77689f81ce1e383640ea1eafc1847d86cac9 on slimphp:4.x.

Coverage decreased (-0.1%) to 94.771% when pulling c52842bc427deeeb81ac9156226cd6a6dad57bf6 on l0gicgate:4.x into 6e1d77689f81ce1e383640ea1eafc1847d86cac9 on slimphp:4.x.

I've been working on a quite similar solution for Slim3, but in my case I'm relying on exception status code instead of having different classes per HTTP status, i think this gives more flexibility for handling purposes

@juliangut I think named exceptions are better because they are explicit. Status codes aren’t.

FWiW, I also think named exceptions are more expressive in the codebase.
I’m on the fence about shipping exceptions that we don’t need for the dispatcher.

Discussion with @l0gicgate on reworking this:

Move the error handling to middleware that we apply at the outer edge
ie. App just throws either a NotFound exception or a MethodNotAllowed exception
Write a new Slim\Middleware\ErrorMiddleware which then uses renderers
Renderers in an appropriate namespace
Later, we may want to detect that no error middleware has been added to the pipeline and add ours to the outside of the stack in run()

Let's use a new PR for this. Thanks for you work so far and again, I'm really sorry that it's taken me this long.


pre-commit: PR114975

Link: https://github.com/llvm/llvm-project/pull/114975
Requested by: @nikic

2024-11-18T14:21:13.8609463Z WARNING: perf not found for kernel 6.8.0-48
2024-11-18T14:21:13.8609479Z
2024-11-18T14:21:13.8610355Z   You may need to install the following packages for this specific kernel:
2024-11-18T14:21:13.8610803Z     linux-tools-6.8.0-48-generic
2024-11-18T14:21:13.8611456Z     linux-cloud-tools-6.8.0-48-generic

There are some problems on @goldsteinn's machine. I will retest these PRs.


Fix langs

Develop is behind master. Are you going to include 413d3f5 in develop or should I get rid of it in my branch?

Codecov Report

Merging #7 into develop will decrease coverage by -0.18%.
The diff coverage is 90%.

@@             Coverage Diff             @@
##           develop       #7      +/-   ##
===========================================
- Coverage    94.21%   94.03%   -0.18%
===========================================
  Files           14       14
  Lines          294      302       +8
===========================================
+ Hits           277      284       +7
- Misses          17       18       +1

Impacted Files
Coverage Δ

tinymce/widgets.py
92.85% <90%> (-0.48%)
:x:

Continue to review full report at Codecov.

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

Thanks. I will resolve this myself.


analyzing motif

Thank you again for this great work.
I can see that providing a given motif sequence, scBasset can compute the influence of accessibility of this input motif in single cell level.
Could I ask if scBasset can perform general de novo motif analysis on sequences recognized by the first convolution layer filters, like basenji and basset can do? If yes, could you give any quick guidance, Thank you!

We didn't explore this direction specifically. The convolution tower of scBasset is the same structure as Basset, so the representational power should be similar. Our experience is that the filters learnt from first layer sometimes match with known PWM, but sometimes not. They often capture just partial motifs. Another way to do de novo motif discovery is using TFmodisco, which can be done after generating important scores. However, that needs to be run only on the cluster-level instead of single-cell level.

Thank you so much Han! Your answer is clear!

Hi Han, sorry for bothering on this question again, I am hoping to put important scores into TFmodisco to get the de novo motif, (from clusters). Could I ask for your guidance or some example code to make that step work? Thank you so much!

Hi Han, sorry for bothering on this question again, I am hoping to put important scores into TFmodisco to get the de novo motif, (from clusters). Could I ask for your guidance or some example code to make that step work? Thank you so much!

Hi, it's exactly what I'm about to do. May I ask how about your progress?

Sorry very much @Gavin-Lijy and just see your post.

I am not good at deep learning and still learning(hope to deeply learn deep learning lol).. I don't have any good progress yet,
but I run through the ISM code and works. Hope Han and you can provide more ideas. Thank you!
Best,
willey

Hi Han, sorry for bothering on this question again, I am hoping to put important scores into TFmodisco to get the de novo motif, (from clusters). Could I ask for your guidance or some example code to make that step work? Thank you so much!

Hi, it's exactly what I'm about to do. May I ask how about your progress?

Hi all, we don't have good to do this automatically, but we can plan to write and include it in the repository. Thanks for the suggestion.

Thank you so much Dr.Kelley! Honestly, your and Han's work on scBasset is amazing and insightful!

Dear all, as asked by @Gavin-Lijy as well, could I ask if there is any update for this question? Thank you!

Hi @willey2020 ,
Is the question trying to compute importance score for tfmodisco? I would suggest computing ISM on a few hundred peaks of interest, then running tfmodisco on those, taking ISM score as the importance score. Since with scBasset, there are usually thousands/tens of thousands tasks. Computing importance scores (either by ISM or gradient) would be slow. We are still working on improvements, an idea is to taking an average of the cell embeddings (for cells in a cluster), and generate a new pseudo-bulk head, so it's fast to compute gradient on it.
Alternatively, you can take a look at deep learning models specifically designed for bulk ATAC (e.g. chrombpnet), and run it no pseudo-bulk data.
Best,
han

Dear Han,
Thank you so much for your answer and guidance! I will explore with your suggestions! Thank you again!
Best,
Willey


Spark 2 compatibility

ATM, the connector is only for Spark 3. I did not expend time in the Spark 2 version, but it should be not difficult to add it to the Scala 2.11 branch.
Let's keep this ticket alive and if people need it I will implement it. Please add a +1 reaction if you think that it is something helpful.

How to generate two artifact, using the same source code but with two different dependencies? https://www.joekearney.co.uk/posts/sbt-two-artifacts-one-source

This ticket covers Scala 2.12 version. New ticket for Scala 2.11 at #56


Update simulateTransactions to match RPC 0.4

Describe your changes

[x] Change endpoint name starknet_simulateTransaction to starknet_simulateTransactions
[x] Bump devnet to 0.6.2 (supports starknet_simulateTransaction)
[x]  Simulation Flags: remove SKIP_EXECUTE, add SKIP_FEE_CHARGE
[ ] Change deserilizer - none of the properties seem to be required
Linked issues

Closes #307
Breaking changes

[x] This issue contains breaking changes

Not compatible with starknet_simulateTransaction (RPC 0.3)

Blocked for now, pending confirmation on the intended state of TRANSACTION_TRACE schema


quinn dependencies are pulled in even if not using the http3 feature

as the title states...

Are you sure? I just checked the Cargo.toml, and it's all correctly set to optional. And when I create a new project and depend on just reqwest, I don't see quinn downloaded.

I use several features in my project that may be pulling it in...
If you check this dependabot PR for reqwest 0.12.5 - you can see the cargo.lock file has quinn
https://github.com/jqnatividad/qsv/pull/1889

You're correct. If you enable rustls-tls, since that has a quinn?/ring dependency, it gets added. It doesn't get compiled, though.
It seems like it is this bug in cargo: https://github.com/rust-lang/cargo/issues/10801


Allow diversion of a percentage of traffic to the proxying to S3 solution

We want to be able to set an environment variable to determine the percentage of traffic to use the proxying to S3 solution. The remaining traffic will be served via sendfile as before. This will allow us to gradually rollout the new solution while monitoring its effect on production load.
Note that the environment variable will need to be added to govuk-puppet. Ideally we'd like to be able to hard-code the value in different environments within that repo as per #136.
Todo

[x] Update asset-manager app
[x] Update govuk-puppet
[ ] Test the change on integration

I'm un-assigning myself from this now that I've merged #152. I think the plan is that @chrisroos will pick up the govuk-puppet aspect of this issue.

I've opened a PR to add the environment variable to govuk-puppet - https://github.com/alphagov/govuk-puppet/pull/6351.

I've now merged the changes in https://github.com/alphagov/govuk-puppet/pull/6351. This should allow us to set the PROXY_PERCENTAGE_OF_ASSET_REQUESTS_TO_S3_VIA_NGINX environment variable to control the percentage of requests we respond to by serving assets hosted on S3.

I'm going to wait until the govuk-puppet change has been deployed to integration so that I can test this behaviour before closing the issue.

I've just tested this in integration and am confident that it's working as expected.
I manually modified the value in /etc/govuk/asset-manager/env.d/PROXY_PERCENTAGE_OF_ASSET_REQUESTS_TO_S3_VIA_NGINX and used the deploy:with_hard_restart Jenkins job to force a reload of asset-manager app. I uploaded a file to asset-manager and used curl to request that file from the Rails app directly (i.e. bypassing nginx).
With PROXY_PERCENTAGE_OF_ASSET_REQUESTS_TO_S3_VIA_NGINX set to 100, I saw that all responses contained the X-Accel-Redirect header instructing nginx to proxy the request to S3.
With PROXY_PERCENTAGE_OF_ASSET_REQUESTS_TO_S3_VIA_NGINX set to 50, I saw that about 50% of the response included the X-Accel-Redirect header.


update libxml2-dev version to fix breaking build

https://github.com/Shippable/pm/issues/8930

this is done closing


refactor: prettier migration

This PR retires the now deprecated tslint and migrates over to brighter pastures with Prettier, while bringing "best practices" into alignment with vue-next.
This gives an insight of what Vuex ORM could potentially adopt.
TSLint (removed)
TSLint is deprecated and users are encouraged to move on to ESLint. Since this plugin is written in TS, it can be safely substituted by Prettier.
Prettier (added)
Prettier conforms defacto standards and practices, and is a preferred formatter in TS codebases, also integrated into vue-next. In parallel, lint-staged is included as a pre-commit git hook to keep code in the repo consistent.
Jest (refactored)
Jest makes use of the ts-jest preset with supplementary configuration. The configuration also moves away from package.json to a standalone jest.config.js file to align with "best practices".

Nice! 🙌  Thank you so much 👍


Add an option to delay between downloads

I'm getting this  HTTP Error 429: Too Many Requests a bunch. An option to set a delay between grabs would be fantastic.
Thanks!

You can control the delay between downloads using youtube-dl's --sleep-interval option:
--sleep-interval SECONDS

Number of seconds to sleep before each download when used alone or a lower bound of a range for randomized sleep before each download (minimum possible number of seconds to sleep) when used along with --max-sleep-interval.

--max-sleep-interval SECONDS

Upper bound of a range for randomized sleep before each download (maximum possible number of seconds to sleep). Must only be used along with --min-sleep-interval.

 If not you might need to get a new IPv4 IP or use a proxy:
https://github.com/ytdl-org/youtube-dl#http-error-429-too-many-requests-or-402-payment-required
There's been github issues about this problem for years, though it appears there's been an influx of new ones related to it beginning around July 9th:

https://github.com/ytdl-org/youtube-dl/issues?page=1&q=HTTP+Error+429&utf8=✓
https://github.com/ytdl-org/youtube-dl/issues/21729

You might want to explore those issues for other potential solutions.

Well, that'll work. Hopefully, I don't need to get a new IPv4 address. On that note, why you do you specify the --force-ipv4 flag?

On that note, why you do you specify the --force-ipv4 flag?

Mostly because performance was significantly better over IPv4 during initial testing (2 years ago), and because a lot of people experience issues with YouTube blocking IPv6 addresses of various hosts (OVH, DigitalOcean, etc.) due to abuse.
If you have IPv6 setup, feel free to remove the flag and see how things are. If it's fine, that might be all you need to avoid the 429 error.


Return object with results of downloads

Like, header info, image location, etc.

It is now setup to return axios respons object for each image after download is complete. I could probably clean that up and send more relevant object info, but for now it's good.


PHPLIB-955: Require PHP 8.1

PHPLIB-955
The first commit updates the requirement in composer.json and updates CI configs. In the second commit, I applied all automated fixes from phpcbf. This mainly affects the use of union types as well as the mixed type.
A couple of notes on phpcs rules:

The "DisallowedShortNullable" rule was disabled, as it would change all ?Type types to Type|null. I prefer the short syntax over the consistency with other union types (e.g. Type|Other|null)
The rule requiring constructor property promotion was disabled as it caused some invalid syntax, for example by adding a default value to a constructor parameter when other parameters after it don't have a default value. I'll investigate and create a bug ticket for this.

Marking this ready for review. I'll revisit the failing tests shortly, as I suspect those will be fixed by #1373


Blog Reactions

Summary

Like button below blog posts.
Comment Section to have a thread like discussion

Basic example
Reddit
Motivation

Helps to increase direct interaction between the viewer and the owner.
Also we can sort the blogs on the basis of likes

I see the added value, but this is not something for Doks core — more likely an Integration or a Recipe.


deep learning drizzle webpage

Hi @off99555 ,
I do have a webpage named: deep-learning-drizzle.github.io. Please feel free to backlink it!

Is this link the same as this repo: https://github.com/kmario23/deep-learning-drizzle?
If it is I've already added it to my page a long time ago.

Sorry, yes!


Fix typo

Learn Build status updates of commit 1b20bf9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

data-explorer/kusto-emulator-install.md
:white_check_mark:Succeeded

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 learn.microsoft.com contributor guidesPost your question in the Learn support channel

@shsagir,
Can you review the proposed changes?
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


Fix fontSize larger because of fontWeight

#5191
If calculate text ascent & descent with fontWeight, the ascent & descent unequal with normal one.
So the properties.fontSize will be larger.

So had quick look!
My immediate worry is that this could subtlety change how text is aligned for existing content in v4, so my initial thought would be for v5 only.
My second thought is that this then leads down a bit of a rabbit hole. Because what about 2 bits of text where one has italics and one doesn't? Or one has smallcaps and the other doesn't? The reality is, that the parts that make up the fontString
${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${fontSizeString} ${fontFamilies.join(',')}
All do actually change the size of the font that is rendered. So to then not take into account measuring just on aspect? Doesn't seem right to me.
Finally, you can achieve the look you are going for via using the trim property on text style: https://jsfiddle.net/5tnd7v10/
So I'd either go down the trim route, or override PIXI's TextMetrics.measureFont function to eliminate parts of the font string you personally don't want to worry about
(and if you do that, for what it's worth, I'd manipulate the font string as the very first thing you do, so that the caching here works independent of 'boldness')
        if (TextMetrics._fonts[font])
        {
            return TextMetrics._fonts[font];
        }

Second: I'm not sure it should work


The BootstrapAwareContentAreaRenderer always loaded the DisplayModes from the DDS

The BootstrapAwareContentAreaRenderer always loaded the DisplayModes from the DDS regardless what provider was being used witch resulted in it not finding the displaymodes in the DefaultProvider.
I changed it so that it instead uses the IDisplayModeFallbackProvider to load Displaymodes.

Thanks! Seems like this has not been tested properly. Fixed. Available in 2.0.2 on nuget soon.

Look for 2.0.2 version on nuget feed.