crashes on latest MM (2.22)     'invalid options argument'

Latest MM version loads mdkirp V 1.0.4 which is promise based
now get error
 node generate_token_v2.js mkdirp in generate
/home/sam/MagicMirror/node_modules/mkdirp/lib/opts-arg.js:13
    throw new TypeError('invalid options argument')
          ^

TypeError: invalid options argument
    at optsArg (/home/sam/MagicMirror/node_modules/mkdirp/lib/opts-arg.js:13:11)
    at mkdirp (/home/sam/MagicMirror/node_modules/mkdirp/index.js:11:10)
    at generate (/home/sam/MagicMirror/modules/MMM-GooglePhotos/generate_token_v2.js:19:7)

mkdirp 1.0.04 s promise based
need to change  generate_token_v2.js code to
      mkdirp(path.dirname(tp)).then( () => {
        fs.writeFileSync(tp, JSON.stringify(client.credentials))
        console.log("Token is generated. check it. (ls -al)")
      })

Could you please try dev branch to see if it is fixed?

looks good


Policies that allow ANY requirement instead of ALL

From the examples and code that I've read, I don't see a straightforward way to make a policy that will pass if one of two (or several) requirements pass.  I figure I must be missing something fundamental.
The behaviour that I'm seeing is that if I have two requirements that are AuthorizationHandlers A and B where either one should satisfy the policy and one of them calls context.Succeed(requirement) and the other one does nothing, the policy fails.  I do note, though, that both policies have their Handle methods called, even if the first one does not call Succeed.  The one that ran but did not succeed is listed in context.PendingRequirements and both context.DidFail and context.DidSucceed are false.
Is there a 'correct' way to do this or have I made a wrong turn somewhere?

This seems to work, but feels wrong to me.
    public class AnyRequirement : AuthorizationHandler<AnyRequirement>, IAuthorizationRequirement
    {
        private readonly IEnumerable<IAuthorizationHandler> _handlers;

        public AnyRequirement(params IAuthorizationHandler[] handlers)
        {
            _handlers = handlers;
        }

        public override async Task HandleAsync(AuthorizationContext context)
        {
            foreach (var handler in _handlers)
            {
                var subContext = new AuthorizationContext(new[] { (IAuthorizationRequirement)handler }, context.User, context.Resource);
                await handler.HandleAsync(subContext);
                if (subContext.HasSucceeded)
                {
                    context.Succeed(this);
                    break;
                }
            }
        }
        protected override void Handle(AuthorizationContext context, AnyRequirement requirement)
        {
        }

A policy is a collection of requirements which must ALL be satisfied.  But you can certainly have a single requirement that can succeeds in several different ways.

Yes, of course you can.  The question is if that approach leads to design patterns that are practical for real-world applications.
For example, a common concern in a lot of applications is to allow an action to occur if the user is EITHER a sysadmin/superuser OR the owner of a resource.
The AuthorizationPolicyBuilder provides very tidy and expressive configuration methods that handle most common cases, such as requiring particular roles or claims.
I can accomplish what I need, but It feels like I'm fighting the framework in order to implement what should be a common situation.  I'm starting this discussion in order to determine if there's already an elegant way to accomplish this that I'm missing, or if not, if this is a common enough requirement to consider accommodating it in the framework, rather than having many people re-implement the same logic in different ways.
Using the above code, I implemented an extension to the AuthorizationPolicyBuilder that creates a sub-builder to collect requirements, then placing them inside of an AnyRequirement.  This at least allows you to still use the builder.
        public static AuthorizationPolicyBuilder Any(this AuthorizationPolicyBuilder builder,
            Action<AuthorizationPolicyBuilder> configAction)
        {
            var subBuilder = new AuthorizationPolicyBuilder();
            configAction(subBuilder);
            builder.AddRequirements(new AnyRequirement(subBuilder.Requirements.OfType<IAuthorizationHandler>().ToArray()));
            return builder;
        }

Usable as follows:
        builder.Services.Configure<AuthorizationOptions>(options =>
            {
                options.AddPolicy("CanEditFoo", pb => pb.Any(pbAny => pbAny.RequireClaim("SysAdmin").AddRequirements(new CustomRequirement()) ));
            });

Still, AnyRequirement feels like a hack, but I can't figure out a more elegant way to accomplish the same thing.

We view this somewhat differently.
We view access as a single requirement, for example Edit. The Edit requirement has multiple ways to fulfill it, This user is an administrator or this user owns the resource.
So you write multiple handlers for the resource/operation; e.g.
    public class AdminAuthorizationHander : AuthorizationHandler<EditRequirement, Document>
    {
        protected override void Handle(AuthorizationContext context,
                                       EditRequirement requirement,
                                       Document resource)
        {
            // Check superuser
            if (isSuperUser(context.User))
            {
                context.Succeed(requirement);
                return;
            }
        }
    }

This checks for an admin
Then you have the following to check the resource owner (here I'm assuming there's an owner property on your resource)
    public class DocumentEditHandler : AuthorizationHandler<EditRequirement, Document>
    {
        protected override void Handle(AuthorizationContext context,
                                       EditRequirement requirement,
                                       Document resource)
        {
            if (context.User.Identity.Name == resource.Owner)
            {
                context.Succeed(requirement);
            }
        }
   }

And then don't forget to register them within your config;
    services.AddInstance<IAuthorizationHandler>(new DocumentEditHandler());
    services.AddInstance<IAuthorizationHandler>(new AdminAuthorizationHander());

So what happens now is if either succeed authorization will succeed. If none succeed then it's considered a failure. If you call Fail at any point then it will fail. The key thing to take away is it's a very rare case where you would need to call fail.
Hopefully that makes sense, I apologise for none of this being properly documented yet.

Thanks for having this discussion with me and I understand that documentation is in the process of being written.
In your example, I assume that EditRequirement is just an empty class with the IAuthorizationRequirement marker interface on it.  Correct?

We view access as a single requirement, for example Edit.

This sounds like you're treating the IAuthorizationRequirement (let's just call it a requirement) as an abstract requirement: "The requirement to be able to edit a document" without any reference to the fulfillment of the requirement.  I've been thinking of requirements as a description of what satisfies a requirement: "The requirement of having a sysadmin claim."
In the way you're describing it, an external IAuthorizationHandler is responsible for taking the abstract requirement and procedurally checking if the requirement is satisfied according to the context and/or resource.
Now, I'm going to argue that the reason why my first effort in trying to understand this led me on this path is because of the AuthorizationPolicyBuilder, the AuthorizationPolicy itself and the MVC AuthorizeAttribute.  When I specify a policy using the AuthorizeAttribute in a controller method, the 'resource' that's being passed to the handler is an MVC-specific context object which contains only implementation-specific details of my MVC controller, and therefore would seem to belong above the authorization layer.  Therefore it made sense to me to annotate my controller method with something like: [Authorize("CanEditDocument")] for an action method like EditDocument().
I had then come across example code that described using the AuthorizationPolicyBuilder inside of an AuthorizationOptions configure block in order to rapidly and declaratively create a Policy where I use the RequireFoo() methods to describe the requirements.
But what you're telling me is that "CanEditDocument", conceptually, should map to a REQUIREMENT, not to a Policy.  Is that correct?  This is fundamentally different from what the self-documenting nature of the AuthorizationPolicyBuilder provides, though.  Here's my thought process:

AuthorizationPolicyBuilder builds policies
AuthorizationPolicyBuilder has a bunch of methods starting with 'require'
Therefore each of the 'require' methods corresponds to a 'requirement'
The built-in declarative 'require' methods allow you to describe what you need to SATISFY a requirement, like having a role, or a claim, or being a logged in user.
Therefore, a Policy is a set of Requirements that declare the satisfaction conditions.

In your model, a Policy is a set of Requirements that are abstract.  Rather than declaring what satisfies them, you create an external Handler that handles each requirement and procedurally determines if the requirement is satisfied or not, without making use of the methods on AuthorizationPolicyBuilder that would otherwise neatly describe the satisfaction requirements.
This model doesn't really appear consistent to me, at least not without further explanation of what the purpose of AuthorizationPolicyBuilder is.

I think you have summarized everything correctly above.  The PolicyBuilder is how you register policies.  It has some sugar for the common operations like including simple requirements that look for particular claims, but in general you will be directly adding your own IAuthorizationRequirements mostly.
To clarify the split.  You can think of the requirement as the operation that was requested.  And a handler's job (note the requirement can actually be the handler in many cases), is to determine if a particular operation should be allowed.  This split was done to allow the policy to just be data/simple (and easy to configure via options/builder), and keep everything else in the handlers, which live in DI.
Does that make sense?

At the end of the day policies are just a convienent package of requirements, that must all be fulfilled together.  The core authorizaion services interface is
Task<bool> AuthorizeAsync(ClaimsPrincipal user, object resource, IEnumerable<IAuthorizationRequirement> requirements)

You can think of the requirement as the operation that was requested. And a handler's job (note the requirement can actually be the handler in many cases), is to determine if a particular operation should be allowed.

Okay, you've described what a requirement is.  So what's a policy, then?  How fine-grained are policies envisioned as being?  One per app, containing a requirement for every single operation that might happen?  One per controller, dealing with a single resource?  Every single requirement in a policy is checked and has to explicitly pass whenever an action is protected by a policy, therefore I don't see a policy as being and more course-grained than a requirement, at least how you describe it.  It seems like if you were doing anything at all more complex than what you can accomplish with the PolicyBuilder, there is no point in ever having more than a single requirement in a Policy.  Therefore, no re-use of "portions" of requirements, at least not without the developer implementing some infrastructure for that custom.
I'm feeling like a lot of great thought went into certain aspects of the Policy mechanism because there appear to be some deep aspects of it, including "fall-through" vs "Fail" behaviour of multiple requirements inside of AuthorizationPolicy's DidSucceed property, but can't really think of any examples of how they can be taken advantage of in a real-world situation.  Every built-in Requirement is also its own Handler in the framework, as implemented now.  Therefore if a handler "falls-through" without calling Context.Fail(), the entire Policy will always fail, since that last Handler will always be left pending.
Similarly, I see a lot of practicality of the RequirementBuilder allowing concise, easy-to-ready declaration of requirements, but then you have to create a new AuthorizationHandler class for each requirement whenever you want to go beyond the basics (such as conditional or disjunctive behaviour).  It feels like the expressiveness is in the wrong layer and the RequireClaim (and similar) methods should be expressing particles of a single Requirement instead of each always being an individual requirement within the Policy.

