int8 quantization apis

Implement the quantizaiton apis in miopen hostside, which is prepared for the integration with the quantization composable kernel.

@iq136boy Is it ready for review? Please mark this PR with the IMPACTS_API label, add also urgency label and indicate target milestone (MIOpen release), thanks.

@iq136boy  I see CI results for static checks only. Is it intentional? When you convert to ready for review, we would need the whole set of CI I guess.

@iq136boy Is it ready for review? Please mark this PR with the IMPACTS_API label, add also urgency label and indicate target milestone (MIOpen release), thanks.
@atamazov Not yet. JD and I will go over this PR on our 1:1 meeting today (pre-review). Then I will added you as a reviewer when it is ready. Thanks.

@iq136boy I see CI results for static checks only. Is it intentional? When you convert to ready for review, we would need the whole set of CI I guess.

@junliume Yes. That is intentional. The changes still need  pre-review from JD. We will do this today on the 1:1 meeting. I will request review from you after it is ready (all the futures added and CI passed). Thanks.

On hold and waiting for kernels @zjing14

@iq136boy Is this PR on track for the next sprint? If we are at risk, let me know and I'll help.

@iq136boy

So now I am working on adding a new naive convolution kernel with quantization operation in MIOpen.

Maybe it is faster to add INT8 QNT at the host side (less work)

(1) This PR adds new INT8 QNT data members to the tensor descriptor. These members do not describe the tensor itself, they actually describe some operation (quantization in this case) to be performed with the tensor. I am afraid this does not match the design of the MIOpen API that we have for now.

(2) Another question is when the quantization should be performed. If I understand correctly from https://github.com/ROCmSoftwarePlatform/MIOpen/pull/1625#discussion_r1095897476, this should happen after convolution is computed, right? (please correct me if I am wrong)

Taking all this into account, I think I worth moving INT8 QNT data members to the convolution descriptor.
Note that (if I understand the intent correctly) this is similar to fusing convolution with INT8 quantization. Maybe some different API design approach should be used.
Last but not least -- does INT8 QNT implies allocating memory for a new quantized INT8 tensor?

Or maybe this is for quantization-aware training (QAT) where the user wants to perform "fake" INT8-quantization on all tensors while staying in FP32 domain?

And these can be reused to test CK QNT kernels. But some host side implementation is still necessary

@iq136boy This seems to be a very reasonable comment, could you follow-up on this point? In you summarized 3-part, I don't see this point.

Taking all this into account, I think I worth moving INT8 QNT data members to the convolution descriptor.

@atamazov  Sounds more reasonable than the existing tensor.hpp, thanks for your suggestion.

does INT8 QNT implies allocating memory for a new quantized INT8 tensor?

According to my understanding, it will not be a newly allocated memory for int8, but rather we replace the int32 output tensor as a int8 output tensor.
But your comments reminded me about another thing: Both bias and scale are coming in as host vectors. It may need to be copied to be device tensors passed to the kernel. (As kernel will need and dereference those data at compute time)

@iq136boy @JehandadKhan What is required length of bias/scale used with weights tensor? (C*K) or... ?

All, please look at #2045. AFAICS this PR has been written with something like (60.10) in mind.

Hi @atamazov, I would adjust the APIs based on your comments. I am now modified the quantization solver based on the discussion of last Friday. @JehandadKhan can give you some latest update of the discussion that we did on last Friday.

I highly recommend implementing (60.10.20) from #2045.

@atamazov I would discuss with @JehandadKhan about this and get back to asap.

@iq136boy @JehandadKhan What is required length of bias/scale used with weights tensor? (C*K) or... ?

I think it should be K. @JehandadKhan correct me if it is not.

@jerryyin Based on the meeting last Friday, this concers will be addressed in the new APIs and new fusion conv quantization solvers. I am current working on the solver as requested.

Or maybe this feature is for quantization-aware training (QAT) where the user wants to perform "fake" INT8-quantization on all tensors while staying in FP32 domain?
UPDATE: NO, this is for inference only for now.

Yes, correct. Based on the meeting on last Friday. It is for inference only.

@iq136boy I have dismissed my review after last Friday meeting. I'm assuming you will drop API change and instead focus on fusion plan side changes. I will abstain myself from reviewing due to my unfamiliarity with fusion side of world.

@jerryyin It's a pity my friend.

@iq136boy I have dismissed my review after last Friday meeting. I'm assuming you will drop API change and instead focus on fusion plan side changes. I will abstain myself from reviewing due to my unfamiliarity with fusion side of world.

@jerryyin Yes. I am current focusing on the fusion plan solver implementation base on the discussion on Friday's meeting.

@iq136boy @JehandadKhan Please note that regardless of the API used, we have to analyze the strategy of allocating/passing bias and scale (see https://github.com/ROCmSoftwarePlatform/MIOpen/issues/2045#issuecomment-1483409134 and below) and clearly specify the approach we are going to implement (either (60.10), (60.20), (60.30) or something else)

@iq136boy It looks like this PR is not going to make it in ROCm 5.6, if you agree, please update the milestone

Closing since it has been dormant for a while, lets revisit this when other more urgent issues are addressed.


Allow encoding bytes as Bytes

Right now, bytes are encoded as  Vec<u8>. It would be nice if there were an option to encode them as Bytes instead.
This would make sending multiple messages containing the same blob more efficient. Consider replicating a raft log, where each entry in the log is a blob. This blob needs to be sent to all the participants in the cluster. With vec, I need to clone the same blob n times, but Bytes being reference counted, there is no need to have many copies of the same data.
I wouldn't mind it being a feature, thus forcing all bytes to be encoded into Bytes when enabled, but maybe a

my bad I just found out it was already possible! https://docs.rs/prost-build/latest/prost_build/struct.Config.html#method.bytes


Fix typos in Catalan

In Catalan, we generally write J before A, O, or U, and G before E, or I. The rule applies in this case.

Great, thank you!


Flatbuffer definitions not committed

Can the definitions for the flatbuffers be committed to the repo? Thanks!

See messages/tesla

Hey Aaron, maybe I’m looking in the wrong place but is there a flatbuffers schema file which is used to autogen that go code?
https://flatbuffers.dev/flatbuffers_guide_writing_schema.html
I’ve also never worked with flatbuffers before so if that’s not how this works sorry for bugging :)


[BLAS,RNG,LAPACK] Add examples with CMake

Description
This PR adds examples in blas, lapack, rng domains.
Please refer to new README for examples for description and test output
Fixes issue #148
Checklist
All Submissions

[x] Do all unit tests pass locally? Attach a log.
[x] Have you formatted the code using clang-format?

New features

[x] Have you provided motivation for adding a new feature?
[x] Have you added relevant tests?

Logs:
llvm_blas.txt
dpcpp_blas.txt
llvm_lapack.txt
dpcpp_lapack.txt : 6 CPU unit tests failed
llvm_rng.txt
dpcpp_rng.txt
Re-ran ctest with just examples after new commits: (all passed)
example_dpcpp_blas.txt
example_dpcpp_lapack.txt
example_dpcpp_rng.txt
example_llvm_blas.txt
example_llvm_lapack.txt
example_llvm_rng.txt

I suggest aligning them alphabetically , as LLVM styling does. And cstdlib is needed for std::exit

Good catch. Updated in 4f77f56

Looks really good! There are a few grammar/typo fixes to be made and a couple questions to answer, but otherwise LGTM. Thanks!

Thanks Sarah for catching them! Addressed in the latest commits and I will mark the comments as resolved

Thanks for the PR and taking care of all the feedback, Approved (pending Windows testing)

Windows testing has passed, except that we discovered one issue when running lapack example on Windows with GPU (seems to be compiler issue, will open a issue after some initial investigation)

Thanks for the PR and taking care of all the feedback, Approved (pending Windows testing)

Windows testing has passed, except that we discovered one issue when running lapack example on Windows with GPU (seems to be compiler issue, will open a issue after some initial investigation)

Curious, does the functional test for the same API also fail on GPU/Windows?

Thanks for the PR and taking care of all the feedback, Approved (pending Windows testing)

Windows testing has passed, except that we discovered one issue when running lapack example on Windows with GPU (seems to be compiler issue, will open a issue after some initial investigation)

Curious, do the functional test for the same API also fail on GPU/Windows?

Functional test for getrs passes on GPU/Windows, but it calls reference::getrf, instead of oneapi::mkl::lapack::getrf, before calling oneapi::mkl::lapack::getrs. After I changed functional test to use both getrf and getrs from oneapi, I see the same error

Thanks for the PR and taking care of all the feedback, Approved (pending Windows testing)

Windows testing has passed, except that we discovered one issue when running lapack example on Windows with GPU (seems to be compiler issue, will open a issue after some initial investigation)

Curious, do the functional test for the same API also fail on GPU/Windows?

Functional test for getrs passes on GPU/Windows, but it calls reference::getrf, instead of oneapi::mkl::lapack::getrf, before calling oneapi::mkl::lapack::getrs. After I changed functional test to use both getrf and getrs from oneapi, I see the same error

Thanks for checking. So, not an issue with examples but with oneMKL library? @ericlars Do you have any feedback on this?

@mmeterel  this is similar to one bug we observed some time ago. Like https://github.com/intel/llvm/pull/4409


feat: Using cache to list/get resource

What this PR does / why we need it:
Add your description
Which issue(s) this PR is related to (optional, link to 3rd issue(s)):
Fixes https://github.com/kleveross/klever-model-registry/issues/29
Reference to #

Special notes for your reviewer:
/cc @your-reviewer

Release note:

NONE

/cc @gaocegege

ping @gaocegege


new WindowMock() is not a constructor

Hi @sbstnmsch,
I search a lib to mock window and document object into a Webpack config file and I found your lib.
My webpack file is write into Javascript ES5, like below :
const path = require('path');
const webpack = require('webpack');
const WindowMock = require('window-mock');

const fakeWindow = new WindowMock();
...

new webpack.DefinePlugin({
   window: fakeWindow,
   document: fakeWindow.document,
    location: JSON.stringify({
      protocol: 'https',
      host: `localhost`
  })
})

I set my constant fakeWindow as your example into README : var windowMock = new WindowMock(); but I keep a error on build: TypeError: WindowMock is not a constructor
Environments :
"webpack": "^4.20.2",
"window-mock": "^0.0.13"

