Setup clang-format for automatic code formatting (WIP)

Related issue: #21

This change is

Coverage decreased (-0.07%) to 86.225% when pulling 8c78c394e82416a4c97af48b38c1b41f4ddf7adc on clang_format into b658c173eb3470aa67b959b488dd747642742f97 on master.

I'm generally skeptical of automatic formatting tools. They often make questionable decisions on edge cases that make the code less readable. I'd prefer a linter that checks the formatting of pull requests, but does not change it.
Pinging @psigen here to see what he thinks.

They often make questionable decisions on edge cases that make the code less readable.

I basically agree with you. This PR adds two targets one for formatting and the other for checking the format. We could use the first one as a guideline, and then we could discard it if it doesn't make sense.
One possible issue would be that the checking will keep complaining about the discarded change that we don't think it makes sense.

I am in agreement with @mkoval here, we should automatically perform lint checks, but not do any automated formatting unless specifically called.
Automated formatting might be useful as a one time operation if we pull in large chunk of code.  We can autoformat it, then correct the formatting to make it more readable.
If I'm reading this correctly, this adds two non-default targets for linting and formatting, neither of which is directly linked to anything yet. It seems like we would use the linting target for automated testing or pre-commit, and largely ignore the formatting unless called by a developer locally, right?

If I'm reading this correctly, this adds two non-default targets for linting and formatting, neither of which is directly tied to anything yet. It seems like we would use the linting target in our automated testing or as a pre-commit hook, and largely ignore the formatting target except as a convenience method for a developer locally.

Exactly!

That sounds perfect. Nice work @jslee02!

Coverage remained the same at 86.225% when pulling<PHONE_NUMBER>128c5ced3a3f372b28298582ca2418 on clang_format into d5a3730a008ed69897f379b1f64372473d80e445 on master.

I'm going to voice my disagreement here. I think all code should be autoformatted, otherwise people will forget, someone else will do it, and diff-hell will emerge. If there is a block of code that doesn't look right with the style configuration, you should manually  wrap it with a // clang-format off block so that it blocks warnings in the future, and it shows others the formatting is intentional to improve readability/your intention.
That said, I'm not sure if we want to add this to CI, or just yell at people to do it during PR reviews. Thoughts?

Coverage remained the same at 86.225% when pulling ea4fe8776cf859f4da65f67dd3f160c6923b0338 on clang_format into d5a3730a008ed69897f379b1f64372473d80e445 on master.

The issue is that autoformatting is underspecified.  No autoformatter knows anything about where to put line breaks to semantically make sense, or how to group nested arrays.  There can be many ways to format code that are all compliant with the style specification.

I think all code should be autoformatted, otherwise people will forget, someone else will do it, and diff-hell will emerge.
I don't see how this is an issue:  the autoformatter by definition doesn't care who is running it.

Is there some misunderstanding here?  The proposal here is that code style checks are like any other unit test:  failing them means that a PR is automatically flagged as not ready for a merge.  How would this cause any of the issues you are mentioning?

Is the lab style format the same as DART style format?  Just wondering.

Is the lab clang-format mostly the same as DART clang-format? Just wondering.

This diff shows the differences between the style configurations. It seems the key configurations I believe are pretty similar, but as you can see there are some differences. By the way, I wonder if the lab clang-format is made upon some consensus.

Coverage remained the same at 86.225% when pulling 65b1fb96776467e63292808d009eeeb2bea04f07 on clang_format into 941782e68c9c460c50f5a24d0574ae02da84b320 on master.

I'm not sure, some of the differences in that diff seem to go against what I would have expected.  @ClintLiddick do you have some insight into this?

@psigen I think the differences were mostly me going back through some of our code and seeing what style we (mostly @mkoval and I?) used and what I know to be common practice. Definitely open to specific suggestions/changes.
Yeah I guess I misunderstood the intent then. If the autoformatter is run as a check then I'd be ok. I just don't want a situation where I autoformat and because the last person to commit didn't I now have a tragic diff. I don't think there's going to be much difference from what I suggested however, because in order to pass the test you will still have to either accept the autoformatting, or wrap with an ignore block comment.

To be honest, I'm generally against using any automatic formatting vs. automatic style checking.  It leads to automatically creating stuff like this for no reason: https://github.com/personalrobotics/herbpy/blob/feature/linting/scripts/calibration_transmission_ratios.py#L184 which is really not improving the readability of the code.
If we have an automated style test, then it should not be possible to add code to the repo that does not comply with the style guide.  If you run an auto-formatter in your PR and it destroys the formatting of some unrelated code that was already compliant with the style guide, that seems like an error in your PR, not the existing codebase.  If it was not compliant, then it should not have passed the check to be accepted in the first place.
I see no reason to force an auto-formatter to be run at any point in time in the PR process.  I do not trust them to produce readable or semantic code, and they are not in themselves a test that can be passed.

I'm not aware of any tool that is a style checker and not an auto formatter. Or any tool that is flexible enough to case-by-case change rules to make some code you like "pass." Either your tool is the style guide, and you have some exception comments for special cases, or you will never get a clean run of the style checker. If the tool is the style guide then there is no difference from running it automatically and fixing anything that looks really horrible with an escape block. I'm not saying we have to run it automatically, but I am saying there is no point in having it if it's not equivalent anyway.
Unless there's a tool/setup I'm unaware of that is far more powerful than clang-format for checking style on a per-change level (not a codebase level)?
[Not trying to be argumentative, but just literally don't understand the practical difference here.]

No worries, I think we are mostly on the same page here.
Tools like cpplint, cppcheck, and Coverity are examples of checkers/linters that detect potential issues, but do not attempt to automatically fix them.  clang-format can either check for errors, or rewrite code to try and comply with a style guide, and does a pretty good job of it, although we may still use another tool for other static analysis checks in the future.
Suppose you open a PR with a piece of non-compliant code like a matrix that exceeds 80 characters:
// Block A
const int[10][4] my_matrix = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}};

It makes a ton of sense that this PR should fail automated tests with something like:
>> Line 1: Failed style check. Too many characters in this line (Max: 80)
"const int[10][4] my_matrix = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}};"

Then we have flagged it just like any other unit test error, and the author can adjust the PR to look like something reasonable:
// Block B
const int[10][4] my_matrix = {
  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
};

What I am arguing is not ideal is forcing us to run an automatic formatter on this code which might easily produce something like this:
// Block C
const int[10][4] my_matrix = {
  {
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9
  },
  {
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9
  },
  {
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9
  },
  {
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9
  }
};

While this particular line might not do something this pathological in clang-format, this type of problem is rampant in automatic formatting.  Block B is just as compliant to the style guide as Block C but is much more readable.
The auto-formatter has no way to consider these options, it is simply applying some whitespace that it knows is compliant with the style guide, but not the only or best whitespace solution.
The second part of this is that we don't want to implement any process that takes Block B, which is a compliant piece of code, and turns it into Block C, a compliant but less readable version of the same code, as part of the process of a later PR.  Some autoformatters will happily convert Block B to Block C if run over the entire codebase, and I would argue this is wrong behavior, even if it is easier behavior.
Hopefully that makes more sense.

Changes Unknown when pulling c58f2687d02298551dc9eab4bc3c9207d8596880 on clang_format into ** on master**.

Changes Unknown when pulling 2410980f939324c3b8dbc087713d28dba852fd60 on clang_format into ** on master**.

Changes Unknown when pulling 2410980f939324c3b8dbc087713d28dba852fd60 on clang_format into ** on master**.

Changes Unknown when pulling d5af9d4d5e4c928f76ee4335d59ebae00ac0c785 on clang_format into ** on master**.

Coverage remained the same at 86.288% when pulling ade427b41cd01f5b3d6ae3bf4f446f3ec9ee8f5e on clang_format into 67747e1f3cf40791c63ec98a7899160a47ab1608 on master.

