feat(CART-cpc-1057):Add Cart to Each New User

JIRA: link to jira ticket
Context:
What is the ticket about and why are we doing this change.
Does this PR change the .vscode folder in petclinic-frontend?:
If the PR changes the .vscode folder, explain why in detail because it should not.
Be sure to include cgerard321 as a reviewer.
Reviewers need to check for any changes to the
.vscode folder and add a comment about it to their review comments.
Changes
What are the various changes and what other modules do those changes affect.
This can be bullet point or sentence format.
Before and After UI (Required for UI-impacting PRs)
If this is a change to the UI, include before and after screenshots to show the differences.
If this is a new UI feature, include screenshots to show reviewers what it looks like.
Dev notes (Optional)
Specific technical changes that should be noted
Linked pull requests (Optional)
Pull request links

255 files changed is a sign that major issues occurred. You probably did a merge instead of a rebase somewhere and pulled in changes from main. Pushing this to main would cause huge issues with the git history.


As a user, I can track attendance for each student, so I can see how consistent they are with their lessons.

We will not be implementing this


[Info] The tricky-tricky cd, tcd, lcd and multi-tabs project session automation.

Hold on. (All points are tested by try-n-error)

cd will store a path for the current Vim.
lcd stores a path for the current win, and any win-split from the current win will inherit that.
tcd stores a path for the current tab, and any tab-split from the current tab will inherit that.
cd will only affect those no-lcd wins in no-tcd tabs.
tcd will also remove what lcd has stored to the current win.
remember that when you just create a new tab then calling tcd at any win will give you the same result from pwd at any win under this tab.

So wtf should I do to detect that .suave/ folder?

All your function calls will use the nearest stored path. So assume all users follow the rule that they only call tcd in all additional tabs, then they won't run into trouble(these tabs are not saved into the session of this project) since you use getcwd(-1, -1) to detect whether there is a .suave/ folder.

Should add this into Wiki

a083fed


SNOW-1261540: SPCS Documentation contains incompatible compute pool name

SnowCLI version
2.1.1
Python version
3.12.2
Platform
No response
What happened
In the SnowCLI SPCS documentation page where the docs describe how to create a pool.  The name "pool-1" is used, "-" is not allowed as a name for a pool.
The following error is provided when using the example:

'pool-1' is not a valid compute pool name. Note that compute pool names must be unquoted identifiers.

Suggestion is to remove the "-" and replace with underscore.  In the command reference, this same example is used.
Console output
No response
How to reproduce
No response

This issue is being fixed in a separate documentation JIRA.

@sfc-gh-mheavin please close this GitHub ticket after deploying changes in docs.


Usage of cached Lazy state.

Consider the following (pseudocode):
struct Contract {
  s: Lazy<Test>
}

struct Test {
  v: bool
}

impl Contract {
  fn flip() {
    let old = self.s.get();
    old.v = !old.v;
    self.s.set(old)
  }

  fn flip_internal() {
    let old = self.s.get();
    self._internal();
    self.s.set(old); <---- !!! doesn't see changes from _internal !!!
  }

  fn _internal() {
    let old = self.s.get();
    old.v = !old.v;
    self.s.set(old)
  }
}

When we enter flip_internal we cache old = self.s.get(), then call into _internal which also reads AND MODIFIES the same Lazy<_>, we return back to flip_internal where the method sees cached version of self.s meaning it doesn't know about the changes made in _internal. It then overwrites them all.
This may seem obvious in this simple example but when contracts grow the logic flows may not be so clear anymore and mistakes can happen.
It would be nice to have a detector for it, not yet sure how that could be realised.

Closed by: #265


bun: 1.1.31 -> 1.1.34

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 355309

x86_64-linux

:white_check_mark: 2 packages built:

bun
helix-gpt

aarch64-linux

:white_check_mark: 2 packages built:

bun
helix-gpt

x86_64-darwin

:x: 2 packages failed to build:

bun
helix-gpt

aarch64-darwin

:white_check_mark: 2 packages built:

bun
helix-gpt

x86_64-darwin
❌ 2 packages failed to build:

But it builds on ofborg?

I guess, my machine is bad.


StartStreamTranscription fails with "A complete signal was sent without the preceding empty frame"

Confirm by changing [ ] to [x] below to ensure that it's a bug:

[x ] I've gone though Developer Guide and API reference
[ x] I've searched for previous similar issues and didn't find any solution
Related to "Websocket support for Transcribe #1599" issue.

Describe the bug
Using your test example (aws-sdk-cpp-1.9.82\aws-cpp-sdk-transcribestreaming-integration-tests\TranscribeTests.cpp) as a base when executed fails with an exception "A complete signal was sent without the preceding empty frame".
SDK version number
aws-sdk-cpp-1.9.82
Platform/OS/Hardware/Device
CentOS 7.0, curl 7.29.0, OpenSSL 1.0.2k-fips  26 Jan 2017
To Reproduce (observed behavior)
Unzip
aws_sdk_transcribe_stream.zip
Run "make clean; make"
Run "build/test "your_aws_key_id" "your_aws_key" "your_codec_linear_rate_8_size_16.pcm"
Expected behavior
Receive the transcription event
Logs/output
aws_sdk_2021-08-20-17.log

Hi @bsbontchev ,
This error seems to have been caused by a problem on the Service, it has recently been fixed though, would you mind retrying and telling me if you are still seeing the issue?

Yes, it is still there.
The provided aws_sdk_transcribe_stream.zip has all it is necessary to reproduce the issue.

The service is still not working. Is anybody looking into this issue?
Today tests results;
arg_initialize() result: 1
sdk_initialize()
transcribe_stream_initiailaize() result: 1
request_initiailaize >>
OnStreamReady >>
handler.SetOnErrorCallback >>
handler.SetOnErrorCallback error: HTTP response code: -1
Resolved remote host IP address:
Request ID:
Exception name: BadRequestException
Error message: A complete signal was sent without the preceding empty frame.
0 response headers:
handler.SetOnErrorCallback <<
handler.SetOnErrorCallback >>
handler.SetOnErrorCallback error: HTTP response code: -1
Resolved remote host IP address:
Request ID:
Exception name: BadRequestException
Error message: A complete signal was sent without the preceding empty frame.
0 response headers:
aws_sdk_2021-09-07-13.log

I'm facing the same issue.  I even went so far as to make a custom HttpClientFactory to make 100% certain the HTTP/2 option was set on the CURL* handle, to no avail.  The connection keeps ending with the BadRequestException: A complete signal was sent without the preceding empty frame.

Oddly, the windows version generated actual partial / final transcribe results at the end of the audio stream, though that was two weeks ago, and that was using WININET  on Windows.  I suspected HTTP/2 was the culprit, so spent the time converting it to use CURL.  It using CURL, but now I get a series of " A complete signal was sent without the preceding empty frame." followed by a reconnection attempt.


sql.Promise = require('myownpromisepackage') continue using native Promise in 4.0.0 Alpha 2

Version: 4.0.0-alpha2
OS: Win 10 X64
Node: 6.10.1
After assigning sql.Promise all promises continue to resolve to native promises in 4.x alpha 2

Thank you, fixed and released in 4.0.0.

Thanks @patriksimek!


Cannot Run Integration Tests on Linux

Describe the bug
I am attempting to use WebApplicationFactory to run some integration tests against my project.  They work fine in Windows, but if i run them in Linux (through CircleCI or on my Ubuntu machine) it tries to launch Kestrel
To Reproduce

Checkout https://github.com/luhis/CodeGolf/tree/integration_tests
Move to ./test/CodeGolf.Integration.Test/
run dotnet test

Linux Example:
Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

A total of 1 test files matched the specified pattern.
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
      Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {d57571d0-d43b-497c-8a7a-320fe81987d1} may be persisted to storage in unencrypted form.

link: https://circleci.com/gh/luhis/CodeGolf/1616?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link
The Linux example is outputting some config complaints, but I think that's unrelated to my issues.
Windows Output:
Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

A total of 1 test files matched the specified pattern.

Test Run Successful.
Total tests: 3
     Passed: 3
 Total time: 9.2560 Seconds

Further technical details

DotNetCore 3.0.101

@luhis thanks for contacting us.
I don't see how the example is trying to start kestrel. The logs that you mention come from data protection as it is warning that the keys will be stored unencrypted and that's expected.
Unless you see an output indicating that it is listening on port XXXX it is not starting any real server.
I'm closing this issue as there is no bug here.

you are right. kestrel is not running, but the test was continuing to run until it timed out on the test server.  the issue really was related to the missing settings, correcting that made the test pass in Linux the same as Windows


⚠ ClamAV has degraded performance

In c21f21a, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 70 ms

Resolved: ClamAV performance has improved in 3f17c4b.


Allow SocketConfiguration to specify SSLParameters as well as SSLContext

Environment Details

Helidon Version: 1.4.0
Helidon SE
JDK version: 11
OS: MacOS

Problem Description
I would like to be able to set up a WebServer socket that needs client auth but there doesn't seem to be a way of setting SSLParameters so that I can do that.
The SocketConfiguration.Builder class has an ssl method that allows an SSLContext to be specified, but can we also add an sslParams method that takes SSLParameters (and a corresponding sslParams() method on the SocketConfiguration class that returns what was set)?

Mutual TLS is now fully supported by Helidon. Could you please check with latest Helidon version?
If there is still a problem with configuration of TLS, please re-open this issue and let us know what is missing.
Thanks!


KNN bruteforce and IVF methods C/C++ API

/ok to test

/ok to test

/ok to test

/ok to test

/ok to test

/ok to test

/merge


running it on CPU?

Hi,
How can I run run_experiments.py in CPU?