(whoops, hit "Close and comment accidentally")

The intent was to make everything flexible and compose-able.  Policies are just meant to be a collection of requirements which must be satisfied together, nothing more.  Its literally meant to be sugar for doing a logical AND across requirements, and also hangs the ability to filter which authentication schemes take part in producing the identity.  You are free to build an uber requirement if you want, but the idea was to make it fairly straightforward to have a policy that has several claims requirements which are checking for different claims.
A policy really only exists to to give something you can put on an AuthorizeAttribute.  Requirements are just one part of the policy, but its definitely not wrong if to only have one requirement in every policy.  Its mostly just a grouping thing.
But yes if you want to have a requirement that is doing two different checks.  That turns into logic in your handler similar to this.  But as we said before, for most operations, you should be able to have a separate handler for AuthCheck1 and AuthCheck2 without making an uber handler.
  void Handle(AuthorizationContext context, MyRequirement req) {
    if (DoAuthCheck1(context) || DoAlternateAuthCheck2(context)) {
       context.Succeed(req);
    }
  }

Do you want to just use your Edit example to try and illustrate the concerns you have?

If you have any further questions feel free to reply here

+1 on this request. I think that it would be nice if "Policy" would support the same construct as "Roles" where you can specify a comma separate list to do an OR among roles, and different attributes to do an AND among roles as documented here: https://docs.asp.net/en/latest/security/authorization/roles.html

@blowdart: I would also like to hear some reasoning and philosophy behind the design of the authorization APIs - Policies, Requirement, RequirementHandlers.  It sounds ok when working with abstract scenario, but it seems like I'm not the only one confused here.
My problem is, that in real world scenarios it does not feel natural at all, just like @cherrydev stated. Requirement, called EditDocument and RequirementHandlers called "AdminHandler", "OwnerHandler". It seems like requirement should be called Permission instead. I've had simmilar question here: https://stackoverflow.com/questions/47775538/how-to-authorize-user-to-access-to-resource-based-on-or-rules?noredirect=1#comment82513564_47775538

You can call them permissions if you like, it's a semantic thing. It's the same sort of argument around claims versus permissions - you don't put permissions in an identity, but people treated roles like permissions anyway. However they're not, permission is a combination of the identity, the action it's going to take, and the thing it's going to act on. It's a requirement because it's something that needs to be fulfilled in order for permission to be granted.
Plus in all honesty it's not going to change name.

I don't think its that weird for an AdminHandler to succeed all requirements if the user is an admin, that's clearly a special purpose handler who skips all other requirements.

The current design lets you have as granular requirements as you like, something like MinimumAge is a simple requirement, if you want to have one mega CanAccessDocument and complex handlers that deal with that, you are free to go that route as well.

@HaoK: no, I like simple granular requirements, but granularity means that I can combine the peaces. If I'm not able to combine them with OR operator, which is common business requirement, I'm forced to use mega requirements.

Using your stack overflow example, I think you can just have a policy per action

ReadPermission
EditPermission

And multiple handlers:

Single AuthorHandler that succeeds all requirements for the author.
Concrete resource based handlers AuthenticationHandler<TResource> that are specific to each resource type which are all registered in DI, each would run on every authorization but they would ignore any authorization requests for mismatching resources.

@HaoK:

you can just have a policy with a single requirement per action and multiple handlers.

Ok, let's say particular resource has its Owner and Sponsor and I have 2 actions:

Read: I want to authorize user who is Owner or Sponsor (custom term, it means basically reviewer) of the resource.

Edit:  In the second I want to authorize Sponsor only.

ReadPermission : IAuthorizationRequirement

IsSponsorResource1ReadPermissionHandler: AuthorizationHandler<ReadPermission, Resource1>
IsOwnerResource1ReadPermissionHandler: AuthorizationHandler<ReadPermission, Resource1>
IsOwnerResource1EditPermissionHandler: AuthorizationHandler<EditPermission, Resource1>

Where exactly is the reusability? We have just broken the logic into small peaces that are not reusable.
As opposed to this, there could be:
options.AddPolicy("CanReadResource1, new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .RequireAny(any =>
            {
                    any.AddRequirements(new IsOwnerRequirement())
                    any.AddRequirements(new IsSponsorRequirement())                        ,
            }
            .Build());

options.AddPolicy("CanEditResource1, new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .AddRequirement(new IsSponsorRequirement())
            .Build());

Now, think about both aproaches. How would change the code if there was 3rd action, e.g Delete, where only Owner should be authorized. How would change the code if there was another resource

If you want to reuse the logic, can't you just have reusable IsOwner(user, resource) and IsSponser(user, resource) methods that each of the handlers call.  The handlers aren't meant to be reusable, they are really supposed to be a concrete instance of authorization logic.
   ReadPermission : IAuthorizationRequirement
   EditPermission : IAuthorizationRequirement
   DeletePermission : IAuthorizationRequirement

You only need one owner handler, assuming you can write a IsOwner(ClaimsPrincipal user, object resource) method.
   public class OwnerHandler : IAuthorizationHandler {
      public Task HandleAsync(AuthorizationHandlerContext context) {
           foreach (var req in context.PendingRequirements)
               if (req is ReadPermission || req is EditPermission)
                   if (IsOwner(context.User, context.Resource)) context.Succeed(req)
      }
   }

You will need an handler per resource:
    SponserResource1Handler : AuthorizationHandler<ReadPermission, Resource1>
    SponserResource2Handler : AuthorizationHandler<ReadPermission, Resource2>

Or you can write a single handler that calls into a similar IsSponser(ClaimsPrincipal user, object resource) helper method
    public class SponserHandler : IAuthorizationHandler {
      public Task HandleAsync(AuthorizationHandlerContext context) {
           foreach (var req in context.PendingRequirements)
               if (req is ReadPermission)
                   if (IsSponser(context.User, context.Resource)) context.Succeed(req)
      }
   }

Actually you can just have a single handler with those helper:
   public class PermissionHandler : IAuthorizationHandler {
      public Task HandleAsync(AuthorizationHandlerContext context) {
           foreach (var req in context.PendingRequirements)
               if (req is ReadPermission)
                   if (IsOwner(context.User, context.Resource) || IsSponser(context.user. context.Resource)
                        context.Succeed(req)
               else if (req is EditPermission || req is DeletePermission)
                   if (IsOwner(context.User, context.Resource))
                      context.Succeed(req)
      }
   }

Ok, it makes sense. I think I was actually right - in real wold scenarios requirements should be defacto permissions. Requirements like MinimumAgeRequirement resp IsSponsorRequirement, IsOwnerRequirement are just theoretical options, but not very usable. In order to combine the rules with OR, they I have to combine then into one requirement, that becomes de facto  permission..
Honestly, I'm not charmed with this moral of the story. Maybe further experience will open eyes. Anyway, thanks for the time and samples. Hopefully it will help those confused by the samples in documentation.

Shouldn't my Policy stops checking for subsequent Requirements if, for instance, the first Requirement fails? It feels like a unnecessary processing, because it has already failed, right?


Initial Release of the Lnk.Bio certified connector

Lnk.Bio Certified Connector

[x ] I attest that the connector doesn't exist on the Power Platform today. I've verified by checking the pull requests in GitHub and by searching for the connector on the platform or in the documentation.
[ x] I attest that the connector works and I verified by deploying and testing all the operations.
[x ] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
[x ] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
[x ] I validated the swagger file, apiDefinition.swagger.json, by running paconn validate command.
[ x] If this is a certified connector, I confirm that apiProperties.json has a valid brand color and doesn't use an invalid brand color, #007ee5 or #ffffff. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.

@microsoft-github-policy-service agree [company="Lnk.Bio"]
On Tue, Nov 29, 2022 at 8:52 AM microsoft-github-policy-service[bot] <
@.***> wrote:

@andreaolivato https://github.com/andreaolivato please read the
following Contributor License Agreement(CLA). If you agree with the CLA,
please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]
Options:

(default - no company specified) I have sole ownership of
intellectual property rights to my Submissions and I am not making
Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work
for my employer (or my employer has intellectual property rights in my
Submissions by contract or applicable law). I have permission from my
employer to make Submissions and enter into this Agreement on behalf of my
employer. By signing below, the defined term “You” includes me and my
employer.

Contributor License Agreement Contribution License Agreement
This Contribution License Agreement (“Agreement”) is agreed to by the
party signing below (“You”),
and conveys certain license rights to Microsoft Corporation and its
affiliates (“Microsoft”) for Your
contributions to Microsoft open source projects. This Agreement is
effective as of the latest signature
date below.

Definitions.
“Code” means the computer software code, whether in human-readable
or machine-executable form,
that is delivered by You to Microsoft under this Agreement.
“Project” means any of the projects owned or managed by Microsoft
and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or
distributing code or other content to any
Project, including but not limited to communication on electronic
mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf
of, the Project for the purpose of
discussing and improving that Project, but excluding communication
that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material
Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement
before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now
or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work. You represent that each of Your Submissions
is entirely Your original work.
Should You wish to Submit materials that are not Your original work,
You may Submit them separately
to the Project if You (a) retain all copyright and license information
that was in the materials as You
received them, (b) in the description accompanying Your Submission,
include the phrase “Submission
containing materials of a third party:” followed by the names of the
third party and any licenses or other
restrictions of which You are aware, and (c) follow any other
instructions in the Project’s written
guidelines concerning Submissions.
Your Employer. References to “employer” in this Agreement include
Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a
contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your
employer has intellectual
property rights in Your Submission by contract or applicable law, You
must secure permission from Your
employer to make the Submission before signing this Agreement. In that
case, the term “You” in this
Agreement will refer to You and the employer collectively. If You
change employers in the future and
desire to Submit additional Submissions for the new employer, then You
agree to sign a new Agreement
and secure permission from the new employer before Submitting those
Submissions.
Licenses.