By unnecessary whitespace, you mean the empty lines like
if (CLANG_FORMAT_EXECUTABLE)
  # here?
  get_property(formatting_files GLOBAL PROPERTY CODE_FORMATTING_SOURCES)
  list(LENGTH formatting_files formatting_files_length)

  if (formatting_files)
  # here?
    add_custom_target(format
        COMMAND ${CMAKE_COMMAND} -E echo "Formatting code style of"
            ...

?

Coverage remained the same at 86.288% when pulling 5d307603e93714c7f5205a86a765ac2f1f7cf76f on clang_format into 67747e1f3cf40791c63ec98a7899160a47ab1608 on master.

@mkoval: Yup, the issues I raised weren't actually in this PR, it's all good.

@jslee02 Yes, I meant the empty lines that you identified.

Coverage remained the same at 86.288% when pulling 44c712cb1c4d8a089585299b454720373ce6051d on clang_format into 3942ff77f03a48767091fda60afe6386f20b62b2 on master.

Unnecessary empty lines are removed in the last commit.

Coverage remained the same at 86.288% when pulling 0a06dc3b5ec8ff50c86b074ac590394003f6e0b7 on clang_format into 3942ff77f03a48767091fda60afe6386f20b62b2 on master.

Changes Unknown when pulling 51d939153bf32025a2c80b6c4ed8ca05c0b59d5e on clang_format into ** on master**.

Changes Unknown when pulling 36d0a18bb42599a549e5f6b53d477efe4c069666 on clang_format into ** on master**.


Support user-defined external regions

          Regarding external regions, we currently add `IMPEXP` and `MINRNW` to `ALL_REG`. Is there anything else we should be adding?

Originally posted by @olejandro in https://github.com/etsap-TIMES/xl2times/issues/161#issuecomment-1893825697

Yes there definitely is!   Please see comments in https://github.com/etsap-TIMES/xl2times/pull/161#issuecomment-1893841778  and below.

Here is an example ~BookRegions_Map table based on our discussion in #161:

BookName
Region

R1

W
R2

R3

N
R4

R5

@Antti-L, assuming there is a workbook VT_W_* and there is no workbook VT_N_*, should the following be true:

REG contains R2 and R3
ALL_REG contains R1, R2, R3, R4 and R5

I don't think you can ever leave BookName blank.  So, I think your example is erroneous (first row does not have a BookName at all).  For the other blanks, BookName is inherited from above (as is usual).  If we would exclude the erroneus first row, then yes, only R2 and R3 would be internal regions, and R4 and R5 would be external.

I don't think you can ever leave BookName blank. So, I think your example is erroneous (first row does not have a BookName at all).

Ok, so this is something to check. In my view, this makes much more sense than using a BookName pattern that doesn't exist to define external regions, because one can't distinguish it from a simple typo. In any case, we could think of messages to inform the user of what's going on.

Well, it seems you don't fully appreciate the original functionality.  It works very well if you have several books, and you want to experiment with a small subset of regions out of those in the full model:  You just need to exclude the base templates for the excluded regions, and VEDA automatically makes the excluded regions external. No need to edit SysSettings at all, nor other model templates if you have prepared the model well.  But yes, I agree that accepting blanks as well could be considered reasonable for adding external regions.

Well, maybe I do... In your example, what's the benefit of adding the regions from the deleted files to external regions over not having them at all?

All the trade links to/from the external regions.  They would not work if the external regions do not exist...


Passing real data to our controllers

We forgot two pieces to allow us to pass actual data in the Post to our controllers.
The first is we needed a "FromBody" attribute next to our parameter in our controller method.

The next is we didn't specify what type of content the post body would contain. Without that it doesn't know how to deserialize our data.

Another problem was that I was trying to use '[Route("api/catfact")]' at the top of the controller to make it so that all methods in that controller had that as a base url. This needed to be '[RoutePrefix("api/catfact")]'. I've corrected this.
So, with that I think you can save real cat facts dynamically this weekend. I've added stubs of a couple methods that I would like for you to try to complete.
Below are example of how you would access each of those methods:
Post

Get

Delete

I don't have permissions to push to the repo :(.
Here is the code that I wrote to get these things working.
The controller:
namespace CatFacts.Controllers
{
using System.IO;
using System.Linq;
using System.Web.Http;
[RoutePrefix("api/catfact")]
public class CatFactsController : ApiController
{
    [Route("")]
    public IHttpActionResult Post([FromBody] string catFactToSave)
    {
        //C:\github\better-cat-facts\catfactsdata
        var fact = "Cats are actually very tech saavy.";

        var catFacts = File.ReadAllLines(@"C:\github\better-cat-facts\catfactsdata\catfacts.txt");

        var catFactsList = catFacts.ToList();

        catFactsList.Add(fact);

        File.WriteAllLines(@"C:\github\better-cat-facts\catfactsdata\catfacts.txt", catFactsList);

        return Ok("hello");
    }

    [Route("{catFactNumber}")]
    public IHttpActionResult Get(int catFactNumber)
    {

        return Ok();
    }

    [Route("{catFactNumber}"), HttpDelete]
    public IHttpActionResult Delete(int catFactNumber)
    {

        return null;
    }
}

}


[Medium]: Color: Color alone used to distinguish link

Action Performed:

Using Chrome, open URL: staging.new.expensify.com
Navigate to Settings > Workspace > Manage members > Invite
Navigate to the "Privacy policy" link using the Tab key.
Observe that it is not understandable without seeing colour.

Expected Result:
When the link is underlined, users with color deficiency and low vision users will be able to identify the link.
Actual Result:
Color alone is used to identify "Privacy policy" link. Users who suffer from color deficiencies and low vision users will not be able to distinguish link from the surrounding text.
Workaround:
Yes
Area issue was found in:
Invite new members
Failed WCAG checkpoints
1.4.1
User impact:
Users who cannot distinguish colors will not have access to the information conveyed by the use of color and may find the page unusable.
Suggested resolution:
To make it easy for all users to recognize links the best practice is to persistently underline them.
Platform:

Web
iOS
Android
Desktop App
Mobile Web

Version Number: 1.1.49-0
Reproducible in staging?: Yes
Reproducible in production?: Yes
Reference link: https://www.w3.org/TR/2016/NOTE-WCAG20-TECHS-20161007/G183
Issue reported by: Sumit

Please refer to these issues for PR https://github.com/Expensify/App/pull/8144


Python Bot help command adding to SeasonalBot

Relevant Issues

Closes #295
Description

I copy-pasted help command from Python bot and made this working in SeasonalBot. Added loading to __main__.py, ignoring to SeasonalBot.load_extensions.
Reasoning

Due there is issue about it, what is approved.
Screenshots

Not going to add more screenshots. It's same help command what is in Python bot.
Did you:

[x] Join the Python Discord Community?
[x] If dependencies have been added or updated, run pipenv lock?
[x] Lint your code (pipenv run lint)?
[x] Set the PR to allow edits from contributors?

Commit history does not show that you copy-pasted and then made changes. it shows a made-changes version you copy-pasted in.

I'll close this now, due I started working in new branch, where I added better information. New PR after close.


Bit Player crashes all the time when files are 1gb+.

Hi. Bitplayer works great if the file being streamed is under 1gb. Files over 1gb always end up in Bitplayer crashing.  Is anyone else experiencing this issue or is it just me?  Is it perhaps due to using a chromebook that only has 2gb of ram? Thanks.

Hi, James.
The downloaded data is stored in memory so if your machine doesn't have much of it, "bit player" will crash eventually.
I'm aware of this problem and it's probably solvable.
I just need some time to handle it :)

I tried using virtual memory swap: https://www.maketecheasier.com/create-swap-on-chromebook/
but it didn't do anything to help, bitplayer still crashed when trying to stream a 1.28gb mp4 file

ok, james, i'll see what i can do.

Is the entirety of a video being stored in memory? Wouldn't a temporary hard storage location be a better use of memory?
There are many ways we could combat this:

Dividing the video into parts (what YouTube does) where only the upcoming, present, previous chunks are recycled in a linked list.
A buffer 'window' that stores an active area of the video in memory, with the full video in storage. (Deleted on app close or new video loaded)

Lets work together.


Return ActionResult from controller action methods

As discussed on the other project, the return type of controller action methods should be ActionResult.

Keeping consistency. This one was addressed by faa3b33, would you mind having a look on this one please?

Closing this out - Devin can re-open if there's more to do.


Bump scarb

Stack:

#348
#347 ⬅

⚠ Part of a stack created by spr. Do not merge manually using the UI - doing so may have unexpected results.

✓ Commit merged in pull request #348


Fix builds of my packages w/glibc-2.32

Motivation for this change
Fix builds of some of my packages after #95089
Things done

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

cc @Ma27

@gnidorah would like to test it, but I can't even fetch the source properly (to reproduce the build failure, I tried building on 9085a724fdd7668f6e59abd9dfc7aef4e1dde3dd first):
source> Initialized empty Git repository in /nix/store/w6hzm7z8i5k25vmi77clc70zakxbmdj5-source/Externals/BugTrap/.git/
source> remote: Enumerating objects: 42, done.
source> remote: Counting objects: 100% (42/42), done.
source> remote: Compressing objects: 100% (33/33), done.
source> remote: Total 1099 (delta 15), reused 16 (delta 9), pack-reused 1057
source> Receiving objects: 100% (1099/1099), 7.49 MiB | 8.01 MiB/s, done.
source> Resolving deltas: 100% (543/543), done.
source> From https://github.com/OpenXRay/BugTrap
source>  * [new branch]      master     -> origin/master
source>  * [new tag]         v1.4.2     -> v1.4.2
source>  * [new tag]         v1.4.3     -> v1.4.3
source>  * [new tag]         v1.4.4     -> v1.4.4
source>  * [new tag]         v1.4.5     -> v1.4.5
source>  * [new tag]         v1.4.6     -> v1.4.6
source>  * [new tag]         v1.4.7     -> v1.4.7
source>  * [new tag]         v1.4.8     -> v1.4.8
source> fatal: reference is not a tree: 28c7928927ba05661ecdb2e4ff870dfaed0ac763
source> Unable to checkout 28c7928927ba05661ecdb2e4ff870dfaed0ac763 from https://github.com/OpenXRay/BugTrap.git.
error: --- Error --- nix-daemon
builder for '/nix/store/k6q2c29g3313wj5zszb96kc85c15cgw8-source.drv' failed with exit code 1
error: --- Error ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- nix
error: --- Error --- nix-daemon
1 dependencies of derivation '/nix/store/v72c6sikb3qghz773sna8bxsa7408q9r-OpenXRay-730-july-preview.drv' failed to build

@Ma27 I've reported upstream https://github.com/OpenXRay/xray-16/issues/678
The developer recovered the BugTrap tree, now checkout should be fine. Please check

openxray seems fine now, cdesktopenv breaks with the following error:
cde> /nix/store/hiwz81i1g3fn3p0acjs042a4h5fri6dh-binutils-2.31.1/bin/ld: ./ksh93/lib/libast.a(fmterror.o): in function `fmterror':
cde> /build/cde-2.3.2/programs/dtksh/ksh93/src/lib/libast/string/fmterror.c:102: undefined reference to `sys_nerr'
cde> /nix/store/hiwz81i1g3fn3p0acjs042a4h5fri6dh-binutils-2.31.1/bin/ld: /build/cde-2.3.2/programs/dtksh/ksh93/src/lib/libast/string/fmterror.c:102: undefined reference to `sys_errlist'
cde> collect2: error: ld returned 1 exit status
cde> make[3]: *** [Makefile:793: dtksh] Error 1
cde> make[3]: Leaving directory '/build/cde-2.3.2/programs/dtksh'
cde> make[2]: *** [Makefile:737: all] Error 2
cde> make[2]: Leaving directory '/build/cde-2.3.2/programs'
cde> make[1]: *** [xmakefile:734: all] Error 2
cde> make[1]: Leaving directory '/build/cde-2.3.2'
cde> make: *** [Makefile:61: World] Error 2
error: --- Error --- build-remote

@Ma27 Thanks! I'm still waiting for proper cdesktopenv fix

@Ma27 cdesktopenv needs fixes, so I've marked it as broken for now. Could you please merge this PR?

@Ma27 Thank you!


Operator to manage DiscoveryService certificates

A solution is needed to manage the renewal of the DiscoveryService related certificates:

The CA
The server certificate
The client certificates

Currently all these certificates are just created but never reconciled/renewed so manual action is required to renew them.

Server and client certificates renewal has been implemented in https://github.com/3scale/marin3r/pull/28. Only CA renewal is still not supported by the operator.


Add openshift-ansible builds

Add in builds of openshift ansible after to building any other OCP packages.

@stevekuznetsov Better now?


Add 'New directory' button

'New file' now creates a blank file and redirects to the edit page rather than just rendering the edit view. 'New directory' redirects to the new directory.
Both 'New file' and 'New directory' create parent directories recursively if they don't exist if the filename contains slashes.
Addresses issue #18

Great, thanks!


how to using this tools to publish text to rviz2

Hello, can you tell me the usage or some documents about how to using this tools on rviz2?
thinks a lot!

Hi! All currently available documentation is found here: https://docs.ros.org/en/rolling/p/rviz_2d_overlay_plugins/generated/doxygen/html/
TLDR: Install the plugin (sudo apt install ros-humble-rviz-2d-overlay-plugins), publish a message (this for text overlay: https://github.com/teamspatzenhirn/rviz_2d_overlay_plugins/blob/main/rviz_2d_overlay_msgs/msg/OverlayText.msg, this for gauge overlay: https://github.com/ros2/common_interfaces/blob/rolling/std_msgs/msg/Float32.msg), then select the topics in rviz

已收到您的邮件。祝您生活愉快，工作顺利！
                                                     ---姚广华

@ottojo Hi!
I'm migrating a project from ROS1 to ROS2 and I'd like to continue using OverlayText previously from jsk.
However, I'm running into difficulties while trying to link your code in CMake.
I've added the dependency in package.xml
<depend>rviz_2d_overlay_msgs</depend>
in CMakeLists.txt I've also included the package:
find_package(visualization_msgs REQUIRED)
ament_target_dependencies(${PROJECT_NAME} ... rviz_2d_overlay_msgs)
but when I try to create the publisher
node_->create_publisher<rviz_2d_overlay_msgs::msg::OverlayText>(topic, 0)
I get the following linking error:
/opt/ros/humble/include/rclcpp/rclcpp/get_message_type_support_handle.hpp:50: undefined reference to `rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<rviz_2d_overlay_msgs::msg::OverlayText_<std::allocator<void> > >()'
Do you know what I'm missing by any chance?

