av_opt_set question

First awesome project,
I want o set the quality on a mjpeg context, in C this is done with av_opt_set(c->priv_data, "quality", "12", 0);
Is there a way I can set this with go-astiv ? It looks like that av_opt_set and priv_data is not exposed to golang right ?
Thank u

It looks like that av_opt_set and priv_data is not exposed to golang right ?

You're right.

I want o set the quality on a mjpeg context, in C this is done with av_opt_set(c->priv_data, "quality", "12", 0);

Could you share more code (especially the code above the line you mentioned)? I can look to add this to this lib 👍

Hi
Thank u for your answer =)
Here an example, biolerplate its not tested but should give you an idea,
Would be great if you can add this =)
int main() {
    AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_MJPEG);
    if (!codec) {
        fprintf(stderr, "Codec not found\n");
        return 1;
    }

    AVCodecContext* c = avcodec_alloc_context3(codec);
    if (!c) {
        fprintf(stderr, "Could not allocate codec context\n");
        return 1;
    }

    // Set codec parameters
    c->width = 1920;
    c->height = 1080;
    c->bit_rate = 4000000;
    c->time_base = (AVRational){1, 25};
    c->pix_fmt = AV_PIX_FMT_YUVJ420P;

    // Set MJPEG-specific options
    av_opt_set(c->priv_data, "quality", "12", 0);

    // Open codec
    int ret = avcodec_open2(c, codec, NULL);
    if (ret < 0) {
        fprintf(stderr, "Could not open codec: %s\n", av_err2str(ret));
        return 1;
    }

    // Encoding loop goes here

    // Close codec and free context
    avcodec_close(c);
    avcodec_free_context(&c);

    return 0;
}

I'm getting Option not found when implementing the code you pasted. Can you tell me what value av_opt_set(c->priv_data, "quality", "12", 0); returns? Is it equal to 0 ?

ok please forget it I just found this on google for setting the mjpeg quality but looks that are an old one or so,
I found now a other way to set the quality for mjpeg encoding. Sorry to bother u with this.
Just for testing a add this to codec_context.go, because qmin was not exposed.
func (cc *CodecContext) SetQmin(qual int) {
	cc.c.qmin = C.int(qual)
}

And using like this:
s.mjpegEncCodecContext.SetFlags(s.encCodecContext.Flags().Add(astiav.CodecContextFlagQscale))
s.mjpegEncCodecContext.SetQmin(30)

I am tried to using global_quality on ctx but this does not work for mjpeg refering to last post here
Now I am able to control the quality of mjpeg encoding =), once more great work you did !!

fyi I've added qmin handling in master 👍

great thank u


PMID:14739927

new:
1 decreased protein kinase activity during cellular response to UV
2 decreased negative regulation of protein kinase activity
3 inviable elongated vegetative cell during cellular response to UV
other small things spotted:
add link fypo:2900 is_a fypo:4254
fix synonym fypo:4659

decreased protein kinase activity during cellular response to UV FYPO:0005198
decreased negative regulation of protein kinase activity FYPO:0005199
inviable elongated vegetative cell during cellular response to salt stress FYPO:0005200

edit file: f191430d19d693ec371a2b0330cced7f2d5bf425
release: db425423f8f21ad50f84869137c08891dab53d80


Current project status

Hi, what is the current status of this project? Is it still actively maintained?

I'd say not really. Maybe if there was a critical update I guess. But I doubt there will be any new features or anything would be my guess. You can code a solution around most things though, and you can use the plugin method as well. But if you need certainty of updates, it may be better to look elsewhere.


V4 Quickstart hard to follow

Hi, I just tried to follow https://hexdocs.pm/lustre/4.0.0-rc1/guide/01-quickstart.html and I did not look in the URL. So I followed the instructions and ended up with a Version 3 install. Took me as a gleam/lustre beginner some time to figure out what is wrong.
Then I took a look at some examples and in there I found:
Note: this guide is written for Lustre v4. The latest stable release of Lustre is v3. To follow along with this guide, you need to manually edit your gleam.toml and change the required version of lustre to "4.0.0-rc.2".
So I'd suggest to add some info in the quickstart to check for Version 4 to make it easier to follow

Hey there thanks for the feedback (: Louis released Gleam v1 and then the subsequent prime/theo videos all happened while I've been away travelling for work so I haven't had much time at all to keep on top of things. V4 should be out for real fairly soon ^.^


Location Facing Degrees Tag

The output of /version on my server is:
This server is running Paper version git-Paper-223 (MC: 1.14.4) (Implementing API version 1.14.1-R0.1-SNAPSHOT)
Checking version, please wait...
Previous Version: git-Paper-221 (MC: 1.14.4)
You are 3 version(s) behind.
The output of /version denizen on my server is:
Denizen version 1.1.1-SNAPSHOT (build 4313-DEV)
Author: The DenizenScriptTeam
(If relevant) A link to a paste of a script demonstrating the issue: https://one.denizenscript.com/paste/61973
The issue is location.facing returns false when specifying custom degrees, in the example I test it without degrees using the default 45 degrees to check 5 blocks in front of the player, than when I use it with .degree and specify 90 it returns false.

Fixed, thanks


Usage without graphql-sequelize

Thanks for this library!
I haven't been able to use it properly as I'm not using graphql-sequelize resolvers. Perhaps I'm missing something very obvious...
My current setup is as follows:
const apolloServer = new ApolloServer({
  schema,
   context: ({ req, res }) => {
    const loaderContext = createContext(db);
    const dataloaderContext = { [EXPECTED_OPTIONS_KEY]: loaderContext };
    return {
      redis,
      models: db.models,
      user: req && req.user ? req.user : null,
      pubsub,
      dataloaderContext,
    };
  },
})

// Then in my getter, I have this
const userInfo = await db.models.users.findByPk(args.id);
// this worked but it was really slow compared to when using findOne({...})

I have a good feeling im not using this correctly. I'd appreciate any help.

You need to pass the dataloader to your find calls:
User.findByPk(1, { [EXPECTED_OPTIONS_KEY]: loaderContext });

@intellix yes I did try that like so...
I think I followed your approach in another github issue :)
const userInfo = await db.models.users.findByPk(args.id, dataLoaderContext)
I assume the above is equivalent to what you meant?

@bwoodlt the dataloader context needs to be a part of the options object passed to a call, not the entire object. @intellix's sample is correct

@mickhansen @intellix  Thanks for the quick turnaround!
Following your feedback, I've modified to the following:
  context: ({ req, res }) => {
    const loaderContext = createContext(db);

    return {
      redis,
      url: req ? `${req.protocol}://${req.get("hosts")}` : "",
      req,
      res,
      models: db.models,
      user: req && req.user ? req.user : null,
      pubsub,
      loaderContext,
    };
  },

// usage

    user: {
      type: UserType,
      args: {
        id: {
          type: GraphQLInt,
        }
      },
      resolve: isAuthenticated.createResolver(async (roots, args, { user, loaderContext }) => {
        if (!user) throw new GraphQLError("Unauthorised User!!");
        try {
          const userInfo = await db.models.users.findByPk(args.id, { [EXPECTED_OPTIONS_KEY]: loaderContext });
          return userInfo;
        } catch (error) {
          return new GraphQLError(error);
        }
      }),
    },

I find that the call to findByPk is a little slower.

Is this all I need to setup the dataloader?
How do I take advantage of optimising findAll({...})?

My sincere appreciation!

@bwoodlt That should be enough yes. For simplicity you could add EXPECTED_OPTIONS_KEY to the graphql context and simply pass the context as options (also lets you set logging and transactions from the context if need be).
As for optimising findAll, there's no inherint way to do it, the library makes no attempt to find queries with similiar where statements and merge them, so you'd want to write your own custom dataloaders.

Thanks alot! I'll close this now.


Added Grokking Data Structures

Hi,
Stjepan here from Manning. I thought this title might be a good match for your list. Thank you for considering it.
Best,

Thank you.
Best,
On Thu, Feb 8, 2024 at 3:39 PM Chintan Rathod @.***>
wrote:

Merged #404
https://github.com/GDGAhmedabad/Awesome-Learning-Resources/pull/404
into master.
—
Reply to this email directly, view it on GitHub
https://github.com/GDGAhmedabad/Awesome-Learning-Resources/pull/404#event-11746714155,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANDIEMJYY4Z5JCM4UADZNQDYSTPS7AVCNFSM6AAAAABC73MANKVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJRG42DMNZRGQYTKNI
.
You are receiving this because you authored the thread.Message ID:
<GDGAhmedabad/Awesome-Learning-Resources/pull/404/issue_event/11746714155@
github.com>

--
Stjepan Jureković
Manning Publications - Marketing
@.***


Feature Proposal: Support for 3d model animation channels

In some games I have done research on for learning workflow, the 3d animation systems support multiple animation channels per mesh specified in a script. This allows multiple animations to be played simultaneously in order to create more complex movements using a smaller library of animations.
Support for an analogous feature would be a wonderful improvement to Godot's OOTB 3d capability.

Have you tried the AnimationTreePlayer node? It can be used to blend animations together, as seen in the 3D Platformer demo.

Oops, I hadn't noticed it. I'll close the issue. Sorry to waste your time.


Can't compile module.

What is the problem with this configuration?
modules is just working with mxml files?

"type": "lib"

Modules can only be created for application projects.

why this restriction needed? I have to compile uicomponent library swc, and want to export each component live preview to swf.

Modules aren't a generic way to compile multiple SWFs in the same project. Modules are something that a main application loads on demand at runtime to avoid loading everything all at once. In other words, modules aren't meant to be standalone apps on their own.
This feature was mainly to provide a way to compile Flex modules, which is a feature that Flash Builder offers. My VSCode extension is providing that feature mostly as-is. The one thing it could theoretically support that Flash Builder doesn't is compiling non-Flex modules.
If you want to compile multiple SWFs in the same project, you can create multiple asconfig.json files, and add a secondary name between asconfig and .json, like asconfig.livepreview1.json, asconfig.livepreview2.json, etc.

