Chart with multiple Y axes?

It it feasible to create one chart from the following type data where all data shares the same X values (timestamp) along with one or more Y values? Some of the Y values such as the three "cpu" values share the same units (percent) and can be overlaid on the same chart. But displaying cpu along with temp (deg F) either need an extra Y axis in order to overlay or a separate sub-chart similar to the way the Stock chart shows both Open/High/Low/Close and Volume on the same chart. Ideally I'd like to let a user select which of the eight Y values to add to the chart and then my program would build the chart. The goal is to look for correlations between the different Y values.
Example: https://stackoverflow.com/a/50655786/487992
                     time   rxxx_cpu   pg_cpu   other_cpu   reads   writes     du   temp   ctree
0     2020-08-05 05:00:00        0.0      0.0         0.3       0       95      0    111       0
1     2020-08-05 05:00:10        0.0      1.2         0.3    2782      170     60    113       0
2     2020-08-05 05:00:20        0.0      1.0         0.3    1642      193   7024    113       0
3     2020-08-05 05:00:30        0.0      1.0         0.2    1814      156   8320    114       0
4     2020-08-05 05:00:40        0.0      1.3         0.3    1654       59   9592    114       0
...                   ...        ...      ...         ...     ...      ...    ...    ...     ...
5141  2020-08-05 19:18:40        0.0      0.5         0.3     864       85  17840    118       0
5142  2020-08-05 19:18:50        0.0      0.5         0.3     842       40  17904    118       0
5143  2020-08-05 19:19:00        0.0      0.5         0.3     744    18354  17492    118       3
5144  2020-08-05 19:19:10        0.0      0.5         0.2     488       78  17808    118       0
5145  2020-08-05 19:19:20        0.1      0.6         0.3     648      172  17932    118       3

Maybe I should first try to get it working with Plotly instead of JustPy. Assuming I can combine these two examples.
https://plotly.com/python/time-series/#time-series-with-range-selector-buttons
https://plotly.com/python/multiple-axes/#multiple-axes

This can be done using highcharts in JustPy:
https://www.highcharts.com/demo/combo-multi-axes

Thanks


Don't run charon on build scripts

By default, cargo calls our driver on build scripts. This obviously fails to compile since we don't generate a binary. To avoid that, I copied what Miri does, which involves careful use of the --target flag. This allows us to detect when we're called on a build script and run rustc normally instead of the charon driver.
Fixes #190

I don't think so, let's merge it


Allow search page to maintain state when navigating to a new route.

Description
Currently the maintainState property of the SearchDelegates' PageRoute is hardcoded to false. Setting this to true will allow users to navigate to a new page to see more details about a certain result without rebuilding the search results and resetting the scroll position.
Related Issues
#43582
Tests
None
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I signed the CLA.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require Flutter developers to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (Please read Handling breaking changes). Replace this with a link to the e-mail where you asked for input on this proposed change.
[x] No, this is not a breaking change.

Hi @randyhammond, do you have any progress or updates on this PR? I know it's been a while since your opened it before anybody had the chance to comment on it, so don't feel any added pressure to continue work on it. However, this seems like a good feature and we'd like to have it if you're able to continue!

@shihaohong – Sorry, I've long since moved on and ended up going a different route. After rereading the descriptions of showSearch and SearchDelegate it was clear that this was not intended to be used as a persistent page but more so as a temporary modal dialog, i.e., both descriptions specifically state that SearchDelegate.close should be called after a result is selected.
However, I am willing to make some changes and add a test if it will help others out. I agree with @goderbauer that maintainState is exposing implementation details and it would be best to make it a getter than can be overridden. If you think that would be an acceptable solution then I’ll submit another pull request with the necessary tests.