Hi,
When looking into the code WindowMock is exported as exports.default = WindowMock;.
In ES6 it is interpreted as a named export, so in order to access the default export you need to:
const WindowMock = require('window-mock').default;
Hope it helps.

@khylias sorry I completely missed this issue. And thanks to @teef for clarification!


Why /usr/src/mb?

I don't have the answer, just asking. Why /usr/src/mb rather than /usr/local/mb or even /opt?
mkdir /usr/src/mb

https://github.com/DoSomething/mb-docker/blob/master/mbc/Dockerfile#L13
Reference

What is the difference between /opt and /usr/local?
http://unix.stackexchange.com/a/11552

I think I got the idea from here thought it's common for all docker containers. Let me check how other official containers do.

Looks like Java container suggest the same approach: https://hub.docker.com/_/java/

And python:
These images include multiple ONBUILD triggers, which should be all you need to bootstrap most applications. The build will COPY a requirements.txt file, RUN pip install on said file, and then copy the current directory into /usr/src/app.

And php:
COPY . /usr/src/myapp

I think now we can close this one.


Add Dockerfile and update README

cc: @MichaelSimons @dleeapho

How does this source: https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-ubuntu-x64.latest.deb compare with the releases in https://apt-mo.trafficmanager.net/repos/dotnet?

A couple implementation notes:

We will switch to use the aka.ms link when it is available.
The dpkg command cannot install dependencies. So, the Dockerfile treats errors from that command as warnings via the --force-depends option, and then invokes apt-get -f -y install to install the dependencies.

:+1:
@colemickens
https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-ubuntu-x64.latest.deb
will currently map to the latest "dotnet" package available via the feed. Publishing to that feed has some lead time though so there will be a period where it's ahead.

Changing the download link from HTTPS to HTTP (aka.ms) seems like a bad idea (or I'm not sure how it adds any value).

@brthor Thanks for the info.

I've submitted another commit with some minor changes responding to comments here. I'll squash them into one commit before merging.

@colemickens The purpose of using aka.ms links is to add a layer of abstraction in the contract between .NET CLI and this Docker repo regarding the hosting of the CLI build artifacts. This way, if the CLI ever makes a breaking change to where artifacts are hosted, then the aka.ms links can be updated rather than the Dockerfile needing to be updated.
What are the risks of using an aka.ms URL that uses HTTP?  My understanding is that it would redirect to an HTTPS link, so I think the actual download would still use HTTPS.  I could be mistaken, though.

As a developer, I really, really don't want to see a link shortener in a place like this. The first thing people are going to do when they see the Dockerfile is resolve the link to see where they're randomly pulling DEB packages from to install. It just definitely feels off from what I would expect outside of MS projects. I don't know of any other projects that install DEBs from non-apt-repos, period, let alone via a non-https link shortener.
In my opinion, this is the wrong place to be worried about a contract. If there really needs to be a layer of indirection then it should be the use of a CNAME on top of the apt-mo.trafficmanager.net domain name. That way it can you could stop publishing to apt-mo entirely, publish to a new repo, and then update the CNAME to point at the new repo location.
If the primary apt repo stops being published to... a lot more than this one Dockerfile will be affected. Literally anyone who has installed dotnet via apt will just simply stop receiving updates... the CNAME would prevent this from ever being an issue.

(The risk is that someone can intercept the aka.ms http call and return a 302 to anywhere. Like a backdoored DEB, or something. Probably not a huge risk since these will be hopefully be built by some CI infrastructure and pushed to Docker Hub where most people will pull directly, but I still think that the CNAME is a much better choice for indirection/contract concerns).

Can't you just use a https url for aka.ms? It appear to support https, but maybe I'm missing something.
Agree that a http url (even if it's just a redirect) is very bad.

My mistake, last I'd heard it still didn't work with HTTPS properly. Still, this sort of redirection is not something done by other OSS projects and won't solve this general problem of a moving APT repo for people who are actually installing via apt on their development machines and want updates. Using a CNAME gets you everything aka.ms does, but solves the problem for more people.

@colemickens The aka.ms link is not used to point to the apt repo but to the artifacts generated by the cli build which then get uploaded to the repo. The layout, location, and other details of those artifacts are implementation details of our build and this layer of indirection shields the dockerfile from those details.
We want to update this dockerfile immediately after the dotnet cli build finishes, and generates a new .deb package but our repo currently has a long (1 - ? hours) lead time after a package is added to it's queue.
For that reason we are using the direct link to the build artifact rather than the repo when this docker build is triggered.

:shipit:

:shipit:

Re the aka.ms redirect. I agree that it isn't in keeping with the best practice that Dockerfiles should be as transparent as possible. How often is the CLI build artifact location going change anyway? If we need to change it in the Dockerfile, at least we are in control of that directly. I say we scrap the aka.ms redirection.

@dleeapho and I chatted offline. The target of the aka link changes with each build of the CLI repo.


This is wrong

sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
sudo apt-add-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 5634d572-0020-808b-693a-13addc8861d9
Version Independent ID: 136bab7d-d4d1-1e82-ba89-be2020bc784b
Content: Ubuntu: Install SQL Server on Linux - SQL Server
Content Source: docs/linux/quickstart-install-connect-ubuntu.md
Service: sql
Sub-service: linux
GitHub Login: @VanMSFT
Microsoft Alias: vanto

Hi @ScottRButler - add-apt-repository is the correct command.
https://manpages.ubuntu.com/manpages/trusty/man1/add-apt-repository.1.html
Can you elaborate on why you think the command is incorrect? Thanks.

Hi @ScottRButler - add-apt-repository is the correct command.
https://manpages.ubuntu.com/manpages/trusty/man1/add-apt-repository.1.html
Can you elaborate on why you think the command is incorrect? Thanks.

Oddly enough, when I tried it yesterday it didn't seem to work but apt-add-repository did. I just tried it again on the same machine and it worked fine. Apparently both versions work.
My bad. :-)
Although I did need to run this
apt install software-properties-common
before I could run apt-add-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
--Scott

Thanks for the follow-up, Scott!


Menu/CMS addon?

Will there be a feature to add external links, as menu options, when a user is logged in? It would be nice to allow the user to access their hosting control panel from within their boxbilling account. Also, the previous release of boxbilling had a cms graphical page layout editor that allowed moving the home page cells around in a different order and editing their links. Will that also be a feature in this upgrade?

Will there be a feature to add external links, as menu options, when a user is logged in?

This is done by extending existing theme. For example if you want to add new link to existing theme you can create new one which extends existing theme. It can be done with any existing theme.
Do the following:

Create new empty folder in bb-themes/my-theme
Copy bb-themes/boxbilling/manifest.json to bb-themes/my-theme/manifest.json. This step will enable theme management in admin area.
Modify manifest.json with your details. Add new line to manifest.json: "extends": "boxbiling" so your file might look like:

{
    "name": "My Theme",
    "version": "1.0.0",
    "description": "Theme description",
    "icon": "icon.png",
    "author": "Your Name",
    "author_url": "http://github.com/me/my-theme",
    "extends": "boxbilling"
}

Now that you have created new theme, you can override any html located in boxbilling (the one you have defined) theme. Create new empty folder bb-themes/my-theme/html
Copy partial_menu.phtml (in your case, because you are modifying menu) from bb-themes/boxbilling/html/partial_menu.phtml to bb-themes/my-theme/html/partial_menu.phtml
Add, move, delete links in the file you have just copied by your needs.

You can alter any view in BoxBilling with same technique. Also you do not break existing theme. Even after BoxBilling update, your theme will not be touched.
More information at creating and editing BoxBilling themes you can read at http://www.boxbilling.com/docs/

It would be nice to allow the user to access their hosting control panel from within their boxbilling account.

Your clients can control hosting accounts from client area, once hosting order is activated. You can see that at http://demo.boxbilling.com/ just order new hosting package and activate it in admin area.

Also, the previous release of boxbilling had a cms graphical page layout editor that allowed moving the home page cells around in a different order and editing their links. Will that also be a feature in this upgrade?

This feature is deprecated in favor of theme extending.


[bug]bool parameter,  the default is true, always true,Cannot be controlled by parameters

bool parameter,
add means true
not add means false
if the default is true, now always true
Cannot be controlled by parameters

Incorrect. There are two options:
--flag=false

Or if you add negatable:"" as a tag you can do:
--no-flag


Update.json not recognised in install directory

My Setup

Operating System: Windows 10
App Version: 2.9, 2.10.1

[x] I have tested with the latest version
[x] I can simulate the issue easily

Description
I'm trying to disable update notifications using the update.json file with:
{  "autoUpdate": false }
This works in the appdata folder but not in the install directory.
I've tried it in both the root folder and resources folder but neither work.

Same for me. This feature would be great for my deployment. We are using Rocketchat in an virtualized enviroment and users cannot update the client on their own.

Thanks for the feedback, it should be an easy fix since we already do that for the servers.json file so if anyone wants to give it a try, PRs welcome.

Can this also be made to work for MacOS? Using #523, #449, #603, and #822 as rough guides, and my own installation, I placed { "autoUpdate": false } in an update-info.json file at ~/Library/Application Support/Rocket.Chat/__update__/update-info.json but was still greeted with an update dialog on first open (to 2.17.0 which does not open on MacOS currently.)
Happy to open another Issue if it's better!

Please test if the problem persists with our latest release. I will be closing the issue but if there is any problem yet, we will open it again.


Chapter 7 build errors

Chapter 7 will not build for me... I looked at if for quite a while this afternoon and I could not see/find the problem
========

There was a package missing from the MyBlog.Data-project.
Thanks for letting me know, I have added it now, please try again.


resolve dependency conflict by updating brick/varexporter to ^0.5.0

Resolves issue #96

It would be great if we can get this merged .. ..

Thank you @jonasfrisell


update forms.py

Creating class for Select2MultipleTagWidget and correcting class "Select2TagWidget" to create only one tag.

Codecov Report

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

@@          Coverage Diff          @@
##           master   #555   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           2      2
  Lines           8      8
=====================================
  Hits            8      8

Continue to review full report at Codecov.

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

Codecov Report

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

@@          Coverage Diff          @@
##           master   #555   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           2      2
  Lines           8      8
=====================================
  Hits            8      8

Continue to review full report at Codecov.

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

This repo has moved, please point your PR to https://github.com/codingjoe/django-select2 Thanks!


RadListView not recycling items if they are custom components

Environment

CLI: 8.3.20
NativeScript-Angular:8.0.1
Angular:8.2.14

Describe the bug
The problem I have is that the RadListView is not recycling cells well when the data defined is a child component. The same items are repeated instead of recycling them and adding the new values
HTML
  <FlexboxLayout flexDirection="column">
      <StackLayout orientation="vertical" tkExampleTitle tkToggleNavButton padding="0 11">
        <RadListView [items]="items" pullToRefresh="true" (pullToRefreshInitiated)="onPullToRefreshInitiated($event)"
          loadOnDemandMode="Auto" (loadMoreDataRequested)="onLoadMoreItemsRequested($event)"
          [height]="headers.total*320">
          <ng-template tkListItemTemplate let-item="item">
            <FlexboxLayout flexDirection="row" margin="5">
              <app-item [item]="item" [releated_products]="false"></app-item>
            </FlexboxLayout>
          </ng-template>
          <ListViewGridLayout tkListViewLayout scrollDirection="Vertical" itemHeight="320" spanCount="2">
          </ListViewGridLayout>
        </RadListView>
      </StackLayout>
    </FlexboxLayout>

@RomanYopapp if possible please provide a Playground demo.

Here is a video that shows how the same items are repeated, I hope it helps you. It shows a total of 34 items which is what the api returns to me.
See that the item with the name "Powerade Mi primer" is repeated more than once.
video.mov.zip


trinket-pro support

adds support to ravedude for boards without serial console
pins anyhow for ravedude on version that works on rust 2021-01-07
adds blink example for trinket-pro

tested on 5V board, but think should work on 3V as well. Have not verified all pin names yet.

The trinket-pro doesn't have a Serial-to-Usb, see slight refactor of Board in ravedude for how I solve it.

BTW, once this PR is merged, you might also be interested in adding the trinket-pro to https://github.com/Rahix/avr-hal-template as well :)

Please take another look.

Thanks, a pleasure to work with you.
lør. 10. jul. 2021, 10:11 skrev Rahix @.***>:

Merged #189 https://github.com/Rahix/avr-hal/pull/189 into next.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Rahix/avr-hal/pull/189#event-5002992288, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAN3626K24VATXQ6G44CZLTW76DJANCNFSM5ABIEQ3A
.


How to solve format file ?

only save file to auto generate this format.

Thanks for reaching out!
We require the template to be filled out on all new issues and pull requests. We do this so that we can be certain we have all the information we need to address your submission efficiently. This allows the maintainers to spend more time fixing bugs, implementing enhancements, and reviewing and merging pull requests.
Thanks for understanding and meeting us half way :grinning:

Additionally, if you have a question about Atom there are a lot of resources you can use, check out:

User Documentation — The Atom Flight Manual
Developer Documentation — Atom API Documentation
FAQ — The Atom FAQ on Discuss
Message Board — Discuss, the official Atom and Electron message board
Chat — Join the Atom Slack team

On Discuss and in the Atom Slack team, there are a bunch of helpful community members that should be willing to point you in the right direction.


test(streaming): disable tpch q20

What's changed and what's your intention?
Main CI failing on this. Fix the bug later.
Checklist

[x] I have written necessary docs and comments
[x] I have added necessary unit tests and integration tests

Refer to a related PR or issue link (optional)

I can't reproduce locally at all. I tried release profile as well.

Please also increase the timeout.

I reproduced locally on release profile but it is sporadic. Nothing shows up in the logs. I'll try to scrutinize the failure case. But it would be helpful to see the execution trace and plan.

It's probably noting failing because of any bugs in hash_join. @skyzh is suspecting a known issue #2219.


[FIX] demo link in README_zh.md invalid

The link https://api.choerodon.com.cn/oauth/login URL in README_zh.md is invalid,  use the correct link to replace it.

Thanks for your pull request. It's actually a mistake. And the correct url for 30-days trial is Choerodon Register. Now if you commit with this url, I am willing to merge it. Thanks again.

done

Thanks. Merged.


Fix observ msrpoplex

Second part to fixing Observations with Msrpoplex. Adds and removes OBSERV boxes based on the MSRPOPL and MSRPOPLEX.

This is a fix for https://jira.mitre.org/browse/BONNIE-406


feat: m

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


get_next() doesn't block mapped function for datasets made from a generator

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Amazon Linux AMI
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): source
TensorFlow version (use command below): 2.0.0-beta0
Python version: 3.6.6
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source): 7.2.1
CUDA/cuDNN version: V9.0.176
GPU model and memory:

Describe the current behavior
I am generating a dataset using from_dataset that involves copying and decrypting data at read time, which takes some time to process. Once the files are copied the filenames are yielded by the generator function so they can be read in a reading function that I am trying to map. However, the reading code doesn't get blocked by the copy operation, and tries to operate on garbage data containing args_0:0 before the generator function has actually run and yielded a filename.
Additionally, when I add additional non-tensorflow code inside of my mapped function, that code only gets executed the first time it is called. This might be me not understanding the intended behavior of the map function, but making it so that file reads can happen correctly in a map function would be useful in cases like this.
Describe the expected behavior
The code in the function passed as an argument to .map() should not be run until the generator has yielded a value for it to operate on, or an input argument for map allowing this behavior to be specified should be added. If this is actually the intended behavior, that should be made more clear in the documentation for .map()
Code to reproduce the issue
import tensorflow as tf
import time

def process(x):
    print(x)
    print("test")
    return x+1

def get_next_batch_sleep():
    while True:
        time.sleep(10)
        yield(1)

ds = tf.data.Dataset.from_generator(get_next_batch_sleep,output_types=(tf.int64))
ds = ds.map(process)
it = ds.make_one_shot_iterator()
for i in range(5):
    print(it.get_next())

This will immediately output
Tensor("args_0:0", dtype=int64)
test

And then output every 10 seconds
tf.Tensor(2, shape=(), dtype=int64)

I have found the information about tf.py_function() so this is not a bug.
If anyone in the future has this problem, you need to wrap all non-tensorflow functions in your map() call using py_function. Also, there's a tf.print() function that puts the print in the compute graph.
So, the correct way to write process() is either
def process(x):
    tf.py_function(print,[x],())
    tf.py_function(print,["test"],())
    return x+1

or
def process(x):
    tf.print(x)
    tf.print("test")
    return x+1


Scope probe stuck

A customer reported two nodes missing; the Scope probe was running but not sending reports.
The lower-level hang is reported at https://github.com/weaveworks/tcptracer-bpf/issues/62
At a higher level, the loop in Probe.report() will hang if any of the sub-probes hangs, and nothing useful will happen after that.
We could perhaps arrange a top-level watchdog timer to exit the whole process in that event.  Under Kubernetes, etc., it would get restarted.

Somewhat related: #2001


Helm 2 15 test compat 2.14

This is juste a fake PR based on https://github.com/elastic/helm-charts/pull/338 to ensure that changes made for 2.15 support are still compatible with 2.14.3

[ ] Chart version not bumped (the versions are all bumped and released at the same time)
[ ] README.md updated with any new values or changes
[ ] Updated template tests in ${CHART}/tests/*.py
[ ] Updated integration tests in ${CHART}/examples/*/test/goss.yaml

All tests pass with Helm 2.14.3 so I'm closing this PR


what's version fo cuda and pytorch

i run the aishell example(transducer)  and use torch1.4+cuda10.1 or torch1.5+cuda10.1, there are some error as follows：
torch1.4+cuda10.1:
/opt/conda/conda-bld/pytorch_1579022060824/work/aten/src/ATen/native/cudnn/RNN.cpp:1266: UserWarning: RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters().
/opt/conda/conda-bld/pytorch_1579022060824/work/aten/src/ATen/native/cudnn/RNN.cpp:1266: UserWarning: RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters().
/opt/conda/conda-bld/pytorch_1579022060824/work/aten/src/ATen/native/cudnn/RNN.cpp:1266: UserWarning: RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters().
/opt/conda/conda-bld/pytorch_1579022060824/work/aten/src/ATen/native/cudnn/RNN.cpp:1266: UserWarning: RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters().
/opt/conda/conda-bld/pytorch_1579022060824/work/aten/src/ATen/native/cudnn/RNN.cpp:1266: UserWarning: RNN module weights are not part of single contiguous chunk of memory. This means they need to be compacted at every call, possibly greatly increasing memory usage. To compact weights again call flatten_parameters().
40%|██████████████████████████████████████████████████████████████████████████████▋                                                                                | 144000/360293 [18:43<32:16, 111.68it/s]Traceback (most recent call last):
File "/search/speech/jingbojun/exp/neural_sp/examples/aishell/s5/../../../neural_sp/bin/asr/train.py", line 534, in
save_path = pr.runcall(main)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/cProfile.py", line 121, in runcall
return func(*args, **kw)
File "/search/speech/jingbojun/exp/neural_sp/examples/aishell/s5/../../../neural_sp/bin/asr/train.py", line 379, in main
loss, observation = model(batch_dev, task=task, is_eval=True)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/modules/module.py", line 532, in call
result = self.forward(*input, **kwargs)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 152, in forward
outputs = self.parallel_apply(replicas, inputs, kwargs)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 162, in parallel_apply
return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)])
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 85, in parallel_apply
output.reraise()
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/_utils.py", line 394, in reraise
raise self.exc_type(msg)
ValueError: Caught ValueError in replica 0 on device 0.
Original Traceback (most recent call last):
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 60, in _worker
output = module(*input, **kwargs)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/modules/module.py", line 532, in call
result = self.forward(*input, **kwargs)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 261, in forward
loss, observation = self._forward(batch, task)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 274, in _forward
eout_dict = self.encode(batch['xs'], 'all')
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 395, in encode
xs = pad_list([np2tensor(x, self.device).float() for x in xs], 0.)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/torch_utils.py", line 68, in pad_list
max_time = max(x.size(0) for x in xs)
ValueError: max() arg is an empty sequence
torch1.5+cuda10.1:
Removed 0 empty utterances
0%|                                                                                | 0/360293 [00:00<?, ?it/s]Traceback (most recent call last):
File "/search/speech/jingbojun/exp/neural_sp/examples/aishell/s5/../../../neural_sp/bin/asr/train.py", line 534, in
save_path = pr.runcall(main)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/cProfile.py", line 121, in runcall
return func(*args, **kw)
File "/search/speech/jingbojun/exp/neural_sp/examples/aishell/s5/../../../neural_sp/bin/asr/train.py", line 338, in main
teacher=teacher, teacher_lm=teacher_lm)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in call
result = self.forward(*input, **kwargs)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 155, in forward
outputs = self.parallel_apply(replicas, inputs, kwargs)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 165, in parallel_apply
return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)])
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 85, in parallel_apply
output.reraise()
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/_utils.py", line 395, in reraise
raise self.exc_type(msg)
StopIteration: Caught StopIteration in replica 0 on device 0.
Original Traceback (most recent call last):
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/parallel/parallel_apply.py", line 60, in _worker
output = module(*input, **kwargs)
File "/search/speech/jingbojun/anaconda3/envs/neural_sp_py37/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in call
result = self.forward(*input, **kwargs)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 264, in forward
loss, observation = self._forward(batch, task, teacher, teacher_lm)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 274, in _forward
eout_dict = self.encode(batch['xs'], 'all')
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 395, in encode
xs = pad_list([np2tensor(x, self.device).float() for x in xs], 0.)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/seq2seq/speech2text.py", line 395, in
xs = pad_list([np2tensor(x, self.device).float() for x in xs], 0.)
File "/search/odin/jingbojun/exp/neural_sp/neural_sp/models/base.py", line 55, in device
return next(self.parameters()).device
StopIteration

