Add upload of mail templates

Summary
Allow service manager to customize mail templates for the approval tool. Therefore enhance the approval controller to provide for uploading of mail templates that can be used in the technical service.
Details
Provide File Upload option through the oscm-app-approval UI.

Use AppTemplateService to read and write the template files from and to the APP database.
Enhance ApprovalInstanceAccess#BasicSettings with a method getMailTemplate to obtain the content of configured mail template
Adapt EmailWriter to to use the mail body from above getMailTemplate method.

Acceptance criteria

[ ] Service manager of the approval tool can provide own HTML mail templates.
[ ] Mail template is configurable via parameters in the technical service template
[ ] If no mail template is configured, default mail template is used
[ ] If configured template is not found or failed to load, default mail template is used
[ ] If configured template is not found or failed to load, a clear message is found in the logs

Additional context
Ask me

Implemented with
Customizable approval requests #55
https://github.com/servicecatalog/oscm-app/pull/111


Write unit-test cases for scope/probe/kubernetes/storageclass.go.

FEATURE REQUEST:

Write unit-test cases for the file: scope/probe/kubernetes/storageclass.go.
The test-cases have to be written in scope/probe/kubernetes/reporter_test.go.
Ensure that the test cases are not too complicated. Follow the guidelines https://github.com/openebs/openebs/blob/master/contribute/CONTRIBUTING-TO-DEVELOPER-DOC.md

Hi @avishnu , I would like to give this a try.

Hi @sandeepkumarpani888, you are welcome to try :)


Adding option to get the forecast straight to the terminal

Hi, I'm trying to find my first open-source contribution. 🔥
I Thought of an idea for a new feature:
-To get the forecast (or any other type of data) straight to the terminal, in case some one wants to be updated.
some thing that will look like this:
Station Name: merom golan picman | id: 10
Measurement time is: 15:40:00
The amount of rain is: 10.2mm
The Max temperature is: -1.5°
The Min temperature is: -2.1°
The ground temperature is: -1.4°
**There is snow conditions!!**
_________________________

I started a similar project, and this was its purpose ( Get weather updates to the terminal).
I would like to hear what do you think about this idea?

@AlmogShKt That's a great idea.
Note that you don't want to override the existing logic but only adding some logic to it


error when running script

https://github.com/HaroldMitts/wininstall/blob/8f6ccc91a9c6eb51d790808731a405ba54a33136/wininstall.cmd#L35
seems like you will need to add
wpeutil UpdateBootInfo below line 35
else the script will throw an error

Thanks Chisan, it does not return the error for me, but I saw the error Charles sent me, so I don't see any harm to add the command, especially if it resolves your error.
Can you please confirm if adding the command resolves the error?

Harold, I can confirm adding wpeutil UpdateBootInfo below line 35 would resolve the error.

Great, I am glad it worked out. Thank you for letting me know. I have added the command to line 36.


How to Group image  SetScale function use?

Here is my code and i want to scale an image for all group image  @photonstorm
preload: function (){
this.load.image("anyKey" , "\anyPath\image.png");
},
create: function(){
      positionShiftY = 10;
      for(var j =0 ; j<3 ; j++){
      this.add.group({ key: 'anyKey', frameQuantity: 4, setXY: { x: 32, y: positionShiftY stepX: 96 }});
       positionShiftY  = positionShiftY + 10
       j++;
     } // END FOR LOOP
}, // END FUNCTION

I write code in two different ways
var groupImage =  this.add.group({ key: 'anyKey', frameQuantity: 4, setXY: { x: 32, y: positionShiftY stepX: 96 }});
    groupImage.setScale(1.3);

this.add.group({ key: 'anyKey', frameQuantity: 4, setXY: { x: 32, y: positionShiftY stepX: 96 }}).setScale(1.3);

I use setScale(1.1) but it will not work

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Groups don't have a Scale, they're just groups of objects. If you need to scale the children you should be using a Container.


Remove Use of Deprecated Schedulers.elastic

Description
Removes the usage of Schedulers.elastic() and Schedulers.newElastic for the boundElastic variants. In the upcoming release of Reactor 3.5.0 the elastic APIs will be removed.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

API change check
API changes are not detected in this pull request.

/azp run java - cosmos - tests

/check-enforcer override


Question: Can bookmarks & user options be transferred when upgrading to the latest version of TR?

Can bookmarks & user options be transferred when upgrading to the latest version of TR?
Are they stored somewhere?

Hmm...
I'm upgrading from 9,5,0 (total-registry.exe) to the latest (TotalReg.exe)
In the registry under HKEY_CURRENT_USER\SOFTWARE\ScorpioSoftware the former saves to RegExp, the latter to TotalRegistry.
Is this expected behaviour?

Ah, yes, you're upgrading from a relatively old version where I changed the key name to align with the tool name.
Sorry.
You can use TotalReg to copy the settings :)

I find it slightly ironic a program designed to check the registry didn't check the registry.


Add debugging to signer loop start

Add a debug statement to mark the start of the signer loop

LGTM! can we cherry pick also to 0.3.9?

Sure!


fix(ingress): fixed hostname field when having multiple ingresses EE-1072

close EE-1072

Closes https://github.com/portainer/portainer/issues/5292


Add  additionalNotificationRecipients property

Overview
This pr is to expose a new additionalNotificationRecipients properties for sending additional notification in the "accessReviewScheduleDefinition" object.
An accessReviewScheduleDefinition contains access review instances. Now every accessReviewScheduleDefinition contains multiple instances[one for every invocation of the review. For ex: if a schedule definition running weekly, there's one instance every week]. Every instance automatically inherits the list of reviewers and fallbackReviewers from an accessReviewScheduleDefinition when it's created
We now want to expose additionalNotificationRecipients in both accessReviewScheduleDefinition and accessReviewInstance so that developers can change it for an actively running instance if they want.
Changes
Expose properties: additionalNotificationRecipients, List of AccessReviewNotificationRecipient
AccessReviewNotificationRecipient contains
notificationTemplateType - what type of notification send to recipients
principalId - recipient ID
principalType - recipients type (group/user)
Expose route for POST and PUT instance
MSFT employees can try out our new exp
MSFT employees can try out our new experience at OpenAPI Hub - one location for using our validation tools and finding your workflow.
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Add a changelog entry for this PR by answering the following questions:

What's the purpose of the update?

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

When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.
When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
If updating an existing version, please select the specific langauge SDKs and CLIs that must be refreshed after the swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[x] No refresh required for updates in this PR

Contribution checklist:

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

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

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

Change to data plane APIs
Adding new properties
All removals

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

[x] Check this box if any of the following apply to the PR so that label “WaitForARMFeedback” will be added automatically to begin ARM API Review. Failure to comply may result in delays to the manifest.

Adding a new service
Adding new API(s)
Adding a new API version
-[ ] To review changes efficiently, ensure you copy the existing version into the new directory structure for first commit and then push new changes, including version updates, in separate commits.

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

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

Breaking Change Review Checklist
If any of the following scenarios apply to the PR, request approval from the Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in a stable version
[ ] Removing properties in a stable version
[ ] Removing API version(s) in a stable version
[ ] Updating API in a stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

Hi, @jingyang1114. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.


TextField to have password visibility show/hide feature pre-built

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Summary 💡
The purpose of UI libraries is to make our life easier by giving us pre-built components.
The password show/hide eye is essential in a password text field, because there is no reason not to have it in your everyday projects. People like to show/hide their password when typing. It should be very easy to implement by just having an option for it in our password TextField components.
That being said, the only way to implement the password visibility is to use Input instead of TextField. This introduces many disgusting problems for the developer's experience, such as

Input not having helperText to show error messages like the rest of the textfields, so need to mess around with inputAPI to implement FormHelperText which doesn't even have examples in the docs
Input needing adjusting to be the same size as the other textfields
code becomes much uglier because you need to add 8 new imports that you didnt have to use with textfields, more functions and states to the global component space, and having non uniform-looking code to the rest of the textfields and basically littering the code by replacing a simple textfield with a big formcontrol block with multiple children and intricacies.

Such a simple and essential feature of a UI library should be readily accessible in TextField as a prop/attribute. We shouldn't have to uglify our code, waste time to match the input to the other textfields, and most importantly break our brains trying to work with input api and implement error labels that come out of the box with textfield. The UI library should make our life easy and give us a password show/hide with textfield, it should've always been this way to begin with.
Examples 🌈

Motivation 🔦
I understand why MUI took this approach to begin with, implementing it to lower-level so that it people can customize or build other functionalities with the adornment features.
But the frustration has to do with the UI library making it inconvenient to have a basic password textfield with a password show/hide feature that should've been there to begin with. The code should look uniform with the rest of my textfields. It would make the code easier to look at, easier to work with, easier for it to fit on my screen width and length wise, all things a UI library should accomplish. I want pre-built stuff, I didn't come to build the very essential features by myself and waste time figuring out how to create basic level password inputs. It might be way faster to implement the second time, but every person doing this the first time has his time wasted and code uglified - all for a password input, a very basic feature for a password input that any UI library should have.

Actually, you can easily achieve this by only using TextField
<TextField
  label="With normal TextField"
  id="outlined-start-adornment"
  sx={{ m: 1, width: '25ch' }}
  InputProps={{
    startAdornment: <InputAdornment position="start"><VisibilityIcon/></InputAdornment>,
  }}
 />

https://mui.com/material-ui/react-text-field/#input-adornments
we can access Input from TextField with a prop named InputProps and start passing adornment directly in there


changed all commands from redisReplyReader to redisReader

I was reading through the hiredis documents and see that the main change to 0.14.0 from 0.13.3 is that some commands were changed from redisReplyReader* to redisReader*. I made this simple change to the *.c file, compiled it for armv7h, installed hiredis 0.14.0, installed the compiled php-phpiredis-git and now it works. I was reading through the docs for the upcoming updates and do not think I know enough to adapt this to the upcoming hiredis 1.0.0 as there are more changes that I do not fully understand, so I may not be able to help on the next update, but for now, this seems to work.
https://github.com/redis/hiredis/blob/master/CHANGELOG.md

Merged into v1.1 branch. As for v1.0, it will remain stuck to Hiredis <= 0.14. Thank you!


More pages

It is mostly done, the only thing that needs to be finished is adding the js and CSS only on the needed page. I don't like adding one more component just to do it. Here is how to do it but still searching for a more "formal" way of doing it.
https://github.com/vercel/next.js/issues/299#issuecomment-474722259

It is mostly done, the only thing that needs to be finished is adding the js and CSS only on the needed page. I don't like adding one more component just to do it. Here is how to do it but still searching for a more "formal" way of doing it.
vercel/next.js#299 (comment)

Maybe this Component level CSS?


complete refractoring sdk related activity results

Kindly watch this 2mins video: https://www.loom.com/share/1b2ae90fda084fd689caadf9e813938d
This branch also fixes: pressing cancel on the pin stage to function by regular back stack.

SDKBuilder was later renamed to SDKIntent

Just realized you talk about the issue with the Activity result in your video. The result not firing is the reason that we do this in the activity - Android doesn't handle the results between fragment calls and Activity calls properly. Because of that I think this PR should be closed. The solution in https://github.com/UseHover/Stax/pull/461 handles the de-duplication better.


Local del of data for storage cleaning

Is there some way to remove the data behind key values locally without replicating changes? A bit like TTL for storing the data itself or "selective replication".
I'm working on a project where a large part of the servers used for processing have a very constrained storage space. I was thinking about using hyperdb to transfer data but without some sort of way to clear the processed data, those servers are going to fill up quickly.
One way would be to do something like /unprocessed and /processed, and then watch /unprocessed in the small servers. After processing server would move data to /processed which is watched in the backup server. However the problem here is that if the server writes to /processed it will store the data no matter whether it's replicating that particular root key.
Any ideas?

I just checked hypercore a bit and saw storageCacheSize setting. Maybe this can be used here?

@0fork storageCacheSize controls memory usage. If you want to delete locally-stored data, use the hypercore's clear() method.


Some code clean up, and added error messages

Just some code clean up.
Remove some unused variables.
Used 'using' statement for disposable types
Add directory copy instead of move.
Added some error messages.

Closing this PR since changes will be incorporated into #257


Doc typo for ICLRControl::GetCLRManager::GetCLRManager

[Enter feedback here]
Typo in docs for ICLRControl::GetCLRManager Method GetCLRManager:
...

IID_ICLRTaskManager: speciries that ppObject will be of type ICLRTaskManager.
...

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

ID: b2a601fe-7b35-60af-c8f0-3c7bee01f74e
Version Independent ID: 87c6e76a-5fb9-cea5-8522-5123d9aa84b6
Content: ICLRControl::GetCLRManager Method
Content Source: docs/framework/unmanaged-api/hosting/iclrcontrol-getclrmanager-method.md
Product: dotnet-framework
GitHub Login: @rpetrusha
Microsoft Alias: ronpet

Thanks for noticing the typo, @thewilsonator. We've corrected it in #11882.

No problem!

You can also submit the changes when you find something like this:
https://docs.microsoft.com/en-us/contribute/#quick-edits-to-existing-documents

Noted, although I'll probably have forgotten about it when I could next make use of it.


How to transform a response using an ITransformProvider

I want to completely rewrite the body of a response - how can this be done?
The AddResponseTransform section of the docs mentions the AddResponseTransform method which:

allows creating a custom response transform without implementing a ResponseTransform derived class

The ResponseTransform section of the docs mentions:

Avoid reading or modifying the response body as this may disrupt the proxying flow

So how are we meant to transform the response body? It seems like the docs are saying "you can mody the response but not the response body" - is that the case?
I've tried the following, which results in the modified body being included in the response followed by the original response;
public class MyTransformProvider : ITransformProvider
{
    public void Apply(TransformBuilderContext context)
    {
        var transform = new ResponseFuncTransform((context) =>
        {
            var responseObject = new
            {
                Value = "Transformed Response"
            };

            var json = Newtonsoft.Json.JsonConvert.SerializeObject(responseObject);
            var bytes = System.Text.Encoding.UTF8.GetBytes(json);
            context.HttpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);

            return new ValueTask(Task.FromResult(responseObject));
        });

        context.ResponseTransforms.Add(transform);
    }

    // ...
}