Since an issue was created requesting for the feature (https://github.com/flutter/flutter/issues/43582), I think the need is for a persistent version of showSearch or SearchDelegate. Based on the docs, I agree that it doesn't seem to be intended to be used as more than a temporary modal dialog. If we do plan on repurposing its functionality to allow for either persistent or temporary usage, we should make sure that we're clear in the API documentation.
We could create a new persistent search functionality as well, but that seems like overkill if the existing function and delegate can work in such a way with a small change.

@shihaohong - Perhaps a plugin based on the current SearchDelegate would be better? I could be wrong, but I don't think there are any other full screen pages similar to this built in to Flutter. A plugin would allow for more rapid development and also make it easier for developers to fork and customize.

Is there an alternative solution-plugin for this situation?

Is there an alternative solution-plugin for this situation?

@ztigunes You can copy the search.dart file into your project, make the changes from this pull request, and then import it as shown below:
import 'search.dart' as customSearch;

class SearchDelegatePage extends customSearch.SearchDelegate {
  SearchDelegatePage(this.state) : super(maintainState: true);
...
}


add the struct package english docs

RT

Codecov Report
Patch and project coverage have no change.

Comparison is base (5e66bc6) 82.97% compared to head (74c520e) 82.97%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@           Coverage Diff           @@
##             main      #82   +/-   ##
=======================================
  Coverage   82.97%   82.97%
=======================================
  Files          54       54
  Lines        5028     5028
=======================================
  Hits         4172     4172
  Misses        632      632
  Partials      224      224

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


classname:_init is inherited exactly one level and that is confusing

I am a longtime user of Penlight, I make especially heavy use of the class module.
I found something today. I check out a copy of Penlight 1.6.0. I run lua5.1 and run the following:
> class = require("pl.class")
> class.A()
> function A:_init(x) print(x) end
> A(3)
3
> class.B(A)
> B(4)
4
> class.C(B)
> C(5)
>

B inherits from A, C inherits from B. Only A has an explicit constructor. B inherits A's constructor, but C does not inherit a constructor.
This feels like a bug, it's not in the documentation. In my testing, methods other than _init can be implicitly inherited multiple levels deep without problems.
My expected behavior is that if I don't override the constructor, it should be inherited as many levels deep as the hierarchy goes.

Looking at the class.lua code, the problem seems to be that call_ctor() walks all the way up the chain looking for a  _init to call, but mt.__call explicitly checks only rawget(c,'_init') and rawget(base,'_init') and then gives up.
Is there some reason _init could not be "fat inherited" into the class object the same way methods are?

Is there any progress on including this? I just spent quite a while bashing my head against an issue that turns out to have it's root in my expectation of this exact things being fixed.


Improve loading state

The OperationResponse.loading state is currently set as a function of data and errors (i.e. if both are missing).
We should figure out how to improve this so that additional requests with the same ID update the loading state of previous responses.

Can we pass a completer with the request to the stream and complete it after handling the response? Like passing context to the cache?

How would this be different than simply subscribing to data events on the stream?
This issue is about switching the loading state back to true when a new compatible request is in flight (so you can show a loading indicator, for example).

Are there any recommended workarounds until it is implemented in the library? It is important to know the loading status of paginated requests...

I think the loading state has a bad design which is especially troublesome with mutation calls. The initial loading state is true even if executeOnListen is set to false.
It is important because we are disabling the button which calls the mutation based on the loading state, which is not returning the correct value.


Show an odd layout after updating the default user with an invalid and long UPN

Storage Explorer Version: 1.7.0_20190409.1
Platform/OS: Linux Ubuntu/macOS High Sierra/Windows 10
Architecture: ia32/x64
Regression From: Not a regression
Steps to reproduce:

Expand one ADLS Gen2 account -> Blob Containers.
Right click one blob container then select 'Mange Access...'.
Try to edit the default user with an invalid and long UPN like<EMAIL_ADDRESS>
Expect Experience:
The layout shows well.
Actual Experience:
Show an odd layout.

This was fixed in 1.8.0


Download transcript files

Feature Request
Is your feature request related to a problem or unsupported use case? Please describe.
In the same way we can download videos, we would like to download the transcripts associated to the video.
Describe the solution you'd like
When a transcript is activated, a link to download it can be added. If we click on it the file should be downloaded.
Describe alternatives you've considered

download an archive containing all timed text tracks
download an archide containing all transcripts
create a list with all downloadable timed text tracks. Each link start the download of the associated file.

Just a quick note: when implementing transcript and subtitle downloads, we'll have to make sure we don't provide broken subtitle files because of HTML escaping per #552.


ECONNRESET not handled

There was an issue in Node.js regarding keepAlive connections when the ECONNRESET occurred.
This was fixed (https://github.com/nodejs/node/issues/3595) but it involved adding a new 'error' listener on a free socket. The problem is you remove this protection after the protocol negotiation: https://github.com/molnarg/node-http2/blob/master/lib/http.js#L969
Normally another protection is added when the stream ends by Node.js (https://github.com/nodejs/node/blob/master/lib/_http_client.js#L500), but this event does not occur. Maybe because the stream in the http2 connection never ends (not sure about this maybe you can clear this up).
And by the way @felicienfrancois resolved some pretty important issues regarding the client side and Agent option. You should really consider integrating his pull requests.

I also encountered the same problem


Mark stack as non-executable

We have received a bug report mentioning that the shared library is built with an executable stack (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=793320 for more details). This PR contains a patch by Russell Coker to remove the executable bit.

Thanks for the patch! I am currently working in the "unicode" branch, and so just to be clean I'll wait until after I merge back to Master to pull this (which should not be long).

Merged. Thanks for the patch!


Does not work with the latest version of Synergy V3

Duplicate of https://github.com/Richienb/synergy-serial/issues/34


Add "no known copyright" icon to the card image viewer page

Added the icons to all three screens (for desktop, tablet, and mobile), and
added "previous" and "next" arrows to the desktop version + updated all on Zeplin.


Create test.py

First file on GitHub!

1st time ever using Git, so I'm hoping this is how I create a new user directory for pyrobotlab...  Hopefully first of many!


Lung anatomogram doesn't show heatmap entering alveolus cross-section (even though there is data)

One weird behaviour I noticed is the following in lung:
https://wwwdev.ebi.ac.uk/gxa/sc/experiments/E-GEOD-130148/results/anatomogram
Going deeper through the zoom ins, results in the heatmap disappear and then appear again.
Click through to the alveolus cross section, I see the heat map showing "no results" but the 2 cell types are highlighted and hoverable. When I click on the shape, the corresponding expression appears.
So in the previous image I saw the 2 cell types in the heat map, clicked on the zoom in to the alveolus cross section, they disappeared, but selecting a particular cell type brings up results from the empty heat map.
Before entering the zoom-in (data in the heatmap):

Entering cross section (no results):

After clicking on cell type (results in the heatmap):

I don't know if that is the intended behaviour but I would have expected the results not to disappear when selecting the zoom in for the cell types that have their shape in the zoom in and data available.

Duplicate of https://github.com/ebi-gene-expression-group/atlas-web-single-cell/issues/121.


Fix the description of --name parameter

Fixes Azure/azure-cli#22003 Updates the documentation for the --name parameter to have just lowercase.
Description

Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

[x] I adhere to the Error Handling Guidelines.

acr

@zhoxing-ms @jsntcy Could you please review and approve this PR once you get a chance ? Awaiting your reply.

@jsntcy Thanks for approving this PR. Could you please merge this once you get a chance ? cc @zhoxing-ms


Spritesheet Fails to parse

This spritesheet and its meta file are failing to parse.
Repo steps:

Select all sprites (might be able to do this with just one)
Replace string "SW_Pit" with "SWPit"
Rename, observe error

Here's the meta file as text:
SW_Pit.png.txt
**Unable to parse YAML file: [could not find expected ':'] at line 55
UnityEditor.AssetDatabase:ImportAsset(String)**

SpritesheetRenamer.RenameSprites()
Assets/RedBlueGames/MulliganRenamer/Editor/SpritesheetRenamer.cs:118

BulkRenamer.ApplyNameDeltas()
Assets/RedBlueGames/MulliganRenamer/Editor/BulkRenamer.cs:148

BulkRenamer.RenameObjects()
Assets/RedBlueGames/MulliganRenamer/Editor/BulkRenamer.cs:197

MulliganRenamerWindow.OnGUI()
Assets/RedBlueGames/MulliganRenamer/Editor/MulliganRenamerWindow.cs:389

GUIUtility.ProcessEvent()

Fixed in develop-1.4.0. The issue was that these sprites had a leading number in their name. The replacement regex "$1" + newName + "$2" got confused when newName contained a leading number. I fixed this by using a replacement match delegate that explicitly references the groups.


fix: prefix validation

Description

https://github.com/terraform-ibm-modules/terraform-ibm-landing-zone/issues/555
Release required?

[ ] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

Merge actions for mergers

When merging, use a relevant conventional commit message that is based on the PR contents and any release notes provided by the PR author. The commit message determines whether a new version of the module is needed, and if so, which semver increment to use (major, minor, or patch).
Merge by using "Squash and merge".

/run pipeline

/run pipeline

/run pipeline

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

GitHub release
v4.6.5

Your semantic-release bot :package::rocket:


Fix action

The action wasn't working in it's current state.
The code for downloading tuist didn't handle the redirect and wasn't async. The next commands weren't waiting for the download to finish and would failed.
I also renamed the tuist exec to 'tuistexec' because the action could fail if you already had a directory named 'tuist' at the root of your project.
Fix for #2

@all-contributors add @PhilippeWeidmann for code


Different windows 7 installers

Besides the obvious 32 bit installer what's the difference between the multiple other variants?

The main difference is in instruction set support. You may need to check the following websites to understand the differences between different instruction sets such as SSE3, AVX, and AVX2.
https://en.wikipedia.org/wiki/SSE3
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
Different instruction sets involve differences in operations, algorithms, CPU functions, and performance. You may also need to get more information on the Internet.

The main difference is in instruction set support. You may need to check the following websites to understand the differences between different instruction sets such as SSE3, AVX, and AVX2.
https://en.wikipedia.org/wiki/SSE3
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions
Different instruction sets involve differences in operations, algorithms, CPU functions, and performance. You may also need to get more information on the Internet.

Thanks for the quick reply.
The CPU on said system supports all 3 instruction sets as per the specifications listed on the manufacturers website. Which of the 3 should I install in this case?

If it were me, I would probably choose the AVX2 version first, but please note: the version chosen and the performance of the corresponding version are all individual.
@Candlemass

If it were me, I would probably choose the AVX2 version first, but please note: the version chosen and the performance of the corresponding version are all individual.
@Candlemass

@gz83
Cheers.


Link to the GitHub repo from npmjs

Hi! Thanks so much for this useful project! Just a little tweak which will add a link to this repo from the npmjs site (after publish).
Ref: https://docs.npmjs.com/files/package.json#repository

Coverage remained the same at 98.462% when pulling<PHONE_NUMBER>7c831a48660ded5c9dfcb1eb20b859 on paulmelnikow:patch-1 into c0c8adaba3f4ee98dd140f2e5a888db6266bdc49 on akira-cn:master.


White 2021

Publication DOI or URL
https://www.mdpi.com/2079-7737/10/12/1324
Additional context
No response

Oops, got the name wrong first time around - shouldn't rely on google scholar...

Problematic due to ENA table missing half the info...

"..no data availability yet for the paper because the data is used to write up a second paper.  Data will be available on NCBI when paper 2 comes out.."

@DianaSpurite Toni has very kindly reuploaded the data for us so you can start again on this one!

Apparently there was a problem again, Toni is investigating again


Feature Request: Winfsp.Launcher service

Example service, I'm not super sure how this driver would work here, as there's no real argument documentation.
❯ Get-ItemProperty HKLM:/SOFTWARE/WOW6432Node/WinFsp/Services/memfs64

Executable   : ~\scoop\apps\winfsp-np-beta\current\install\bin\memfs.exe
CommandLine  : -i -F NTFS -n 65536 -s 67108864 -u %1 -m %2
Security     : D:P(A;;RPWPLC;;;WD)
JobControl   : 1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services\memfs64
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WinFsp\Services
PSChildName  : memfs64
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

Not sure what you're asking here. This component already uses winfsp. Do you care to elaborate?

This component is intended to be used as a library or a gRPC service (telepresence uses it when mounting ftp volumes). It's "documentation" is fuseftp.proto. If you want to extend that functionality with scripts, docs, etc. then a PR will be welcomed, but I don't think the current maintainers of this project will make such additions.

@brian6932 , please note that this repository was moved from the datawire to the telepresenceio organization today.


🐛 Bug Report: LDAP plugin-catalog-backend-module-ldap schedule does not work.

📜 Description
The LDAP plugin schedule does not work.
👍 Expected behavior
I expect that every 60 minutes, the plugin scans LDAP to find new entries.
👎 Actual Behavior with Screenshots
The new entries are not added into Backstage.
👟 Reproduction steps

Setup LDAP with:

builder.addEntityProvider(
    LdapOrgEntityProvider.fromConfig(env.config, {
      id: 'immobiliare-ldap',
      target: ldapAddress,
      logger: env.logger,
      schedule: env.scheduler.createScheduledTaskRunner({
        frequency: Duration.fromDurationLike({ minutes: 60 }),
        timeout: Duration.fromDurationLike({ minutes: 15 }),
      }),
      groupTransformer: customGroupTransform,
      userTransformer: (vendor, config, user) =>
        customUserTransform(vendor, config, user, env.config),
    }),
  );

Add a new user into LDAP.
Wait for the task schedule.

📃 Provide the context for the Bug.
No response
🖥 Your Environment
No response
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
None

@antoniomuso
try like this
schedule: env.scheduler.createScheduledTaskRunner({
      frequency: { minutes: 1 },
      timeout: { minutes: 15 },
    }),

Thank you, I was using an old version configuration of the plugin. It works!


Eng 150 improve documentation for near contract tools

https://near-foundation.atlassian.net/browse/ENG-150?atlOrigin=eyJpIjoiZTE0NTIzMDM3MzNjNDU3MjlmZjQ4N2Q5OGNjZDAzMDUiLCJwIjoiaiJ9

If recordings are a good idea, I can create better quality ones with my studio mic, etc. I don't think my janky, unscripted Zoom call explanation is really putting our best foot forward 😅

@encody We could think about this video as just a first draft. I think it's pretty good. Certainly better than nothing (which is why you offered the walkthrough to us).


Remove old references to tf_ops

Fixes #474.

Codecov Report

Merging #485 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #485   +/-   ##
=======================================
  Coverage   99.79%   99.79%
=======================================
  Files          28       28
  Lines        2386     2386
=======================================
  Hits         2381     2381
  Misses          5        5

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 70c1153...ea0d8ef. Read the comment docs.


Failed to get execution log: java.net.SocketTimeoutException: connect timed out

I am trying to have a log file send when a job fails, but that fails with:

-01 13:45:25,581] web.requests "GET /menu/homeAjax" <IP_ADDRESS> https nohdke form 13 ? [application/json;charset=utf-8] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)

[2019-07-01 13:45:25,602] web.requests "GET /tour/listAll" <IP_ADDRESS> https nohdke form 5 ? [application/json;charset=utf-8] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)

[2019-07-01 13:45:25,767] web.requests "GET /execution/ajaxExecState/232" <IP_ADDRESS> https nohdke form 52 ? [application/json;charset=utf-8] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)

[2019-07-01 13:45:25,859] web.requests "GET /static/images/icon-tiny-disclosure-waiting.gif" <IP_ADDRESS> https  form 4 ? [image/gif] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)

[2019-07-01 13:45:26,373] web.requests "GET /static/images/icon-tiny-disclosure-waiting.gif" <IP_ADDRESS> https  form 3 ? [image/gif] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)