@hirofumi0810 hi, what's version of torch and cuda that you are running the example

it's work with torch1.4 when use LAS conf


Feature request: Enhance workflow when dependency error occurs

When a dependency graph error occurs, the error does not give context of where the error is coming from.
We should provide at a minimum the project causing the error's issue.
Implementation

[ ] Add context to graph error to be able to provide where the error comes from.
[ ] Provide project id, maven coordinates of project causing error

This is related to https://github.com/finos/legend-studio/issues/1582


[backend] NFC: unify common elementwise op conversion patterns

This commit moves duplicated elementwise op conversion patterns from the third-party amd and nvidia directories into the common conversion library.

LGTM!


Associate test and staging envs in pipeline

Description
Matching PR for https://github.com/Altinn/app-lib-dotnet/pull/881
Related Issue(s)

N/A

Verification/QA

Manual functionality testing

[ ] I have tested these changes manually
[ ] Creator of the original issue (or service owner) has been contacted for manual testing (or will be contacted when released in alpha)
[x] No testing done/necessary

Automated tests

[ ] Unit test(s) have been added/updated
[ ] Cypress E2E test(s) have been added/updated
[x] No automatic tests are needed here (no functional changes/additions)
[ ] I want someone to help me make some tests

UU/WCAG (follow these guidelines until we have our own)

[ ] I have tested with a screen reader/keyboard navigation/automated wcag validator
[x] No testing done/necessary (no DOM/visual changes)
[ ] I want someone to help me perform accessibility testing

User documentation @ altinn-studio-docs

[ ] Has been added/updated

[x] No functionality has been changed/added, so no documentation is needed
[ ] I will do that later/have created an issue

Support in Altinn Studio

[ ] Issue(s) created for support in Studio

[x] This change/feature does not require any changes to Altinn Studio

Sprint board

[x] The original issue (or this PR itself) has been added to the Team Apps project and to the current sprint board
[ ] I don't have permissions to do that, please help me out

Labels