Returns a response body of:
{
    "Value":"Transformed Response"
}{
    "Value":"Original response returned by server"
}

Any help understanding how to completely transform a response, including the response content/body, would be greatly appreciated. I'm finding the online documentation and inline code documentation a little light when it comes to transformations.

Is this still a valid approach to accomplish rewriting the response body? When I take this exact code, I get an empty response body any time the someCondition block is executed.

@dotnetnate it is, but you may have to update the headers to match the body you are sending (e.g. setting the correct content-length). Feel free to open a new issue if you are hitting a problem with SuppressResponseBody.

Thanks @MihaZupan  non-issue, but the pointer helped. The response was g-zipped and the headers were goofing it up. Got it sorted out.

Seems like we really need more response transform example. In my case, I've been trying to transform any response into a static JSON response, but I always got Decompression failed error message on Postman and curl: (56) Failure when receiving data from the peer error message on cURL. However, if I change the Accept-Encoding header on Postman from gzip, deflate, br (the default one) into *, it worked without any errors.
Below are my response transform configuration codes:
proxyBuilder.LoadFromMemory(Routes, Clusters)
            .AddTransforms(builderContext =>
            {
                builderContext.AddResponseTransform(async context =>
                {
                    context.SuppressResponseBody = true;
                    var jsonObject = new
                    {
                        Text = "Hello World"
                    };
                    var json = JsonSerializer.Serialize(jsonObject);
                    await context.HttpContext.Response.Body.WriteAsync(Encoding.UTF8.GetBytes(json));
                });
            });

Is there something else I need to configure?

@Tieantono when you replace the response body you need to remove/replace the headers that describe the body like Content-Length and Content-Encoding. It sounds like the destination sent a compressed response body, but the body you're replacing it with is not compressed.
Consider calling context.HttpContext.Response.Headers.Clear().

Re-opening this to add some doc guidance. We don't have coverage for SuppressResponseBody, nor about clearing/replacing response headers.

@Tieantono when you replace the response body you need to remove/replace the headers that describe the body like Content-Length, Content-Type, and Content-Encoding. It sounds like the destination sent a compressed response body, but the body you're replacing it with is not compressed.
Consider calling context.HttpContext.Response.Headers.Clear().

Thanks for the answer, I was suspecting that was because of the destination's response body was compressed. And yes, using context.HttpContext.Response.Headers.Clear() I'm getting the expected response body.

Triage: Should be just docs update now:

SuppressResponseBody
clearing/replacing response headers


Fetch Issue in Safari 14.0.2

Library Affected:
workbox-sw 5.1.2
Browser & Platform:
Safari 14.0.2 in MacOS  Big Sur 11.1
Issue:
*I'm using NetworkFirst approach. GET requests work in Chrome but it gives me the following errors in Safari 14.0.2:

FetchEvent.respondWith received an error: no-response: no-response :: [{"url":"https://myendpoint"}]
Fetch API cannot load https://myendpoint.*

Unfortunately, I cannot share my endpoint but I can provide any other information needed. I also included the service worker code below.
if ("function" === typeof importScripts) {
  importScripts(
    "https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js"
  );

  /* global workbox */
  if (workbox) {
    console.log("Workbox is loaded");

    /* injection point for manifest files.  */
    workbox.precaching.precacheAndRoute(self.__WB_MANIFEST, {
      ignoreUrlParametersMatching: [/.*/]
    });

    /* delete old precaches */
    workbox.precaching.cleanupOutdatedCaches();

    /* update service worker */
    self.addEventListener("message", event => {
      if (event.data && event.data.type === "SKIP_WAITING") {
        self.skipWaiting();
      }
    });

    /* clients get the control for the first visit */
    self.addEventListener("activate", function(event) {
      event.waitUntil(self.clients.claim());
    });

    /* ignore query string */
    const ignoreQueryStringPlugin = {
      cachedResponseWillBeUsed: async ({
        cacheName,
        request,
        matchOptions,
        cachedResponse,
        event
      }) => {
        console.log(request.url);
        if (cachedResponse) {
          return cachedResponse;
        }

        // this will match same url/diff query string where the original failed
        return caches.match(request.url, { ignoreSearch: true });
      }
    };

    /* cache  ----- */
    workbox.routing.registerRoute(
      ({ url }) => url.href.includes("2x.jpg70"),
      new workbox.strategies.NetworkFirst({
        cacheName: "satellite-imagery",
        plugins: [
          new workbox.expiration.ExpirationPlugin({
            maxEntries: 1000,
            maxAgeSeconds: 60 * 60 * 12 /* 12 Hours */
          }),
          ignoreQueryStringPlugin
        ]
      })
    );
    /* cache ---- */
    workbox.routing.registerRoute(
      ({ url }) => url.pathname === "pathname",
      new workbox.strategies.NetworkFirst({
        cacheName: "whatever",
        networkTimeoutSeconds: 2,
        plugins: [
          new workbox.expiration.ExpirationPlugin({
            maxEntries: 200,
            maxAgeSeconds: 60 * 60 * 12 /* 12 Hours */
          })
        ]
      })
    );

    /* cache ---- */
    workbox.routing.registerRoute(
      ({ url }) => url.pathname === "/myendpoint2",
      new workbox.strategies.NetworkFirst({
        cacheName: "whatever 2",
        networkTimeoutSeconds: 10,
        plugins: [
          new workbox.expiration.ExpirationPlugin({
            maxEntries: 2,
            maxAgeSeconds: 60 * 60 * 12 /* 12 Hours */
          })
        ]
      })
    );
  } else {
    console.log("Workbox could not be loaded. No Offline support");
  }
}

Is the route that matches those requests the one that uses NetworkFirst with networkTimeoutSeconds: 2? What happens if you increase that timeout?

Yes, the request was never reaching to the server. This fixed my issue. Do you know why the problem only happens with Safari?
You have no idea how important this fix was. I really do appreciate it.

No, I couldn't say with any certainty why the network request would always take longer than two seconds in Safari. I'm glad to hear that increasing that limit resolved things. Two seconds seems quite low in general, so I would imagine that users of any browser could easily run into that limit if they were on a high-latency network connection.


Update pgbackup in App.json

I've update app.json to remove the typo 'pgbackups' to 'pgbackup'

I'm sorry, but I only see two other merges as commits?

@derekmartinla it looks like you've used master as a base, but this repository uses development instead


A message bubble of one type supports multiple styles

Hey Ovidijus,
How can I implement multiple styling options for HTML message bubbles?
Currently, I've set the HTML message style to { backgroundColor: "unset", padding: '0px' }, specifically for a recommend button.

This configuration has been applied universally to all HTML bubbles. I'm interested in enriching the presentation of rich text messages using HTML, and I would like to update the HTML style to a more conventional default, such as {shared: { bubble: { color: "black" } }.

