Download file is out of sync :(

Hello , i just wanted to mention that 4 out of 5 clips that i download no matter what resolution i choose the clip will lag for 1 second at the beginning and than the sound will be out of sync with the video .
Any ideas or solutions ?
Thanks

Half of my VODs are out of sync too, I really need to know why :(

Please be more specific when posting issues.
Read THIS
In addition to all those points, what video player are you using to play back the video? My first advice is always to try VLC because a lot of players have huge trouble playing back Twitch streams.

Closed because stale


Jest 28 error 'invalid return value' with process() or/and processAsync()

Describe the bug
Using jest-scss-transform with Jest 28 produces an error:  (ok in jest 27)
 Invalid return value:
      `process()` or/and `processAsync()` method of code transformer found at
      "node_modules/jest-scss-transform/lib/index.js"
      should return an object or a Promise resolving to an object. The object
      must have `code` property with a string of processed code.
      This error may be caused by a breaking change in Jest 28:
      https://jestjs.io/docs/upgrading-to-jest28#transformer
      Code Transformation Documentation:
      https://jestjs.io/docs/code-transformation

Possibly relates to a change in jest v28

process() and processAsync() methods of a custom transformer module cannot return a string anymore. They must always return an object:

 process(sourceText, sourcePath, options) {
-   return `module.exports = ${JSON.stringify(path.basename(sourcePath))};`;
+   return {
+     code: `module.exports = ${JSON.stringify(path.basename(sourcePath))};`,
+   };
  }

To Reproduce
Steps to reproduce the behavior:

Configure jest with jest-scss-transform.
Use jest 28

Expected behavior
Jest runs as expected
Environment (please complete the following information):

Windows 11 21H2 22000.613
jest-scc-transform v1.0.2
Jest v28.0.3
Node v16.14.2

I have the same issue in "react-native": "0.68.2" with "jest": "^28.1.0". Any solution?

Hey @jafin thanks for reporting this! We are investing the described issue & are hoping to resolve it ASAP.

Hey @jafin, we have just released a new version 1.0.3 which should address the described issue for jest v28 and above.
That should get you going now. Again, appreciate you reporting this & don't hesitate to circle back if you're still seeing any issues!


Prometheus rule validator rejects $externalLabels in annotations

The prometheus-operator prometheusrule validator endpoint rejects the $externalLabels variable in prometheus-operator v0.33.0 and below. undefined variable "$externalLabels"
Promethues started supporting $externalLabels in v2.10.0 via this MR: https://github.com/prometheus/prometheus/pull/5463
The rule validator imports v2.9.2, the version immediately before that. https://github.com/coreos/prometheus-operator/blob/v0.33.0/go.mod#L25
Are there any plans to update this dependency soon?
Thanks!

I see no reason to keep that version, happy to have it be latest. Do you want to take care of that?

Got initial MR in. go mod vendor took the liberty of updating everything. Not sure if there is any better way to do this though.

Struggling with getting go mod vendor to behave as expected. Any tips for updating a dependency?


Adding ppc64le architecture support on travis-ci

Hi,
I had added ppc64le(Linux on Power) architecture support on travis-ci in the branch and looks like its been successfully added. I believe it is ready for the final review and merge. The travis ci build logs can be verified from the link below.
https://www.travis-ci.com/github/kishorkunal-raj/uuid/builds/205116780
Reason behind running tests on ppc64le: This package is included in the ppc64le versions of RHEL and Ubuntu - this allows the top of tree to be tested continuously as it is for Intel, making it easier to catch any possible regressions on ppc64le before the distros begin their clones and builds. This reduces the work in integrating this package into future versions of RHEL/Ubuntu.
Please have a look.
Regards,
Kishor Kunal Raj

any views on PR?

Sorry, I missed the notification on this request.  Anyhow, looks fine.  I will probably need to add arm64 as well (since that is what I am mostly using now).

Sorry, I missed the notification on this request.  Anyhow, looks fine.  I will probably need to add arm64 as well (since that is what I am mostly using now).


How to visualize?

Made progress loading. Now how to visualize?

you'd have to create the trixels with
trixels = composite.make_trixels()
composite.set_trixels(trixels, inplace=True
composite.plot()


Add DiscordLocale values for these locales: Indonesian and Latin America (Spanish LATAM)

Pull Request Etiquette

[x] I have checked the PRs for upcoming features/bug fixes.
[x] I have read the contributing guidelines.

Changes

[x] Internal code
[ ] Library interface (affecting end-user code)
[ ] Documentation
[ ] Other: _____

Closes Issue: NaN
Description
Added DiscordLocale enum values for the following locales:

Indonesian
Latin America (Spanish LATAM)

Because those locales are already on the Discord's locale list

Thanks!


Allow HOME shortcut for config file name (like "~/.kube/config")

Coverage increased (+0.1%) to 37.16% when pulling 6963bd9a593a44d69706715ebe715d21cd7cc5c0 on jayme-github:expanduser into 077a405afd366ba6f762b6d7f7e0b60d05c2ef8d on eldarion-gondor:master.

Looks great to me! I will get this merged once I have CLAs handled (expected to happen this week).

Would it be okay for you if I add "~/.kube/config" as default value for filename (that's a reasonable default in many cases I think) or would that fall into "Explicit is better than implicit."?

I am not a fan of defaulting the from_file method due to by nature it must be explicit, however, I am open to a new method which can look in a set of default locations for a config (similar to how we handle service accounts). It would almost be a automatic config setup by looking in all these common locations for a config (inspired by https://github.com/google/oauth2client/blob/master/oauth2client/client.py#L1347).


add crowdin-cli in the list

https://support.crowdin.com/cli-tool/

This issue belongs in the Main bucket. Unfortunately, we cannot move this issue on this end, so it is being closed.
If this is still an issue, please create a new issue in the Main bucket via https://github.com/ScoopInstaller/Main/issues/new?body=Moved+from+https%3A%2F%2Fgithub.com%2Flukesampson%2Fscoop%2Fissues%2F3874


[HOLD for payment 2023-10-30] [$500] Chat - Another report is displayed when access the report detail page by deep link

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open a report
Send a message
Create a workspace
Go to the announce chat room
Click on header to open detail page
Copy the URL
Logout and login again with this URL
Notice the report screen is displayed

Expected Result:
The report screen should display the report that matches with reportID param in the URL
Actual Result:
The detail page is the detail page of announce room but the report screen displays another report
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[x]  MacOS / Chrome / Safari
[x] Windows / Chrome
[x] MacOS / Desktop

Version Number: 1.3.76-0
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional
https://github.com/Expensify/App/assets/78819774/8b0bee74-b1a7-4a7e-8bf9-7c9125b2f7bb
Screencast from 02-10-2023 14_13_36.webm
https://github.com/Expensify/App/assets/78819774/44ef31c4-242a-4ed3-829d-532980c485cc
Expensify/Expensify Issue URL:
Issue reported by: @dukenv0307
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1696230613828629
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01e25fea022af2f13a
Upwork Job ID:<PHONE_NUMBER>957870080
Last Price Increase: 2023-10-16
Automatic offers:

hoangzinh | Reviewer | 27234356
dukenv0307 | Contributor | 27234359
dukenv0307 | Reporter | 27234362

Proposal
Please re-state the problem that we are trying to solve in this issue.
Another report is displayed when access the report detail page by deep link
What is the root cause of that problem?
In getLastAccessedReportID function, we only return the current reportID in route if it's an attachment URL. So when we open  the other sub-report URL this will return the last active report of the user
https://github.com/Expensify/App/blob/2160babec48a63cb93c660df4365bc4dc483ccb9/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.js#L62-L65
What changes do you think we should make in order to solve the problem?
We should use ReportUtils.parseReportRouteParams function to get reportID in the param from the route and return it if exists
const getLastAccessedReportID = (reports, ignoreDefaultRooms, policies, isFirstTimeNewExpensifyUser, openOnAdminRoom) => {
    // If deeplink url contains reportID params, we should show the report that has this reportID.
    const currentRoute = Navigation.getActiveRoute();
    const { reportID } = ReportUtils.parseReportRouteParams(currentRoute);
    console.log(reportID);
    if (reportID) {
        return reportID;
    }
    const lastReport = ReportUtils.findLastAccessedReport(reports, ignoreDefaultRooms, policies, isFirstTimeNewExpensifyUser, openOnAdminRoom);
    return lodashGet(lastReport, 'reportID');
};

https://github.com/Expensify/App/blob/2160babec48a63cb93c660df4365bc4dc483ccb9/src/libs/Navigation/AppNavigator/ReportScreenIDSetter.js#L62-L65
What alternative solutions did you explore? (Optional)
NA
Result
Screencast from 02-10-2023 14:34:22.webm

Are we waiting on @madmax330 to weigh in here?
https://github.com/Expensify/App/issues/28641#issuecomment-1746525935

Sorry for the delay

Not overdue

I'm not sure we need a regression test for this thoughts @kevinksullivan ?

Agreed @madmax330

Paid out!


Center align Loading component based on remaining screen height

Fixes #8762 - Repositions the page loader to be centered on the all pages.
This PR updates the loader component’s CSS, ensuring that it appears in the center of the screen on all pages.
After Changes:

Summary by CodeRabbit

New Features

Enhanced the Loading component for improved responsiveness and adaptability based on viewport position.

Bug Fixes

Resolved layout issues by transitioning from a grid system to a flexbox model for better alignment and centering.

Refactor

Simplified the inner structure of the Loading component while maintaining a fixed width for the logo.

@Suhail2701 keep readable titles for the PR and fo follow the PR template which includes the merge checklist.

Hi @rithviknishad,
I have updated the Loading component as you mentioned. Kindly check it and let me know your feedback.
Thank you!

@coderabbitai full review

LGTM


Cannot get teh plugin installed

This seams like an awesome plugin but I have issues trying to install the plugin in UE4.9.2 (and also 4.8.3).

I did a git checkout of master.
Copied the BLUI to the plugin folder of UE (as the docs mention)
The docs says: "Copy the files located inside the 'shipping' folder... " but I cannot find the shipping folder in the BLUI branch. So I am not sure what to do here...
Start UE4 4.9.2 and enable the plugin.
After restart, a popup appears with text "Plugin missing opr incompatible: Missing or incompatible modules in BLUI plugin - would you like to disable it? You will no longer be able to open any assets created using it."

What must I do to use the plugin? Any help is more than welcome

Please download a zip distribution from the Release pages on Github. The repo does not include the binary files for CEF or the header files

Hi,
Thank you for the response but I still get an error. I downloaded the release as you said from here https://github.com/AaronShea/BLUI/releases. Tried installing it but no luck so far... I must be doing something wrong here...
Here is what I did:

I removed the plugin from C:...EpicGames/4.9/Engine/Plugins
Downloaded the BLUI.3.1.Windows.Linux.CX
Unzipped it and copied the complete directory BLUI to C:...EpicGames/4.9/Engine/Plugins
Created new empty project with Starter Content
Edit > Plugins > UI > Enable BLUI and restart
Error: Missing or incompatible modules in BLUI plugin - would you like to disable it? You will no longer ...
As it does not work I deleted the BLUI from C:...EpicGames/4.9/Engine/Plugins
Copied the BLUI directory in "directory of project" > Plugins
Opened the project
Error: "Plugin 'BLUI' failed to load because module 'BLULoader' could not be found. Please ensure the plugin is properly installed, otherwhise consider disabling it..."

I have copied the complete unzipped directory BLUI to the Plugins directory so I am not sure what to do here. Is there a step that I missed? I only did the steps above, so do not assume I did any other steps like copy the something else somewhere, set a flag some where, installed anything else,...
I would really like to use this awesome plugin!
Any help is much appreciated.
Kind regards,
T

You must install the plugin at a project level, not into the Engine's plugin directory.

Hi,
I tried that (starting from point 8 in previous comment). I see the README mentions "Re-generate your project's Visual Studio file and load up the editor. Then check the plugin list to ensure it has been loaded!". I do not have Visual Studio as I am just using BluePrints. Maybe that is the issue?

There is your problem, it needs to be a C++ project to allow the plugin to compile in Visual Studio.

Ok thanks, that solved the mystery. Any chance in making this plugin work without the need to compile in Visual Studio?

It's a code plugin, so it is required that you have visual studio installed, otherwise Unreal could never even compile the project.

MachineId:08B450454308DFDEFAE79FAD4EF2909E
EpicAccountId:9fea9eb493fa4a7f981b1156273a72d1
Unknown exception - code c06d007e (first/second chance not available)
""
KERNELBASE
UE4Editor_Blu!delayLoadHelper2() [f:\dd\vctools\delayimp\delayhlp.cpp:323]
UE4Editor_Blu!tailMerge_libcef_dll()
UE4Editor_Blu!CefStringBase::FromWString() [d:\ue4\4.10\last\plugins\blui.3.1.windows.linux.cx.-.vs2015\blui\thirdparty\cef\win\include\internal\cef_string_wrappers.h:605]
UE4Editor_Blu!CefStringBase::CefStringBase() [d:\ue4\4.10\last\plugins\blui.3.1.windows.linux.cx.-.vs2015\blui\thirdparty\cef\win\include\internal\cef_string_wrappers.h:325]
UE4Editor_Blu!FBlu::StartupModule() [d:\ue4\4.10\last\plugins\blui.3.1.windows.linux.cx.-.vs2015\blui\source\blu\private\blu.cpp:9]
UE4Editor_Core!FModuleManager::LoadModuleWithFailureReason() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\core\private\modules\modulemanager.cpp:438]
UE4Editor_Projects!FModuleDescriptor::LoadModulesForPhase() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\projects\private\moduledescriptor.cpp:370]
UE4Editor_Projects!FPluginManager::LoadModulesForEnabledPlugins() [d:\buildfarm\buildmachine++depot+ue4-releases+4.10\engine\source\runtime\projects\private\pluginmanager.cpp:454]
UE4Editor!FEngineLoop::LoadStartupModules() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:1982]
UE4Editor!FEngineLoop::PreInit() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launchengineloop.cpp:1495]
UE4Editor!GuardedMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\launch.cpp:110]
UE4Editor!GuardedMainWrapper() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\buildfarm\buildmachine_++depot+ue4-releases+4.10\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll
not compilled (;


add locator string to composed error messages for chained exceptions

            Open("http://todomvc4tasj.herokuapp.com/");
            S("#new-todo").SetValue("a").PressEnter();

            SS("#todo-list>li").FindBy(Have.ExactText("a"))
                .DoubleClick();
            SS("#todo-list>li").FindBy(Have.ExactText("a"))
                .S(".edit").SetValue("a edited").PressEnter();

fails with

Result Message:
Test method Lesson1.TodoMVCTests.ProvidesCommonTasksManagement threw exception:
OpenQA.Selenium.WebDriverTimeoutException:
Timed out after 4 seconds
while waiting for condition: : NSelene.Conditions.Visible
Expected: True
Actual: False ---> OpenQA.Selenium.WebDriverTimeoutException:
Timed out after 4 seconds
while waiting for condition: : NSelene.Conditions.Visible
Expected: True
Actual: False ---> OpenQA.Selenium.NotFoundException: element was not found by conditionNSelene.Conditions.ExactText
Expected: contains a
Actual:

and is not informative enough
First two Exceptions in the chain: tells just that something was not visible.. But what?
The solution would be "adding locator string to the error message" in order to identify to which element search the error message belogns to.

fixed to:
OpenQA.Selenium.WebDriverTimeoutException :
Timed out after 0.25 seconds
while waiting entity with locator: By.Selene: (By.Selene: (By.CssSelector: #todo-list>li).FindBy(ExactText is a)).FindInner(By.CssSelector: .edit)
for condition: Visible
  Expected : True
  Actual   : False
  ----> OpenQA.Selenium.WebDriverTimeoutException :
Timed out after 0.25 seconds
while waiting entity with locator: By.Selene: (By.CssSelector: #todo-list>li).FindBy(ExactText is a)
for condition: Visible
  Expected : True
  Actual   : False
  ----> OpenQA.Selenium.NotFoundException : element was not found in collection by condition ExactText is a
  Actual html elements : [

		<input value="a" class="toggle" type="checkbox">
		a
		<button class="destroy"></button>

	<input class="edit">

]
  Actual visible texts : []

unit test needed


Custom Fonts not working on iOS when useWebKit={true}

Hi @shukerullah , can you provide a minimal reproducible app where we can see the issue?

Fonts are working fine on Android and iOS when useWebkit is set to false.
Here is my code:
const headlineBlack = Platform.select({
  ios: `Headline-Black.otf`,
  android: `file:///android_asset/fonts/Headline-Black.otf`
});

const textRoman = Platform.select({
  ios: `Text-Roman.otf`,
  android: `file:///android_asset/fonts/Text-Roman.otf`
});

const html = `<!DOCTYPE html>
  <html>
    <head>
      <meta charset="utf-8" />
      <meta
        name="viewport"
        content="width=device-width; initial-scale=1; maximum-scale=1"
      />
      <style>
        @charset "UTF-8";
        @font-face {
          font-family: "Headline-Black";
          src: url("${headlineBlack}");
        }
        @font-face {
          font-family: "TextRoman";
          src: url("${textRoman}");
        }
      </style>
    </head>
    <body>
      ${content}
    </body>
  </html>`

  <WebView
    source={{
      html,
      baseUrl: "http://localhost/",
    }}
  />

Duplicate of #137 you cannot load local file with WKWebView for now.

@Titozzz in which way is it possible to support this on the react native side? Is there a flag you can set in the webkit webview to allow loading fonts from the documents directory?
I'm thinking of doing a PR to load fonts, but I'm not really sure where the bug here is.

Duplicate of #137 you cannot load local file with WKWebView for now.

Urgent need to load external files!
Look forward for the update!
Thank you!


trainingg end with nan loss

Thanks for your code! When I try to run it on my dataset, the error output is:
File "FewX-master/fewx/data/dataset_mapper.py", line 234, in generate_support
support_id= self.support_df.loc[
(self.support_df['category_id'] == query_cls) &
(~self.support_df['image_id'].isin(used_image_id))
& (~self.support_df['id'].isin(used_id_ls))
, 'id'].sample(random_state=id).tolist()[0]
1)Is there anything wrong with generating pickle file?
and if i change the code to : support_id= self.support_df.loc[
(self.support_df['category_id'] == query_cls)  , 'id'].sample(random_state=id).tolist()[0]
this error happens:
detectron2/detectron2/modeling/proposal_generator/proposal_utils.py", line 95, in find_top_rpn_proposals
"Predicted boxes or scores contain Inf/NaN. Training has diverged."
FloatingPointError: Predicted boxes or scores contain Inf/NaN. Training has diverged.
2) Could you give some suggestions?

You can try to reduce both the support_shot and support_way to 1. It should be ok. You can not remove the (~self.support_df['image_id'].isin(used_image_id)) & (~self.support_df['id'].isin(used_id_ls)), because we have to make sure the image and instance are not used in both the query and support image.

If you use your own dataset, you can try to reduce the learning rate. A large learning rate sometimes may cause the training to divergence.

I have reduced the learning rate to 0.0001, but it still went nan loss.
In fewx/modeling/fsod/fsod_rcnn.py, 158 line the support waymust be 2 ?

Sorry, you can not change the support_way. You can reference the paper for details. The contrastive training is very important for the performance, especially on the MS COCO dataset. Do you use your own dataset?

Currently, the code only supports the 2-way contrastive training.

Yes. I have tried as you have suggested, but the first error still happens.
I wonder if I have made the wrong pickle file.

You should make sure that your dataset format is in the COCO format, especially the bbox format in your json file.

You can print self.support_df to debug. You have to make sure there are at least 2 images for each class when the support_shot is 1.

Hi @Fly-dream12 @fanq15 , I met the same error:
query_cls = self.support_df.loc[self.support_df['id']==id, 'category_id'].tolist()[0] # they share the same category_id and image_id IndexError: list index out of range
I followed the README to generate train_support_df.pkl, I guess there is something wrong with the generated pickle file, have you found the solution? Thanks!


Doomfist: Uppercut Immediately After Punch Causes Backwards Momentum

If you Punch and then immediately use Uppercut, Doomfist will fly backwards with the same speed as his punch (don't remove it, its too fun ;) )

I think it's actually when you uppercut during punch the bug happens


unit tests

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (36cc9e3) 56.26% compared to head (45b787a) 59.45%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #24      +/-   ##
==========================================
+ Coverage   56.26%   59.45%   +3.19%
==========================================
  Files           9        9
  Lines         846      846
==========================================
+ Hits          476      503      +27
+ Misses        358      332      -26
+ Partials       12       11       -1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Support for indicator constraints

Is your feature request related to a problem? Please describe.
Solvers like Gurobi allow the use of indicator constraints (https://www.gurobi.com/documentation/8.1/refman/constraints.html) but I don't see a way of expressing those via cvxpy.
Describe the solution you'd like
It would be great to support indicator constraints in a similar manner as Gurobipy does:
(binary expression) >> (linear constraint)
Describe alternatives you've considered
I have implemented indicator constraints using Big-M method and implemented that with cvxpy.

This can be implemented within minor changes to cvxpy's disciplined quasi-convex programming support. Assuming your linear constraint is linear_expr <= 0, you can write the desired "indicator constraint" as binary_expr * linear_expr <= 0.
The one caveat is that you need to give cvxpy sign information on binary_expr and linear_expr. There isn't a great way to do that right now. If you can afford to introduce auxiliary variables, this can be written as
a = cvxpy.Variable(shape=(), pos=True)
b = cvxpy.Variable(shape=(), neg=True)
constraints = [
    linear_expr == b
    binary_expr == a
    a * b <= 0
]

The better solution would be to add functionality to cvxpy.atoms.affine.wraps, so that you could assert an expression has a given sign without introducing extra variables.
As to your desired syntax binary_expr >> linear_expr, I can say that won't happen. CVXPY already reserves the << and >> operators to create linear matrix inequalities.

This is related to the SOS1 (special ordered set type 1) constraint used in a lot of outside solvers: (a,b) are SOS1 if at most one of them is nonzero.  If we restrict both a and b to be nonnegative, we'd like to say a * b <= 0, but, as I understand it, a * b is quasiconcave so DQCP doesn't allow this.  Am I misunderstanding something?


add custom product layout

1. Why is this change necessary?
Because it's not possible to create own custom product box templates to category.
Actual $path will be overwritten.
2. What does this change do, exactly?

Implements override function to extjs store to add new product box.
Modifiy product box template to load dynamically $productBoxLayout Template or custom by $path

3. Describe each step to reproduce the issue or behaviour.
It's a feature :)
4. Please link to the relevant issues (if any).

5. Which documentation changes (if any) need to be made because of this PR?
I will do if pr is accepted :)
6. Checklist

[ ] I have written tests and verified that they fail without my change
[ ] I have squashed any insignificant commits
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

Hey @haebich,
thanks for your contribution. Please remember to sign the CLA.

Hi @haebich, thank you very much for your contribution! 💙
We're sorry it took so long until it was merged.


REQUEST_HEADERS_TO_REMOVE.contains(headerName) not work

Hello,there is something wrong with the remove request headers in ProxyEndPoint class.
protected HttpRequestMessage transformRequest(HttpRequestMessage requestMsg) {
        requestMsg = massageRequestURI(requestMsg);
        final Headers headers = requestMsg.getHeaders();
        for (Header entry : headers.entries()) {
            String headerName = entry.getName().getNormalised();
            //it seems not work
            if (REQUEST_HEADERS_TO_REMOVE.contains(headerName)) {
                headers.remove(entry.getKey());
            }
        }
  ...
    }

when i change .contains(headerName) to .contains(new HeaderName(headerName)),it works.

Yeah good catch, I'll fix that.


unbound-control reload does not check view's existence before restart service

Version 1.11.0
In addition to fixed issue #259
Now unbound-checkconf works fine (thanks).
But unbound-control reload still does not check view's existence before restart the service.
# unbound-control reload
ok

# systemctl status unbound
 notice: Restart of unbound 1.11.0.
 error: no view with name: test_zone_01
 fatal error: Could not setup access control list

The problem still hasn't been fixed. I want to reload and not lose the service


wip: add rough draft notes for world docs pages

closing this as these have been included/addressed in each docs page


Initialize Git Repository for Challenge

Set up a Git repository to manage the project's version control. Ensure .gitignore is correctly configured and commit all necessary files. This ticket tracks the completion of the repository initialization after some files were already added.
Acceptance Criteria:
Repository exists and is properly initialized.
.gitignore includes Python cache files, .vscode settings, and other unwanted files.

Added files are properly committed.

merged and synchronized my local repository with the GitHub repository


Install fails: load_config.sh not found

./install_all.sh
This command looks for load_config.sh in the parent directory.  The file is outside the context of the GitHub so it can never be found.  I also don't see the file anywhere within the GitHub repository.
Thoughts? Remedy?

It is located in Opensurfaces > scripts > install


COMP: add missing header with GCC 13.1.1

With GCC 13.1.1 <cstdint> is no longer implicitly included causing build failure
/home/fabio/Dev/AURNEW/insight-toolkit/src/InsightToolkit-5.3.0/Modules/Filtering/MathematicalMorphology/include/itkMathematicalMorphologyEnums.h:23:1: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
   22 | #include "ITKMathematicalMorphologyExport.h"
  +++ |+#include <cstdint>
   23 |

Also, please amend your commit to make the message start with COMP: , as per the failing check.


raftstore: change the region merge flow path to fix some bugs

Signed-off-by: Liqi Geng<EMAIL_ADDRESS>What have you changed?
cherry-pick https://github.com/tikv/tikv/pull/6481 to release-3.0
What is the type of the changes?

Bugfix (a change which fixes an issue)

How is the PR tested?

Integration test

Does this PR affect documentation (docs) or should it be mentioned in the release notes?
No.
Does this PR affect tidb-ansible?
No.

Tests fail.

Tests fail.

Fixed.

/merge


Unable to preview without buying $250 license

npm run preview requires npm run build which requires purchasing a PRO UI license. Makes it difficult to kick the tires unless you fork out $250 for a license.

Indeed I am based on Nuxt UI Pro for it. Note that with UI Pro you can also use those templates.
BTW this is free when running npm run dev


Playwright Test Runner：folio

Is your feature request related to a problem? Please describe.
folio+taiko is the same as jest+tailo
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

It Taiko should work with folio as it works with jest.
Are you facing any issue during the integration?

need some work
folio is more power and more customable than jest.

I suggest making some example project.like these:
https://github.com/microsoft/playwright-test
We need taiko-folio-test

As you are experimenting with it. Would you be willing to create a sample project and raise a PR?

I can try it.


Add a grayscale format and tweak.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

58 of 58 (100.0%)  changed or added relevant lines in 6 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 100.0%

Totals

Change from base Build<PHONE_NUMBER>0:
0.2%

Covered Lines:
702

Relevant Lines:
702

💛  - Coveralls


README.md upgrade

Can you please make this only one commit? Thanks.

GitHub now has a squash & merge feature so you don't need the submitter to squash.


chore(shared): avoid publish tsbuildinfo

By default with our config, typescript will generate a .tsbuildinfo file in the parent directory of the outDir. However, the parent of ./lib/esm is ./lib which is the publish dir, we have to explicitly specify path of .tsbuildinfo.
This will avoid publish .tsbuildinfo file, which has a size of 32kb, the lib folder will shrink from 65.1kb to 32.0kb.

That's a nice catch!


catch NameError exception

Coverage remained the same at 39.835% when pulling 74c9a3ae633c7f720bdfdbc934ef54bc7898948e on myarjunar:dev-docker-settings into d28ba06811805e18d42806304f843297592e02a2 on healthsites:develop.


fix: update dependency entries

Current state
Some dependencies are missing or outdated.
Changes introduced here
Updated entries in package.json
Checklist

[x] All commit messages adhere to the appropriate format in order to trigger a correct release

I believe this PR can be closed as the next branch already contains changes to address these issues.


Search and /works test plan

Purpose
Plan out how we're going to test our work with users (internal or external) in order to establish a usability baseline and then to test iteratively.
In scope
Usability testing /works pages as they are now
Incoming Sierra metadata: info hierarchy, comprehension, does it help user accomplish goal?
TODO

[x] Plan out research activities and team responsibilities (@hthair @Heesoomoon and Lyndsay)
[x] Decide how to recruit participants for each research activity
[x] Communicate test plan to rest of team / create new issues for research activities

Here are some research candidates for Works to set us in the right design direction.

Ordering and grouping of the data fields (card sorting)
Testing comprehension level for Sentence display (Cooper Hewitt) vs. List display (Harvard Art Museum)
Collecting user feedback on Work type labels

new usability test on works with external pps.
internal relevance testing booked for w/c 10th dec.
card sort online for ranking order of info on works pages.

new tickets being created to reflect above.


chore: fix typo

Signed-off-by: Zhizhen He<EMAIL_ADDRESS>
Fix typo in README.md and test functions.

TODO

[x] Use cargo fmt
[ ] Add necessary tests
[ ] Add changelog entry
[ ] Update default config/theme in README (if applicable)
[ ] Update man page at lsd/doc/lsd.md (if applicable)

Not sure why the CI did not kick in. Let me try closing and reopening just in case that helps.

Codecov Report

Merging #753 (be6b85f) into master (501232d) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #753   +/-   ##
=======================================
  Coverage   86.78%   86.78%
=======================================
  Files          43       43
  Lines        4313     4313
=======================================
  Hits         3743     3743
  Misses        570      570

Impacted Files
Coverage Δ

src/flags/hyperlink.rs
95.65% <100.00%> (ø)

src/flags/icons.rs
97.12% <100.00%> (ø)

src/flags/size.rs
98.41% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 1, 1, 1)

The function deeplab2/model/layers/drop_path.py:78 throws a TypeError. What I find very confusing, is that it works if the crop size or batch size is changed.
[stderr]I0128 07:15:55.863254<PHONE_NUMBER>95872 train.py:106] Reading the config file.
[stderr]I0128 07:15:55.867749<PHONE_NUMBER>95872 train.py:87] Download checkpoint https://storage.googleapis.com/gresearch/tf-deeplab/checkpoint/swidernet_sac_1_1_4.5_os16_panoptic_deeplab_cityscapes_trainfine.tar.gz
[stderr]I0128 07:15:55.871759<PHONE_NUMBER>95872 connectionpool.py:975] Starting new HTTPS connection (1): storage.googleapis.com:443
[stderr]I0128 07:15:56.443871<PHONE_NUMBER>95872 connectionpool.py:461] https://storage.googleapis.com:443 "GET /gresearch/tf-deeplab/checkpoint/swidernet_sac_1_1_4.5_os16_panoptic_deeplab_cityscapes_trainfine.tar.gz HTTP/1.1"<PHONE_NUMBER>150
[stderr]I0128 07:18:34.766288<PHONE_NUMBER>95872 train.py:119] Starting the experiment.
[stderr]2022-01-28 07:18:34.768104: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  SSE3 SSE4.1 SSE4.2 AVX AVX2 FMA
[stderr]To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
[stderr]2022-01-28 07:18:37.764929: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 14655 MB memory:  -> device: 0, name: Tesla V100-PCIE-16GB, pci bus id: 2d94:00:00.0, compute capability: 7.0
[stderr]2022-01-28 07:18:37.766537: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:1 with 14655 MB memory:  -> device: 1, name: Tesla V100-PCIE-16GB, pci bus id: 434f:00:00.0, compute capability: 7.0
[stderr]2022-01-28 07:18:37.767908: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:2 with 14655 MB memory:  -> device: 2, name: Tesla V100-PCIE-16GB, pci bus id: 5a33:00:00.0, compute capability: 7.0
[stderr]2022-01-28 07:18:37.769792: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1510] Created device /job:localhost/replica:0/task:0/device:GPU:3 with 14655 MB memory:  -> device: 3, name: Tesla V100-PCIE-16GB, pci bus id: 6ea8:00:00.0, compute capability: 7.0
[stderr]INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0', '/job:localhost/replica:0/task:0/device:GPU:1', '/job:localhost/replica:0/task:0/device:GPU:2', '/job:localhost/replica:0/task:0/device:GPU:3')
[stderr]I0128 07:18:38.373827<PHONE_NUMBER>95872 mirrored_strategy.py:369] Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0', '/job:localhost/replica:0/task:0/device:GPU:1', '/job:localhost/replica:0/task:0/device:GPU:2', '/job:localhost/replica:0/task:0/device:GPU:3')
[stderr]I0128 07:18:38.375211<PHONE_NUMBER>95872 train_lib.py:105] Using strategy <class 'tensorflow.python.distribute.mirrored_strategy.MirroredStrategy'> with 4 replicas
[stderr]I0128 07:18:38.389083<PHONE_NUMBER>95872 deeplab.py:57] Synchronized Batchnorm is used.
[stderr]I0128 07:18:38.390186<PHONE_NUMBER>95872 axial_resnet_instances.py:144] Axial-ResNet final config: {'num_blocks': [3, 6, 3, 3], 'backbone_layer_multiplier': 4.5, 'width_multiplier': 1.0, 'stem_width_multiplier': 1.0, 'output_stride': 16, 'classification_mode': True, 'backbone_type': 'wider_resnet', 'use_axial_beyond_stride': 0, 'backbone_use_transformer_beyond_stride': 0, 'extra_decoder_use_transformer_beyond_stride': 32, 'backbone_decoder_num_stacks': 0, 'backbone_decoder_blocks_per_stage': 1, 'extra_decoder_num_stacks': 0, 'extra_decoder_blocks_per_stage': 1, 'max_num_mask_slots': 128, 'num_mask_slots': 128, 'memory_channels': 256, 'base_transformer_expansion': 1.0, 'global_feed_forward_network_channels': 256, 'high_resolution_output_stride': 4, 'activation': 'relu', 'block_group_config': {'attention_bottleneck_expansion': 2, 'drop_path_keep_prob': 0.800000011920929, 'drop_path_beyond_stride': 4, 'drop_path_schedule': 'linear', 'positional_encoding_type': None, 'use_global_beyond_stride': 0, 'use_sac_beyond_stride': 32, 'use_squeeze_and_excite': False, 'conv_use_recompute_grad': True, 'axial_use_recompute_grad': True, 'recompute_within_stride': 0, 'transformer_use_recompute_grad': False, 'axial_layer_config': {'query_shape': (129, 129), 'key_expansion': 1, 'value_expansion': 2, 'memory_flange': (32, 32), 'double_global_attention': False, 'num_heads': 8, 'use_query_rpe_similarity': True, 'use_key_rpe_similarity': True, 'use_content_similarity': True, 'retrieve_value_rpe': True, 'retrieve_value_content': True, 'initialization_std_for_query_key_rpe': 1.0, 'initialization_std_for_value_rpe': 1.0, 'self_attention_activation': 'softmax'}, 'dual_path_transformer_layer_config': {'num_heads': 8, 'bottleneck_expansion': 2, 'key_expansion': 1, 'value_expansion': 2, 'feed_forward_network_channels': 2048, 'use_memory_self_attention': True, 'use_pixel2memory_feedback_attention': True, 'transformer_activation': 'softmax'}}, 'bn_layer': functools.partial(<class 'keras.layers.normalization.batch_normalization.SyncBatchNormalization'>, momentum=0.9900000095367432, epsilon=0.0010000000474974513), 'conv_kernel_weight_decay': 0.0}
[stderr]I0128 07:18:39.049323<PHONE_NUMBER>95872 deeplab.py:96] Setting pooling size to (65, 129)
[stderr]I0128 07:18:39.049559<PHONE_NUMBER>95872 aspp.py:135] Global average pooling in the ASPP pooling layer was replaced with tiled average pooling using the provided pool_size. Please make sure this behavior is intended.
[stderr]I0128 07:18:39.049677<PHONE_NUMBER>95872 aspp.py:135] Global average pooling in the ASPP pooling layer was replaced with tiled average pooling using the provided pool_size. Please make sure this behavior is intended.
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.511644<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.513136<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.517010<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.518056<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.522685<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.523885<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.527496<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.528717<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.533386<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]INFO:tensorflow:Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.534450<PHONE_NUMBER>95872 cross_device_ops.py:621] Reduce to /job:localhost/replica:0/task:0/device:CPU:0 then broadcast to ('/job:localhost/replica:0/task:0/device:CPU:0',).
[stderr]I0128 07:18:44.552655<PHONE_NUMBER>95872 controller.py:395] restoring or initializing model...
[stderr]I0128 07:18:44.659193<PHONE_NUMBER>95872 controller.py:401] initialized model.
[stderr]I0128 07:18:45.906069<PHONE_NUMBER>95872 api.py:446] Eval with scales ListWrapper([1.0])
[stderr]I0128 07:18:47.215825<PHONE_NUMBER>95872 api.py:446] Global average pooling in the ASPP pooling layer was replaced with tiled average pooling using the provided pool_size. Please make sure this behavior is intended.
[stderr]I0128 07:18:47.244710<PHONE_NUMBER>95872 api.py:446] Global average pooling in the ASPP pooling layer was replaced with tiled average pooling using the provided pool_size. Please make sure this behavior is intended.
[stderr]I0128 07:18:47.272035<PHONE_NUMBER>95872 api.py:446] Eval scale 1.0; setting pooling size to [65, 129]
[stderr]I0128 07:19:05.988396<PHONE_NUMBER>95872 api.py:446] Global average pooling in the ASPP pooling layer was replaced with tiled average pooling using the provided pool_size. Please make sure this behavior is intended.
[stderr]I0128 07:19:06.017653<PHONE_NUMBER>95872 api.py:446] Global average pooling in the ASPP pooling layer was replaced with tiled average pooling using the provided pool_size. Please make sure this behavior is intended.
[stderr]I0128 07:19:11.751652<PHONE_NUMBER>95872 controller.py:492] saved checkpoint to /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/cap/data-capability/wd/output_d5d1c53e_workspaceblobstore/air_flange_panoptic_segmentation/ckpt-0.
[stderr]I0128 07:19:11.752440<PHONE_NUMBER>95872 controller.py:237] train | step:      0 | training until step 50000...
[stderr]2022-01-28 07:19:11.881448: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:12.539248<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:12.583310<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:12.626576<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.219306<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.262344<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.304924<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.542769<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.586726<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.630722<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]I0128 07:19:13.883121<PHONE_NUMBER>95872 cross_device_ops.py:903] batch_all_reduce: 1 all-reduces with algorithm = nccl, num_packs = 1
[stderr]INFO:tensorflow:Error reported to Coordinator: in user code:
[stderr]
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/deeplab.py:135 call  *
[stderr]        result_dict = self._decoder(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:761 call  *
[stderr]        current_output, activated_output, memory_feature, endpoints = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:560 call_encoder_before_stacked_decoder  *
[stderr]        current_output, activated_output, memory_feature = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/axial_block_groups.py:366 call  *
[stderr]        drop_path_random_mask = drop_path.generate_drop_path_random_mask(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/drop_path.py:78 generate_drop_path_random_mask  *
[stderr]        random_tensor += tf.random.uniform(
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py:206 wrapper  **
[stderr]        return target(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py:296 random_uniform
[stderr]        shape = tensor_util.shape_tensor(shape)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:1080 shape_tensor
[stderr]        return ops.convert_to_tensor(shape, dtype=dtype, name="shape")
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/profiler/trace.py:163 wrapped
[stderr]        return func(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/ops.py:1566 convert_to_tensor
[stderr]        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:346 _constant_tensor_conversion_function
[stderr]        return constant(v, dtype=dtype, name=name)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:272 constant
[stderr]        allow_broadcast=True)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:290 _constant_impl
[stderr]        allow_broadcast=allow_broadcast))
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:553 make_tensor_proto
[stderr]        "supported type." % (type(values), values))
[stderr]
[stderr]    TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 1, 1, 1). Consider casting elements to a supported type.
[stderr]Traceback (most recent call last):
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/training/coordinator.py", line 297, in stop_on_exception
[stderr]    yield
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/distribute/mirrored_run.py", line 346, in run
[stderr]    self.main_result = self.main_fn(*self.main_args, **self.main_kwargs)
[stderr]  File "/tmp/tmpalp69jov.py", line 13, in step_fn
[stderr]    ag__.converted_call(ag__.ld(self)._train_step, (ag__.ld(inputs),), None, fscope_1)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 446, in converted_call
[stderr]    result = converted_f(*effective_args)
[stderr]  File "/tmp/tmp89who94l.py", line 10, in tf___train_step
[stderr]    outputs = ag__.converted_call(ag__.ld(self)._model, (ag__.ld(inputs)[ag__.ld(common).IMAGE],), dict(training=True), fscope)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 382, in converted_call
[stderr]    return _call_unconverted(f, args, kwargs, options)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 463, in _call_unconverted
[stderr]    return f(*args, **kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/keras/engine/base_layer.py", line 1037, in __call__
[stderr]    outputs = call_fn(inputs, *args, **kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 695, in wrapper
[stderr]    raise e.ag_error_metadata.to_exception(e)
[stderr]TypeError: in user code:
[stderr]
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/deeplab.py:135 call  *
[stderr]        result_dict = self._decoder(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:761 call  *
[stderr]        current_output, activated_output, memory_feature, endpoints = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:560 call_encoder_before_stacked_decoder  *
[stderr]        current_output, activated_output, memory_feature = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/axial_block_groups.py:366 call  *
[stderr]        drop_path_random_mask = drop_path.generate_drop_path_random_mask(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/drop_path.py:78 generate_drop_path_random_mask  *
[stderr]        random_tensor += tf.random.uniform(
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py:206 wrapper  **
[stderr]        return target(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py:296 random_uniform
[stderr]        shape = tensor_util.shape_tensor(shape)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:1080 shape_tensor
[stderr]        return ops.convert_to_tensor(shape, dtype=dtype, name="shape")
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/profiler/trace.py:163 wrapped
[stderr]        return func(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/ops.py:1566 convert_to_tensor
[stderr]        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:346 _constant_tensor_conversion_function
[stderr]        return constant(v, dtype=dtype, name=name)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:272 constant
[stderr]        allow_broadcast=True)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:290 _constant_impl
[stderr]        allow_broadcast=allow_broadcast))
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:553 make_tensor_proto
[stderr]        "supported type." % (type(values), values))
[stderr]
[stderr]    TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 1, 1, 1). Consider casting elements to a supported type.
[stderr]
[stderr]I0128 07:19:17.038703<PHONE_NUMBER>90848 coordinator.py:219] Error reported to Coordinator: in user code:
[stderr]
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/deeplab.py:135 call  *
[stderr]        result_dict = self._decoder(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:761 call  *
[stderr]        current_output, activated_output, memory_feature, endpoints = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:560 call_encoder_before_stacked_decoder  *
[stderr]        current_output, activated_output, memory_feature = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/axial_block_groups.py:366 call  *
[stderr]        drop_path_random_mask = drop_path.generate_drop_path_random_mask(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/drop_path.py:78 generate_drop_path_random_mask  *
[stderr]        random_tensor += tf.random.uniform(
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py:206 wrapper  **
[stderr]        return target(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py:296 random_uniform
[stderr]        shape = tensor_util.shape_tensor(shape)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:1080 shape_tensor
[stderr]        return ops.convert_to_tensor(shape, dtype=dtype, name="shape")
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/profiler/trace.py:163 wrapped
[stderr]        return func(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/ops.py:1566 convert_to_tensor
[stderr]        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:346 _constant_tensor_conversion_function
[stderr]        return constant(v, dtype=dtype, name=name)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:272 constant
[stderr]        allow_broadcast=True)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:290 _constant_impl
[stderr]        allow_broadcast=allow_broadcast))
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:553 make_tensor_proto
[stderr]        "supported type." % (type(values), values))
[stderr]
[stderr]    TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 1, 1, 1). Consider casting elements to a supported type.
[stderr]Traceback (most recent call last):
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/training/coordinator.py", line 297, in stop_on_exception
[stderr]    yield
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/distribute/mirrored_run.py", line 346, in run
[stderr]    self.main_result = self.main_fn(*self.main_args, **self.main_kwargs)
[stderr]  File "/tmp/tmpalp69jov.py", line 13, in step_fn
[stderr]    ag__.converted_call(ag__.ld(self)._train_step, (ag__.ld(inputs),), None, fscope_1)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 446, in converted_call
[stderr]    result = converted_f(*effective_args)
[stderr]  File "/tmp/tmp89who94l.py", line 10, in tf___train_step
[stderr]    outputs = ag__.converted_call(ag__.ld(self)._model, (ag__.ld(inputs)[ag__.ld(common).IMAGE],), dict(training=True), fscope)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 382, in converted_call
[stderr]    return _call_unconverted(f, args, kwargs, options)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 463, in _call_unconverted
[stderr]    return f(*args, **kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/keras/engine/base_layer.py", line 1037, in __call__
[stderr]    outputs = call_fn(inputs, *args, **kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/autograph/impl/api.py", line 695, in wrapper
[stderr]    raise e.ag_error_metadata.to_exception(e)
[stderr]TypeError: in user code:
[stderr]
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/deeplab.py:135 call  *
[stderr]        result_dict = self._decoder(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:761 call  *
[stderr]        current_output, activated_output, memory_feature, endpoints = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:560 call_encoder_before_stacked_decoder  *
[stderr]        current_output, activated_output, memory_feature = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/axial_block_groups.py:366 call  *
[stderr]        drop_path_random_mask = drop_path.generate_drop_path_random_mask(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/drop_path.py:78 generate_drop_path_random_mask  *
[stderr]        random_tensor += tf.random.uniform(
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py:206 wrapper  **
[stderr]        return target(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py:296 random_uniform
[stderr]        shape = tensor_util.shape_tensor(shape)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:1080 shape_tensor
[stderr]        return ops.convert_to_tensor(shape, dtype=dtype, name="shape")
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/profiler/trace.py:163 wrapped
[stderr]        return func(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/ops.py:1566 convert_to_tensor
[stderr]        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:346 _constant_tensor_conversion_function
[stderr]        return constant(v, dtype=dtype, name=name)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:272 constant
[stderr]        allow_broadcast=True)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:290 _constant_impl
[stderr]        allow_broadcast=allow_broadcast))
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:553 make_tensor_proto
[stderr]        "supported type." % (type(values), values))
[stderr]
[stderr]    TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 1, 1, 1). Consider casting elements to a supported type.
[stderr]
[stderr]Traceback (most recent call last):
[stderr]  File "deeplab2/trainer/train.py", line 126, in <module>
[stderr]    app.run(main)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/absl/app.py", line 300, in run
[stderr]    _run_main(main, args)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/absl/app.py", line 251, in _run_main
[stderr]    sys.exit(main(argv))
[stderr]  File "deeplab2/trainer/train.py", line 122, in main
[stderr]    FLAGS.num_gpus)
[stderr]  File "/mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/trainer/train_lib.py", line 191, in run_experiment
[stderr]    steps=config.trainer_options.solver_options.training_number_of_steps)
[stderr]  File "/mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/orbit/controller.py", line 241, in train
[stderr]    self._train_n_steps(num_steps)
[stderr]  File "/mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/orbit/controller.py", line 443, in _train_n_steps
[stderr]    train_output = self.trainer.train(num_steps_tensor)
[stderr]  File "/mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/orbit/standard_runner.py", line 146, in train
[stderr]    self._train_loop_fn(self._train_iter, num_steps)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 885, in __call__
[stderr]    result = self._call(*args, **kwds)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 933, in _call
[stderr]    self._initialize(args, kwds, add_initializers_to=initializers)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 760, in _initialize
[stderr]    *args, **kwds))
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/function.py", line 3066, in _get_concrete_function_internal_garbage_collected
[stderr]    graph_function, _ = self._maybe_define_function(args, kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/function.py", line 3463, in _maybe_define_function
[stderr]    graph_function = self._create_graph_function(args, kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/function.py", line 3308, in _create_graph_function
[stderr]    capture_by_value=self._capture_by_value),
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py", line 1007, in func_graph_from_py_func
[stderr]    func_outputs = python_func(*func_args, **func_kwargs)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py", line 668, in wrapped_fn
[stderr]    out = weak_wrapped_fn().__wrapped__(*args, **kwds)
[stderr]  File "/azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py", line 994, in wrapper
[stderr]    raise e.ag_error_metadata.to_exception(e)
[stderr]TypeError: in user code:
[stderr]
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/orbit/utils/loop_fns.py:118 loop_fn  *
[stderr]        step_fn(iterator)
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/trainer/trainer.py:217 step_fn  *
[stderr]        self._train_step(inputs)
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/trainer/trainer.py:229 _train_step  *
[stderr]        outputs = self._model(inputs[common.IMAGE], training=True)
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/deeplab.py:135 call  *
[stderr]        result_dict = self._decoder(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:761 call  *
[stderr]        current_output, activated_output, memory_feature, endpoints = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/encoder/axial_resnet.py:560 call_encoder_before_stacked_decoder  *
[stderr]        current_output, activated_output, memory_feature = (
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/axial_block_groups.py:366 call  *
restoring or initializing model...
loading initial checkpoint initial_checkpoint/swidernet_sac_1_1_4.5_os16_panoptic_deeplab_cityscapes_trainfine/ckpt-60000
load initial checkpoint initial_checkpoint/swidernet_sac_1_1_4.5_os16_panoptic_deeplab_cityscapes_trainfine/ckpt-60000
initialized model.
saved checkpoint to /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/cap/data-capability/wd/output_d5d1c53e_workspaceblobstore/air_flange_panoptic_segmentation/ckpt-0.
train | step:      0 | training until step 50000...
Cleaning up all outstanding Run operations, waiting 300.0 seconds
0 items cleaning up...
Cleanup took 7.152557373046875e-07 seconds
[stderr]        drop_path_random_mask = drop_path.generate_drop_path_random_mask(
[stderr]    /mnt/azureml/cr/j/16e36723e2274cd7ba286426bf351baf/exe/wd/deeplab2/model/layers/drop_path.py:78 generate_drop_path_random_mask  *
[stderr]        random_tensor += tf.random.uniform(
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py:206 wrapper  **
[stderr]        return target(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/ops/random_ops.py:296 random_uniform
[stderr]        shape = tensor_util.shape_tensor(shape)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:1080 shape_tensor
[stderr]        return ops.convert_to_tensor(shape, dtype=dtype, name="shape")
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/profiler/trace.py:163 wrapped
[stderr]        return func(*args, **kwargs)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/ops.py:1566 convert_to_tensor
[stderr]        ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:346 _constant_tensor_conversion_function
[stderr]        return constant(v, dtype=dtype, name=name)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:272 constant
[stderr]        allow_broadcast=True)
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/constant_op.py:290 _constant_impl
[stderr]        allow_broadcast=allow_broadcast))
[stderr]    /azureml-envs/pytorch-1.9/lib/python3.7/site-packages/tensorflow/python/framework/tensor_util.py:553 make_tensor_proto
[stderr]        "supported type." % (type(values), values))
[stderr]
[stderr]    TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 1, 1, 1). Consider casting elements to a supported type.
[stderr]
[stderr]

Here is my experiment config file:
# proto-file: deeplab2/config.proto
# proto-message: ExperimentOptions
#
# Panoptic-DeepLab with ResNet-50-beta model variant and output stride 32.
#
############### PLEASE READ THIS BEFORE USING THIS CONFIG ###############
# Before using this config, you need to update the following fields:
# - experiment_name: Use a unique experiment name for each experiment.
# - initial_checkpoint: Update the path to the initial checkpoint.
# - train_dataset_options.file_pattern: Update the path to the
#   training set. e.g., your_dataset/train*.tfrecord
# - eval_dataset_options.file_pattern: Update the path to the
#   validation set, e.g., your_dataset/eval*.tfrecord
# - (optional) set merge_semantic_and_instance_with_tf_op: true, if you
#   could successfully compile the provided efficient merging operation
#   under the folder `tensorflow_ops`.
#########################################################################
#
# The `resnet50_beta` model variant replaces the first 7x7 convolutions in the
# original `resnet50` with three 3x3 convolutions, which is useful for dense
# prediction tasks.
#
# References:
# For resnet-50-beta, see
# https://github.com/tensorflow/models/blob/master/research/deeplab/core/resnet_v1_beta.py
# For Panoptic-DeepLab, see
# - Bowen Cheng, et al. "Panoptic-DeepLab: A Simple, Strong, and Fast Baseline
#   for Bottom-Up Panoptic Segmentation." In CVPR, 2020.

# Use a unique experiment_name for each experiment.
experiment_name: "air_flange_panoptic_segmentation"
model_options {
  # Update the path to the initial checkpoint (e.g., ImageNet
  # pretrained checkpoint).
  initial_checkpoint: "initial_checkpoint/swidernet_sac_1_1_4.5_os16_panoptic_deeplab_cityscapes_trainfine/ckpt-60000"

  # Set whether to restore the last convolution of the semantic head when
  # loading from the initial checkpoint. Setting this flag to false is useful
  # when an initial checkpoint was trained on a dataset with different classes.
  restore_semantic_last_layer_from_initial_checkpoint: false

  # Set whether to restore the last convolution of the instance heads when
  # loading from the initial checkpoint. Depending on the meta architecture,
  # this includes center heatmap, center regression and motion regression.
  restore_instance_last_layer_from_initial_checkpoint: false

  backbone {
    name: "swidernet"
    output_stride: 16
    stem_width_multiplier: 1
    backbone_width_multiplier: 1
    backbone_layer_multiplier: 4.5
    use_sac_beyond_stride: 32
    drop_path_keep_prob: 0.8
    drop_path_schedule: "linear"
  }
  decoder {
    feature_key: "res5"
    decoder_channels: 256
    aspp_channels: 256
    atrous_rates: 6
    atrous_rates: 12
    atrous_rates: 18
  }
  panoptic_deeplab {
    low_level {
      feature_key: "res3"
      channels_project: 64
    }
    low_level {
      feature_key: "res2"
      channels_project: 32
    }
    instance {
      low_level_override {
        feature_key: "res3"
        channels_project: 32
      }
      low_level_override {
        feature_key: "res2"
        channels_project: 16
      }
      instance_decoder_override {
        feature_key: "res5"
        decoder_channels: 128
        atrous_rates: 6
        atrous_rates: 12
        atrous_rates: 18
      }
      center_head {
        output_channels: 1
        head_channels: 32
      }
      regression_head {
        output_channels: 2
        head_channels: 32
      }
    }
    semantic_head {
      output_channels: 2
      head_channels: 256
    }
  }
}
trainer_options {
  save_checkpoints_steps: 1000
  save_summaries_steps: 100
  steps_per_loop: 100
  loss_options {
    semantic_loss {
      name: "softmax_cross_entropy"
      weight: 1.0
      top_k_percent: 0.2
    }
    center_loss {
      name: "mse"
      weight: 200
    }
    regression_loss {
      name: "l1"
      weight: 0.01
    }
  }
  solver_options {
    base_learning_rate: 0.00025
    training_number_of_steps: 50000
  }
}
train_dataset_options {
  dataset: "air_flange_panoptic"
  # Update the path to training set.
  file_pattern: "train*.tfrecord"
  # Adjust the batch_size accordingly to better fit your GPU/TPU memory.
  # Also see Q1 in g3doc/faq.md.
  batch_size: 2
  crop_size: 1025
  crop_size: 2049
  min_resize_value: 0
  max_resize_value: 0
  increase_small_instance_weights: true
  small_instance_weight: 3.0
}
eval_dataset_options {
  dataset: "air_flange_panoptic"
  # Update the path to validation set.
  file_pattern: "val*.tfrecord"
  batch_size: 1
  crop_size: 1025
  crop_size: 2049
  min_resize_value: 0
  max_resize_value: 0
  # Add options to make the evaluation loss comparable to the training loss.
  increase_small_instance_weights: true
  small_instance_weight: 3.0
}
evaluator_options {
  continuous_eval_timeout: 43200
  stuff_area_limit: 2048
  center_score_threshold: 0.1
  nms_kernel: 13
  save_predictions: true
  save_raw_predictions: false
  # Use pure tf functions (i.e., no CUDA kernel) to merge semantic and
  # instance maps. For faster speed, compile TensorFlow with provided kernel
  # implementation under the folder `tensorflow_ops`, and set
  # merge_semantic_and_instance_with_tf_op to true.
  merge_semantic_and_instance_with_tf_op: false
  eval_interval: 1000
}

Hi @davidblom603,
Thanks for the issue.
It is not clear to us what is happening.
Could you please first verify the code runs on the academic dataset (e.g., Cityscapes)?
Cheers,

Hi @davidblom603,
It has been a while, and we hope you have figured out the issue.
Closing the issue now due to lack of activity.
But, please feel free to reopen it if you encounter any other issue.
Cheers,


Error on 'M73 P0.000 R46': unable to parse 0.000

It works now, but i can't print in Mainsail.
The Error is "Error on 'M73 P0.000 R46': unable to parse 0.000"

Hi @hrvat94
Where do you see this error? Klipper supports floating point P values for M73.
Best regards,
Lasse

Hi,
I'm not sure what's causing this, but it's not a klipper_estimator bug. Upstream Klipper supports setting floats for this field, and I've verified this on my local machine where the line M73 P0.000 R46 runs with no issue. My guess would be it's some macro or custom module. I don't think this is the right place to debug the issue though.
Best regards,
Lasse

maybe because i comment out rename_existing: SET_PRINT_STATS_INFO_BASE in the Mainsail.cfg? Its because the Ender 5 plus klipper maybe

have install the original Firmware on my Ender 5 plus. Now it seems to work. The modified Firmware was the issue. Thanks


"Template Mode" issue while using other plugin

I will create an issue with the offending plugin creator as well but figured I could add this here because the fix is quite simple.
When using Sprig in combination with the Contact Form Extensions, the template mode is set back to the View::TEMPLATE_MODE_CP on form submission which then doesn't allow Sprig to find the templates provided by the request.
Not entirely sure why the author of that plugin is setting the template mode back to the View::TEMPLATE_MODE_CP but regardless, ensuring the the template mode is set to be View::TEMPLATE_MODE_SITE would avoid any conflicts or potential bugs moving forward.
# ComponentsController.php

public function actionRender(): Response
{
    // ... previous code

    $template = Sprig::$plugin->request->getValidatedParam('sprig:template');

    // new lines of code to prevent incorrect template mode
    $view = Craft::$app->getView();
    $view->setTemplateMode(View::TEMPLATE_MODE_SITE);

    $content = $view->renderTemplate($template, $variables);

    // ... rest of code
}

I've already created a PR https://github.com/hybridinteractive/craft-contact-form-extensions/pull/99 to address this issue, so you may want to nudge @DynamiteGoesBoom about this.

Is there a reason why adding those two lines of code is a bad idea? Figured it would be easier to fix it in one place versus communicating to plugin authors as issues arise. Just curious.

In my opinion Sprig shouldn't be responsible for fixing issues caused by other plugins, plus there may be cases where this is the desired behaviour. It appears that the PR has been merged.

Totally get it. I commented on that PR also so hopefully that helped. Thanks again 👍🏽
Sent from my iPhone

On Aug 28, 2020, at 1:43 PM, Ben Croker<EMAIL_ADDRESS>wrote:

In my opinion Sprig shouldn't be responsible for fixing issues caused by other plugins, plus there may be cases where this is the desired behaviour. It appears that the PR has been merged.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


fix: Solve precedence issue in materializer

This is not great; hopefully there is a better way  -- it creates lots of parentheses where they're not needed. One challenge is that we don't store parentheses in our AST; we use the parser for this and encode as BinOp in the correct order. But that facility is no longer available for us during the materialization phase.
Maybe one inelegant solution is to check whether we need parentheses and only add them if so.

I didn't update snapshots as it's a huge diff, but here's a sample of what it does now:
from foo
  select [
    s = (a+b),
    diff = (c-s)
]

SELECT
  +(a + b) AS s,
  +(c - +(a + b)) AS diff
FROM
  foo

At the very least we'd have to run over the result and strip away the unneeded parentheses; but hopefully there's an easier way
CC @aljazerzen if you have ideas

While this does work, we have a system for determining when parenthesis are needed based on "binding strength". The problem is probably with this system and how it handles left-to-right and right-to-left precedence.

Ok, so here is the deal with precedence in SQL (and other languages including standard math notation):
Detailed explanation how our translator works
(can you add this to the source code?)
If there are no parenthesis, first we determine operator precedence. This is called "binding strength" in our code in translator.rs. Operators with higher binding strength are applied first:
f == a + b * c or d
(f == (a + (b * c))) or d

Second rule is needed when there are multiple operators of the same strength (i.e. a + b - c). The rule is called associativity in programming languages, but it has some naming conflicts with math so let's call it operator application "direction". It can be left or right:
input: a + b + c
left dir:  (a + b) + c
right dir:  a + (b + c)

In our case, we have an AST which has to be converted to SQL and have parenthesis inserted where needed. We do this in translate_operand function in translator.rs.
There are basically two cases that can happen:
case 1:    case 2:
  +          *
 / \        / \
c   *      c   +
   / \        / \
  a   b      a   b

In case 1, outer operator has lower strength than inner operator, so parenthesis are not needed.
In case 2, outer operator has higher strength than inner operator, so without parenthesis it would overrule the inner operator, so parenthesis are needed.
This is implemented by passing max_binding_strength to translate_operand. If operand (in this case inner node) has greater binding strength than requested, it gets nested.
Now cases when operators has the same binding strength:
 case 3       case 4
    -            -
  /   \        /   \
 a     -      -     c
      / \    / \
     c   d  a   b

(I used minus for all ops, but it's the same for any combination of operators with same binding strength).
Case 3:

If the outer operator has left direction (this is the case for minus),
it would override the inner operator, so we need parenthesis.
If the outer operator has right direction,
it would not override inner operator, so we don't need parenthesis.

Case 4:

If the outer operator has left direction (this is the case for minus),
it would not override the inner operator, so we don't need parenthesis.
If the outer operator has right direction
it would override inner operator, so we need parenthesis.

General rule is that parenthesis are needed when outer operator direction != operand position.
Note that some operators (such as plus) could have both application directions and still have the same meaning:
plus has left and right direction:
(a - b) + c = a - b + c (ok)
a + (b - c) = a + b - c (ok)

minus has only left direction:
(a + b) - c = a + b - c (ok)
a - (b + c) = a - b + c (nope)

Formally, this is called associativity: https://en.wikipedia.org/wiki/Operator_associativity
TODO

add enum Associativity with values Left, Right, Both with functions is_left and is_right.
add function associativity to SQLExpression trait
implement it for sql::BinaryOperator (most ops have Both)
add correct_associativity param to translate_operand and nest expressions if binding strength is equal and associativity is not correct.
when translating UnOp, current_associativity can be always true.
when translating BinOp, left operand:current_associativity = op.direction().is_left()

when translating BinOp, right operand:current_associativity = op.direction().is_right()

Thanks for this description of the process. I would definitely support adding this explanation to the code. A couple questions:

I couldn't find a definition for operand position as used in the general rule below:

General rule is that parenthesis are needed when outer operator direction != operand position.

Do you have test cases for testing out all kinds of aberrant expressions? Do you need some?

A naive question: Is it worth creating an intermediate step that simply places parentheses around each variable substitution? Sure - it generates lots of paren's (but I don't think we would need a leading "+" as in some of the examples above.) That would create testable (and hopefully correct) version that we could use as a benchmark for any optimizations like the general rule you propose.

Thanks again

operand position

Oh, I just meant position of the operand within a binary operation. That is: Left or Right.

2. Do you have test cases

I have these, but more is always better.
        assert_display_snapshot!(compile(
          r###"
          from numbers
          select c - (a + b)
          "###
          )?, @r###"
          SELECT
            c - (a + b)
          FROM
            numbers
          "###
        );

        assert_display_snapshot!(compile(
          r###"
          from numbers
          select c + (a - b)
          "###
          )?, @r###"
          SELECT
            c + a - b
          FROM
            numbers
          "###
        );

        assert_display_snapshot!(compile(
          r###"
          from numbers
          select (c + a) - b
          "###
          )?, @r###"
          SELECT
            c + a - b
          FROM
            numbers
          "###
        );

        assert_display_snapshot!(compile(
          r###"
          from numbers
          select ((c - d) - (a - b))
          "###
          )?, @r###"
          SELECT
            c - d - (a - b)
          FROM
            numbers
          "###
        );

3. Is it worth creating

That's a great question. I've spent much time optimizing generated SQL, so the queries are as readable as possible. It would be easier and less error prone to just always emit parenthesis, but I do think that readability is a big plus.
People are currently copy-pasting from prql compiler to SQL engines, and learning PRQL from the generated code, so it does hold some value.
As for your suggestion to always emit and compare results:

always emitting is easy (best to be done in translate_operand),
comparing is hard, because we need SQL evaluation engine. It could be done in integration tests that run on SQLite & DuckDB. Compile and execute only with necessary parenthesis, then compile and execute with all parenthesis and compare the results. For this we'd need some kind of compiler options that you pass along the PRQL query...

Thanks again for the detailed answer. I have been thinking of a parallel "end to end" test. It would push a bunch of expressions through Python (that does "ordinary arithmetic") and compare the output to the values created by the PRQL compiler & SQL engine. I started with this: It's not so easy to automate, but lets us create arbitrary test cases quickly.
    a = 11.0
    b = 13.0
    c = 17.0
    d = 19.0
    e = 23.0
    f = 29.0
    g = 31.0
    h = 37.0
    sum = a + b
    sum2 = sum + sum
    diff = c - d
    diff2 = diff - diff
    prod = e * f
    prod2 = prod * prod
    quot = g / h
    quot2 = quot / quot

    exp1 = sum + diff
    exp2 = sum - diff
    exp3 = sum * diff
    exp4 = sum / diff
    exp5 = sum2 + diff2
    exp6 = sum2 - diff2
    exp7 = sum2 * diff2
    # exp8 = sum2 / diff2 # avoid divide by zero

    print("a=", a)
    print("b=", b)
    print("c=", c)
    print("d=", d)
    print("e=", e)
    print("f=", f)
    print("g=", g)
    print("h=", h)
    print("sum=", sum)
    print("sum2=", sum2)
    print("diff=", diff)
    print("diff2=", diff2)
    print("prod=", prod)
    print("prod2=", prod2)
    print("quot=", quot)
    print("quot2=", quot2)

    print("exp1=", exp1)

Good idea, this could be fuzzed, to make sure that simple expressions are surly working right. I wrote a script to generate random expressions:
import random

values = [11.0, 13.0, 17.0, 19.0, 23.0, 29.0, 31.0, 37.0]

def gen(max_depth, ops, terminal, rng: random.Random) -> str:
    if max_depth == 1 or rng.random() < 0.25:
        return terminal(rng)

    op = rng.choice(ops)

    l = gen(max_depth - 1, ops, terminal, rng)
    r = gen(max_depth - 1, ops, terminal, rng)
    return f'({l} {op} {r})'

def gen_number(rng: random.Random) -> str:
    return str(rng.choice(values))

def gen_arthmetic(rng: random.Random) -> str:
    return gen(4, ["+", "-", "*", "/", "%"], gen_number, rng)

def gen_boolean(rng: random.Random) -> str:
    return gen(1, ["<", ">", "==", "<=", ">=", "!="], gen_arthmetic, rng)

def gen_logic(rng: random.Random) -> str:
    return gen(3, ["and", "or"], gen_boolean, rng)

rng = random.Random(0)

for i in range(10):
    print(gen_logic(rng))

((((19.0 * 17.0) * (23.0 + 17.0)) / ((37.0 * 13.0) + (19.0 * 37.0))) or (11.0 or 31.0))
((29.0 or (19.0 + 17.0)) and (29.0 or (23.0 / ((19.0 % 23.0) % (31.0 % 29.0)))))
((((17.0 + 17.0) * (31.0 + 23.0)) + ((31.0 % 23.0) - (13.0 * 29.0))) or (((23.0 - 19.0) * ((13.0 + 17.0) - (11.0 - 13.0))) or 19.0))
(((11.0 + 17.0) or (11.0 / ((13.0 % 23.0) + 13.0))) and ((((19.0 / 23.0) + (17.0 / 19.0)) + ((17.0 - 29.0) + (37.0 + 17.0))) or 31.0))
(((11.0 * ((23.0 + 17.0) + 37.0)) or (((17.0 % 23.0) % (13.0 / 11.0)) * (19.0 * (31.0 / 11.0)))) or ((13.0 + ((11.0 / 11.0) - (37.0 * 11.0))) or (13.0 / ((31.0 / 29.0) - 11.0))))
((19.0 and ((31.0 - (23.0 + 37.0)) * ((29.0 - 13.0) + (11.0 * 11.0)))) and (((37.0 + 37.0) * (17.0 * 19.0)) % (17.0 * (29.0 * 13.0))))
(23.0 and ((((13.0 % 23.0) + (23.0 * 31.0)) / 37.0) and (13.0 * (29.0 / (17.0 - 31.0)))))
(19.0 and 31.0)
((((23.0 * (31.0 - 19.0)) - ((37.0 + 19.0) + 31.0)) or (((19.0 + 37.0) - (17.0 % 13.0)) + (31.0 / (37.0 / 29.0)))) or (((29.0 - (17.0 + 23.0)) - ((23.0 % 37.0) - 13.0)) or (17.0 + 11.0)))
(((((11.0 % 13.0) % (13.0 % 31.0)) / ((31.0 % 37.0) - (19.0 / 11.0))) and (((29.0 * 13.0) * (23.0 * 31.0)) + (17.0 / 29.0))) or 31.0)

Cool! That fuzzing program is clever. I like how it adds other operators I hadn't imagined. But I am not sure that it addresses my concern.
I'm thinking about test cases that we can feed to PRQL, and then evaluate the resulting SQL to get values we can compare to known good values (say, values produced by a Python program's "ordinary arithmetic".)
I tweaked the fuzzing program to use strings ("a", "b", "c"...) instead of prime numbers. It happily generated some bodacious expressions. I also added "derive"s for the eight numbers, and pasted them into the Playground. (see below)
I then pasted the resulting SQL (see below) into SQLite, and got the results: It's not as interesting as I hoped - note how most of the expressions are 1 or 0.
a	b	c	d	e	f	g	h	exp_0	exp_1	exp_2	exp_3	exp_4	exp_5	exp_6	exp_7	exp_8	exp_9
11	13	17	19	23	29	31	37	1	1	1	1	1	0	1	1	1	1