@rem821 I don't immediately see a problem, you are using the package as intended, and as far as i can see how we use it internally.
I see that we internally also have rclcpp spatz_interfaces sensor_msgs (spatz_interfaces comes from this repo) in our ament_target_dependencies, perhaps that pulls in some transitive dependency which we forgot to add in this package.
I seem to be able to build and link a test like this:
#include <rclcpp/rclcpp.hpp>
#include <rviz_2d_overlay_msgs/msg/overlay_text.hpp>

class TestNode : public rclcpp::Node {
  public:
    TestNode() :
        rclcpp::Node("test"),
        rcModeTextPub(create_publisher<rviz_2d_overlay_msgs::msg::OverlayText>("/overlay", rclcpp::QoS(1))) {
    }

  private:
    rclcpp::Publisher<rviz_2d_overlay_msgs::msg::OverlayText>::SharedPtr rcModeTextPub;
};

int main(int argc, char *argv[]) {
    rclcpp::init(argc, argv);
    rclcpp::spin(std::make_shared<TestNode>());
    rclcpp::shutdown();
    return 0;
}

add_executable(testnode tn.cpp)
ament_target_dependencies(testnode rclcpp rviz_2d_overlay_msgs)

@ottojo Thanks for the quick reply!
I can confirm the package links correctly now, the issue was that I've been incorrectly linking it to the parts of the code that had been compiled as a static library in CMake.
Btw, kudos for porting this package to ROS2!

I think this can be closed, especially now that it's possible to use a standard String message for text display, as documented here: https://github.com/teamspatzenhirn/rviz_2d_overlay_plugins/tree/main/rviz_2d_overlay_plugins#using-a-string-topic . Feel free to open a new issue if use is still unclear or problems persist.

已收到您的邮件。祝您生活愉快，工作顺利！
                                                     ---姚广华


iOS Detail View: navigation bar goes to dark mode after leaving app

The navigation bar can slip into its dark mode state when the detail view is full-screen.

Tap an article to view it in the detail view
Tap the full screen button
Close the app
Reopen the app

I changed how the theming works earlier this week and it seems to have prevented this from happening.  You should be able to verify it in Build 6 coming this weekend.


Move abort detection into test invocation

Similar to reboot detection, hiding the details from individual execution plugins.
Pull Request Checklist

[x] implement the feature

@therazix absolutely, removed in e0d050cb

Nice, I just wonder how it worked before, when there was:
if (abort or self.data.exit_first and
    result.result not in (ResultOutcome.PASS, ResultOutcome.INFO)):

and now we're iterating for result in invocation.results. Was that a bug?

I believe it was a bug, because it was checking result.result, and result was whatever the loop saw as the last item, most likely invocation.results[-1]:
                if abort:
                    for result in invocation.results:
                        # In case of aborted all results in list will be aborted
                        result.note = 'aborted'

...

                for result in invocation.results:
                    logger.verbose(
                        f"{_format_duration(result)} {result.show()} [{progress}]",
                        shift=shift)

...

                if (abort or self.data.exit_first and
                        result.result not in (ResultOutcome.PASS, ResultOutcome.INFO)):

So only the last result was considered, which does not seem right.

/packit test


HTTPFlood Log parser is not working

Deployed this solution in our environment but the HTTPFlood Protection is not working as expected. I could see the custom resource lambda function creates the s3 bucket notification on the WAF logging bucket like {'Key': {'FilterRules': [{'Name': 'suffix','Value': 'gz'}]}} but the Kinesis is not updating the WAF logs in s3 buckets as gz instead they are json files with no extensions. Even If I try changing the notification to get the right files, still the function looks only for gzip files.
[ERROR] 2019-05-31T12:10:57.418Z eb1f69f9-52ff-443b-854e-ce88598d4446 [get_outstanding_requesters] Error to read input file

[ERROR] 2019-05-31T12:10:57.418Z eb1f69f9-52ff-443b-854e-ce88598d4446 Not a gzipped file (b'{"')

Thanks for sharing your feedback. We're going to investigate this and post and update to this thread once we have more information.
PS: can you manually set the kinesis firehose to compress the output before saving it on S3?

We have deprecated classic version <=2.3.3. closing the ticket


example of persisting session not working due to type conflict with RoleType

I'm trying to save sessions. I couldn't get the full chat history working, so I wanted to at least save some messages directly.

version: "@getzep/zep-js": "^2.0.0-rc.5",
hosting: cloud

I attempted to implement this example:
https://help.getzep.com/chat-history-memory/memories#persisting-a-memory-to-a-session
But I get:
Argument of type '{ role: string; content: string; metadata: { [key: string]: any; } | undefined; }' is not assignable to parameter of type 'IMessage'.
  Property 'role_type' is missing in type '{ role: string; content: string; metadata: { [key: string]: any; } | undefined; }' but required in type 'IMessage'.ts(2345)

Which makes sense because I can see that the definition of a Message requires a role_type of type RoleType but the sample messages don't include one. So I included one. But then I get this error:
Type 'string' is not assignable to type 'RoleType'.

So after first editing the definition to find the fix, I updated the sample code so it looks like:
	const history: { role: string; role_type: "user" | "assistant" | "system" | "function" | "tool" | "norole"; content: string; metadata?: { [key: string]: any } }[] = [
		{ "role": "Jane", "role_type": "user", "content": "Who was Octavia Butler?" },
		{ "role": "HistoryBot", "role_type": "assistant", "content": "Octavia Estelle Butler (June 22, 1947 – February 24, 2006) was an American science fiction author." },
		{ "role": "Jane", "role_type": "user", "content": "Which books of hers were made into movies?", "metadata": { "foo": "bar" } },
	];
	const zepMessages: Message[] = history.map(m => new Message({ role: m.role, role_type: m.role_type, content: m.content, metadata: m.metadata }));
	const memory: Memory = new Memory({ messages });

This hacky workaround will work for now but it'd be nice to have updated examples, and to not have to do it this way.
Cheers

@paul-paliychuk mind taking a look?

@jstjoe Hi, thanks for reporting the issue.
We have recently released new cloud sdk, called @getzep/zep-cloud (You can see the updated sdk installation).
In it we don't use classes for messages anymore. The updated example looks like this
import { ZepClient } from "@getzep/zep-cloud";
import type { Message } from "@getzep/zep-cloud/api";
import * as uuid from "uuid";

const API_KEY = "<your_api_key>";
const client = new ZepClient({
  apiKey: API_KEY,
});

const sessionId: string = uuid.v4(); // A new session identifier

const history: Message[] = [
  { role: "Jane", roleType: "user", content: "Who was Octavia Butler?" },
  {
    role: "HistoryBot",
    roleType: "assistant",
    content:
      "Octavia Estelle Butler (June 22, 1947 – February 24, 2006) was an American science fiction author.",
  },
  {
    role: "Jane",
    roleType: "user",
    content: "Which books of hers were made into movies?",
    metadata: { foo: "bar" },
  },
];

const result = await client.memory.add(sessionId, { messages: history });


Font-issue on paper-input and paper-textarea

The paper-input and paper-textarea show the right fonts, so visually it's ok, but it gives some red in the console, so that's gotta be fixed.

This issue needs more information, it's unclear what the problem is.


Use exports compatibile with /bin/sh in the bootstrap script

The bootstrap script is explicitly using /bin/sh.
On some solaris servers the version of /bin/sh exporting environment variables
using "export id=value" fails. The form "id=value export id" does work.
Bootstrap fails when the wrong form is used.
Description
knife bootstrap fails. The shell command creates uses a form of the export command that isn't supported by old /bin/sh programs.
Related Issue
Types of changes