Copyright License. You grant Microsoft, and those who receive the
Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive,
royalty-free, irrevocable license in the
Submission to reproduce, prepare derivative works of, publicly
display, publicly perform, and distribute
the Submission and such derivative works, and to sublicense any or all
of the foregoing rights to third
parties.
Patent License. You grant Microsoft, and those who receive the
Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive,
royalty-free, irrevocable license under
Your patent claims that are necessarily infringed by the Submission or
the combination of the
Submission with the Project to which it was Submitted to make, have
made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the
Project.
Other Rights Reserved. Each party reserves all rights not
expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without
limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.

Representations and Warranties. You represent that You are
legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your
original work (except as You may
have disclosed under Section 3). You represent that You have secured
permission from Your employer to
make the Submission in cases where Your Submission is made in the
course of Your work for Your
employer or Your employer has intellectual property rights in Your
Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You
represent and warrant that You
have the necessary authority to bind the listed employer to the
obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless
You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE
WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED
UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO,
ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to Microsoft. You agree to notify Microsoft in writing of
any facts or circumstances of which
You later become aware that would make Your representations in this
Agreement inaccurate in any
respect.
Information about Submissions. You agree that contributions to
Projects and information about
contributions may be maintained indefinitely and disclosed publicly,
including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the
laws of the State of Washington, and
the parties consent to exclusive jurisdiction and venue in the federal
courts sitting in King County,
Washington, unless no federal subject matter jurisdiction exists, in
which case the parties consent to
exclusive jurisdiction and venue in the Superior Court of King County,
Washington. The parties waive all
defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire
agreement between the parties, and
supersedes any and all prior agreements, understandings or
communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may
be assigned by Microsoft.

—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/PowerPlatformConnectors/pull/2174#issuecomment-1329934668,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAYS6EJRIYGFABARVTL343WKVHUZANCNFSM6AAAAAASN5IVQ4
.
You are receiving this because you were mentioned.Message ID:
@.***>

@microsoft-github-policy-service agree company="Lnk.Bio"
On Tue, Nov 29, 2022 at 8:53 AM microsoft-github-policy-service[bot] <
@.***> wrote:

@andreaolivato https://github.com/andreaolivato the command you issued
was incorrect. Please try again.
Examples are:
@microsoft-github-policy-service agree
and
@microsoft-github-policy-service agree company="your company"
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/PowerPlatformConnectors/pull/2174#issuecomment-1329935505,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAYS6CCNYY7GBORWJIYMKLWKVHZTANCNFSM6AAAAAASN5IVQ4
.
You are receiving this because you were mentioned.Message ID:
@.***>

@microsoft-github-policy-service agree company="Lnk.Bio"

All required corrections have been commited.

Hello @andreaolivato,
I hope you are doing well.
Congratulations, your pull request is approved and merged. Please submit the files to ISV Studio or update your submission using your latest commit ID, please allow us up to 1-2 weeks to review your submission, and our Engineers will notify you in the “Activity Control” area in ISV Studio. Please make sure that the icon meets all the requirements, that it’s size is 230x230, icon background is not white or transparent and it matches the iconBrandColor property in apiProperties.json file.
After making the submission in ISV Studio, please attach an intro.md file in the activity control section. This file is required and it's different from readme.md. You can find an example of intro.md file on this page at step 6.
Please Create an environment in the Preview region. You will use this environment later to test your connector after Microsoft is done with the functional verification for your connector.
We expect all tests to be completed within 1-2 weeks.
If your connector passes all tests, the deployment process begins, and it typically takes up to 3 to 4 weeks to deploy your connector to all of our regions.
Please let me know if you have any questions or run into any problems while creating or updating your submission.
Thank you very much for working with us.


Automate running HMR "canary" tests before release

Spec:

GH action
Runs on openforcefields PR that adds a new file

Does HMR sims w/ 4fs timestep if a new offxml is being added
Loads pre-charged molecule set

Molecule set lives in a separate repo
Should be seeded from s99F “coverage set”
Also add propyne molecule
Emphasize that tests are “canaries” – NOT meant to make rigorous benchmark data, just designed to prevent release of a bad FF.

These tests will NOT make data artifacts
Tests run

4fs, HMR, vacuum -- Example at #19
Verbose output – Each test should print its SMILES and success/failure, so that it’s easy to reproduce locally if a molecule fails.

 Automate FF release simulation-based "canary" tests

A more fundamental source for the "coverage set" may be here: https://github.com/openforcefield/open-forcefield-data/tree/master/Utilize-All-Parameters/selected

The first and simplest tests have been added. #22 adds HMR canary tests only for two molecules (a simple propyene and a larger molecule reported in the root issue). I think the next steps should be in two directions:

Establish a broader set of molecules that we would expect to be stable in HMR simulations. Some of the molecules in a coverage set (https://github.com/openforcefield/openforcefields/blob/09da994f0745a62be2297709487f235c683542a1/canary/data/coverage.smi) cannot be typed.
Consider, based on need, adding in other basic checks outside of HMR simulations. Keep in mind that rigorous benchmarking and physical validation is out of scope, but there may be other simple tests that can safeguard against the release of a bad force field.


Show file version's age in .history

This extension is already awesome though besides name + date it'd be useful to have also version's age like:

moments ago
few minutes ago
15 minutes ago
1 hour ago
yesterday
last week

Something among these lines.

What exactly do you want ?
In tree explorer the history is already grouped by relative date (last hour, today, yesterday...)
In html or command view, this is not the case.  If someone has some interest in, I'll improve this views too. (Personnaly I don't use them anymore...)


Fixup header visibility

This takes the work that @idoru started in #315 and updates it for the current state of the master branch. It accomplishes a few goals:

Ensure the NSMethodSignature and NSInvocation categories aren't publicly exposed
Add cdr_ prefixes to category methods so we aren't risking conflicts
Reorganize header files on disk to reflect the public/project division
Make sure that both the framework targets and the podspec only expose the appropriate public headers

Once this is in, I think we will be in a good spot regarding what we are exposing and what is hidden, across all our distribution mechanisms.
CC @akitchen @tjarratt

@tjarratt and I were talking about this yesterday and we are pretty happy about it. I would love to get any feedback from @idoru before merging though!

👍🏾
Thanks everyone for tidying this up
On Thu, Aug 13, 2015 at 7:32 PM, Brian Croom<EMAIL_ADDRESS>wrote:

@tjarratt and I were talking about this yesterday and we are pretty happy about it. I would love to get any feedback from @idoru before merging though!
Reply to this email directly or view it on GitHub:
https://github.com/pivotal/cedar/pull/350#issuecomment-130772029

:+1: hiding the NSInvocation category header was a huge win.

Since I was the one who made that header public in the first place, it was about time I clean that up :)

We're all just trying to make the world a better place.
Really glad you found the time for this PR, I was really struggling to make time for this lately.

Thanks @briancroom for following through!
I tried it out on a few different projects and it looks good to me.


Need to ability to Update an Order

As a System Administrator/Orders Manager
I need the ability to update an order
So that I can reflect any changes in the order data
Details and Assumptions
Since we have a subordinate API for items, this API will not be used to update order items.
Acceptance Criteria
Given the service is running
When I update an order
Then the information should be persisted in the database,
and if no order found by the given id the API should return 404 NOT FOUND

Apart from items, we only have customer id in the orders data. But should we allow to change customer id through this API? I believe customer id once populated should never be changed because we cannot associate one customer order to another.


PersistentSlabStorage cache and deltas optimization

Issue To Be Solved
I think PersistentSlabStorage cache and deltas can use map[uint64][uint64]Slab and can avoid extra hashing on cpu level. Especially for migration, this can be a speed up, as we have only 2 address options. ( zero and migrated address) and big accounts has a lot of Slabs.
Reference discord thread: https://discord.com/channels/613813861610684416/1108479699732152503/1254739545140891658

Hi @bluesign Thanks!  This looks interesting!
I'll take a look after wrapping up diff-states comparisons.  Currently focused on correctness before resuming optimizations.


Accommodate other possible Docker base images

Set Docker base image tag in parent build.xml
Import parent build.xml. Otherwise when setting BUILD_LIST to
specific subproject, targets in parent build.xml do not run actually.

Signed-off-by: Sophia Guo<EMAIL_ADDRESS>

Related with #1134

Grinder to test with alpine tag
16:11:27       [exec] alpine: Pulling from adoptopenjdk/openjdk11
https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder_Sandbox/404/console
Failures show Docker base image with alpine have the issue about running apt-get update && apt-get -y install ... .

This will also fix some leftover base images on test machines.

There is a conflict that needs resolved for this one.

Thanks @smlambert conflict resolved.


histograms: Improve tests and fix exposed bugs

This adds negative buckets and access of float histograms to TestHistogramChunkSameBuckets and TestHistogramChunkBucketChanges.
It also exercises a specific pattern of reusing an iterator (one where no access has happened).
This exposes two bugs (where entries for positive buckets where used where the corresponding entries for negative buckets should have been used). One was fixed in #11627 (not merged), which triggered the work in this commit.
This commit fixes both issues, so #11627 can be closed.
It also simplifies the code in the histogramIterator.Next method that aims to recycle existing slice capacity.
Furthermore, this is on top of the release-2.40 branch because we should probably cut a bugfix release for this.

Thanks