Here's the generated PRQL:
from albums
select [

	a = 11.0,
    b = 13.0,
    c = 17.0,
    d = 19.0,
    e = 23.0,
    f = 29.0,
    g = 31.0,
    h = 37.0,

exp_0 = ((((d * c) * (e + c)) / ((h * b) + (d * h))) or (a or g)),
exp_1 = ((f or (d + c)) and (f or (e / ((d % e) % (g % f))))),
exp_2 = ((((c + c) * (g + e)) + ((g % e) - (b * f))) or (((e - d) * ((b + c) - (a - b))) or d)),
exp_3 = (((a + c) or (a / ((b % e) + b))) and ((((d / e) + (c / d)) + ((c - f) + (h + c))) or g)),
exp_4 = (((a * ((e + c) + h)) or (((c % e) % (b / a)) * (d * (g / a)))) or ((b + ((a / a) - (h * a))) or (b / ((g / f) - a)))),
exp_5 = ((d and ((g - (e + h)) * ((f - b) + (a * a)))) and (((h + h) * (c * d)) % (c * (f * b)))),
exp_6 = (e and ((((b % e) + (e * g)) / h) and (b * (f / (c - g))))),
exp_7 = (d and g),
exp_8 = ((((e * (g - d)) - ((h + d) + g)) or (((d + h) - (c % b)) + (g / (h / f)))) or (((f - (c + e)) - ((e % h) - b)) or (c + a))),
exp_9 = (((((a % b) % (b % g)) / ((g % h) - (d / a))) and (((f * b) * (e * g)) + (c / f))) or g),
]