[x ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Chore (non-breaking change that does not add functionality or fix an issue)

Checklist:

[x ] I have read the CONTRIBUTING document.
[x ] I have run the pre-merge tests locally and they pass.
[x] I have updated the documentation accordingly.
[x ] I have added tests to cover my changes.
[x ] All new and existing tests passed.
[x ] All commits have been signed-off for the Developer Certificate of Origin.

yeah that tickles my braincells as being correct, although i used to see it more split across two lines, but makes sense that one line works as well.

you can cherry-pick + PR this against chef-14 branch for the backport

I'm running it on my local chefdk copy that way.  Works on the sh in solaris 10 so it will probably work on anything created after 1987.


Harmonizing wording and adding VSS to IaaS

Azure Backup Sever was listing "App-aware snapshots (VSS)", DPM "Application-aware snapshots (VSS)". Harmonized it for better readability.
Azure IaaS VM Backup is also application consistent (at least it lists it in the portal as "application consistent backup"). maybe the entire article should be proof-read again to reflect the current featureset of the options.

@floschmsft : Thanks for your contribution to the Azure documentation! The author, @markgalioto, has been notified to review your proposed change.

#sign-off,
@floschmsft, thank you for your submission. I agree that consistency is good. There are many contributors to the documentation, and as you have seen, the content can become a little inconsistent. Thank you for catching this.

@floschmsft : Thanks for your contribution to the Azure documentation! The author, @markgalioto, has been notified to review your proposed change.


Chapter3/homework/12

Updates were made to the initial PR #534. Comments have been addressed and tests are passing.
Apologies for the not addressing #534 sooner, I was away.
Cheers!

Still missing duplciates

Can you elaborate please as I believe the program does that? When run there are no duplicates in a post offices 'list' of addresses and correctly increments the duplicate count? Maybe I am missing the objective slightly?

Still missing duplciates

Can you elaborate please as I believe the program does that? When run there are no duplicates in a post offices 'list' of addresses and correctly increments the duplicate count? Maybe I am missing the objective slightly?

Maybe I didn't notice, but I don't see where do you actually calculate the duplicates count. I see the variable, but not its' use, nor do I see it in demo.

Also, all that you have public is a field. NEVER expose fields publicly, because it introduces more ways in which the application could break. Use properties instead.

I agree, this was a mistake of mine. I will implement the changes and bear them in mind for future projects.


provider base image does not correspond to the minikube default image

Describe the bug
provider base image does not correspond to the minikube default image
To Reproduce
minikube version: v1.31.2
commit: fd7ecd9c4599bef9f04c0986c4a0187f98a4396

terraform {
  required_version = ">= 1.0"

  required_providers {
    minikube = {
      source  = "scott-the-programmer/minikube"
      version = ">= 0.3.4"
    }
  }
}

provider "minikube" {
  kubernetes_version = "v1.27.3"
}

resource "minikube_cluster" "docker" {
  driver       = "docker"
  cluster_name = "docker"
  cpus         = 4
  memory       = "8192mb"
  cni          = "bridge"
  addons = [
    "ingress",
    "default-storageclass",
    "storage-provisioner"
  ]
}

tf apply ->
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # minikube_cluster.docker will be created
  + resource "minikube_cluster" "docker" {
      + addons                     = [
          + "default-storageclass",
          + "ingress",
          + "storage-provisioner",
...
      + base_image                 = "gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631"
...

tf apply again ->
minikube_cluster.docker: Refreshing state... [id=docker]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # minikube_cluster.docker must be replaced
-/+ resource "minikube_cluster" "docker" {
      ~ apiserver_ips              = [] -> (known after apply)
      ~ apiserver_names            = [
          - "minikubeCA",
        ] -> (known after apply)
      ~ base_image                 = "docker.io/kicbase/stable:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631" -> "gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631" # forces replacement
      ~ client_certificate         = (sensitive value)
      ~ client_key                 = (sensitive value)
      ~ cluster_ca_certificate     = (sensitive value)
      ~ host                       = "https://<IP_ADDRESS>:8443" -> (known after apply)
      ~ hyperkit_vsock_ports       = [] -> (known after apply)
      ~ id                         = "docker" -> (known after apply)
      ~ insecure_registry          = [] -> (known after apply)
      ~ iso_url                    = [
          - "https://github.com/kubernetes/minikube/releases/download/v1.31.0/minikube-v1.31.0-amd64.iso",
        ] -> (known after apply)
      ~ nfs_share                  = [] -> (known after apply)
      ~ ports                      = [] -> (known after apply)
      ~ registry_mirror            = [] -> (known after apply)
        # (58 unchanged attributes hidden)
    }

Plan: 1 to add, 0 to change, 1 to destroy.

Expected behavior
No changes compared to the first tf run.

This.. is strange👀 - the default value is actually pulled from the cli defaults, so I'm a bit surprised that this is getting switched during runtime.
I guess the minikube team have migrated their images over to the github registery.
I'll work on a fix now 👍🏼

Nvm, seems like a local problem.
Some minikube log:
I1005 23:51:00.499712  252097 cache.go:150] Downloading gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 to local cache
I1005 23:51:00.499797  252097 image.go:63] Checking for gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 in local cache directory
I1005 23:51:00.499809  252097 image.go:66] Found gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 in local cache directory, skipping pull
I1005 23:51:00.499814  252097 image.go:105] gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 exists in cache, skipping pull
I1005 23:51:00.499819  252097 cache.go:153] successfully saved gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 as a tarball
I1005 23:51:00.499822  252097 cache.go:163] Loading gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 from local cache
I1005 23:51:00.499908  252097 cache.go:169] failed to download gcr.io/k8s-minikube/kicbase:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631, will try fallback image if available: tarball: **unexpected EOF**
I1005 23:51:00.499915  252097 image.go:79] Checking for docker.io/kicbase/stable:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 in local docker daemon
I1005 23:51:00.534181  252097 image.go:83] Found docker.io/kicbase/stable:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 in local docker daemon, skipping pull
I1005 23:51:00.534193  252097 cache.go:145] docker.io/kicbase/stable:v0.0.40@sha256:8cadf23777709e43eca447c47a45f5a4635615129267ce025193040ec92a1631 exists in daemon, skipping load
W1005 23:51:00.534226  252097 out.go:239] ❗  minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.40, but successfully downloaded docker.io/kicbase/stable:v0.0.40 as a fallback image

After minikube delete --all --purge and docker rmi docker.io/kicbase/stable:v0.0.40 <gcr.io image image id> everything works as expected.
Thx to https://github.com/kubernetes/minikube/issues/8997#issuecomment-1223530041

It looks like minikube first looks at it the local docker daemon before deciding whether or not to download the image. The mismatch here is that check disregards the host (docker.io vs ghr.io), causing the diff.
I'm somewhat tempted to remove the base_image option entirely, as this doesn't seem useful to be set via terraform i.e. playing around with base_image entails debugging of minikube itself


Washup tasks for snapshots

aka everything left over after #1771