Thank You Josh!


Add auto save session

Does not manually save the session every time now.
At first time, save session when authenticated.
client.auth_provider.save_session(path='/tmp/1drv.session')

Then just load the session. It will auto refresh token if session expired, and save session again.
scopes = ['wl.signin', 'wl.offline_access', 'onedrive.readwrite']
http_provider = onedrivesdk.HttpProvider()
auth_provider = onedrivesdk.AuthProvider(http_provider, scopes=scopes)
client = onedrivesdk.OneDriveClient(api_base_url, auth_provider, http_provider)

client.auth_provider.load_session(path='/tmp/1drv.session')

The other commit is add an attribute download_url in Item model.

@consatan,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla.microsoft.com.
It will cover your contributions to all Microsoft-managed open source projects.
Thanks,
Microsoft Pull Request Bot

@consatan, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, Microsoft Pull Request Bot


MongoClient.connect doesn't throw error on connection failure

Hi,
I'm just trying to connect to MongoDB using MongoSkin's MongoClient.connect(url) when the DB is not running, but it doesn't throw any error. I couldn't able to find any docs for listening to connection failure.
var mongo = require('mongoskin');
try {
 var db = mongo.MongoClient.connect(mongo.url)
} catch(e) {
   console.log(e);
}

Yeah, how can we handle connection errors?

MongoClient.connect() takes a callback

And what about this syntax? It's not documented.
var mongo = require('mongoskin');
var db = mongo.db(connectionString);

What's the proper approach/method for this? The callback doesn't have any effect when used:
_db = MongoClient.connect(config.mongo, function (err, db) {
    //CHECK ERRORS NEVER CALLED!!!
});

Nor do I see anywhere in the source for any EventEmitter usages indicating errors, only success/open.


Trap in host function leaks memory, 0.25 regression

Test Case
use wasmtime::*;

fn main() {
    let wat = r#"
        (module
            (import "" "" (func $host_hello))
            (memory (export "memory") 0)
            (func (export "hello") call $host_hello)
        )
        "#;
    let big = vec![1; u32::MAX as usize / 8];

    loop {
        let store = Store::default();
        let module = Module::new(store.engine(), wat).unwrap();
        let host_hello = Func::wrap(&store, || -> Result<(), Trap> {
            // If `Ok(())` is returned instead, memory will not leak.
            Err(Trap::new("it's a trap"))
        });
        let instance = Instance::new(&store, &module, &[host_hello.into()]).unwrap();

        // Do a large allocation to speed up memory leak.
        let mem = instance.get_memory("memory").unwrap();
        mem.grow(10_000).unwrap();
        mem.write(0, &big).unwrap();

        let hello = instance.get_typed_func::<(), ()>("hello").unwrap();
        let _ = hello.call(());

        // In wasmtime 0.24, this does not reproduce:
        // let hello = instance.get_func("hello").unwrap().get0::<()>().unwrap();
        // let _ = hello();
    }
}

Steps to Reproduce
Run the above program on Linux x86_64.
Expected Results
Program can run forever without exhausting system memory.
Actual Results
Program leaks memory until the system memory is exhausted.
Versions and Environment
Wasmtime version or commit: 0.25
Operating system: Linux
Architecture:  x86_64
Extra Info
It does not reproduce on version 0.24, indicating a 0.25 regression. It seems the Store is being leaked. This issue was observed in our application as the error Insufficient resources: mmap failed: Cannot allocate memory (os error 12), because the virtual memory space would be exhausted.

Oh dear, thanks for the report! I've opened https://github.com/bytecodealliance/wasmtime/pull/2803 with a fix for this.


Update README.md

Adding text on "why" keyless is important for security.
Does this introduce a breaking change?

[ ] Yes
[ x ] No

Pull Request Type
What kind of change does this Pull Request introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ x  ] Documentation content changes
[ ] Other... Please describe:

Thank you!

This template is smooth, @sinedied -- provision and deploy took 8 seconds.


RFC: Add modulo conditions to Feature Flags

Key information

RFC PR: (leave this empty)
Related issue(s), if known:
Area: Feature Flags
Meet tenets: Yes
Approved by: ''
Reviewed by: ''

Summary

One paragraph explanation of the feature.

Add action to support modulo condition evaluations within feature flag utility.
Motivation

Why are we doing this? What use cases does it support? What is the expected outcome?

Feature flags are instrumental in experimentation. An important aspect of product experimentation is to allow the feature to be visible to a subset of the users spectrum. This is done in most experiments using the modulo operator on an identifier. To experiment with 20% of the users, the feature flag should be enabled for say -  0 <= user_id % 100 <= 19. A parallel experiment could run for - 20 <= user_id % 100 <= 39
Proposal

This is the bulk of the RFC.

Explain the design in enough detail for somebody familiar with Powertools to understand it, and for somebody familiar with the implementation to implement it.

The modulo operator is a standard mathematical operator easy to implement and has varied use-cases in experimentation.
Add a new action to support modulo evaluation in the feature flag utility.
{
    ...
    "conditions": [
        {
            "action": "MODULO_RANGE",
            "key": "user_id",
            "value": {
                "base": 100,
                "start": 0,
                "end": 19,
            }
        }
    ]
}

The action configuration will have the following value, where the expressions a is the key and b is the value above:

Action
Equivalent expression

MODULO_RANGE
lambda a, b: b.start <= a % b.base <= b.end

If this feature should be available in other runtimes (e.g. Java), how would this look like to ensure consistency?
Feature utility is only available in Python. If we wish to extend this functionality to other runtimes, there should be no problem as there is no language dependency for this feature.
User Experience
How would customers use it?
Users will be able to customise their experiments to user spectrums and have visibility over running parallel and orthogonal experiments within their product.
Any configuration or corner cases you'd expect?
None
Demonstration of before and after on how the experience will be better
This is a new feature, it will expand the applicability of this utility to support more user needs as mentioned above.
Drawbacks

Why should we not do this?

Do we need additional dependencies? Impact performance/package size?
None

Rationale and alternatives

What other designs have been considered? Why not them?

considered having a constant base of 100

a variable base allows for more custom experimentation basis the user's spectrum size

considered a list of values for [0, 19] instead of two variables for start and end

a list could imply more values could be appended and comprehension of rules becomes difficult. With two variables, the readability improves considerably

What is the impact of not doing this?

incomplete set of conditions for a feature flag utility.

Unresolved questions

Optional, stash area for topics that need further development e.g. TBD

moving it to the Python repo ;) thanks a lot for creating it!

ah they're duplicate, I'll close this one and start reading the one in Python: 2003
;)


Bug Report - TypeError: register() missing 1 required positional argument: 'entry_point'

Dear TensorTrade Team,
I am using the latest version of TensorTrade and I have run into an issue with the register() function. When I tried to run the training using Ray.tune, I received the following error message: TypeError: register() missing 1 required positional argument: 'entry_point' with latest version gym.
I did some research and found that the register() function in gym was modified on September 1, 2022 in the following commit: https://github.com/openai/gym/commit/0bcd49ec10e7ec3833bf16a8a2d6fd9ad60e030a
This modification seems to be the root cause of the issue, it require a new required input entry_point, but the source code of TensorTrade did not update yet.
As a temporary solution, I installed gym version 0.24.1 and the issue was resolved. However, I would appreciate it if the TensorTrade team could investigate this issue and provide a permanent solution.
Thank you for your time and for maintaining such a fantastic library.

gym version 0.25.1 also works.


DPL-890-4 Replace bootstrap with in-house components and styling changes

…anger Standard
Closes #
Changes proposed in this pull request

Includes styling changes to make it consistent with Sanger Standard.
Removed Bootstrap and used pain HTML and in-house Vue components.

Instructions for Reviewers
[All PRs] - Confirm PR template filled
[Feature Branches] - Review code
[Production Merges to main]
    - Check story numbers included
    - Check for debug code
    - Check version

It would also be good to either have a home button or for clicking on the Qunathub text to return to home page. Although quanthub has very few pages it usually makes sense so users can reset.

Linked to home page on click of the Quanthub text.

It is pretty much there but there are still some stdout and stderr on the command line.
stderr | tests/unit/PrintJob.spec.js > PrintJob.vue > it sends a print job > unsuccessfully
{}

stdout | unknown test
Download the Vue Devtools extension for a better development experience:
https://github.com/vuejs/vue-devtools
You are running Vue in development mode.
Make sure to turn on production mode when deploying for production.
See more tips at https://vuejs.org/guide/deployment.html

This appears multiple times
stderr | tests/unit/Plate.spec.js > Plate.vue > exporting > failure
{ data: { status: 422 } }

Removed the warnings from stdout and stderr.


added babel runtime to root package.json and removed npm-shrinkwrap from root

The npm shrinkwrap didn't do anything here since we had no dependencies besides devDependencies.
Added babel-runtime to the root since it's a peerDepenency.

This change is

Coverage remained the same at 85.325% when pulling 73b5bdf2244fa6b12c9dbe64c3536c61d276d0a0 on add-babel-runtime-to-root-package-json into 549f2d1f54e4494a8fcde1dbb1faa183e4eedb7c on master.

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Added some optional files

Current dependencies on/for this PR:

master

PR #1   👈

This stack of pull requests is managed by Graphite.


Remix example: Check fetcher state to avoid infinite loop

In some cases, an auth state change was causing an infinite loop of useEffect. This checks the state of the fetcher before calling submit to make sure it isn't already being submitted.
What kind of change does this PR introduce?
Bug fix in example
What is the current behavior?
I didn't see this when running the simple example app, but ran into it with my own app which had no differences in the __supabase.tsx file. When clicking logout or completing login, the browser would freeze because the render was doing an infinite loop of the useEffect.
Remix #4386
What is the new behavior?
Infinite loop doesn't occur.