And the generated SQL:
SELECT
  11 AS a,
  13 AS b,
  17 AS c,
  19 AS d,
  23 AS e,
  29 AS f,
  31 AS g,
  37 AS h,
  19 * 17 * (23 + 17) / (37 * 13 + 19 * 37)
  OR 11
  OR 31 AS exp_0,
  (
    29
    OR 19 + 17
  )
  AND (
    29
    OR 23 / 19 % 23 % 31 % 29
  ) AS exp_1,
  (17 + 17) * (31 + 23) + 31 % 23 - 13 * 29
  OR (23 - 19) * (13 + 17 - 11 - 13)
  OR 19 AS exp_2,
  (
    11 + 17
    OR 11 / (13 % 23 + 13)
  )
  AND (
    19 / 23 + 17 / 19 + 17 - 29 + 37 + 17
    OR 31
  ) AS exp_3,
  11 * (23 + 17 + 37)
  OR 17 % 23 % 13 / 11 * 19 * 31 / 11
  OR 13 + 11 / 11 - 37 * 11
  OR 13 / (31 / 29 - 11) AS exp_4,
  19
  AND (31 - 23 + 37) * (29 - 13 + 11 * 11)
  AND (37 + 37) * 17 * 19 % 17 * 29 * 13 AS exp_5,
  23
  AND (13 % 23 + 23 * 31) / 37
  AND 13 * 29 / (17 - 31) AS exp_6,
  19
  AND 31 AS exp_7,
  23 * (31 - 19) - 37 + 19 + 31
  OR 19 + 37 - 17 % 13 + 31 / 37 / 29
  OR 29 - 17 + 23 - 23 % 37 - 13
  OR 17 + 11 AS exp_8,
  11 % 13 % 13 % 31 / (31 % 37 - 19 / 11)
  AND 29 * 13 * 23 * 31 + 17 / 29
  OR 31 AS exp_9