[x] Fix the elasticdump container so it doesn't get terminated by healthchecks (#1787)
[x] Serialise to DisplayWork with Jackson (#1788)
~Bump the scaling time on elasticdump~
[x] elasticdump should be able to get other indexes from SQS (#1787)
[x] snapshot_convertor should read target bucket from the SQS message (#1847)
[x] snapshot_convertor should read target key from the SQS message (#1847)
[ ] Nice domain (#1851)
[x] Expire old dumps in the private bucket (#1812)
[x] Reindex the Miro data so we can snapshot the /v1/ API

Part 2:

[ ] Upload dumps to the correct key (/catalogue/v1/works.json.gz)
~Upload to S3 as Standard-IA~
[ ] Redirect the / root to the docs (#1854)
[ ] Proper error pages
[ ] Allow sending custom ES config into elasticdump, needs config for:

es index
upload bucket
~version~

I’ve bumped “upload as Standard-IA” because there’s a minimum 30-day charge, and all our snapshot materials are either deleted after 30 days or replaced daily, so that’s less useful!
I’m also going to push out proper error pages for now, as I think that’s very much a bit of polish rather than core functionality.


gtest DynamicThreadPoolTest not stable

Bug Report
Please answer these questions before submitting your issue. Thanks!
1. Minimal reproduce step (Required)

2. What did you expect to see? (Required)
3. What did you see instead (Required)
4. What is your TiFlash version? (Required)

close by #3853


Broke out angular-cli docs and added required section about dependencies

It's looking like angular-cli and the ngrx router will be a common combination. I broke out the angular-cli section from the SystemJS file and also added what I believe is a neccessary step (for now) to `npm install´ the dependencies.

Thanks for the PR! There isn't a requirement to npm install the dependencies separately as path-to-regexp is a dependency of ngrx/router and it brings the other dependencies with it.

@brandonroberts I've been given to understand that there is a path-to-regexp conflict between ngrx/router and the CLI, requiring developers to explicitly install that dependency.

Yes, but path-to-regexp and query-string are the only explicit dependencies. We shouldn't need to add every sub-dependency also.

I also feel that installing the explicitly installing the dependencies is not the right way to go. However, I'm not well-versed with SystemJS/Broccoli/Angular CLI to pinpoint the root cause.
The documented step in the PR to install the dependencies using NPM solves the issue however.
Steps to repro the issue with combining angular-cli and ngrx/router according to current docs:

Install angular-cli according to https://github.com/angular/angular-cli/ :

npm install -g angular-cli

Generate, build for dev and serve:

ng new ngrxtest
cd ngrxtest
ng serve

Confirm app us building and working without errors.

Build for production and serve:

ng serve -prod

Confirm app is building and working without errors

Install ngrx/router according to https://github.com/nxrx/router/ :

npm install @ngrx/router @ngrx/core --save

Configure CLI project according to https://github.com/ngrx/router/blob/master/docs/overview/systemjs.md#angular-cli-configuration

Setup the routing according to the example on https://github.com/nxrx/router/

Build and serve dev:

ng serve

Build works fine but browser console gives:
zone.js:101 GET http://localhost:4200/vendor/query-string/index.js 404 (Not Found)

Build for production and serve:

ng serve -prod

Build error: Error on fetch for vendor/query-string/index.js at file:///E:/Source/ngrxtest/tmp/bundle_plugin-input_base_path-C198oAaa.tmp/0/vendor/query-string/index.js
Installing query-string using NPM will then render the same error for the next dependency until you have installed all dependencies using NPM - then it works.

@pontusr can you share a little bit about your environment? I'm not seeing the same issue on OSX 10.10 with node 5.5.0 and npm 3.5.3

I had this issue on Windows 10, node 4.4.5, npm 2.15.5. After upgrading to node 6.2.1 with npm 3.9.3 I do not see the issue any more.

I fixed the quotes, removed the section about the installation of the npm dependencies as it doesn't seem to be needed and made the instructions more logical and complete (IMO).

Some further testing on another project makes me believe that there is something with regards to the dependencies that ngrx/router needs that require node >4.4.5 and/or npm >2.15.5 - at least on Windows 10. Further testing would be needed unless someon knows which explicit feature/issue in node/npm is required. After pinpointing the requirement this should probably go into readme.md.

Thanks for providing that information. It makes more sense why you would need to explicitly install those dependencies also if you're still on npm < 3.x. We'll look at adding a section to the readme for different npm versions.


replace deprecated dry-run with dry-run=client

Coverage remained the same at 33.999% when pulling 76fbace1b039f81d6fdfdb5cd06f4a8187657603 on suiguoxin:dry-run into 178868bec7f64be0a6e4acbaa83498802a5686c3 on microsoft:master.


Dynamic enable/disable tsserver/denols

It would be awesome to have intelligent context switching between Deno and Tsserver natively integrated into this plugin... for example heuristically checking package.json / deno.json, or if the file has a hashbang, checking if it has deno or node in it.

That's not really feasible

node is easy , detect package.json
deno in the other hand, you have to guess the user intent, deno can work with only the javascript file, or with deno.json or with package.json (yes deno supports running scripts from package.json natively)

The deno manual, recomends using Deno.enablePaths for this use case<EMAIL_ADDRESS>You can use such lsp settings locally using neoconf , or lsp-settings https://github.com/sigmaSd/deno-nvim#local-settings

This is for a mixed workspace ofc,  I you mean different projects , thats already possible by specifying the root path when setting up the lsp, for example here is what I use
lspconfig.setup("tsserver", {
  root_dir = require "lspconfig.util".root_pattern('package.json'),
  --  ... more options
})

require("deno-nvim").setup {
  server = {
    root_dir = require "lspconfig.util".root_pattern('deno.json', 'deno.jsonc', 'denonvim.tag'),
   --  ... more options
}

One thing this wouldn't easily solve is something like the hashbang usecase right?
For me, I'm interested in using Deno for a replacement for bash scripting, but with single file support conflicting between them Deno and tsserver it isn't that viable, and I don't really want deno.json files littered in random script dirs.

One way to improve the situation is to add     single_file_support = true to deno and single_file_support = false to tsserver, since tsserver doesn't really work with a single file, it needs package json, this will make any js/ts work with deno
helix can run an lsp based on the shebang (but it doesn't work as expected last time I tried it) probably lspconfig can be extended to do something similar,

Hmm yeah that helps, though it doesn't make it quite seamless, as when I tried that Deno started getting enabled in random node projects too.
https://github.com/LumaKernel/vim-tsdetect seems to take the heuristic based approach for coc-tsserver / coc-deno, and the logic seems pretty reasonable, but it's all written in typescript and is coc-specific of course.
Do you think something similar could be implemented in this plugin?

Such heuristics are out of scope for this plugin ,  also its not perfect, for example there are deno projects that use node_modules (some npm deps requires it, and you need to pass --node-modules-dir to deno)
The problem is deno really want a workspace, since the official way in vscode, is to create a .vscode dir with deno settings ,
I used to have a structure like this
-deno-scripts-denonvim.tag
             |-script-dir1
             |-script-dir2
              ..

I set denonvim.tag is lspconfig root_dir, I can't use deno.json because running a script automaticly creates a deno.lock which will have all dependencies of all the scripts which can clash
This used to work, but new versions of deno lsp server have a new feature that preloads all type/javascripts file in the workspace, so now if I open a script the lsp becomes really slow at starting because it have to read all my scripts
In the end I gave up and I just create a deno.json in the same script folder
I'll think about the shebang though , I'll look to what helix does, maybe I can pr such feature to nvim-lspconfig

I added a pr for shebangs support https://github.com/neovim/nvim-lspconfig/pull/2708
does that handle your use case ?

That's awesome! I'll try it out tonight. If it works how I think it would work then I think it's perfect.


chore: internal import for odata-common

Adjust Public/Internal API for odata-common package.
Closes SAP/cloud-sdk-backlog#427.

I've implemented your suggestion, now it works as you suggested 👍


Random rolls bug

if you try to hide the results of a throw with the help of requirements, for some reason they are accumulated, but not canceled if you click on the choice several times.
The bug is definitely not a priority but...
project.json

you didn't set requirement at


MIME type error for deployed online version, not locally

Even though running vite dev and also vite preview work locally, after deployment both chrome and safari aren't loading the JS due to this error (this is the chrome version, safari uses different wording):
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.
I'm not sure whether this is due to a change in the adapter or in sveltekit.
This occurs with adapter version 0.9.1 and sveltekit build 504 - I tried downgrading to 0.9.0 and 477, but the behavior is the same (also, undoing all code changes done in the project since using these older versions does not make a difference).

I am able to reproduce this with a fresh npm create svelte@latest project, the only code change being that I am configuring the appengine adapter. Errors start coming up in the console when attempting to play the "wordle" game contained in the example app.

I also tried appending mime_type: application/javascript to the - url: /_app/immutable/ handler (to see if that would make ALL files receive the content-type: application/javascript header, even CSS stored in immutable) - this seems to have no effect at all

I can see something broke on sep 29th https://github.com/HalfdanJ/svelte-adapter-appengine/actions/runs/3154256956, typically because something changed in sveltekit latest. Until I fix this, try and downgrade to sveltekit released before that date.

Hmm the test error was due to this issue. It was just because the test app had changed (https://github.com/HalfdanJ/svelte-adapter-appengine/pull/56), so going to need to debug this more.

@Lootwig I havent been able to reproduce this issue when deploying a vanilla example app from sveltekit (https://e2e-test-dot-svelte-demo-329602.uc.r.appspot.com/). Can you provide any additional details that can help me?

I'm also being affected by this issue


ZEVA - Redirect Issue After Approving Credit Transactions for Director

Description:
When the Director approves a credit transaction, or anyone refreshes the page or types a url directly in, or BCEID submits a sales submission they are redirected back to the login screen instead of staying on the page of the credit application they have approved.
Expected Behaviour:
The user should stay on the page they are on when they perform an action or go to the page they want when they type a url in.
Actual Behaviour:
The Director approves a credit application and is redirected to the login page.
BCEID creates a sales submission and submits to government and is redirected
anyone refreshes and is redirected
Implications:
The user is not sure if the credit application has been issued and they have to log in again and navigate back to the credit application to check if it was issued successfully.
Steps To Reproduce:
Log in as a Director.
Navigate to a credit application.
Approve the credit application.
Observe the page redirection after approval.
etc etc

Please add your planning poker estimate with Zenhub @JulianForeman

Please add your planning poker estimate with Zenhub @emi-hi


⚠ Bofrost.lu has degraded performance

In 193356f, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1883 ms

Resolved: Bofrost.lu performance has improved in 960cfba after 13 minutes.


[Java] Rationalize display format

Use the following conventions:

() for sub-messages (composites, group instances)
[,] for arrays and repeating group
{,} for sets

Added the enum for clarity sake, but not convinced it is successful, external opinion welcome.


Multiple small fixes

Short description

Multiple small last-minute fixes
Proposed changes

fix: links to wards/rooms in patient list now work again (and open the corresponding room automatically)
change: sort patient list by update instead of creation, just be a bit more convenient
change: mayyyybe sped up patient list a little (not sure haha)
fix: button layout in assignment view was broken on desktop
fix: bed assignment form was not being translated into German
change: reword help text for discharge_date into "Estimated discharge date" by recommendation of a medical professional in my family. This only really affects the intake form.
fix: text alignment in "suggest assignment" button in ward view
fix: show - instead of None () in patient card of patient has no diagnosis

Side effects

Resolved issues

Fixes: n/a

No questions to above, but I have a small question regarding the test data, some patients are born in the future and the age will display "-1". This is not related to final presentation data though, are we going to load only data_final_presentation?

Wait, so the midterm data contains patients that are not yet born?
In any case, good catch, I will limit the age to 0

No questions to above, but I have a small question regarding the test data, some patients are born in the future and the age will display "-1". This is not related to final presentation data though, are we going to load only data_final_presentation?

Wait, so the midterm data contains patients that are not yet born?
In any case, good catch, I will limit the age to 0

done

No questions to above, but I have a small question regarding the test data, some patients are born in the future and the age will display "-1". This is not related to final presentation data though, are we going to load only data_final_presentation?

Wait, so the midterm data contains patients that are not yet born?
In any case, good catch, I will limit the age to 0

Yeah, like this one:
  {
    "model": "cms.patient",
    "pk": 175,
    "fields": {
      "creator": 4,
      "created_at": "2024-01-20T13:47:00Z",
      "updated_at": "2024-01-14T07:24:50.995Z",
      "insurance_type": false,
      "first_name": "Sanjiva",
      "last_name": "Kownatzki",
      "gender": "m",
      "date_of_birth": "2024-03-22",
      "_first": "4f6b-836e-1d8d59c525fd",
      "_last": "73ecd750-73e0"
    }
  },


feat!:Replace funcs with interfaces

BREAKING CHANGE
Replace funcs with interfaces for basically everything.  This provides a few values:

It's more clear what customization is present in goschtalt.
It's a bit easier to use an object for adapters and the like.
The documentation looks like it will be easier to write and understand.

Codecov Report

Merging #35 (83861cc) into main (b257ef6) will decrease coverage by 0.20%.
The diff coverage is 96.62%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main      #35      +/-   ##
==========================================
- Coverage   99.24%   99.04%   -0.20%
==========================================
  Files          24       24
  Lines        2504     2520      +16
==========================================
+ Hits         2485     2496      +11
- Misses         14       18       +4
- Partials        5        6       +1

Flag
Coverage Δ

unittests
99.04% <96.62%> (-0.20%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

expand.go
97.36% <83.33%> (-2.64%)
:arrow_down:

pkg/adapter/time.go
91.30% <86.66%> (-8.70%)
:arrow_down:

goschtalt.go
94.87% <92.30%> (-0.22%)
:arrow_down:

buffer.go
100.00% <100.00%> (ø)

options.go
100.00% <100.00%> (ø)

pkg/adapter/adapters.go
100.00% <100.00%> (ø)

pkg/adapter/duration.go
100.00% <100.00%> (ø)

unmarshal.go
100.00% <100.00%> (ø)

unmarshalvalue.go
100.00% <100.00%> (ø)

value.go
100.00% <100.00%> (ø)


#133 DBバックアップ処理を修正

Codecov Report
Patch and project coverage have no change.

Comparison is base (776abea) 86.00% compared to head (4534b25) 86.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #147   +/-   ##
=======================================
  Coverage   86.00%   86.00%
=======================================
  Files          61       61
  Lines        2072     2072
=======================================
  Hits         1782     1782
  Misses        237      237
  Partials       53       53

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

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


attribute 'company' missing form the user entity

Hello
I could not find the attribute 'company' on the user entity reference, i wonder why is this not available on the user entity from the azure graph api?

We do sync this property from on premises, but it's not exposed today on the user entity.  Is this something you need?

Yes, we need company property to be synced. actually all the possible properties in AzureAD must be exposed.


Security warning about "spec.oneapi.com" certificate not being valid for that domain name

Trying to visit: https://spec.oneapi.com/level-zero/latest/sysman/api.html
Got:

Firefox detected a potential security threat and did not continue to spec.oneapi.com.
...
Firefox does not trust this site because it uses a certificate that is not valid for spec.oneapi.com. The certificate is only valid for the following names: intel.com, ...

(It listed lot of sites, but not spec.oneapi.com.)

Ah, problem is that the spec URL has changed, certificate lists only the new  to *.io site, and either there's no redirect from *.com address, or redirect needs valid certificate for that too, for Firefox to accept redirect.


Reduce memory leaks when autorelease pools are not available.

Remove use of autorelease.
Rename getXXX() functions that returned autoreleased objects to newXXX() that don't.
Calling functions now responsible for releasing returned objects from these functions.
Move creation and tracking of texture->texture views for copying to MVKImage.
MVKCmdCopyImage retrieve texture view from MVKImage.
MVKMTLFunction responsible for releasing its MTLFunction.
Add dev notes to README.md.
Reduce creation of autoreleased instances of NSString, NSArray & NSDictionary.
Ensure remaining are covered by deliberate autorelease pools.
Cube demo use staging buffers on macOS because host-coherent texture memory unavailable.

There is an annotation in clang to tell the compiler (and the static analyzer) that a function/method returns a retained instance: NS_RETURNS_RETAINED , maybe it would be nice to use it.

There is an annotation in clang to tell the compiler (and the static analyzer) that a function/method returns a retained instance: NS_RETURNS_RETAINED , maybe it would be nice to use it.

Thanks! I'll look into it.

Note to contributors: Future updates should avoid using autorelease (direct or implied) in future updates. README.md includes guidelines.


Change the way menu names work

Ideally you call a menu component by doing this:
<wp-menu name="Main Menu" class="menu main-menu"></wp-menu>

Also, should not be a div wrapping the ul

Removed <div> wrapper
Changed globally-registered component name to wp-menu
Changed slug prop to name, menu now searches for name instead of slug
Changed ModulerMenu.vue to WpMenu.vue
Added some default WordPress menu classes to menu-items

All in a593958 - continuing work on this in #12


resultset are indistinguishable from pandas data frames

ResultSet (the data structure we use by default to store db results), is currently indistinguishable from pandas data frames:

this can confuse users, as they might think the're data frames. we should ensure they look different. perhaps add result set at the bottom.
maybe we should also detect when they try do perform pandas-like operations? e.g.,
df.head()

Error should be: head is not a valid operation, you can convert this into a pandas data frame by calling .DataFrame() or a polars data frame by calling .PolarsDataFrame()

Sorry for working on the problem before describing the AC
Acceptance Criteria:

Add string below ResultSet representation indicating it is a ResultSet object and not pd.DataFrame
Add "to convert to pandas, call .DataFrame()" next to the string created above
Raise an AttributeError with the error message (head is not a valid operation, you can convert this into pandas data frame by calling .DataFrame() or a polars data frame by calling .PolarsDataFrame()) when an invalid operation is performed on the ResultSet object

About the 3rd criterion, do I show the same error message when non pandas-like operations (either by typo such as hea() or by intention) are performed?

for 2) we can also mention they can call .PolarsDataFrame() to convert to polars

About the 3rd criterion, do I show the same error message when non pandas-like operations (either by typo such as hea() or by intention) are performed?

No, no need to cover typos.


problem with shooting(anti aim)

https://youtu.be/7phBs6fOu8Y

Dont AA when IN_ATTACK

if (!(cmd->buttons & (UserCmd::IN_ATTACK | UserCmd::IN_ATTACK2))) {
AntiAim::run(cmd, previousViewAngles, currentViewAngles, sendPacket);
}

increase MaxAngleDelta

work, thanks

if (!(cmd->buttons & (UserCmd::IN_ATTACK | UserCmd::IN_ATTACK2))) {
AntiAim::run(cmd, previousViewAngles, currentViewAngles, sendPacket);
}

for future reference its better to do invert this and use a return instead, it prevents your indentation from getting crazy large and unreadable.
the compiler makes them output the same code.

if (!(cmd->buttons & (UserCmd::IN_ATTACK | UserCmd::IN_ATTACK2))) {
AntiAim::run(cmd, previousViewAngles, currentViewAngles, sendPacket);
}

for future reference its better to invert this and use a return instead, it prevents your indentation from getting crazy large and unreadable.
the compiler makes them output the same code.

yeah but you dont want to return in createmove, better do it inside the func


Support first-class module

This implements the parts missing to support the first-class module example given by Niols in #106.
It includes:

dealing with the line breaks between declaration of different natures,
opening the indentation for module signature which is closed by the end keyword
removing the spaces between parentheses and keywords. This last bit is not working as expected, due to a bug in tree-sitter queries: https://github.com/tree-sitter/tree-sitter/issues/1811 . There are 3 options to deal with it:

Chose that we always want spaces around parentheses (quite unusual in the OCaml world, but the default in many languages),
Write the queries in a not elegant, but bug-avoiding way,
Spend time working on the tree-sitter repository to fix the issue upstream.

The golden rule of software quality would push toward option 3, but it is the less sure and longest path.

There are 3 options to deal with it:
1. Chose that we always want spaces around parentheses (quite unusual in the OCaml world, but the default in many languages),
2. Write the queries in a not elegant, but bug-avoiding way,
3. Spend time working on the tree-sitter repository to fix the issue upstream.

The golden rule of software quality would push toward option 3, but it is the less sure and longest path.

I think you want to do (2) as a stop-gap solution, and see if you can do something to help with (3). Maybe not immediately, but soonish.

Solution (ii) implemented, but this is quite ugly, as it requires to multiply very similar queries, which would all go in a single alternative otherwise.


chore: test auto-token fill for github comments

Linked issue
Let's try this out 🤞

Classic 🤡

Error: expo/expo-github-action/feature/default-github-token/preview-comment/action.yml (Line: 11, Col: 3): Unexpected value 'env'

Only an issue for 2 years 🤡


IntegerSerializer assumes int must have 4 bytes

Hello,
I have registered a bug on Cassandra's Jira : https://issues.apache.org/jira/browse/CASSANDRA-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13027322#comment-13027322.
But it seems this is an Hector issue related to IntegerSerializer. Cassandra team says that Integers in cassandra do not always have 4 bytes, it depends on their values. For example, for the number 1, it will be encoded on 1 byte.
In older hector version (I was using), decoding bytes accepted this by checking the size of the byte array:
@Override
public ByteBuffer toByteBuffer(Integer obj) {
if (obj == null) {
return null;
}
int l = obj;
int size = 4;
byte[] b = new byte[size];
for (int i = 0; i < size; ++i) {
b[i] = (byte) (l >> (size - i - 1 << 3));
}
return ByteBuffer.wrap(b);
}
But now, I have updated to the latest release, and the code assumes ints always have 4 bytes. This is a problem when using caasandra-cli to insert an int value, as it be encoded with the minimum number of bytes.... Then Hector won't be able to read the int back.
Is there a way to resolve this?
Thanks,
Olivier

sorry i missed this ... there is an easy way to do this if issue #227 is implemented.  passing the PropertyDescriptor into the converter will give the converter the type of the POJO property.  then, a converter can be created that will assume the type stored in cassandra is BigInteger, but convert it to the type of the POJO property before assigning.  if it isn't byte, short, integer, or long, then throw exception.

oops, hit the wrong button and accidentally close it, reopened now

Added VariableIntegerConverter that will examine the POJO property's type and do appropriate conversions to/from BigIntegerSerializer.  This will save space in the db


Changing the favicon color when in break mode

Description
For the sake of more visibility, it'll be cool to have the favicon in green when we're in break mode.
Eventually having in a more neutral color when everything is in pause, like gray, or yellow.
Basically we would have 3 colors:

Red: during a work session
Green: while we're in a pause mode
Yellow/Gray (or whatever): when the clock is not running

I fix it.
Now,  when a cycle of pomodoro is over, you can see a grey favicon with "Finish" text.


Feature/ Add series to link related articles

✨ Codu Pull Request 💻
Fixes #1081

Pull Request details

Added an extra input field in the more options section (While creating a new post) under the Canonical Url and Draft link
Added a new table in the database called "series"
Added a new field in the post table called seriesId referencing the id of the series table

Cases considered

CREATE
When the user creates a new record will be created in the series table

EDIT

If the user adds a series name to a post which didn't have a series then a new record will be created
If the user changes the series name to a new series name (which is not present in the db), then a new record will be created in the series table. (The previous series will be removed from the series table, if no other post has that series name to maintain consistency).
If the user removes the series name then the seriesId in the post table will be set to null. (The previous series will be removed from the series table, if no other post has that series name to maintain consistency)

DELETE
If the user deletes the post which had a series name then the series will be removed from the series table, if no other post has that series.

Any Breaking changes
None
Note to Reviewers
Please let me know,

If there is any case missed
any change in coding style required
any error case not handled
any other change required

Associated Screenshots
UI

Working video

@NiallJoeMaher please review and let me know the changes I need to make

I'm out of the office at the moment so will try get to this soon. Need to do some testing on it. 🦾

Sure, I am up for it

@NiallJoeMaher @JohnAllenTech  any update on this?

Let me know if this is still WIP so I can pick it up if you don't have the time.


remove letter spacing from ThemeStyle.yaml

This was a request from Assaf.

@TomasBankauskas can you please review this PR? I'm not at all familiar with this change.

@JugglerX ok. I’m Closing this PR. For now, let’s not remove anything.


Empty --data or --data-binary results in error

Used by programs such as Charles Proxy and Chrome for a POST with no data.
Example command:
curl --data-binary "" google.com
Console stack trace
TypeError: t.data.startsWith is not a function
Stack trace:
i@https://curl.trillworks.com/scripts/main.js:1:15003
[11]</f@https://curl.trillworks.com/scripts/main.js:1:16207
[1]</a@https://curl.trillworks.com/scripts/main.js:1:2815

This gives "Error parsing curl command." on Python and Node.js, but not PHP where it seems to give valid code.


[BACKPORT-TO-STABLE] Bugfix Release 1.20.3 Phase 4

[BACKPORT-TO-STABLE] Bugfix Release 1.20.3 Phase 4
Description
Merges the following backport-to-stable commits into the 1.20 branch:

https://github.com/apache/drill/pull/2666
https://github.com/apache/drill/pull/2669
https://github.com/apache/drill/pull/2671
https://github.com/apache/drill/pull/2674
https://github.com/apache/drill/pull/2675
https://github.com/apache/drill/pull/2676
https://github.com/apache/drill/pull/2677
https://github.com/apache/drill/pull/2678
https://github.com/apache/drill/pull/2682

Documentation
N/A
Testing
UT

@kingswanwho note that the test failures on this PR's last CI run are showing up everywhere at the moment and are not caused by your commits here.

Thanks @kingswanwho, this looks good with the only issue I see being the protobuf upgrade.
In addition to the the dependency version number change, a lot of generated protobuf code needs an update. In the master branch I can see that @vvysotskyi had to add this to Dependabot's PR manually. Did you try cherry picking his commit which includes the updates to generated code?

Thanks @kingswanwho, this looks good with the only issue I see being the protobuf upgrade.
In addition to the dependency version number change, a lot of generated protobuf code needs an update. In the master branch I can see that @vvysotskyi had to add this to Dependabot's PR manually. Did you try cherry picking his commit which includes the updates to the generated code?

Hi @jnturton, yes I cherry-picked the commit into this PR, I will drop this commit and submit PR again.


Anagram exercise

This is not a valid PR so I close this.

Thank you @hayashi-ay.
@NoaK26 if you have forked this repo and are using that to complete your exercises, consider changing or removing this repository from the remote. Do not try to PR your exercise solutions here, thank you.


Kusto Notebook: on restart, connection information disappears, need to recreate a connection

Azure Data Studio Version: 1.22.0 (user setup)
Commit: 77b9a708df3679c26a89ba24a070b3f7a078a510
Date: 2020-09-21T20:23:13.120Z
VS Code: 1.49.0
Electron: 9.2.1
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.17763

Steps to Reproduce:

File > New Notebook.

Code

Type a kusto query
Choose Kernel: 'Kusto' and Create a new connection.
Click on blue run arrow to run query
Restart Kusto Explorer.

The notebook opens fine, the query loads along with last results, but the connection is gone.

The current default behavior of SQL or Kusto notebook today is that connection details in notebook is not persisted.
This is a good feature request.
@chlafreniere - to confirm / chime in.

Still repro's in v0.1.1 of the extension.

Yes, this is currently expected behavior. We're currently working on persisting this connection information so that users don't need to re-select a connection every time (such as in this scenario)


remove the need for perl in the engine environment

We are having some build issues with the toolbox perl dependency issues in some experimental userenvs which brings focus on this.  Ultimately, we don't intend to require perl in the engine environment but it has snuck in because we are dependent on https://github.com/perftool-incubator/toolbox/blob/main/bin/get-json-settings.pl.  We have decided to adjust this because it will fix the current problems being faced as well as reduce the size of the engine container images.

The first step towards resolving this is creating a Python implementation of get-json-settings.pl (Python is ok since we already depend on that for things like Roadblock).  That is being addressed by https://github.com/perftool-incubator/toolbox/pull/84.

https://github.com/perftool-incubator/toolbox/pull/84 has been merged.
The second step is to change the engine code to use the new Python implementation of get-json-settings.
This is being addressed by https://github.com/perftool-incubator/rickshaw/pull/551.

https://github.com/perftool-incubator/rickshaw/pull/551 has been merged.
The third step is to remove the perl module requirements from the toolbox workshop.json.  By removing the requirements but leaving the workshop.json intact and included by rickshaw-run it allows for the future addition of other toolbox dependencies should the need arise (simply by adding them to the workshop.json without having to do anything else).  This is being addressed by https://github.com/perftool-incubator/toolbox/pull/85.

https://github.com/perftool-incubator/toolbox/pull/85 has been merged
The fourth and final (?) step is to remove all the perl packages that are "natively" included in the userenvs by the userenv embedded requirements.  This is being address by https://github.com/perftool-incubator/rickshaw/pull/552.


HL-566 | HL-Backend: Add more DISABLE_AUTHENTICATION uses

Description :sparkles:
Add DISABLE_AUTHENTICATION support to:

BaseApplicationSerializer.logged_in_user_is_admin
MessageSerializer.validate

Refs HL-566 (Add more DISABLE_AUTHENTICATION uses)
Refs HL-553 (The calculation results may possibly be visible now)
Issues :bug:
HL-566 (Add more DISABLE_AUTHENTICATION uses)
HL-553 (The calculation results may possibly be visible now)
Testing :alembic:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

Codecov Report

Merging #1477 (943d83f) into develop (b404c6d) will increase coverage by 14.80%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           develop    #1477       +/-   ##
============================================
+ Coverage    65.01%   79.81%   +14.80%
============================================
  Files         1024       76      -948
  Lines        28198     2507    -25691
  Branches      2953        0     -2953
============================================
- Hits         18332     2001    -16331
+ Misses        9425      506     -8919
+ Partials       441        0      -441

Impacted Files
Coverage Δ

...ackend/shared/shared/oidc/tests/test_mock_views.py
100.00% <ø> (ø)

...ackend/shared/shared/oidc/tests/test_oidc_views.py
100.00% <ø> (ø)

backend/shared/shared/ytj/ytj_client.py
27.58% <0.00%> (-65.52%)
:arrow_down:

backend/shared/shared/common/decorators.py
37.93% <0.00%> (-58.63%)
:arrow_down:

...nd/shared/shared/service_bus/service_bus_client.py
27.65% <0.00%> (-57.45%)
:arrow_down:

backend/shared/shared/yrtti/yrtti_client.py
39.39% <0.00%> (-51.52%)
:arrow_down:

backend/shared/shared/audit_log/viewsets.py
45.56% <0.00%> (-50.64%)
:arrow_down:

backend/shared/shared/common/lang_test_utils.py
60.00% <0.00%> (-40.00%)
:arrow_down:

backend/shared/shared/suomi_fi/utils.py
33.33% <0.00%> (-33.34%)
:arrow_down:

backend/shared/shared/models/mixins.py
66.66% <0.00%> (-33.34%)
:arrow_down:

... and 952 more

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

Please could one of you @nikomakela or @tuomas777 code review this pull request? For easier code review I recommend code reviewing per commit rather than looking at all the changes as a one big change.

I did check the commits and discuss them with Kari.
Looks ok.
Only thing noted was that there should be some text added to readme about NEXT_PUBLIC_MOCK_FLAG support in future extensions.


Add cyan color

Jira ticket:
https://jira.mesosphere.com/browse/DCOS-39943
Blocks:
https://jira.mesosphere.com/browse/DCOS-39944
https://jira.mesosphere.com/browse/DCOS-39945

@Poltergeist - normally I'd bump a minor version for a change that adds a feature. How do we handle versioning in this repo?

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add support for custom header parameters for broker endpoints

We have a service manager that can provision/deprovision services on our cloud platform. We are extending our service manager operations to CloudFoundry with an Open Service broker.
When our service broker is registered with CF platform to make our services and plans available to end users, CF calls our broker endpoint
GET /v2/catalog
Our service broker running on our service manager expects an header parameter for authentication along with basic auth parameter. Without the extra header parameter, our endpoints are not accessible and return 401.
We are looking for a solution on how to pass custom header parameters to broker endpoints during registration, so that platform sends it to every endpoint in subsequent requests to broker.
PUT /v2/service_instances/:instance_id
PUT /v2/service_instances/:instance_id/service_bindings/:binding_id

Hi @jakkahub
Please could you detail the use case for this more so I can look into how we can help?
Many thanks

When CF admin registers our service broker in CloudFoundry
cf create-service-broker SERVICE_BROKER USERNAME PASSWORD URL [--space-scoped]
GET /v2/catalog is called and our service broker receives Authorization, X-Broker-Api-Version parameters in header. Our broker also need another parameter TENANT_NAME in header.
We are looking for a solution to pass custom header parameter to service broker from CloudFoundry.

Hi Somesh,
This issue https://github.com/cloudfoundry/cf-release/issues/1245 may be
related as it talks about sending custom headers to broker endpoints (but
in that case the header and value come form the catalog data).
Please could you detail your use case more? What are you using the *TENANT_NAME
*header field for and who is responsible for specifying the value of the
header?
Thanks,
Matt
On Tue, Sep 26, 2017 at 11:34 PM Somesh<EMAIL_ADDRESS>wrote:

When CF admin registers our service broker in CloudFoundry
cf create-service-broker SERVICE_BROKER USERNAME PASSWORD URL
[--space-scoped]
GET /v2/catalog is called and our service broker receives Authorization,
X-Broker-Api-Version parameters in header. Our broker also need another
parameter TENANT_NAME in header.
We are looking for a solution to pass custom header parameter to service
broker from CloudFoundry.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/cloudfoundry/cf-release/issues/1245#issuecomment-332355793,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AG7UzM8Y2DEF3_7HhP4ESG6khgoJ9ytFks5smXwKgaJpZM4PiMD5
.

What are you using the TENANT_NAME header field for? If this data is already specified in the catalog data, what do you gain from it being included in the header of every request?

Our service platform is a multi tenant system and every incoming request should have TENANT_NAME in header for authentication. This applies for all URLs including service broker registration URL and cannot be bypassed.

OK, that makes sense. If the user you care about is the Cloud Foundry user, then as of v2.13 of the Open Service Broker API (released 2 days ago and supported by CF), you can use the Originating Identity header that is sent to service brokers on every request.
The cloud controller sends a X-Broker-API-Originating-Identity header with the value being the user_id value from the Cloud Foundry JWT token. More information can be found in the spec and the profile docs.
Does that help at all? Or is there other user-specific information you need for your multi-tenant system?

We need TENANT_NAME in header for all incoming request to our broker, not just the end-user initiated messages.

We came up with a requirement from our use case and this is what we looking for.
Functional requirements for CF to support custom header params
cf create-service-broker SERVICE_BROKER USERNAME PASSWORD URL [-H HEADER] [—space-scoped]
cf update-service-broker SERVICE_BROKER USERNAME PASSWORD URL [-H HEADER]
Options
-H
Custom headers to include in the request, flag can be specified multiple times
CF platform should -

Save header params during create and update of the service broker
Include these header params in all endpoint invocations of this broker. e.g during catalog fetch, provision, deprovision, check last operation, bind, unbind and patch.

Adding the CF CLI PM @dkoper who can respond regarding the CLI changes.
Regarding the platform (Cloud Controller) changes, adding PM @zrob to get his feedback on this too.
Zach - the @cloudfoundry/services-api team could take this on at some point in the future (may be early 2018), but wanted to make you aware of this ask in case you've heard this from other places.

@jakkahub I had an idea of how you could get this working without trying to pass a custom header through the CF CLI and Cloud Controller.
Could you use the Basic Auth credentials (username and password) to determine who the broker is being used by? Those credentials are sent on every request to the broker, and your broker could accept multiple sets of credentials.

@jakkahub Is this something that needs to be configured for each individual broker, or is it something that should be configured in the CF deployment and included in all broker requests.
For example (rough idea):

Configure the manifest property: cc.service_brokers.custom_headers to "TENANT_NAME: my-cf-123"
All requests to all brokers will now include the TENANT_NAME header

We need custom header parameter that needs to be configured for each individual broker.

This repository is no longer supported. Closing issue.


New app SleepPhaseAlarm

Uses the accelerometer to estimate sleep and wake states with the principle of (Estimation of Stationary Sleep-segments (ESS)). This app will read the next alarm from the alarm application and will wake you up to 30 minutes early at the best guessed time on first detected movement.
When SleepPhaseAlarm starts it searches for the next enabled alarm in alarm.json from the default alarm app. Beginning from 30 minutes before the alarm time it waits for a wake phase using the ESS algorithm to trigger an alarm.
Afterwards the default alarm app does trigger the scheduled alarm as usual.

Nice - thanks!


Last release failed

Hello,
The last automated release has failed here
Would be nice to have #6 :)
Thanks !

Sorry about that. GitHub's UI for squash and merge has a bug in it where the commit message I set doesn't get applied :-( Hopefully that's resolved soon. I've had to do manual releases quite a bit recently (I never have to do this).


Is it tagged correctly?

Hi @dalf,
When I go there:

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

When I clone the repo, and use the git describe command:
git describe

fatal : Aucune étiquette ne peut décrire '5077baca8962bf071d366876c025684ca58b0fe2'.
Essayez --always, ou créez des étiquettes.

python-fasttext-predict-git cannot be packaged on Arch Linux.
The PKGBUILD pkgver() function does not work with how this repo is currently tagged.

The issue should be fixed now: I forgot to git push --force to take into account a minor change of the description in setup.py.

Thanks! Problem solved.
python-fasttext-predict-git is now released as well on the AUR.


Crud add enum enable option

issue #2059
I add an EnumType class just for autoset(reference from here)
And add a config option letting developer decide  whether to enable enum-autoset
Unfortunately, it's quite annoying to write a testing for it because sqlite doesn't support enum type.
I didn't do a fully quality assertion. I only testing with my MySQL project.
Maybe someone can try it on other DB.
Just an simple hack, any ideas?

Hi @fzhantw ,
Thanks for putting in all this work.
I'm eager to have a long-term solution for ENUMs, but I can't say I'm well-versed in how DBAL works, so I'm sorry if my questions are stupid. I think it's interesting to learn about it though :-) Can we do a little back-and-forth for me to understand this please? No need to edit the PR in any way - I'll do it if necessary.
From what I understand, this PR:

adds an enum.blade.php column, which is no different from the "text" column type; correct? If so, I think it would be better to do @include('crud::columns.text') as the content of the column, to reduce duplicate code;
adds a config option to enable_enum_auto_set; if we do this right, we shouldn't need a config - the ENUM column type should be registered if it doesn't exist; what's the use case where you'd prefer the old registration (enum as string), instead of enum as enum?
if that config value is true, it will register the ENUM type using a class that extends Doctrine\DBAL\Types\Type, instead of what we did previously (map it to the String type); The only thing that's different is what's inside getSQLDeclaration(). What's the benefit of this? I don't understand that from the Doctrine docs on custom mapping types.
CrudTrait::getPossibleEnumValues($field_name) will still not work, for anything other than MySQL, that supports ENUMs, is this correct?
If this is a solution for ENUMs outside MySQL, we should probably move the ENUM methods we have in CrudTrait on that EnumType class.

Thanks!

adds an enum.blade.php column, which is no different from the "text" column type; correct? If so, I think it would be better to do @include('crud::columns.text') as the content of the column, to reduce duplicate code;

I think include "text.blade.php" in "enum.blade.php" is a good idea too.

adds a config option to enable_enum_auto_set; if we do this right, we shouldn't need a config - the ENUM column type should be registered if it doesn't exist; what's the use case where you'd prefer the old registration (enum as string), instead of enum as enum?

I tried to use sqlite.
Because there's no enum type in sqlite.
Also, I tried PostgresSQL & MSSQL, all of them don't support Laravel enum type. (BTW MariaDB is OK)
That makes sense, because Doctrine/DBAL don't support enum by default.
It's so hilarious that I modified this function only for MySQL but not other databases.
I think that quite difficult to find a way to get deal with databases which is not MySQL by DBAL,
due to DBAL doesn't treat column type which contains constraint very well.
I have been concern that there's any side-effect, that's why I chose to add a config,
but now, I think it's might be OK to remove this config.

if that config value is true, it will register the ENUM type using a class that extends Doctrine\DBAL\Types\Type, instead of what we did previously (map it to the String type); The only thing that's different is what's inside getSQLDeclaration(). What's the benefit of this? I don't understand that from the Doctrine docs on custom mapping types.

There's another difference between TextType & EnumType which is "getName" method.
DBAL tries to match column definition with a type.
MySQL enum type definition like enum('option1', 'option2', 'option3'),
DBAL will turn it into enum (for mysql, see here)
By add EnumType, DBAL is able to distinguish enum and text, so we can do something with enum type.

CrudTrait::getPossibleEnumValues($field_name) will still not work, for anything other than MySQL, that supports ENUMs, is this correct?

Yes, that is correct.
DBAL is not able to do that.
I also try PDOStatement::getColumnMeta, not work.
I don't know any smart solution currently.

If this is a solution for ENUMs outside MySQL, we should probably move the ENUM methods we have in CrudTrait on that EnumType class.

I don't get this.

Hmm... on second thought... Maybe a better strategy would be to have less support for ENUM db columns, rather than more.
To explain myself: to have the ENUM field type, we've had to add a bunch of compromises, that complicate the codebase, but are only used by 1 field type, under 1 db management system (MySQL), by some users (not everyone uses ENUM db columns). Despite the fact that DBAL & Eloquent do not support them, we've been a bit stubborn and provided support for them.
Maybe a better strategy would have been to just tell people that for the ENUM db column they should

use the select_from_array field and pick the values themselves; maybe provide an example of how to get the values directly from the DB column;
use the text column (since it will output the value in the db column);

That would certainly be easier to maintain, while not being that much more complicated for the developer. @pxpm what do you think about this? Should we keep providing custom functionality for ENUM db columns, when DBAL & Eloquent do not support them?

Hey @tabacitu . I am not also the most proeficient in databases. But in this case I think we provide a good solution to overcome this with select from array and text field. It would frustrate who expect to use ENUMS straight way but on our side i am not sure if we should provide out-of-box support for it having a good solution to solve the problem.
I would go with your second proposal, but bare in mind that like I told you I am not full aware of the implications of this.
Best,
Pedro

@pxpm / @promatik  I believe we've recently made an update in 4.1 so that we throw a pretty error if ENUM is used outside MySQL. Which basically... fixes this problem... right? Or am I wrong? 👀

@tabacitu yes, on #3788, we now have;
abort(500, 'Enum field type is not supported - it only works on MySQL.');

Now I'm wondering, should we suggest on the error message the usage of select_from_array instead?

Now I'm wondering, should we suggest on the error message the usage of select_from_array instead?

Yes, we definitely should 😀 Done - https://github.com/Laravel-Backpack/CRUD/pull/3866

@fzhantw since we've now handling the issue in a different way, I'm going to close this PR. But please don't let this discourage you from submitting other PRs. Normally our process is A LOT quicker, and normally we do end up merging the PRs 😅 On the other hand, we have a lot of PRs ourselves that we did not merge... It's how it works in public source project of this size, ideas compete, PRs compete, sometimes something sounds like a good idea, then after careful consideration better ideas come up or it doesn't sound so good anymore. Some make it and some don't... 🤷♂ Again, please don't let this discourage you from submitting other PRs to us.
Keep 'em coming.
Cheers!


Add RotationMatrix similar to Quaternion and RotationAxisAngle

Is your feature request related to a problem? Please describe.
Common way of representing transforms is to have a rotation matrix and a 3D translation. Right now the direct way to log these is via TranslationAndMat3. However it would be more natural to use Rigid3D. However that only supports Quaternion and RotationAxisAngle for the rotation argument.
Describe the solution you'd like
Add a class RotationMatrix and support it in both Rigid3D and TranslationRotationScale3D. Related to that it might be worth renaming Quaternion to RotationQuaternion to have consistent naming for the rotation representations, i.e., RotationMatrix, RotationQuaternion, RotationAxisAngle.
Might be nice to have a check on construction that the matrix is actually orthogonal and its determinant is 1.

The reason I decided so far against passing matrices to Rigid3D is that it looks like it implies that we'd be doing validation at some point if the matrix passed is actually just a rotation.
My issue with that is that we don't actually need to do that, after all TranslationAndMat3 just takes about any matrix3.
That said, this very much ties into the problem of allowing to pass in 4x4 matrices for affine transformations. I suppose for both cases we need to do validation internally upon use (that's the easiest place) and simply display a warning once that a given entity violates the implied contract.
If we go through with both changes we end up with this tree of unions for a transform
Transform:

[ ] [new] Mat4 - Mat4x4
[ ] TranslationAndMat3 - Option<Vec3D>, Option<Mat3x3>
[ ] Rigid3D - Option<Vec3D>, Option<Scale>, Option<Rotation>

Scale:

[ ] Uniform  - f32
[ ] NonUniform - Vec3D,

Rotation:

[ ] Quaternion - Quaternion
[ ] AxisAngle - Vec3D, Angle

Angle:

[ ] Radians - f32
[ ] Degrees - f32

[ ] [new] Matrix - Mat3x3

Does that makes sense?
not sure how I feel about RotationQuaternion, need also to see what it's gonna look like in the new API.

Another option might be to have a Rotation class that can be initialized either from a Quaternion, AxisAngle or Matrix. More similar to what scipy does.

So maybe also keeping the TranslationRotationScale would be more correct in that case?

ah, yeah I got that wrong.

Instead of two / three separate classes.

We'll need to see how that works out with our data-definition files and codegen in the near future: Rotation as such is a union of a bunch of different sub-values. We surely should be abled to make it look like in scipy

fixed in https://github.com/rerun-io/rerun/pull/6929
* the layout described in there is not happening like that, but I believe in spirit we ticked the most important things:
* ✔ RotationQuat is a thing by now         * ✔ TransformMat3x3is a thing, not quite the askedRotationMatrix` but close enough
* ✔ a rotation matrix and scale & translate can live side by side


Disable loading .env file

Feature Request
Right now process compose loads the project .env file and makes it impossible to change any configuration while the processes are running.
I would like to have a flag in the configuration to disable this behavior. I set all relevant environment variables already before calling process compose

Hi,
I can provide an argument and an environment variable to disable the .env loading.
Do you think it will work for you?

Just so you know, process-compose (with .env file) doesn't override an env variable that already exists.

I want that my application reads the .env and so I can change the environment variable without restarting process compose

That makes sense.
Will the process compose argument to disable .env loading help you then?

yes or in the config file in the root level maybe :)

Released in v1.9.0

v1.9.0 is now available on nixpkgs unstable: https://search.nixos.org/packages?channel=unstable&show=process-compose&from=0&size=50&sort=relevance&type=packages&query=process-compose