Note for internet searches/posterity: anyone using the useRevalidator() pattern and also hitting this infinite loop issue, also need to check for the idle state for it.
It might look like this:
  const revalidator = useRevalidator();
  const serverAccessToken = session?.accessToken;

  useEffect(() => {
    const {
      data: { subscription },
    } = supabase.auth.onAuthStateChange((_event, session) => {
      if (
        session?.access_token !== serverAccessToken &&
        revalidator.state === "idle"                            // <---- ADD THIS
      ) {
        console.log("server and client are out of sync.");
        revalidator.revalidate();
      }
    });

    return () => {
      subscription.unsubscribe();
    };
  }, [serverAccessToken, supabase, revalidator]);

I am running into this an infinite loop even after following this PR and this tutorial: https://www.youtube.com/watch?v=Viaed7XWCY8&ab_channel=Supabase

Note for internet searches/posterity: anyone using the useRevalidator() pattern and also hitting this infinite loop issue, also need to check for the idle state for it.
It might look like this:
  const revalidator = useRevalidator();
  const serverAccessToken = session?.accessToken;

  useEffect(() => {
    const {
      data: { subscription },
    } = supabase.auth.onAuthStateChange((_event, session) => {
      if (
        session?.access_token !== serverAccessToken &&
        revalidator.state === "idle"                            // <---- ADD THIS
      ) {
        console.log("server and client are out of sync.");
        revalidator.revalidate();
      }
    });

    return () => {
      subscription.unsubscribe();
    };
  }, [serverAccessToken, supabase, revalidator]);

I think every time you create the revalidator it generates it as a brand new object hence triggers the useEffect to run again. One suggestion was to use a useRef() to create the revalidator but I found it stopped the loop by just using destructuring  since we're defining a variable rather than creating a new object.
const {revalidate} = useRevalidator()

I think every time you create the revalidator it generates it as a brand new object hence triggers the useEffect to run again. One suggestion was to use a useRef() to create the revalidator but I found it stopped the loop by just using destructuring since we're defining a variable rather than creating a new object.
const {revalidate} = useRevalidator()

Oh that is MUCH better, thank you for this!!


⚠ Bofrost.lu has degraded performance

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

HTTP code: 200
Response time: 1427 ms

Resolved: Bofrost.lu performance has improved in 3b9dd29.


Proper fix for crc file perms issue using posix acl

Fixes #387
Tested in OpenShift Local (formerly CRC) and OpenShift Container Platform (both v4.11) running in AWS.
The POSIX ACL allows granular file owership/permissions versus singular user, group and other (ugo) permissions. This avoids side effects of #366 (change group ownership), which required reverting due to errors arising in OCP on AWS.
Signed-off-by: Josh Manning<EMAIL_ADDRESS>

@jsm84 As I encountered the file perms issue on the ppc64le cluster, I used the fix from this PR but was still able to reproduce the same tee: podman-inspect.json: Permission denied error ar generate-index step because of the setfacl: podman-inspect.json: Operation not supported error.
Have attached the complete logs.
operator-ci-pipeline-run-jkw7w.log
So, to resolve this issue I have used the changes made in https://github.com/redhat-openshift-ecosystem/operator-pipelines/pull/366 PR and the whole pipeline got succeeded.

@mayurwaghmode what oc version were you using? I was able to successfully use this patch on a 4.12 cluster

@mayurwaghmode what oc version were you using? I was able to successfully use this patch on a 4.12 cluster

@mjturek
oc version
Client Version: 4.11.0
Kustomize Version: v4.5.4
Server Version: 4.11.0
Kubernetes Version: v1.24.0+9546431

Closed in preference of running generate-index task as gid 1000.


Added rem unit under Font Size properties

[ x ] I have read freeCodeCamp's contribution guidelines.
[ x ] My pull request has a descriptive title (not a vague title like Update index.md)
[ x ] My pull request targets the master branch of freeCodeCamp.
[ x ] None of my changes are plagiarized from another source without proper attribution.
[ x ] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

@nicolepdev Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 📝


WIP: service layout replacement

Updated functionality:

Read/load layout
Add a widget to home
Remove widget from home
Drag and drop / move widgets using mouse
Ensure check icons are in sync with hasInLayout
Fix compact cards display
Mobile display and functionality
Move widget on key-press ($scope.moveWithKeyboard)

To do:

Remove hardcoded API references before merging

Feature flag:

Created two new feature flags in override.js (useNewLayout & useOldLayout)

{Substantive content goes here. Summarize the changeset and why the changeset.}

Review for security considerations

[ ] The change has been examined for security impact.

Contributor License Agreement adherence:

[ ] This Contribution is under the terms of Individual Contributor License Agreements (and also Corporate Contributor License Agreements to the extent applicable) appearing in the Apereo CLA roster.

Merging to get this up on predev and test it. We can iron out the hardcoded API references etc. as we iterate on it -- they may not make any difference in an environment where the Shibboleth SP overwrites the eppn header anyway.


Tests

First tests on struct_env to start.
Had to change the name of the folder imp_env for docstring compatibility.
Tell me if the tests suit you and if you can think of something else, then we'll proceed quickly.

We have now pytest and doctest, the latter will help for documentation I believe!

Pytest tracks files starting with "test", so I modified it because test_with_pymarl is not a test.
Afterwards, I added this pytest config file, which may have solved the issue, but I did not try.
Why is it confusing anyway?
Another possibility is to go with pymarl_train and pymarl_test.
For the test folder, I guess everyone just names it "test", I honestly do not care too much.
Would you have any thoughts on the tests themselves?

Maybe we accept this PR to have a clean sheet for reorganisation?

Agreed :)


Add compilers used in Umpire

I have PRs opened in RAJA, let me know if I should update them with this, or wait for them to be merged and them submit an update.

@davidbeckingsale I have PRs opened in RAJA, let me know if I should update them with this, or wait for them to be merged and them submit an update.

Please update them.


UMD is not exported while devServer inline is on.

Bug report
What is the current behavior?
I am working on a small lib that is exported as UMD type. It works fine, but when I was trying to enable hot-module-reload for development, the UMD export becomes an empty object.
If the current behavior is a bug, please provide the steps to reproduce.
Here is the MVP code to reproduce the issue:
https://github.com/mutoo/webpack-umd-hmr-issue
What is the expected behavior?
The webpack-dev-server has prepended the inline script to entry in the correct order:
["./node_modules/webpack-dev-server/client/index.js?http://localhost:8080", "./node_modules/webpack/hot/dev-server.js", "./src/index.js"]

And webpack should expect to generate the bundle that points  __webpack_exports__ to correct entry: ./src/index.js:
/************************************************************************/
/******/
/******/ 	// module cache are used so entry inlining is disabled
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	__webpack_require__("./node_modules/webpack-dev-server/client/index.js?http://localhost:8080");
/******/ 	__webpack_require__("./node_modules/webpack/hot/dev-server.js");
/******/ 	var __webpack_exports__ = __webpack_require__("./src/index.js");
/******/
/******/ 	return __webpack_exports__;
/******/ })()
;
});

Other relevant information:
webpack version:  5.24.2
Node.js version: v12.13.1
Operating System: macOS 10.15.7
Additional tools:

webpack-dev-server: 3.11.2

Found some discussion on the webpack-dev-server repo
https://github.com/webpack/webpack-dev-server/issues/2484
Seems like they had a fix on webpack-dev-server@4


Blackberry button, back button, and end call buttons don't work