FROM
  albums
limit 1

I started doing this on my flight last night, I have a couple of very basic questions for @aljazerzen to ensure I'm not missing anything:

add correct_associativity param to translate_operand and nest expressions if binding strength is equal and associativity is not correct.
when translating UnOp, current_associativity can be always true.

To confirm, current_associativity == correct_associativity, that's not intended as a difference, right?

add enum Associativity with values Left, Right, Both with functions is_left and is_right.

These functions are as simple as returning true for the respective value & Both, and false otherwise — I'm not missing anything there?

Re fuzzing, fine. There is https://github.com/bheisler/criterion.rs. Though to some extent if we get the design right, the fuzzing becomes less important (this was not a subtle bug!)

I've done & pushed a less-hacky-but-still-hacky version which just adds parentheses when the binding strengths are equal. I'm going to try and finish the one above — the only thing I'm tripping up on is at what level to do this — in the parent or child node.

OK this is done correctly now! I need to have another glance but then I think we can merge.
Hopefully the merge into semantic won't be too difficult...

I've generated a test case to compare Python's calculations (using "ordinary arithmetic") to the output of the SQL engine.
from albums
select [
 a = 11.0,
    b = 13.0,
    c = 17.0,
    d = 19.0,
    e = 23.0,
    f = 29.0,
    g = 31.0,
    h = 37.0,
    sum = a + b,
    sum2 = sum + sum,
    diff = c - d,
    diff2 = diff - diff,
    prod = e * f,
    prod2 = prod * prod,
    quot = g / h,
    quot2 = quot / quot,

    exp1 = sum + diff,
    exp2 = sum - diff,
    exp3 = sum * diff,
    exp4 = sum / diff,
    exp5 = sum2 + diff2,
    exp6 = sum2 - diff2,
    exp7 = sum2 * diff2,
]
take 1