Hi, sorry for the delayed response.  Our current configurations and results were obtained on multi-GPU settings.   Since our codebase is built upon detectron2,  if you could run the vanilla detectron2 on CPU only, you should be able to use or adapt our current codebase.  I found the prebuilt detectron2 on CPU here https://detectron2.readthedocs.io/en/latest/tutorials/install.html so you might try to install the corresponding detectron2 version.  We would appreciate it if you could keep this thread open and let us know if the current codebase is compatible with the CPU-only version.  We would be happy to keep it compatible.  PR would be welcome!
Thanks for your interest in our work!

Add this config in your config yaml.
MODEL:
  DEVICE: "cpu"


Checkboxes

Okay, I think we have to make the debugger simpler. This is how it works under the hood.
The application will always start in its initial state. Tracked signals can be stored in localStorage when application refreshes. When application loads again it starts from initial state and signals are loaded from localStorage. If router is present the signals will be remembered before the initial route is triggered. When debugger loads it will also remember loaded signals, in case router was not present.
I think it is a mistake to allow turning of tracking signals on and off, it should always be on. Lets say you add two items to a list, then turn off "track signals". Then you add a last item. You refresh, but will only see the last item now, because the previous signals has been discarded. I think this is confusing.
I suggest we try to let the debugger always track signals and only display a "reset state on refresh" checkbox. I also suggest to introduce two buttons next to the slider, allowing you to step back/forth instead of sliding. Or maybe just remove slider? Just have buttons for stepping? Slider is cool, but is it practical?
So the default behaviour would be that signals are always tracked, but you can choose to automatically reset the state when application resets. This is how it will work:

Application refreshes
If "reset state on refresh" was checked an empty array of signals is stored in localStorage as the app unloaded. If it was unchecked all tracked signals would be stored into localStorage ensuring that what you see in the UI is actually what will be reproduced
Router triggers and remembers any loaded signals
Router triggers initial signal
Debugger initializes and remembers any loaded signals, if not already remembered by router

Okay, so I do some work on this and this is how it looks:

So on a refresh here it will still be 2 signals and the state is reproduced. As I continue running signals they will be accumulated. If I manually hit "reset" it will of course reset. Or if I check the checkbox it will do that automatically when I refresh the page, always starting from 0 signals.

@christianalfoni I have a thought that appMounted signal could be root of some problems with debugger:

It doesn't occured when me reset model from debugger
it is occured every time we load an app no matter if debugger will try to replay from localStorage or not

Think we are okay now? Please create issue or talk at gitter if any more issues with this


is this issue with Node js Version ?

Licensed under the Apache License, Version 2.0 (the "License")
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Unsupported version v10.11.0. Trying rebuild.
Falling back to node-gyp rebuild
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
make: Entering directory /opt/api/build/node_modules/appmetrics/build'   ACTION binding_gyp_appmetrics_target_Set_appmetrics_reported_version_build_level Release/obj.target/appmetrics/geni/appmetrics.cpp infile: ./src/appmetrics.cpp outfile: /opt/api/build/node_modules/appmetrics/build/Release/obj.target/appmetrics/geni/appmetrics.cpp Replacing '"99\.99\.99\.29991231"' with '"<IP_ADDRESS>810081448"'   CXX(target) Release/obj.target/appmetrics/geni/appmetrics.o make: g++: Command not found make: *** [Release/obj.target/appmetrics/geni/appmetrics.o] Error 127 make: Leaving directory /opt/api/build/node_modules/appmetrics/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/ec2-user/.nvm/versions/node/v10.11.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:182:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
gyp ERR! System Linux 4.9.76-3.78.amzn1.x86_64
gyp ERR! command "/home/ec2-user/.nvm/versions/node/v10.11.0/bin/node" "/home/ec2-user/.nvm/versions/node/v10.11.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /opt/api/build/node_modules/appmetrics
gyp ERR! node -v v10.11.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.
npm WARN<EMAIL_ADDRESS>No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/node-report):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>install: node-gyp rebuild
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