[x] I have added a kind/* label to this PR for proper release notes grouping
[ ] I don't have permissions to add labels, please help me out

This is not about the build quality at all, but how we track release cadence and other things in the form of DORA metrics. The Swarmia tool we (maybe) will be using to track DORA metrics will track releases to test, staging and prod across all Altinn products, so we agreed that the mapping from preview and RC releases to these respective environments would be the most fitting

I see! :thinking: It might not map exactly to our release procedures, then. I see that lately we've been naming releases rc, and preview, but there's no naming conventions set in stone here. If possible, varying on the 'pre-release' checkbox in github might be a better approach. In other words, I can't think of any practical difference between our rc and preview releases other than their names.

That's been the process thus far, but that is likely going to change. We are working on an ADR for amongst other things the release process, and part of that is trying to communicate practical differences between RC, preview and stable. We have discussed something along these lines:

Production - stable releases, these should be bugfree
RC - these are candidates for a stable release, we consider the feature work for the minor release done and don't expect to make any breaking changes
Preview - work in progress, anything can happen

The reason we wanted RC in the first place is to have a more stable/complete release which could possibly motivate more apps to adopt these versions, while still leaving us some room to stabilize and sanity-check before releasing fully.

I did not see this before merge, but I think this could break the release workflow for preview releases. I added the prod environment to the release workflow in https://github.com/Altinn/app-frontend-react/pull/2550 becuse the secrets needed for the Azure login step was added to the environment secrets for prod. I don't have access to check if secrets have been added for other environments but I would assume it has not


fix screen logic fo ShaderTransition (bug #3143)

Merged in https://github.com/kivy/kivy/pull/6279.


[QUESTION] How to make jsdoc work with es6?

I'm having trouble using jsdoc I get Unexpected token =
I'm using https://github.com/zeit/next.js/ as my framework.

Can you investigate the line causing the error?
The way I do it is by removing comments until I find the one causing the problem. I recommend the same approach.

On master, JSDoc now logs the line and column that caused an error when it's not able to parse a JavaScript file. That should help you track down the error.


Is more than one filesystem supported?

Adding a 2nd <filesystem> element in a windows vm.xml and booting the vm results in only the first filesystem showing up.  The expected result is the second filesystem would show up as a second mapped drive but this isn't happening.
How would multiple filesystems be handled when an -m x: argument is specified on the virtiofs.exe command line?
Soft symlinks don't appear to be handled as expected either, in my test a symlink to a directory in the shared folder shows up as a file not a directory.  This would be a nice workaround if available.  It would enable the administrator to set up a single directory per vm that contains a set of symlinks to the local filesystem and cifs/etc mountpoints.
What's the suggested strategy for setting up multiple host shares to windows guests?

Currently you can share only one folder between a guest and host.
As for the symbolic link question, it seem that you describing an old bug that was already resolved. What version of the virtiofs service are you running?

I'm also interested in sharing multiple folders. Current solution with being able to share only single folder is very limiting.

Please reopen.

Continued in https://github.com/virtio-win/kvm-guest-drivers-windows/issues/590


bddSecurityJobBuilder

I made some changes on the shell command and added some new plugins for bdd-security.

I removed JAVA_HOME on the shell command.


[feature request] send multiple reports if more than 1 mod usernames are mentioned

Is the idea behind this that the mentioning of multiple mods results in multiple reports, thereby increasing the ranking of the content in the Mod Queue when sorting by "Most Reported First"?

Would that be more preferable than a single report containing all mentioned mods?

Resolved by 9450747b5ad6574688f75e16f2b6c23d076b5438
Submitting multiple reports is not possible since only the latest report by a user is ever shown. The report will now list all mentioned moderators instead.


[BUG]: Cannot load the backend on MACOS

Description
When running examples on my MAC notebook, it got the correct path of the native library but failed to load it.
Here's the output of uname -a of my notebook.
Darwin U-0R7TCJJH-2327.local 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:39:46 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T6020 arm64

Its processor is M2 Pro and system is Ventura 13.2.1.
Here's the full logs.
[llama Debug]: Loading library: 'llama'
[llama Info]: Detected OS Platform: 'OSX'
[llama Debug]: Detected OS string: 'osx-arm64'
[llama Debug]: Detected extension string: '.dylib'
[llama Debug]: Detected prefix string: 'lib'
[llama Info]: NativeLibraryConfig Description:
- LibraryName: LLama
- Path: ''
- PreferCuda: True
- PreferredAvxLevel: NoAVX
- AllowFallback: True
- SkipCheck: False
- SearchDirectories and Priorities: { ./ }
[llama Info]: NativeLibraryConfig Description:
- LibraryName: LLama
- Path: ''
- PreferCuda: True
- PreferredAvxLevel: NoAVX
- AllowFallback: True
- SkipCheck: False
- SearchDirectories and Priorities: { ./ }
[llama Debug]: Got relative library path 'runtimes/osx-arm64/native/libllama.dylib' from local with (NativeLibraryName: LLama, UseCuda: False, AvxLevel: None), trying to load it...
[llama Debug]: Found full path file '/Users/liuyaohui/Downloads/llama_test/bin/Debug/net8.0/runtimes/osx-arm64/native/libllama.dylib' for relative path 'runtimes/osx-arm64/native/libllama.dylib'
[llama Info]: Failed Loading '/Users/liuyaohui/Downloads/llama_test/bin/Debug/net8.0/runtimes/osx-arm64/native/libllama.dylib'
[llama Warning]: No library was loaded before calling native apis. This is not an error under netstandard2.0 but needs attention with net6 or higher.
Unhandled exception. System.TypeInitializationException: The type initializer for 'LLama.Native.NativeApi' threw an exception.

Reproduction Steps
Perhaps only I can reproduce it, just run the examples.
Environment & Configuration

Operating system: MACOS (Ventura 13.2.1)
.NET runtime version: .NET 8
LLamaSharp version: 0.13.0
CUDA version (if you are using cuda backend): -
CPU & GPU device: Apple M2 Pro

Known Workarounds
No response

@SignalRT I know little about MAC and have no idea about how to move forward to dig it out now. Could you please give me some suggestions?

@AsakusaRinne, sorry I don't see this before. You should not need anything. Are you trying to run from the master or via nuget packages?


readOnly mode still allows cut/paste in context menus

JSFiddle for repro (reproducible in Chrome, Firefox and Edge)
When a CodeMirror editor is configured as read-only and the user opens a context menu, they can still see the cut and paste options.
It can be misleading since clicking on these items will do nothing.
While inspecting the elements inside the CM editor, I noticed a hidden <textarea> nested under a classless <div> styled with overflow: hidden among other things, right under <div class="CodeMirror cm-s-default">.
If I add the readonly attribute to that <textarea>, the issue seems fixed but could this lead to unwanted side effects?

That's a good idea. Implemented in attached patch. Unfortunately, it doesn't help on Firefox, but there's not a lot the library can do about that.


Accessing particular table element

When using the userModel Schema, how can I access a particular cell of the table?

You'll have to map through the data and add a callback to it before passing the data to the table, or update to the v2 of react-toolbox where table component has been rewritten because of problems like that.


[NetAppFiles]Add 2022-07-01-preview

ARM API Information (Control Plane)
This PR is to address a s360 Completeness issue where the public specs whare missing the preview api-verison 2022-07-01-preview.
Offical SDKs etc will not need to be updated as they are now on api-version 2022-09-01
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Azure 1st Party Service can try out the Shift Left experience to initiate API design review from ADO code repo.  If you are interested, may request engineering support by filling in with the form https://aka.ms/ShiftLeftSupportForm.
Changelog
Add a changelog entry for this PR by answering the following questions:

What's the purpose of the update?

[ ] new service onboarding
[x] new API version
[ ] update existing version for new feature
[x] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.
When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
By default, Azure SDKs of all languages (.NET/Python/Java/JavaScript for both management-plane SDK and data-plane SDK, Go for management-plane SDK only ) MUST be refreshed with/after swagger of new version is published. If you prefer NOT to refresh any specific SDK language upon swagger updates in the current PR, please leave details with justification here.

Contribution checklist (MS Employees Only):

[x] I commit to follow the Breaking Change Policy of "no breaking changes"
[x] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

Applicability: :warning:
If your changes encompass only the following scenarios, you should SKIP this section, as these scenarios do not require ARM review.

Change to data plane APIs
Adding new properties
All removals

Otherwise your PR may be subject to ARM review requirements. Complete the following:

[x] Check this box if any of the following apply to the PR so that the label "ARMReview" and "WaitForARMFeedback" will be added by bot to kick off ARM API Review.  Missing to check this box in the following scenario may result in delays to the ARM manifest review and deployment.

Adding a new service
Adding new API(s)
Adding a new API version
-[ ] To review changes efficiently, ensure you copy the existing version into the new directory structure for first commit and then push new changes, including version updates, in separate commits. You can use OpenAPIHub to initialize the PR for adding a new version. For more details refer to the wiki.

[x] Ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If you have any breaking changes as defined in the Breaking Change Policy, request approval from the Breaking Change Review Board.
Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Additional details on the process and office hours are on the Breaking Change Wiki.
NOTE: To update API(s) in public preview for over 1 year (refer to Retirement of Previews)
Please follow the link to find more details on PR review process.

Hi, @audunn, For review efficiency consideration, when creating a new api version, it is required to place API specs of the base version in the first commit, and push new version updates into successive commits. You can use OpenAPIHub to initialize the PR for adding a new version. For more details refer to the wiki. Or you could onboard API spec pipeline

Hi @audunn ,please take a look for the above comment.
this is a new api version, but your first commit is not copy from the old api version. So there's a tag named "CI-MissingBaseCommit" added.

/azp run


scalable application support

Well, RealWorld example is almost done (code is complete, I need to update readme, create demo and write some tests). So I can finally create PR with improvements which I created while I was working on it.
There are relatively many changes so I'll try to explain them on examples.

Let's look at examples/animation_frame/src/lib.rs:
1. Change:
From:
fn update(msg: Msg, model: &mut Model, orders: &mut Orders<Msg>) {

To:
fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {

Order isn't struct but trait now, so we have to use keyword impl. It's a breaking change but it has advantages which I'll describe later.
2. Change
From:
let cb = Closure::wrap(Box::new(|time| {
    seed::update(Msg::OnAnimationFrame(time));
}) as Box<FnMut(RequestAnimationFrameTime)>);

To:
let (app, msg_mapper) = (orders.clone_app(), orders.msg_mapper());
let cb = Closure::new(move |time| {
    app.update(msg_mapper(Msg::OnAnimationFrame(time)));
});

orders has a new methods -clone_app and msg_mapper. They allow us to send app instance into closures without magic like seed::update or passing it somehow through Model (it was relatively often requested feature). It's possible thanks to impl Orders because it "hides"  App type parameters. So we don't need to derive Serialize & Deserialize and register trigger_update_handler anymore. Note: I also changed Closure::wrap to Closure::new where possible in the whole codebase.
3. Change
From:
enum Msg {
    Init,
...
match msg {
        Msg::Init => {
            orders
                .send_msg(Msg::SetViewportWidth)
                .send_msg(Msg::NextAnimationStep)
                .skip();
        }
...
app.update(Msg::Init);

To:
fn init(_: Url, orders: &mut impl Orders<Msg>) -> Model {
    orders
        .send_msg(Msg::SetViewportWidth)
        .send_msg(Msg::NextAnimationStep);
    Model::default()
}
pub fn render() {
    seed::App::build(init, update, view)

This change removes the need to call app.update and create special handling with Msg::Init. It also allows us to choose the right Model according to Url  so we don't have to create a special default Model for the case "I don't know which page to display yet". It's the second breaking change.

Let's look at examples/server_integration/client/src/lib.rs:
4. Change:
From:
Msg::ExampleA(msg) => {
    *orders = call_update(example_a::update, msg, &mut model.example_a)
    .map_message(Msg::ExampleA);
}

To:
Msg::ExampleA(msg) => {
    example_a::update(msg, &mut model.example_a, &mut orders.proxy(Msg::ExampleA));
}

There is another new method in orders: proxy. It removes boilerplate for plumbing sub-modules and allows us to pass orders instead of creating new ones. So we can pass app instance and effect queue through modules. Note: I've removed helper function call_update - it's the third breaking change.

Let's look at src/routing.rs:
5. Change
From:
// The first character being / indicates a rel link, which is what
// we're intercepting.
// todo: Handle other cases that imply a relative link.
// todo: I think not having anything, eg no http/www implies
// todo rel link as well.

To:
// The first character being / or empty href indicates a rel link, which is what
// we're intercepting.
// @TODO: Resolve it properly, see Elm implementation:
// @TODO: https://github.com/elm/browser/blob/9f52d88b424dd12cab391195d5b090dd4639c3b0/src/Elm/Kernel/Browser.js#L157
...
// @TODO should be empty href ignored?
if !href.is_empty() {
    // Route internally based on href's value
    let url = push_route(Url::from(href));
   update(routes(url));
}

The main goal is to don't refresh browser tab on click the element with empty link (i.e. click on  does nothing.).

Let's look at src/fetch.rs:
6. Change
From:
pub fn new(url: String) -> Self {
...
pub enum FailReason {
    RequestError(RequestError),
    Status(Status),
    DataError(DataError),
}
...
SerdeError(Rc<serde_json::Error>),
...
 T: DeserializeOwned + Debug + 'static

To:
pub fn new(url: impl Into<Cow<'static, str>>) -> Self {     // <--- A
...
// @TODO use https://github.com/rust-lang-nursery/failure?
pub enum FailReason<T> {
    RequestError(RequestError, FetchObject<T>),   // <--- B
    Status(Status, FetchObject<T>),
    DataError(DataError, FetchObject<T>),
}
...
type Json = String;
SerdeError(Rc<serde_json::Error>, Json),    // <--- C
...
T: DeserializeOwned + 'static,          // <--- D

A - more ergonomic API - you can pass url as a String or &'static str
B - if request fails, you want to know why and get more information or e.g. try another deserializer
C - if deserialization fails, you can try it again with another deserializer
D - more ergonomic API - Debug was needed because of ugly code, fixed
Motivation for B+C:
Example - Server sends either status 200 + expected data (like list of blog articles) or 4xx and list of errors. => So we try to parse response data into articles if the status code is 200 or try to parse errors if code is 400 or at least log problems. It's more comfortable with those changes.
4th breaking change.

Let's look at the RealWorld example, because I haven't written example yet. Realworld's lib.rs:
7. Change
From:
// Nothing - it's a new feature.

To:
#[wasm_bindgen(start)]
pub fn start() {
    seed::App::build(init, update, view)
        .routes(|url| Msg::RouteChanged(url.try_into().ok()))
        .sink(sink)      //  <------- new method
        .finish()
        .run();
}

pub enum GMsg {
    RoutePushed(Route<'static>),
    SessionChanged(Session),
}

fn sink<'a>(g_msg: GMsg, model: &mut Model<'a>, orders: &mut impl Orders<Msg<'static>, GMsg>) {
    if let GMsg::RoutePushed(ref route) = g_msg {
        orders.send_msg(Msg::RouteChanged(Some(route.clone())));
    }
   // or classic `match g_msg` like in `Update` function
   ...

// File: ` seed-rs-realworld/src/route.rs `:
pub fn go_to<Ms: 'static>(route: Route<'static>, orders: &mut impl Orders<Ms, GMsg>) {
    seed::push_route(route.clone());
    orders.send_g_msg(GMsg::RoutePushed(route));
}

It's a new concept for communication among modules. sink it's almost the same like update but you received GMsg ("global message") instead of module's Msg. I'm using it in RealWorld example to notify root module that we want to change page/url (de facto child -> parent communication) or for sending session data into pages (event producer -> event sinks).
How to use it:

create enum GMsg
associate it with Orders in update, init and sink functions (just add 2nd parameter):

&mut impl Orders<Msg, GMsg>  (Note: Default global message is ())

send messages and perform commands with new Orders methods:

orders.send_g_msg(GMsg::Something) or orders.perform_g_cmd(...)

or you can use app instance: app.sink(GMsg::Foo).

Smaller changes:

Fixed macro md.
Changed Closure::wrap to Closure::new except 2 cases in lib.rs: set_interval and set_timeout (Added todo that we should remove them because we are using gloo).
Added dyn everywhere (probably same as PR https://github.com/David-OConnor/seed/pull/188).
Fixed paths in all examples (see for example examples/animation_frame/index.html. (They was failing with non-root path in url).
Fixed default handling for non-existing API in example/server_integration.
Added md! and raw! to examples/server_interaction/src/lib.rs so they are tested.
Fixed typo in Makefile.toml.
Fixed IDE warning by reordering functions in examples/websocket/src/server.rs.
Updated example in Readme.md.

// Rebased on the current master & force-pushed - conflicts resolved.

Looks like a load of improvements, espcecially towards flexiblity with complex projects. Review in prog.

There shouldn't be any hacks. The most "tricky" part for review will be probably orders.rs - just ask if something isn't clear enough so we know where to add more comments / what should be simpler or more readable.
P.S Sorry for bigger PR, I was continuously changing this code during realworld ex. development so it would be impractical to create many smaller PR in progress.

Awesome changes, @MartinKavik.

I'm using very similar patterns in my somewhat large app!
It would be great to reflect the changes here in the documentation page.

A sub-page for how to use the model nesting functionalities (proxy, map_message)
Documenting init
...

Hi there,
I've detected a behavioural change when upgrading from seed 0.3.5 to 0.4.0 and I think it comes from this PR.
It's about the routing.
In previous version, if you directly open URL "https://seed-rs.org/changelog", it shows the changelog (as expected, I guess). But since the upgrade, it goes on the home page whatever the URL entered (you can try on Seed webpage). In order to go to changelog, you need to explicitely navigate from the home page, by clicking the ChangeLog link on the top banner.
I've seen the same change in my app and I found a workaround (inspired by seed-rs-realworld app) :

I have had to defined an init() function, that does :
fn init(url: Url, orders: &mut impl Orders) -> Model {
orders.send_msg(routes(url));
Model::default()
}
Now, the behaviour is as expected (ie as before the upgrade).
Hope this feedback helps.
If needed, I can create an issue.

Appreciated at this!


refactor!: pointcloud_preprocessor prefix package and namespace with autoware

Description
Part of Autoware namespace refactor.
Related links
Parent Issue:

https://github.com/autowarefoundation/autoware/issues/4569

Related PRs:

https://github.com/autowarefoundation/autoware.universe/pull/7983
https://github.com/autowarefoundation/sample_sensor_kit_launch/pull/95
https://github.com/tier4/aip_launcher/pull/257
https://github.com/RobotecAI/awsim_sensor_kit_launch/pull/15

How was this PR tested?
Notes for reviewers
None.
Interface changes
None.

Effects on system behavior
None.

memo: wait for autoware.universe merge first


Partitions waiting to handoff indefinitely

I'm running a cluster with 24 nodes with 1024 partitions
riak_kv_version : <<"2.1.7-226">>
riak version : <<"2.0.5">>
I have 142 partitions waiting to handoff for more than 30 days. There's no ongoing transfer in the cluster.
Under this node<EMAIL_ADDRESS>I can see this error message
<0.30120.441>@riak_core_handoff_sender:start_fold:282 hinted transfer of riak_kv_vnode from<EMAIL_ADDRESS>994791641816054037097625320706298110058774396928 to<EMAIL_ADDRESS>994791641816054037097625320706298110058774396928 failed because of error:{badmatch,{error,closed}} [{riak_core_handoff_sender,start_fold,5,[{file,"src/riak_core_handoff_sender.erl"},{line,132}]}]
<0.9143.441>@riak_core_handoff_sender:start_fold:282 hinted transfer of riak_kv_vnode from<EMAIL_ADDRESS>616571003248974668617179538802181898917346541568 to<EMAIL_ADDRESS>616571003248974668617179538802181898917346541568 failed because of error:{badmatch,{error,closed}} [{riak_core_handoff_sender,start_fold,5,[{file,"src/riak_core_handoff_sender.erl"},{line,132}]}]
When I check the partitions list (riak-admin cluster partitions) I notice that all partitions which are waiting for handoff are marked as secondary. I was expecting all those partitions type to be primary
Any  idea about how to fix this issue?

Given that these are hinted handoffs, I think it would be expected that they are handoffs from secondary partitions (i.e.
There's been a lot of work done in the last few versions to try and improve handoff reliability, as there are a lot of problems with handoff  timeouts, particularly when handoffs are occurring during busy periods or vnodes are particularly large.
In your version, the first thing is probably to reduce the riak_core handoff_acksync_threshold across your cluster.  This reduces the number of batches between acknowledgements.
There may also be value in increasing the riak_core handoff_timeout across the cluster.
There may also be value in increasing the riak_core handoff_receive_vnode_timeout.
These changes can all be made via riak attach and application set_env (which will change for the next handoff).  Also you can add different settings into advanced.config (which will have effect following reboot).
Finally, if you have increased the riak_core handoff_concurrency from the default setting, there may be value in reducing back to the default again.
Monitoring of these handoffs has been improved in recent versions, as working out what exactly is going wrong in older Riak versions is hard.  When a handoff fails, it starts to re-send all the data from the beginning, so if the fallback vnodes were created as part of an extended outage (and are quite large) then continuous failures are possible.
If you are confident that all the data is sufficiently covered in your cluster (due to other replicas and anti-entropy mechanisms), in the worst case scenario you can stop each node in turn and manually delete the fallback vnodes.  Obviously though, it would be more sustainable to find a configuration which will work for future handoffs.

Thanks Martin, I'll try these config changes steps and see who it goes. Will keep you updated.

I did some changes in riak attach and application set_env
and restart riak.
That kicks off the transfer again, but now I'm seing a different error in riak errors logs
2023-05-03 01:34:09.787 [error] <0.304.0>@riak_core_ring:check_tainted:263 Error: riak_core_ring/ring_ready called on tainted ring
2023-05-03 01:34:09.787 [error] <0.304.0>@riak_core_ring:check_tainted:263 Error: riak_core_ring/ring_ready called on tainted ring

The transfer seems to be in progress,  but I don't understand how to fix this  riak_core_ring:check_tainted error
I need your help again, thanks

I don't know really.  I believe the tainted flag was added, so that before a read-only cache of the ring is exported (using mochiglobal), it is marked as tainted so that it can be confirmed that such a cached ring is never mistakenly used the version to make an updated ring - i.e. some code updates the ring from get_raw_ring not get_my_ring.
So the tainted state, and the error messages were a check to make sure this never happens.  But clearly, in some rare circumstance it can.  Because of this the unset_tainted function was added so that this could be fixed from remote_console ... but that isn't available in older versions of Riak.
If the error logs don't go away, there might be another method to clear this status.  I don't think it will work, but perhaps riak_core_ring_manager:force_update/0 might be worth a shot.  You could compile a new version of the riak_core_ring module with the exported unset_tainted function added, and hot code load it, then use the function to unset.


Upgrade docsplit and fix race condition with after_commit callback

Update the gem to use docsplit 0.7.6. OpenOffice is no longer supported in the latest docsplit 0.7.6 gem which is good because we directly call LibreOffice instead of JODConverter.jar to convert doc/docx files to image and it is faster than OpenOffice because LibreOffice does lazy-load that makes subsequent conversion of the same file, faster.

Fix a race condition which is a problem documented here: https://github.com/mperham/sidekiq/wiki/FAQ#why-am-i-seeing-a-lot-of-cant-find-modelname-with-id12345-errors-with-sidekiq.
This fixes the problem of having Nil error when docsplit_images tries to convert a document and as it tries query the id in DB (as per perform_async) but since sidekiq runs faster than the DB insert due to transactions and results in Nil error since the new record with the id is not seen by sidekiq.

more info on transactions and after_commit here

after_save works differently in rails 5 and the recommended way is to use after_commit.
However, i have created a condition to be backwards-compatible with Rails 4 (which the previous commit with only after_commit which breaks in Rails 4)


Cmake support

I modified a lot the main CMakeLists.txt file. What do you think?

Thanks so much for taking the time and interest in improving the library! I'll try to test and merge tomorrow!

It'd be great if we could output the built library to bin/ as well!

Hey @boryssmejda perhaps this will reveal how unfamiliar with cmake I am but here's my comments / questions:
What is the baseline level of cmake functionality for #3's goal of supporting cmake by the library? Looks like this would be replacing the makefile, is there a way to have both? Currently the makefile will build both static and dynamic libraries, would that be possible to add to this?
Thanks again!

When it comes to building the shared and/or static version of the library, I think that the end user should decide if it wants to use the static or shared version. It could choose either static or shared by turning off or on the option flag that are available in cmake. The flag/option would be set when calling cmake for the project. I will add this flag/option to the pull request. There is a universal variable to choose if the user wants to build static or shared library: https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
But I think that we should have a unique flag so that the client can decide that if he has like 100 libraries and just this one particular should be shared it can do so by just setting a proper variable to true.
When it comes to the issue of keeping a makefile, I would delete it, because there is also a ninja generator and in some projects people prefer ninja that can be generated by CMake. CMake is just a built system generator and it can generate different build systems like makefiles for example. IMO, cmake provides clients of the library with the flexibility of choosing their prefered build system that they want to use.

It'd be great if we could output the built library to bin/ as well!

This touches the issue of creating a package out of the library files. The package could help the clients of the library find it and link with it. I will add this point of creating a package from the library when I will upload the corrected pull request.
I will have a look at other open source libraries and check how they package their binary artifacts and public header files so that the clients can easily integrate the library into their own projects.
Till the end of the week I will try to deliver the improved pull request :)

Thanks @boryssmejda for the explanation and for the work! Goes to show how unfamiliar I am with cmake at the moment :P I'll go ahead and merge the current changes


[#4022] Add support for IP_FREEBIND when using native transport

Motivation:
IP_FREEBIND allows to bind to addresses without the address up yet or even the interface configured yet.
Modifications:
Add support for IP_FREEBIND.
Result:
It's now possible to use IP_FREEBIND when using the native epoll transport.

@burtonator  please check

Awesome.  I'm a week or two away from needing this but I think this is a good step forward. I need to figure out all the steps to allow binding to the outbound IPs this way. I'l follow up once I get a bit closer. Thanks!

Cherry-picked into 4.0 (f3f94bed92f896b10b95e7e87a570145554a54dd), 4.1 (f65717be827cc8d141daafc96cc6b8e11028aa92) and master<PHONE_NUMBER>462431ac2f4a001fbd2fa1ae6e5330)


CVE-2024-24791 in v4.16.3

Describe what happened
Our scanning jobs have identified a new CVE "CVE-2024-24791" in the pulumi-std v1.7.2. This is an issue with the Go standard library net/http.
Sample program
N/A
Log output
Scan result
{
      "Target": "home/sl/.pulumi/plugins/resource-random-v4.16.3/pulumi-resource-random",
      "Class": "lang-pkgs",
      "Type": "gobinary",
      "Vulnerabilities": [
        {
          "VulnerabilityID": "CVE-2024-24791",
          "PkgName": "stdlib",
          "PkgIdentifier": {
            "PURL"<EMAIL_ADDRESS>            "UID": "8a43d8dd3a95d65b"
          },
          "InstalledVersion": "1.21.11",
          "FixedVersion": "1.21.12, 1.22.5",
          "Status": "fixed",
          "Layer": {
            "Digest": "sha256:12b42ef700cd619bf6b070c29488e45d2706debd29cc072b6c70cfc476aba9bb",
            "DiffID": "sha256:c01c35830eba6aa5d25006afdecebf6a3ed84701acf2ab573180bd5dc488c3c0"
          },
          "PrimaryURL": "https://avd.aquasec.com/nvd/cve-2024-24791",
          "DataSource": {
            "ID": "govulndb",
            "Name": "The Go Vulnerability Database",
            "URL": "https://pkg.go.dev/vuln/"
          },
          "Description": "The net/http HTTP/1.1 client mishandled the case where a server responds to a request with an \"Expect: 100-continue\" header with a non-informational (200 or higher) status. This mishandling could leave a client connection in an invalid state, where the next request sent on the connection will fail. An attacker sending a request to a net/http/httputil.ReverseProxy proxy can exploit this mishandling to cause a denial of service by sending \"Expect: 100-continue\" requests which elicit a non-informational response from the backend. Each such request leaves the proxy with an invalid connection, and causes one subsequent request using that connection to fail.",
          "Severity": "UNKNOWN",
          "References": [
            "https://go.dev/cl/591255",
            "https://go.dev/issue/67555",
            "https://groups.google.com/g/golang-dev/c/t0rK-qHBqzY/m/6MMoAZkMAgAJ",
            "https://pkg.go.dev/vuln/GO-2024-2963"
          ],
          "PublishedDate": "2024-07-02T22:15:04.833Z",
          "LastModifiedDate": "2024-07-02T22:15:04.833Z"
        }
      ]
    }

Affected Resource(s)
No response
Output of pulumi about
Using pulumi v3.122.0 and pulumi-random v4.16.3
Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

Thanks for reporting.
This should get addressed once https://github.com/pulumi/pulumi-terraform-bridge/pull/2160 gets picked up here.

@VenelinMartinov Can I get an ETA on this ticket?

This should get released this week. Do you have a specific reason you need this? Seems unlikely this actually affects the library. I am not aware of any uses of a reverse proxy here.

It's just that our scans are failing with the CVE.


Akasha: +1, +2, +3 or just "Plus Marks"?

I want to add plus marks to the Akasha tab but not sure if it should count each type individually or group them together in a single "it was a plus mark but I don't care how many it was" drop.

Went with generic Trash Chest in latest release (0.0.6)


Automatically close input stream in VCFInputFormat after inferring format.

Resolves #184.

Coverage increased (+0.009%) to 63.378% when pulling 332f905367ddd97ac17afbc8e108864bec221f24 on fnothaft:issues/184-close-getformat-stream into e4224ab7b3b1ecc463e34252ab340f223d8e3acb on HadoopGenomics:master.


Is this working with redux-connect (wrapper around connect)?

I am not familiar with reselect but this looks very interesting!
Do you think reselect is compatible with redux-connect?
https://github.com/makeomatic/redux-connect
This is a wrapper around the connect method to allow server side rendering.
The most relevant part of the source code is here: https://github.com/makeomatic/redux-connect/blob/master/modules/containers/decorator.js

Hi @casertap, sorry for the slow reply. I have been away and am now very busy catching up right now, so I don't have time to look into this. If you look into it yourself, please let us know what you find out. Thanks!


03/29/2018 02:46 : Create Pull Request for branch prTesting_2018032902 -> master

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Add template with Kubernetes and Docker support

That is being worked on over here: https://github.com/DSPN/google-container-engine-dse


Coverage Badge

A coverage badge would be fun. Based on GitHub actions.

@delvedor is this maybe something you can help with?

I don't think it's actually needed. We are forcing every PR to have 100% code coverage anyway now.


Work Distribution.

Hi All,
I have already been the maintainer twice, so I would honestly prefer it if one of you could @poojashresthacode @pratibha77118, but if that's not possible I have a good handle on how to do it.

ok


Support core modules in UI

What is this feature about? (1 sentence)
I'd like to manage modules implemented in safe-contracts (https://github.com/gnosis/safe-contracts/tree/development/contracts/modules) from the UI.
Why is it needed? What is the value? For whom do we build it?
Daily limits are an important and useful security feature that many folks will find value in.
High-level overview of the feature

Create and sign transactions to enable a module, set its parameters, and disable it.

Screens

Link to Google docs with screens. Template can be found on Google drive

Other things

Closing this, as this will eventually be covered by this ticket. https://github.com/gnosis/safe-react/issues/314


build: replace cross_build job with parallelized build matrix

Closes #20855
Closes #20638
Instead of having separate build and cross_build jobs, we have a single build job that we run in a matrix across target OS and arch pairs. Jobs that only need the linux-amd64 build can start as soon as that build finishes.
We use goreleaser pro to handle the final package & upload steps of the pipeline. The pro license enables us to:

Import prebuilt binaries in our config
Split our config into multiple files, selectively importing/including the pieces we need for each build type
Define custom variables as a slightly more clear substitute for env vars

With these changes, the e2e tests are now the longest-running job in the pipeline. @wbaker85 suggested that porting the OSS e2e suite to use remocal might improve the situation there.

What more work needs to be done to allow us to push a release tag to master? Looks like we're most of the way there?

We'd need to:

Add the top-level workflow that triggers on the tag
Make sure we pass build-type: release to the build & package steps in the workflow
Add a .goreleaser/release.yml and any associated helper files (at least .goreleaser/_uploads-release.yml)

@danxmoran is there an issue already for release from master / if not can you create one with the above info?

Added a comment to #21551


theme() breaks @apply

Very cool that you are including theme() support!
It seems that @apply and theme() currently can't be used in the same rule. Even if it's only mentioned as a comment, see Stackblitz
Also, with that implementation after parsing to AST, it won't be applied to childNode.type === 'Declaration' && childNode.value.type === "Raw", isn't it? This is how users might expect it from tailwind or windi.
Would it be an option to use simple string replacement before AST parsing instead? As in something like the following:
  const regTheme = /theme\((["']?)([^\1)]+)\1\)/g;
  let result = regTheme.exec(code.original);
  while (result != null) {
    const [match,, args] = result
    const keys = args.split(".")
    let value = uno.config.theme
    keys.every((key) => {
      if (!Reflect.has(value, key)) {
        value = null
        return false
      }
      value = value[key]
      return true
    })
    code.overwrite(result.index, result.index + match.length, value);
    result = regTheme.exec(code.original);
  }

PR welcome!


Added method for aligning a row of views inside a superview.

Changes Unknown when pulling 78df4ebce3f30592a390d1cc1136cb5443bb7eb0 on another-horizontal-group into ** on master**.


Update CaseAction to support a null in the created_by field

To support #73 we need to update CaseAction with the following steps:

Allow created_by to have a null value and add a DB migration for the null change
Ensure all methods on CaseAction work with a null for the user (created_by) parameter
Potentially update the UI to support a null value in created_by

@rudigiesler @jpaidoussi @justinvdm ready for review

@KaitCrawford Is it possible to call the Case model methods reassign() and add_note() with a user = None now or will the case_action decorator still expect a valid user?

@jpaidoussi Unfortunately not. The main purpose of that decorator is to check that the user has permission to perform the action they are trying to do so it needs a user.

@KaitCrawford Is there any way around that? Perhaps a None user check in the decorator? Part of the automatic reassignment work will require reassigning a Case from a celery task so there won't be an active user to pass.

Just those minor comments from me. Maybe we should also update the case_action decorator to allow None for the user field, where if the user is None it just allows access?

@rudigiesler I would be happy with that, but I don't know if there would be security implications?

@jpaidoussi You're right. @KaitCrawford Okay new plan. We create just a very basic SystemUser class, so that we can do an isinstance check on the user. If it is, then we allow the task, if not, carry on as usual. This way, you have to create and pass in and instance of the SystemUser class, which is a very explicit action. Thoughts>

@rudigiesler @jpaidoussi ready for review. I've changed things to use the SystemUser model.

I think the issue here is that migrations 40 and 41 already exist in the upstream branch, so you can't create another 40 migration. It's probably worth merging EPIC-OPENHELPD-18 into this branch and fixing the migrations from there. (that's the error with the PR test run)
The other issue is that this branch (the push test run), has the add_users_field_to_partners migration, but doesn't actually have the users field in the partners model, so it wants to add another migration to remove that field. This will probably be fixed by the merge.

Just that one comment from me, looks good otherwise.
I like the idea of using inheritance to separate the SystemUser from a normal User, that way we can use isinstance.
The only thing is that it would be nice to have a better way in the templates to see if it's a system user. Looking at the name isn't that great, since the name isn't unique. A better way would maybe be to look at the username, since that is unique, but that would require adding the username to the returned json for the API, which might be a big thing, so let's go with this for now, I'm just flagging it for future things.

:+1: from me when travis is happy


Multi exchange broker mappings

As promised, this is the PR for #7 "Enhance the broker mappings and store them for multiple exchanges". But it's a bigger one.
There one thing I'm not sure about: As I extend the Binance specific broker from CCXTBroker I wanted to avoid that it registers with the CCXTStore as well which is why I've prevented that with if name == 'CCXTBroker': like this:
class MetaCCXTBroker(BrokerBase.__class__):
    def __init__(cls, name, bases, dct):
        '''Class has already been created ... register'''
        # Initialize the class
        super(MetaCCXTBroker, cls).__init__(name, bases, dct)
        if name == 'CCXTBroker':
            CCXTStore.BrokerCls = cls

@sandroboehme Amazing stuff... Will try to review after I look at the feeds

@Dave-Vallance Any chance for this pull request to be merged into the master?


Rename the options to makes them easier to understand

This is the first proposal :
aSep = thousandSeparator or digitGroupSeparator
nSep = noSeparatorOnFocus
dGroup = thousandSeparatorDigitGrouping
aDec = decimalCharacter
altDec = decimalCharacterKeyAssignment
aSign = currencySymbol
pSign = currencySymbolPlacement
pNeg = negativeSignPlacement
aSuffix = suffixText
vMax = maximumValue
vMin = minimumValue
oLimits = overrideMinMaxLimits
mDec = decimalPlacesOverride
eDec = decimalPlacesShownOnFocus
scaleDivisor
scaleDecimal = scaleDecimalPlaces
scaleSymbol
aStor = saveValueToSessionStorage
mRound = roundingMethod
aPad = allowPadding
nBracket = negativeBracketsTypeOnBlur
wEmpty = emptyInputBehavior
lZero = leadingZero
aForm = formatOnPageLoad
sNumber = selectNumberOnly
anDefault = defaultValueOverride
unSetOnSubmit = unformatOnSubmit
outputType = outputFormat
debug = debugMode or showWarnings

Any thoughts on that?

Changes proposed by Bob :
// digital grouping is recognized in spreadsheets and wikipedia
aSep = digitGroupSeparator
dGroup = digitalGroupSpacing
// negative or positive symbols (future-proof to take into account the future possibility
// to show a '+' sign for positive numbers)
pNeg = negativePositiveSignPlacement or signPlacement or signSymbolPlacement
// false default & true "+" shown on positive values.
showPositiveSign

This is fixed by PR #298


[WIP] Support React 0.14

This pull request:

tweaks the build configurations so that it’s easier for third-party developers to contribute:

install grunt-cli as devDependencies, therefore not requiring developers to pollute their system with a globally-installed grunt-cli.
only run SauceLabs tests when $SAUCE_USERNAME is present. This is because SauceLabs credentials are secret, so Travis don’t put them in when building pull requests from non-collaborators.

modifies package.json to allow React 0.14
modifies the Travis build script to run tests on React 0.12, 0.13, 0.14 and make sure that all tests pass on all supported React versions.

:thumbsup:

+1

@spoike It’s green now, but I was unable to get build matrix working.
Now it only tests on React 0.14, which passes.

:+1:

:+1: Thanks a lot, this is going to be published ASAP.

:+1:

Thanks for your hard work @dtinth and @spoike!

Thanks!!! :+1: :+1: :+1:


Game not starting. Says that GLSL is not supported

Traceback (most recent call last):
  File "main.py", line 204, in <module>
    game = Game()
  File "main.py", line 198, in __init__
    self.window = Window(config = self.config, width = 800, height = 600, caption = "Minecraft clone", resizable = True, vsync = False)
  File "main.py", line 34, in __init__
    self.shader = shader.Shader("vert.glsl", "frag.glsl")
  File "/usr/home/glowiak/gits/python-minecraft-clone/episode-12/shader.py", line 45, in __init__
    create_shader(self.vert_shader, vert_path)
  File "/usr/home/glowiak/gits/python-minecraft-clone/episode-12/shader.py", line 36, in create_shader
    raise Shader_error(str(log_buffer.value))
shader.Shader_error: b'0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES\n'

Could I know what OS you're running on and what your graphics adapter is?

My OS is FreeBSD 13.0-RELEASE-p4, my graphics adapter is intel integrated gpu. Minecraft 1.18 runs on about 100fps

That's odd, if your GPU can run Mine raft (which uses GLSL 150, which is GL 3.2), how come it doesn't support GLSL 330 ? (Which is merely one version away)

my graphics adapter is intel integrated gpu

I need you to be a bit more specific than that.
Either way, I believe I know what the issue is, and it isn't really an "issue" per se, but rather just a simple incompatibility.
You can work around this by replacing #version 330 in both shaders by the following:
#version 300 es
precision mediump float;

This should convert your shaders to OpenGL ES shaders, which your drivers seems to support. I don't have the necessary hardware nearby to test this right now, so you might still get a few errors (in which case do send them).

shader.Shader_error: b'0:2(1): preprocessor error: Illegal non-directive after #\n'

Could you send your full shader source?

Full shader source?

I think he means the whole shader file.

vert.glsl:
"
#version 300 es
#percision mediump float;
layout(location = 0) in vec3 vertex_position;
layout(location = 1) in vec3 tex_coords;
layout(location = 2) in float shading_value;
out vec3 local_position;
out vec3 interpolated_tex_coords;
out float interpolated_shading_value;
uniform mat4 matrix;
void main(void) {
local_position = vertex_position;
interpolated_tex_coords = tex_coords;
interpolated_shading_value = shading_value;
gl_Position = matrix * vec4(vertex_position, 1.0);
}
"
frag.glsl:
"
#version 300 es
#precision mediump float;
out vec4 fragment_colour;
uniform sampler2DArray texture_array_sampler;
in vec3 local_position;
in vec3 interpolated_tex_coords;
in float interpolated_shading_value;
void main(void) {
vec4 texture_colour = texture(texture_array_sampler, interpolated_tex_coords);
fragment_colour = texture_colour * interpolated_shading_value;
if (texture_colour.a == 0.0) { // discard if texel's alpha component is 0 (texel is transparent)
	discard;
}

}
"

You didn't copy the snipped I sent over correctly. precision isn't a directive which must be preceded with a #. Also, you've got a small typo in your vertex shader; you wrote percision instead of precision.

Traceback (most recent call last):
File "main.py", line 204, in
game = Game()
File "main.py", line 198, in init
self.window = Window(config = self.config, width = 800, height = 600, caption = "Minecraft clone", resizable = True, vsync = False)
File "main.py", line 34, in init
self.shader = shader.Shader("vert.glsl", "frag.glsl")
File "/usr/home/glowiak/gits/python-minecraft-clone/episode-12/shader.py", line 51, in init
create_shader(self.frag_shader, frag_path)
File "/usr/home/glowiak/gits/python-minecraft-clone/episode-12/shader.py", line 36, in create_shader
raise Shader_error(str(log_buffer.value))
shader.Shader_error: b"0:6(1): error: No precision specified in this scope for type `sampler2DArray'\n"

Now this appears

Thanks!!! Now everything works!

Why is this still pinned?

Because it seems to be a relatively common issue.


Use Gradle Module Metadata as extra source for checksums

Context
Gradle Module Metadata contains checksum information about artifacts. If we can verify the integrity of the GMM file, then it becomes a source of trust for the checksums of the artifacts, and therefore can be used as an additional source of metadata for checksums (and not only the external configuration file specified in #11398 ).

Let's explain why this hasn't been implemented yet. I think the idea behind this is to create a "chain of trust". If you can trust the metadata for A, and that this metadata says something about the artifacts, then you don't have to provide the checksums (signatures?) for the artifacts yourself, you can trust the metadata provided values.
However, it's not sufficient to create a full chain of trust. First of all, it's often easier to bake a fake checksum for a single artifact than it is for a full set of artifacts. So it's easier for an attacker to actually manage to publish one compromised metadata file with its checksum, than it is to publish all checksums for all compromised artifacts. By doing this, we make it easier to workaround this problem. This shouldn't be a big issue, though, because if the attacker managed to get access to the repository, it's already game over.
Now, let's consider the "full chain of trust" idea. The concept is simple: it would be ideal if I just had to give the checksums of my first level dependencies and let Gradle figure out where to get the checksums for the transitive ones.
Let's, for the sake of this exercise, assume that all libraries publish Gradle Module Metadata.
My project, root, depends on library L:1.0 for which I know the checksum of its metadata.
Gradle downloads L:1.0 metadata, verifies its checksum, so we assume trust and that the information it contains is legit.
The engine resolves variant apiElement, we determine that L:1.0 has for this variant a dependency on B:1.1. Ideally, what we want is not to provide any information about B directly on root. Can we do that?
Today, Gradle would download B:1.1 and fail, because you wouldn't have provided the checksum for the metadata of B:1.1. Even if we trusted it blindly, what we would get for B is the checksums of the artifacts of the variants of B, not its metadata. The problem can therefore be expressed as "how do I know the checksum of the metadata of B:1.1?".
One idea that has been suggested by several users is that L:1.0 should provide, for each dependency, the checksums of the metadata of the dependency. In other words, in Gradle Module Metadata, you'd have something like:
 "variants": [
    {
      "name": "apiElements",
      "attributes": {
        "org.gradle.category": "library",
        "org.gradle.dependency.bundling": "external",
        "org.gradle.jvm.version": 8,
        "org.gradle.libraryelements": "jar",
        "org.gradle.usage": "java-api"
      },
      "dependencies": [
        {
          "group": "com.mycompany",
          "module": "awesome",
          "version": {
            "requires": "1.0"
          },
          "attributes": {
            "org.gradle.category": "library"
          },
          "endorseStrictVersions": true,
          "checksums": [
              "awesome-1.0.module": "checksum"
          ]
        },

(this is again not a real file, just the idea).
If we did this, then the chain of trust can be put in place and configuration becomes much easier on the end user side (because you only provide checksums for your direct dependencies).
At this stage it would look like problem solved, but it's forgetting that the dependencies you declare are not, in the general case, the dependencies you resolve.
The easiest example is a different version being resolved. When L1.0 is published, it assumes that the resolution engine will select B:1.1. We already know that it's not necessarily the case for the project L iself (because transitive dependencies can influence the resolution of the direct dependencies). Let's assume it was the case. Then root could depend on a different version of B, say 1.2.
If it does and that it provides the checksum for the metadata of B:1.2, we're good (pfiew!). If the selector is more complex (say, a range with a prefer, some rejects clauses, ...), then it's possible that the resolution of B changes over time.
Said differently, you cannot make sure that the declared versions are the resolved ones (that's also why it's an option to publish resolved versions in Gradle, so you cannot make sure that the checksums you publish for the first level dependencies will be of any use.
It's not necessarily a problem if you consider those checksums as an extra source of checksums used during resolution. It's more of a problem if you consider that it's a dynamic source of checksums (unlike the current implementation of a single file providing all checksums for all transitives), because depending on what is in the resolution graph at some stage of resolution, the actual checksums may differ.
So in the end, this is just another source for checksums. But if we consider that as an extra source of checksums, what makes the most sense? Should the checksums be an extra variant (just like javadocs, sources)? Could/should it include checksums for different versions of the dependencies?
There's also a performance impact in storing all those checksums during resolution: this can easily grow and consume a lot of memory (but it shouldn't be a blocker).


Opa generate

Introduced OPA feature

Nice work!

Please run make test to adjust some formatting issues.
Please add a test to compare the generated OPA with the expected OPA policy (if it is possible).

#45