Fixed the Templates(Issue#254).

Title With Issue Number
Fixed the Templates(Issue#254).
Description
Not working, Now fixed by adding .yml
Fixes #(issue) -#254 Issue
Type of Change
Fixed the Template Issue

Actually the pull-request template is working.

what about the issue templates

Resolved I think, can't you check this before merging to the main branch?
If you can check if this is working properly or not then it will be more
beneficial!
On Sat, 5 Oct, 2024, 4:56 pm Aditya Bhaumik, @.***>
wrote:

what about the issue templates
—
Reply to this email directly, view it on GitHub
https://github.com/aditya-bhaumik/Pathsphere/pull/258#issuecomment-2395025095,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHEZGLVW7RX2XL3FKRYQNJLZZ7EFTAVCNFSM6AAAAABPNGJDD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJVGAZDKMBZGU
.
You are receiving this because you authored the thread.Message ID:
@.***>

i cant check it before merging check it one of your own projects if it is working

i can check only after merging the before one was not working

I changed the file from .md to .yml; hopefully, merging it will work. We'll
check again afterward.
On Sat, 5 Oct, 2024, 5:06 pm Aditya Bhaumik, @.***>
wrote:

i can check only after merging the before one was not working
—
Reply to this email directly, view it on GitHub
https://github.com/aditya-bhaumik/Pathsphere/pull/258#issuecomment-2395027378,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHEZGLX6BVQUX6I26PWXCGDZZ7FKRAVCNFSM6AAAAABPNGJDD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJVGAZDOMZXHA
.
You are receiving this because you authored the thread.Message ID:
@.***>

It's working properly, but the bug issue isn't displaying. Please reassign
it; it will take just 2 minutes to fix, as I've encountered the issue.
On Sat, 5 Oct 2024 at 17:14, Aditya Bhaumik @.***>
wrote:

Assigned #258 https://github.com/aditya-bhaumik/Pathsphere/pull/258 to
@ezDecode https://github.com/ezDecode.
—
Reply to this email directly, view it on GitHub
https://github.com/aditya-bhaumik/Pathsphere/pull/258#event-14527573645,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHEZGLXOIZN47OYPPB3FNLTZZ7GLXAVCNFSM6AAAAABPNGJDD2VHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJUGUZDONJXGM3DINI
.
You are receiving this because you were assigned.Message ID:
@.***>

I already gave u points in this just create pr direct

Discord pe personal pe add Karo
On Sat, 5 Oct, 2024, 5:33 pm Aditya Bhaumik, @.***>
wrote:

I already gave u points in this just create pr direct
—
Reply to this email directly, view it on GitHub
https://github.com/aditya-bhaumik/Pathsphere/pull/258#issuecomment-2395033778,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHEZGLQFZGUTHESMCPJ7EU3ZZ7ISVAVCNFSM6AAAAABPNGJDD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJVGAZTGNZXHA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Push kar Diya
On Sat, 5 Oct, 2024, 5:39 pm Akash Choudhury, @.***> wrote:

Discord pe personal pe add Karo
On Sat, 5 Oct, 2024, 5:33 pm Aditya Bhaumik, @.***>
wrote:

I already gave u points in this just create pr direct
—
Reply to this email directly, view it on GitHub
https://github.com/aditya-bhaumik/Pathsphere/pull/258#issuecomment-2395033778,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BHEZGLQFZGUTHESMCPJ7EU3ZZ7ISVAVCNFSM6AAAAABPNGJDD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJVGAZTGNZXHA
.
You are receiving this because you were mentioned.Message ID:
@.***>


FormFlow Validate entire object

In FormFlow, there is a way to validate each field value which we are using successfully. Is there a way to validate the entire object before it is sent to the confirmation question? In our scenario, the entire object's values need to be validated against some web services to see if it even makes sense.
I am trying a few hacky things, but would be nice to have this in the API, unless I am missing it! :)

The field validation has access to the whole state object, so you can do whatever you need to do to validate it on any field step.
Whether this is adequate or not depends very much on what you want to do if it is not.  Could you describe your desired behavior?   Field definitions can be fake (that is what a confirmation is) and there are also ways you can dynamically define them (through field.SetDefine) and control the flow to the next step (through field.SetNext delegate).  So you could instantiate a Confirmation object and if it didn't match what you expected control where you go to fix it.

Sorry for dropping out of this one. If the intent behind the flow API is to depend on fake field for a final validation step, that's great, we'll use it. Just making sure as it seemed somewhat hacky.
A few more things about the form flow:

Is there a way to customize which words are interpreted as cancel the entire form?
Is there a way to get access to the IDialogContext inside of the validate or prompt callbacks? For example, we have a custom way of logging a few details about the conversations before sending it over to the IDialogContext and we would like to format the messages a certain way, so it would be nice to have more control over that and being able to call IDialogContext.PostAsync ourselves as opposed to just giving form flow a string.

You can control the cancel words in FormConfiguration.Commands.
To control the message output you can define your own PromptAsyncDelegate and pass it to you builder using the Prompter method.  This gives you full control of prompts and lets you rewrite them.  We just did a release where we added state and field to that as well.


support request: how to use a limited API token?

relates to #889
How to create and use a limited API token?
My global API key works but I don't want to use that for deployment from a server. So I've been trying to create a token with limited permissions.
Now, even when starting with the Edit Cloudflare Workers template, I don't manage to create a token with limited permissions that works with wrangler.

Could I be missing something?
Here's what I get
$ wrangler publish --verbose --env=production
Error: [ApiError { code: 10000, message: "Authentication error", other: {} }]
$ wrangler publish --verbose    # This is on workers.dev
Error: [ApiError { code: 10000, message: "Authentication error", other: {} }]

Would be nice to get more verbosity on the error message if possible.

Try updating to 1.6.0! We just released support for this very feature today :) Let us know if you run into any issues

Oh nice.  Unfortunately I get the same error.  (I updated the issue with the commands I used and errors, around the same time you replied.)
And the global key works fine. (Well, good enough, I'm on a slow connection, so I get stuff like Error: Failed to upload file batch. ⚠  Error: https://api.cloudflare.com/client/v4/accounts/............./stor age/kv/namespaces/.........../bulk: timed out. Which is another issue...)

When you updated, did you re-run wrangler config and paste your limited API token?

No I simply edited ~/.wrangler/config/default.toml - so my email was still in there.
It might help to throw an error mentioning that the email var can't be set if it's a limited API token?
Thanks!

Makes sense! Glad we could help :) Please come back if you run into any other issues!