Could you provide guidance on how to dynamically switch between different HTML bubble styles to accommodate various content types effectively?
Looking forward to your reply!

Hi @trans-for-learn.
If you want to have custom styling for specific messages, I would recommend the use of custom roles. For example, if your message is a recommendation that should use a specific background color (and is positioned on the right), you can use the following message format:
{html: '
Give me some recommendations
', role: 'recommendation'}

Then in the messageStyles property, you can use the following code:
{
  default: {
    recommendation: {
      bubble: {
        backgroundColor: 'yellow',
        marginRight: '0px',
        marginLeft: 'auto',
      },
    },
  },
}

Note, the reason why you need marginRight: '0px' and marginLeft: 'auto' is because by default, any role that is not "user", will automatically have its message positioned on the left side, hence these properties position it on the right.
Let me know if this helps.
Thanks!

I will be closing this issue as there has been no further activity.


g:indent_blankline_use_treesitter throws error

So I've set the following value:
let g:indent_blankline_use_treesitter = v:true

but I'm getting these error messages if I open a file:

Here all my configs currenty:
let g:indent_blankline_filetype_exclude = ['help']
let g:indent_blankline_buftype_exclude = ['terminal']
let g:indent_blankline_space_char = ' '
let g:indent_blankline_use_treesitter = v:true
let g:indent_blankline_show_first_indent_level = v:false
let g:indent_blankline_show_end_of_line = v:true
let g:indent_blankline_show_current_context = v:true
let g:indent_blankline_context_highlight = 'Function'
let g:indent_blankline_context_highlight = [
                                            \ 'class',
                                            \ 'function',
                                            \ 'method',
                                            \ ]

Thank you for this plugin!

Yeah sorry that was my bad. I pushed the code with my debug print statement still in there :facepalm:
I already removed it again, try updating

Yeet! It's working now! Thank you! :)


Preliminary support for showing EOL symbols.

Derived from: https://raw.githubusercontent.com/coderaiser/cm-show-invisibles/master/lib/show-invisibles.js
This should give the ability to implement the rest of the show symbols/eol options in the foreseeable future.
Tested to be working without any issues on this end.

I'm actually going to pull this apart and separate out everything so options can be turned on/off separately rather than it showing everything or nothing.  That should give enough flexibility to make it more worthwhile.


[BUG] collections.namedtuple leads to source not found warning

Describe the bug
I declare a few named tuples in my code, which leads to:
←[33mWARNING  -  ←[0mmkdocstrings.handlers.python: Couldn't read source for 'autocook.python.PackageVersion.__new__': could not get source code
←[33mWARNING  -  ←[0mmkdocstrings.handlers.python: Couldn't read source for 'autocook.windows.WindowsService.VALUE.__new__': could not get source code

To Reproduce
Here is the code:
class WindowsService(WindowsServiceRemoval):
  ''' long docstring '''
  VALUE:NamedTuple = collections.namedtuple("VALUE", "required nssmKey quotes type")

  def __init__(_, name:str) -> None:
    pass

Expected behavior
Nothing special, just no warning.
System (please complete the following information):

pytkdocs version 0.11.1
Python version: 3.8.8
OS: Windows 20H2 with Miniforge Python

I agree that these warnings are annoying or even disrupting with the strict mode enabled. We can probably add a special cases, or some configuration option to choose what warnings to disable.


Buttons drawable

Drawable that lists all the buttons, and shows their state

Will probably just do this with individual Widgets, drawsBackground() and switching background color.

Works using Label widgets


bug: Empty notification types results in no subscriptions returned from watch subscriptions

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
See title. Context
Expected Behavior
See title
Steps To Reproduce
See title
Environment
- OS:
- rustc:
- cargo:

Relevant log output
No response
Anything else?
No response

Problem is using JOIN instead of a LEFT JOIN when querying subscriptions and joining the scope table.
Solution should involve a test case for the query handler.


Post to https://api.rollbar.com/api/1/item/item/ correct?

My Rollbar error logging stopped working and by looking at the code I (might have) figured out what the problem might be. I debugged the curl request and found out that it posts to https://api.rollbar.com/api/1/item/item/  ("item" twice)
It looks weird to me because your docs have the word "item" only once.
Is this correct and still functional behaviour? Your example code from the readme does not work (at my environment) at the moment.
It looks like it tries to find an error with the ID "item" because this is the response:
  "err": 1,
  "message": "not found"

It does work when I remove the last 'item/' from the URL. Any ideas? (Or did you maybe change the routing on your API URL?)
Potentially relevant code:
src/Senders/CurlSender.php:
class CurlSender implements SenderInterface
{
    private $utilities;
    private $endpoint = 'https://api.rollbar.com/api/1/item/';

src/Config.php:
    private function setTransportOptions(&$config)
    {
        if (array_key_exists('base_api_url', $config)) {
            $config['senderOptions']['endpoint'] = $config['base_api_url'] . 'item/';
        }

        if (array_key_exists('endpoint', $config)) {
            $config['senderOptions']['endpoint'] = $config['endpoint'] . 'item/';
        }

This is strange because the code would seem to have existed for many months that would lead to that and it is wrong.

@rokob I know. I suspect that the API accepted the payload at /item/item as well but maybe changed the routing? /item/([0-9]}) is for viewing an item (if I remember it correctly) and it looks like this might have changed to /item/(.*} ? (I am just trying to guess what could have caused the issue the occur after a long day of work)

Those code snippets are a red herring, the CurlSender endpoint variable does not get the item/ appended to it. We only use that endpoint variable if one is not set in the configuration. Are you setting endpoint in your configuration?

Hmm. I was checking it as well. Seems like the https://github.com/baibaratsky/yii2-rollbar sets it:
public $baseApiUrl = 'https://api.rollbar.com/api/1/item/';

The baseApiUrl should not contain item/, right?
I am still wondering why this issue started to play up now, but it looks like it is not a Rollbar interruption.

Ah yes it should not contain item/. I agree it is weird that is just cropping up now, it could be what you are saying about the backend accepting that before and that changing recently.

https://github.com/baibaratsky/yii2-rollbar/commit/1561d6490a06ba27818ce6eef54bacf3d6abfc8f#diff-e6b436425177a2b2c600da9dd3760ef5 is where it got added so it could be due to an upgrade in versions.

I made https://github.com/baibaratsky/yii2-rollbar/pull/14 to fix it in that library

This issue does not need a solution (for me) anymore, but I am not sure if there are more people using item/item/ to post to.
I only figured it out after I realised that I had no errors logged for the past 14 days and usually it logs about 1 error per week. The annoying thing is that if you are relying on Rollbar for error logging, and it is not working, people will probably incorrectly assume that everything is working flawlessly ;)

Feel free to close this one. I am not sure if you want to look into backend routing so I will just leave it up to you to close this one 😄 Thanks for the very quick response guys! (and teaching me about the "red herring", never heard that expression before 😄 )


Add to_yaml command

This command takes an ASDF file and makes it 100% YAML by inlining all of the data.

@mdboom How should I use this?
The first example below works - writes out the numpy array as yaml array.
f.tree={'test': np.array([[1,2],[3,4]])}
f.write_to('test.asdf', auto_inline=10)

But this doesn't - still writes the numpy array as binary.
aff=models.AffineTransformation2D(matrix=[[1,2],[3,4]])
f.tree={'test': aff}
f.write_to('test.asdf', auto_inline=20)

@nden: Indeed, you've found an issue here.  I'll look into it.

Fix in #70, which I'll merge as soon as Travis passes.


Add noise generated terrain

This is a very simple example of using FNL to generate terrain and could easily be expanded on if you want to add multiplied/additive noise on top of this example.

Since I used the majority of this code for the actual mesh gen I figured it may fit into this repo as an added option.

Nice, I started doing something similar some time ago but this looks much nicer :D


Should close #395, or at least the part agreed on.

I only added the suggestions listed in #395 for *> (not those for >>).
I took the liberty of modifying the previous line in CHANGES.txt, as the suggestion given is f <$> m instead of fmap f m. I also added the new changes to the file.

Thanks! As a general rule, for very simple replacements, I'm happy for you to add a test or not - either is fine.


Helm: Make nodeinit image, tag and registry configurable using helm values

Helm: Make nodeinit image, tag and registry configurable using helm values to enable running in air-gapped environments or ones with private registries
Fixes: #12273
Signed-off-by: Sean Winn<EMAIL_ADDRESS>

Coverage decreased (-0.02%) to 37.143% when pulling d6056d929d8ee8b70283c990c8f0721aa29b0d9c on seanmwinn:cilium-12273 into a5324d96cb85b00ee9b0fefd8481a0d797a75e22 on cilium:master.

test-me-please

test-4.9


Add RDS hardening, update docs and test CI

Feature Request
Description of Problem:
Add RDS hardening policies. Update documentation and run successful CI
Potential Solutions:
Documentation for the Ansible AWS RDS community module.

readme updated prior to OSF so this issue no longer relevant - closing.


Add SonarCloud workflow

Signed-off-by: Arthur Pitman<EMAIL_ADDRESS>This PR adds a SonarCloud workflow

Closing this PR as it is superseded by #248


A bug in ReasoningTask success check

Hi,
It seems like the code in the compare_w_digits method in the ReasoningTask class failed to compare results with references that have negative values.
Maybe a quick fix is enough:
return abs(float(reference) - float(answer)) <= 0.05 * abs(float(reference))

Thanks for the note. The problem is now fixed.


setStartDate not working as expected

Expected behaviour
The startdate of the datepicker component, change.
Actual behaviour
When trying to modify the datepicker startdate dinamically with js, it didn't work.
The start date do not change.
Datepicker version used
The one that is right now in github. I just downloaded from there.
Example code
The HTLM part:

Desired Semester:

Start Date:

End Date:

The JS Part:
$(document).ready(function() {
$('#btn-back').addClass('hide');
$('.calendario').datepicker({
  pickTime: false,
  autoclose: true,
  clearBtn: true,
  useCurrent: false,
  format: 'yyyy/mm/dd',
  endDate: '+90d',
  todayHighlight: true,
  language: 'es'
});

$("#semester").change(function() {
	$('.calendario').datepicker('setStartDate', '2015/01/01');
});

});
Jsfiddle example to reproduce the problem.

#2134


Searching w/ Documents Results in Non-sensical Results - Why?

Hey, I have downloaded 100 wikipedia articles and put them into the vector DB and am searching on them. Some questions, like asking it New York, work just fine.
Other questions, such as tell me what you know about New York result in this:
177 Wall Street, New York City, New York City Hall of Commodern Times Square, New York City, New York City, New York City, New York City, New York City, New York City, New York City, New York City, New York City, New York City, New York City, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York, New York: New York: New York, New York: New York: New York, New York Street Street Street: New York, New York, New York, New York, New York, New York Street Street Street, New York Street Street Street Street, New York Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street, New York, New York, New York, New York, Newley, Ъ, New, New, New, New, New, New, New regarding, Newness, Newness, Newness, Newness, several-wide,
th,th,th-old-two-century-two-century-owned buildings, 19 as all-owned Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street Street-towth-street-taken-related buildings,towth-taken-tunn-t-related buildings, 10th, 10, thell-related-related-the-theht-Nond-183-18thues, theles, thels, thels 1tkt-10thld-tubnesslorev2nd2v2v2222222202lnlan-tln-time-sphere-sphere,sp,sk,su,sl,sp,sp,ll,ll,ll,ll,ll,,,,,,,,,,,,,,,, a: all-related-related-2-2,ll,ll-2,2222-2hr-sightsuchth-ththththththththth2th2,22,22222222th2thththththththththththththth-sphere-southth-sunk-2ththth-2, a, a, a, a,2,2,2

2 2

rsore lt 2ltltltltlt
lt

ll ll ll 2lskilaslatthlscape sing lan lan 2 2 2 2 2spensis

Sources
Sources [Score | Link]:
0.78 | [/docs/Broad Street (Manhattan).txt](http://<IP_ADDRESS>:7860/file//docs/Broad%20Street%20(Manhattan).txt)
=== Transportation === The Broad Street

It also takes ~3 minutes to generate this response (on a 3080 using GPU). Any idea why it would output this?
Other queries can also cause the entire app to hang and require me to restart the docker container I'm running it in.

I uploaded https://en.wikipedia.org/wiki/Broad_Street_(Manhattan) to https://gpt.h2o.ai and asked "Tell me what you know about New York" (Well, I forgot the T, but still works) and I get:

Maybe you can try that site and reproduce it?  I cannot.
But it will depend upon the model.  Which model are you using?  What is your generate.py line?

As for slowness, maybe you are using top_k_docs=-1 and its filling up the context?  That will run slower, esp. for weaker GPUs.  If it's GGML and offloading to CPU/disk, then also becomes super slow.

I'm comparing this to a GPU-enabled branch of privateGPT with the same dataset of 100 text files from wikipedia (I've just downloaded them with the wikipedia python package and converted them to ASCII). Here's the response I get with TheBloke's 2.7B GGML Llama model on h2o:

H2o seems to take 5 seconds to start writing the response, then 15-20 seconds writing it.
Meanwhile privateGPT, while it has a worse response, takes 1 second and outputs this:
Enter a query: tell me what you know about new york
 I don't know much about New York City or the surrounding area
llama_print_timings:        load time =   834.86 ms
llama_print_timings:      sample time =    13.71 ms /    16 runs   (    0.86 ms per token,  1167.20 tokens per second)
llama_print_timings: prompt eval time =   834.76 ms /   491 tokens (    1.70 ms per token,   588.20 tokens per second)
llama_print_timings:        eval time =   753.08 ms /    15 runs   (   50.21 ms per token,    19.92 tokens per second)
llama_print_timings:       total time =  1632.08 ms
.

> Question:
tell me what you know about new york

> Answer:
 I don't know much about New York City or the surrounding area.

> testsources\Broad Street (Manhattan).txt:
Broad Street is a northsouth street in the Financial District of Lower Manhattan in New York City. Originally the Broad Canal in New Amsterdam, it stretches from today's South Street to Wall Street.

> source_documents\state_of_the_union.txt:
Let’s stop seeing each other as enemies, and start seeing each other for who we really are: Fellow Americans.

We can’t change how divided we’ve been. But we can change how we move forward—on COVID-19 and other issues we must face together.

I recently visited the New York City Police Department days after the funerals of Officer Wilbert Mora and his partner, Officer Jason Rivera.

They were responding to a 9-1-1 call when a man shot and killed them with a stolen gun.

> testsources\Nancy Rabalais.txt:
== Biography ==

> testsources\Traditional markets in Mexico.txt:
and other architecture from the 1930s and 1940s, along with a number of modern structures. It is an upper income neighborhood although it has had problems associated with urban decay. While the market sells foodstuffs retail, most of its sales are to the many restaurants in the area and nearby. La Paz in the center of Tlalpan has been around for about 110 years. It has 161 stands with everything from food to clothes and some esoteric products.th urban decay. While the market sells foodstuffs retail, most of its sales are to the many restaurants in the area and nearby. La Paz in the center of Tlalpan has been around for about 110 years. It has 161 stands with everything from food to clothes and some esoteric products.
                                                                                ed to the museum in 1991 by Rochester Gas and Electric.
> testsources\GE 45-ton switcher.txt:
Rochester & Genesee Valley Railroad Museum, The has restored former Rochester Gas & Electric 1941, a unit originally used by GE at River Works in Lynn, MA. It was donated to the museum in 1991 by Rochester Gas and Electric.
Sioux City Railroad Museum, The owns and operates a former US Marine Corps 45-ton locomotive, painted in a Milwaukee Road paint scheme and numbered to #206.
Railstar Corp. at Lowville, NY owns one in preparation of a tourist railroad startup.

To compare closer to apples to apples here you should use the same model type.
You can download llama-2-7b-chat.ggmlv3.q2_K.bin (or link it) to the local disk.  Then use
python generate.py --base_model=llama --model_path_llama=llama-2-7b-chat.ggmlv3.q2_K.bin

Or provide the URL to h2oGPT for auto-download
python generate.py --base_model=llama --model_path_llama=https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q2_K.bin

One can also do this from UI and avoid passing --base_model.
Starting get_model: llama
BEGIN get url https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q2_K.bin
GOT url https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q2_K.bin
DONE url https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q2_K.bin
llama.cpp: loading model from llama-2-7b-chat.ggmlv3.q2_K.bin
llama_model_load_internal: format     = ggjt v3 (latest)
llama_model_load_internal: n_vocab    = 32000
llama_model_load_internal: n_ctx      = 2048
llama_model_load_internal: n_embd     = 4096
llama_model_load_internal: n_mult     = 256
llama_model_load_internal: n_head     = 32
llama_model_load_internal: n_layer    = 32
llama_model_load_internal: n_rot      = 128
llama_model_load_internal: freq_base  = 10000.0
llama_model_load_internal: freq_scale = 1
llama_model_load_internal: ftype      = 10 (mostly Q2_K)
llama_model_load_internal: n_ff       = 11008
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size =    0.08 MB
llama_model_load_internal: using CUDA for GPU acceleration
ggml_cuda_set_main_device: using device 0 (NVIDIA GeForce RTX 3090 Ti) as main device
llama_model_load_internal: mem required  = 1713.10 MB (+ 1026.00 MB per state)
llama_model_load_internal: allocating batch_size x (512 kB + n_ctx x 128 B) = 384 MB VRAM for the scratch buffer
llama_model_load_internal: offloading 32 repeating layers to GPU
llama_model_load_internal: offloading non-repeating layers to GPU
llama_model_load_internal: offloading v cache to GPU
llama_model_load_internal: offloading k cache to GPU
llama_model_load_internal: offloaded 35/35 layers to GPU
llama_model_load_internal: total VRAM used: 4103 MB
llama_new_context_with_model: kv self size  = 1024.00 MB
AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 |

Even here, privateGPT's answers are really bad compared to h2oGPT.  Just uploaded https://en.wikipedia.org/wiki/Broad_Street_(Manhattan) as url to h2oGPT in UI.
Just first question:

The first time I asked a question it took about 3s to get started, and after that about 0.3s.  I don't see the big delay that you see.
First time it's preparing to use db, but I can check more details.
Maybe provide a list of document sources that  you see reproduce the problem and steps you take, since I cannot see same thing.

FYI I timed everything in my case, and the first-time 3s delay seems purely due to the model.  Once it's fully up and state cached, then next 0.3s delay happens.

Probably you get short bad responses from privateGPT because the prompting is all off, which makes it quicker to respond.  Basically it's dumbed down.
The only issue then is the nonsensical results from h2oGPT you see.  Please provide all your urls or docs and I can take a look.

Yes, you are using top_k_docs=-1 that auto-fills up the context for the best results, which will make your model take longer to get output.    Also you added --detect_user_path_changes_every_query=True, which is probably fine for 100 docs since doing hash on 100 files is not big deal, but that can add some overhead potentially.

If I use your options, primarily top_k_docs=-1, it fills the context of 4096 up with docs.  The answer is still ok, but it does take time in the beginning because the length of the input is larger.  This is 100% normal and not about h2oGPT but about how LLMs currently work.

(cutoff just because went beyond 1024 max_new_tokens)

I clarified readme to avoid --top_k_docs=-1 etc. in place by default.

So, I did get it to work!
I had trouble getting it working with docker (I was using base_model='path_to_my_model.bin') and it would spit this out. Should I have used the model_path_llama instead?
2023-08-20 16:12:42 Starting get_model: /models/llama-2-7b-chat.ggmlv3.q2_K.bin
2023-08-20 16:12:46   File "/h2ogpt_conda/lib/python3.10/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
2023-08-20 16:12:46     component = fn(*varargs, **kwargs)
2023-08-20 16:12:46   File "/workspace/src/gen.py", line 927, in main
2023-08-20 16:12:46     model0, tokenizer0, device = get_model(reward_type=False,
2023-08-20 16:12:46   File "/workspace/src/gen.py", line 1273, in get_model
2023-08-20 16:12:46     config, _, max_seq_len = get_config(base_model, **config_kwargs, raise_exception=False)
2023-08-20 16:12:46   File "/workspace/src/gen.py", line 992, in get_config
2023-08-20 16:12:46     config = AutoConfig.from_pretrained(base_model, use_auth_token=use_auth_token,
2023-08-20 16:12:46   File "/h2ogpt_conda/lib/python3.10/site-packages/transformers/models/auto/configuration_auto.py", line 944, in from_pretrained
2023-08-20 16:12:46     config_dict, unused_kwargs = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs)
2023-08-20 16:12:46   File "/h2ogpt_conda/lib/python3.10/site-packages/transformers/configuration_utils.py", line 574, in get_config_dict
2023-08-20 16:12:46     config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
2023-08-20 16:12:46   File "/h2ogpt_conda/lib/python3.10/site-packages/transformers/configuration_utils.py", line 662, in _get_config_dict
2023-08-20 16:12:46     raise EnvironmentError(
2023-08-20 16:12:46 OSError: It looks like the config file at '/models/llama-2-7b-chat.ggmlv3.q2_K.bin' is not a valid JSON file.

Running locally, using the same model.bin as privateGPT, and changing that flag you set made it work fantastic! Response was near instant using my 100 wiki txt files.
What I used to run:
 python generate.py --base_model='llama' --prompt_type=llama2 --score_model=None --langchain_mode='UserData' --model_path_llama="C:\Users\abc\Desktop\h2ogpt-main\llama-2-7b-chat.ggmlv3.q2_K.bin" --user_path="./testsources/"

Output:

Ya, see https://github.com/h2oai/h2ogpt/blob/main/docs/FAQ.md#adding-models on more notes w.r.t. the 3 model types.  You used it correctly in the generate.py line.
GPTQ model is 4-bit and is less smart in general and less capable of handling long input.  It's mentioned as just an example, but I can provide a simpler setup first before mentioning one can do GPTQ
If it's a HF model, the -v for the .cache should work to look at the ~/.cache outside docker.  For GGML/GPT4All files, one would need to provide a path to that directory and in h2ogpt point to the path inside docker


Implement as_ref argument modifier

It is often not enough to have '#[into]' only for arguments.
A use case:
#[derive(Clone, Debug)]
pub struct Ident {
    inner: syn::Ident,
    string: String,
}

impl<T> PartialEq<T> for Ident
where
    T: AsRef<str> + ?Sized,
{
    delegate! {
        to self.string {
            fn eq(&self, #[as_ref] other: &T) -> bool;
            //fn eq(&self, #[into] other: &T) -> bool; - doesn't compile
        }
    }
}

Looks good, thank you! Please also add a test (in tests/argument_modifier.rs) and I'll merge it.

Thanks!


Docs update: Adding Reown as one of the Tooling deployed on Scroll

Closing issues
closes #400
...
Description
This PR adds another developer tooling deployed on Scroll, that is, Reown (prev. known as WalletConnect).
...
Changes
Adds another .mdx file within /tools/en folder. The markdown file also contains information about Reown and its two major SDKs for user onboarding and wallets.

Hey @emilyJLin95, I am unable to see the image that you uploaded along with your comment. I think there was an issue when you tried uploading the image.
I think I see what you mean. I'll fix it now

I just fixed it. The issue comes from how your codebase's frontend handles these .mdx files. Upon a closer look, it occurs if the name or the title is a bit long. Please take a look at the screenshot that I have attached where "Ethereum Attestation Service" has the same issue.

@rohit-710 good catch! I'll make an issue for the team otherwise LGTM


Add script to detect flake8 error in diffs

This adds a script to run flake8 on diffs and only report problems on lines changed.
This is driven by the large-scale refactoring PRs for the new type system and we need to prevent adding new style errors. I only found out about https://github.com/numba/numba/pull/9703 after making the script, but this will help move towards to goal of eliminating PEP8 errors incrementally.
Other tools I discovered,

flake8 used to do it by flake8 --diff but it's been deprecated.
https://github.com/dealertrack/flake8-diff is an old project that does the same thing and for more VCS.

Auto-formatters do not fix anti-patterns that flake8 can find. For example Redefinition of unused name from line n (F811). So consideration for them should be orthogonal.

Yes, not everything (but some things! such as line lengths, so not completely orthogonal...)


ipv4 vs ipv6: prioritise faster connection

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm requesting a feature unrelated to a specific site
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2023.03.04 (update instructions) or later (specify commit)
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Provide a description that is worded well enough to be understood
I've tried to download some files from ardmediathek.de and noticed it was extremely slow. after some testing I noticed that the server answered my IPv6 calls much slower than IPv4. (so adding "-4" fixed my immediate issue)
I'd like a feature where yt-dlp tests both IPv4 and IPv6 and uses the faster connection.
(I've added the first lines from the IPv6 connection, the lines where it started to download took 20-30s per line.)
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
yt-dlp -vU  https://www.ardmediathek.de/sendung/ein-fall-fuer-die-erdmaennchen/Y3JpZDovL25kci5kZS80NDQ4/
[debug] Command-line config: ['-vU', 'https://www.ardmediathek.de/sendung/ein-fall-fuer-die-erdmaennchen/Y3JpZDovL25kci5kZS80NDQ4/']
[debug] System config "/etc/yt-dlp.conf": ['-f', 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[392389b7d] (pip)
[debug] Python 3.11.3 (CPython x86_64 64bit) - macOS-13.3.1-x86_64-i386-64bit (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 6.0 (setts), ffprobe 6.0
[debug] Optional libraries: Cryptodome-3.17, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1786 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version<EMAIL_ADDRESS>Current version<EMAIL_ADDRESS>yt-dlp is up to date<EMAIL_ADDRESS>[debug] Using fake IP <IP_ADDRESS> (DE) as X-Forwarded-For
[ARDBetaMediathek] Extracting URL: https://www.ardmediathek.de/sendung/ein-fall-fuer-die-erdmaennchen/Y3JpZDovL25kci5kZS80NDQ4/
[ARDBetaMediathek] [Playlist] ein-fall-fuer-die-erdmaennchen: Downloading JSON metadata
[ARDBetaMediathek] [Playlist] ein-fall-fuer-die-erdmaennchen: Downloading JSON metadata
[download] Downloading playlist: ein-fall-fuer-die-erdmaennchen
[ARDBetaMediathek] Playlist ein-fall-fuer-die-erdmaennchen: Downloading 96 items of 96
[download] Downloading item 1 of 96
[ARDBetaMediathek] Extracting URL: https://www.ardmediathek.de/ard/video/ein-fall-fuer-die-erdmaennchen/62-der-vulkanausbruch/Y3JpZDovL25kci5kZS82MjJlM2IzYy05NGY5LTQ1NjAtYTgwZC0yMTdjYmQwMGRiOTc
[ARDBetaMediathek] ein-fall-fuer-die-erdmaennchen/62-der-vulkanausbruch: Downloading JSON metadata
[ARDBetaMediathek] 12121965: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[info] 12121965: Downloading 1 format(s): hls-2378
[debug] Invoking hlsnative downloader on "https://adaptive.ndr.de/i/ndr/2022/1117/TV-20221117-1154-4500.,hq,hd,ln,mn,ao,.mp4.csmil/index-f2-v1-a1.m3u8"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 125
[download] Destination: 62. Der Vulkanausbruch [12121965].mp4
[download]   0.8% of ~  72.48MiB at   30.43KiB/s ETA 40:19 (frag 1/125)AtYTgwZC0yMTdjYmQwMGRiOTc
[ARDBetaMediathek] ein-fall-fuer-die-erdmaennchen/62-der-vulkanausbruch: Downloading JSON metadata
[ARDBetaMediathek] 12121965: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[info] 12121965: Downloading 1 format(s): hls-2378
[debug] Invoking hlsnative downloader on "https://adaptive.ndr.de/i/ndr/2022/1117/TV-20221117-1154-4500.,hq,hd,ln,mn,ao,.mp4.csmil/index-f2-v1-a1.m3u8"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 125
[download]   1.6% of ~ 171.98MiB at  190.88KiB/s ETA 31:56 (frag 2/125)

yt-dlp isn't a all-in-one solution....
Isn't it enough to add the -4 option to your config?

There is unlikely to be a difference that big between IP versions so don't think that is the issue.
What happens if you use --force-ipv6? If it doesn't work at all then your IPv6 configuration is broken (could be your ISP). yt-dlp tries IPv6 first by default and fallsback to IPv4 if that fails hence the long delay.

it tells me 'Network is unreachable' but sites like https://test-ipv6.com say, my IPv6 works.
Anyway, looks like my issue.

it tells me 'Network is unreachable'

can you reproduce that on other sites with --force-ipv6

yt-dlp tries IPv6 first by default and fallsback to IPv4 if that fails after ~20s hence the long delay.

Perhaps yt-dlp could issue a warning in that case (and suggest adding -4 to your config)
Also, why 20 seconds? Google Chrome only waits 0.3 seconds (according to https://test-ipv6.com/faq_avoids_ipv6.html, although it's slightly wrong, since it's reference says 300ms, instead of 333ms)

I think my IPv6 is just broken now and I didn't noticed it because other systems have a faster fall-back to IPv4
traceroute6 google.com
traceroute6 to google.com (2a00:1450:4001:808::200e) from 2a01:aea0:dd4:5a3c:fdb7:1319:ca4:7e05, 64 hops max, 12 byte packets
 1  fritz.box  1.411 ms  0.658 ms  0.606 ms
 2  2a01:aea0:df4:1::87f4  4004.617 ms !A  1003.483 ms !A  4003.301 ms !A

vs
traceroute google.com
traceroute to google.com (<IP_ADDRESS>), 64 hops max, 52 byte packets
 1  fritz.box (<IP_ADDRESS>)  1.009 ms  1.014 ms  0.563 ms
 2  static-144-208-194-1.dsl.telematica.at (<IP_ADDRESS>)  7.222 ms  6.815 ms  6.527 ms
 3  lt0-3-0-1.mpr01.anx04.vie.at.anexia-it.net (<IP_ADDRESS>)  6.151 ms  27.724 ms  6.494 ms
 4  ae5-0.bbr02.anx04.vie.at.anexia-it.net (<IP_ADDRESS>)  19.983 ms
    ae6-0.bbr01.anx04.vie.at.anexia-it.net (<IP_ADDRESS>)  18.475 ms  18.175 ms
 5  ae2-0.bbr01.anx82.fra.de.anexia-it.net (<IP_ADDRESS>)  18.629 ms  18.002 ms  19.826 ms
 6  ae1-0.bbr02.anx84.nue.de.anexia-it.net (<IP_ADDRESS>)  18.773 ms
    ae1-0.bbr01.anx25.fra.de.anexia-it.net (<IP_ADDRESS>)  18.349 ms  18.503 ms
 7  r01-at-klu.lucesem.at (<IP_ADDRESS>)  19.739 ms  20.288 ms  20.365 ms
 8  ae2-0.bbr02.anx25.fra.de.anexia-it.net (<IP_ADDRESS>)  19.793 ms  21.361 ms  24.937 ms
 9  <IP_ADDRESS> (<IP_ADDRESS>)  19.207 ms
    <IP_ADDRESS> (<IP_ADDRESS>)  18.411 ms
    <IP_ADDRESS> (<IP_ADDRESS>)  20.251 ms
10  * <IP_ADDRESS> (<IP_ADDRESS>)  28.017 ms *
11  <IP_ADDRESS> (<IP_ADDRESS>)  20.637 ms
    zrh04s06-in-f142.1e100.net (<IP_ADDRESS>)  18.592 ms  18.292 ms

yt-dlp tries IPv6 first by default and fallsback to IPv4 if that fails after ~20s hence the long delay.

Perhaps yt-dlp could issue a warning in that case (and suggest adding -4 to your config)
Also, why 20 seconds? Google Chrome only waits 0.3 seconds (according to https://test-ipv6.com/faq_avoids_ipv6.html, although it's slightly wrong, since it's reference says 300ms, instead of 333ms)

yt-dlp tries IPv6 first by default and fallsback to IPv4 if that fails after ~20s hence the long delay.

Perhaps yt-dlp could issue a warning in that case (and suggest adding -4 to your config)

It is done under the hood so I don't think we can.

nvm we can for urllib since we re-implement the source address connection functionality

Are you talking about adding a warning or reducing the delay?


collateral inputs

Proposed changes of "for-fees" inputs to collateral inputs, which do not get spent if all scripts succeed

@polinavino BTW, I'm making the corresponding changes in the code, and I propose just using "collateral" rather than "collateral inputs" to emphasise the fact that these don't get considered as part of the "actual" inputs.

What should I rename? Remove all use of the phrase "collateral inputs"? Or just the name of the protocol parameter? Should it be in this PR?


deye_4mptt.yaml PV1,PV3 and PV4 current not usable in statistics

While the entities for PV1,PV2,PV3,PV4(current) are displayed in the default view(with proper values)
only PV2 current can be used in statistic-graph(the other three can't be found).
A quick look into deye_4mptt.yaml showed that PV1,PV3 and PV4 CURRENT are missing the state_class: "measurement"
Adding this line properly and restarting HA did not help(well it did but it took some time :) ).
The before missing identities can NOW be selected for use in statistic-graph cards.
Hint: Be aware that it will take some time until the values finally show up in the statistical-graph card.

Should be fixed with: https://github.com/StephanJoubert/home_assistant_solarman/pull/304

Still have this issue on PV1 with the deye_string.yaml


idea: moving pieces with tap+tap instead of take+drag

Overall the bot is done very well and looks amazing

I think about it, but do't have enough time to do it. Feel free to make PR =)


Execution question

Is there a way to execute the template with provided yaml such that the template can parse golang ".Values" from the input values yaml?
{{- if .Values.config.local -}}
{{- range $key, $val := .Values.config.local -}}
and the input is just the yaml like:
config:
local:
etc:

you may be already aware that this above templating syntax that referencing .Values is how helm templating works.

No. This project is an implementation of golang's standard text/template in Java, the Helm features are not in consideration. There should be another project to do these things, I don't have any planning for such a project.

Thanks.  Do you know if there are any java libraries that can emulate helm templating implementation?

I haven't found one yet.


Update subql version

The subql version we are leveraging is still old, this should be updated with a newer one

Updated to indexer v3.1.0 and query v2.6.0
https://github.com/centrifuge/pools-subql/pull/70

Fixed demo deployment by pipeline:

Fixed demo deployment by pipeline:

Fixed demo deployment by pipeline:

Fixed demo deployment by pipeline:


Not Able to play the recorded video after stopping the record

I am working on an angular4+ project where I have to  record video and play the recorded video at first I got window.URL.createObjectUrl deprecation error I fixed this by using
"video.srcObject = stream" in place of
" video.src = window.URL.createObjectURL(stream);"
But now when I am stopping the recording I am getting  error when executing the below function - "recordRTC.getDataURL(function (dataURL) { });"
"RecordRTC.js:265 Uncaught TypeError: Cannot set property 'onmessage' of undefined
at Object.getDataURL (RecordRTC.js:265)
at VideoComponent.webpackJsonp.../../../../../src/app/video/video.component.ts.VideoComponent.processVideo (video.component.ts:72)
at MediaStreamRecorder._callback [as recordingCallback] (RecordRTC.js:177)
at MediaRecorder.mediaRecorder.ondataavailable (RecordRTC.js:2161)"
If I am trying the same thing in angular2 project it is working fine but getting above error with angular4+ projects
Someone please suggest how I can fix this issue so that I can play the recorded video

did you find a solution @harendrakarsh ?


[DO NOT REVIEW] test

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

Project coverage is 81.30%. Comparing base (2da86d0) to head (49c4531).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #427   +/-   ##
=======================================
  Coverage   81.30%   81.30%
=======================================
  Files          48       48
  Lines        3681     3681
=======================================
  Hits         2993     2993
  Misses        606      606
  Partials       82       82

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


KeyError when using metric="precomputed"

I am trying to use a precomputed square distance matrix when using the reducer and I am running into a strange KeyError: 'precomputed'
When I do the following:
reducer = umap.UMAP(n_neighbors=15, local_connectivity=1, n_components=2, metric="precomputed", random_state=0)
distance_matrix = np.random.rand(SIZE, SIZE)
output = reducer.fit_transform(distance_matrix)

Everything works fine.
But when I use Pytorch to create the matrix like so:
reducer = umap.UMAP(n_neighbors=15, local_connectivity=1, n_components=2, metric="precomputed", random_state=0)
distance_matrix = torch.randn(SIZE, SIZE).numpy()
output = reducer.fit_transform(distance_matrix)

I get a KeyError: 'precomputed'
What could be the potential cause of this? The memory layout of Pytorch tensors is exactly the same as that of numpy, and they are convertible to each other using the same allocated memory.

np.rand samples from $\mathcal{U}(0,1)$ by default (all positive), while torch.randn samples from $\mathcal{N} (0, 1)$ by default, which will give you negative numbers. This kind of error gets thrown if there's negative values in the distance matrix.
See: https://github.com/lmcinnes/umap/issues/854#issuecomment-1959507992


fix: Vale issues and workflow

Remove workflow step that installs vale with snap since already doing so with brew
Fix vale issues
Add vale entries to accept file

Resolves: DCMAW-10478

I'm also struggling with jacoco in buildLogic/plugins/src/main/kotlin/uk/gov/pipelines/sonarqube-module-config.gradle.kts
Are we able to fix this too? 🙂
https://github.com/govuk-one-login/mobile-android-ui/actions/runs/11725410142/job/32661630421?pr=92

Have tested and seen that splitting the string doesn't change the properties sent to sonar


Android crash : Fatal Exception: java.lang.IllegalStateException Reply already submitted

Describe the bug
Thanks for the package !
I have multiple crashes from my live app affecting my Android users.
Here is the StackTrace :
Fatal Exception: java.lang.IllegalStateException: Reply already submitted
       at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:431)
       at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:277)
       at com.simform.audio_waveforms.WaveformExtractor$startDecode$1$1.onError(WaveformExtractor.kt:109)
       at android.media.MediaCodec$EventHandler.handleCallback(MediaCodec.java:1950)
       at android.media.MediaCodec$EventHandler.handleMessage(MediaCodec.java:1841)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:230)
       at android.os.Looper.loop(Looper.java:319)
       at android.app.ActivityThread.main(ActivityThread.java:8893)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

To Reproduce
Unfortunately it never happened during the debug neither of the internal testing of the app so i have no clue on how to reproduce it...
Expected behavior
I would like the app to not crash.
Smartphone (please complete the following information):

Devices: Galaxy A13, Galaxy A12, Galaxy M12, Realme C21-Y, Galaxy A71, Realme C15
OS: 14, 11, 13, 11, 13, 11

Screenshots
Additional context

Hi @Tom3652, Thanks for filling the issue.
Can you please send me reproducible steps or audio files? Also, please share your flutter—v console output.

Hey @jay-simformsolutions
Thanks for the quick reply, however as i said it happens on my live app and on Android devices, i have no ways to reproduce it unfortunately 😐
I was hoping you would know what is the "reply already submitted" error...

I am adding the Redmi Note 12 5G under Android 12 as a new phone crashing today.

@Tom3652, We will investigate this issue and try to solve it as soon as possible.

Hello @Tom3652, I just want to know if you are using the stopAllPlayer method in your app to stop all active players together.

Hello both of you, thank you very much for your interest and answers.
I am actually not using stopAllPlayers, please see all the different methods i am calling together :
  final PlayerController controller = PlayerController();

  try {
      await controller.preparePlayer(path: audioFile);
      controller.setFinishMode(finishMode: FinishMode.stop);
      await controller.startPlayer();
    } catch (e) {
     print("error playing audio file : $e");
    }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

In Another class :
  final PlayerController controller = PlayerController();
  StreamSubscription<PlayerState>? playerStateSubscription;
  AnimationController? playAnimator;

   double waveWidth = 0;
   String filePath = "value";

  Future<void> init() async {
    waveWidth = widget.width - 60;

    if (mounted) {

        playAnimator = AnimationController(
        vsync: this, duration: const Duration(milliseconds: 250));

      print("File path : $filePath");
      await controller.preparePlayer(
          path: filePath,
          shouldExtractWaveform: true,
          noOfSamples: _playerWaveStyle.getSamplesForWidth(waveWidth));

      playerStateSubscription = controller.onPlayerStateChanged.listen((state) {
        if (mounted) {
          stateNotifier.value = state;
          if (state == PlayerState.paused && mounted) {
            playAnimator?.reverse();
          }
        }
      });

      durationListener = controller.onCurrentDurationChanged.listen((millis) {
        positionNotifier.value =
            getAudioDuration(Duration(milliseconds: millis));
      });

      int waiting = Platform.isAndroid ? 1000 : 0;
      // On Android
      Future.delayed(Duration(milliseconds: waiting)).then((value) async {
        int millis = await controller.getDuration(DurationType.max);

        positionNotifier.value =
            getAudioDuration(Duration(milliseconds: millis));
        print(
            "Duration for file $filePath : ${positionNotifier.value}");
      });

      stopListener = AudioPlayerManager.instance.onStopPlayerListener.stream
          .listen((audioFile) async {
        if (controller.playerState.isPaused && mounted) {
          playAnimator?.reverse();
        }
        if (audioFile != filePath &&
            (controller.playerState.isPlaying ||
                controller.playerState.isPaused) &&
            mounted) {
          await controller.pausePlayer();
        }
      });
      if (mounted) {
        setState(() {});
      }
    }
  }

  @override
  void initState() {
    init();
    super.initState();
  }

  @override
  void dispose() {
    controller.dispose();
    playerStateSubscription?.cancel();
    durationListener?.cancel();
    stopListener?.cancel();
    playAnimator?.dispose();
    super.dispose();
  }

 Future<void> onTap() async {
    if (filePath.isNotEmpty) {
      HapticFeedback.mediumImpact();
      controller.playerState.isPlaying ? pause() : play();
    }
  }

  Future<void> pause() async {
    await controller.pausePlayer();
    playAnimator!.reverse();
  }

  Future<void> play() async {
    AudioPlayerManager.instance.onStopPlayerListener.add(filePath);
    controller.setFinishMode(finishMode: FinishMode.pause);
    await controller.startPlayer();
    playAnimator!.forward();
  }

Now i wonder if the error is to not await the controller.setFinishMode(finishMode: FinishMode.pause); call before startPlayer and / or the order of disposing objects ?
Thanks a lot for your help

Hi both of you, i have got a new crash today that is on the preparePlayer. This is a variant of this bug probably :
Fatal Exception: java.lang.IllegalStateException: Reply already submitted
       at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:431)
       at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.error(MethodChannel.java:277)
       at com.simform.audio_waveforms.AudioPlayer$preparePlayer$2.onPlayerError(AudioPlayer.kt:48)
       at com.google.android.exoplayer2.ExoPlayerImpl.lambda$updatePlaybackInfo$16(ExoPlayerImpl.java:1878)
       at com.google.android.exoplayer2.util.ListenerSet$ListenerHolder.invoke(ListenerSet.java:281)
       at com.google.android.exoplayer2.util.ListenerSet.lambda$queueEvent$0(ListenerSet.java:190)
       at com.google.android.exoplayer2.util.ListenerSet.flushEvents(ListenerSet.java:211)
       at com.google.android.exoplayer2.ExoPlayerImpl.updatePlaybackInfo(ExoPlayerImpl.java:1947)
       at com.google.android.exoplayer2.ExoPlayerImpl.handlePlaybackInfo(ExoPlayerImpl.java:1774)
       at com.google.android.exoplayer2.ExoPlayerImpl.lambda$new$1(ExoPlayerImpl.java:306)
       at android.os.Handler.handleCallback(Handler.java:958)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:230)
       at android.os.Looper.loop(Looper.java:319)
       at android.app.ActivityThread.main(ActivityThread.java:8919)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

@Tom3652, Thanks for providing the information. We are working on this issue and will update you once we find a solution.

Hi @jay-simformsolutions thank you very much i really apreciate it.

I simply add the proportion here :

24 crashes for com.simform.audio_waveforms.WaveformExtractor$startDecode$1$1.onError(WaveformExtractor.kt:109)
8 crashes for com.simform.audio_waveforms.AudioPlayer$preparePlayer$2.onPlayerError(AudioPlayer.kt:48)

And so far no other methods are revealing this issue 🙏
Note : i don't add the new impacted phones since it's probably not device-specific, but if i will provide all the info i can give if you need it of course


Add support for setup.cfg-only projects

Many projects can get away with an empty setup.py and use only the declarative setup.cfg. With the new PEP 517 backend, we can supply a default empty setup.py if one is not provided.
Pull Request Checklist

[x] Changes have tests
[x] News fragment added in changelog.d. See documentation for details

How can setuptools-scm integrate with this?

@RonnyPfannschmidt I think there's an open issue about that. This PR is just to allow people who already can have an empty setup invocation to dispense with the setup.py file.
I am very interested in other PRs that will increase the number of people who can use this, though.

@pganssle basically if this goes in and setuptools_scm can be supported, i'll be able to drop setup.py in pytest

unfortunately i cant work on it myself in forseeable future

I like the idea, but one warning is that with that plan is that it makes pip >= 19 a hard dependency for building pytest from an sdist. The fact that pytest ships a universal wheel means that will probably be OK, but I think you'll be fielding bug reports over that for a while.
For major libraries and applications like pytest, I recommend keeping at least a token setup.py in your repo for a while - at least until pip's PEP 517 support stabilizes a bit more.

@pganssle that's very true, however the earlier the  toolchain can support this the earlier the mid/end 2020 pytest which has dropped python2 can adopt more modern packaging (for me the time with the first fully supported feature set in setuptools, marks a key date for the transition scheduling of pytest

Sounds to me like we're all in agreement that this is a good thing, and if anything it doesn't go far enough. I'm going to merge this.
I will create a new issue for "write documentation for build_meta, which is where this should be documented.

Wheeee! This is great!

I was about to use it and it didn't work so then I checked dates and realized that it's been merged just 3 days after the last release...
@pganssle are you planning a release anytime soon?

@webknjaz Yeah, I've been bitten by this myself as well. I think I was just delaying a release until after HackIllinois because I expected we might do a lot then. I see no problem with cutting a new release soon.

:+1: new release would be nice :)

Congratulations!
One question: setup.py is still required for --editable installs, correct?

@Juanlu001 The only requirement is that whatever front-end you are using needs to invoke our PEP 517 build backend, setuptools.build_meta, so I think it's just that pip doesn't have PEP 517 support for editable installs.
It looks like @cjerdonek has a related PR in pypa/pip#6370, but from a casual glance it doesn't seem to be adding actual PEP 517 support for editable installs. Looks like PEP 517 itself doesn't cover editable installs. Might be a good topic to bring up on the discourse.

so I think it's just that pip doesn't have PEP 517 support for editable installs.

Looks like PEP 517 itself doesn't cover editable installs.

Right, there's not actually such a thing as a PEP 517 editable install. From the PEP:

Note: Editable installs - This PEP originally specified another hook, install_editable, to do an editable install (as with pip install -e). It was removed due to the complexity of the topic, but may be specified in a later PEP.

Thus, pip shouldn't ever be invoking the PEP 517 process when editable mode was requested. (There are a couple bugs in pip around this, currently. The PR @pganssle linked above resolves the last of them, I believe.)


further refine table display

Description
the cli display is still quite difficult to grok when viewing large tables.
it seems like just a huge wall of text that is quite hard to decipher.

for comparison, the same table displayed via polars cli on the same terminal is much more compact & easy to grok.

while the polars one doesn't automatically use the entire width, i still feel like the compact table is much easier to read than the full width one.

I think the main thing for me is wrapping of some of the values. It can be tricky to see what's wrapped vs what's a separate row.

💯  I think we should generally truncate instead of wrap.

@scsmithr did #1738 fix this?

Yep.
We can follow up with more specific issues as needed.
Something that might make it even better is default to a min-width of 10 (or so) characters for strings. Right now they can get pretty squished depending on the column name.


fix: Fix missing createSpringEasing export

we can 100% export it. Just of curiosity, can you share with us why do you need it?

This is not documented properly yet but there is a config you can pass to the spring function

Closing for now but happy to reopen it if we are not supporting your current use case.

haha thks I missed that completely 😅 Consolidating in #269


Should I set CARGO_INCREMENTAL=0?

I assume that building a Docker image does not profit from incremental compilation, is that correct?
If yes, should I run RUN CARGO_INCREMENTAL=0 cargo build in the Dockerfile?
However the examples don't use that, is there a reason for that?

That sounds correct.

We should update the README to include it as an optimization!

Sorry, I didn't fully understand this. Isn't it good to get a cache hit? Do I get the cache hit with or without disabling incremental builds?
Is CARGO_INCREMENTAL=0 the optimization or CARGO_INCREMENTAL=1 (the default).

CARGO_INCREMENTAL has no influence on you getting a cache hit or a cache miss.
What it does, though, is generate extra artifacts that make you caching layers bigger (therefore slower to upload/download). By setting it to 0, your builds should get faster (in all cases, both hits and misses).

Thank you for the clarification, now I understand it completely!


fix: fix sellNg and fundNg

✅ Checklist

[ ] npx changeset was attached.
[ ] Covered by automatic tests.
[ ] Impact of the changes:

...

📝 Description
Replace this text by a clear and concise description of what this pull request is about and why it is needed. Be sure to explain the problem you're addressing and the solution you're proposing.
For libraries, you can add a code sample of how to use it.
For bugfixes, you can explain the previous behavior and how it was fixed.
In case of visual features, please attach screenshots or video recordings to demonstrate the changes.
SellNG and FundNg.

❓ Context

JIRA or GitHub link:  https://ledgerhq.atlassian.net/browse/LIVE-14381

🧐 Checklist for the PR Reviewers

The code aligns with the requirements described in the linked JIRA or GitHub issue.
The PR description clearly documents the changes made and explains any technical trade-offs or design decisions.
There are no undocumented trade-offs, technical debt, or maintainability issues.
The PR has been tested thoroughly, and any potential edge cases have been considered and handled.
Any new dependencies have been justified and documented.
Performance considerations have been taken into account. (changes have been profiled or benchmarked if necessary)

/generate-screenshots


✨ feat: add scrape method for declarative scraping

The scrape method allows declarative scraping.
Declarative scraping is good at it could allow us to build interfaces for people to more easily build a konnector.
import { scrape } from 'cozy-konnector-libs'

const $ = cheerio.load(html)
scrape($, {
  title: '.title',
  content: '.content',
  link: {
    sel: 'a',
    attr: 'href',
    index: 0
  }
})
// -> {
//   title: 'Adam Ondra',
//   content: 'Adam Ondra is the first climber to ever climb 9C.',
//   link: 'https://fr.wikipedia.org/wiki/Adam_Ondra'
// }
"

It is heavily inspired (almost copied the API) by artoo.
It also allows to scrape several items in one go via its third parameter.
scrape($, { title: '.title'}, '.articles')
// -> [{ title: 'a' }, { title: 'b'}, { title: 'c'}]

Check the tests ;)

Awesome! I did not know artoo!
I made a branch in cozy-konnector-template using scrape and I got a problem : the connector does not finish and takes all the processor using yarn standalone. This is a problem I already had.
If I replace :
    return ($.find || $)(childSelector).map((i, e) => scrape($(e), specs));

with :
    return Array.from(($.find || $)(childSelector)).map(e => scrape($(e), specs));

The problem disappears and I have no clear idea why.
Another thing, in the template, when I do :
      filename: {
        sel: 'h3 a',
        fn: $el => `${$el.attr('title')}.jpg`
      }

I would prefer to do :
      filename: {
        sel: 'h3 a',
        attr: 'title',
        fn: title => `${title}.jpg`
      }

What do you think?

Array.from fixed, thanks !

For your second question, you can already do :
      filename: {
        sel: 'h3 a',
        attr: 'title',
        parse: title => `${title}.jpg`
      }

In other words, fn is to do custom stuff with the node, parse is to do custom stuff with the value extracted.


position relative on div

This impacts third party tools and utilities.
Apply position relative only on the following:
header,
nav,
aside,
main,
article,
section,
footer

fixed in v1.3.1


Clean styles by Rubocop

Clean styles by Rubocop.
All tests were passed.

@james2m TravisCI is failed in Ruby 2.3 due to this error.
$ bundle install --jobs=3 --retry=3
The dependency activerecord-jdbcsqlite3-adapter (~> 1.3.25) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for java. To add those platforms to the bundle, run `bundle lock --add-platform java`.
Fetching gem metadata from http://rubygems.org/..........
Fetching gem metadata from http://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
  In rake10.gemfile:
    bundler (~> 1.11)
  Current Bundler version:
    bundler (2.0.1)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?
Could not find gem 'bundler (~> 1.11)' in any of the relevant sources:
  the local ruby installation
The command "eval bundle install --jobs=3 --retry=3 " failed. Retrying, 2 of 3.


[SPARK-37171][SQL]Add forany and forall to Datasets/Dataframes

What changes were proposed in this pull request?
Add forany and forall api for Dataframe/Datasets API
Why are the changes needed?
To provide a higher level of abstraction for Spark customers
Does this PR introduce any user-facing change?
Yes, forany and forall methods are added to the Dataframe/Dataset API
How was this patch tested?
Added new unit tests

Can one of the admins verify this patch?

Why add these?

I have mentioned in the ticket the potential for implementing the unoptimized version and provide a little higher abstraction.


Add support for controller certificate in appgate-operator-conf configmap

Right now we don't verify the server certificate which is obviously not OK for v1.

I will add a flag to enable/disable this feature.

https://github.com/appgate/sdp-operator/pull/75 This allows to ignore SSL verification when using self signed certificates

https://github.com/appgate/sdp-operator/pull/77 This issue is fixed here. Only used for the connections to the appgate collective.


fix: cjs -> esm, min node version 16

BREAKING CHANGE: cjs -> esm, min node version 16

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


approved_at_utc and approved_by null no matter what

On a submission, the approved_at_utc and approved_by properties are always null, even when they have actually been approved by a moderator. Checking the reddit API itself confirms that approved_at_utc and approved_by actually have values there, but are still null when checked with Snoowrap.
Am I doing something wrong?

It should, let me have a look.

Yeah that was the problem, sorry about that.
Closing the issue.


[WIP] Declarative configuration

Close #36

Codecov Report

Merging #43 (72ade26) into master (c3eea33) will increase coverage by 3.41%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #43      +/-   ##
==========================================
+ Coverage   71.00%   74.42%   +3.41%
==========================================
  Files          41       41
  Lines         714      696      -18
==========================================
+ Hits          507      518      +11
+ Misses        207      178      -29

Impacted Files
Coverage Δ

hitbox-actix/src/actor.rs
80.00% <0.00%> (-10.00%)
:arrow_down:

hitbox/src/value.rs
60.00% <0.00%> (-3.34%)
:arrow_down:

hitbox-actix/src/messages.rs
88.88% <0.00%> (-2.03%)
:arrow_down:

hitbox/src/states/upstream_polled/successful.rs
40.74% <0.00%> (-0.93%)
:arrow_down:

hitbox-derive/src/macro_attributes.rs
0.00% <0.00%> (ø)

hitbox/src/states/cache_polled/error.rs
0.00% <0.00%> (ø)

hitbox/src/states/cache_polled/actual.rs
100.00% <0.00%> (ø)

hitbox/src/states/cache_policy/non_cacheable.rs
100.00% <0.00%> (ø)

hitbox/src/states/cache_policy/cacheable.rs
90.90% <0.00%> (+0.90%)
:arrow_up:

hitbox/src/states/initial/base.rs
75.55% <0.00%> (+1.13%)
:arrow_up:

... and 9 more

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 c3eea33...72ade26. Read the comment docs.

Moved to hitboxd repository.


OCM-11001 | ci: Automate id:71319,73814

https://issues.redhat.com/browse/OCM-11001
https://issues.redhat.com/browse/OCM-11002

Logs

78314
71319

/hold

/lgtm

/lgtm

/hold cancel

/retest

/hold

/lgtm

sts test is blocked by https://github.com/openshift/rosa/pull/2484

/retest

/hold cancel


MessageEvent payload doesn't contain user info

Hi Team,
I am not receiving user info such as email, enterprise id ..etc in MessageEvent subscription payload,
Could you please help address this issue.

Hello @BaradPuja, the payload contain the message poster's user ID and enterprise ID as below.

user id: https://github.com/slackapi/java-slack-sdk/blob/v1.5.3/slack-api-model/src/main/java/com/slack/api/model/event/MessageEvent.java#L31
enterprise id: https://github.com/slackapi/java-slack-sdk/blob/v1.5.3/slack-app-backend/src/main/java/com/slack/api/app_backend/events/payload/MessagePayload.java#L12-L13

For fetching more info (e.g., email address) about the user, you can use the users.info API.

Hello @BaradPuja, the payload contain the message poster's user ID and enterprise ID as below.

user id: https://github.com/slackapi/java-slack-sdk/blob/v1.5.3/slack-api-model/src/main/java/com/slack/api/model/event/MessageEvent.java#L31
enterprise id: https://github.com/slackapi/java-slack-sdk/blob/v1.5.3/slack-app-backend/src/main/java/com/slack/api/app_backend/events/payload/MessagePayload.java#L12-L13

For fetching more info (e.g., email address) about the user, you can use the users.info API.

Hi @seratch ,
The enterprise id I'm getting in message payload is not equal to my original enterprise id, is there any encoding we are using?
Also when I'm using user.info method below is the response I'm getting:-
Result: UsersInfoResponse(ok=false, warning=null, error=missing_scope, needed=users:read, provided=chat:write,incoming-webhook,commands,app_mentions:read,im:history, user=null)

Hi @seratch ,
The enterprise id I'm getting in message payload is not equal to my original enterprise id, is there any encoding we are using?
Also when I'm using user.info method below is the response I'm getting:-
Result: UsersInfoResponse(ok=false, warning=null, error=missing_scope, needed=users:read, provided=chat:write,incoming-webhook,commands,app_mentions:read,im:history, user=null)

@BaradPuja oops, I'm sorry - I was confused. You need to use authorizations[0].enterprise_id instead. https://github.com/slackapi/java-slack-sdk/blob/v1.5.3/slack-app-backend/src/main/java/com/slack/api/app_backend/events/payload/MessagePayload.java#L18
see also: https://github.com/slackapi/java-slack-sdk/issues/629

@BaradPuja oops, I'm sorry - I was confused. You need to use authorizations[0].enterprise_id instead. https://github.com/slackapi/java-slack-sdk/blob/v1.5.3/slack-app-backend/src/main/java/com/slack/api/app_backend/events/payload/MessagePayload.java#L18
see also: https://github.com/slackapi/java-slack-sdk/issues/629

@seratch , I'm still seeing the enterpriseId as "hexadecimal String" where as my actual enterpriseId is purely digit of size 10.

@seratch , I'm still seeing the enterpriseId as "hexadecimal String" where as my actual enterpriseId is purely digit of size 10.

@BaradPuja I am not sure what the situation is. Can you turn debug level logging on and see how difference the value in the actual JSON payload and the value you are getting in the Java world are?

@BaradPuja I am not sure what the situation is. Can you turn debug level logging on and see how difference the value in the actual JSON payload and the value you are getting in the Java world are?

Let me know if you need further help here. I will close this issue after waiting for your response for a few more days.


Jobs MythicMobs version check bug (newest MM version is too old?)

Hey! Using the lates MythicMobs dev build (4.1.0 b#2014) with Jobs gives this message on startup:
[Server thread/INFO]: [0;33;1m[Jobs] [0;33;22mMythicMobs was found - [0;31;1mBut your version is outdated, please update for full support.[m
Not sure if it messes with the gameplay, but it's a bug nonetheless.

Well they have jumped from 2.x to 4.x... And entire API have changed because of that. Will have to remake part of code and add backwards compatibility.


Add symlink target information to the default output format of Get-ChildItem / Get-Item

cmd.exe shows the target paths of symlinks by default when you use dir; e.g., assuming a directory with directory symlink tf.l, file symlink tl.txt, and (directory) junction tmp.j, dir will show:
 Directory of C:\Users\jdoe\foo

03/23/2018  04:50 PM    <SYMLINKD>     tf.l [tf]
03/23/2018  04:49 PM    <SYMLINK>      tl.txt [t.txt]
04/06/2017  02:07 PM    <JUNCTION>     tmp.j [\??\C:\tmp]

By contrast, PowerShell:

doesn't show the target pathin its default output
doesn't show the type of link only l in the Mode property indicates that it is a link in the abstract - though that may well be good enough

Given the importance of symlinks in the Unix world and their increasing importance on Windows, it would be convenient to include the symlink target paths:
Desired behavior
# Emulated with the following command
#    Get-ChildItem | Select-Object Mode, LastWriteTime, Length, Name, Target | Format-Table
# Should be implemented analogously for Get-Item.
PS> Get-ChildItem

Mode   LastWriteTime        Length Name   Target
----   -------------        ------ ----   ------
d----l 3/23/2018 4:50:06 PM        tf.l   {tf}
d----l 4/6/2017 2:07:17 PM         tmp.j  {C:\tmp}
-a---l 3/23/2018 4:49:21 PM 0      tl.txt {t.txt}

Environment data
Written as of:
PowerShell Core v6.0.2

I think this is deliberate on 5.1: On Windows, l represents that a filesystem item is a reparse point (superset of symbolic link).
It looks like 6.x does the same thing here for Windows reparse points and symbolic links on OS X/Linux.
Unequivocally querying Target may be expensive on Windows. Since symbolic links and junctions are reparse points, they must be opened with FILE_FLAG_OPEN_REPARSE_POINT and the reparse point read and parsed. For things like OneDrive or GVFS, this might fault the file and force a network request/download. even if the reparse point does not represent a symbolic link.

Yes.
As of PowerShell Core 7.2.0, calling Get-ChildItem in the presence of the reparse points in the OP now yields the following output, showing that the reparse-point / symlink target is displayed as part of the Name display column (As before, Mode only shows l as an abstract indicator, without identifying the specific type of reparse point, which should be sufficient, however):
    Directory: C:\Users\jdoe

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
l----          11/30/2021 10:30 AM                tf.j -> c:\tmp
l----          11/30/2021 10:29 AM                tf.l -> tf
la---          11/30/2021 10:29 AM              0 tl.txt -> t.txt