Failed to get execution log: java.net.SocketTimeoutException: connect timed out`

I do receive a Telegram message (correctly formatted), just no logfile. The API is correct, I triple checked.
Any ideas what I could try?
rundeck 3.0.21.

I think I cut the log file to early. These lines appear immediately after the ones above in the log:
`
[2019-07-01 13:45:27,388] web.requests "GET /execution/ajaxExecState/232" <IP_ADDRESS> https nohdke form 16 ? [application/json;charset=utf-8] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)
[2019-07-01 13:45:33,490] web.requests "POST /execution/tailExecutionOutput" <IP_ADDRESS> https nohdke form 148 ? [application/json;charset=utf-8] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 OPR/60.0.3255.170)`
"/execution/tailExecutionOutput/232" does return an XML formatted log file. Is the timeout maybe too low? Or is it because the job id doesn't appear in "POST /execution/tailExecutionOutput"?

Update: I think now this is because of my docker container not being able to reach the host containers ports.


FHIRValidationException on absolute ElementDefinition.contentReference

When validating against a profile, we're getting fatal exception. FHIRValidationException: An error occurred during validation.
FHIR team troubleshooting found the issue was with our profile snapshot.  FHIR server was expecting a relative reference, but our profile had an absolute reference instead.
The constraint generator currently assumes: ElementDefinition.contentReference are in this form #.
But ours looked more like this:  http://hl7.org/fhir/StructureDefinition/Observation#Observation.referenceRange.
FHIR team said the FHIR server ConstraintGenerator cannot currently handle this particular element definition.  The irony is that this particular ElementDefinition doesn’t even generate a FHIRPath constraint… its just that the ConstraintGenerator has an issue processing it looking for constraints.  We should handle this scenario more gracefully.

I contacted the person who reported the issue.  He verified that it is working fine now.  Closing the issue.

I contacted the person who reported the issue.  He verified that it is working fine now.  Closing the issue.


Removed check for Debug so that we always log exceptions.

some nosetests are still failing.
Will close #1099

changing the default for DEBUG might be a better short-term approach.
Kevin Osborn<EMAIL_ADDRESS>writes:

some nosetests are still failing.
Will close #1099
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
You can view, comment on, or merge this pull request online at:
https://github.com/ga4gh/server/pull/1100
Commit Summary
• Removed check for Debug so that we always log exceptions.
File Changes
• M ga4gh/frontend.py (3)
Patch Links:
• https://github.com/ga4gh/server/pull/1100.patch
• https://github.com/ga4gh/server/pull/1100.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub*

I'm fine with this as a short-term workaround while we implement proper logging. Not sure why the tests are failing, looks pretty strange. If you like you can put in a check for testing (I'm sure the Flask server sets this somewhere in the config) to suppress the stack dump in this situation (again, as a workaround).

Tests now pass. The earlier failures were due to the test code generating request exceptions without going through the request pathway, thus they were out of context.
... but
It turns out that app.log_exception() doesn't generate any output if the flask debug flag is off. So my earlier change was insufficient. Added basic logging to stderr and now we see the output again.  There are some tradeoffs to this approach:

Exceptions generated when running in the development mode will be printed to the console twice, once by flask and once by us.
The nose tests will generate a lot of exception output which will give you a scare until you realize that many of these are negative tests. All tests run OK in the end.

Someone might have an idea on how to avoid the first drawback above. If so I would love  to hear it :-)

thoughts:
for #1, on this page, it looks like one is not suppose to mess with the logger
if debugging is enabled and set it if it is not:
http://flask.pocoo.org/docs/0.10/errorhandling/
there maybe subtleties with debugging turned on and handling
exceptions.  Probably following this paradigm is good.
For #2, we could just setup a logger that sends the output to a
file instead of stderr, but I don't know how nose works so I
don't know any drawbacks.
Kevin Osborn<EMAIL_ADDRESS>writes:

Tests now pass. The earlier failures were due to the test code generating
request exceptions without going through the request pathway, thus they were
out of context.
... but
It turns out that app.log_exception() doesn't generate any output if the flask
debug flag is off. So my earlier change was insufficient. Added basic logging
to stderr and now we see the output again. There are some tradeoffs to this
approach:
• Exceptions generated when running in the development mode will be printed
to the console twice, once by flask and once by us.
• The nose tests will generate a lot of exception output which will give you
a scare until you realize that many of these are negative tests. All tests
run OK in the end.
Someone might have an idea on how to avoid the first drawback above. If so I
would love to hear it :-)
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub*

I looked at the flask code and debug mode adds it's own logger,
hence the prescription to only add a logger if debug is not
enable.
Kevin Osborn<EMAIL_ADDRESS>writes:

Tests now pass. The earlier failures were due to the test code generating
request exceptions without going through the request pathway, thus they were
out of context.
... but
It turns out that app.log_exception() doesn't generate any output if the flask
debug flag is off. So my earlier change was insufficient. Added basic logging
to stderr and now we see the output again. There are some tradeoffs to this
approach:
• Exceptions generated when running in the development mode will be printed
to the console twice, once by flask and once by us.
• The nose tests will generate a lot of exception output which will give you
a scare until you realize that many of these are negative tests. All tests
run OK in the end.
Someone might have an idea on how to avoid the first drawback above. If so I
would love to hear it :-)
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub*

Hmm, this is tricky. Perhaps we could just duplicate the code that Flask uses to add the logger in DEBUG mode, without turning on DEBUG? However, the present workaround is fine if you want to get something in quickly --- we can worry about spamming the output of nosetests later.

The flask documentation gives clear guidance on how setup logging
and app.debug
http://flask.pocoo.org/docs/0.10/errorhandling/

Jerome Kelleher<EMAIL_ADDRESS>writes:

Hmm, this is tricky. Perhaps we could just duplicate the code that Flask uses
to add the logger in DEBUG mode, without turning on DEBUG? However, the present
workaround is fine if you want to get something in quickly --- we can worry
about spamming the output of nosetests later.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub*

+1.

on the call we decided to merge this (before the release)... merging now...


logger: fix missing macro in RTT backend, when blocking mode is selected

This simple patch fix compiler error when RTT blocking mode is selected.
Signed-off-by: Pavel Kral<EMAIL_ADDRESS>

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@5fcae97). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master   #11327   +/-   ##
=========================================
  Coverage          ?   51.58%
=========================================
  Files             ?      216
  Lines             ?    27671
  Branches          ?     6938
=========================================
  Hits              ?    14274
  Misses            ?    10648
  Partials          ?     2749

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 5fcae97...1d89d36. Read the comment docs.


RM: linux: Add detail on how to use the LmP generated SDK

Signed-off-by: Daiane Angolini<EMAIL_ADDRESS>Readiness

[x] Merge (pending reviews)
[ ] Merge after date or event
[ ] Draft

Overview
Add the instructions on how to install the created SDK install script, and show how to build a common helloworld.c
Checklist

[x] Run spelling and grammar check, preferably with linter.
[x] Avoid changing any header associated with a link/reference.
[x] Step through instructions (or ask someone to do so).
[x] Review for wordiness
[ ] Match tone and style of page/section.
[x] Run make linkcheck.
[x] View HTML in a browser to check rendering.
[x] Use semantic newlines.

Docs for f0468384f01c51cceb71e5c42a4afe34bea42616 are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1936/docs/artifacts/html/index.html

Docs for 08a8433d8a3c62e7513538c0ad492576b32efdb4 are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1943/docs/artifacts/html/index.html

Docs for 7d403d405a3474cdb1ab25e0c80f17cc769a4ccb are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1946/docs/artifacts/html/index.html

Docs for<PHONE_NUMBER>4a34104f9e9e950a8562018d7a861f are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1947/docs/artifacts/html/index.html

@kprosise review accepted

Docs for c5f079f145add0eec9cf81d4848dd6dc65ea10cc are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1950/docs/artifacts/html/index.html

@kprosise done - review accepted

Docs for d2a1dbb65be2d57b0005d8fa2ecc39dea9465f1e are browsable at: https://ci.foundries.io/projects/fio-docs/builds/1951/docs/artifacts/html/index.html

Link failure appears to be unrelated, however does not appear to still be an issue, can be ignored.

@angolini it LGTM, you may add another reviewer if you wanted, or go ahead and merge.


Gulp-sass error handling while watch tusk running

Use this .on('error', sass.logError) instead of plumber plugin to handle sass errors

Reopened there as the playground and core repository https://github.com/orlovmax/front-end-scaffold/issues/49


invalid_client on "Connect Accounts"

From a clean download of the aiia-sample, when I create a user and click "Connect Accounts" I get redirected to:
https://api.aiia.eu/v1/oauth/connect?client_id={my_client_id}&response_type=code&redirect_uri=https://localhost:44391/aiia/callback&scope=accounts
But that gives me an error:
400. This is an error, more details below

invalid_client

Client authentication failed, such as if the request contains an invalid client ID or secret.

I have changed the following (in both appsettings.json and appsettings.Development.json):
"ClientId"
"ClientSecret"
"LoginCallbackUrl"
"WebHookSecret"
To my own values and I can see my client_id in the url when redirected.
Am I missing something?

Hello Anda!
Thank you for trying out Aiia!
The best way to get familiar with the capabilities of our API would be to check out our online documentation and use our Postman collection:

https://docs.aiia.eu/#/
https://docs.aiia.eu/#/other/samples

We can offer support on your test/integration efforts through our support channel<EMAIL_ADDRESS>Shoot us an e-mail there in case you come across any hurdles with our Postman collection.
Looking forward to hearing from you!

Latest master contains a fix for the invalid configuration in appsettings.Development.json.


Can I implement Face Detection in SSD MobileNet keeping the standard coco objects?

I'm quite new in the world of cv and I have a question, i hope that someone more experienced than me can give me a suggestion. Is it possible to implement a Face Detection in SSD mobilenet? I mean can I use transfer learning to add "faces" as a object to the model?
My goal is to have all the default coco objects (person, car ecc) and add the object "face" so all of them can be detected. Thank u :)

It's possible if you have a right dataset.


Error in calling requests.py

Following error was encountered while running tih.py
File "C:\FAST\Anaconda\2.0.1\lib\site-packages\requests\adapters.py", line 378, in send
    raise ProxyError(e)
requests.exceptions.ProxyError: ('Cannot connect to proxy.', error('Tunnel connection failed: 403 Forbidden',))

New commit addresses the error.


metasploit: 6.1.16 -> 6.1.17

Motivation for this change
Update to latest upstream release 6.1.17
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

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

1 package built:

msf (metasploit)


eager scaling strategy for ScaledJob does not work as documented (or intended?)

Report
This form prompts me to be clear and concise, and I will try to be very clear but fear that will not be very concise (apologies)
I was trying to understand the difference between the default and eager scaling strategies of ScaledJob (see https://keda.sh/docs/2.16/reference/scaledjob-spec/#scalingstrategy)
In short

I do not think the documentation on the eager strategy is correct, either about the behaviour of default or the behaviour of eager
I think the implementation of eager may be bugged, but it's hard to tell what the intention is since I believe it is already given by default

The documented behaviour

the ScaledJob spec has this phrase “The number of the scale” – the number of jobs that will be created on a given poll
a key point is that the scaling behaviour differs from a ScaledObject: where for example in a Deployment, if you have 5 items on the queue (in progress), then you need to set the number of replicas to 5 (setting it to less would shut down running pods). But jobs are not managed after creation, so if there are 5 jobs running and 5 jobs on the queue, then (normally) the correct number of jobs to create is zero (except for when jobs are consumed from the queue, in which case the accurate strategy is required)
when scaling strategy is set to default, this is calculated as maxScale - runningJobCount,
where  maxScale = min(scaledJob.MaxReplicaCount(), divideWithCeil(queueLength, targetAverageValue))
the section about the eager scaling strategy does not exactly explain how it differs, only that it makes up for an issue you might find with default. there is an example listed, where the maximum replicas is 10, the target average value is 1, and there is the following sequence: submit 3 jobs, poll, submit another 3 jobs, poll, and gives this table

With the default scaling strategy, we are supposed to see the metrics changes in the following table:

initial
incoming 3 messages
after poll
incoming 3 messages
after poll

queueLength
0
3
3
6
6

runningJobs
0
0
3
3
3

the final column, to my understanding, is incorrect. After the second poll, using the formulas above:
maxScale = min(10, ceil(6 / 1)) = 6
so "the number of the scale" = 3
so 3 new jobs will be created, meaning the total of running jobs is now 6
which is working as intended.
The second table in that section goes on to show that it is actually the eager strategy which has 6 running jobs after the poll – I'll come to what eager actually does in a later section but I believe this is incorrect also.

The intended behaviour
The documentation also suggests reading the initial suggestion here: https://github.com/kedacore/keda/issues/5114
I don't want to offend or misconstrue anyone here, so please don't take any of this as criticism, just trying to untangle the web – please correct me if I've misunderstood anything.
It seems to me that @junekhan may have confused the behaviour of "the number to scale", and thought that it would scale like a Deployment (where in the example above, a scale of 3 would mean only 3 running jobs after poll, instead of 3 new jobs). My evidence is this comment:

junekhan commented on Oct 27, 2023
Getting back to ScaledJob, let's imagine a case with 3 running pods and another 3 messages standing in line, and each of them takes 3 hours or even longer to run. Does it sound better if we empty the queue and run 6 pods in parallel within our affordable limit which is 10 replicas?

But this is the behaviour of default. @zroubalik replies and says this behaviour should be added. The pull request is later made by @junekhan and documentation added by @zroubalik.
It's possible that some miscommunication happened here, so I also wanted to work out what the eager strategy does, in case I misunderstood the intention, and it is simply the documentation that needs updating.
The actual behaviour
Here I will try to narrate a sequence of logic through the code that explains how the two strategies work. I hope you can follow it – I have tried to just include the relevant detail with function names, parameter names, return value names, code/pseudocode behaviour, and some commentary (in italics). The function names link to the code with line numbers. I will also include the example values from earlier.

in checkScalers
isActive, isError, scaleTo, maxScale := h.isScaledJobActive(ctx, obj)

in isScaledJobActive
isActive, queueLength, maxValue, maxFloatValue := scaledjob.IsScaledJobActive(scalersMetrics, scaledJob.Spec.ScalingStrategy.MultipleScalersCalculation, scaledJob.MinReplicaCount(), scaledJob.MaxReplicaCount())

in IsScaledJobActivesum/max/avg over each metric:
    queueLength = metric.QueueLength
    maxValue = metric.MaxValue

(but where do metrics get their values for MaxValue/QueueLength, an aside:)
- in CalculateQueueLengthAndMaxValuefor each metric:
    queueLength += metricValue
targetAverageValue = getTargetAverageValue(metricSpecs)
averageLength := queueLength / targetAverageValue
maxValue = min(averageLength, maxReplicaCount)

(getTargetAverageValue gets the target value from the trigger, so for our example targetAverageValue=1, queueLength=6, maxReplicaCount=10, and so maxValue=6. worth noting that queueLength does not divide by targetAverageValue, it is the raw length)
(back inside IsScaledJobActive)
maxValue = min(maxValue, maxReplicaCount)
return isActive, ceilToInt64(queueLength), ceilToInt64(maxValue), maxValue

(so IsScaledJobActive returns queueLength=6 and maxValue=6)
(and isScaledJobActive returns them in this order: isActive, isError, queueLength, maxValue)

(checkScalers assigns these to isActive, isError, scaleTo, maxScale, so scaleTo=queueLength=6, maxScale=maxValue=6)
h.scaleExecutor.RequestJobScale(ctx, obj, isActive, isError, scaleTo, maxScale)

RequestJobScale
effectiveMaxScale, scaleTo := e.getScalingDecision(scaledJob, runningJobCount, scaleTo, maxScale, pendingJobCount, logger)

getScalingDecision
(this is where it forks based on scaling strategy)
effectiveMaxScale, scaleTo = NewScalingStrategy(logger, scaledJob).GetEffectiveMaxScale(maxScale, runningJobCount-minReplicaCount, pendingJobCount, scaledJob.MaxReplicaCount(), scaleTo)
and the definition of GetEffectiveMaxScale: GetEffectiveMaxScale(maxScale, runningJobCount, pendingJobCount, maxReplicaCount, scaleTo int64) (int64, int64)
(example: maxScale=6, runningJobCount=3, minReplicaCount=0, pendingJobCount=0, scaledJob.MaxReplicaCount()=10, scaleTo=6)

default
return maxScale - runningJobCount, scaleTo
(so this returns (3, 6))
eager
return min(maxReplicaCount-runningJobCount-pendingJobCount, maxScale), maxReplicaCount
(so this returns (min(7, 6), 10)=(6, 10))

return effectiveMaxScale, scaleTo

(finally RequestJobScale calls e.createJobs)
e.createJobs(ctx, logger, scaledJob, scaleTo, effectiveMaxScale)
with signature: createJobs(..., scaleTo int64, maxScale int64) (so effectiveMaxScale is now maxScale)

and this does:

if maxScale <= 0: return
if scaleTo > maxScale: scaleTo = maxScale
generate scaleTo jobs

so for our example values,
- default: maxScale = 3, scaleTo = 6, so this generates 3 jobs
- eager: maxScale = 6, scaleTo = 10, so this generates 6 jobs

After the second poll in our example, the eager strategy will have 9 jobs. On the third poll, assuming no new jobs, it will create 1 more job and hit the maximum, since that is maxReplicaCount-runningJobCount.
I am not sure what scaleTo is doing in this calculation. It is set to the queue length, unmodified by the targetAverageValue, maxReplicas, or runningJobs. I can't immediately see any scenario where scaleTo < maxScale, meaning that it will always just use the value of maxScale for the number of jobs to create.
Regardless my conclusion for the behaviour of the eager strategy is that it does as @JorTurFer asked in the discussion, which is that it scales up until it hits the maximum whenever the queue is non zero. But the rate of scaling depends on the number of items in the queue. I'm still not sure if this is the intended behaviour – I think this could be achieved more efficiently with a scale strategy like
if maxScale > 0 return maxReplicaCount else 0
and there wouldn't be a slow ramp up, but perhaps that is desirable.
Expected Behavior
Expected default to have 3 running jobs, and eager to have 6 running jobs
Actual Behavior
default has 6 running jobs, eager has 9 running jobs
Steps to Reproduce the Problem
See above
Logs from KEDA operator
No response
KEDA Version
2.16.0
Kubernetes Version
None
Platform
None
Scaler Details
No response
Anything else?
No response

@chinery Thanks for your feedback and your findings! It's tough to recall the tricky computation and follow up your analysis. I'm not sure if the default has changed in the latest version or not, but it was an obstacle to me in that particular version 2.14.
Do you mind checking these test cases:

https://github.com/kedacore/keda/pull/5872/files#diff-7fa05d55ebaeabf8480957f1657206cb11cc8eeca2bf98019ace9c6230bfad8cR92
https://github.com/kedacore/keda/pull/5872/files#diff-7fa05d55ebaeabf8480957f1657206cb11cc8eeca2bf98019ace9c6230bfad8cR145
https://github.com/kedacore/keda/pull/5872/files#diff-5ec504eb045c4a11082657ffab9f2666a3787bf09df8798bdfff416d75fec6fcR123

If they don't have 100% coverage, could you provide the missing cases to prove your point?

Hi @junekhan

I'm not sure if the default has changed in the latest version or not, but it was an obstacle to me in that particular version 2.14.

I don't see any changes to the default since 2.14, other than the introduction of scaleTo which is ignored anyway because is it always greater than or equal to maxScale

Do you mind checking these test cases:
https://github.com/kedacore/keda/pull/5872/files#diff-7fa05d55ebaeabf8480957f1657206cb11cc8eeca2bf98019ace9c6230bfad8cR92

The changes for TestDefaultScalingStrategy, TestCustomScalingStrategy, and TestAccurateScalingStrategy simply add a value for the scaleTo input, and ignore the scaleTo output with a helper function.

https://github.com/kedacore/keda/pull/5872/files#diff-7fa05d55ebaeabf8480957f1657206cb11cc8eeca2bf98019ace9c6230bfad8cR145

For TestEagerScalingStrategy, it obviously passes, but I don't know what the intention is behind the design of the asserts. Here is the first example (I've included the signature for GetEffectiveMaxScale)
GetEffectiveMaxScale(maxScale, runningJobCount, pendingJobCount, maxReplicaCount, scaleTo int64) (int64, int64)

maxScale, scaleTo := strategy.GetEffectiveMaxScale(4, 3, 0, 10, 1)
assert.Equal(t, int64(4), maxScale)
assert.Equal(t, int64(10), scaleTo)

The inputs are:
maxScale=4, runningJobCount=3, pendingJobCount=0, maxReplicaCount=10, scaleTo=1
The first return value, maxScale, is the one that determines how many jobs to create – before this PR, there was only one return value.
There are 4 jobs on the queue, and 3 already running. So to maximise the number of jobs, the result should be to create 1 new job. So I think the test should say
assert.Equal(t, int64(1), maxScale)

However, the assert.Equals says maxScale it should be equal to 4. But perhaps I misunderstand the purpose of eager, and you can clarify.
The second assert states that scaleTo should be equal to 10. But the value passed in for scaleTo is 1. I'm not sure what the test should be as I don't understand the purpose of scaleTo as an input or output, but in practice since scaleTo > maxScale, it will be ignored anyway on line 131 of scale_jobs.go.

https://github.com/kedacore/keda/pull/5872/files#diff-5ec504eb045c4a11082657ffab9f2666a3787bf09df8798bdfff416d75fec6fcR123

For the e2e test, the behaviour in the test seems to mimic the description in the documentation, in other words, the desired behaviour of eager appears to be to scale to the number of jobs, not to overshoot
RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
assert.True(t, WaitForScaledJobCount(t, kc, scaledJobName, testNamespace, 4, iterationCount, 1),
"job count should be %d after %d iterations", 4, iterationCount)

RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
assert.True(t, WaitForScaledJobCount(t, kc, scaledJobName, testNamespace, 8, iterationCount, 1),
"job count should be %d after %d iterations", 8, iterationCount)

RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
assert.True(t, WaitForScaledJobCount(t, kc, scaledJobName, testNamespace, 10, iterationCount, 1),
"job count should be %d after %d iterations", 10, iterationCount)

i.e., push 4 messages, scale to 4, push 4 messages, scale to 8, push 4 messages, scale to 10
I am not a KEDA (or Go) developer but this seems to be a limitation of WaitForScaledJobCount which returns true as soon as the target is met, it does not test that the scaling stops. And with 1 second intervals between test iterations, but a 5 second poll on the rmq trigger, then it makes sense that the tests will pass.
Please try either of the following examples which I think illustrate my point
Test 1: only push 4 messages
func testEagerScaling1(t *testing.T, kc *kubernetes.Clientset) {
	iterationCount := 20
	RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
	assert.True(t, WaitForScaledJobCount(t, kc, scaledJobName, testNamespace, 4, iterationCount, 1),
	"job count should be %d after %d iterations", 4, iterationCount)

	assert.False(t, WaitForScaledJobCount(t, kc, scaledJobName, testNamespace, 8, iterationCount, 1),
	"job count should still be 4 after %d iterations", iterationCount)

	assert.False(t, WaitForScaledJobCount(t, kc, scaledJobName, testNamespace, 10, iterationCount, 1),
	"job count should still be 4 after %d iterations", 10, iterationCount)
}

or Test 2: using WaitForJobCountUntilIteration which does not return early
func testEagerScaling2(t *testing.T, kc *kubernetes.Clientset) {
	iterationCount := 20
	RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
	assert.True(t, WaitForJobCountUntilIteration(t, kc, testNamespace, 4, iterationCount, 1),
	"job count should be %d after %d iterations", 4, iterationCount)

	RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
	assert.True(t, WaitForJobCountUntilIteration(t, kc, testNamespace, 8, iterationCount, 1),
	"job count should be %d after %d iterations", 8, iterationCount)

	RMQPublishMessages(t, rmqNamespace, connectionString, queueName, 4)
	assert.True(t, WaitForJobCountUntilIteration(t, kc, testNamespace, 10, iterationCount, 1),
	"job count should be %d after %d iterations", 10, iterationCount)
}

Thank you @chinery  for your input!

There are 4 jobs on the queue, and 3 already running. So to maximise the number of jobs, the result should be to create 1 new job. So I think the test should say

assert.Equal(t, int64(1), maxScale)

I think assert.Equal(t, int64(4), maxScale) is correct tho since eager gets maxScale as below:
 func (s eagerScalingStrategy) GetEffectiveMaxScale(maxScale, runningJobCount, pendingJobCount, maxReplicaCount, _ int64) (int64, int64) {
	return min(maxReplicaCount-runningJobCount-pendingJobCount, maxScale), maxReplicaCount
}

With the input maxScale=4, runningJobCount=3, pendingJobCount=0, maxReplicaCount=10, scaleTo=1, the above statement translates to return min(10 - 3 - 0, 4), 10

The second assert states that scaleTo should be equal to 10. But the value passed in for scaleTo is 1. I'm not sure what the test should be as I don't understand the purpose of scaleTo as an input or output, but in practice since scaleTo > maxScale, it will be ignored anyway on line 131 of scale_jobs.go.

That's true. I intended to return scaleTo with a value that is greater than maxScale to guarantee that maxScale's value is eventually adopted with respect to the protocol inside func (e *scaleExecutor) createJobs

I am not a KEDA (or Go) developer but this seems to be a limitation of WaitForScaledJobCount which returns true as soon as the target is met, it does not test that the scaling stops. And with 1 second intervals between test iterations, but a 5 second poll on the rmq trigger, then it makes sense that the tests will pass.

This point is valuable. I will improve the test case with your proposal Test 1: only push 4 messages

But perhaps I misunderstand the purpose of eager, and you can clarify.

I literally want to have the scaling style I described below, which is NOT fulfilled by default:

junekhan commented https://github.com/kedacore/keda/issues/5114#issuecomment-1782431472
Getting back to ScaledJob, let's imagine a case with 3 running pods and another 3 messages standing in line, and each of them takes 3 hours or even longer to run. Does it sound better if we empty the queue and run 6 pods in parallel within our affordable limit which is 10 replicas?

I think assert.Equal(t, int64(4), maxScale) is correct tho since eager gets maxScale as below:
 func (s eagerScalingStrategy) GetEffectiveMaxScale(maxScale, runningJobCount, pendingJobCount, maxReplicaCount, _ int64) (int64, int64) {
	return min(maxReplicaCount-runningJobCount-pendingJobCount, maxScale), maxReplicaCount
}

You are describing the output of the code, so the test is guaranteed to pass, but I am asking why the value should be 4. Tests should be written separately from the implementation.

I literally want to have the scaling style I described below, which is NOT fulfilled by default:

junekhan commented #5114 (comment)
Getting back to ScaledJob, let's imagine a case with 3 running pods and another 3 messages standing in line, and each of them takes 3 hours or even longer to run. Does it sound better if we empty the queue and run 6 pods in parallel within our affordable limit which is 10 replicas?

I've changed the e2e test to use the default strategy and changed the numbers to match your comment exactly, as well as using WaitForJobCountUntilIteration so the test checks the job doesn't over-scale. This test fails with the eager strategy but passes with default. Please try running this file, I assure you it does what you are describing.
Perhaps when you tried default, you were consuming (acking) messages off the RabbitMQ queue immediately on receipt rather than when the job was finished? (In which case, accurate scaling would have helped you out.)

You are describing the output of the code, so the test is guaranteed to pass, but I am asking why the value should be 4. Tests should be written separately from the implementation.

Because 4 tasks are waiting, and I want to run them eagerly without exceeding the maxReplicaCount.

Perhaps when you tried default, you were consuming (acking) messages off the RabbitMQ queue immediately on receipt rather than when the job was finished? (In which case, accurate scaling would have helped you out.)

This has nothing to do with the trigger. This guy experienced it in SQS as well https://github.com/kedacore/keda/issues/5881

(Assuming the SQS queue is empty before placing the messages in the queue for the below scenarios)
1 message in the queue → Keda triggers 1 job/pod and processes it. Let’s say the consumer places another message in the queue while 1st job is still running then Keda will not trigger another job until it completes 1st job. So we would expect Keda to process subsequent jobs even if existing jobs are in progress.

The trigger is absolutely relevant – whether or not the queueLength includes running/locked jobs is vital. I have not tested SQS but it's possible this other user also should have been using accurate.
Please could you run the test file I linked in my last message which confirms that the default strategy scales exactly as you wish with RabbitMQ. After 3 messages, 3 jobs are running. After another 3 messages, 6 jobs are running. Please let me know if you get different results or you disagree with the design of the test for some other reason.
Maybe it would be good to hear from some other developers too, e.g. it seems @TsuyoshiUshio wrote the accurate/custom scalers.

Perhaps when you tried default, you were consuming (acking) messages off the RabbitMQ queue immediately on receipt rather than when the job was finished? (In which case, accurate scaling would have helped you out.)

It's definitely not the case. If you have pondered a step further, you probably wouldn't have such speculation. As I pointed out my case as  each takes 3 hours or even longer to run. Acking on receiving has an immediate impact on the system that is not ignorable.
That's why I am certain that it's much simpler for people to follow the test case and the outcome than to read lengthy passages and reason in mind

I appreciate my messages are verbose, and I'm sorry if there's a language barrier that means I don't fully follow your meaning (I am still not sure whether you ack on receive or not, either can work for 3hr+ jobs, but that was a side point).
Sometimes following lengthy passages is necessary to understand – a test alone cannot do anything without rationale because the asserts of the test must match the intended outcome (not just the implemented one).
Regardless, I've provided a test which I believe shows that default implements the behaviour that eager is documented as implementing, and shown the pass output in a test environment, so I am happy for that to be the basis of the discussion going forward. If you think the test is wrong or flawed somehow please let me know.


Review experiment in config.yaml for spatial configs

This might be a duplicate of #192?

Indeed. Strange I thought there was some description in there...


Bugfix: GroupComponents

Bugfix for GroupComponents transform.
When grouping instances with invalid input ports, buggy behavior leaves the invalid statements in the parent module, instead of moving them to the new grouped module.
Includes test and bugfix.

You seem to have only included the new test.

Yeah, I wanted CI to show it failing, before I pushed the fix.

I can not do that if desired, though. LMK

Doesn't matter to me, just thought it was unintentional.

The only time this would matter and/or we should hold it up is if you want to merge via merge commit. (Rebasing the fix before the test before merging would fix it.) I'm usually the only one going nuts with the merge commit flow, though...


Feature: Flags at Language-Selector

Hello,
this PR adds flags to the respective languages in the language selector.
Also, the navigation has been converted to a component so that it can be loaded when needed.
The CSS is now recompiled when changes are made, so variables can now be used here. This has also been applied to the language selector.
Closes https://github.com/felix-d1strict/LogiReader/issues/3

Looks great!


Maintenance of introduction_to_terminal module

Module to maintain
Website: https://school-brainhack.github.io/modules/introduction_to_terminal/
Code: https://github.com/school-brainhack/school-brainhack.github.io/tree/main/content/en/modules/introduction_to_terminal
Work to be done
Please ensure:

[ ] links, resources and exercises reflect the state-of-the-art
[ ] videos are of good quality and reflect the materials.

If any update / re-write of the module is needed, feel free to suggest alternative material in a comment!
If you think major changes are needed, we suggest you open an issue for new modules.

Great, thank you! Done.

Hi @chubako, how are you getting on with maintenance of this module? Do you need any help? Just a reminder that we are hoping to have these done by April 21st

Hi Natasha, thanks for the reminder! I'll look it up today and let you know.
Best regards!
On Wed, Apr 19, 2023 at 5:27 PM Natasha Clarke @.***>
wrote:

Hi @chubako https://github.com/chubako, how are you getting on with
maintenance of this module? Do you need any help? Just a reminder that we
are hoping to have these done by April 21st
—
Reply to this email directly, view it on GitHub
https://github.com/school-brainhack/school-brainhack.github.io/issues/176#issuecomment-1515336022,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2MA2JFMMNUQ42BFGTUZP3TXCBDCTANCNFSM6AAAAAAWFQLJXA
.
You are receiving this because you were mentioned.Message ID:
@.***
com>

Hi, I'm checking the module notes:
https://github.com/neurodatascience/course-materials-2020/blob/master/lectures/11-may/03-intro-to-shell/introduction-to-shell.ipynb
and there is a broken image at the beginning:
https://camo.githubusercontent.com/fa51703ac45f770495cfb64d3074168979ce30c19440744bb5a1069564844934/68747470733a2f2f7777772e6e6174696f6e616c67656f677261706869632e636f6d2f636f6e74656e742f64616d2f796f757273686f742f323031342f30352f333537393131332e6a7067
It's below a title that says "Why so many?! (referring to the options of
shells), so I guess it's an illustration of "many shells". Is it possible
to contact the author to update the image link? Otherwise, I think it's
best just to remove it, and if later we have time I can search for another
image.
On Thu, Apr 20, 2023 at 5:32 AM Alfonso _ @.***> wrote:

Hi Natasha, thanks for the reminder! I'll look it up today and let you
know.
Best regards!
On Wed, Apr 19, 2023 at 5:27 PM Natasha Clarke @.***>
wrote:

Hi @chubako https://github.com/chubako, how are you getting on with
maintenance of this module? Do you need any help? Just a reminder that we
are hoping to have these done by April 21st
—
Reply to this email directly, view it on GitHub
https://github.com/school-brainhack/school-brainhack.github.io/issues/176#issuecomment-1515336022,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2MA2JFMMNUQ42BFGTUZP3TXCBDCTANCNFSM6AAAAAAWFQLJXA
.
You are receiving this because you were mentioned.Message ID:
@.***
.com>

Hi, I've checked the module notes and made some changes and pull requests.
Please let me know if you received them.
Regards, Alfonso.
On Wed, Apr 19, 2023 at 5:27 PM Natasha Clarke @.***>
wrote:

Hi @chubako https://github.com/chubako, how are you getting on with
maintenance of this module? Do you need any help? Just a reminder that we
are hoping to have these done by April 21st
—
Reply to this email directly, view it on GitHub
https://github.com/school-brainhack/school-brainhack.github.io/issues/176#issuecomment-1515336022,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2MA2JFMMNUQ42BFGTUZP3TXCBDCTANCNFSM6AAAAAAWFQLJXA
.
You are receiving this because you were mentioned.Message ID:
@.***
com>

Hi @chubako, I don't see a PR from you, can you link it here please?

Hi @chubako, I found your PRs and I realised something. We were pointing to an external repo for the jupyter book, and it does not look like it is maintained anymore. So I forked a copy to our repo so we can update it (here: https://github.com/school-brainhack/course-materials-2020). Unfortunately that means, please could you re-make your PR to this repo, so we can approve? Also, if you can make sure all the edits are in one PR that would be great. If you don't have time to do this by Monday next week then I can just fix the errors you spotted. Thank you so much!

Hi Natasha, no problem. I'll try to check it out tomorrow.
Best regards, Alfonso.
On Thu, Apr 27, 2023 at 3:29 PM Natasha Clarke @.***>
wrote:

Hi @chubako https://github.com/chubako, I found your PRs and I realised
something. We were pointing to an external repo for the jupyter book, and
it does not look like it is maintained anymore. So I forked a copy to our
repo so we can update it (here:
https://github.com/school-brainhack/course-materials-2020). Unfortunately
that means, please could you re-make your PR to this repo, so we can
approve? Also, if you can make sure all the edits are in one PR that would
be great. If you don't have time to do this by Monday next week then I can
just fix the errors you spotted. Thank you so much!
—
Reply to this email directly, view it on GitHub
https://github.com/school-brainhack/school-brainhack.github.io/issues/176#issuecomment-1526142247,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2MA2JAUGOQKLCDL4MDRE3DXDK3HHANCNFSM6AAAAAAWFQLJXA
.
You are receiving this because you were mentioned.Message ID:
@.***
com>

Dear Natasha, I've just sent you two pull requests. I was a little bit
confused sometimes between the old and the new repo, so I've closed few PRs
I've made, and summarized all changes in two commits:

one with some typos I've found
another to clarify some key points
Please let me know if you received the PRs, and can merge them.

Best regards, Alfonso.
On Thu, Apr 27, 2023 at 3:29 PM Natasha Clarke @.***>
wrote:

Hi @chubako https://github.com/chubako, I found your PRs and I realised
something. We were pointing to an external repo for the jupyter book, and
it does not look like it is maintained anymore. So I forked a copy to our
repo so we can update it (here:
https://github.com/school-brainhack/course-materials-2020). Unfortunately
that means, please could you re-make your PR to this repo, so we can
approve? Also, if you can make sure all the edits are in one PR that would
be great. If you don't have time to do this by Monday next week then I can
just fix the errors you spotted. Thank you so much!
—
Reply to this email directly, view it on GitHub
https://github.com/school-brainhack/school-brainhack.github.io/issues/176#issuecomment-1526142247,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A2MA2JAUGOQKLCDL4MDRE3DXDK3HHANCNFSM6AAAAAAWFQLJXA
.
You are receiving this because you were mentioned.Message ID:
@.***
com>

Hi @chubako , I have reviewed and merged them, thank you so much!
Note, the following PRs were related to this module:

https://github.com/school-brainhack/course-materials-2020/pull/5
https://github.com/school-brainhack/course-materials-2020/pull/6
https://github.com/school-brainhack/course-materials-2020/pull/7


Warning: Calling plist_options is deprecated! Use service.require_root instead

This is recent warning I've been getting when restarting yabai. (Built from homebrew installation).

see https://github.com/koekeishiya/yabai/issues/1619


feat(DASH): Add support for Content Steering

Closes https://github.com/shaka-project/shaka-player/issues/5704

@theodab can you review it? Thanks!


How can I hydrate a document class used with setTypeMap ?

Hi,
I'm working on a lightweight "Entity" system that simplifies access to data between, for example, two collections.
In the code below, I would like my User class to allow me to retrieve informations from the user's group.
First, data in DB:
// One document in "group" collection:
{
  _id: 1234,
  name: 'My group'
}

// One document in "user" collection:
{
  _id: 1230,
  firstName: 'Joe',
  lastName: 'Robert',
  group: 1234
}

Now, PHP (pseudo)code:
use MongoDB\Model\BSONDocument;

class User extends BSONDocument
{
    /**
     * @return Database
     */
    protected function getDB(){
        /**
         * NEED TO IMPLEMENT THIS
         */
    }

    public function getGroup(){
        $groupId = $this[ 'group' ];
        return $this
            ->getDB()
            ->selectCollection('group')
            ->findOne([
                '_id' => $groupId
            ])
        ;
    }
}

// Usage example:
$usersCursor = $collection->find();

$usersCursor->setTypeMap([
    'root' => User::class,
    'document' => 'array',
    'array' => 'array',
]);

foreach($usersCursor as $user){
    $groupInformations = $user->getGroup();
    $username = $user['firstName'];

    // ...
}

In this example I need the Database, but in reality it relates to any data that can be used in the document.
For now, I investigated 2 methods:
1 - Static references
Something like:
class User extends BSONDocument
{
    private static $db;

    public static function setDB(Database $db){
        self::$db = $db;
    }

    /**
     * @return Database
     */
    protected function getDB(){
        return self::$db;
    }

    //...
}

I find that this implementation is not clean.
And above all, in this example, if I request users on two different databases, I will have conflicts, it seems chaotic.
2 - Extends / wrap EVERYTHING
Extending MongoDB\Collection, override all methods that return BSONDocument, intercept the return of a document to hydrate it.
When a method (for example ::find) returns a \MongoDB\Driver\Cursor, it will have to be wrapped in a custom cursor, because:
final class Cursor implements \Traversable

This could be a problem if a third-party library requires a \MongoDB\Driver\Cursor and nothing else.
Discussion
Why ::setTypeMap could not use a callback or a factory class that implements BSONDocumentFactory for example ?
The returned result would be just completed with a call to bsonUnserialize.
Maybe I forgot something?
In my example I need a Database, but, again, this might be needed with any kind of data.
For now I'm thinking about the implementation of the second solution, it's a big deal!
Otherwise, if someone has another solution or a library that provides that, I would be grateful.
Thank you for reading so far! :)

When a method (for example ::find) returns a \MongoDB\Driver\Cursor, it will have to be wrapped in a custom cursor, because:
final class Cursor implements \Traversable

This could be a problem if a third-party library requires a \MongoDB\Driver\Cursor and nothing else.

As a rule of thumb, we introduced most classes in the mongodb extension as final to prohibit extension, which had historically been a problem for the legacy mongo extension. The limitation of MongoDB\Driver\Cursor being final has been noted and we aimed to address that in PHPC-1123 with the introduction of an interface. That fix should be available in the forthcoming 1.6.0 release (it's already available in the 1.6.0alpha1 release on PECL).

Why ::setTypeMap could not use a callback or a factory class that implements BSONDocumentFactory for example?

Our initial API for BSON conversion was modeled after PHP's existing Serializable and JsonSerializable interfaces, which are admittedly primitive.
The factory idea you're suggesting actually overlaps with some ideas we have for BSON API improvements in the extension (see: PHPC-999, which would allow the extension to delegate to a callable to handle BSON conversion. I've cross-referenced this issue in the ticket so we can be sure to consider your use suggestion when we're able to revisit the ticket.
We've hesitated to implement this sooner because of the possible performance implications of invoking a callable to resolve BSON conversion for each element within a BSON document. Any proposed design will certainly require prototyping and benchmarking before we commit to an API.

Otherwise, if someone has another solution or a library that provides that, I would be grateful.

The functionality you're describing seems related to what Doctrine ODM provides. While the upcoming 2.0 version uses the mongodb extension natively (1.0 was based around the legacy mongo extension), it uses its own services for hydrating PHP objects (from the database) and persisting entities (to the database). The hydrating service is able to inject other services within the entity as needed, which allows it to implement the reference-resolution functionality you're describing. Collections of document references are transparently wrapped with PersistentCollection objects at hydration time, which can then issue a query at access time to resolve those references lazily.
Longterm, I believe Doctrine ODM plans to offload some of the responsibility of its hydrating service to the mongodb extension, so that will also serve as a good use case (and test bed) for any forthcoming BSON API improvements in the extension.

I've cross-referenced this issue with PHPC-999, which is our internal ticket to track these ODM improvements. Since there is no work to be done here at this time, I'm closing this issue.
Feel free to subscribed to the linked issue for updates.


Catching errors from isolate

Hello,
Is it possible to catch Exceptions thrown from within the Isolate?
The try-catch block does not get triggered.
import 'package:isolate_manager/isolate_manager.dart';

@pragma('vm:entry-point')
int add(dynamic value) {
  if (value[0] == 50) {
    throw 'No no no';
  }
  return value[0] + value[1];
}

main() async {
  final isolateManager = IsolateManager.create(add, concurrent: 2);
  await isolateManager.start();
  final List<Future> futures = [];

  try {
    for (var i = 0; i < 100; i++) {
      futures.add(isolateManager.compute([i, 20]));
    }

    await Future.wait(futures, eagerError: true);
  } catch (e) {
    print(e);
  } finally {
    isolateManager.stop();
  }
}

Hi,
The default isolate method using .create currently doesn't control the exception, you can try to create one with the .createOwnIsolate.
I'll keep this issue open as a to-do list that will be implemented in the next update. Thank you!

Hi @xErik,
I have released a preview version for this feature, you can try it by adding isolate_manager: ^2.2.0-PRE.1 to your dependencies.
Please let me know the result. Thank you!

I have released this version to stable, so I'll mark this issue as resolved. Feel free to file an issue if you have any questions or problems.


Look for blocking facebook login script etc

See Firefox SmartBlock for example.

can u give some links about that ?
and u mean to include a line in those tests testing: "does the browser block this face login script?"  is it ?
and could also extrapolate like blocking google logins etc , right ?
and anyway , why should a browser come configured like that? i get tht having this option would be great , but this being turned on by default seems not reasonable for a browser . because the person using may want to login in those sites.
but anyway i would like it in a browser ,and coming turned on but not for the daily driver browser. for a browser like mull or librewolf it seems to fit . so if a person is usaiong and want to login in a given site blocked just go to the browser setting and allow the login .


Invarint Violation: Element type is Invalid

[x] Review the documentation: https://docs.viromedia.com/
[x] Search for existing issues: https://github.com/viromedia/viro
[x] Use the latest ViroReact release: https://docs.viromedia.com/docs/releases

Environment
Please provide the following information about your environment:

Development OS: Linux 18.04
Device OS & Version: Android OS version 8.0?
Version: ViroReact version and React Native version:

    "react-native": "0.55.1",
    "react-viro": "2.11.0",

and global packages
"react-native-cli": "2.0.1",
"react-viro-cli": "2.11.0"

Device(s): Google Pixel 2

Description
When I connect with my device to testbed I see error: 'Invarint Violation: Element type is Invalid ...'

Reproducible Demo
just start my test-app with npm start

Hi @u-can-miracle ,
This is mostly a bug in the way you are importing / exporting some component, rather than it being a bug with Viro. You can look at these react-native issues below for hints on identifying where you might be doing something wrong:
https://github.com/facebook/react-native/issues/16332
https://github.com/react-navigation/react-navigation/issues/2767
https://github.com/facebook/react-native/issues/20397
Hope this helps.
Thanks,

There are no one solution


Add have_a_version_with_changes matcher

Looks good to me. Personally, I'm a little leery of where_object_changes because it uses a LIKE query, but that doesn't seem to bother other people, so I see no reason not to have a RSpec matcher for this.

On an unrelated note, I'd like to see the rspec stuff move into a separate gem (called rspec-paper_trail) eventually. Doesn't have to happen now.

Merged. Thanks Anton!

because it uses a LIKE query

Shouldn't performance be a little be better when people are using the JSONB column type? Of course, without benchmarking, setting proper indices etc I'm merely speculating.
Anyway, here's the source for anyone who's seeing this on how it is implemented, depending on the column type:
https://github.com/airblade/paper_trail/blob/5-stable/lib/paper_trail/version_concern.rb#L144-L169

Shouldn't performance be a little be better when people are using the JSONB column type? Of course, without benchmarking, setting proper indices etc I'm merely speculating.

I would think so, but also don't have benchmarks to prove that assertion.
Should we add a bit to the RSpec portion ofREADME regarding this feature?

I would think so, but also don't have benchmarks to prove that assertion.

I'd like to do some benchmarks, but how do you suggest such a benchmark should look like? I'm asking because since you guys write and maintain paper_trail, you guys probably know best. :)
I found this article on Rails and JSONB which also includes benchmarks (see code) which I'd like to base it on.

I'd like to do some benchmarks, but how do you suggest such a benchmark should look like?

You probably want to benchmark the SQL queries in isolation, without ruby. So, I would take the SQL generated by PT+AR, put it in a few .sql files, run them using psql and time.

You probably want to benchmark the SQL queries in isolation, without ruby.

Hmm, while this would measure the performance quite accurately for the PostgreSQL, wouldn't it be more useful for the users (most being Rails users, I guess) to measure "real world" performance, as in, using Ruby for the benchmark?


Fail on update of code

There were some changes just now regarding Sorting of data on the Stock Page ( just background info..)
So to update to latest - I followed
$ git pull origin master
$ invoke update
Which failed as per below, and again when I try and start server
I can see some changes in the file ../inventree/InvenTree/common/migrations/0008_remove_inventreesetting_description.py which I suspect are relevant - but not up to speed on why.
(I'm running on a dev sqlite3 database as per the getting started path :) )
Not sure if I've done the right thing calling the update when nothing had changed in terms of the database.
Database integrity seems OK from checking with
~/inventree$ sqlite3 inventree_default_db.sqlite3 "PRAGMA integrity_check"
ok

Not ideal.
What happens if you run invoke migrate ?

Same :(
(inventree-env) richard@richard-VirtualBox:~/inventree$ invoke migrate
Running InvenTree database migrations...
2020-10-20 08:43:15,852 DEBUG Using selector: EpollSelector
InvenTree running in DEBUG mode
MEDIA_ROOT: /home/richard/inventree/inventree_media
STATIC_ROOT: /home/richard/inventree/inventree_static
Traceback (most recent call last):
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 396, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: NOT NULL constraint failed: common_inventreesetting.description
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 22, in
execute_from_command_line(sys.argv)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/core/management/init.py", line 401, in execute_from_command_line
utility.execute()
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/core/management/init.py", line 377, in execute
django.setup()
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/init.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/apps/registry.py", line 122, in populate
app_config.ready()
File "/home/richard/inventree/InvenTree/common/apps.py", line 11, in ready
self.add_instance_name()
File "/home/richard/inventree/InvenTree/common/apps.py", line 46, in add_instance_name
InvenTreeSetting.objects.create(
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/query.py", line 433, in create
obj.save(force_insert=True, using=self.db)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/base.py", line 745, in save
self.save_base(using=using, force_insert=force_insert,
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/base.py", line 782, in save_base
updated = self._save_table(
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/base.py", line 887, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/base.py", line 924, in _do_insert
return manager._insert(
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/query.py", line 1204, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1392, in execute_sql
cursor.execute(sql, params)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/utils.py", line 100, in execute
return super().execute(sql, params)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/utils.py", line 68, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/utils.py", line 90, in exit
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute
return self.cursor.execute(sql, params)
File "/home/richard/inventree-env/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 396, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: NOT NULL constraint failed: common_inventreesetting.description
(inventree-env) richard@richard-VirtualBox:~/inventree$ ^C
(inventree-env) richard@richard-VirtualBox:~/inventree$

oops - didnt preview - not shouting!!

I believe I have found and fixed this bug now. When #1061 is merged please try that 👍

Dont know if you see comments on closed items.
But - YES!
Completes and runs server just fine :)
Sorting in STOCK also does exactly as expected.
Kudos, respect and thanks for your response!
Richard

Great, thanks for letting me know. LMK if you find any other issues! I'm glad that you are enjoying using it :)


Emits warning if name option provided but Tessel with that name is not found

Fixes #338.
@Frijol could you review?

Works great!

Done!


Adding internal users

Hi,
Is there a way to write users directly to elaticsearch instead of updating sg_internal_users.yml and reloading via sgadmin tool?
Regards,
Girish

not yet. Why do you need this? sgadmin is scriptable.

I have hundreds of users and each having its own role with specific dsl query , as of now we need to rewrite the config files everytime there is a new user or user leaves the system.

So you want to have a kind of (REST) api for this?
Is your system already in production or are you in an evaluation/testing phase?

A rest API would be perfect.
The system is already in production but we are adding the authentication/authorization to the reports, so we are evaluating searchguard

We put his on our feature list.
Pls. keep in mind that you need a commercial license for the DLS module if you want to use it in production.

Re. licence - We are aware of the commercial license.
Is there way to bypass sgadmin till we have the API's ?

no, you cannot bypass it by now, sorry

We started to work on this ...

Hi - we just released the first version of the management API. This is an early beta release, so you might find some bugs or issues. Would be great if you could try it out and help us by reporting any bugs or missing features.
Github repository:
https://github.com/floragunncom/search-guard-rest-api
Documentation:
https://github.com/floragunncom/search-guard-docs/blob/master/managementapi.md
Snapshot, compatible with ES 2.4.x and Search Guard 2.4.x.7:
https://oss.sonatype.org/content/repositories/snapshots/com/floragunn/dlic-search-guard-rest-api/2.4-1-SNAPSHOT/dlic-search-guard-rest-api-2.4-1-20161008.211208-1.jar

thanks much, I will give it a go

released yesterday, see https://github.com/floragunncom/search-guard-rest-api


Regression: custom symbols no longer work

It seems commit f88b35a5808c6e3817b5d7059f2c1857ade296b3 has introduced a bug which disables setting custom diagnostic symbols. I checked out every commit between my last version and the regression, and that commit is the culprit.

If you means the sign of the diagnostic, that's because I've followed the master branch and they don't use global variables to set up anymore. Instead you can use
call sign_define("LspDiagnosticsErrorSign", {"text" : " ", "texthl" : "LspDiagnosticsError"})
call sign_define("LspDiagnosticsWarningSign", {"text" : "⚡", "texthl" : "LspDiagnosticsWarning"})

see :h vim.lsp.util.buf_diagnostics_signs(), there's a document of how it works(but maybe require a newer branch).

Ahh, I commented here before seeing this issue. Didn't know they changed this. I'll change this locally.

Related to the above, do you have any idea how to give this priority over GitGutter signs?

@ckipp01 I think you can't give priority through built-in method. I can create an option and enable it in diagnostic-nvim though.

That's sort of a bummer. I think it'd be a good idea to enable that then. If not, I'm assuming users that use GitGutter are going to be confused why their custom signs aren't showing.

I've added an option to customize sign priority. It's already bigger than gitgutter by default so you should see the fix once you update.

That was fast 😆 .
Yes, it works perfectly. 🙏

@haorenW1025 That's it, then, thank you for your attention again! And, yes, sorry, I meant signs, not symbols. :grimacing:


Can't understand what function "get_inverse_hvp_lissa" do

It seems a little different with the illustration in paper.
I don't understand why do we need parameter damping and scale.
Escecially, how to understand this line of code
cur_estimate = [a + (1-damping) * b - c/scale for (a,b,c) in zip(v, cur_estimate, hessian_vector_val)]

The scale parameter scales the maximum eigenvalue to < 1 so that our Taylor approximation converges (see footnote 2, page 4 of our paper; it's also mentioned in the original LiSSA paper). The damping parameter is discussed in section 4.2 of our paper.

cur_estimate = [a + (1-damping) * b - c/scale for (a,b,c) in zip(v, cur_estimate, hessian_vector_val)]
According to paper, is it the above equation to be
cur_estimate = [a + (1-damping) * b*a - (c*a)/scale for (a,b,c) in zip(v, cur_estimate, hessian_vector_val)]


Fix mozilla/thimble.mozilla.org#591: Close/reopen code hint bug

Fixed bug associated here:
mozilla/thimble.mozilla.org#591
Here's a demo:

If the widget is opened, it will close it (Instead of reopening it). If you click on an opened widget and press ALT + K, then that widget will be closed.

@gideonthomas what do you think of this approach?

huh.... there's a bug that I just found. If "Quick Edit" is already opened and I try to open "Quick Docks" on the same line, "Quick Edit" closes and "Quick Docks" is not opened (Or vice-versa).
This is bug happens since there's no check which widget is being called (Quick Edit or Quick Docks).
https://github.com/simon66/brackets/blob/f3be508dbbea166524e934d18c34cb9a8bb6ee22/src/editor/EditorManager.js#L298
I actually don't know how to check which one is being called (Since the only info we have about the new widget is providers and errorMsg).
Any ideas @humphd, @gideonthomas? If I can think of a solution, I'll post here.

cc'ing @davidhuang1550, who has been living in this code all term and might have ideas.
On Apr 9, 2017 1:09 AM, Simon de Almeida<EMAIL_ADDRESS>wrote:
huh.... there's a bug that I just found. If "Quick Edit" is already opened and I try to open "Quick Docks" on the same line, "Quick Edit" closes and "Quick Docks" is not opened (Or vice-versa).
This is bug happens since there's no check which widget is being called (Quick Edit or Quick Docks).
https://github.com/simon66/brackets/blob/f3be508dbbea166524e934d18c34cb9a8bb6ee22/src/editor/EditorManager.js#L298
I actually don't know how to check which one is being called (Since the only info we have about the new widget is providers and errorMsg).
Any ideas @humphdhttps://github.com/humphd, @gideonthomashttps://github.com/gideonthomas? If I can think of a solution, I'll post here.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/mozilla/brackets/pull/699#issuecomment-292764589, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAaFhqgPVBJMU6F2smcibHhTdU8TDgxMks5ruGgHgaJpZM4M3iHi.

I don't seem to be able to recreate this problem. Also regardless of the inline widget being created, if there currently exists a widget in the same line that is not destroyed, it will destroy it then create a new widget.If the main editor doesn't have the focus it will just destroy the widget and not create a new one.
Editor.js
Editor.prototype._addInlineWidgetInternal = function (pos, inlineWidget, scrollLineIntoView, deferred) {
        var self = this;

        this.removeAllInlineWidgetsForLine(pos.line).done(function () {
            if (scrollLineIntoView === undefined) {
                scrollLineIntoView = true;
            }

            if (scrollLineIntoView) {
                self._codeMirror.scrollIntoView(pos);
            }

            inlineWidget.info = self._codeMirror.addLineWidget(pos.line, inlineWidget.htmlContent,
                                                               { coverGutter: true, noHScroll: true });
            CodeMirror.on(inlineWidget.info.line, "delete", function () {
                self._removeInlineWidgetInternal(inlineWidget);
            });
            self._inlineWidgets.push(inlineWidget);

            // Set up the widget to start closed, then animate open when its initial height is set.
            inlineWidget.$htmlContent.height(0);
            AnimationUtils.animateUsingClass(inlineWidget.htmlContent, "animating")
                .done(function () {
                    deferred.resolve();
                });

            // Callback to widget once parented to the editor. The widget should call back to
            // setInlineWidgetHeight() in order to set its initial height and animate open.
            inlineWidget.onAdded();
        });
    };

EditorManager.js
    function _toggleInlineWidget(providers, errorMsg) {
        var result = new $.Deferred();
        var currentEditor = getCurrentFullEditor();

        if (currentEditor) {
            var inlineWidget = currentEditor.getFocusedInlineWidget();

            if (inlineWidget) {
                // an inline widget's editor has focus, so close it
                PerfUtils.markStart(PerfUtils.INLINE_WIDGET_CLOSE);
                inlineWidget.close().done(function () {
                    PerfUtils.addMeasurement(PerfUtils.INLINE_WIDGET_CLOSE);
                    // return a resolved promise to CommandManager
                    result.resolve(false);
                });
            } else {
                // main editor has focus, so create an inline editor
                _openInlineWidget(currentEditor, providers, errorMsg).done(function () {
                    result.resolve(true);
                }).fail(function () {
                    result.reject();
                });
            }
        } else {
            // Can not open an inline editor without a host editor
            result.reject();
        }

        return result.promise();
    }

Hi @davidhuang1550,
Yep, if the editor have focus on the widget, it will close it. But the bug occurs when you open a widget and close it. Because the opened widget is not in focus, it will close any opened widget and open the new widget it.
Here's a demo of the bug (which I posted here):

Closing due to inactivity and significant changes to the inline editor codebase.


Remove deprecated back

https://github.com/koajs/koa/issues/1114
Notice it being branched from fl0w:refactor-back, needs rebase post merge.

https://www.npmjs.com/package/http-errors

https://github.com/koajs/koa/pull/1115/files


Skip UTF-8 byte order mark

#520 Skips the Unicode UTF-8 BOM by adding a 3-byte offset when compiling. Tested by running a few scripts with and without the BOM.

Made the mistake of pushing this to master, now I can't make another PR from another branch without including these commits... Hope this gets merged soon

Made the mistake of pushing this to master, now I can't make another PR from another branch without including these commits... Hope this gets merged soon

You just need to create the branch for the other PR based on the master branch in this repository rather than your master branch that is ahead.
Suppose you have this repo added as a remote called upstream:
git checkout -b my-new-pr-branch upstream/master

I don't think I have write permissions

I don't think I have write permissions

You don't need write permissions.

$ git push -u upstream python3-utils
ERROR: Permission to munificent/wren.git denied to jclc.
fatal: Could not read from remote repository.

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

Am I missing something? I'm not very good when it comes to using git.

Ah, my bad! I misread and thought @bjorn meant making a new branch in the upstream repository.

Sorry for the delay! This is in now. :)