I forked this repo as instructed, edited my keymap to add ~ ` and $, and flashed the result, and now only the leftmost white button works, the other three don't. I'm not sure if this is related to https://github.com/ZitaoTech/BBQ10-USB_BLE_Keyboard/issues/1 or not.

I'm having similar issues. For me the back button and decline call button don't work after I customized my config recently. In my case the button with the Blackberry logo works. Last time I changed anything was a month ago and using firmware generated then everything works. I tried changing my config many times but nothing seemed to work. Generating firmware with the same config I used a month ago also seems to have this problem for some reason.

Maybe ZMK changed something upstream?

Issue fixed


feat(public-talks): updated translation from Crowdin

:tada: This PR is included in version 2.130.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Implements a PlatformMenuBar widget and associated data structures

Description
Implements a PlatformMenuBar widget and associated data structures for defining menu bars that use native APIs for rendering.
This PR includes:

A PlatformMenuBar class, which is a widget that menu bar data can be attached to for sending to the platform.
A PlatformMenuDelegate base, which is the type taken by a new WidgetsBinding.platformMenuDelegate.
An implementation of the above in DefaultPlatformMenuDelegate that talks to the built-in "flutter/menu" channel to talk to the built-in platform implementation. The delegate is so that a plugin could override with its own delegate and provide other platforms with native menu support using the same widgets to define the menus.

This is the framework part of the implementation.  The engine part will be in https://github.com/flutter/engine/pull/32080 (and https://github.com/flutter/engine/pull/32358)
The design doc for this feature is here.
Related Issues

https://github.com/flutter/flutter/issues/23600

Tests

Added tests for PlatformMenuBar and the items, and test the PlatformMenuDelegate through the PlatformMenuBar test.

Gold has detected about 1 new digest(s) on patchset 1.
View them at https://flutter-gold.skia.org/cl/github/100274

Gold has detected about 1 new digest(s) on patchset 2.
View them at https://flutter-gold.skia.org/cl/github/100274

@goderbauer OK, I think it's all been addressed. PTAL tomorrow.

Looks like github put the most interesting comment last. Before considering any of my doc nits, maybe look at this comment first, which may make some of the doc nits obsolete: https://github.com/flutter/flutter/pull/100274/files/592dcb72d188e4716e27e59e6270c4b14142b7a8#diff-f60cab5e3b72cb444d7041dcfaff6202b720d6dc6218987aecac51e3ae2e3525


add proxy_url to enable ghteam-auth with http proxy

This pull request adds proxy_url: Option<String> to config, to support HTTP proxy.

LGTM. Thanks!


Calling .then() after .pipe() causes "write after end error"

I get that .then() is designed to send the request when not using .pipe().
But how about making it so that after .pipe() is called, .then() just waits for the request to finish instead of trying to write again?

You can't use both. These are mutually exclusive features and can't work together.

@pornel is there some technical reason that code like the following would be impossible?
constructor() {
  this.once('pipe', () => this.isPiping = true)
}
then(resolve, reject) {
  if (this.isPiping) {
    this.once('response', resolve)
    this.once('error', reject)
    return
  }
  this.end(resolve, reject)
}

@pornel it is indeed possible, I have made a PR complete with tests.

@pornel in fact, if you ask me, it would be better if we could also call .end after .pipe() and it would merely register the callbacks instead of complaining that it was ended twice.  I don't see why the API for getting a response or error should be so different in the .pipe() case.

Ah, sorry, I assumed you've meant pipe for downloading the request.
So this may work, although I have concerns:

can there be race conditions? Is it guaranteed that pipe event is called immediately and sychronously? It'd be a nasty bug if piping started after call to .then().

people often try req.get(url).pipe(output).end() expecting this to work. I'm worried about creating confusion where pipe() + end() works in one way, but not the other. And I'm worried that supporting piping and buffering at the same time will be hard (it's already hairy with gzip and async parsers).

@pornel

Is it guaranteed that pipe event is called immediately and sychronously?
I haven't found official documentation but it seems to?

var PassThrough = require('stream').PassThrough

var a = new PassThrough()
var b = new PassThrough()
b.on('pipe', () => console.log('pipe'))

console.log('before')
a.pipe(b)
console.log('after')

$ node temp.js
before
pipe
after

I don't know much about how the buffering works.

I mean pipe client->server is OK, but pipe server->client is hard.

@pornel I'm a bit confused what you mean, are you saying if we can await a request that has been piped to, you want to support awaiting a response we've piped to something as well?

Yes. There are two kinds of pipes in superagent, and supporting end/then with only one of them creates inconsistency. Currently superagent doesn't support combination of any pipe with end/then, which may not be very useful, but at least it's a simple rule and is consistent.

@pornel I have noticed intermittent failures with waiting a request that I piped data into now...maybe the pipe event isn't synchronous.

The potential for race condition is worrying, so I'm going to close this.


New package: StrongArrays v0.1.0

Registering package: StrongArrays
Repository: https://github.com/plut/StrongArrays.jl
Created by: @plut
Version: v0.1.0
Commit: 5b01ac90f5b4a2abbabd18728e5415cece8c312f
Git reference: master

@plut thanks for you contribution!  Note that packages in the registry must have an OSI-approved license, your package is missing any license file

Some more information on the license check is available here, by the way: https://discourse.julialang.org/t/fyi-the-general-registry-now-checks-for-an-osi-approved-software-license-when-registering-new-packages-and-new-versions/57018
Let me know if you have any questions!


Update audubon-core_maintenance-group_charter.md

Changed 'task group' in line 22 to 'interest group'. Would like a second opinion.

You are right. This is clearly an error because ACMG is a permanent interest group and not a temporary task group.


Remove unnecessary space in header

The goal of the PR is to remove an unnecessary whitespace between wording and punctuation.

Thansk!


Not able to print fail message

I am trying to revert to snapshot which doesn't exist.
Set-VM -VM windows10 -Snapshot snapshotvm123 -Confirm:$false
In the above command snapshotvm123 doesn't exist, so I want to print on the console a failed message with the command error message on the console.
Tried with response.isError but it says false
Error message while executing the command on PowerShell:
Set-VM : 03-11-2018 00:05:03    Set-VM          Could not find Snapshot with name 'snapshotvm123'.
At line:1 char:1
+ Set-VM -VM windows10 -Snapshot snapshotvm123 -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (snapshotvm123:String) [Set-VM], VimException
    + FullyQualifiedErrorId : Core_ObnSelector_SelectObjectByNameCore_ObjectNotFound,VMware.VimAutomation.ViCore.Cmdle
   ts.Commands.SetVM
Set-VM : 03-11-2018 00:05:03    Set-VM          Snapshot parameter: Could not find any of the objects specified by name.
At line:1 char:1
+ Set-VM -VM windows10 -Snapshot snapshotvm123 -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (VMware.VimAutom...apshot Snapshot:RuntimePropertyInfo) [Set-VM], ObnRec
   ordProcessingFailedException
    + FullyQualifiedErrorId : Core_ObnSelector_SetNewParameterValue_ObjectNotFoundCritical,VMware.VimAutomation.ViCore
   .Cmdlets.Commands.SetVM

Hello,
https://github.com/profesorfalken/jPowerShell/wiki/New-3.0-version-of-PowerShell

The reponse method isError is not working as before. Instead of telling if the command was sucessful, now it will only return false in case the command did not work at all (timeout or unexpected error). If you want to know the result of the command you should use the new method isLastCommandInError

Best regards

Hi,
I have similar issues:
1.
The method isLastCommandInError does not return error when cmd-let is not recognized
e.g.
Write 'Set-NetFirewallRule : No MSFT_NetFirewallRule objects found with property
but jPowershell returns no errors.
2.
Another case.
If there is syntax error, I got proper indication through the isLastCommandInError , but how to get error message to the string? Method getCommandOutput returns nothing in such a case.


pipeline splitter integration

This PR integrates the pipeline splitter into bee.

Some tests fail.

yeah i'm on it @pradovic

should be good to go now :+1:


Choose the number of dice. (Defending)

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

According to the requirement document, players need to operate in parallel, which means the game should achieve auto-defending strategy.
According to the official rules, the defender can select 1 or 2 dices if they have >= 2 troops. It will select the max num of dice to defend the attacker. If you have better idea, you can modify the strategy. @Cancy0605


Add .gitignore to the project

Add gitignore and include html files generated with sphynx there.

@MKhalusova @datapythonista Can I take this up?

absolutely @sara-02, go for it!
It's great to ask, so we coordinate. But at this point feel free to work in anything you want to learn. Even if many people work in the same, and at the end we can only merge a PR, if you are going to learn when working in something, it's surely worth it.


Connect external mysql database by egress gateway does not work

I deployed ServiceEntry like this:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: cnn
spec:
  hosts:
  - dbext.telcloud.svc.cluster.local
  ports:
  - number: 3306
    name: db
    protocol: TCP
  location: MESH_EXTERNAL
  resolution: STATIC
  endpoints:
  - address: <IP_ADDRESS>
    ports:
      http: 3306

In a pod which have mysql client in it , i tried to connect to mysql and it is ok.
mysql -uroot -p  -h dbext.telcloud.svc.cluster.local -P 3306
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 45
Server version: 5.7.23 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Later I deployed egress gateway and virtual service,  then, i tried to connect to mysql,  and it failed.
Here is egress gateway and virtualservice:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      number: 3306
      name: db
      protocol: TCP
    hosts:
    - "dbext.telcloud.svc.cluster.local"
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: egressgateway-for-cnn
spec:
  host: istio-egressgateway.istio-system.svc.cluster.local
  subsets:
  - name: cnn

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: dbext
spec:
  hosts:
  - dbext.telcloud.svc.cluster.local
  gateways:
  - istio-egressgateway
  - mesh
  tcp:
  - match:
    - gateways:
      - mesh
      port: 80
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        subset: cnn
        port:
          number: 80
      weight: 100
  - match:
    - gateways:
      - istio-egressgateway
      port: 80
    route:
    - destination:
        host: dbext.telcloud.svc.cluster.local
        port:
          number: 3306
      weight: 100

Here is my result:
root@mysql-fb75876c6-dcbh8:/# mysql -uroot -p -h dbext.telcloud.svc.cluster.local -P 80
Enter password:

It was stuck, and there was no messages in logs of egress gateway.
Expected behavior
mysql -uroot -p -h dbext.telcloud.svc.cluster.local -P 80, this command should be ok.
Version
Istio 1.0.2 release
kubernetes v1.11.3
Installation
Install istio by helm
Environment
centos 7.4

I found egress gateway only support 80 and 443, which is http and https. Is TCP not supported by egress gateway?

  istio-egressgateway:
    enabled: true
    labels:
      app: istio-egressgateway
      istio: egressgateway
    replicaCount: 1
    autoscaleMin: 1
    autoscaleMax: 5
    cpu:
      targetAverageUtilization: 80
    serviceAnnotations: {}
    type: ClusterIP #change to NodePort or LoadBalancer if need be
    ports:
      - port: 80
        name: http2
      - port: 443
        name: https
    secretVolumes:
      - name: egressgateway-certs
        secretName: istio-egressgateway-certs
        mountPath: /etc/istio/egressgateway-certs
      - name: egressgateway-ca-certs
        secretName: istio-egressgateway-ca-certs
        mountPath: /etc/istio/egressgateway-ca-certs

You can refer to Consuming External TCP Services

I meet similar issue with http2 traffic use other port but not 80/443

hi zoupl,
I think you can change your gateway port from 3306 to 80
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: istio-egressgateway
spec:
selector:
istio: egressgateway
servers:

port:
number: 80
name: db
protocol: TCP
hosts:

"dbext.telcloud.svc.cluster.local"

Then it should work fine.

@zoupl Is your mysql database outside the cluster? I wonder since you use a private IP and a Kubernetes URL.
Regarding your questions - I wrote an example for MongoDB, see this PR https://github.com/istio/istio.io/pull/2347

@vadimeisenbergibm @zoupl Hi, I have also encountered the same error - except that it is the Bookinfo->Ratings v2 Node.js throwing an error when it tries to connect to the MySql that is outside the mesh/cluster. MySql is running directly on a host VM. This follows the Consuming External TCP Services Except I am trying to redirect all egress traffic to MySQL through the istio-egressgateway with VirtualService, Gateway resources. If I don't try to direct traffic thru istio-egressgateway, and let the Ratings v2 pod use the ServiceEntry directly to the same MySQL db, everything works.
I also did a tcpdump from the istio-egressgateway pod when it tries to connect to MySQL (proxying the request from Ratings v2 pod), and it shows that the Istio EGateway has somehow got packets out of order and caused MySql to issue error 1156.  So I think this means that Istio Egress Gateway cannot support TCP conns like MySql?

Istio egress gateway still not work. So I changed to use haproxy instead.

@tchanorcl Could you please see https://preliminary.istio.io/blog/2018/egress-mongo/? It describes multiple options for directing TCP/TLS egress traffic thru the egress gateway.

@vadimeisenbergibm - Hi, thank you for responding. I tried the https://preliminary.istio.io/blog/2018/egress-mongo/ instructions (Direct TCP Egress traffic through an egress gateway) and it WORKS!. The mods I made were for MySQL port/host. However, the ServiceEntry apply failed initially because of "Error from server: error when creating "vad_mysql_egress_service_entry.yaml": admission webhook "pilot.validation.istio.io" denied the request: configuration is invalid: CIDR addresses are allowed only for NONE/STATIC resolution types" - As per instructions on the prelim blog, the "resolution" property is set to "DNS" and included the "addresses" property, but Istio (for me, Version 1.0.4) didn't like specifying the "addresses" property if set to DNS, So I commented out the "addresses" and redid the apply.
Log from Ratings v2 Pod: Shows it is going to the egressgateway (Great!)
[2018-12-06T15:44:27.555Z] - 107 180 9 "<IP_ADDRESS>:7777" outbound|7777|mysql|istio-egressgateway.istio-system.svc.cluster.local <IP_ADDRESS>:60772 <IP_ADDRESS>:3306 <IP_ADDRESS>:40474
Log from the Egress Gateway Pod: Shows it is proxying the connection to MySql (Working as expected)
[2018-12-06T15:44:26.861Z] - 107 180 25 "<IP_ADDRESS>:3306" outbound|3306||chantclientphx101.publicetcdad1.k8soci.oraclevcn.com <IP_ADDRESS>:43490 <IP_ADDRESS>:7777 <IP_ADDRESS>:60766
Again, thanks for the feedback and instructions.

@tchanorcl Great, I am glad to hear that. I will check the DNS issue - probably will have to create two entry one with the hostname and DNS resolution, and another one with CIDR blocks (ignored hostname).


[General UX] Mobile show index menu disappears when scrolling

Steps to reproduce the problem

Open https://learn.qiskit.org/course/ch-applications/hybrid-quantum-classical-neural-networks-with-pytorch-and-qiskit on mobile with chrome browser
Click on Show index
Scroll down down and up couple of times
See that show index dissapear

What is the current behavior?
Show index menu disappear if you scroll content underneath
What is the expected behavior?
Menu should stay in place
Screenshots (optional but very helpful)
https://user-images.githubusercontent.com/8796709/140353997-85593c08-595e-426f-976a-d4fe8002c9d6.MP4
Environment (optional but very helpful)

Device: iPhone X
OS: iOS
Browser: Chrome

This repository is no longer maintained. It has been superseded by IBM Quantum Learning.


BORON LTE Compatible?

Looking at the source, the library looks to be compatible with Boron LTE ( with the caveats of a single tower and a static operator, MCC, and MNC )
I have a Borton LTE with firmware 1.4, but can't get the deviceLocator event to fire off.  I was able to get it to work with my older photon with the same firmware version.
Using version 0.05 and pretty much the stock example from https://docs.particle.io/tutorials/integrations/google-maps/.  ( I did update the example to use version 0.05 vice 0.04 )
Any tips/tricks?

It is not currently compatible with the Boron LTE. A future version will be compatible with newer versions of Device OS, probably 1.3.1 and later.

It is not currently compatible with the Boron LTE. A future version will be compatible with newer versions of Device OS, probably 1.3.1 and later.

Do you have a timeline in mind?
Is it possible w/ v1.4.0 and simply not implemented in this lib?  If so,  I don't mind forking and  submitting back a PR if you want to point me in the right direction.   Just don't want to waste time if the lower level cellular libs aren't yet ready.

@rickkas7 Am I on the right track that this call:
https://github.com/rickkas7/CellularHelper/blob/10486d1d81cdb5e728a77f5e397b5eb5631ce642/src/CellularHelper.cpp#L853
Should be "CEREG" vice "CREG" .  Per https://www.u-blox.com/sites/default/files/AT-CommandsExamples_AppNote_(UBX-13001820).pdf ?

Version 0.0.5 of the google-maps-device-locator library now supports the Boron LTE and B Series B402 LTE SoM when using Device OS 1.2.1 or later!
The library still works with older Device OS (back to 0.7.0) on other devices.
For the E Series LTE and Electron LTE using 1.2.1 or later is recommended, otherwise the library won't work in Canada or Mexico properly unless you manually configure it. With 1.2.1 it works properly everywhere automatically.

@rickkas7 Thank you! I was beating my head against the wall trying to figure out why "AT+CEREG?\r\n" was always just returning OK.
Assume that obtaining info for more than one tower is a limitation of the u-blox SARA R410 LTE modem?


Reconsider NC

I was disappointed to see CC-SA-NC - Creative Commons doesn't frame this as a license suitable for free cultural works - https://creativecommons.org/share-your-work/public-domain/freeworks/ describes this in more detail

@jjcastro explained the cover images are the only piece that is CC-SA-NC, so that the graphic designers feel more comfortable to contribute.
I think since the complete book projects have heterogeneous licensing, that should be made more clear, such that the project could explain the range of licenses that are acceptable for each kind of piece, and the preferred licenses :)

We are now CC-SA!

Wow. Amazing!
Congratulation @juliacastrov, this is amazing news!


"url.replace is not a function"

After opening console.log, it's filled with:
feed.js:168 Uncaught (in promise) TypeError: url.replace is not a function
    at to_hash (feed.js:168)
    at Entry.is_visible (entry.js:216)
    at Feed.refresh (feed.js:136)
    at Home.discover_next (home.js:158)
    at Portal.discover (portal.js:60)
    at <anonymous>

This should be fixed now :)

this is fixed in #95
issue can be closed


feature: support Turkish language 'tr-TR'

Is your feature request related to a problem? Please describe.
The Turkish translation for schedule-x is currently not available.
Describe the solution you'd like
I would like to see the Turkish translation added to the calendar and date-picker.
Things that could speed up the process

[x] I can picture implementing at least parts of this feature
[x] I believe I know how to do this, and am willing to implement the whole thing.

Released as @schedule-x/calendar 1.30.0. Releases for the Vue and React components will follow once Renovate Bot gets to it.
Thanks again 🚀


GCS DeleteBucket expects the bucket to be empty to be deleted

Expected Behavior
The given bucket should be deleted. We can provide an option to delete non-empty bucket, or explicitly mention that only empty buckets will be deleted.
Actual Behaviour
The non-empty bucket does not get deleted. The task fails with the following error:
2024-01-29 16:09:11.283Deleting bucket 'smantri-gcs-kestra-test-bucket'
2024-01-29 16:09:12.910The bucket you tried to delete is not empty.
2024-01-29 16:09:12.910409 Conflict
DELETE https://storage.googleapis.com/storage/v1/b/smantri-gcs-kestra-test-bucket
{
  "code" : 409,
  "errors" : [ {
    "domain" : "global",
    "message" : "The bucket you tried to delete is not empty.",
    "reason" : "conflict"
  } ],
  "message" : "The bucket you tried to delete is not empty."
}
2024-01-29 16:09:12.910com.google.cloud.storage.StorageException: The bucket you tried to delete is not empty.
	at com.google.cloud.storage.StorageException.translate(StorageException.java:165)
	at com.google.cloud.storage.spi.v1.HttpStorageRpc.translate(HttpStorageRpc.java:313)
	at com.google.cloud.storage.spi.v1.HttpStorageRpc.delete(HttpStorageRpc.java:642)
	at com.google.cloud.storage.StorageImpl.lambda$delete$14(StorageImpl.java:516)
	at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:103)
	at com.google.cloud.RetryHelper.run(RetryHelper.java:76)
	at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:50)
	at com.google.cloud.storage.Retrying.run(Retrying.java:65)
	at com.google.cloud.storage.StorageImpl.run(StorageImpl.java:1515)
	at com.google.cloud.storage.StorageImpl.delete(StorageImpl.java:516)
	at io.kestra.plugin.gcp.gcs.DeleteBucket.run(DeleteBucket.java:54)
	at io.kestra.plugin.gcp.gcs.DeleteBucket.run(DeleteBucket.java:19)
	at io.kestra.core.runners.Worker$WorkerThread.run(Worker.java:684)
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 409 Conflict
DELETE https://storage.googleapis.com/storage/v1/b/smantri-gcs-kestra-test-bucket
{
  "code" : 409,
  "errors" : [ {
    "domain" : "global",
    "message" : "The bucket you tried to delete is not empty.",
    "reason" : "conflict"
  } ],
  "message" : "The bucket you tried to delete is not empty."
}
	at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
	at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:118)
	at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:37)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$3.interceptResponse(AbstractGoogleClientRequest.java:466)
	at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1111)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:552)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:493)
	at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:603)
	at com.google.cloud.storage.spi.v1.HttpStorageRpc.delete(HttpStorageRpc.java:638)
	... 10 more

Steps To Reproduce
in the DeleteBucket task, provide a non0-empty bucket to be deleted.
Environment Information

Kestra Version: 0.13.8
Plugin version: 0.13.8
Operating System (OS / Docker / Kubernetes): Docker
Java Version (If not docker):

Example flow
id: gcp-gcs-delete-bucket
namespace: company.team
tasks:
  - id: "delete"
    type: "io.kestra.plugin.gcp.gcs.DeleteBucket"
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
    projectId: "<project-name>"
    name: "<bucket-name>"

this seems expected, I know it from S3 that this is the default behavior
initially this seems safer than deleting a non empty bucket
we could introduce an option to force delete in the style of gsutil -m rm -r gs://my-bucket


Implemented alabaster

Using the alabaster theme so we can get nice logo placement, and
a similar clean theme to testinfra.

Good theme choice 👍


Supporting Procs as timeouts

Before
Rails.application.config.middleware.insert_before Rack::Runtime, Rack::Timeout, service_timeout: 15 #on some condtion
Rails.application.config.middleware.insert_before Rack::Runtime, Rack::Timeout, service_timeout: 20 #on some condtion
After
Rails.application.config.middleware.insert_before Rack::Runtime, Rack::Timeout, service_timeout: ->(_) {  15 || 20 }

Noting for description update: Our goal is to have different timeouts for different paths.  E.g.
 Rails.application.config.middleware.insert_before(
    Rack::Runtime,
    Rack::Timeout,
    service_timeout: ->(env) {
      RSYN_REQUEST_PATH_TIMEOUTS[env['REQUEST_PATH']] || ENV.fetch('WEB_TIMEOUT', 10).to_i
    }
  )

FYI interest to add something like this has been cold in the past: https://github.com/zombocom/rack-timeout/pull/174
Probably worth maintaining and publishing your own fork of this gem if you need this. Feel free to link it in the relevant issues if you do it.

FYI interest to add something like this has been cold in the past: #174
Probably worth maintaining and publishing your own fork of this gem if you need this. Feel free to link it in the relevant issues if you do it.

Thanks for the heads up!  #110 looks pretty similar in concept with the use of a Proc.  We've got an alternative approach already in use but wanted to contribute something back if we could.


Feature request: Allow explicit exclusion of locales in CLI & its yml file

This has come up in two other (now closed) issues, so I'll add a new request for this.
I'd really appreciate it if I could exclude specific locales from push and pull when using the CLI, at least when pulling. I could imagine something like this for the YAML config file:
phraseapp:
  file_format: xml
  project_id: ...
  pull:
    targets:
    - file: ./app/src/main/res/values-<locale_code>/strings.xml
      params:
        exclude: en
  push:
    sources:
    - file: ./app/src/main/res/values/strings.xml
      params:
        locale_id: ...

The exclude part would be new, I wouldn't care much how the locale is specified there (it could also be the id, like in the push section). The reason why I cannot just "whilelist" the other locales instead of excluding that one would be that I don't necessarily know how many locales there are. Those should be added by our localizers directly in PhraseApp, without having the need to update the YAML.
The related issues were #12 and #27. I am in a similar position, i.e. I don't want to pull the default language/locale in an Android project. As above YAML shows, instead I also only push said default.
That way, we have a "single point of truth" for the "input" for our localization team. They also use git sync, so PhraseApp actually does the pull for us most of the time. It's not a big deal having the default language kind of "doubled" in the project (once as default, once as explicit en locale in ./app/src/main/res/values-en/strings.xml after a pull), but it would be cleaner and nicer to be able to omit that. Currently we devs manually go into the PRs created via PhraseApp, delete the superfluous en locale, commit & push and then merge the PR, but I see the day coming we forget that. 😄

Hi @GeroHerkenrath, thanks for your detailed explanation. This case seems to be very Android specific due to the required default strings file. How much of an issue is it for you to have the en translations two times in your app? The size should usually be negligible and the file ./app/src/main/res/values-en/strings.xml. When you include both files there also would no need to manually delete the file :)

Hello @theSoenke, thanks for responding. Yes, this case is kind of Android specific and having two en-files is not that big of an issue. At the moment we manually checkout the branch PhraseApp creates when new translations arrive (for testing purposes), so we will probably just delete the second one manually anyway.
This request certainly does not have a high priority for us and neither should it have that for you. I just wanted to "formally let you know", especially since I saw two older issues with a similar aspect. I also figured that perhaps it's not that difficult for you to implement as it's basically just "excluding some locales from a loop" in the CLI, but of course I realize that's no more than a guess (and perhaps plain wrong).
That being said, iOS is more or less similar, but we get around the duplicated issue since importing the resulting XLIFF files has to happen manually (so far) anyways. There might be other platforms out there where such an exclusion also makes sense.
Regardless, all in all we're very happy with PhraseApp, as it delivers exactly what we need to have a good, productive flow when localizing our apps, so this issue would just be the icing on the cake. 😃 👍 Btw, your documentation articles etc. are very helpful, too!

Thank you very much for your great feedback! We appreciate it very much :)
There are definitely some cases where it makes a lot of sense to exclude some locales and I will add it to our internal feature requests for prioritization

Right now, this creates values-en-US for us since the locale is not just en. This causes a build error for our project and therefore not just icing ont the cake 🙁

I'm using  Brazilian Portuguese translation in Android, but here is difference between region locales in Phrase and Android: pt-BR in Phrase and pt-rBR in Android.
I know how to pull data with pt-BR locale to values-pt-rBR folder.
But also I receive after pulling the values-pt-BR folder, which crash my builds because incorrect style and Android doesn't understand it.
What should I do in that case? The variant with exclude or exclude_id in params will be preferable for me, but may be you know another solution.
Best regards,
Pavel A.

@Papashkin In case you've not already seen in the second issue before you can list the locales that should be pulled in your .phraseapp.yml config like this:
  pull:
    targets:
    - file: ./app/src/main/res/values-pt-rBR/strings.xml
      params:
        file_format: xml
        locale_id: pt-BR
    - file: ./app/src/main/res/values-en/strings.xml
      params:
        file_format: xml
        locale_id: en

This way you have full control over which locales will get pulled


Update dbt plugin definitions to dbt 1.1

dbt core and adapters are updated to ~=1.1. We need to review them and update as appropriate on the Hub!

https://github.com/dbt-labs/dbt-core/releases
https://github.com/dbt-labs/dbt-bigquery/releases

Let's pick this up as soon as we have the new integration tests that @pandemicsyn is working on.

https://github.com/meltano/meltano/issues/6218

@pandemicsyn - Do you want to tackle this at the same time or should we pick it up after.
If after, I think @kgpayne would be a good one to tackle this because he knows what to look for on the dbt side compatibility-wise.

@cjohnhanson do we have any CI tests on the Meltano side to validate that this upgrade hasn't broken anything? With the new integration tests Florian added I think we could add a few. It may be a separate question though whether or not there's any sort of automated cross-project CI that's going to run.

@cjohnhanson I think it's appropriate to have integration tests like https://github.com/meltano/meltano/blob/main/docs/example-library/meltano-run/index.md#getting-dbt-involved that test plugin-specific functionality. Perhaps what's there is sufficient for now but I do want to make sure Meltano changes aren't breaking plugins 😄


Handle non-native line endings in csv parser

General Summary
Reading CSV with Windows-style line endings (CRLF) does not work properly on Mac/Linux, as CR-LF is not properly handled on non-Windows platforms.

Using file streams in text mode causes our "grab whole file" reading approach unreliable on Windows as well.

It should be fixed now but I don't have an easy way to test it.
@sylwiabr You had previously encountered this issue on Mac. Could you please check if the issue is solved now?

It is!

Thanks!

We will close it as soon as we release package with Dataframes. For now it is Release blocked

It shouldn't be release blocked if the last public release didn't contain this bug.

The public release didn't contain Dataframes at all.

That's the point. The bug was never released, so there is no sense in keeping it open until the release.

I think this should be discussed with @lgawlik


chore: bdd-sbhg-1570615345 to 0.0.1

chore: Promote bdd-sbhg-1570615345 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Websocket closes with code 1002 on close

On close Web socket receives a 1002 event code. Any help would be appreciated.

Is that problem obviously related to this plug in?
The status code of 1002 is a protocol error.  I guess the server expects a client connects to it with sub protocols.  You can specify them at the second parameter of the WebSocket constructor.  Sub protocol is an own agreement between a server and a client in general, so you should ask someone server-side staffs about it.

Close this issue since a long time has passed.


Make nullability checking more defined

Currently, checking nullability only takes in account whether a given type is a generic or not. This check is very lossy as it may return true to other generic types even if its not Nullable<> and does not reflect the XML doc for IsNullable. The change makes it so that it properly checks if the type is a Nullable<>.

Needs tests added to https://github.com/ppy/osu-framework/blob/master/osu.Framework.Tests/Extensions/TestIsNullableTypeExtensions.cs

I'm confused by the test case added in f147b4a. It doesn't fail when cherry-picked onto master. And upon a manual check in sharplab it has no right to:

@LeNitrous can you explain where precisely did you first run into this, and update the test case so that it actually demonstrates the case where the method didn't work properly for you? I'm not saying that the change is invalid (it looks more proper), but right now it is hard to objectively justify it without a concrete example where the old code was failing.

Yeah I also saw the change and the description and noticed a discrepancy, the original code would only be caching non-nullable types as null and therefore not have any effect on the end result of the method.

For the record, was this closed as "no longer deemed necessary"?

Yes


WIP rebasing | feat(store-ui): Spinner atom

What's the purpose of this pull request?
This PR is related to Loading Button component/task. IMO It doesn't make sense creating a molecule only for the Loading Button, since the loading is handled on the Button atom children. So, we just need a Spinner component to alternate between the Button text and a loading indicator.
How it works?

How to test it?

References

created another PR https://github.com/vtex/faststore/pull/961


Add methods to support multidoc deserialization

Simply reorganizes creation of deserializer, and adds methods which correctly use the remaining state in multi-document inputs to deserialize these into Vecs.
Resolves https://github.com/dtolnay/serde-yaml/issues/175

@semtexzv thanks for putting this PR together. I am currently using this branch in an application of mine and it works quite well. Any plans to add a from_*_multidoc for the slice & reader variants?

This would be very useful to have. Is there anything still blocking this?

@dtolnay Ping

@dtolnay Ping

maybe @dtolnay can review ?

maybe @dtolnay can review ?


Make clientMutationId optional

Created this PR to make the clientMutationId nullable during schema generation.
We have the requirement of Relay compliant mutations, however without the mutation ids in the current project I am working on, so I tried to find out whether they are actually specified as mandatory.
The GraphQL Relay Server specification is somewhat unclear when it comes to clientMutationId and whether it's a required field or not.
In the Relay Classic guides here there is a description:

That input argument should contain a (string) "clientMutationId" property for the purposes of reconciling requests and responses (automatically added by the Relay.GraphQLMutation API).
The query should request "clientMutationId" as a subselection.

So that indicates that they are optional.
I found another PR doing something similar in another GraphQL library providing Relay capabilities here: https://github.com/api-platform/core/issues/2570, so looks like people are moving away from mandatory mutation ids.
btw, thanks heaps for the great work :+1:

The clientMutationId field is not part of the Relay Modern specs. The Relay Classic specs are unclear but look like it is optional.
An option to not generate the clientMutationId field in the first place would be nice.

@kaqqao Bumping this. Could you take a look?
Thanks!

@pep1 Hey. I'm only now picking this project up again... I understand that you likely no longer care as it's been years. But I'll merge this.


[Indexing] Arbitrary slicing

Depends on https://github.com/iree-org/iree-llvm-sandbox/pull/740.
This PR implements the remainder of slicing, i.e. with arbitrary start, stop, and step:
    ten = Tensor.empty((7, 22, 330, 4400), f32)
    # CHECK: Tensor(%[[TEN:.*]], tensor<7x22x330x4400xf32>)
    print(ten)

    w = ten[:, ::2]
    # CHECK: %[[ARA:.*]] = arith.constant dense<[[0], [2], [4], [6], [8], [10], [12], [14], [16], [18], [20]]> : tensor<11x1xindex>
    print(w.owner.operands[1].owner)
    # CHECK: %{{.*}} = indexing.gather %[[TEN]][%[[ARA]]] gather_dims([1]) unique : (tensor<7x22x330x4400xf32>, tensor<11x1xindex>) -> tensor<11x7x330x4400xf32>
    print(w.owner)

    w = ten[:, ::2, ::30]
    # CHECK: %[[ARA:.*]] = arith.constant dense<[[0, 0], [2, 30], [4, 60], [6, 90], [8, 120], [10, 150], [12, 180], [14, 210], [16, 240], [18, 270], [20, 300]]> : tensor<11x2xindex>
    print(w.owner.operands[1].owner)
    # CHECK: %{{.*}} = indexing.gather %[[TEN]][%[[ARA]]] gather_dims([1, 2]) unique : (tensor<7x22x330x4400xf32>, tensor<11x2xindex>) -> tensor<11x7x4400xf32>
    print(w.owner)

    w = ten[:, ::2, ::30, ::400]
    # CHECK: %[[ARA:.*]] = arith.constant dense<[[0, 0, 0], ..., [20, 300, 4000]]> : tensor<11x3xindex>
    print(w.owner.operands[1].owner)
    # CHECK: %{{.*}} = indexing.gather %[[TEN]][%[[ARA]]] gather_dims([1, 2, 3]) unique : (tensor<7x22x330x4400xf32>, tensor<11x3xindex>) -> tensor<11x7xf32>
    print(w.owner)

    w = ten[:, :, 100:200:5, 1000:2000:50]
    # CHECK: %[[ARA:.*]] = arith.constant dense<[[100, 1000], [105, 1050], ..., [195, 1950]]> : tensor<20x2xindex>
    print(w.owner.operands[1].owner)
    # CHECK: %{{.*}} = indexing.gather %[[TEN]][%[[ARA]]] gather_dims([2, 3]) unique : (tensor<7x22x330x4400xf32>, tensor<20x2xindex>) -> tensor<20x7x22xf32>
    print(w.owner)

including with non-constant operands for the slice object:
      ten = Tensor.empty((7, 22, 330, 4400), f32)
      one = Scalar(1, dtype=index, fold=False)
      start = 100 * one
      stop = 200 * one
      step = 5 * one

      w = ten[:, :, start:stop:step]
      # CHECK: %[[VAL_8:.*]] = "indexing.arange"(%[[VAL_3]], %[[VAL_5]], %[[VAL_7]]) {operand_segment_sizes = array<i32: 1, 1, 1>} : (index, index, index) -> tensor<?x1xindex>
      print(w.owner.operands[1].owner)
      # CHECK: %[[VAL_9:.*]] = "indexing.gather"(%[[VAL_0]], %[[VAL_8]]) {gather_dims = array<i64: 2>, unique} : (tensor<7x22x330x4400xf32>, tensor<?x1xindex>) -> tensor<?x7x22x4400xf32>
      print(w.owner)

      w = ten[:, :, start:stop:5]
      # CHECK: %[[VAL_10:.*]] = "arith.constant"() <{value = 5 : index}> : () -> index
      print(w.owner.operands[1].owner.operands[2])
      # CHECK: %[[VAL_11:.*]] = "indexing.arange"(%[[VAL_3]], %[[VAL_5]], %[[VAL_10]]) {operand_segment_sizes = array<i32: 1, 1, 1>} : (index, index, index) -> tensor<?x1xindex>
      print(w.owner.operands[1].owner)
      # CHECK: %[[VAL_12:.*]] = "indexing.gather"(%[[VAL_0]], %[[VAL_11]]) {gather_dims = array<i64: 2>, unique} : (tensor<7x22x330x4400xf32>, tensor<?x1xindex>) -> tensor<?x7x22x4400xf32>
      print(w.owner)

To be consistent with tensor.pad, could we invert the attribute and call it "nofold" ?

Also, for consistency, the default behavior of tensor.pad is to fold; i.e. this is an optional UnitAttr and its presence disables folding.

Not your fault but this got merged in the wrong order - this depends on https://github.com/iree-org/iree-llvm-sandbox/pull/740 which had some differences (I hadn't rebased).

To be consistent with tensor.pad, could we invert the attribute and call it "nofold" ?

Also, for consistency, the default behavior of tensor.pad is to fold; i.e. this is an optional UnitAttr and its presence disables folding.

Are we sure that we want this? The reason I went back and made it not fold by default is because folding the arange produces a tensor of indices nx1xindex which erases/loses the structure of the arange (start, stop, step).


How to configure 2 projects?

I'm pretty new to cmake and cmake tools and I want to figure out how I can configure 2 projects at the same time:
example:
Root/Sub/CMakeLists.txt
Root/Sub2/CMakeLists.txt
how do I configure both Sub and Sub2's CMakeLists

You can open multiple folders in a workspace in VS Code.  Two possible ways to do this:

Open Root\Sub in VS Code, then open the File menu > Add folder to workspace... and select Root\Sub2
If you want Root open, then you can open Root and set the cmake.sourceDirectory setting to "${workspaceFolder}/Sub", then open the File menu > Add folder to workspace... and select Root\Sub2

Option 1 worked and now everything is working as intended, thank you so much!


Plugins check pure Android plugin's platform fault

In flutter_tools project, file path with "lib/src/plugins.dart" between line 150 to line 160, if the plugin is pure android plugin, then the plugin will be no platform field, may cause a serials problem, like the dependcy of plugin's .flutter-plugins-dependencies file lost the necessary plugin. for example ".flutter-plugins-dependencies file":
{
  "plugins": {
    "android": [
      {
        "name": "your plugin",
        "path": "plugin's path",
        "dependencies": [pluginA, pluginB,  ] # there is missing plugin C which is pure android plugin.
      },
  }
}

the reference code as below:
final Map<String, PluginPlatform> platforms = <String, PluginPlatform>{};
final String pluginClass = pluginYaml['pluginClass'] as String;
if (pluginYaml != null && pluginClass != null) {
  final String androidPackage = pluginYaml['androidPackage'] as String;
  if (androidPackage != null) {
    platforms[AndroidPlugin.kConfigKey] = AndroidPlugin(
      name: name,
      package: pluginYaml['androidPackage'] as String,
      pluginClass: pluginClass,
      pluginPath: path,
    );
  }

If pluginClass is a nessesary field, that is wrong plugin yaml implementation reason, the issue is close.


chore: Devnet setup for p2p bootstrap node

Fixes #6513

Benchmark results
No base data found for comparison.

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Proof generation
Each column represents the number of threads used in proof generation.

Metric
1 threads
4 threads
16 threads
32 threads
64 threads

proof_construction_time_sha256
6,245
1,869
619
692
715

L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
772
772
772

l1_rollup_calldata_gas
6,856
6,868
6,868

l1_rollup_execution_gas
587,396
587,408
587,408

l2_block_processing_time_in_ms
1,260
4,714
9,360

l2_block_building_time_in_ms
31,188
123,101
245,193

l2_block_rollup_simulation_time_in_ms
31,021
122,506
244,036

l2_block_public_tx_process_time_in_ms
15,913
67,262
137,086

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,175
26,479

node_database_size_in_bytes
21,217,360
38,154,320

pxe_database_size_in_bytes
29,868
59,425

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Circuit
protocol_circuit_simulation_time_in_ms
protocol_circuit_witness_generation_time_in_ms
protocol_circuit_proving_time_in_ms
protocol_circuit_input_size_in_bytes
protocol_circuit_output_size_in_bytes
protocol_circuit_proof_size_in_bytes
protocol_circuit_num_public_inputs
protocol_circuit_size_in_gates

private-kernel-init
157
3,670
22,506
19,985
61,999
86,720
2,643
1,048,576

private-kernel-inner
588
5,013
40,740
89,053
61,999
86,720
2,643
2,097,152

private-kernel-reset-small
559
2,379
23,181
117,961
61,999
86,720
2,643
1,048,576

private-kernel-tail
521
4,016
37,620
86,849
79,454
10,688
267
2,097,152

base-parity
6.28
1,765
3,350
128
64.0
2,208
2.00
131,072

root-parity
48.1
64.2
41,933
27,064
64.0
2,720
18.0
2,097,152

base-rollup
660
2,665
43,221
111,158
957
3,136
31.0
2,097,152

root-rollup
87.3
49.8
8,301
11,518
821
3,456
41.0
524,288

public-kernel-app-logic
238
131
822
96,978
85,095
116,448
3,572
4,096

public-kernel-tail
854
628
1,205
388,207
7,755
10,176
251
512

public-kernel-setup
213
154
934
138,309
85,095
116,448
3,572
4,096

public-kernel-teardown
223
260
840
143,320
85,095
116,448
3,572
4,096

merge-rollup
6.13
28.4
2,151
2,760
957
3,136
31.0
65,536

private-kernel-tail-to-public
N/A
9,729
72,346
N/A
N/A
116,960
3,588
4,194,304

Stats on running time collected for app circuits

Function
app_circuit_proof_size_in_bytes
app_circuit_proving_time_in_ms
app_circuit_size_in_gates
app_circuit_num_public_inputs

SchnorrAccount:entrypoint
16,128
46,988
2,097,152
437

Test:emit_nullifier
16,128
1,672
65,536
437

FPC:fee_entrypoint_public
16,128
9,173
524,288
437

FPC:fee_entrypoint_private
16,128
9,008
524,288
437

Token:unshield
16,128
47,449
2,097,152
437

SchnorrAccount:spend_private_authwit
16,128
2,689
131,072
437

Token:transfer
16,128
34,993
2,097,152
437

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.5
17.1
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.7
31.8
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.614
0.528
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
48.7
75.0
242
472
920
1,827
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.500
0.464
0.441
0.442
0.437
0.437
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
58.6
111
352
693
1,377
2,746
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
106
208
692
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.509
0.499
0.479
0.477
0.477
0.479
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
63.2

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
108

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.555

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
84,741
673,219

Transaction size based on fee payment method
| Metric |  |
| - |  |
Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes
2 new note hashes

tx_pxe_processing_time_ms
29,506
4,031
99,045

Metric
0 public data writes
1 public data writes
2 public data writes
4 public data writes
8 public data writes

tx_sequencer_processing_time_ms
1,341
2,139
1,938
3,051
1,925


update readme for communication group to include BOM information

Soft ping, review please
/cc: @minnieliu, @ankitarorabit, @JianpingChen , @martinbarnas-ms , @petrsvihlik , @Azure/azure-sdk-communication-code-reviewers

Thank you for the feedback.


A new prop: onSubmitFail

This pull request is partly stemming from the conversation over at #776.
The way that we currently are submitting forms is great! Except for one thing... we don't know whether or not the submission failed. There is a current (quite hacky) way of checking this through the use of the returnRejectedSubmitPromise flag. Using this flag is quite tricky and cumbersome. It causes what some might call a programmer's headache (#488, #256, #291, #616). It even called a noble programmer, @pcgilday, to resolve some confusion with his comment which acted as a guide for many.
I believe that handling a failed submission should be more programmer-friendly, in a way that is also React oriented. So all of this is a major cause for a new prop: onSubmitFail.
The new prop onSubmitFail will be passed to your form upon initialization, and will act like one would think. It gets called when the form gets submitted and failed validation. Simple enough. No ES6 promises. No more headaches. Just a callback. And maybe even a smile :smile:
Callback syntax: onSubmitFail(errors: object | undefined)
The errors parameter will contain the errors returned from synchronous validation. This parameter will be an object if a synchronous validation fails in the form { field: error, ... }. However, it could also be undefined if an asynchronous validation fails.
Edit: Added new errors parameter

As a worthy mention, I only intend for this to be a temporary solution to the problem. We getting closer to the big rewrite, v6.0. :tada:

Current coverage is 97.89%

Merging #820 into master will increase coverage by +0.04% as of 2c8bd88

@@            master    #820   diff @@
======================================
  Files           72      72
  Stmts         3635    3660    +25
  Branches       287     289     +2
  Methods          0       0
======================================
+ Hit           3557    3583    +26
+ Partial         35      34     -1
  Missed          43      43

Review entire Coverage Diff as of 2c8bd88

Powered by Codecov. Updated on successful CI builds.

Nice work, @puradox. :+1:

Someone was also asking for an onSubmitSuccess callback. While you're in there and clearly understand the tests and handleSubmit(), can you add that, too?

@erikras Thanks! I assumed that the existing onSubmit callback was equivalent to an onSubmitSuccess callback, am I wrong? I'll double check in the code.

Both onSubmitFailed and onSubmitSuccess could be done with the existing promise API, but it's about convenience.

@erikras If I were to implement an onSubmitSuccess callback, there would be some a bit of extra redundancy. Are you sure you want me to implement this?
In my own code, I use onSubmit without the returnRejectedSubmitPromise flag to check if the submission was successful (it only fires if the submit was successful). Then I use onSubmitFail to check if the submission was erroneous.
This whole proposal was to eliminate the need for the returnRejectedSubmitPromise flag and promise rejection altogether, while maintaining backwards compatibility.
However, I do see your point in creating a more explicit callback that does exactly what it says. I agree that this would completely eliminate a lot of the existing confusion. I'll get working on it.

No, I'm not 100% sure, but, at the risk of increasing API surface area, I do plan on implementing both in v6. You are more than welcome to say no. This PR still stands as an improvement.

@erikras What's the status on this PR? Can we get it merged into master?

I'll document and publish soon (tomorrow). 👍

@erikras Thanks man! I'm very excited to see this go out. I appreciate all that you've done for the React / Redux community :smile: If you need any help with the new rewrite, you can always mention me. I'll be glad to help out.

Published as v5.1.0. Thanks again.
You've shown that you know your way around the library, so if I need someone for the rewrite, you're on the shortlist. 😉

Hi, I'm looking for the documentation for onSubmitSuccess and onSubmitFailure, but can't find it here: http://redux-form.com/5.2.3/#/api/props?_k=j59cbr
I see it's pretty know, so understandable that it's not up there yet. Is this something you're intentionally holding off on, or can someone (me or anyone else) provide a PR adding these to the v5 docs?

@CodyReichert Ha, no, those are props that you pass to the decorated form, not that redux-form provides to your wrapped component. So their docs are here.
I suppose they could be, but that was not the intention when onSubmitSuccess and onSubmitFailure were proposed and implemented.

@erikras - heh, I realized that right after I submitted the comment. Thank you!

How can I get access to React refs from inside of onSubmitFail?  I'm trying to do something like:
class LoginPage extends React.Component {
  render () {
    ...
    <input ref="password" />
    ...
}
export default reduxForm(
  {
    form: 'login',
    fields: [ 'username', 'password' ],
    validate,
    onSubmitFail: (errors) => {
      React.findDOMNode(this.refs.password).focus()
    }
  }
)(LoginPage)

Hi @brennancheung , have you found a way to do that?

@Strajk I went with document.getElementById('password').focus() for now.  I know it's not the best way to do it and it won't work for server side rendering but I couldn't find any other way.  I still think it is an issue not being about to have access to the component within the onSubmitFail handler though.

@brennancheung @Strajk You are going to want to utilize the prop version of onSubmitFail.

IMPORTANT: All of these configuration options may be passed into reduxForm() at "design time" or passed in as props to your component at runtime. (source)

Your refactored React Component would then look something like this (I haven't tested this):
@reduxForm({
  form: 'login',
  fields: [ 'username', 'password' ],
  validate
})
class LoginPage extends Component {
  focusPasswordField() {
    this.refs.password.focus();
  }
  render() {
    ...
    <input ref="password" />
    ...
  }
}

class App extends Component {
  handleSubmitFail(errors) {
    this.refs.login.focusPasswordField();
  }
  render() {
    ...
    <LoginPage ref="login" onSubmitFail={this.handleSubmitFail} />
    ...
  }
}

@puradox, this.refs.login.focusPasswordField does not exist in your example.  this.refs.login.refs exists but it doesn't contain the actual refs (it's an empty object).  None of the methods I define in LoginPage seem to be visible from this.refs.login.

@brennancheung Ah yes, I forgot that the class is being wrapped by Redux-Form. I doubt that we'd be able to access the underlying component (LoginPage in our case) since createHigherOrderComponent doesn't keep a ref to it. That means that we have to think of another way...

@brennancheung Instead, another approach would be one that is completely unrelated to onSubmitFail, is to provide your own handleSubmit method. I tested this time :smile:
function validate(values) {
  const errors = {};
  if (!values.password || values.password !== 'secret') {
    errors.password = 'Invalid';
  }
  return errors;
}

@reduxForm({
  form: 'login',
  fields: ['username', 'password'],
  validate
})
class LoginPage extends Component {

  handleSubmit = (event) => {
    const { fields, handleSubmit } = this.props;

    handleSubmit(event);

    if (fields.password.error) {
      this.refs.password.focus();
    }
  }

  render() {
    const { fields: { username, password } } = this.props;
    return (
      <form onSubmit={this.handleSubmit}>
        <input placeholder="Password" type="password" ref="password" {...password} />
        <input placeholder="Username" {...username} />
        <button type="submit">Submit</button>
        {password.touched && password.error && <div>{password.error}</div>}
      </form>
    );
  }
}

class App extends Component {
  handleSubmit = values => console.log(values)
  handleSubmitFail = errors => console.log(errors)
  render() {
    return (
      <LoginPage onSubmit={this.handleSubmit} onSubmitFail={this.handleSubmitFail} />
    );
  }
}