Hey @guaka - how did you solve the issue? I have the exact same issue here:
[simplenotezy:~/Projects/my-site]$ wrangler publish                                 (master✱)
🌀  Using namespace for Workers Site "__my-site-workers_sites_assets"
🌀  Uploading site files
Error: Failed to upload file batch. ⚠  Error: error sending request for url (https://api.cloudflare.com/client/v4/accounts/XXXX/storage/kv/namespaces/XXXX/bulk): operation timed out

I got no clue why.

@simplenotezy I solved it by not using Wrangler and Workers.


device: fixes create image when account is missing.

Description
When using token authentication account maybe missing from identity, that cause image creating return error "cannot find account number". Note: that we rely only on orgID that should not be empty.
FIXES: https://issues.redhat.com/browse/THEEDGE-3881
Type of change
What is it?

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Documentation update
[ ] Tests update
[ ] Refactor

Checklist:

[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] I run make pre-commit to check fmt/vet/lint/test-no-fdo

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (4505ab3) 62.75% compared to head (8af3b56) 62.78%.
Report is 2 commits behind head on main.

Files
Patch %
Lines

pkg/routes/images.go
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2421      +/-   ##
==========================================
+ Coverage   62.75%   62.78%   +0.02%
==========================================
  Files          88       88
  Lines       13415    13408       -7
==========================================
- Hits         8419     8418       -1
+ Misses       4313     4308       -5
+ Partials      683      682       -1

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


Package localparam reduction

In some cases, localparam in allpackages list are getting reduced. Here's one such case -
package pkg1;
  localparam X = 4;
endpackage

package pkg2;
  localparam Y = pkg1::X;
endpackage

The Y member in pkg2 shouldn't be reduced to corresponding constant. It should be a ref_obj to pkg1::X
|uhdmallPackages:
\_package: pkg2 (pkg2::), id:118 scratch.sv:7:1: , endln:11:11, parent:unnamed, parID:115
  |vpiName:pkg2
  |vpiFullName:pkg2::
  |vpiParameter:
  \_parameter: (pkg2::Y), id:34, line:9:12, endln:9:13, parent:pkg2::, parID:118
    |UINT:4
    |vpiTypespec:
    \_int_typespec: , id:45
    |vpiLocalParam:1
    |vpiName:Y
    |vpiFullName:pkg2::Y
  |vpiParamAssign:
  \_param_assign: , id:38, line:9:12, endln:9:23, parent:pkg2::, parID:118
    |vpiRhs:
    \_constant: , id:43, line:9:16, endln:9:22
      |vpiDecompile:4
      |vpiSize:32
      |UINT:4
      |vpiTypespec:
      \_int_typespec: , id:45
      |vpiConstType:9
    |vpiLhs:
    \_parameter: (pkg2::Y), id:34, line:9:12, endln:9:13, parent:pkg2::, parID:118
  |vpiDefName:pkg2

Fixed by #2950


read_def -child does not load macro to correct offset

Describe the bug
./run-me-mock-array-asap7-base.sh

read-def-child-offset.tar.gz
OpenROAD v2.0-16449-gd4470e407
Features included (+) or not (-): +Charts +GPU +GUI +Python
This program is licensed under the BSD-3 license. See the LICENSE file for details.
Components of this program may be licensed under more restrictive licenses which must be honored.
GUI_TIMING=1 reading timing, takes a little while for large designs...
read_spef ./results/asap7/mock-array/base/6_final.spef
Populating timing paths...
[INFO ODB-0135] Reading DEF file: results/asap7/mock-array_Element/base/6_final.def
[INFO ODB-0128] Design: Element
[INFO ODB-0138]     Created 528 pins.
[INFO ODB-0139]     Created 8194 components and 20353 component-terminals.
[INFO ODB-0140]     Created 2 special nets and 16388 connections.
[INFO ODB-0141]     Created 1842 nets and 3945 connections.
[INFO ODB-0142] Finished DEF file: results/asap7/mock-array_Element/base/6_final.def

Expected Behavior
Render at correct offset
Environment
OpenROAD v2.0-16449-gd4470e407

To Reproduce
See above
Relevant log output
No response
Screenshots
No response
Additional Context
No response

@maliberty Two questions:

Can you reproduce?
Just trying to understand. I found it surprising that "read_db" does not have a -child option. Isn't .odb a binary representation of .def + .lef? If so, I would expect all read_def options to be available with "read_db". https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/odb/README.md

For the read_def -child feature it is a bit awkward that the .odb file can't be used.
A feature that is frequently asked for when I show OpenROAD is whether it is possible to double click on the macros to drill into them.
read_def -child would be part of meeting such a seemingly reasonable request.

Still in the queue.  The child is stored in the db so there is no need for a similar option on read_db.


Dash 0.13 windows build

Hi there!
trying to cross compiling deps in windows subsystem shoot this error:
In file included from /home/xxxxx/dash/depends/work/build/x86_64-w64-mingw32/chia_bls/v20181101-167abe8206b/contrib/relic/include/relic_arch.h:38:0,
from /home/xxxxx/dash/depends/work/build/x86_64-w64-mingw32/chia_bls/v20181101-167abe8206b/contrib/relic/include/relic_util.h:38,
from /home/xxxxx/dash/depends/work/build/x86_64-w64-mingw32/chia_bls/v20181101-167abe8206b/contrib/relic/src/arch/relic_arch_none.c:31:
/home/xxxxx/dash/depends/work/build/x86_64-w64-mingw32/chia_bls/v20181101-167abe8206b/contrib/relic/include/relic_types.h:39:10: fatal error: gmp.h: No such file or directory
#include <gmp.h>
^~~~~~~
compilation terminated.
contrib/relic/src/CMakeFiles/relic_s.dir/build.make:188: recipe for target 'contrib/relic/src/CMakeFiles/relic_s.dir/arch/relic_arch_none.c.obj' failed
make[3]: *** [contrib/relic/src/CMakeFiles/relic_s.dir/arch/relic_arch_none.c.obj] Error 1
make[3]: *** Waiting for unfinished jobs....

Same error:
.../depends$ make chia_bls
.../depends/sources/download-stamps/.stamp_fetched-gmp-gmp-6.1.2.tar.bz2.hash' failed

FIXED


App Not Found in AppSource Symbols - Wrong Name

This app isn't found in the AppSource Symbols.
https://dynamicssmb2.visualstudio.com/DynamicsBCPublicFeeds/_artifacts/feed/AppSourceSymbols/NuGet/CKLSoftwareGmbH.Kostenrechnung365CostAccounting365.symbols.32a8e514-216f-487a-82ea-23709b370af9/overview/6.1.25
[INFO] Downloading package manifest Kostenrechnung 365 / Cost Accounting 365 (ID: CKLSoftwareGmbH.Kostenrechnung365/CostAccounting365.symbols.32a8e514-216f-487a-82ea-23709b370af9) version <IP_ADDRESS> from Local feed
2024-11-05T10:01:58.684Z [ERROR] Failed to download package manifest for Kostenrechnung 365 / Cost Accounting 365 (ID: CKLSoftwareGmbH.Kostenrechnung365/CostAccounting365.symbols.32a8e514-216f-487a-82ea-23709b370af9) from Local feed

I think the problem is that the slash isn't removed from the name.
This could be related to https://github.com/365businessdev/alget/issues/2

Yes, you're right. This is already fixed with #2.
2024-11-05T13:47:18.912Z [INFO] Downloading package Kostenrechnung 365 / Cost Accounting 365 (ID: CKLSoftwareGmbH.Kostenrechnung365CostAccounting365.symbols.32a8e514-216f-487a-82ea-23709b370af9) version 6.1.25 from AppSourceSymbols feed
2024-11-05T13:47:20.865Z [INFO] Downloaded package Kostenrechnung 365 / Cost Accounting 365 (ID: CKLSoftwareGmbH.Kostenrechnung365CostAccounting365.symbols.32a8e514-216f-487a-82ea-23709b370af9) from AppSourceSymbols feed
2024-11-05T13:47:20.898Z [INFO] Kostenrechnung 365 / Cost Accounting 365 downloaded to '/Users/christophkrieg/Code/DevOps/AL/app/.alpackages/CKL Software GmbH_Kostenrechnung 365 - Cost Accounting 365_6.1.25.app'

I will close this issue.


New keywords in the denylist

check for redis.conf, get more information from https://redis.io/docs/manual/config/

Thank you for your contribution. Can we add some unit tests to keyword_test.py?

sure，I have add unit test in keyword_test.py, according to the requirepass formate provided by the redis official document.

@huzai9527 could you please merge the latest master into your branch?


Remove all image in cache

Hi,
How can I remove all images in cache and memory after download viewcontroller?
I use AlamofireImage for get image:
Alamofire.request(.GET, photo_url)                .authenticate(user: user_photo, password: password_photo)                .responseImage { response in                   if let image = response.result.value                   {                      button.setBackgroundImage(image, forState: .Normal)                   }                }
And I want to remove image from memory when the button has received the image.

Hi @B0Dim,
I'd suggest you open a question on Stack Overflow and tag alamofire. We use our GitHub project for bug reports and feature requests.
Best of luck! 🍻

From our Contribution Guidelines
Asking Questions
We don't use GitHub as a support forum. For any usage questions that are not specific to the project itself, please ask on Stack Overflow instead. By doing so, you'll be more likely to quickly solve your problem, and you'll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.

Hi, thank you for your suggestion, but I have have crash application, when photos are downloading. I think Alamofire don't clean cache and memory.

It absolutely does based on the URL cache and auto-purging memory limits.

_Updated for swift: _
func clearImageFromCache(mYourImageURL: String) {
    let URL = NSURL(string: mYourImageURL)!
    let mURLRequest = NSURLRequest(url: URL as URL)
    let urlRequest = URLRequest(url: URL as URL, cachePolicy: URLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData)

    let imageDownloader = UIImageView.af_sharedImageDownloader
    _ = imageDownloader.imageCache?.removeImage(for: mURLRequest as URLRequest, withIdentifier: nil)
    self.mImageView.af_setImage(withURLRequest: urlRequest, placeholderImage: UIImage(named: "placeholder"), completion: { (response) in
        self.mImageView.image = response.result.value
    })
}

**Updated for swift: **
func clearImageFromCache(mYourImageURL: String) {
let URL = NSURL(string: mYourImageURL)!
let mURLRequest = NSURLRequest(url: URL as URL)
let urlRequest = URLRequest(url: URL as URL, cachePolicy: URLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData)
let imageDownloader = UIImageView.af_sharedImageDownloader
_ = imageDownloader.imageCache?.removeImage(for: mURLRequest as URLRequest, withIdentifier: nil)
self.mImageView.af_setImage(withURLRequest: urlRequest, placeholderImage: UIImage(named: "placeholder"), completion: { (response) in
    self.mImageView.image = response.result.value
})

}


Search bar in Manage Household button is not working

Issue on:
Household(account) I have a button called 'Manage Household' and it has a search bar to search Contacts, which is not working.
NPSP version :
Nonprofit Success Pack | Salesforce.org | 3.144
Error statement:
getting an error in the log which is
"This page has an error. You might just need to refresh it. Error in $A.getCallback() [] Callback failed: apex://npsp.HH_AutoCompleteDataProvider_LCTRL/ACTION$queryObjects Failing descriptor: {npsp:autocomplete}"
Snapshot:

Looking forward to hear as soon as possible.
cheers,
Preeti Agarwal

Is anyone else still experiencing this bug? I am seeing it today. Is there anything I can do to fix this?

Is anyone else still experiencing this bug? I am seeing it today. Is there anything I can do to fix this?

Hi Rachel, we don't offer support via GitHub issues.
Would you mind posting about this on the Hub? Feel free to @message me

Hi James, thanks for getting back to me.... I actually found the issue, but I appreciate you directing me where to do. If you want me to delete my comments, let me know. Thanks!

@rachel-cmc could you please tell me what the issue was that you found? I am having this issue today. Thank you!


Fix @Transactional invalid cases

What's the purpose of this PR
Fix @Transactional invalid，@transcation has some invalid cases.
E.G.

Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Read the Contributing Guide before making this pull request.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Write necessary unit tests to verify the code.
[ ] Run mvn clean test to make sure this pull request doesn't break anything.
[ ] Update the CHANGES log.

Codecov Report

Merging #4551 (b409b16) into master (e690e65) will decrease coverage by 0.03%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #4551      +/-   ##
============================================
- Coverage     53.30%   53.27%   -0.04%
  Complexity     2710     2710
============================================
  Files           495      495
  Lines         15438    15438
  Branches       1599     1599
============================================
- Hits           8229     8224       -5
- Misses         6648     6655       +7
+ Partials        561      559       -2

Impacted Files
Coverage Δ

...rip/framework/apollo/biz/service/AuditService.java
78.57% <ø> (ø)

...ork/apollo/portal/service/AppNamespaceService.java
66.00% <ø> (ø)

.../defaultimpl/DefaultRoleInitializationService.java
87.36% <ø> (ø)

...work/apollo/biz/message/DatabaseMessageSender.java
56.25% <0.00%> (-8.34%)
:arrow_down:

...ework/apollo/internals/RemoteConfigRepository.java
85.27% <0.00%> (-2.46%)
:arrow_down:

...ervice/service/ReleaseMessageServiceWithCache.java
87.05% <0.00%> (+1.17%)
:arrow_up:

.../apollo/internals/RemoteConfigLongPollService.java
78.44% <0.00%> (+1.19%)
:arrow_up:

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


Support workflow_dispatch Inputs Type and Options

Reference
GitHub Actions docs on on.workflow_dispatch.inputs
Workflow Example
on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'
        required: true
        default: 'warning'
        type: choice # supported in this PR
        options: # supported in this PR
        - info
        - warning
        - debug
      tags:
        description: 'Test scenario tags'
        required: false
        type: boolean # supported in this PR
      environment:
        description: 'Environment to run tests against'
        type: environment # supported in this PR
        required: true

I've published the package with this change.


[Ionic V4-beta.12] app.getActiveNav() was deleted

Bug Report
Ionic Info
Run ionic info from a terminal/cmd prompt and paste the output below.

Ionic:

   ionic (Ionic CLI)          : 4.1.2 (/usr/local/lib/node_modules/ionic)
   Ionic Framework            : @ionic/angular 4.0.0-beta.12
   @angular-devkit/core       : 0.7.5
   @angular-devkit/schematics : 0.7.5
   @angular/cli               : 6.1.5
   @ionic/ng-toolkit          : 1.0.8
   @ionic/schematics-angular  : 1.0.6

Cordova:

   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 7.1.1
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.2, cordova-plugin-ionic-webview 2.1.4, (and 42 other plugins)

System:

   ios-deploy : 2.0.0
   NodeJS     : v10.10.0 (/usr/local/Cellar/node/10.10.0/bin/node)
   npm        : 6.4.1
   OS         : macOS
   Xcode      : Xcode 10.0 Build version 10A255

Describe the Bug
app.getActiveNav()  removed from v4 also same issue on old version
https://github.com/ionic-team/ionic/issues/12362
Steps to Reproduce
Steps to reproduce the behavior:
Update to Ionic 4.0.0-beta.12
Use this.app.getActiveNav()
Related Code
this.app.getActiveNav()
Expected Behavior
put this function back
Additional Context
https://github.com/ionic-team/ionic/issues/12362
@danbucholtz

Thanks for your issue! Could you please open this as feature request and provide more information (why are need it etc) and fill out the feature request issue form. That would be great :)