Hi @tkssharma, this is partly due to Node Version :)
Appmetrics uses some native C++ code that we ship as a binary package on NPM. We are in the midst of getting that ready for Node 10 (https://github.com/RuntimeTools/appmetrics/pull/543) but for now there is no binary support for Node 10, so the appmetrics installer went down the route of trying to compile the C++ source code on your machine (this is the 'Unsupported version v10.11.0. Trying rebuild. Falling back to node-gyp rebuild' part).
Unfortunately your machine didn't have the expected compiler g++ installed, so faced with being unable to build the native code, the installation failed.
Your options are to wait for the next release of Appmetrics (which will have the binary packages for Node 10 included) or to install the compiler and give compiling the source code another go (see https://github.com/RuntimeTools/appmetrics/wiki/Prerequisites-for-building-appmetrics-from-source-code for pre-requisites, you can use the Node 8 pre-reqs).

@tkssharma @mattcolegate FYI we're not going to be shipping binaries any longer for Node 10 and later so you'll need to either install a C++ compiler or stick with Node 8.


Question about Bootstrap 3 Wiki Post

Hi,
the link to the slack channel is broken, so I try to aks my question here.
I try to get an external Css Lib (KendoUi for Ng2) to get loaded with webpack and Ng2.
So my Question is the wiki entry tells how to load styles with the StyleUrl, is the compiled style included in the bundle.js or an additional entry in my index.html as bundle.css?
https://github.com/AngularClass/angular2-webpack-starter/wiki/How-to-use-Bootstrap-3-and-Sass-and-ng2-bootstrap
Because I've get my kendo styles working with the templateUrl like you describe, but my problem is that the styles are only accessable in the component I loaded the styles. When I use navigate to an other view where I've not included the styleUrl then the styles are not globaly loaded. Is there a magic trick that this works?
@Component({
   selector: 'sxp-app',
   templateUrl: './app.component.html',
    styleUrls<EMAIL_ADDRESS>})

My Loader Entry
  {
       test: /\.css$/,
       use: ['to-string-loader', 'css-loader']
 },

that works fine for local styles but not global, how can I get my styles to be global or better how to render the styles as .css in my index.html?
THX
SquadWuschel

found a soultion, you should Upgrade your Wiki entry with the encapsulation
@Component({
   selector: 'sxp-app',
   templateUrl: './app.component.html',
   styleUrls<EMAIL_ADDRESS>   encapsulation: ViewEncapsulation.None
 })

The encapsulation tell Angular that the Styles are not only bound to this component, they are avaible in every Component (global)
encapsulation: ViewEncapsulation.None


Add Doxygen documentation

I think we should revisit the idea of generating Doxygen documentation for SEGS. Would you mind hosting this on your webserver under www.segs.io/doxy or similar, @nemerle? If not, we can have something like doxy.segs.io point elsewhere which is also no problem. Even without explicit Doxygen commentary in the codebase, Doxygen is capable of producing useful output. The inheritance diagrams, call graphs, and class/namespace list may be of significant benefit to potential developers who want a better understanding of the inner workings of SEGS.

http://doxy.segs.io/ is now live.


More features to add

@nakov , This is an excellent book and I really appreciate such great efforts to make software developers aware of modern crypto.
Here, I just want to give some suggestions:

In the crypto library recommendation part, I found it is not complete, some of the popular libraries have not been considered yet, such as OpenSSL, and its python wrapper pyOpenSSL etc. As a Python developer, I am still wondering which one to choose (pyOpenSSL or pycryptodomex or something else?). For Java I would go with Bouncy Castle.

Would you mind to add some homomorphic encryption explanations to this book? At least Paillier system as Partial homomorphic encryption system is a good one. As well as somewhat homomorphic encryption schemes and fully homomorphic schemes such as BGV and CKKS?

Thanks

This book is out of support. I am not sure if I will have time to finish it some day.


About Codebuild Projects

Is it necessary to create a new Codebuild project for each repository that has the same buildspec.yml file. Like, I have a project on COdebuild, but I have many repositories. Do I need to make a Codebuild project for each repository?

No, that is not necessary. You can create one project and override the source location programmatically for each build you run. We will also support multiple source locations in the future, so the build will be able to clone multiple repositories in a single build.


networking: Remove networking PoC

This has not seen traction or movement for a long time. Further, the old psabpf code required to make this work is now a full-fledged vSwitch of it's own:
https://github.com/NIKSS-vSwitch/nikss
Signed-off-by: Kyle Mestery<EMAIL_ADDRESS>

Needs to be updated to match the latest iteration of psabpf (whatever it's called now).


[Feature] Add profile to database

Add profile entity and associated fields to the database so that profile data can be stored
Is your feature request related to a problem? Please describe.
Currently, workout data is not associated to any profile, we want data to be linked to a profile
Describe the solution you'd like
Add profile entity and associated fields to the database so that profile data can be stored
Include a user story to describe why you want this feature
As a user
I want to be able to access my own specific workout data
So that I can see my own data

closed by #55


Remove support for Simba-provided JDBC drivers in product tests

Should finish or close: https://github.com/prestosql/presto/pull/1974?

CI failed -- https://github.com/prestosql/presto/issues/2375. Rebasing.


revert the filter on python < 3.8 in service-bus dev_requirements.txt

typed-ast has released an update. This should work now.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

@annatisch I am re-enabling the pylint install on the dev requirements for python 3.8. The break in typed-ast has been resolved.

TIL Pressing close and comment will leave the comment and close the PR.


Strong name everything.

https://github.com/aspnet/dnx/issues/2615
cc @davidfowl @Eilon @muratg @moozzyk @pranavkm

Hi @cesarbs, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

@cesarbs where is the Key.snk which suppose to be in ../../tools?!!

@hishamco It's there in the list of changed files.

Oops, i didn't see it :smile:


Dramatic build time increase for AutoLenses

I added a very small type to test out lenses in an app, and it increased my [non-clean] build time from 12 to 34 seconds using Sourcery 0.5.4. This is a repeatable process, not just a first time bump.
The type looks like this and generates proper output, just takes a very long time.
protocol AutoLens {}

struct Test: AutoLens {

    var x: Int
    var y: Double
    var z: String
}

Let me know if there's any more information I can provide for you.

Thanks for reporting, fixed in 0.5.5


Generate Arrows Dynamically

Hi,
Is it possible to generate arrows dynamically by just passing the from and target arrow id ?
I want to connect two widgets with an arrow on a user based action.
Thanks 😄

In short, yes. You can pass variables in that you know are connected.

Thanks @Schwusch Ill try with it


Missing show fps?

sodium had this feature, but when i added this mod its gone or did i just not see it.

Hey! Thanks for the issue report but could I have the versions of the mods you were using? Thanks!

Found it. its my problem, another mod called "sodium extra" gives more settings for sodium. (fps, particles, fogs and more)
You can add this features in the mod.

All good :)


Remove unneeded supplier partial

Continued discussion from https://github.com/StarcounterSamples/Products/issues/11

@ubbeK wrote:
I have seen that the supplier, which is connected to the product, is shown twice when the application is running in standalone mode.

@tomalec wrote:

Ah right, so that element is also present when Launcher is running,

it is

but is hidden because of "duck shooting". I added a not to explain "duck shooting"

Entire partial is hidden in layout hint, as it was hidden with default layout given in SQL
https://github.com/StarcounterSamples/Products/blob/feature_product_BEM_issue_11/src/Products/wwwroot/Products/viewmodels/ProductSupplierPage.html#L21
My question is whether we need this partial here or not? I think that providing a (visual) widget that is  hidden by default, only increases confusion.
So I would either:

Make <starcounter-include> visible bu default (via layout hint), but remove SupplierPage.html - other apps would be able to put smth there, but Products won't duplicate itself.
Remove both <starcounter-include> for supplier partial, and SupplierPage.html

I do not find a reason to keep SupplierPage.html in this app.

For me the answer is not that obvious.
I would actually like to see supplier's details coming from People app - but it should be more than just an input with the name.

coming from People app

That's the thing, People is the app that manages Companies, and Products already has the input for name, so I think we do not need another tile with "just an input with the name".
When we will remove SupplierPage.html from Products and keep <starcounter-include> for Suppliers partial, then you will get Product page, with input to select the supplier, and supplier's detaild comming from People

When we will remove SupplierPage.html from Products and keep  for Suppliers partial, then you will get Product page, with input to select the supplier, and supplier's detaild comming from People

But Suppliers partial is like Schroedinger's box. The response from the People app may or may not be there. That's why Products app includes its own response.

Are you saying that, if we will not provide SuppliersPage.html in Products, <starcounter-include> will not be able to get People's response?
if so SupplierPage.html could be empty.

Looks like this is done now?

Closing as done


Is SVD WG010 still pending?

According to the docs, the decision on SVD WG010 is still pending, since 2021.
Is that still current? I was under the impression that the proposal was accepted, but that the docs should still be edited to reflect that. Perhaps somebody with a longer membership of the HVNC than I can answer this?

This is indeed still open.
A number of issues were raised (by me) that I was asked to address in a new proposal. We are currently putting the last bits and pieces together for a theoretical basis that is able to split any variant into non-interfering sub-variants. I have been having some private communication with @Peter-J-Freeman about this.
I would like to write this work down and have it reviewed before using it in a proposal, as this would strengthen the proposal.

OK, thanks for the update! I guess we can keep this issue open as a reminder to update the docs.


Classification to regression

I have trained the DRNN on a classification task which overfits after about 12k steps with a hidden size of 512 and batch size of 1024. As soon as i adjust it to a regression task (basically changing the loss function to mse, 1 output dim), it takes very long to converge. Did someone make similiar experiences on regression tasks?

I have not tried on a regression task.  Maybe you want to first to identify whether the problem comes from the model or the data?  I mean if other models can easily overfit your regression data?  If yes, then maybe you want to adjust the learning rate of DRNN and see if the problem comes from there.  If other models cannot easily overfit the data, then maybe you might need to consider to further process the data or reformulate your task.  Thanks.

Yes, i keep investigating, probably give transformer/multimodel a try - will report back. Thank you


DeepSpeed op JIT support

Support for both JIT and pre-install ops
pip install deepspeed support
Converts necessary apex ops into JIT (FusedAdam and flatten/unflatten) and removed apex dependency all together
Streamlined ability to add new ops into DeepSpeed
Allow for python only install
Environment report ds_report reports op install status and compatibility

Closed and replaced with #496 which is a squashed and rebased version of this PR.


VPC Gateway is missing from IBM Cloud diagrams

The VPC networks in Quick Start and Standard and the Edge network in the Production diagram is missing the VPC Gateway
https://github.com/cloud-native-toolkit/automation-solutions/blob/main/architectures/ibmcloud.md

It was there, just not obvious


Add wait for openstack operator

- Add wait on openstack operator status being ready
Problem:
We're seeing issues applying the OpenStackControlPlane CR because the
openstack operator webhook is not up yet. Waiting for the ready condition
will ensure the operator is ready for requests.
[1]
2024-02-12 18:46:38.263494 TASK [edpm_prepare : Apply the OpenStackControlPlane CR
`Internal error occurred: failed calling webhook \"mopenstackcontrolplane.kb.io\": failed to call webhook`

[2]
2024-02-12T23:46:45.169Z	INFO	controller-runtime.webhook	Serving webhook server	{"host": "", "port": 9443}

[1] https://logserver.rdoproject.org/22/722/e2dd0f26cbf33fba8cf4aeff668ade3575a53de0/github-check/install-yamls-crc-podified-edpm-baremetal/1b424aa/job-output.txt
[2] https://logserver.rdoproject.org/22/722/e2dd0f26cbf33fba8cf4aeff668ade3575a53de0/github-check/install-yamls-crc-podified-edpm-baremetal/1b424aa/ci-framework-data/logs/openstack-k8s-operators-openstack-must-gather/namespaces/openstack-operators/pods/openstack-operator-controller-manager-699f5c6f99-c9cgh/logs/manager.log
As a pull request owner and reviewers, I checked that:

[x] Appropriate testing is done and actually running

/lgtm
Good to rely a bit less on install_yamls - though we're far from being freed of it.

Test patch: https://github.com/openstack-k8s-operators/install_yamls/pull/722

/hold


Improve MeanAbsoluteErrorEvaluator

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

Project coverage is 100.00%. Comparing base (65527a2) to head (f1e0c43).
Report is 20 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #318   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          100       100
  Lines         2416      2417    +1
  Branches       209       208    -1
=========================================
+ Hits          2416      2417    +1

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


Expose keys as an iter

Given that this is a KV store, you should be able to get an iterator of all keys.

Hi @LeoDog896,
I think that's a valid point and should be provided. Although I'm not sure how to do that without lots of cloning, I'll look into it.

Hi again @LeoDog896,
I added a keys method to the master branch, mind trying it out to see if it works correctly?
Also there have been some changes in struct names and I removed the serde stuff for now.

Awesome! I'll check it out in a bit, but thanks for adding the feature!


Routes with data dependency re-render  several times

Is it normal that if you navigate to route traditionally (via link or just a F5 refresh), <App /> component (and some group of children) render only once but if you enter the route via app, it renders 3-5 times?
This only happens to routes that has Relay data dependency and when there's no data in cache (1. visit).
It breaks several features that assume that app's main component renders only once if you enter a route.

I didn't find anything online, so I assume this is not related to Relay itself. There's no setState or forceUpdate called and it only happens to routes with Relay, so I assume that it's not related to React or React Router too.
I couldn't find any connections between route, component, query complexity and render count. Even the most simplest route with simplest component and query triggers several renders.
What could be the problem? It's probably either me or this package.
Small example from my routes:
<Router
    history={browserHistory}
    render={applyRouterMiddleware(useRelay.default ? useRelay.default : useRelay, useScroll())}
    environment={Relay.Store}
>
    <Route
        path="/"
        component={App}
        queries={ViewerQueries}
    >

        <IndexRoute component={Home} />

        <Route path="/posts" component={PostRoot}>
            <Route
                path="/posts/:category"
                component={PostList}
                queries={ViewerQueries}
            />

            <Route
                path="/posts/post/:nodeId"
                component={Post}
                queries={NodeQueries}
            />
        </Route>

        <Route
            path="/user/:nodeId"
            component={User}
            queries={NodeQueries}
        />

        <Route path="*" component={NotFound} />

    </Route>
</Router>

const ViewerQueries = {
    viewer: () => Relay.QL`query { viewer }`,
}

const NodeQueries = {
    node: () => Relay.QL`query { node(id: $nodeId) }`
}

Not sure if related but why-did-you-update logs a lot of avoidable re-renders for <StaticContainer /> and its children, for example:

StaticContainer.props
StaticContainer.props.children.props.children.props.routerProps
StaticContainer.props.children.props.viewer.__fragments__.0::client

Please do your own investigation. There's nothing in this library that does anything to cause rendering. You've already opened a number of unhelpful issues in the past. Keep in mind that this is an issue tracker, not a support forum. If you need help, please use Stack Overflow.


boost: support for libcxx and specific clang version

Motivation for this change
Currently in the process of creating packages for iRods, I need a boost version compiled with a specific version of clang and libcxx. I added support for libcxx and possible override of the clang version.
Things done

[ ] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] OS X
[ ] Linux

[X] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[X] Fits CONTRIBUTING.md.

Can't this be done with a clangStdenv without adding any special logic to boost? Keep in mind that the darwin builds already use LLVM and libc++ (and boost builds fine), so I'm a little confused as to why you need to be creating a special boost expression with an exact version of libcxx and clang.
My sense is that if you used clangStdenv, you'd automatically get the -nostdinc and libcxx in scope, as well as toolset = "clang" and so on.

@copumpkin :

My sense is that if you used clangStdenv, you'd automatically get the -nostdinc and libcxx in scope, as well as toolset = "clang" and so on.

Yes, you're right. Not with clangStdenv, but It correctly builds against libcxx with libcxxStdenv actually.
My problem is that I need to build boost with clang_38 (not clang_37 which is the default) and I'm probably doing something wrong as it fails...

cc @shlevy who I think made libcxxStdenv. The obvious thing would be to make a libcxx38Stdenv and so on, but ideally we'd factor that stuff out a bit more. For example, clangStdenv is just llvmPackages.stdenv, but libcxxStdenv doesn't appear to have a similar analog.
Also, it'd help us help you if you said how it fails 😄

It fails miserably with tons of errors that don't seem to stop the compile process... I attach an output and give an example here:
[boost160libcxx.out.txt](https://github.com/NixOS/nixpkgs/files/550608/boost160libcxx.out.txt)
/nix/store/m3azisclqx55zb40lsa4kmsfnw1g7mm9-libc++-3.8.1/include/c++/v1/cmath:317:9: error: no member named 'isless' in the global namespace
using ::isless;
      ~~^

For testing, I changed llvmPackages = recurseIntoAttrs llvmPackages_37; into  llvmPackages = recurseIntoAttrs llvmPackages_38; into all-packages.nix
And created a boost160libcxx package definition:
  boost160libcxx = callPackage ../development/libraries/boost/1.60.nix {
       stdenv = libcxxStdenv;
  };

Thank you very much for your help... I spent hours on this problem and the only fix that worked was this patch to correctly compile boost with clang and libcxx 3.8 without changing the default.

@copumpkin we could add a libcxxStdenv attribute to each llvm package set.

It should be really great to have a working libcxx38Stdenv! If I can help doing this... at least I will be able to test it

@bzizou not really sure what to suggest other than perhaps comparing what the darwin stdenv is doing differently from the Linux clang one. The darwin one isn't doing anything particularly fancy to build its compiler and boost1.6 works fine with LLVM 3.8 on there. See for example this build on Hydra: http://hydra.nixos.org/build/42510536/nixlog/2/raw

Testing adding a libcxxStdenv to llvmPackages now, I think that's all @bzizou was asking for?

I thought it still didn't build with a 3.8 version of libcxxStdenv. If it does, that's great!

That's how I interpreted " the only fix that worked was this patch to correctly compile boost with clang and libcxx 3.8 without changing the default."

Closing. I finally managed to do the iRods packaging: #19898
Thank you very much for your help!


Work on braille translation for Vietnamese

Vietnamese braille is similar to UEB, but not the same. There is a small start in Rules/Braille/Vietnam, but it mainly a copy of the UEB directory.
Vietnamese Braille Rules for Maths and Chemistry.docx is a document with important info.
I had some questions and @danghoaiphuc responded with these answers.

Thanks @NSoiffer  for raising this issue.
I just PR with some definitions and adding rules based on your existing ones for \tan, \cotan, arcsin etc.
If you could help to implement rules for number 2 mentioned in the answer file above, I think it's quite good to be ready for Vietnamese users to use. Number 2 is all about Vietnamese capital rules, Roman and Greek letters.
Again, many thanks for your support.


Using prototype for controller methods

is there any reason to avoid declaring controller methods using the prototype with the "ControllerAs syntax"?
The guide only uses the constructor to add methods to vm (alias this)

if a controller is used one and only one instance is created, a prototype method is going to add that much value.

Controllers are not singletons. Every time you visit one a new instance is created. Therefore, using the prototype to add functionality should have some advantages (e.i. memory and speed)
http://stackoverflow.com/questions/3493252/javascript-prototype-operator-performance-saves-memory-but-is-it-faster

Correct, they are not singletons. And prototypes are good when you are creating lots and lots of instances and they all live at the same time. But this is not the oft case.
You create a controller, use it, then it goes away. If you have a controller linked to a View you do this once when going to the view, use it, then it is destroyed. 1 instance at a time.
If you were to create 100 instances of the View it would have 100 instances of its controller, and then prototype would make sense. But we dont usually do that. Mostly we do 1.
Directives ... if it was a directive with a controller you could have many of a directive on a page. In that case you have many of that controller. But how many? Is it worth it for 4 instances? Not in my opinion. If you do it repeatedly in a loop, perhaps yes.

Then I will use prototype when the number of instances could be large (e.g. table cell decorators) and keep it simple for the rest.
Thank for your comments and very nice guide (One of the best around)

to be clear, prototype will not hurt you in any event.
i just dont bother with it if i dont need it.


Add TailRec type class

TailRec - A type class which captures stack-safe monadic tail recursion.

It would be nice to have a common specification for Tail Recursive Monads in JS community, so that libraries like Free could use the interface to be stack safe.
in PS MonadRectype class looks like this:
class Monad m <= MonadRec m where
  tailRecM :: forall a b. (a -> m (Either a b)) -> a -> m b

So we could have something like this without stack overflow:
Identity.tailRecM((n) => {
  if (n == 0) {
    return Identity(Either.Right("DONE"))
  }
  return Identity(Either.Left(n - 1))
})(20000)

one thing is that there are multiple Either implementations in js and this spec should depend on bare minimum from any Either type. from what I have found the minimum api from Either type is to have a cata method. but before that let's see an implementation of tailRecM of Identity:
const tailRec = (f) => (a) => {
  let v = f(a)
  while (!isDone(v)) {
    v = f(getValue(v))
  }
  return getValue(v)
}

const runIdentity = (i) => i.x

Identity.tailRecM = (f) => (a) => Identity(tailRec((v) => runIdentity(f(v)))(a))

So we have seen usage of it and part of it's implementation. now what we have left is implement isDone and getValue so that they are as generic as possible.
const isDone = (e) => e.cata({
  Right: () => true,
  Left: () => false,
})

const getValue = (e) => e.cata({
  Right: (v) => v,
  Left: (v) => v,
})

so as it looks any Either with cata would work so users shouldn't be tied to some particular Either implementation (as long as it has cata).
To note this Either implementation would work with tailRecM.
const Either = {
  Right: (v) => ({ cata: (c) => c.Right(v) }),
  Left: (v) => ({ cata: (c) => c.Left(v) }),
}

The hardest was to implement tailRecM for Task/Future but i have made it and after we agree on some interface I would  create PRs for some popular Task/Future implementations

@paf31 @garyb your suggestions will be helpful on this

Regarding Either, a generic interface could be defined using a church-encoded representation:
type Either a b = forall c. (a -> c) -> (b -> c) -> c

Such that
const Left  = x => (whenLeft, whenRight) => whenLeft(x)
const Right = x => (whenLeft, whenRight) => whenRight(x)

So you're Identity example could look like:
const tailRec = (f) => (a) => {
  let state = { done: false, value: a }
  while (!state.done) {
    f(state.value)(
      x => { state.value = x },
      x => { state.value = x, state.done = true }
    )
  }
  return state.value
}

/* other bits remain the same */

Identity.tailRecM((n) => {
  if (n == 0) {
    return Identity((_, done) => done("DONE"))
  }
  return Identity((next, _) => next(n - 1))
})(20000)

The church notation is basically a fold method of Either.
I think it would be great if one could use any of Either implementations (data.either, fantasy-eithers....). For that tailRecM should depend on minimal api so it's as easy to use as possible. With the church notation user should write their own implementation of Either (those two functions Left/Right). I have show sample implementation of Either to demonstrate that tailRecM just needs cata (or possiblyfold)

I would love to see the usage of fold, it's more generalised imo.
Also 👍  on this.

What if instead of relying on an unified Either interface the type itself would provide methods that would create Type(Left(a)) and Type(Right(a)) values?
So usage would look something like this:
Identity.tailRecM((n) => {
  if (n == 0) {
    return Identity.tailRecurDone("DONE")
  }
  return Identity.tailRecurNext(n - 1)
})(20000)

tailRecurDone and tailRecurNext names is just first what came to my mind, we could came up with better ones.
One reason why this might be a better approach is because many Future/Task implementations have built-in Either.

With fold, isDone and getValue would change to:
const isDone = (e) => e.fold(() => false,  () => true)
const getValue = (e) => e.fold((v) => v, (v) => v)

Folds all the way down.

@rpominov that's also interesting.
user of some Type.tailRecM might not even use Either (most likely they do use thou).
if every type conforming TailRec interface have there own two line Either implementations that would also do a trick.
something like this?:
Identity.tailRecM((n) => {
  if (n == 0) {
    return Identity.tailRecM.done("DONE")
  }
  return Identity.tailRecM.next(n - 1)
})(20000)

the advantage also is that user doesn't need to care if Left does recursion of Right when done and next explicitly state what they do.

This is very reminiscent of a trampoline and has worked well there already, so I'm not against that idea either.

in the sense of accessibility, using done/next is better for newcomers, and even ones who understand Either, might get confused which one to use for looping/returning.
so now neq question is, which one should be used:

a
b

Identity.tailRecMNext
Identity.tailRecM.next

Identity.tailRecMDone
Identity.tailRecM.done

b imo.

In the sense of accessibility, using done/next is better for newcomers, and even ones who understand Either, might get confused which one to use for looping/returning.

Another option would be to provide the Left & Right constructors as arguments to the function given to tailRecM.
tailRecM :: MonadRec m => (a -> (b -> Either b c) -> (c -> Either b c) -> m (Either a a)) -> a -> m a

Which would look like the following to a user:
Identity.tailRecM((n, next, done) => n == 0 ? done("DONE") : next(n - 1))(20000)

This has the advantage of avoiding naming things all together, though at the expense of being a little more difficult to describe in the spec.

If we want to avoid the 2-line Either duplication, I think it would also be possible to change the signature like this
tailRecM
  :: MonadRec m => ((a1 -> c1) -> (b1 -> c1) -> Either a1 b1 -> c1)
  -> (a -> m (Either a b)) -> a -> m b

i.e. provide the fold to tailRecM.

Actually next/done functions is not the same as to use Either. They less powerful.
With Either we have more freedom of how to create return values of recursive function. We can do Type.of(Left(2)), but also we can do Type.customMethod().map(Left). While with next/done we are basically stuck with only Type.of(Left(2)) and Type.of(Right(2)).
For example in case of Future we could do something like this:
Future.tailRecM(x => {
  return someCondition(x) ? makeNetworkRequest.map(Left) : Future.of(Right('done'))
})

To be honest I think It will be hard to fit this type into the spec in a nice way.

Would there be any issue with providing the internal Left and Right as arguments to tailRecM, though? So you would have something like
Future.tailRecM((x, next, done) =>
  someCondition(x) ? makeNetworkRequest.map(next) : Future.of(done('done')))

@rjmk That also would work.

One thing with getting next/done as arguments is that you need to pass around too many stuff for example here I'm doing .map(Either.Right) which could be .map(m.tailRecM.done) and the method needs just Type(m in that case) to get tailRecM.done/next, with having them in a dictionary we don't need to worry about order of arguments (which one is next/done?).

Actually next/done functions is not the same as to use Either. They're less powerful. With Either we have more freedom of how to create return values of recursive function.

We end up with the same type when using the church-encoding or fold over Either.
fold :: (a -> c) -> (b -> c) -> Either a b -> c

If we're passing the next/done functions as arguments then there's no need to even mention Either in the type signature. It simply leaves it up to the implementation to decide how it's going to be handled.
For example, the following signature says that the only way to construct the m c is to make use of the provided a -> c and b -> c functions.
tailRecM :: MonadRec m => (a -> (a -> c) -> (b -> c) -> m c) -> a -> m b

An implementation is then free to specialise to use Either:
tailRecM :: MonadRec m => (a -> (a -> Either a b) -> (b -> Either a b) -> m (Either a b)) -> a -> m b

We end up with the same type when using the church-encoding or fold over Either.

Yeah, I just was thinking about another signatures for next/done — a -> m c. But as I've wrote in "Edit", we don't have problem either way. What can be done with a -> c also can be done with a -> m c:

f :: a -> c
f :: a -> m c

of(f(2))
f(2)

v.map(f)
v.chain(f)

But also a -> m c is more flexible. For instance, If we use that signature, a Future type could use Future.of as next and Future.rejected as done, I think...

I'm still mulling it over, but I think I agree. I also think a -> m c might make for a nicer API for end users.
My only other topic of bikeshedding here is that I'm not particularly sold on the name tailRecM. It's only a minor gripe so I'm happy to stick with it if others like it.
One suggestion for another name would be ChainRec (though this does kinda sound like Train Wreck), as I'm pretty sure it only needs a Chain and not a full Monad constraint.
class (Chain m) <= ChainRec m where
  chainRec :: (a -> (a -> m c) -> (b -> m c) -> m c) -> a -> m b

What can be done with a -> c also can be done with a -> m c

it's not quite true for example for Either we have two type constructors, or for some hypothetical type T a = F a | G a | H a we have three constructors. there is no way for next/done  to decide which one to use and they should not, as it's users responsibility to create some object of type T
and put in it a value which is result of either done or next (as user needs to create T objects it needs to have of method so it needs to be Monad not just Chain)
see TailRec implementation for Either in PS

There are two main directions:

Depend on some minimal api of Either (fold or cata)
Provide functions for creating next/done values

Have done/next as Type.tailRecM{Next,Done}
Have done/next as Type.tailRecM.{next,done}
Pass done/next as arguments to function passed to Type.tailRecM

Pluses and Minuses of 1
The spec will be something like this:
type Either a b = Left a | Right b
class Monad m <= MonadRec m where
  tailRecM :: (a -> m (Either a b)) -> a -> m b

M.tailRecM takes two values: func of type (a -> m (Either a b)) and initial argument arg of type a. the M.tailRecM will invoke func with value of type a; it will take value out, from its returned value of type m (Either a b); if it's Left a, it will call func again with the value of type a, until there is sees value Right b and in that case M.tailRecM will terminate and return m b.
To construct Right/Left values use any implementation of Either type which has method fold of type (a -> c) -> (b ->c) -> c

Plus:

Implementation does not need to reimplement Either (even though it's just two line so it's not a big plus)
User can use favorit implementation of Either (as long it has fold)

Minus:

User needs to know which one to use Left/Right for continuing/returning recursion
Some implementation of either might not have cata/fold (PR could be created or user just implement it hirself)
User might not actually use Either but to use tailRecM you need to import or implement something yourself

Pluses and Minuses of 2.1
The spec will be something like this:
type TailRecRes a b = Next a | Done b
class Monad m <= MonadRec m where
  tailRecM :: (a -> m (TailRecRes a b)) -> a -> m b
  tailRecMNext :: a -> TailRecRes a b
  tailRecMDone :: b -> TailRecRes a b

M.tailRecM takes two values: func of type (a -> m (TailRecRes a b)) and initial argument arg of type a. the M.tailRecM will invoke func with value of type a; it will take value out from its returned value of type m (TailRecRes a b); if it's Next a, it will call func with value of type a again, until there is value Done b and in that case M.tailRecM will terminate and return m b.
To construct Next/Done values use M.tailRecM{Next,Done} respectively.

Plus:

It's easy to explain/understand even without description

Type expresses what's going on
No need to know which one to use Left or Right vs Next or Done

Minus:

If user actually has some implementation of Either it's useless even though it has fold

Pluses and Minuses of 2.2
spec is same as 2.1 difference is just where the constructors of TailRecRes are stored, as properties of tailRecM func in this cases

Plus:

Looks nicer? ( a bit subjective)

Minus

It would be hard for IDE/type-checkers to properly understand tailRecM function (or for user to actualy add correct type)
In implementation code depends on order, tailRecM need to be defined before it's mutated

Pluses and Minuses of 2.3
The spec will be something like this:
class Monad m <= MonadRec m where
  tailRecM :: (a -> (a -> c) -> (b -> c) -> m c) -> a -> m b

M.tailRecM takes two values: func of type (a -> (a -> c) -> (b -> c) -> m c) and initial argument arg of type a. the M.tailRecM will invoke func with value of type a and two functions next of type (a -> c) and done of type (b -> c); it will take value, out from its returned value of type m c; if it was created with next it will call func again with the value of type a (using which the c was created); if it was created using done then it will terminate with value of type m b.

Plus:

No word about Either or any special type

Minus

User should know order of arguments (which one is done/next?)
Type signature is a bit hard to understand, especially  for newcomers
As it's taking multiple arguments it might be a bit tricky to implement functions like tailRecM{2,3}

I think we could combine #1 and #2 into somthing like this:
type Either a b = Left a | Right b
class Monad m <= MonadRec m where
  tailRecM :: (a -> m (Either a b)) -> a -> m b
  tailRecMNext :: a -> Either a b
  tailRecMDone :: b -> Either a b

M.tailRecM takes two values: func of type (a -> m (Either a b)) and initial argument arg of type a. the M.tailRecM will invoke func with value of type a; it will take value out, from its returned value of type m (Either a b); if it's Left a, it will call func again with the value of type a, until there is sees value Right b and in that case M.tailRecM will terminate and return m b.
To construct Left/Right values use M.tailRecMNext/M.tailRecMDone respectively, or any implementation of Either which has method fold of type (a -> c) -> (b ->c) -> c.

tailRecMNext/Done could be used to construct Either values if user does not use any Either in a project.
User can use favorit implementation of Either (as long it has fold)
Implementation does not need to reimplement Either (even though it's just two line so it's not a big plus)
It's easy to explain/understand even without description

Type expresses what's going on
No need to know which one to use Left or Right

it's not quite true for example for Either we have two type constructors, or for some hypothetical type T a = F a | G a | H a we have three constructors. there is no way for next/done to decide which one to use and they should not

This still doesn't prohibit it as an option to use a -> m c instead of a -> c for the provided constructors. In the case of a ChainRec implementation for Either, it would be specialised to:
chainRec :: (a -> (a -> Either e c) -> (b -> Either e c) -> Either e c) -> a -> Either e b

So a user would have the choice of returning one of the following from within the provided function:

next(a)
done(b)
or
Left(e)

and we'd still have the option of leaving the constraint at Chain, if desired.
I'm personally not too fond of the named properties options, as the properties would have no other purpose outside of the context of the function provided to tailRecM/chainRec. Also, if we were to be strict about types, then I suspect the generic use of cata/fold would restrict the result value to be the same as the initial value (e.g. Either a a), but I could very well be mistaken here.

User should know order of arguments (which one is done/next?)

This is a valid point (likewise with the use of Either), though the type signature does indicate which is which without the need for names.

Type signature is a bit hard to understand, especially for newcomers

The same types are effectively in play whether we provide them to the function or require the end user to source them elsewhere.

As it's taking multiple arguments it might be a bit tricky to implement functions like tailRecM{2,3}

This could perhaps be tidied up by placing the next/done functions first, followed by the initial value, but I wouldn't mind with either option.
I guest my personal preference would still be leaning towards having the constructors provided to the function as arguments (whether that is a -> c or a -> m c, I don't particularly mind) as it feels like it leaks the least of the given options, leaving the choice up to the implementation without needing to expose it to end users. That said, I'd also prefer to see this proposal land rather than stall so I would happily put my preference aside to help this along.

This discussion is amazing!

@scott-christopher @safareli What do you think about providing a destructor to tailRecM rather than tailRecM providing the constructors?
It seems to me that allows the user to have any ADT they like, as long as they can give a way for it to be "Either-like". This is similar to depending on a fold/cata API, but without actually requiring a method to be defined (which is good as the fold for some something like T a = F a | G a | H a would presumably take 3 functions).
It would look like
tailRecM
  :: MonadRec m => ((a1 -> c1) -> (b1 -> c1) -> t a1 b1 -> c1)
  -> (a -> m (t a b)) -> a -> m b

@rjmk If I understand correctly, an implementation would look something like the following?
Identity.tailRecM = (e, f, a) => {
  let state = { done: false, value: a }
  const updateState = e(
    x => ({ value: x, done: false }),
    x => ({ value: x, done: true  })
  )
  while (!state.done) {
    state = updateState(f(state.value))
  }
  return Identity(state.value)
}

And for the end user:
Identity.tailRecM(Either.either,
                  n => n == 0 ? Either.Right("DONE") : Either.Left(n - 1),
                  20).get() //=> "DONE"

I quite like the approach from the perspective of the API, but it might prove to be a bit difficult to explain in the language of the spec (I'd be happy to be proven otherwise :D)

If we were to treat the types strictly with that approach we'd should also expect the type of the result would be the same as the initial value due to the type of (a1 -> c1) -> (b1 -> c1) -> t a1 b1 -> c1
I don't think that's necessary a showstopper though, as it's just a map away from modifying the resulting value to get something else for those that want to be strict with types (this is also JS ... so my example above of using Either String Number will still happily oblige).

That's exactly what I meant!
Good point about the type strictness. I hadn't foreseen that. Just to check I understand it correctly, is it correct that we don't actually expect the type of the result to be the same as the type of the initial value, but rather the type of the first parameter to the Either-like? That is, instead of
n => n == 0 ? Either.Right(0) : Either.Left(n - 1)

we could equally well have
n => typeof n == 'string' ? Either.Right("DONE") : Either.Left("Keep going!")

and remain well-typed?
On the point about the map, I was worried momentarily about having to encode values of the desired output type in the input type, but it seems to be that one essentially needs a reliable way of doing that anyway, so the map is fine. That is, you already need something like
Identity.tailRecM
  ( Either.either
  , x => somePred(x) ? Either.Right(someF(x)) : Either.Left(someG(x))
  , someVal
  )

And then you might as well extract someF out. Am I missing any possibilities?

@scott-christopher if we have some type T a = F a | G a | H a and done/next returns values of type T c using some specific type constructor for example F, then users could not use them if they want to use other type constructors (G, H). so done/next  should not return values of Type T and user should be responsible to wrap them accordingly
But even if user is responsible to create monadic values and not next/done, maybe Chain is much correct constraint for this interface, as MonadRec not necessarily  needs m.of to be defined or m to be Applicative. we should discuss this too.
It would be nice to hear from @paf31 and @garyb why in PS MonadRec is called MonadRec and not BindRec

This could perhaps be tidied up by placing the next/done functions first, followed by the initial value, but I wouldn't mind with either option.

Agree if we pass next/done as arguments then they should be first and value last

About passing destructor to tailRecM, the example @scott-christopher provided is a bit incorrect:
Identity.tailRecM = (e, f, a) => {
  let state = { done: false, value: a }
  const updateState = e(
    x => ({ value: x, done: false }),
    x => ({ value: x, done: true  })
  )
  while (!state.done) {
    //`f` returns `m (t a b)` and updateState should take `t a b without `m`
    state = updateState(f(state.value))
  }
  return Identity(state.value)
}

Identity.tailRecM(Either.either,
                  // here result should be wrapped with Identity
                  n => n == 0 ? Either.Right("DONE") : Either.Left(n - 1),
                  20).get() //=> "DONE"

If we were to treat the types strictly with that approach we'd should also expect the type of the result would be the same as the initial value due to the type of (a1 -> c1) -> (b1 -> c1) -> t a1 b1 -> c1

Don't quite understand which result you mean. For example here initial value is of type Page and result is Number  and return value of f is Task e (Either Page Number)
const lastPagePostLikes = Task.TailRecM(
  (page) => page.next
    ? HTTP.fetchJSON(page.next).map(Left)
    : Task.of(Right(page.posts.map(getLikes).sum()))
  , { next : 'posts/1' , posts:[]}
)

lastPagePostLikes.fork(....)

@rjmk initial value and value wrapped in Left should be of same type (as both are passed to the function).
The m.tailRecM you proposed just takes fold function so why pass every time fold function to tailRecM when it could just call fold method of value in m?

In PureScript it's called MonadRec as it's expected the m will satisfy the monad morphism laws (which involve return / pure) - if I remember rightly it's not obviously documented as such currently though, aside from in issues somewhere.

About passing destructor to tailRecM, the example @scott-christopher provided is a bit incorrect

Oh yeah! That's easily fixed with a runIdentity though, right? Or is there a bigger problem?

initial value and value wrapped in Left should be of same type (as both are passed to the function)

I was going to say "In the case of n => typeof n == 'string' ? Either.Right('DONE') : Either.Left('Keep going!'), though, the type is 'a' or 'any'", but then realised my inspecting on type should not be allowable and would break free theorems and stuff. So thanks for the spot!
This also makes me a bit confused about the input/output type restriction.

The m.tailRecM you proposed just takes fold function so why pass every time fold function to tailRecM when it could just call fold method of value in m?

Because it might not have a fold. Or in the case of T a = F a | G a | H a its fold might not work (it would have a signature like (a -> b) -> (a -> b) -> (a -> b) -> T a -> b). Of course one could always define a wrapper that had it. Maybe my proposal is a bit too Static Land-y

method of value in m
type of f is :: a -> m (Either a b)  and in m we have Either a b

Not all Either implementations will have a fold.
Also I thought there was some discussion of allowing "Either-like" types instead of just "Either" (I may have misunderstood that, though)

Yah not all of them have fold but it could be fixed with PRs.
For tailRecM to work, the value in m should works as valid fold of Either, even this will be ok:
const Either = {
  Left: (a) => ({ fold: (l, r) => l(a)}),
  Right: (a) => ({ fold: (l, r) => r(a)}),
}

About passing destructor to tailRecM, the example @scott-christopher provided is a bit incorrect

Well spotted. I've shuffled that block of code around too many times today :)

Oh yeah! That's easily fixed with a runIdentity though, right? Or is there a bigger problem?

Right, I've updated the code in the comment to reflect.

Regarding the type of the initial value and the return type being the same, perhaps another way for me to try to explain my thoughts is to ask what would you expect the type to be of the earlier example you gave for getValue.
const getValue = (e) => e.cata({
  Right: (v) => v,
  Left: (v) => v,
})

The only way (at least AFAICT) to produce a return value of c when given an a in (a -> c) from (a -> c) -> (b -> c) -> t a b -> c would be to have the tailRecM logic recursively called from within a -> c until b -> c eventually gets called, but I suspect that would undo the ability to provide the stack-safe optimisations (though I'm not entirely confident my assumption here is correct).

@safareli For sure. Either way works. I'd personally prefer to provide the fold function than wrap objects, but not hugely strong feelings.
Another option would be to add a need for fold or cata to all the types defined in the spec. I believe, because JS is strict (maybe generators change this), that every type can support a catamorphism (because of being an initial algebra). Alternatively, we could have Data and CoData typeclasses, I think. But I'm definitely out of my depth here

@scott-christopher Isn't c going to be t a b again (from a -> m (t a b) in the signature)?

@scott-christopher we should avoid recursion in tailRecM to solve the problem for which we need tailRecM :d. my first example is not be that well typed. it's just demonstrates that user could use any Either as long as it  has correct fold/cata

@garyb

Expanding on the above, we probably could have a Bind m <= BindRec m & (Monad m, BindRec m) <= MonadRec m hierarchy, with the bind and return parts of the morphism laws split between the too, it's just never come up in discussion before as I think the requirement to only satisfy Bind while providing Rec is uncommon as far as we've seen so far

Don't quite get it, are there some laws related to MonadRec?
if we would haveBindRec then why would we need MonadRec

@safareli actually, disregard what I said, MonadRec doesn't lift so that whole thing about morphism laws is wrong, I had MonadEff on the brain for some reason, where it does apply.
It seems that BindRec would indeed be good enough to me too.

I like how we've managed to rope @garyb into this. Welcome to the darkside! 👋

So we can call the interface ChainRec and the method just tailRec as in js this function will be a static method of some Type and adding M is not actually needed AFAICT

as PS is sort of moving to custom ADT which expresses intent more clearly I think We are I think left with this:
type RecStep a b = Next a | Done b
class Chain m <= ChainRec m where
  tailRec :: (a -> m (RecStep a b)) -> a -> m b
  tailRecNext :: a -> RecStep a b
  tailRecDone :: b -> RecStep a b

class Chain m <= ChainRec m where
  tailRec :: ((a -> c) -> (b -> c) -> a -> m c) -> a -> m b

And i'm starting to like the last one

And with #2 if user wants to use Either they could just to map(e => e.fold(next,done)) and return the result. So in my case if i want to leave resume as is, I could just do a map
Free.prototype.foldMap = function(f, m) {
-  return m.tailRecM((v) => v.resume(f, m))(this)
+  return m.tailRecM((next, done, v) => v.resume(f, m).map(e => e.fold(next, done))(this)
}

Looks like everyone is ok with #2 will create PR tomorrow 🎉

I think it's a shame to provide the constructors rather than ask for the destructors but I admit it's quibbling.
My only concern is with the signature ((a -> c) -> (b -> c) -> a -> m c) -> a -> m b. I can't think of types other than t a b that could satisfy the c slot, but unless we're sure we want to allow them, should we replace c with t a b?

I can't think of types other than t a b that could satisfy the c slot

In all likelihood, I imagine most implementations would end up using something equivalent to Either a b, but there's no reason that I can see why a t b a or a t a b c couldn't be used instead and provide the same functionality. I have a preference to leave it at c in order to just leave it up to the choice of the implementation, but I'd have no major concerns declaring it as t a b if others prefer. But like you say, unless the type signatures become part of the FL specs soon, this is a bit of a moot point.

Good point about the t a b c. My concern is resolved!

Is there a preference to either tailRec or chainRec for the method name?

@rjmk about c vs  t a b, as there are no constraints on t  for client there is not a big difference if we say it's c. also this c/ t a b  is created used by only tailRec and i think it's better to say as little about it as possible so client's cant do anything with them except wrapping in m. But mostly it would be of type t a b
Also I thought about passing constructors to func vs providing destructor to tailRec and there is one good use case of providing destructor to tailRec.
const tailRecWithFold = (m,f,i) => m.tailRec((done,next,v) > v.fold(done,next),f,i)

Can you sketch what are advantages disadvantages with providing destructor vs passing constructors?

@safareli Yep, you're completely right about c vs t a b. I guess the thing I was thinking was similar to my thought for fold -- that is it's nice to encode the ability to fold on the 2 type parameters. But I guess the signature for tailRec and maybe some laws sorts us out for that.
On destructors vs constructors, the 2 main advantages I see are

It sort of gives a Church encoding for any Either-like data type, fixing only the interface we care about. It even gives us the ability to show how there's an Either embedded in our type, even if it's a 'larger' type
It saves us from 2 lines of duplication throughout the ecosystem. Not practically a big deal, but philosophically a bit painful

As a disadvantage, I think the API is less familiar to Javascript though, whereas the two callbacks approach is a bit more common.
Anyway, I don't think it's terribly important which we go for

@scott-christopher hypothetically if we would have some other *Rec interfaces MonoidRec or some WhateverRec then with tailRec as a method name we would have conflict. maybe because of that the name is tailRecM in PS to indicate it's Monadic. so for that reason chainRec LGTM and possible if there would be MonoidRec, ApplicativeRec or WhateverRec we would have whateverRec methods without conflicts.
What others think on this?

And also what are thoughts on passing destructors?
class Chain m <= ChainRec m where
  -- or tailRec
  chainRec :: ((a -> c) -> (b -> c) -> a -> m c) -> a -> m b

VS
class Chain m <= ChainRec m where
  -- or tailRec
  chainRec :: ((a -> z) -> (b -> z) -> t a b -> z) -> (a -> m (t a b)) -> a -> m b
  -- or    :: ((a -> z) -> (b -> z) -> t     -> z) -> (a -> m  t     ) -> a -> m b

+1 for chainRec it is also consistent with Chain algebra that has chain method.
And +1 for constructors because they are simpler to use especially if we don't have an Either type on hand:
T.chainRec((next, done, x) => {
  return x > 0
    ? T.of(next(x - 1))
    : T.of(done(x))
})

// I have to create an ad-hoc Either in order to use `chainRec`
T.chainRec((next, done, result) => 'next' in result ? next(result.next) : done(result.done), x => {
  return x > 0
    ? T.of({next: x - 1})
    : T.of({done: x})
})

// With an existing Either type it's also a bit more complicated than with constructors
T.chainRec(Either.fold, x => {
  return x > 0
    ? T.of(Either.right(x - 1))
    : T.of(Either.left(x))
})

@rpominov One can always define a function with the next / done API around one with the destructor. There's no way to get the constructor version to stop using its version of Either (though you can just fold your version down with the constructors)
I really hope we get somewhere to keep our 🚲 s! I'm reasonably confident that its better to build it from oak than yew, but I don't think the difference is large

@rpominov one can write this with desctructor version:
const chainRec = (m, f, initial) => m.chainRec(
  (next, done, v) > v.fold(next, done),
  (v) => f(
    // or Either.Left
    (a) => { fold: (done, next) => next(v) },
    // or Either.Right
    (a) => { fold: (done, next) => done(v) },
    v
  ),
  initial
)

So you're saying that if we have chainRec based on destructors we can build a chainRec based on constructors? But this is also true other way around:
const chainRec = (fold, f, initial) => m.chainRec((next, done, x) => {
  return f(x).map(a => fold(next, done, a))
}, initial)

I just don't understand what we can do if we'll be able to use our own Either type? What additional possibilities it opens?

Yeah, sorry that's what I meant here:

There's no way to get the constructor version to stop using its version of Either (though you can just fold your version down with the constructors)

I guess my point there was that you always need constructors and destructors. With destructors you can do some wrapping to make the API the constructor way and only have one pair of constructors and one destructor. If you have internal constructors you end with 2 destructors and 2 pairs of constructors

If you have internal constructors you end with 2 destructors and 2 pairs of constructors

Sorry, not sure if i understand this right. You mean that if we consider two versions of chainRec converted from spec API to alternative API (1: https://github.com/fantasyland/fantasy-land/issues/151#issuecomment-244375062 and 2: https://github.com/fantasyland/fantasy-land/issues/151#issuecomment-244378085). The #2 version will have more wrapping/unwrapping under the hood? So it would hurt performance?
Not sure we should care about performance here, but also I just don't understand why one would want to use their own Either, so why would they do #2 conversion even though it's possible?

Definitely not advocating it because of performance (though you're right that would be the obvious impact)! More philosophy. The ChainRec doesn't need to know how to build and destroy Eithers, it just needs to know how to check if a computation is finished (in a sensibly typed way). We can encode that need in the destructor and then I think the ChainRec is more focused on what it's actually about.

also I just don't understand why one would want to use their own Either

That's fair. The main case I'm thinking of is if one already has a function in terms of Eithers (or Futures, or ...) that could be recursed on. Not sure how common that would be

If we T has some internal Either like structure then users does not need to have it too and could just use done/next functions instead of depending on some other Either and passing fold.

Basically I think that that passing the constructors is "easier" and asking for the destructors is "simpler" (in the Rich Hickey sense)

If user wants to use the chianRec then, destructor version asks user for some structure which they might only need for using chianRec and not elsewhere and a fold function for that. Also  those structures would still need to implement the Either like thing for testing.
When constructor version passes everything needed to actually use the function and user need nothing else (works out of the box). also this way the structure could have some efficient representation of Next/Done and user would not have to think on that at all. I think we could go with constructor version as it would be easy to use. also PS version is going with ADT version for future and constructor version is more like that.

Also with destructor case, asking to pass fold as argument is basically same as asking the object to have the fold method

Also with destructor case, asking to pass fold as argument is basically same as asking the object to have the fold method

Yeah maybe that would be the more "Fantasy Land" way.
Anyway, I think you should make the PR with the constructors. 👍


Fix #756

(with pseudocode, please fill in with proper Python incantations)

I have no easy way to test this, but that code should be it.

I've tried the xml2rfc from this branch against the output of your index cleaning script, and not found any items with  in the resulting HTML output.  Here is the file I fed to it.
(Of course, never ruling out that I'm invoking it incorrectly.)

Thanks!  I don't know how to test this code, so this is very welcome input.
Can you maybe explain the right way to invoke xml2rfc right out of the repo to me offline?

Using @MikeBishop's attached file, I the correct items with .
The following is the diff without and with proposed changes for HTML.
5370c5370
< Section 7.2.3;
---
> Section 7.2.3;
5417c5417
< Section 8;
---
> Section 8;
5430c5430
< Section 6.2.1;
---
> Section 6.2.1;
5477c5477
< Section 7.2.1;
---
> Section 7.2.1;
5526c5526
< Section 7.2.6;
---
> Section 7.2.6;
5744c5744
< Section 7.2.2;
---
> Section 7.2.2;
5769c5769
< Section 4.1.2;
---
> Section 4.1.2;
5794c5794
< Section 7.2.7;
---
> Section 7.2.7;
5815c5815
<                     Section 4.6;
---
>                     Section 4.6;
5858c5858
< Section 6.2.2;
---
> Section 6.2.2;
5896c5896
< Section 7.2.5;
---
> Section 7.2.5;
5940c5940
< Section 6.1;
---
> Section 6.1;
5964c5964
< Section 7.2.4;
---
> Section 7.2.4;
5998c5998
< Section 8;
---
> Section 8;

Thank you!  This looks very good.
I won't get to adding a few primary="true" to the tests today, but this should be quite straightforward.

I changed the emphasis to strong+em, as using only one of these is too little to stand out.  I also added tests (two <iref primary=true, one item, one subitem) but don't know how to test the tests, so please complete that.


Where are the Entity Framework assets?

Trying to get this sample running and it is lacking DbContext, Migrations, etc... the connectionstring is specifying a specific MDF file... are there missing files?

It's code-first, so it should create the database tables if they don't exist the first time they are accessed.

Confirmed.


makes result form achieved field localized (if French or Spanish, acc…

Closes #2125

Specs changed


Deprecate kured addon

https://github.com/kontena/pharos-host-upgrades has the same functionality and it works also with centos/rhel.

Fixed in https://github.com/kontena/pharos-docs/pull/46

Should pharos-cluster up itself warn about kured being deprecated if it's still enabled?


Feat/video

:tada: This PR is included in version 1.0.0-alpha.8 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0-alpha.11 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.2.0-alpha.20 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.1.1-alpha.2 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:


Clara

https://github.com/philsquared/Clara (modern CLI library, used by Catch2, by the same author)

@aldanor Thanks for the suggestion. Would you like to create a PR? :)

Repo has moved to https://github.com/catchorg/Clara


Add tunnels

Built and tested with the following go version:
$ go version
go version go1.12.3 darwin/amd64

Had to change app.go's Printlln() function calls due to the following errors when running go test:

$ go test -v
# github.com/f5devcentral/go-bigip
./app.go:133:3: Println call has possible formatting directive %v
./app.go:141:3: Println call has possible formatting directive %v
./app.go:155:12: Printf call has arguments but no formatting directives
./app.go:157:3: Println call has possible formatting directive %v
./app.go:165:3: Println call has possible formatting directive %v
FAIL	github.com/f5devcentral/go-bigip [build failed]

Adding support for creating, updating, deleting, and showing Tunnels.

@scshitole can you review this when you get a chance. I'm planning on adding several resources so they can be used by the bigip terraform provider. So any feedback would be appreciated.


Custom Overlay

I want to add current image number and total image number to the right of the screen as in the picture below. Is there a feature available for this?

Hi @burhanaksendir, thanks for the question. There's currently no built-in way to display such a label. However, you can embed the image viewer in your own views. Take the "embedded example" as a starting point: https://github.com/thesmythgroup/easy_image_viewer/blob/main/example/lib/embedded.dart That should let you add overlays etc. Let me know if this helps.

Hi @jfahrenkrug, thank you. I hadn't noticed the embedded example. Very nice, I can get what I want with this.

Perfect, thanks for the reply.


Bug: guild unable to parse hash of run in latest (dev) version

I have an operation that uses the hash of another train operation to continue training the model from that training run (I call the operation retrain). The model is included as a resource for the operation, and in previous versions of guild I would do the following
guild run retrain model=<hash>

to continue training from a specified model. However, in the latest versions (starting from 0.6.7.dev4 I've found) I get this error
train.py: error: unrecognized arguments: --model f1ea

which interestingly goes away if I add "model" as a dummy argument to argparse in my train.py. I'm guessing what is supposed to happen is guild should intercept the model= argument when I run the operation and not pass it to train.py, but for some reason it is not doing this in the latest releases. For the record, the retrain operation successfully loads the model from the previous operation with this dummy argument workaround.

Definitely a bug- thank you for the report! This is fixed and will be available in the next pre-release.

To elaborate on the underlying problem, Guild recently started to treat resource parameters formally as flags. So when you define various required resources, each resource gets a name (if not explicitly defined) which lets you set some value as a flag. For required operation, that value is the run ID.
The bug here is that Guild is trying to pass that "flag" along to the Python script. That's why you're seeing the extra --model option. You can see the command that Guild runs by running guild run ... --print-cmd. This is useful for seeing exactly what Guild is running for your script.
The bug is that Guild was letting these resource params sneak through to the command args.

Fix is now available in 0.7.0.


add Bear Cub Theme

Submit a new Plugin to Marketplace
Plugin Github repo URL: https://github.com/Sh00Fly/logseq-bear-cub-theme
Github releases checklist

[x] a legal package.json file.
[ ] a valid CI workflow build action for Github releases. (Optional for theme plugin only).
[x] a release which includes a release zip pkg from a successful build.
[x] a clear README file, ideally with an image or gif showcase. (For more friendly to users, it is recommended to have English version description).
[x] a license in the LICENSE file.

Hi @Sh00Fly Awesome theme! Also, the releases are required for the version's history. You can create a release by using the GitHub release button or create a branch tag.

Hi @xyhp915,
I just added a release.


Mystery 422 error on POST Reportbacks

https://fabric.io/do-something/ios/apps/org.dosomething.letsdothis/issues/56d74325f5d3a7f76b4131c3/sessions/f3af61d5a27a452a8be307618438680b
Failed on https://northstar.dosomething.org/v1/reportbacks for user 56e041d7469c64d8578b5540 on campaign 3539, Sexy or Sexist?

16:29:24:877	|	-[DSOUserManager reportbackForCampaign:fileString:caption:quantity:completionHandler:errorHandler:] line 189 $ campaign 3539
9	|	16:29:27:496	|	-[DSOUserManager recordError:logMessage:] line 250 $ Error code -1011 -- campaign 3539
10	|	16:29:54:114	|	-[DSOUserManager postAvatarImage:sendAppEvent:completionHandler:errorHandler:] line 205 $ <UIImage: 0x158f91e0> size {640, 480} orientation 0 scale 1.000000

Trello thread with convo around testing/replicating here: https://trello.com/c/91ahg7fz with testing.  original image was a 5C screenshot.

Can't seem to replicate this -- closing for now. Changes in #945 should help surface these if they ever come up again.


Android app crashes while selecting other options instead of "Allow all the time" in location permission popup

On an android device, when requesting location permission, if the user selects "Allow only while using the app", "Ask every time", "Don't allow"  option on the popup the app crashes. It only works with "Allow all the time".
The android manifest is correctly configured with the following permissions:

Steps to Reproduce
Run a fresh install app, on an android device. Observe the popup that request for device location, select "while using the app" it will go to app setting-> location permission then select option like "Allow only while using the app", "Ask every time", "Don't allow"  on the popup the app crashes. It only works with "Allow all the time".

Expected Behavior
App should work with all the options
Actual Behavior
Isn't it. It only works with "Allow all the time".
Here is sample project link
https://github.com/jitendrajadav/XamarinForms.LocationService/tree/master

Please open the issue in https://github.com/xamarin/xamarin-android, this repo was used for planning and is not monitored.


Add github action to test if all packages build

This installs the rosdeps of all packages and makes sure that they build correctly once per day.
The following PRs fixing package.xml files for rosdep have to be merged first:

https://github.com/bit-bots/bitbots_behavior/pull/285
https://github.com/bit-bots/bitbots_lowlevel/pull/119
https://github.com/bit-bots/bitbots_motion/pull/384
https://github.com/bit-bots/bitbots_navigation/pull/178
https://github.com/bit-bots/bitbots_tools/pull/136
https://github.com/bit-bots/bitbots_vision/pull/323
https://github.com/bit-bots/dynamic_stack_decider/pull/87
https://github.com/bit-bots/humanoid_league_misc/pull/128
https://github.com/bit-bots/DynamixelSDK/pull/6
https://github.com/bit-bots/dynamixel-workbench/pull/6
https://github.com/bit-bots/particle_filter/pull/15
https://github.com/bit-bots/udp_bridge/pull/19
https://github.com/bit-bots/wolfgang_robot/pull/256
https://github.com/bit-bots/bitbots_misc/pull/204

All PRs this depends on are merged. Therefore, the TEMP step can be removed

Done, let's see if the CI passes!

Looks good 👍


Disable InitializeCIArtifacts on Non-CI Builds

Until we fix up the loop for usage of yq vs ConvertFrom-Yaml within Package-Properties.ps1.

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow

When I squash merged a couple of these PRS, the cleanup branch was checked.
The sync pr creation is failing because we are targeting a branch that doesn't exist.
I'm going to check enforcer override and just merge this. Won't mess up the manual merge in the future.

/check-enforcer override


added feedback page

check this feedback page worked under jwoc 2024

https://github.com/Jagroop2001/AcmeRockets/issues/71


Use Color32 from ecolor

Instead of implementing a custom Srgba type, compatibility with the egui color picker (and possibly others) would be increased if the Color32 type from the ecolor crate is used instead. This would be a breaking change for all places where the current Srgba type is created/accessed, so an alternative solution would be to add conversion traits to/from Color32. A workaround for my own needs is to use the array form as an intermediary, since both sides support converting to/from arrays. I think it would be better to entirely remove the existing color type since that also gives easy access to all of Color32's constructors, but also understand if making that switch is undesired. I'd be willing to help implement either of the two solutions.

Hmm. Yeah, it's the usual conversion problem (exactly the same issue with the math library, people use different libraries and have to convert from one type to another). Probably I shouldn't have introduced yet another color type, but I think I wouldn't choose ecolor, it's a bit too tied to egui. Maybe palette crate or something? Implementing color conversions means that I have to do a feature with the ecolor dependency only for that. Seems like a bit too much. Using raw array of colors is also an option, but I think it's nice with some kind of color implementation.


try-latest-pytorch does not use the latest pytorch

https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/10987962296/job/30503642580#step:2:17
pytorch_ref is not set for "Inductor tests", so instead of the latest commit used the pinned one.
{
  "pytorch_ref": "",
  "suite": "inductor/test_codegen_triton.py inductor/test_triton_extension_backend.py inductor/test_triton_heuristics.py inductor/test_triton_wrapper.py inductor/test_triton_kernels.py",
  "runner_label": "",
  "python_version": "3.9",
  "pytorch_repo": "pytorch/pytorch"
}

This is not inductor tests workflow problem, this is problem in try-latest-pytorch.yml and also affects other tests.
The commit ID remains empty if get-commit-id got empty branch as input. This is fixed for try-latest-pytorch.yml in #2321
Before fix: https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/10987962296/job/30503634842#step:4:14
After fix: https://github.com/intel/intel-xpu-backend-for-triton/actions/runs/11013947939/job/30583453655#step:4:15