Python says the results should be:
a= 11.0
b= 13.0
c= 17.0
d= 19.0
e= 23.0
f= 29.0
g= 31.0
h= 37.0
sum= 24.0
sum2= 48.0
diff= -2.0
diff2= 0.0
prod= 667.0
prod2= 444889.0
quot= 0.8378378378378378
quot2= 1.0
exp1: 22.0
exp2: 26.0
exp3: -48.0
exp4: -12.0
exp5: 48.0
exp6: 48.0
exp7: 0.0

Once your code stabilizes, we can check the output of SQL to see if it matches. Thanks.

OK merging! Happy to address any feedback after

OK merging! Happy to address any feedback after as ever

Good news! The Python & PRQL output produce the same results.
And the SQL output is quite readable. Thanks!


Ordering items and categories on the README

Currently, the README is sorted first by category, then alphabetically. There has been suggestion to instead order things based on predicated relevance; e.g., put 83pa28d higher up in its category than the direct USB docs.
Alphabetical Ordering

Consistent, objective, good for those in search of a particular tool
Poor for those just starting out, made somewhat moot by Ctrl+F

Relevance Ordering

Good for those just starting out
Inherently subjective and therefore potentially drama-inducing

A proposed middle ground would be creating a new category at the top of the page for links useful to anyone wanting to get into calculator coding. All such links would still appear on the rest of the page. The other categories would remain alphabetical.
On that note, its also worth discussing which categories should/should not exist and how they're ordered. Too few categories makes searching within a topic harder, while too many could become granular and repetitive (i.e. more tools spanning multiple categories when they don't really need to).
For reference, the current categories are ASM, TI-BASIC, C/C++, Hardware, Tools, Emulators, Other (in that order). The largest are ASM and Tools, while the shortest are C/C++ and Other. The order is rather arbitrary, though not bad.