View sheds now have scaling bias

No changes were required in Metal?

No changes were required in Metal?

Theres an open issue regarding view sheds not working in Metal, which will not be resolved this PR.


Correct handling when disposals exceed acquisitions in the same day (fixes #460)

Bug
This fixes the case when on the same day the amount of shares sold is bigger than the shares bought on that same day. In this case, the same day rule still applies but only on a portion of the disposals. The remaining of the shares should be handled normally (not with the same day rule). This should solve #460.
Note: This is specified in the rule TCGA92/S105(1)
Solution
To handle this I only had to modify the bed and breakfast rule logic to take this situation into account (it was previously failing with an assertion).
Tests
I added two tests, where a single sell gets divided due to different rules applying to different portions of it. In other words, a portion of the sell should match with the same day rule, then bed and breakfast and the remaining is 104. These are the pdf reports for each test:

sell_on_30/6_is_split_into_104+same_day
sell_on_30/6_is_split_into_104+same_day+b&d

The problematic disposal is rendered correctly:

Note: because the linter was complaining test_calc.py was too large, I split it into two files. But I'm just adding these two cases.

Thanks for figuring this out!


Swift Package Manager support

It would be very helpful if Swift Package Manager was supported by including a Package.swift file.

https://github.com/adamshin/SwiftReorder/issues/60#issue-488555055


[NFC] Extract Dependency Registration to DependencyCollector

Define a new type DependencyCollector that abstracts over the
incremental dependency gathering logic. This will insulate the
request-based name tracking code from future work on private,
intransitive dependencies.
For now, this is just a thin wrapper over the ReferencedNameTracker.

@swift-ci test

⛵


[BUG] Data race between newMessage() and Messages()

New bug checklist

[x] I have updated smtpmock to the latest version
[x] I have read the Contribution Guidelines
[x] I have read the documentation
[x] I have searched for existing GitHub issues

Bug description
Messages() call protected with:
	server.Lock()
	defer server.Unlock()

but newMessage() doesn't. It looks like because of this we can have following race condition:
WARNING: DATA RACE
Read at 0x00c00024a950 by goroutine 9:
  github.com/mocktools/go-smtp-mock/v2.(*Server).Messages()
      /home/anton/go/pkg/mod/github.com/mocktools/go-smtp-mock/v2@v2.0.4/server.go:128 +0x1ab
...
Previous write at 0x00c00024a950 by goroutine 25:
  github.com/mocktools/go-smtp-mock/v2.(*messages).append()
      /home/anton/go/pkg/mod/github.com/mocktools/go-smtp-mock/v2@v2.0.4/message.go:154 +0x11b
  github.com/mocktools/go-smtp-mock/v2.(*Server).newMessage()
      /home/anton/go/pkg/mod/github.com/mocktools/go-smtp-mock/v2@v2.0.4/server.go:181 +0xfd
...

Please kindly let me know if direction of my thoughts is right, or there is some other reason for this race?
Thanks in advance!
Complete output when running smtpmock, including the stack trace and command used

[INSERT OUTPUT HERE]

@achivkun Could you provide some code examples to get this race condition? I think everything is fine with Server#newServer. What do you think, @benjamin-rood?

@bestwebua, @benjamin-rood, here is example of test, which will fail with -race option:
package app_test

import (
	"fmt"
	"net/smtp"
	"testing"
	"time"

	smtpmock "github.com/mocktools/go-smtp-mock/v2"
	"github.com/stretchr/testify/assert"
)

func TestServer(t *testing.T) {
	hostName := "localhost"
	server := smtpmock.New(smtpmock.ConfigurationAttr{
		LogToStdout:       true,
		LogServerActivity: true,
		HostAddress:       hostName,
	})

	if err := server.Start(); err != nil {
		fmt.Println(err)
	}

	go smtp.SendMail(
		fmt.Sprintf("%s:%d", hostName, server.PortNumber()),
		smtp.PlainAuth("id", "user", "password", hostName),
<EMAIL_ADDRESS><EMAIL_ADDRESS>		[]byte("some msg"),
	)

	time.Sleep(1 * time.Second)
	assert.Equal(t, true, len(server.Messages()) == 1, server.Messages())

	if err := server.Stop(); err != nil {
		fmt.Println(err)
	}
}

Hi guys, I'm on holiday with my young family on the other side of the world
until Feb 1st, so I have no way of debugging this or writing the code to
change anything, sorry, but I can provide my best guess at the solution.
I have run into something like this myself with concurrent access to a
single server instance. I think there is a mistake (by me) in the
server.Messages implementation.
https://github.com/mocktools/go-smtp-mock/blob/87efa37169545d7887bf6f2d8a12cbaae5e0bf41/server.go#L126
func (server *Server) Messages() []Message {
  server.Lock()
  defer server.Unlock()
  copiedMessages, messages := []Message{}, server.messages.items
  for index := range messages {
  copiedMessages = append(copiedMessages, *messages[index])
}

  return copiedMessages
}

I think we should try adding a call to the Mutex on server.messages -
i.e. instead of locking the server, we should be locking server.messages.

Message ID: @.***>

@benjamin-rood Hello, Benjamin! Thanks for the super quick response. Have a perfect vacation for you and your family! I think that this issue can wait a bit. If I won't figure it out I'll ask your help after your vacation :)
P.S.: I have tried change locks from Server to messages - the same result with race condition...
func (server *Server) Messages() []Message {
	server.messages.Lock()         // locking messages instead Server
	defer server.messages.Unlock() // unlocking messages instead Server
	copiedMessages, messages := []Message{}, server.messages.items
	for index := range messages {
		copiedMessages = append(copiedMessages, *messages[index])
	}

	return copiedMessages
}

Okay. Then we need to go deeper: we either need to implement a read/write
blocking QUEUE for all calls which interact with the messages (with an
unbuffered channel), or change from using a slice of messages to a
concurrent-safe data structure, like sync/map and treat it like a
sequential list (where the map indexes are 0, 1, 2, ..., n).
On Sat, 7 Jan 2023, 09:00 Vladislav Trotsenko, @.***>
wrote:

@benjamin-rood https://github.com/benjamin-rood Hello, Benjamin! Thanks
for the super quick response. Have a perfect vacation for you and your
family! I think that this issue can wait a bit. If I won't figure it out
I'll ask your help after your vacation :)
P.S.: I have tried change locks from Server to messages - the same result
with race condition...
func (server *Server) Messages() []Message {
server.messages.Lock()         // locking messages instead Server
defer server.messages.Unlock() // unlocking messages instead Server
copiedMessages, messages := []Message{}, server.messages.items
for index := range messages {
copiedMessages = append(copiedMessages, *messages[index])
}
return copiedMessages
}
—
Reply to this email directly, view it on GitHub
https://github.com/mocktools/go-smtp-mock/issues/150#issuecomment-1374064713,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACNCK5GEAHPJFJOGSKG3BFDWRB2WBANCNFSM6AAAAAATTAVZGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Let me explain why the above is necessary: the messages array is
effectively a simple in-memory database, and we are asking it to have the
same (or similar) API to a proper database with the appropriate concurrency
guarantees. As we know, in reality a database is not just blobs of data
organised in a structured manner, it is also the means by which that data
may be accessed or manipulated safely via read or write transactions that
are queued to preserve data integrity.
The change I am proposing is not a breaking one, because the API will not
change. The Messages() method would still return a slice of all message
data, sending a new messages to the server would still work exactly the
same way, etc. Only the underlying implementation with respect to message
storage changes. The good news is that this is quite a fun thing to
implement!

@benjamin-rood Agree! I'm researching this topic right now ❤

@bestwebua Sorry, been slammed with work and life since I got back from holiday. I want to get stuck into fixing this if you haven't already done so?

@benjamin-rood Hi, Benjamin! It's sad, I also had a lot of work to do. Haven't actually done it yet and would appreciate your input!

Please fix this.

I made https://github.com/mocktools/go-smtp-mock/pull/173 to fix this.

Then we need to go deeper: we either need to implement a read/write blocking QUEUE for all calls which interact with the messages (with an unbuffered channel),

We do not need to do an explicit blocking queue. Having a mutex creates an implicit queue on the data structure. Simply all data reads and writes to a shared data structure (in this case messages slices) has to be protected by a mutex.

@mitar Does this update fix data race condition described above?

Yes!

Does this update fix data race condition described above?

Yes.

Does it appear on the same test env with same run conditions without your fix?

A very similar test (effectively the same). But I can also test the exact one if you want.

@mitar If you have a time check it with exact one, please!

OK. Let me test that out.

OK, I added the test above to tests in the repository. That was a good call because I had to rework the fix. I updated PR accordingly.

In latest release! Thanks @mitar for your involvement!


Fix Group::add() Exception

Fix Group::add() Exception
Argument 1 passed to Concrete\Core\Tree\Node\Type\Group::setTreeNodeGroup() must be an instance of Group, instance of Concrete\Core\User\Group\Group given, called in /var/www/html/concrete/src/Tree/Node/Type/Group.php on line 114
Type hint fails due to class alias

Set to explicit namespace for User\Group\Group class in
Concrete\Core\Tree\Node\Type\Group::setTreeNodeGroup()

I can't help but feel like we might be breaking some kind of extendability by doing this (not that it's not already really broken). I feel like there was another thread where @KorvinSzanto and I made an argument for "We should use aliases everywhere" but I can't actually find that. I also think there have been some discussions around changing stuff over to use implements but those might not have been related to this kind of issue?
Anyway, probably worth merging in the short term to get it working but I think we should be thinking about the big picture going forward.

@EC-Joe Looks like this is resolved. It was caused by using the explicit namespace for the Group class. With the code changed to using the Group alias things work as expected, beyond the idea of making sure to always use the alias if a particular alias happens to exist. Which is a tiny bit spooky :ghost: but no big deal. Thanks.