I like the idea of having sections based on user wants; "I want to...", and then a list of likely wants.
It's probably worth enumerating the most common ones, regardless of if we do this, because it would likely inform any organizational strategy.

(suggestions from Discord)
I want to...

...learn TI-BASIC

TI|BD, code fragments, useful routines, 84+CE catalog

...learn ASM

83pa28d, (e)z80 docs, (e)z80 opcode table

...use the CE toolchain

CE toolchain, CEmu, Git guide

...run programs on my calculator

arTIfiCE, TILP, ticalc, Cemetech, TI-Planet (last three should be added to the docs as a whole)

...write and run programs on my computer

CEmu, Firebird, SourceCoder, Project Builder, TokenIDE

Gosh I spent far too long trying to match that formatting before I realized it was bolded
Perhaps also

...learn more about the hardware of my calculator

WikiTI, Hardware Revisions sheet

I also think ...use the CE toolchain warrants some explanation and also links to resources for learning C (any suggestions for good ones to link?), like:

...use the CE toolchain, to write programs for my calculator in C

CE toolchain, CEmu, Git guide, insert C programming language guide here

I agree, this is better, though one might even just say "write programs for my calculator in C" and let the toolchain speak for itself for the sake of brevity.

Great idea.
I think this is more or less actionable now. I'm personally a bit sick of writing prose and instructions, having spent the past several days writing things, so I offer this up for anyone who would like to do it.

Great idea.
I think this is more or less actionable now. I'm personally a bit sick of writing prose and instructions, having spent the past several days writing things, so I offer this up for anyone who would like to do it.


Rename results to response

Coverage remained the same at 100.0% when pulling 868f37d609bf8e36371873e1fad3824ce698b4a1 on ktutnik:master into 092c61670f38ca568f294669564992eb8cd3a158 on kambojajs:master.