Tag field in create laws form should be required

This is and edge case, but the experience could be improved.
In a clean installation if you want to go ahead and create a new Law, you will have no tags in the Tag dropdown. Since the dropdown has no validation implemented, the creation request is sent to the back end and fails when trying to create the law, with no meaningful explanation in the UI.
Through the app logs one can find out that...
/tmp/DemocracyOS/lib/db-api/tag.js:174
  if ('string' !== typeof tag.name) {
                             ^
TypeError: Cannot read property 'name' of undefined
    at Object.create (/tmp/DemocracyOS/lib/db-api/tag.js:174:30)
    at /tmp/DemocracyOS/lib/db-api/law.js:105:14
    at Promise.<anonymous> (/tmp/DemocracyOS/lib/db-api/tag.js:59:5)
    at Promise.<anonymous> (/tmp/DemocracyOS/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
    at Promise.emit (events.js:95:17)
    at Promise.emit (/tmp/DemocracyOS/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
    at Promise.fulfill (/tmp/DemocracyOS/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
    at Object.cb (/tmp/DemocracyOS/node_modules/mongoose/lib/query.js:1010:22)
    at Object._onImmediate (/tmp/DemocracyOS/node_modules/mongoose/node_modules/mquery/lib/utils.js:137:16)
    at processImmediate [as _immediateCallback] (timers.js:345:15)

A solution could be making the field required (and improving the "required" validator, since it doesn't support undefined) that would trigger the error message before submitting the form.

This used to be a required field but we ended up making tags optional in the end. There must be some inconsistency with how data validation is being made.

tag is a required attribute for a law
See here: https://github.com/DemocracyOS/app/blob/master/lib/models/law.js#L76

But it seems there's no validation in the admin for this requirement. You could actually submit creation of a law with no tag and that would crash the server.


assert result.hostname is not None

Thanks for your excellent work！
When I use --num-gpus=2, I get the following error, I can't solve the problem, and I hope to get your help.
Traceback (most recent call last):
File "tools/lazyconfig_train_net.py", line 125, in
launch(
File "/public/home/1/code/EVA/det/detectron2/engine/launch.py", line 67, in launch
mp.spawn(
File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 230, in spawn
return start_processes(fn, args, nprocs, join, daemon, start_method='spawn')
File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 188, in start_processes
while not context.join():
File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 150, in join
raise ProcessRaisedException(msg, error_index, failed_process.pid)
torch.multiprocessing.spawn.ProcessRaisedException:
-- Process 0 terminated with the following error:
Traceback (most recent call last):
File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 59, in _wrap
fn(i, *args)
File "/public/home/1/code/EVA/det/detectron2/engine/launch.py", line 108, in _distributed_worker
raise e
File "/public/home/1/code/EVA/det/detectron2/engine/launch.py", line 98, in _distributed_worker
dist.init_process_group(
File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/distributed/distributed_c10d.py", line 520, in init_process_group
store, rank, world_size = next(rendezvous_iterator)
File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/distributed/rendezvous.py", line 141, in _tcp_rendezvous_handler
assert result.hostname is not None
AssertionError
This is my running code：
python tools/lazyconfig_train_net.py --num-gpus 2
--num-machines 1 --machine-rank 0 --dist-url "tcp://$MASTER_ADDR:60900"
--config-file projects/ViTDet/configs/COCO/cascade_mask_rcnn_vitdet_eva.py \

Thanks for your excellent work！ When I use --num-gpus=2, I get the following error, I can't solve the problem, and I hope to get your help.
Traceback (most recent call last): File "tools/lazyconfig_train_net.py", line 125, in launch( File "/public/home/1/code/EVA/det/detectron2/engine/launch.py", line 67, in launch mp.spawn( File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 230, in spawn return start_processes(fn, args, nprocs, join, daemon, start_method='spawn') File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 188, in start_processes while not context.join(): File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 150, in join raise ProcessRaisedException(msg, error_index, failed_process.pid) torch.multiprocessing.spawn.ProcessRaisedException:
-- Process 0 terminated with the following error: Traceback (most recent call last): File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/multiprocessing/spawn.py", line 59, in _wrap fn(i, *args) File "/public/home/1/code/EVA/det/detectron2/engine/launch.py", line 108, in _distributed_worker raise e File "/public/home/1/code/EVA/det/detectron2/engine/launch.py", line 98, in _distributed_worker dist.init_process_group( File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/distributed/distributed_c10d.py", line 520, in init_process_group store, rank, world_size = next(rendezvous_iterator) File "/public/home/1/Anaconda3/envs/EVA/lib/python3.8/site-packages/torch/distributed/rendezvous.py", line 141, in _tcp_rendezvous_handler assert result.hostname is not None AssertionError
This is my running code： python tools/lazyconfig_train_net.py --num-gpus 2 --num-machines 1 --machine-rank 0 --dist-url "tcp://$MASTER_ADDR:60900" --config-file projects/ViTDet/configs/COCO/cascade_mask_rcnn_vitdet_eva.py \

tcp://<IP_ADDRESS>:8686


Support Westend

This list is using in many other modules, where "westend" network is needed while developing.

42 is the generic Substrate index, nothing wrong with it.

But on polkadot wiki, 42 is for westend.
https://wiki.polkadot.network/docs/build-protocol-info

The index is also used for rococo or any other test net.


Images example & Caching

The example doesn't show how images works. Is it possible to to use Image.network? Would be nice to be able to use cached images
thanks

Hi @jtkeyva ,
Thank you for opening this issue.
I just updated the example.
This package uses Uint8List image files.
Image.network is not available. You need to pass the bytecode (Uint8List) directly to this package.
So, of course, you can cache image data, or you can download it over the network and use it.
However, that part must be implemented by the user. This package does not support it directly.
The example loads an image from an asset.
Thank you.

thank you :)


[SVCS-894] Cache File During Contiguous Upload For Dropbox

Ticket
https://openscience.atlassian.net/browse/SVCS-894
Purpose
Dropbox's rate limit feature may cause uploading/copying/moving many files to fail with "too_many_requests" & "too_many_write_operations". The former is for too many requests literally and the former is for namespace lock contentions. Unlike GitHub, Dropbox doesn't provide detailed information on how they rate limit requests but simply asks clients to retry according to the "Retry-After" header in the 429 response.
The retry doesn't work in a straightforward way for upload (inter copy and move use upload internally) since the stream will have been consumed when the request is finished. The solution is to cache the stream locally into a temporary file and stream from the file for both the initial request and following 429 retries.
Changes
TBD
Side effects
TBD
QA Notes
TBD
Deployment Notes
No

Coverage decreased (-0.06%) to 91.779% when pulling 550c649f14a817294a8bb755e79e31edae48aef1 on cslzchen:fix/dropbox-too-many-write-ops into 55f49723b21c23edd6fb21a3ac31a1c689c80b03 on CenterForOpenScience:develop.


fixes LP style initialization

Fixes an error in variable initialization for problems with purely linear objectives.
Tracking change for https://github.com/oxfordcontrol/Clarabel.jl/pull/134

Codecov Report
Patch coverage: 100.00% and project coverage change: -0.58% :warning:

Comparison is base (857ae9a) 89.71% compared to head (f2f4a69) 89.14%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #41      +/-   ##
==========================================
- Coverage   89.71%   89.14%   -0.58%
==========================================
  Files          56       56
  Lines        4385     3849     -536
==========================================
- Hits         3934     3431     -503
+ Misses        451      418      -33

Files Changed
Coverage Δ

src/solver/implementations/default/kktsystem.rs
96.73% <100.00%> (-0.83%)
:arrow_down:

... and 38 files with indirect coverage changes

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


Full AAB implementation for Godot.

This is a PR that will be merged into godotengine:godot/3.2-android-app-bundle

the 3.2 branch on my fork is a copy of the 3.2-android-app-bundle branch on godotengine:godot, NOT the 3.2 branch.


[Task] Add Example for Transformer4Rec Serving Example

Description
Providing a Serving Example Transformer4Rec

@bschifferer  is that with Merlin Systems and Torch backend?

related to that https://github.com/NVIDIA-Merlin/Transformers4Rec/issues/499

We ahve an example with python backend. This example with torch script.

@bschifferer , please tag the PR to this ticket

Example is done for serving the model

The model serving example was merged via this PR https://github.com/NVIDIA-Merlin/Transformers4Rec/pull/552.


[Documentation]: GitHub URL in Offline Installer build from source instructions needs to be updated

Description of errors

GitHub URL in the Offline Installer build from source instructions (https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.2.0/install/rocm-offline-installer.html#building) needs to be changed from git@github.com:ROCm/rocm-install-on-linux.git to https://github.com/ROCm/rocm-install-on-linux for git clone to work without authentication
The instructions in step 3 should be changed from cd src/offline-install to cd rocm-install-on-linux/src/offline-installer

I have a PR ready to submit with the proposed changes.
Attach any links, screenshots, or additional evidence you think will be helpful.
No response

The PR has been merged.  Closing this issue.  Please re-open, if required.


Split SimpleDataloader module to different classes.

Idea
Instead of one general class, create small classes for various tasks i.e for image create ImageDataloader. For text create text dataloader, etc

Added in https://github.com/Atharva-Phatak/torchflare/pull/49


Update finagle-http, finagle-stats, ... to 19.8.0

Updates

com.twitter:finagle-http
com.twitter:finagle-stats
com.twitter:twitter-server

from 19.6.0 to 19.8.0.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention @scala-steward in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [{ groupId = "com.twitter" }]

labels: semver-minor

Codecov Report

Merging #1137 into master will decrease coverage by 0.09%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master    #1137     +/-   ##
=========================================
- Coverage   80.61%   80.51%   -0.1%
=========================================
  Files          54       54
  Lines        1016     1016
  Branches       32       32
=========================================
- Hits          819      818      -1
- Misses        197      198      +1

Impacted Files
Coverage Δ

core/src/main/scala/io/finch/Endpoint.scala
72.57% <0%> (-0.58%)
:arrow_down:

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 c3ebc71...c8d1d34. Read the comment docs.

@vkostyukov is there any showstopper to cut the release against 19.8.0?

Nothing. Let's cut a release.


131 cadenza baseline 1

Includes:

Cadenza1 baseline - task 1
Test for enhancer and evaluator

@jonbarker68 , @ns-rse
I created this PR as a draft first to check how the test runs.
Note that I created a test/recipes directory. In this dir, I am testing all the bits of the recipe.
I have to confess I made the tests with some help from chatGPT.

@jonbarker68 , @ns-rse
The test failed again on an old test file with the following error
`
=================================== FAILURES ===================================
___________________________ test_full_CEC2_pipeline ____________________________
regression test output differences for tests/regression/test_full_CEC2_pipeline.py::test_full_CEC2_pipeline:

--- current
+++ tobe
@@ -1,2 +1,2 @@
-Enhanced audio HASPI score is 0.2994140
+Enhanced audio HASPI score is 0.2994066

`
Do we still have some randomness we can't control?

The PR seems ok for review. However, I keep having the same error,

=================================== FAILURES ===================================
___________________________ test_full_CEC2_pipeline ____________________________
regression test output differences for tests/regression/test_full_CEC2_pipeline.py::test_full_CEC2_pipeline:

--- current
+++ tobe
@@ -1,2 +1,2 @@
-Enhanced audio HASPI score is 0.2994140
+Enhanced audio HASPI score is 0.2994066

I don't think the error is related to the tests I'm including as both (mine and CEC2) are seeded at the beginning.

Hi @groadabike ,
Picking this up and am looking into whether its a CPU issue as with last time (see #180).
The other option might be differences in patches and I've started looking at diffs between a successful run and a failed run but its messy because of all the non-key info that is different (e.g. download speeds). But the torch/torchaudio and various cuda packages look consistent from what I've been able to discern so far. Need to look closer though.

Yeah, it's quite difficult to find the problem. I also tried to find the reason. I was scared that the random seed in my tests was the reason but you are also experiencing this problem with different PRs.

Thanks @groadabike I'll take a look at this tomorrow.
I've not made any progress on the failing test of the CEC2 pipeline other than ruling out the problem being down to changes in the Clarity code. I suspect its a package issue but haven't worked it out yet.

Thanks for addressing these so quickly @groadabike :+1:
I've suggested a few docs strings in places, these can be merged in from this PR interface if you use the "Commit Suggestion" button if you think they are acceptable, although you may want to git pull so that your local branch gets these changes.
pylint still returns some errors, some of which we can disable.  Running it against the code you've introduced and the tests gives...
# CAD1
❱ pylint recipes/cad1/task1/baseline/*.py
************* Module baseline.enhance
recipes/cad1/task1/baseline/enhance.py:17:0: E0401: Unable to import 'clarity.enhancer.compressor' (import-error)
recipes/cad1/task1/baseline/enhance.py:18:0: E0401: Unable to import 'clarity.enhancer.nalr' (import-error)
recipes/cad1/task1/baseline/enhance.py:19:0: E0401: Unable to import 'clarity.utils.signal_processing' (import-error)
recipes/cad1/task1/baseline/enhance.py:24:0: R0914: Too many local variables (17/15) (too-many-locals)
recipes/cad1/task1/baseline/enhance.py:100:4: R1705: Unnecessary "elif" after "return", remove the leading "el" from "elif" (no-else-return)
recipes/cad1/task1/baseline/enhance.py:209:0: R0914: Too many local variables (31/15) (too-many-locals)
recipes/cad1/task1/baseline/enhance.py:277:12: C0206: Consider iterating with .items() (consider-using-dict-items)
recipes/cad1/task1/baseline/enhance.py:225:12: W0612: Unused variable 'device_type' (unused-variable)
recipes/cad1/task1/baseline/enhance.py:260:12: W0612: Unused variable 'listener_id' (unused-variable)
recipes/cad1/task1/baseline/enhance.py:304:4: E1120: No value for argument 'config' in function call (no-value-for-parameter)
************* Module baseline.evaluate
recipes/cad1/task1/baseline/evaluate.py:16:0: E0401: Unable to import 'clarity.evaluator.haaqi' (import-error)
recipes/cad1/task1/baseline/evaluate.py:117:0: R0914: Too many local variables (21/15) (too-many-locals)
recipes/cad1/task1/baseline/evaluate.py:205:4: E1120: No value for argument 'config' in function call (no-value-for-parameter)

------------------------------------------------------------------
Your code has been rated at 8.15/10 (previous run: 8.15/10, +0.00)

The import-error I'm unsure about, they should import as I've installed clarity in the virtualenv. The unused-variable ones are easy to resolve as is the consider-using-dict-items.
The no-else-return is simple too, you just remove the last else because that will be done only if all other if/elif are not met.
Tests
❱ pylint tests/recipes/cad1/task1/*.py
************* Module test_enhance
tests/recipes/cad1/task1/test_enhance.py:6:0: E0401: Unable to import 'clarity.enhancer.compressor' (import-error)
tests/recipes/cad1/task1/test_enhance.py:7:0: E0401: Unable to import 'clarity.enhancer.nalr' (import-error)
tests/recipes/cad1/task1/test_enhance.py:8:0: E0401: Unable to import 'recipes.cad1.task1.baseline.enhance' (import-error)
tests/recipes/cad1/task1/test_enhance.py:18:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_enhance.py:33:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_enhance.py:41:4: C0103: Variable name "fs" doesn't conform to snake_case naming style (invalid-name)
tests/recipes/cad1/task1/test_enhance.py:54:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_enhance.py:76:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_enhance.py:105:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_enhance.py:109:4: C0115: Missing class docstring (missing-class-docstring)
tests/recipes/cad1/task1/test_enhance.py:114:8: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_enhance.py:142:0: C0116: Missing function or method docstring (missing-function-docstring)
************* Module test_evaluate
tests/recipes/cad1/task1/test_evaluate.py:5:0: E0401: Unable to import 'recipes.cad1.task1.baseline.evaluate' (import-error)
tests/recipes/cad1/task1/test_evaluate.py:12:0: C0103: Constant name "fs" doesn't conform to UPPER_CASE naming style (invalid-name)
tests/recipes/cad1/task1/test_evaluate.py:18:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_evaluate.py:18:0: C0103: Function name "test_ResultsFile" doesn't conform to snake_case naming style (invalid-name)
tests/recipes/cad1/task1/test_evaluate.py:20:4: C0103: Variable name "rf" doesn't conform to snake_case naming style (invalid-name)
tests/recipes/cad1/task1/test_evaluate.py:37:9: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
tests/recipes/cad1/task1/test_evaluate.py:37:36: C0103: Variable name "f" doesn't conform to snake_case naming style (invalid-name)
tests/recipes/cad1/task1/test_evaluate.py:45:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_evaluate.py:48:4: W0621: Redefining name 'fs' from outer scope (line 12) (redefined-outer-name)
tests/recipes/cad1/task1/test_evaluate.py:52:4: W0621: Redefining name 'audiogram' from outer scope (line 14) (redefined-outer-name)
tests/recipes/cad1/task1/test_evaluate.py:53:4: W0621: Redefining name 'audiogram_frequencies' from outer scope (line 15) (redefined-outer-name)
tests/recipes/cad1/task1/test_evaluate.py:48:4: C0103: Variable name "fs" doesn't conform to snake_case naming style (invalid-name)
tests/recipes/cad1/task1/test_evaluate.py:72:0: C0116: Missing function or method docstring (missing-function-docstring)
tests/recipes/cad1/task1/test_evaluate.py:78:0: C0116: Missing function or method docstring (missing-function-docstring)

-----------------------------------
Your code has been rated at 5.96/10

missing-function-docstring are annoying but easy to add. The invalid-name can be sorted by adding fs and f to the .pylintrc file (starting line 392 where a list of good-names is defined.

You're fast! You'd already corrected some of the linting errors whilst I was writing the above.
For things like too-many-locals these arise because a function/method is doing too much. The correct way to deal with it is to split out some of the tasks being performed into smaller functions that can then be used within the larger one. In turn unit-tests can be written to check that these work, they're often small and trivial but it makes sure work is more robust going forward. If it is absolutely necessary to have lots of locals then you can always add # pylint: disable=too-many-locals to the file and Pylint won't report the error on that file.

@ns-rse
thank you so much for all your help and suggestions.
All are very helpful.
For the test cases, I start asking chatGPT for a proposal, then I make the necessary changes.
Regarding pylint, I am getting the same ' import-error`.

The import-error is I think because the recipes directory is outside of the clarity directory. I'm not sure why that would be raised given we have the clarity package installed in our virtualenv and the tests run and use it. :thinking:
Perhaps just # pylint: disable=import-error above the imports so the test is disabled for those files.

@ns-rse
I keep receiving an error in tests because it can find the files saved in tests/recipes/cad1/task1/resources
How should I set these paths?

Good work catching the folder issue, looked like the sub-directories were missing originally.
I think that despite the failing tests (which are a separate issue being investigated under #180 and #181) it would be worth merging this. A review can then be made and separate issues created for issues that need adrressing.
I haven't yet been able to determine why the test is failing, as I've not yet recreated the environment under which it last run in order to do a comparison. Fairly busy this week as I've teaching Friday as well as Monday and Tuesday next week but intend to investigate further.

Lot of work here whilst tests fail they are not associated with this PR (see #180 and #181 for details).
Approving to avoid this PR dragging out. Suggest creating an issue to accumulate details of things that need correcting/improving and then addressing those in turn. I've created #185 to track these.

Thank you @ns-rse .
Do you know why I can't merge?
Jon and you already approved the PR but the merge button is blocked


Check if dataset exists in the specialized init scripts

Before the check for the version
https://github.com/kuzeko/graph-databases-testsuite/blob/d0d93a89fdb2edb1136be87c67fe5193fba93200/images/init/neo4j-tp3-init.sh#L20-L27
we should check if any dataset with that name exists,  something like, but for all versions
https://github.com/kuzeko/graph-databases-testsuite/blob/d0d93a89fdb2edb1136be87c67fe5193fba93200/runtime/tp3/execute.sh#L23-L26

To avoid overriding you mean?

No, is just for having a better error management.
The error that is thrown right now is ambiguous, it is not clear if the dataset exists but in the wrong version, or if doesn't exists at all.

Ah, sure. I agree.