Failed to find a default file in the app artifacts folder ERROR

Below is the error I keep getting when I try to push a change to my static web app.
---End of Oryx build logs---
Oryx was unable to determine the build steps. Continuing assuming the assets in this folder are already built. If this is an unexpected behavior please contact support.
Finished building app with Oryx
Failed to find a default file in the app artifacts folder (/). Valid default files: index.html,Index.html.
If your application contains purely static content, please verify that the variable 'app_location' in your workflow file points to the root of your application.
If your application requires build steps, please validate that a default file exists in the build output directory.

Below is what the workflow file looks like, any idea how to change this to get the deployment to succeed?
name: Azure Static Web Apps CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, reopened, closed]
    branches:
      - main

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PURPLE_DESERT_04C615A10 }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/" # App source code path
          api_location: "" # Api source code path - optional
          output_location: "dist" # Built app content directory - optional
          ###### End of Repository/Build Configurations ######

  close_pull_request_job:
    if: github.event_name == 'pull_request' && github.event.action == 'closed'
    runs-on: ubuntu-latest
    name: Close Pull Request Job
    steps:
      - name: Close Pull Request
        id: closepullrequest
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PURPLE_DESERT_04C615A10 }}
          action: "close"

If the app location isn't at the root of your repo (/) you can change the app_location value to represent the true app location. Example sample app_locations are /, src, and Client but depends on the file structure of the repo.

@mmarzillo it looks like the app you're trying to deploy is this one https://github.com/mmarzillo/readmit-demo ?
we currently don't support mkdocs out of the box, logged a new issue 1124
however you can edit your github actions workflow like I did here and your build will run successfully example

thank you @simonaco. I used your example and updated the token and the app_location so that it looks like the below example. I'm still getting the "Failed to find a default file in the app artifacts folder..." error. I'm also including a screenshot of my directory to prove I'm not crazy.
name: Azure Static Web Apps CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, reopened, closed]
    branches:
      - main

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Setup Python
        uses: actions/setup-python@v1
        with:
          python-version: "3.7"
          architecture: "x64"
      - name: Install dependencies
        run: |
          python3 -m pip install --upgrade pip     # install pip
          python3 -m pip install mkdocs            # install mkdocs
          python3 -m pip install mkdocs-video   # install material theme
      - name: Build site
        run: mkdocs build
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PURPLE_DESERT_04C615A10 }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/docs" # App source code path
          api_location: "" # Api source code path - optional
          output_location: "" # Built app content directory - optional
          skip_app_build: true
          ###### End of Repository/Build Configurations ######

  close_pull_request_job:
    if: github.event_name == 'pull_request' && github.event.action == 'closed'
    runs-on: ubuntu-latest
    name: Close Pull Request Job
    steps:
      - name: Close Pull Request
        id: closepullrequest
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_PURPLE_DESERT_04C615A10  }}
          action: "close"

@mmarzillo in your case app_location needs to be "/site" because that's where mkdocs generates the static assets and those are the ones that need to be deployed to the cloud. it's briefly documented here build configuration

Thanks @simonaco I updated app_location: "/site", but now I'm getting the below error. I'm pulling the error about the api key and I'm pulling that right from the secrets section, any guidance here?
The content server has rejected the request with: BadRequest
Reason: No matching Static Web App was found or the api key was invalid.

@mmarzillo hm, that's odd. the token usually gets created automatically when the app is created in the portal. Can you still find the app in your subscription?

@simonaco errr there is no app in the portal, I'm just deploying to github pages.

Yaaaay, awesome to hear that all* is working for you now! hope once we support mkdocs out of the box it will be a much smoother experience. if all is clarified would you mind closing this issue when you get the chance?


openmp rtl does not destroy hsa queues, should do

Destroying the queues would fix an assert with a debug rocr for openmp offloading applications,
inc/scratch_cache.h:112: rocr::AMD::ScratchCache::~ScratchCache(): Assertion `map.empty() && "ScratchCache not empty at shutdown."' failed.

@JonChesterfield can you verify we still have this problem .

This should no longer be an issue, closing. If still exists, we can reopen.
deinit queues in plugin


Referencing the current self with self.

self is already allowed by the parser and parsed into an appropriate Self node in the AST.
Implementing this feature would simply involve adding a visit(node : Self) to the interpreter that just pushes the current value of self (available through the current_self method) onto the stack and then returns.
There are a number of good use cases for self that should be tested as part of this. Tests for these would be added under a new file, spec/interpreter/nodes/self_spec.cr.

self as the return value of a method should return the instance the method operates on:

deftype Foo
  def it
    self
  end
end

%Foo{}.it #=> this instance of Foo

self as the receiver of a method should act as if the self wasn't there (e.g., the method call acts as it would without the self receiver).

deftype Foo
  def foo; :hi; end
  def foo_proxy
    self.foo
  end
end

%Foo{}.foo_proxy #=> :hi

self as a parameter to a method should evaluate to the self at the call site, not the receiver of the method.

deftype Foo
  def put_self
    IO.puts(self)
  end

  def to_s
    "hello"
  end
end

%Foo{}.put_self #=> "hello"

Another thing to test is that calls like self.a = 2 get interpreted as Calls to the a= method on self. This is already handled and partly test by the implementation of #24, but it would be good to test it with self as well, just for the sake of completeness.

Also, self at the root scope should return the Kernel module (which is just the main module):
self #=> Kernel


random_seed does't work

I set random_seed like below code. but it does't work.
streaming mode, grpc,
this code is based on end_to_end_grpc_client.py
random_seed = random.randint(1,1000)
print(f"random_seed:{random_seed}")
random_seed_data = np.array([[random_seed]], dtype=np.uint64)
inputs = [
        prepare_tensor("text_input", input0_data, FLAGS.protocol),
        prepare_tensor("max_tokens", output0_len, FLAGS.protocol),
        prepare_tensor("stream", streaming_data, FLAGS.protocol),
        prepare_tensor("beam_width", beam_width_data, FLAGS.protocol),
        prepare_tensor("temperature", temperature_data, FLAGS.protocol),
        prepare_tensor("random_seed", random_seed_data, FLAGS.protocol),
    ]

@moseshu you need to you top_p and top_k also so that temperature and all generation parameter should work

@moseshu you need to you top_p and top_k also so that temperature and all generation parameter should work

you mean that if top_p,top_k and temperature are fixed?
for example:
top_p=0.85
top_k=40
temperature=0.7
random_seed=1

But the same input text get the fixed output.

When
top_p=0.85
top_k=40
temperature=0.7

Do you observer same output when you pass different random seed?

@moseshu you need to pass random seed different everyone to see change in output text. use any random int generator function for that

When
top_p=0.85
top_k=40
temperature=0.7

Do you observer same output when you pass different random seed?

thanks ,it's addressed


pykrige.test.TestRegressionKrige times out

Travis CI occasionally fails because pykrige.test.TestRegressionKrige takes more than 10min to run (maximum allowed time). This seems to happen randomly, on other occasions in completes within seconds: see e.g.  https://github.com/bsmurphy/PyKrige/pull/61  where one Travis CI job passed, the other failed.
I think the problem is that sometimes the test fails to download the test dataset with fetch_california_housing in https://github.com/bsmurphy/PyKrige/blob/master/pykrige/test.py#L1726 . In any case it might be a good idea to replace this with a built-in dataset that doesn't require to be downloaded.
cc @basaks

@rth I need a bit more time to check this out.
You are right in saying that may be we can keep a small copy of the data in this repo for these tests.


language tweak

Tweaked 1 release note.

This change is

This change is

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/be601fbdede27965a8bbe47b888c96bb012df73e/
Edited pages:

releases/v20.1.11.md

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/be601fbdede27965a8bbe47b888c96bb012df73e/
Edited pages:

releases/v20.1.11.md


Collect data on adoption of the design system

Related to #1936 and #2849.
Problem statement
It’s hard to count which services across government are using the GOV.UK Design System, which makes it hard to report on accurate numbers for our benefits model. This is hard because it relies on imperfect detection of our code inside services. It’s also hard to understand which components and patterns are being used by services because we don’t always have access to the full code for a service, so we can’t detect those components and patterns.
Goals
Understanding the breadth and depth of adoption of the design system will help us:

report more accurate benefits
identify and measure stickiness
identify which users are highly engaged (and vice versa)
understand whether the catalogue is being utilised to its fullest, so that we can identify which components and patterns should be reviewed, refined and iterated
create a dataset that can be analysed against other data, e.g. the UX survey

This should have benefits for service teams too:

it should build trust in components and patterns through social proof
they could opt in to receiving element-specific updates, e.g. an email whenever we update a particular component

If it works, a variant of this functionality could be applied to backlog items, allowing us to see which services have implemented an element and which services want us to build it.
Hypothetical solution

Give services a method to highlight which components and patterns they have used
Appears on each component and pattern page
Shows other service teams how many services use a particular component or pattern
Collect data through a survey

This survey could complement any automatic detection (as mentioned in #1936) by allowing services to validate any assumptions we make from analysing code.
Appetite
No more than 1 week on an MVP.
What does success look like?
For this experiment to be successful, we'd need to see people filling in the survey. If we can get 10 services or less to fill in the survey over a 4-week period, from both highly engaged service and those we don't hear from often, we should have validated this as a successful way to measure adoption.
This means that adding it to guidance pages isn't enough, we also need to engage with the community to encourage survey-filling.

This is being rolled out on Exit this Page first: https://github.com/alphagov/govuk-design-system/pull/2721/commits/f189d5d7b69b8fd6755062e3b771c34d7f2da494


[FEATURE] Add support for Custom Functions w/ file_id parameters in Workflow Builder

I am trying to implement a custom function to be used in internal workflows by our admin teams.
As input property it must accept a file uploaded by a user.
I have created a workflow with 1st step being Collect info - it has a single File Upload input field.
I have defined custom function with input parameters like this:
   input_parameters: {         properties: {             cv1: {                 title: "Enter a file",                 name: "cv1",                 type: Schema.types.array,                 description: "",                 items: {                     type: Schema.types.string,                 }             },         },         required: ["cv1"],     },
I am able to bind this input property to a File Upload field, but than I am instantly see the error from WF Builder:

I have also tried to use Schema.slack.types.file_id but in that case I am unable to even bind this property to File Upload field in WF Builder - it shows another error saying that this type is not yet supported by WF Builder.

I think the actual problem here is that OpenForm doesn't seem to accept file_id types, yes? In my local testing that seems to be the case...

This seems to be a limitation in Workflow Builder w/ wider support of the file_id type, such as when they are parameters in a custom step. Will report this internally, but I also suggest you email<EMAIL_ADDRESS>and let the support team know that this is a feature gap that you would like to see filled.

Thank you for detailed explanation! We've already gave up on workflows and re-implemented as regular slack app.


Implement strict DagCbor spec

See: https://github.com/ipld/ipld/blob/master/specs/codecs/dag-cbor/spec.md#strictness

no undefined major type.
no Indefinite length arrays, etc.
minimal integer encoding.
f64 only.
no nan, infinity, etc.

I think that issue can be closed, given that the most recent version passed the IPLD codec fixtures.


Old PRs/Issues "Fail to load"

PRs and Issues that are more than about a year old "Fail to load" and show the error. (Observed in the Rapptz/discord.py repository)

Bug Report Dump (Auto-generated)

Version 1.22.0<PHONE_NUMBER>)
Device: iPhone X (iOS 12.1)
TestFlight: false

@crrapi could you give us an issue #?

My bad, the issue seems to have resolved itself. (maybe it was because of the bad WiFi connection at the time?) Closing as I don't experience this anymore.


[question][bspwm] have polybar take no tiling space and spawn above all windows

Is it possible to make polybar spawn above all windows and take no tiling space ?
I've looked at other issues and documentation and I feel like I'm missing something.
What i'm trying to is is configure polybar to only show above everything when the super key is pressed.The second part was done with a few lines in sxhkd.
Super_L
polybar-msg cmd show
@Super_L
polybar-msg cmd hide
Sorry if this is the wrong place to place this question.

That's it! I ignored that because I thought for some reason it was available to i3wm only.
The only problem I have now is that polybar shows under and not above.

wm-restack = bspwm might help though I'm not at all sure.

I did this using override-redirect and xdo.
Super_L
xdo show -N "Polybar"; xdo raise -N "Polybar"
@Super_L
xdo hide -N "Polybar"
Thanks for the help. This is not really an issue so i'll close this.


silx view assumes hdf5 for a link

If I create a link to a dataset (e.g a npz file)
$ silx view link
returns
can't be read as hdf5
$ silx view rawpath
works as expected and opens the npz.

Hi,
As it is, silx view is probing the kind of file from the extension (it is not  checking .
Does your link has the .npz extension?
I can reproduce this issue only if I don't put the extension in the link name, but this worked:
ln -s test.npz link.npz
silx view link.npz

Thanks Thomas. Yes that was the problem.
On Tue, 28 May 2019 at 10:42, Thomas VINCENT<EMAIL_ADDRESS>wrote:

Hi,
As it is, silx view is probing the kind of file from the extension (it is
not checking .
Does your link has the .npz extension?
I can reproduce this issue only if I don't put the extension in the link
name, but this worked:
ln -s test.npz link.npz
silx view link.npz
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/silx-kit/silx/issues/2596?email_source=notifications&email_token=ABE3S5XEFPAMGPXHOEGG2NLPXTV7HA5CNFSM4HP2BBI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWLM4ZI#issuecomment-496422501,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABE3S5W5SVFX2PKAQVAXOZTPXTV7HANCNFSM4HP2BBIQ
.

OK.
We could probe the file type by also looking at some magic bits... but in the case of .npz that wouldn't help much as it is a zip file.
Closing, please reopen if needed.


Qingwei/improve buffer size

@borisyankov seems one of us publish 18.9.0 before, thus making your last publish not latest
So i published again to 18.9.1

Coverage remained the same at 86.538% when pulling 83e9e6f9ead5482d57f20bce55bc9ea2f02412da on qingweibinary:qingwei/improve_buffer_size into 1117045ebc7f5852d1ff7f27202e1ed55f1b7211 on binary-com:master.

Yeah, I had some doubts the publish went correctly, but thought it was my imagination ;)


How to debug actions/github-script

When I use actions/github-script to run javascript, then I how to debug it ?

You can put the action-tmate action before or after the github-script action. But debugging in between is not in scope of this action.


Need help setting up urlregexp rule

Hey everyone,
I already reached out to the traefik community forum but couldn't find any help so far (post).
I'm trying to set up the fail2ban plugin and it works with my containous/whoami test container without a urlregexp rule.
I want to secure my Wordpress container by setting a urlregexp rule for the login page /wp-login.php. But it seems that no matter which rule I configure, fail2ban does not filter for the login page but takes all requests to the site for its calculations. This leads to access restrictions relatively fast on all Wordpress pages. My attempts so far (docker-compose of my Wordpress container):
    labels:
     [ ... ]
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.enabled=true"
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.bantime=5m"
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.findtime=1m"
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.maxretry=5"
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.ports=0:8000"

      # with and without \`
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp=`.*\/wp-login.php.*`"
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp=.*\/wp-login.php.*"
      - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp=.*\/wp\-login\.php.*" # throws compose parsing error

      - "traefik.http.routers.wordpress.middlewares=my-fail2ban@docker"
      [ ... ]

Is my regex not correct? Or am I mistaken what the urlregexp rule should do?
Thanks in advance

Hi there !
First of all, you are right ! That is how we intended urlregexp to work ! If the url is a match for the regexp urlregexp, the ip would be banned.
In your case, I think that you can use:
- "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp='wp-login.php'"

Wildcard will be infered by Golang Regexp ! If you want to check your regexps, I sugest that you use regex101.
Be aware that there should be some logs if the url is matched with an ip like:
Fail2Ban: 2020/12/04 10:30:00 restricted.go:51: Url ('/wp-login.php') was matched by regexp: 'wp-login.php'

I hope it helps !
Tom

Thx for your fast reply and I'll give it a try tonight.

I think I got the regex right by removing the single quotes from your example:
- "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp=wp-login.php"

My log shows a match now:
Fail2Ban: 2020/12/04 18:20:30 restricted.go:51: Url ('/wp-login.php?test') was matched by regexp: 'wp-login.php'

But still, fai2ban considers all my requests. Not only the ones to domain.tld/wp-login.php. I get banned as soon as I load my main page (domain.tld) as well. It doesn't matter which url I'm requesting. It looks like fail2ban ignores my urlregexp rule.

It is great if you get it working !
Yeah! The plugin work for the whole Traefik routing. Do you think that it will be interesting to filter with in a setting of each service ?

In my docker setup there are dozens of services running which are using traefik. E.g.:

domain1.tld node
domain2.tld nextcloud
domain3.tld wordpress

My goal is to protect only one single url of them: domain3.tld/wp-login.php
But my current config (see above) is protecting all URLs of domain3.tld.
So yes, my goal is to limit fail2ban to a specific service (already working) and further more to a specific URL (not working). I thought the urlregexp rule could be used as a filter for specific URLs.

Hi @DaniSchenk,
I've made this change: commit.
It adds support for multi regexp and now the url tested look like this: domain3.tld/wp-login.php (see rules-fail2ban.yaml).
What do you think fo it ? Does it solves your usecase ?

Hey @tomMoulard,
Adding support for adding multiple regex filters seems pretty usefull to me 👍.
I had problems to run the plugin including your commit. I have no experience with go or traefik plugins. On my Windows local maschine where Docker Desktop and WSL2 it tried:

created  a directory structure /plugins/go/src/github.com/tommoulard/fail2ban and placed the source code including your commit in it
added some lines in my local traefik docker-compose.yml:

volumes:
  [ ... ]
  - "/plugins/go:/plugins/go"
command:
  [ ... ]
   - "--experimental.devPlugin.moduleName=github.com/tommoulard/fail2ban"
   - "--experimental.devPlugin.goPath=/plugins/go"

I failed. My local traefik dashboard displays the error: plugin: unknown plugin type: fail2ban. So I didn't manage to test your changes.
Despite this, I'm not sure that your changes will address the issue I have. As I mentioned earlier (comment) I already got it working to get a match for my URL.
It's just a wild guess, but I think that fail2ban rejects the request before it even considers a urlregexp check. It seems to me, that not all conditions must be met to reject a request. Even if the urlregexp filter is not matching, fail2ban considers the requesting IP to be banned.

Hi,
We just released a new version of fail2ban, with more logs and the multiple regexp. v0.5.0
You can test the new functions here.
We we manage the flux sequencialy in this order :

Blacklist
Whitelist
Urlregxp
Fail2ban

Check if your ip is not banned by traefik in the logs and check if your ip is not in the blacklist before testing.
If you have any other questions, don't hesitate !

I updated to the most recent version of your plugin and my configs seem to get parsed correctly:
Fail2Ban: 2021/01/07 23:49:05 restricted.go:52: Plugin: FailToBan is up and running
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: FailToBan Rules : '{Xbantime:5s Xfindtime:5s Xurlregexp:[`.*/wp-login.php`] Xmaxretry:5 Xenabled:true Xports:[80 443]}'
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: Ports range from 80 to 443
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: Findtime: 5s
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: Bantime: 5s

However, fail2ban is still banning all requests on all enpoints and is not respecting my urlregexp rules.
After the 5th request to any endpoint I get this log entry:
Fail2Ban: 2021/01/07 23:49:41 restricted.go:52: xx.xxx.59.0:16041 is in blacklist mode

I tried a lot of different rules. E.g. '.*/wp-login.php', .*/wp-login, wp-login.php, \/wp-login\.php, wp-login, and much more ...
When I define my rule using a starting * like */wp-login I get a log entry similar to:
Fail2Ban: 2021/01/07 23:57:25 restricted.go:51: Url ('domain.tld/') was matched by regexp: '*/wp-login'

But this rule blocks all requests on all endpoints imediately without even respecting any other like findtime
Can you give me a working urlregex rule, which only considers a specific endpoint? A rule that:

considers to block: domain.tld/path1
but never blocks:

domain.tld/
domain.tld/path2

I updated to the most recent version of your plugin and my configs seem to get parsed correctly:
Fail2Ban: 2021/01/07 23:49:05 restricted.go:52: Plugin: FailToBan is up and running
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: FailToBan Rules : '{Xbantime:5s Xfindtime:5s Xurlregexp:[`.*/wp-login.php`] Xmaxretry:5 Xenabled:true Xports:[80 443]}'
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: Ports range from 80 to 443
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: Findtime: 5s
Fail2Ban_config: 2021/01/07 23:49:05 restricted.go:51: Bantime: 5s

However, fail2ban is still banning all requests on all enpoints and is not respecting my urlregexp rules.
After the 5th request to any endpoint I get this log entry:
Fail2Ban: 2021/01/07 23:49:41 restricted.go:52: xx.xxx.59.0:16041 is in blacklist mode

I tried a lot of different rules. E.g. '.*/wp-login.php', .*/wp-login, wp-login.php, \/wp-login\.php, wp-login, and much more ...
When I define my rule using a starting * like */wp-login I get a log entry similar to:
Fail2Ban: 2021/01/07 23:57:25 restricted.go:51: Url ('domain.tld/') was matched by regexp: '*/wp-login'

But this rule blocks all requests on all endpoints imediately without even respecting any other like findtime
Can you give me a working urlregex rule, which only considers a specific endpoint? A rule that:

considers to block: domain.tld/path1
but never blocks:

domain.tld/
domain.tld/path2

Hi,
We just found out that our parsing was not good...
The ip that we were matching to the blacklist and whitelist were in fact "ip:port".
We are right now trying to fix that. We are not full time on this and right now we don't have that much time for this project.
I think that this will be fixed before the end of january. You can check the advencement on this branch : https://github.com/tomMoulard/fail2ban/tree/port-support
Sorry for the delay and thanks for your patience.
Clement

Hi,
We just found out that our parsing was not good...
The ip that we were matching to the blacklist and whitelist were in fact "ip:port".
We are right now trying to fix that. We are not full time on this and right now we don't have that much time for this project.
I think that this will be fixed before the end of january. You can check the advencement on this branch : https://github.com/tomMoulard/fail2ban/tree/port-support
Sorry for the delay and thanks for your patience.
Clement

Hi,
We just released the 0.6.0 version of the fail2ban plugin.
You can try this new version with your traefik
Thanks for the wait and hope to ear from you about this release
Clement

Hey @cledavid,
thanks for your update. My issue is still present.
I created a small repo to reproduce the issue https://github.com/DaniSchenk/fail2ban-bug. Check the README to get instructions. It's basically done by adding your token running docker-compose up.

Hey @DaniSchenk,
I just checked your repo and it is in fact working as expected.
For now, urlregexp block the request as specified in the readme : urlregexp: a regexp list to block request with regexps on the url
We will soon add an option on the urlregexp to allow, block and filter.
allow and block will be respectively white and blacklist for url
filter will restrain the fail2ban to only these urlregexp
Moreover, if you have multiple services, you can do some urlregexp like :
'toto.com/path1'
'tata.com/path2'
't*.com/path3'
Clement

Oh, I see. I thought the urlregex config would behave like the failregex filter from fail2ban. I'm looking forward to your upcoming updates 👍

@cledavid
I'm experiencing this same exact issue, it not worse. It doesn't match against the regexpurl, but it does keep track of an IP
Configuration:
 ```
  - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.enabled=true"
  - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.bantime=1m"
  - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.findtime=1m"
  - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.maxretry=5"
  - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.ports=0:8000"
  - "traefik.http.middlewares.my-fail2ban.plugin.fail2ban.rules.urlregexp=wp-login.php"
  - "traefik.http.routers.my-wordpress-site.middlewares=my-fail2ban@docker"

In the following logs, notice I am simply loading /index.php over and over again some ~10x and it results in a 1 minute IP ban.

-traefik  | time="2021-04-06T02:28:12Z" level=info msg="Configuration loaded from flags."
-traefik  | Fail2Ban_config: 2021/04/06 02:28:17 restricted.go:51: Bantime: 1m0s
-traefik  | Fail2Ban_config: 2021/04/06 02:28:17 restricted.go:51: Findtime: 1m0s
-traefik  | Fail2Ban_config: 2021/04/06 02:28:17 restricted.go:51: Ports range from 0 to 8000
-traefik  | Fail2Ban_config: 2021/04/06 02:28:17 restricted.go:51: FailToBan Rules : '{Xbantime:1m0s Xfindtime:1m0s Xurlregexp:[wp-login.php] Xmaxretry:5 Xenabled:true Xports:[0 8000]}'
-traefik  | Fail2Ban: 2021/04/06 02:28:17 restricted.go:52: Plugin: FailToBan is up and running
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:28:35 +0000] "POST /wp-cron.php?doing_wp_cron=1617676115.2750239372253417968750 HTTP/1.1" 200 31 "https://.com/wp-cron.php?doing_wp_cron=1617676115.2750239372253417968750" "WordPress/5.7; https://.com"
-traefik  | <IP_ADDRESS> - - [06/Apr/2021:02:28:35 +0000] "POST /wp-cron.php?doing_wp_cron=1617676115.2750239372253417968750 HTTP/1.1" 200 20 "-" "-" 2 "@docker" "http://<IP_ADDRESS>:8080" 4ms
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:28:35 +0000] "POST /wp-cron.php?doing_wp_cron=1617676115.6093220710754394531250 HTTP/1.1" 200 31 "https://.com/wp-cron.php?doing_wp_cron=1617676115.6093220710754394531250" "WordPress/5.7; https://.com"
-traefik  | <IP_ADDRESS> - - [06/Apr/2021:02:28:35 +0000] "POST /wp-cron.php?doing_wp_cron=1617676115.6093220710754394531250 HTTP/1.1" 200 20 "-" "-" 3 "@docker" "http://<IP_ADDRESS>:8080" 2ms
-.com | <IP_ADDRESS> -  06/Apr/2021:02:28:35 +0000 "POST /wp-cron.php" 200
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:28:36 +0000] "POST /wp-cron.php?doing_wp_cron=1617676115.8865261077880859375000 HTTP/1.1" 200 31 "https://.com/wp-cron.php?doing_wp_cron=1617676115.8865261077880859375000" "WordPress/5.7; https://.com"
-traefik  | <IP_ADDRESS> - - [06/Apr/2021:02:28:36 +0000] "POST /wp-cron.php?doing_wp_cron=1617676115.8865261077880859375000 HTTP/1.1" 200 20 "-" "-" 4 "@docker" "http://<IP_ADDRESS>:8080" 2ms
-.com | <IP_ADDRESS> -  06/Apr/2021:02:28:32 +0000 "GET /index.php" 200
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:28:36 +0000] "GET / HTTP/1.1" 200 14365 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
-traefik  | 67.204..* - - [06/Apr/2021:02:28:32 +0000] "GET / HTTP/2.0" 200 14352 "-" "-" 1 "@docker" "http://<IP_ADDRESS>:8080" 3552ms
-.com | <IP_ADDRESS> -  06/Apr/2021:02:28:35 +0000 "POST /wp-cron.php" 200
-.com | <IP_ADDRESS> -  06/Apr/2021:02:28:36 +0000 "POST /wp-cron.php" 200
-.com | <IP_ADDRESS> -  06/Apr/2021:02:28:36 +0000 "POST /index.php" 200
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:28:37 +0000] "POST /?wc-ajax=get_refreshed_fragments HTTP/1.1" 200 398 "https://.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
-traefik  | 67.204..* - - [06/Apr/2021:02:28:36 +0000] "POST /?wc-ajax=get_refreshed_fragments HTTP/2.0" 200 386 "-" "-" 5 "@docker" "http://<IP_ADDRESS>:8080" 352ms
-.com | <IP_ADDRESS> -  06/Apr/2021:02:28:45 +0000 "GET /index.php" 200
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:28:45 +0000] "GET / HTTP/1.1" 200 14357 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
-traefik  | 67.204.. - - [06/Apr/2021:02:28:45 +0000] "GET / HTTP/2.0" 200 14344 "-" "-" 6 "*@docker" "http://<IP_ADDRESS>:8080" 389ms
*****-traefik  | crond: user:root entry:33 23 * * * /usr/local/bin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf 2>&1
*****-traefik  |<PHONE_NUMBER>00000000000000000000000100000000000000000000000000
*****-traefik  |<PHONE_NUMBER>00000000000001
*****-traefik  |<PHONE_NUMBER>1111111111111111111111
*****-traefik  |<PHONE_NUMBER>11
*****-traefik  | 1111111
**-traefik  | crond: wakeup dt=48
-traefik  | crond: file root:
-traefik  | crond:  line /usr/local/bin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf 2>&1
-.com | <IP_ADDRESS> -  06/Apr/2021:02:29:08 +0000 "GET /index.php" 200
-.com | <IP_ADDRESS> - - [06/Apr/2021:02:29:08 +0000] "GET / HTTP/1.1" 200 14357 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
-traefik  | 67.204.. - - [06/Apr/2021:02:29:08 +0000] "GET / HTTP/2.0" 200 14344 "-" "-" 7 "@docker" "http://<IP_ADDRESS>:8080" 388ms
-traefik  | Fail2Ban: 2021/04/06 02:29:11 restricted.go:52: 67.204.. is in blacklist mode
-traefik  | 67.204.. - - [06/Apr/2021:02:29:11 +0000] "GET / HTTP/2.0" 403 0 "-" "-" 8 "@docker" "-" 0ms

Hello,
As found in the thread, the regexp is only blocking a part of the website without going through fail2ban.
We are working on this and you can see some move in the new_urlregexp  branch.
This new regexp will create 3 types :

allow (the call is not checked and every call pass)
block (the call is not checked and every call is stopped)
filter (the call is going through fail2ban)

It will come in the upcoming weeks, we are working on fail2ban on our free time and this last month was everything exept free so we didn't make a lot of improvement. 😓
We will do our best to release the new version as soon as possible 😉
Clement

Closed by #35.


Server side cancel notification

Hi!  Thanks you for such a good project.
I am implementing a SIP server and I am trying to get notified when an INVITE is canceled.
The call flow is the following:
10:00:14.560420   │        INVITE (SDP)         │
      +0.000014   │ ──────────────────────────> │
10:00:14.560665   │         100 Trying          │
      +0.000011   │ <────────────────────────── │
10:00:14.560770   │           CANCEL            │
      +0.000010   │ ──────────────────────────> │
10:00:14.560948   │   487 Request Terminated    │
      +0.000012   │ <────────────────────────── │
10:00:14.561009   │           200 OK            │
      +0.000010   │ <────────────────────────── │
10:00:14.561049   │             ACK             │
      +0.000010   │ ──────────────────────────> │

I need to cancel my background go routine running in background regarding this INVITE request.
How do I do this now?
I tried waiting on <-tx.Done() but it never gets called.
Even if I see logs like:
{"level":"debug","caller":"transactionLayer","time":"2024-10-29T10:14:49-04:00","message":"Server transaction terminating"}

This piece of code seems to work
select {
	case m := <-tx.Acks(): // Handle ACK for response . ACKs on 2xx are send as different request
		log.Info("Got ACK", "m", m, )
		err := tx.Err()
		if errors.Is(err, sip.ErrTransactionCanceled) {
			// Transaction was canceled
			log.Info("Transaction canceled", "tx", tx)
			return
		}

But doesn't seem appropriate as it's called only at ACK, and I need to take action at CANCEL.
How can I hook on Cancel requests?
Thanks,
Sylvain

Hi @SylvainFontaineJive . This indeed could be some issue. It was some of recent changes.
By default yes, processing error should be after tx.Done()
It would be great help maybe to run with sip.TransactionFSMDebug = true and have zerolog debug level. Just to confirm why this happens.

Hello @emiago ,
Here are the logs
{"level":"debug","caller":"transport<UDP>","time":"2024-10-30T08:50:14-04:00","message":"begin listening on UDP [::]:5060"}
{"level":"debug","time":"2024-10-30T08:50:26-04:00","message":"UDP read from [::]:5060 <- <IP_ADDRESS>:5061:\nINVITE sip:service@<IP_ADDRESS>:5060 SIP/2.0\r\nVia: SIP/2.0/UDP <IP_ADDRESS>:5061;branch=z9hG4bK4da8.26650\r\nFrom: sipp <sip:sipp@<IP_ADDRESS>:5061>;tag=26650SIPpTag001\r\nTo: service <sip:service@<IP_ADDRESS>:5060>\r\nCall-ID<EMAIL_ADDRESS>1 INVITE\r\nContact: sip:sipp@<IP_ADDRESS>:5061\r\nX-CustomHeader: Test; param1=1; param2=2\r\nMax-Forwards: 70\r\nSubject: Performance Test\r\nContent-Type: application/sdp\r\nContent-Length:   129\r\n\r\nv=0\r\no=user1 53655765<PHONE_NUMBER> IN IP4 <IP_ADDRESS>\r\ns=-\r\nc=IN IP4 <IP_ADDRESS>\r\nt=0 0\r\nm=audio 6000 RTP/AVP 0\r\na=rtpmap:0 PCMU/8000\r\n"}
{"level":"debug","caller":"transportlayer","network":"udp","addr":"<IP_ADDRESS>:5061","time":"2024-10-30T08:50:26-04:00","message":"getting connection"}
{"level":"debug","caller":"transactionLayer","tx":"z9hG4bK4da8.26650__<IP_ADDRESS>__5061__INVITE","time":"2024-10-30T08:50:26-04:00","message":"Server transaction initialized"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.26650__<IP_ADDRESS>__5061__INVITE","input":"server_input_user_1xx","state":"inviteStateProcceeding-fm","time":"2024-10-30T08:50:26-04:00","message":"Changing transaction state"}
{"level":"debug","time":"2024-10-30T08:50:26-04:00","message":"UDP write to [::]:5060 -> <IP_ADDRESS>:5061:\nSIP/2.0 100 Trying\r\nVia: SIP/2.0/UDP <IP_ADDRESS>:5061;branch=z9hG4bK4da8.26650\r\nFrom: \"sipp\" <sip:sipp@<IP_ADDRESS>:5061>;tag=26650SIPpTag001\r\nTo: \"service\" <sip:service@<IP_ADDRESS>:5060>\r\nCall-ID<EMAIL_ADDRESS>1 INVITE\r\nContent-Length: 0\r\n\r\n"}
{"time":"2024-10-30T08:50:26.692368-04:00","level":"INFO","msg":"Received INVITE","request":{"SipVersion":"SIP/2.0","Method":"INVITE","Recipient":{"Scheme":"sip","Wildcard":false,"HierarhicalSlashes":false,"User":"service","Password":"","Host":"<IP_ADDRESS>","Port":5060,"UriParams":null,"Headers":null}}}
{"level":"debug","time":"2024-10-30T08:50:26-04:00","message":"UDP read from [::]:5060 <- <IP_ADDRESS>:5061:\nCANCEL sip:service@<IP_ADDRESS>:5060 SIP/2.0\r\nVia: SIP/2.0/UDP <IP_ADDRESS>:5061;branch=z9hG4bK4da8.26650\r\nFrom: sipp <sip:sipp@<IP_ADDRESS>:5061>;tag=26650SIPpTag001\r\nTo: service <sip:service@<IP_ADDRESS>:5060>\r\nCall-ID<EMAIL_ADDRESS>1 CANCEL\r\nContact: sip:sipp@<IP_ADDRESS>:5061\r\nMax-Forwards: 70\r\nSubject: Performance Test\r\nContent-Type: application/sdp\r\nContent-Length:     0\r\n\r\n"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.26650__<IP_ADDRESS>__5061__INVITE","input":"server_input_cancel","state":"inviteStateProcceeding-fm","time":"2024-10-30T08:50:26-04:00","message":"Changing transaction state"}
{"level":"debug","caller":"transactionLayer","time":"2024-10-30T08:50:26-04:00","message":"Passing 487 on CANCEL"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.26650__<IP_ADDRESS>__5061__INVITE","input":"server_input_user_300_plus","state":"inviteStateProcceeding-fm","time":"2024-10-30T08:50:26-04:00","message":"Changing transaction state"}
{"level":"debug","time":"2024-10-30T08:50:26-04:00","message":"UDP write to [::]:5060 -> <IP_ADDRESS>:5061:\nSIP/2.0 487 Request Terminated\r\nVia: SIP/2.0/UDP <IP_ADDRESS>:5061;branch=z9hG4bK4da8.26650\r\nFrom: \"sipp\" <sip:sipp@<IP_ADDRESS>:5061>;tag=26650SIPpTag001\r\nTo: \"service\" <sip:service@<IP_ADDRESS>:5060>;tag=8f4affcf-9ca4-4ebe-a36b-4f60f844509b\r\nCall-ID<EMAIL_ADDRESS>1 INVITE\r\nContent-Length: 0\r\n\r\n"}
{"level":"debug","time":"2024-10-30T08:50:26-04:00","message":"UDP write to [::]:5060 -> <IP_ADDRESS>:5061:\nSIP/2.0 200 OK\r\nVia: SIP/2.0/UDP <IP_ADDRESS>:5061;branch=z9hG4bK4da8.26650\r\nFrom: \"sipp\" <sip:sipp@<IP_ADDRESS>:5061>;tag=26650SIPpTag001\r\nTo: \"service\" <sip:service@<IP_ADDRESS>:5060>;tag=2ebe37d5-ec44-4d7c-9779-792d7a7512e3\r\nCall-ID<EMAIL_ADDRESS>1 CANCEL\r\nContent-Length: 0\r\n\r\n"}
{"level":"debug","time":"2024-10-30T08:50:26-04:00","message":"UDP read from [::]:5060 <- <IP_ADDRESS>:5061:\nACK sip:service@<IP_ADDRESS>:5060 SIP/2.0\r\nVia: SIP/2.0/UDP <IP_ADDRESS>:5061;branch=z9hG4bK4da8.26650\r\nFrom: sipp <sip:sipp@<IP_ADDRESS>:5061>;tag=26650SIPpTag001\r\nTo: service <sip:service@<IP_ADDRESS>:5060>;tag=8f4affcf-9ca4-4ebe-a36b-4f60f844509b\r\nCall-ID<EMAIL_ADDRESS>1 ACK\r\nContact: sip:sipp@<IP_ADDRESS>:5061\r\nMax-Forwards: 70\r\nSubject: Performance Test\r\nContent-Length: 0\r\n\r\n"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.26650__<IP_ADDRESS>__5061__INVITE","input":"server_input_ack","state":"inviteStateCompleted-fm","time":"2024-10-30T08:50:26-04:00","message":"Changing transaction state"}
{"time":"2024-10-30T08:50:26.795442-04:00","level":"INFO","msg":"Got ACK","m":{"SipVersion":"SIP/2.0","Method":"ACK","Recipient":{"Scheme":"sip","Wildcard":false,"HierarhicalSlashes":false,"User":"service","Password":"","Host":"<IP_ADDRESS>","Port":5060,"UriParams":null,"Headers":null}}}
{"time":"2024-10-30T08:50:26.795574-04:00","level":"INFO","msg":"Transaction canceled","tx":{}}
{"level":"debug","caller":"transactionLayer","time":"2024-10-30T08:50:26-04:00","message":"Server transaction terminating"}
{"level":"debug","caller":"transactionLayer","tx":"z9hG4bK4da8.26650__<IP_ADDRESS>__5061__INVITE","time":"2024-10-30T08:50:26-04:00","message":"Server transaction destroyed"}

Also, the associated code:
func (s *sipServer) ListenAndServe(network, addr string) error {
	sip.SIPDebug = s.debug
	sip.TransactionFSMDebug = true

	s.srv.OnInvite(func(req *sip.Request, tx sip.ServerTransaction) {
		reason := "OK"
		code := sip.StatusOK
		body := []byte{}

		metrics.Metrics.SipRequestReceivedCount.WithLabelValues("INVITE").Inc()

		// Respond with 100 Trying
		res := sip.NewResponseFromRequest(req, 100, "Trying", nil)
		tx.Respond(res)

		metrics.Metrics.SipResponseSentCount.WithLabelValues("1XX").Inc()
		replyChan := make(chan reply, 1)
		cancelableCtx, cancelRequest := context.WithCancel(s.ctx)

		go func() {
			// Call INVITE handler
			replyBody, err := s.inviteHandler(cancelableCtx, req)
			if replyBody != nil && err == nil {
				body, err = json.Marshal(replyBody)
			}
			if err != nil {
				code = sip.StatusInternalServerError
				reason = "Internal Server Error"
			}

			replyChan <- reply{replyBody, err}
		}()

		select {
			case m := <-tx.Acks(): // Handle ACK for response. ACKs on 2xx are send as different request
				metrics.Metrics.SipRequestReceivedCount.WithLabelValues("ACK").Inc()
				log.Info("Got ACK", "m", m, )
				err := tx.Err()
				if errors.Is(err, sip.ErrTransactionCanceled) {
					// TODO: Find a propoer way to get CANCEL request ... discussion here https://github.com/emiago/sipgo/issues/148

					// Transaction was canceled
					metrics.Metrics.SipRequestReceivedCount.WithLabelValues("CANCEL").Inc()
					log.Info("Transaction canceled", "tx", tx)
				}
				return

			case <-tx.Done():
				// Signal transaction is done.
				// Check any errors with tx.Err() to have more info why terminated
				log.Info("Transaction done", "tx", tx)
				cancelRequest() // Signal inviteHandler to cancel
				return

			case reply := <-replyChan:
				// Handle reply from handler
				if reply.err != nil {
					log.Error("Error while handling INVITE", "error", reply.err)
				}
				log.Info("Reply from handler", "reply", reply.replyBody)

				// INVITE Final answer
				res = sip.NewResponseFromRequest(req, code, reason, body)
				tx.Respond(res)

				metricsClass := fmt.Sprintf("%dXX", int(code/100))
				metrics.Metrics.SipResponseSentCount.WithLabelValues(metricsClass).Inc()
				return
		}
	})

	s.srv.OnAck(func(req *sip.Request, tx sip.ServerTransaction) {
		metrics.Metrics.SipRequestReceivedCount.WithLabelValues("ACK").Inc()
		log.Info("Got ACK", "req", req)
	})

	return s.srv.ListenAndServe(s.ctx, network, addr)
}

Hi @SylvainFontaineJive thanks for reporting.  Couple notes, I see no reason forking invite handling, maybe you can explain that part.
So transaction FSM is ok.
Anyway I think for UDP transaction is put on hold due to timer.  Timer I
https://datatracker.ietf.org/doc/html/rfc3261#section-17.2.1
but yes you get ACK before.
I think I see bug with TCP here as well, but this needs to be tested

Hello @emiago,
I fork Invite handling because processing will take time (>300 ms).
I order to receive tx.Acks() (and cancel) while processing the request, I need the invite go routine to listen to those events.
Do you have an idea on how to proceed, I could submit a PR if you'd like.

Hi @SylvainFontaineJive lets just discuss more first.
So just to repeat. tx.Done() may not fire until timer I is finished. You should have ErrTransactionCanceled after as well?
This is due to UDP mostly.  Can you confirm this please?
Now what I see you want some mechanism to Cancel current execution once CANCEL is received. We had this before, but it forced more forking. Of course it is safe to check transaction ERR.
Still to make this more intuitive I think I need to reconsider some hooks. Channels are not good.
FYI: you have freedom to make timers smaller or bigger.
SIDE NOTE:
How this is used with Dialog management.
You ReadInvite and then start sending response or doing other work. Once CANCEL hits it terminates CALL after timer and dialog.Context is canceled.

Hello @emiago,
As I said in https://github.com/emiago/sipgo/issues/148, I removed the return statement from the case <-tx.Acks(): which should help getting case <-tx.Done(): ;).  My bad.
I am getting the <-tx.Done() correctly, after timer I like you mentioned.
Being notified about the cancel after the ACK is enough for my needs.
Thank you again @emiago for you great code and your great support.
Regards,
Sylvain

Hi @SylvainFontaineJive Nice to hear.
Still I think I saw one issue with TimerI. If you can confirm but over TCP you should not have to wait timer I

Hi @emiago
Indeed I do see having to wait for timer I even in TCP.  Here are the logs:
{"level":"debug","caller":"transport<TCP>","time":"2024-11-04T10:18:25-05:00","message":"begin listening on TCP [::]:4040"}
{"level":"debug","caller":"transport<TCP>","raddr":"<IP_ADDRESS>:65004","time":"2024-11-04T10:18:31-05:00","message":"New connection"}
{"level":"debug","ip":"<IP_ADDRESS>:4040","dst":"<IP_ADDRESS>:65004","ref":2,"time":"2024-11-04T10:18:31-05:00","message":"TCP reference increment"}
{"level":"debug","ip":"<IP_ADDRESS>:4040","dst":"<IP_ADDRESS>:65004","ref":2,"time":"2024-11-04T10:18:31-05:00","message":"TCP reference increment"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP read <IP_ADDRESS>:4040 <- <IP_ADDRESS>:65004:\nINVITE sip:service@<IP_ADDRESS>:4040 SIP/2.0\r\nVia: SIP/2.0/TCP <IP_ADDRESS>:65004;branch=z9hG4bK4da8.6469\r\nFrom: sipp <sip:sipp@<IP_ADDRESS>:65004>;tag=6469SIPpTag001\r\nTo: service <sip:service@<IP_ADDRESS>:4040>\r\nCall-ID<EMAIL_ADDRESS>1 INVITE\r\nContact: sip:sipp@<IP_ADDRESS>:65004\r\nX-CustomHeader: Test; param1=1; param2=2\r\nMax-Forwards: 70\r\nSubject: Performance Test\r\nContent-Type: application/sdp\r\nContent-Length:   129\r\n\r\nv=0\r\no=user1 53655765<PHONE_NUMBER> IN IP4 <IP_ADDRESS>\r\ns=-\r\nc=IN IP4 <IP_ADDRESS>\r\nt=0 0\r\nm=audio 6000 RTP/AVP 0\r\na=rtpmap:0 PCMU/8000\r\n"}
{"level":"debug","caller":"transportlayer","network":"tcp","addr":"<IP_ADDRESS>:65004","time":"2024-11-04T10:18:31-05:00","message":"getting connection"}
{"level":"debug","ip":"<IP_ADDRESS>:4040","dst":"<IP_ADDRESS>:65004","ref":3,"time":"2024-11-04T10:18:31-05:00","message":"TCP reference increment"}
{"level":"debug","caller":"transactionLayer","tx":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","time":"2024-11-04T10:18:31-05:00","message":"Server transaction initialized"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","input":"server_input_user_1xx","state":"inviteStateProcceeding-fm","time":"2024-11-04T10:18:31-05:00","message":"Changing transaction state"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP write <IP_ADDRESS>:4040 -> <IP_ADDRESS>:65004:\nSIP/2.0 100 Trying\r\nVia: SIP/2.0/TCP <IP_ADDRESS>:65004;branch=z9hG4bK4da8.6469\r\nFrom: \"sipp\" <sip:sipp@<IP_ADDRESS>:65004>;tag=6469SIPpTag001\r\nTo: \"service\" <sip:service@<IP_ADDRESS>:4040>\r\nCall-ID<EMAIL_ADDRESS>1 INVITE\r\nContent-Length: 0\r\n\r\n"}
{"time":"2024-11-04T10:18:31.281989-05:00","level":"INFO","msg":"HandleInvite called","call-id":"1-6469@<IP_ADDRESS>","from":"sipp","to":"service","remote":"<IP_ADDRESS>:65004"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP read <IP_ADDRESS>:4040 <- <IP_ADDRESS>:65004:\nCANCEL sip:service@<IP_ADDRESS>:4040 SIP/2.0\r\nVia: SIP/2.0/TCP <IP_ADDRESS>:65004;branch=z9hG4bK4da8.6469\r\nFrom: sipp <sip:sipp@<IP_ADDRESS>:65004>;tag=6469SIPpTag001\r\nTo: service <sip:service@<IP_ADDRESS>:4040>\r\nCall-ID<EMAIL_ADDRESS>1 CANCEL\r\nContact: sip:sipp@<IP_ADDRESS>:65004\r\nMax-Forwards: 70\r\nSubject: Performance Test\r\nContent-Type: application/sdp\r\nContent-Length:     0\r\n\r\n"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","input":"server_input_cancel","state":"inviteStateProcceeding-fm","time":"2024-11-04T10:18:31-05:00","message":"Changing transaction state"}
{"level":"debug","caller":"transactionLayer","time":"2024-11-04T10:18:31-05:00","message":"Passing 487 on CANCEL"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","input":"server_input_user_300_plus","state":"inviteStateProcceeding-fm","time":"2024-11-04T10:18:31-05:00","message":"Changing transaction state"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP write <IP_ADDRESS>:4040 -> <IP_ADDRESS>:65004:\nSIP/2.0 487 Request Terminated\r\nVia: SIP/2.0/TCP <IP_ADDRESS>:65004;branch=z9hG4bK4da8.6469\r\nFrom: \"sipp\" <sip:sipp@<IP_ADDRESS>:65004>;tag=6469SIPpTag001\r\nTo: \"service\" <sip:service@<IP_ADDRESS>:4040>;tag=5265fd4b-bd60-453c-9fd4-8b58fa29ecf1\r\nCall-ID<EMAIL_ADDRESS>1 INVITE\r\nContent-Length: 0\r\n\r\n"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP write <IP_ADDRESS>:4040 -> <IP_ADDRESS>:65004:\nSIP/2.0 200 OK\r\nVia: SIP/2.0/TCP <IP_ADDRESS>:65004;branch=z9hG4bK4da8.6469\r\nFrom: \"sipp\" <sip:sipp@<IP_ADDRESS>:65004>;tag=6469SIPpTag001\r\nTo: \"service\" <sip:service@<IP_ADDRESS>:4040>;tag=97d76a7e-54a4-4a8b-935f-12aebe0d4221\r\nCall-ID<EMAIL_ADDRESS>1 CANCEL\r\nContent-Length: 0\r\n\r\n"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP read <IP_ADDRESS>:4040 <- <IP_ADDRESS>:65004:\nACK sip:service@<IP_ADDRESS>:4040 SIP/2.0\r\nVia: SIP/2.0/TCP <IP_ADDRESS>:65004;branch=z9hG4bK4da8.6469\r\nFrom: sipp <sip:sipp@<IP_ADDRESS>:65004>;tag=6469SIPpTag001\r\nTo: service <sip:service@<IP_ADDRESS>:4040>;tag=5265fd4b-bd60-453c-9fd4-8b58fa29ecf1\r\nCall-ID<EMAIL_ADDRESS>1 ACK\r\nContact: sip:sipp@<IP_ADDRESS>:65004\r\nMax-Forwards: 70\r\nSubject: Performance Test\r\nContent-Length: 0\r\n\r\n"}
{"level":"debug","time":"2024-11-04T10:18:31-05:00","message":"TCP read <IP_ADDRESS>:4040 <- <IP_ADDRESS>:65004:\n"}
{"level":"debug","caller":"transport<TCP>","error":"EOF","time":"2024-11-04T10:18:31-05:00","message":"connection was closed"}
{"level":"debug","ip":"<IP_ADDRESS>:4040","dst":"<IP_ADDRESS>:65004","ref":2,"time":"2024-11-04T10:18:31-05:00","message":"TCP reference decrement"}
{"level":"debug","ip":"<IP_ADDRESS>:4040","dst":"<IP_ADDRESS>:65004","ref":0,"time":"2024-11-04T10:18:31-05:00","message":"TCP doing hard close"}
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","input":"server_input_ack","state":"inviteStateCompleted-fm","time":"2024-11-04T10:18:31-05:00","message":"Changing transaction state"}
{"time":"2024-11-04T10:18:31.385218-05:00","level":"INFO","msg":"Transaction canceled","call-id":"1-6469@<IP_ADDRESS>","from":"sipp","to":"service","remote":"<IP_ADDRESS>:65004"}

Wait time then:
{"level":"debug","caller":"transactionLayer","key":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","input":"server_input_timer_i","state":"inviteStateConfirmed-fm","time":"2024-11-04T10:18:36-05:00","message":"Changing transaction state"}
{"level":"debug","caller":"transactionLayer","tx":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","time":"2024-11-04T10:18:36-05:00","message":"Server transaction destroyed"}
{"level":"debug","caller":"transactionLayer","time":"2024-11-04T10:18:36-05:00","message":"Server transaction terminating"}
{"level":"debug","caller":"transactionLayer","tx":"z9hG4bK4da8.6469__<IP_ADDRESS>__65004__INVITE","time":"2024-11-04T10:18:36-05:00","message":"Server transaction destroyed"}
{"time":"2024-11-04T10:18:36.386463-05:00","level":"INFO","msg":"Transaction Done","call-id":"1-6469@<IP_ADDRESS>","from":"sipp","to":"service","remote":"<IP_ADDRESS>:65004"}

@SylvainFontaineJive it is fixed. You can test in main branch


allow individual volumes to be attached and detached

I have a PR for this coming, basically the usage I'm proposing is:
usage: /usr/bin/packet-block-storage-attach [-vh] [-V volume_name]
    -v      make verbose
    -h      display help
    -V volume_name  specify the volume name to attach, eg: volume-f9a8a263

and
usage: /usr/bin/packet-block-storage-detach [-h] [-V volume_name]
    -h      display help
    -V volume_name  specify the volume name to detach, eg: volume-f9a8a263

Closing since this was completed a while back. We can re-open if needed.


Show number of times an article has been viewed

I don't need a full-fledged analytics suite, but having an idea about how popular an article is, would be practical for me. HTMLy has this (from where I came to Typemill).
Maybe this is something for Typemill 2

Thank you, it is a good idea but my problem is the very limited time and the very long list of work, so I think I cannot implement this in near future. It should be possible with a plugin, but most people will probably use an external analytics-tool with the existing analytics plugin. Anyway, I will add it to the backlog and see if there is demand for that feature.


Use patched ffmpeg formula in OSX

Closes https://github.com/skvark/opencv-python/issues/142
Includes https://github.com/skvark/opencv-python/pull/144 and is supposed to be applied on top of it.
From options in https://github.com/skvark/opencv-python/issues/142 , I used the "fork the formula" one but not used an older revision but am rather editing the current one. So this can break in perspective if they change the formula file in ways I didn't anticipate.

Let's try this. If it ends up breaking too often, we can try to figure some other solution later.


New Crowdin translations by Github Action

@closetool this PR should not happen. We don't bring the translated docs to this repo's source code. Please troubleshoot what's going wrong here.


ko-trans: Translate tutorials/online-training directory

This PR translates content/en/docs/tutorials/online-training directory for https://kubernetes.io/docs/tutorials/online-training/overview .
The names of courses are not translated because they are important to search inside those sites.
/language ko

cc @gochist and @ClaudiaJKang

@dongjoon-hyun 감사합니다!
/lgtm
/approve

감사합니다. @gochist


make texture parameter of ImmediateGeometry.begin() optional ?

Operating system or device - Godot version:
<IP_ADDRESS>
Issue description (what happened, and what was expected):
Sometimes, it could be handy if the texture parameter of ImmediateGeometry.begin(primitive,texture) was optional.
( and also, optionally, it would be handy if all the PRIMITIVE_xxxx constants were also bound to ImmediateGeometry too, so we don't have to look for them into Mesh.PRIMITIVE_xxxx )
Steps to reproduce:
Link to minimal example project (optional but very welcome):

Wouldn't a material parameter be more handy?

would this material parameter be optional ?
Though, note ImmediateGeometry already have a Material Override inherited from GeometryInstance that we can easily and optionally access .get_material_override().

BTW, it is not clear how this texture parameter must be used.
If you provide a texture to ImmediateGeometry.begin(), it won't be visible at all.
The only way to make a texture (and vertex colors) visible is to set a material override and bind texture to it.
But the texture you gave as parameter will not be used at all.
Maybe this ImmaediateGeometry also need some documentation :-/

Also, as mentioned into #5720, the code behind this texture parameter is totally unused.
The texture is stored into a cache, but this cache is used nowhere and just cleared once the immediategeo node is deleted.

It is not unused, it needs to be kept by the node. If not kept, it may be erased if no longer used and the texture stored in the VisualServer will become invalid.

@reduz :
so where do we get the texture from ?
does it have to be taken from the override material ?
because if you create an ImageTexture and use it with ImmediateGeometry.begin(), this texture is not used to texture the immediategeometry.

Okay, so after talking with @reduz on IRC, the texture parameter can be used to override the texture of the material attached to the ImmediateGeometry.
If you attach a FixedMaterial to your geometry, this material will need at least a diffuse texture or detail texture, or the passed as texture parameter will be ignored.
By default, the geometry node uses the default material which has no texture.
That's why the texture parameter seemed useless.


TypeError: init() got an unexpected keyword argument 'member'

Describe the bug
When running a basic command, there is an error that prints out but the command still works.
To Reproduce
Steps to reproduce the behavior:

Using a simple bot with a guild command

from pincer import Client, command
from pincer.objects import Intents

class Bot(Client):
    @Client.event
    async def on_ready(self):
        print(f'Bot logged in on as {self.bot}')

    @command(guild=GUILD_ID_HERE)
    async def ping(self):
        return f'Pong!'

bot = Bot(TOKEN_HERE, intents=Intents.all())
bot.run()

Run the code
Call /ping
The bot will return Pong! to Discord but raises an error.

Expected behavior
No error.
Full Console Out/Input
$ python main.py
<function on_ready_middleware at 0x7f2adec9e040> True
Bot logged in on as BOTNAME#XXXX
<function interaction_create_middleware at 0x7f2adec8fdc0> True
<function message_create_middleware at 0x7f2adec8fee0> False
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-15' coro=<Client.event_handler() done, defined at Pincer/pincer/client.py:337> exception=TypeError("__init__() got an unexpected keyword argument 'member'")>
Traceback (most recent call last):
  File "Pincer/pincer/client.py", line 352, in event_handler
    key, args, kwargs = await self.handle_middleware(payload, event_name)
  File "Pincer/pincer/client.py", line 315, in handle_middleware
    extractable = await ware(self, payload, *args, **kwargs)
  File "Pincer/pincer/client.py", line 142, in wrapper
    return await (
  File "Pincer/pincer/middleware/message_create.py", line 32, in message_create_middleware
    return "on_message", [UserMessage.from_dict(payload.data)]
  File "Pincer/pincer/utils/api_object.py", line 105, in from_dict
    return cls(**{
  File "<string>", line 33, in __init__
  File "Pincer/pincer/objects/user_message.py", line 337, in __post_init__
    self.interaction = convert(
  File "Pincer/pincer/utils/conversion.py", line 50, in convert
    return MISSING if value is MISSING else handle_factory()
  File "Pincer/pincer/utils/conversion.py", line 47, in handle_factory
    else fin_fac(value)
  File "Pincer/pincer/utils/conversion.py", line 41, in fin_fac
    else factory(v)
  File "Pincer/pincer/utils/api_object.py", line 105, in from_dict
    return cls(**{
TypeError: __init__() got an unexpected keyword argument 'member'

My assumption of the issue:
<function message_create_middleware at ADDRESS> False gets printed whenever there is a message.
<function interaction_create_middleware at ADDRESS> True gets printed whenever there is a interaction (slash command).
When the slash command happens, everything goes properly. Afterwards, when the bot sends a message, the message_create_middleware event is called, which invokes a function to create a message object. This raises the error.
To debug, I tried sending messages in Discord which were picked up and did not create any errors.
I assume that the error has something to do with the bot being a bot and not a regular member.

The UserMessage dataclass is missing a member property according to the error.

I believe I've found the actual error. When a user (non bot) there is no interaction so the creation of UserMessage works fine while UserMessage.interactions = MISSING. When there is an interaction (slash command), it converts the json into a MesssageComponent class. MesssageComponent does not have a member property. Then it gets an error.

I believe I've found the actual error. When a user (non bot) there is no interaction so the creation of UserMessage works fine while UserMessage.interactions = MISSING. When there is an interaction (slash command), it converts the json into a MesssageInteraction  class. MesssageInteraction  does not have a member property. Then it gets an error.

Yeah, this is correct. I didn't read the error message correctly apparently. I'm sorry for this, its probb bcs I'm on lobile or smth.
But its indeed because the MesssageInteraction dataclass doesn't have a member prop. So the fix would be to add an optional member attr.


Refactor iOS playground

New iOS playground provides:

Present OldHotels
Push OldHotels
Present NewHotels

Looks good to me. Overall, I think it's worth explaining the motivation behind this PR a little bit more. Generally speaking, it's based on findings when working on the documentation (part of another PR) to make sure the interface ends up being much easier than it is right now.
There are few changes, but it's much smaller and simpler now.


impl Error for ScanError

Would be nice if we could get an Error impl for ScanError, so we could easily use try! with Yaml::load_from_str.

Error trait has been implemented in https://github.com/chyh1990/yaml-rust/blob/master/src/scanner.rs#L53
Using try! is possible, can you show me your code?

Thanks it works now with the new version.


[RFC]: Namespace Renaming

Overview
This RFC proposes to rename all xxx_intel_x64 and xxx_64 classes using namespaces instead of embedding this information in the class's name itself. The goals of this modification include:

Reduce verbosity - Although a fully qualified name will likely be more verbose than the current implementation, using namespace xxx can be used to reduce this verbosity on demand.
Easier readability - All of the namespaces in the hypervisor will reflect the current directory structure. For example, intel_x64::msrs::ia32_monitor_filter_size becomes bfintrinsiccs::arch::intel_x64::msrs::ia32_monitor_filter_size. Once again, this is more verbose, but this verbosity can be removed. The more explicit namespace not only prevents namespace collisions (e.g. the difference between the bfintrinsics vmcs, and the bfvmm vmcs), but also provides the reader with everything they need to locate the code (as the class's qualifiers are the class's location).
Better extension support - currently, extensions have to provide more verbose class names to prevent collisions. Using namespaces prevents this. The bfvmm and the extended APIs can both have a class located in "vmcs.cpp", and both are called "vmcs". If a collision occurs, you can qualify the name as needed to reduce verbosity, while maintaining readability.

Proposed API Changes
No API changes are being proposed.
Build tree structure
No build tree structure changes are being proposed. Instead, the goal is to match a class's name to the existing build structure.

Completed:
https://github.com/Bareflank/hypervisor/pull/601
https://github.com/Bareflank/hypervisor/pull/595


refactor: allow passing function type to assets generator.filename

Summary
allow passing function type to generator.filename of asset and asset/resource type.
it is a missing feature of #7191.
it was reported in https://discord.com/channels/977448667919286283/1263141418881519706

Checklist

[x] Tests updated (or not required).
[x] Documentation updated (or not required).

Thanks


Starting Code results in "PowerShell language features are disabled due to an unsupported LanguageMode: ConstrainedLanguage" message

VSCode Version: Code 1.15.1 (41abd21afdf7424c89319ee7cb0445cc6f376959, 2017-08-16T18:07:25.676Z)
OS Version: Windows_NT x64 6.1.7601
Extensions:

Extension
Author (truncated)
Version

tslint
eg2
0.17.0

csharp
ms-
1.12.1

PowerShell
ms-
1.4.1

vscode-docker
Pet
0.0.16

vscode-icons
rob
7.12.0

shell-launcher
Tyr
0.1.3

Steps to Reproduce:

Start up Code
Open up the Terminal
Observe "PowerShell language features are disabled due to an unsupported LanguageMode: ConstrainedLanguage" error

If you look at the logs you see this:
[10:58:54] Language server starting...
powershell.exe started --
    pid: 11060
    exe: C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
    args: C:\Users\jreilly\.vscode\extensions\ms-vscode.powershell-1.4.1\scripts\Start-EditorServices.ps1 -EditorServicesVersion '1.4.1' -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '1.4.1' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'C:\Users\jreilly\.vscode\extensions\ms-vscode.powershell-1.4.1\modules' -EnableConsoleRepl -LogLevel 'Normal' -LogPath 'C:\Users\jreilly\.vscode\extensions\ms-vscode.powershell-1.4.1\logs\1503655134-00c42217-4248-45b7-a606-46f526fd4a5a1503655127754\EditorServices.log' -SessionDetailsPath 'C:\Users\jreilly\.vscode\extensions\ms-vscode.powershell-1.4.1\sessions\PSES-VSCode-3976-523561' -FeatureFlags @()

PowerShell language features are disabled due to an unsupported LanguageMode: ConstrainedLanguage

powershell.exe terminated or terminal UI was closed

Interestingly, I have my terminal configured using userSettings.json:
    "terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\WindowsPowerShell\\v1.0\\powershell.exe",

And I can open those terminals just fine.  Note that the erroring version is using a different exe: C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe.
Can we configure the integrated to use the sysnative version as well?  Would that solve the problem?

Creating an issue in https://github.com/PowerShell/vscode-powershell should get you an answer.
On sysnative, you should use sysnative only if you're running the 32-bit version of VS Code on 64-bit Windows. Otherwise, use System32.

I'm sorry I didn't quite follow that? This is a bug in the powershell vscode extension?

@johnnyreilly if the dropdown says "powershell" or "powershell.exe" it's a regular terminal, if not it's the extension. Still, vscode-powershell is generally the best place to start for PowerShell issues as there's more PS expertise over there.

This may help: https://blogs.technet.microsoft.com/kfalde/2017/01/20/pslockdownpolicy-and-powershell-constrained-language-mode/


RetryHandler should throw an APIException with retry error nested in the innerException.

Sourced from https://github.com/microsoftgraph/msgraph-sdk-dotnet/issues/2444
In the event that the API fails in making a request due to a large number of retries, the retryHandler should return an ApiError for a consistent experience and have the AggregateException with the listed errors as the InnerException.

Transferring issue as part of https://github.com/microsoft/kiota-abstractions-dotnet/issues/238


Reading Formulas and Hyperlink?

Hi, allow access value, formula and hyperlink.
Is it possible?

Your expected logic like below image ?

Test1 = "=1+1*5"
Test2  = "https://github.com/shps951023/MiniExcel/issues/239"

Test1
Test2

1+1*5
https://github.com/shps951023/MiniExcel/issues/239

I mean the raw value.
Can I choose what type of value to return? (result, formula, hyperlink)

Hyperlink openxml logic

Waiting for Pull Request.
PR 679: Formula Support


 component in  doesn't render anything

I'm trying to call GCanvasView component in FlatList but got nothing. On first screen my old svg renders that works fine and blank spaces that is GCanvasView calls.

But on main screen it works fine and renders canvas perfectly.

Here is my code
const onCanvasCreate = canvas => {
    console.log('redraw', width, height, name)
    const ctx = canvas.getContext('2d')
    ctx.clearRect(0, 0, canvas.width, canvas.height)
    ctx.translate(width/2 + 0.5, height/2 + 0.5)
    ctx.scale(scaleX, scaleY)
    //render function
    reticleSwitcher(ctx, name, themeStyles.theme, mradUp, mradRight, targetDistanceForCalc, targetType)
  }

 return (
    <GCanvasView
      onCanvasCreate={onCanvasCreate}
      style={{width: width, height: height}}
    />
  )

It seems your  is in a , Please try @flyskywhy/react-native-modal-animated instead and tell me the result.

@flyskywhy Thank you now it works! But i found new issue with text.replace

Fixed it already, i was passing number value instead of string.
I have last question. How can i disable built in touch event in  to make work  of parent component?

Use this props
isGestureResponsible={false}

Thank you.


Problem regex

Hello and thank you in advance for your validation system.
I have a problem using validation regex, validation is strange, sometimes it's good and sometimes not. Here is the code I use, I do a mistake?
@validation
  .setGlobalOptions({ debounce: 1500, scope: $scope })
  .addValidator('password', 'regex:password23A:=/(?=(.*[A-Z]){1,})(?=(.*[a-z]){1,})(?=(.*[0-9]){1,})(?!.*\|).{8,20}/g:regex|required')
  .addValidator('passwordConfirm', 'match:user.item.password,mot de passe|required')

Thank you.
Alex

What is that suppose to validate? I don't know what your Regex is suppose to do, so can you give examples...
The way I run the regular expression is to get the pattern string and put it inside regex = new RegExp(pattern, 'i'); which mean in your case that it would do
regex = new RegExp("/(?=(.*[A-Z]){1,})(?=(.*[a-z]){1,})(?=(.*[0-9]){1,})(?!.*\|).{8,20}/g", 'i');
regex.test(value);

I am not sure if your code is valid or not, you can try it in javascript and see what happen.

Thanks,
I try with this code and it's exact
console.log (/^((?=.*\d)|(?=.*\W))(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{8,20}$/.test('password23A'))

but not with this one
regex = new RegExp("/(?=(.*[A-Z]){1,})(?=(.*[a-z]){1,})(?=(.*[0-9]){1,})(?!.*\|).{8,20}/")
console.log regex.test("password23A")

Ok I think that I know, I use the RegExp object as a string argument, first you don't need the / at the beginning and end... and second since it's a string, you need to escape all the / with //, but in your case since you should remove them, I think there is nothing else to espace.

Thank you for the explanation, it's perfect.

Updated the Wiki - Regular Expressions (Regex) for less confusion.
Thanks for the feedback

BTW if you use and like the project, you can click on the Star and make it a favorite. Would be nice to reach a 100 :)

Please note that I completed rewrote the custom regular expression implementation, I didn't like the first approach and decided to rewrite it.
The issue you brought up originally had an influence on how I really wanted it to work and so I decided to rewrite it... So thanks for the previous feedback :)
So please update and use the new version 1.3.35 and see the documentation on the new Wiki - Regular Expression Pattern


rewrite some OnEnemyDamage subscriptions to callbacks

In cases where it's feasible to attach a callback to a specific attack's dmg instead of using an OnEnemyDamage subscription we should opt to use a callback, because OnEnemyDamage subscriptions get executed on every single dmg instance.
Examples: Ganyu C1, Rosaria A1, ...

will work on this after #1126 and #1104 get merged


Problem while displaying the results using Typeahed

The issues forum is NOT for support requests. It is for bugs and feature requests only.
Please read https://github.com/angular-ui/bootstrap/blob/master/CONTRIBUTING.md and search
existing issues (both open and closed) prior to opening any new issue and ensure you follow the instructions therein.
Bug description: If you start the search, and click on a different window (maybe a different tab, or a different application altogether) before it finishes, then it won't give any results. If you start the search and click on a different window once it's done, the results stay. If you click elsewhere in the application, they go away, and won't come back without another search.
Link to minimally-working plunker that reproduces the issue:
Steps to reproduce the issue: While getting the results using the AJAX.

Start the search,
Click on a different window (maybe a different tab, or a different application altogether) before it finishes,
Then it won't give any results.

Version of Angular, UIBS, and Bootstrap
Angular: 1.6
UIBS:
Bootstrap: 3.3.7
angular-ui-bootstrap Version: 2.5.0

Fixed this issue and submitted the Pull request https://github.com/angular-ui/bootstrap/pull/6591


feat: Add Range component

:tada: This issue has been resolved in version 0.5.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Test structure rework

I am currently extreamly unhappy with my current test structure. Ideally testing would be a build target added to CMakeSettings.json. Also need to rework the test runner (test.py) as it does not need to support linux.

Closed by #116.


Ingestion: Profile Add support for Apache Doris

Feature
Add feature issue reference
Describe the task
A clear and concise description of what the bug is.

@chyueyi can you share more details here? Are some metrics computations failing, if so can you share the logs?


Subscribing delay

Hello and thanks for your work!
I have a question: there is some delay between subscribing to a list and actually fetching the entries from the server. I thought at first that subscribing doesn't work at all. Maybe it would be an improvement to immediately update the list on subscribing? Also an option would be nice to specify how often a list should be synced with the server.
It also took me a few moments to find out how to export an existing list. So a general button with a list chooser would come handy.
Best regards :) !

Currently not support export for multiple lists. So what about an export button at the bottom of the list?


Hotfix/issue#149 - corrected content-disposition header parameter for file

Corrects content-disposition header parameter for file streams in portal UI to make downloads working in MS Edge - Red.

This change is

[Current coverage][cc-pull] is 58.39%

Merging [#151][cc-pull] into [master][cc-base-branch] will increase coverage by 0.01%

@@             master       #151   diff @@
==========================================
  Files          1875       1875
  Lines         95891      95898     +7
  Methods           0          0
  Messages          0          0
  Branches      11934      11935     +1
==========================================
+ Hits          55983      56002    +19
+ Misses        36957      36945    -12
  Partials       2951       2951

[][cc-pull]

Powered by Codecov. Last updated by [08f368a...66958ac][cc-compare]
[cc-base-branch]: https://codecov.io/gh/servicecatalog/development/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/servicecatalog/development/compare/08f368a1ac26133178c58a4e00c37ea7c3b9d969...66958ac2b41fa2daf8e3207a482570ca0bb48236
[cc-pull]: https://codecov.io/gh/servicecatalog/development/pull/151?src=pr


Fix non-multipl os-search-val-selector

Fixes a bug there non multiple uses of search value
selector was submitting the value twice due to late
alterations of internal form objects
fixes #5688

Please check also #5689!

fixed. #5689 is irrelevant for that bug


Add use load flag + isLoading status

Summary | Résumé

Updates swr to latest package version
Updates useFlag to useLoadFlag which allows us to check the loading state for the API call

Prior to adding the isLoading variable the pages would briefly show the content as if the flag was off i.e. Registration is closed at this time.
With the updated flag check we can show a spinner prior to getting the status back.

Before
After

https://user-images.githubusercontent.com/62242/211567350-05a3b08a-b012-46e9-ba65-6423dcdadfde.mp4
https://user-images.githubusercontent.com/62242/211567421-3ea5fc06-6e7f-4c93-846a-467c89051c8e.mp4

Test instructions | Instructions pour tester la modification

Visit /signup/register --- watch the loading progress

Unresolved questions / Out of scope | Questions non résolues ou hors sujet
@bryan-robitaille if we're happy with this approached I will update the other files that are using useFlag.  I also opted not to pass the suspense true option for now ... some interesting discussion here: https://github.com/vercel/swr/issues/1906
Pull Request Checklist
Please complete the following items in the checklist before you request a review:

[x] Have you completely tested the functionality of change introduced in this PR? Is the PR solving the problem it's meant to solve within the scope of the related issue?
[x] The PR does not introduce any new issues such as failed tests, console warnings or new bugs.
[ ] If this PR adds a package have you ensured its licensed correctly and does not add additional security issues?
[ ] Is the code clean, readable and maintainable? Is it easy to understand and comprehend.
[ ] Does your code have adequate comprehensible comments? Do new functions have docstrings?
[ ] Have you modified the change log and updated any relevant documentation?
[ ] Is there adequate test coverage? Both unit tests and end-to-end tests where applicable?
[ ] If your PR is touching any UI is it accessible? Have you tested it with a screen reader? Have you tested it with automated testing tools such as axe?

👍 I love the approach.

Will merge this and create a follow-up PR to update the remaining files that useFlag


Display warning message if PYENV_ROOT is not set and abort if installed python is not the desired one

don't want to abort if it's the wrong python, just warn.

PYENV_ROOT is almost always set, from what i can tell. i think you're just a special case :)

But then the wrong python would be used for the venv. That's not the desired behaviour, is it?
Haha well, I was only using pyenv to install different versions of python, then using the paths with virtualenvwrapper, that's why I never needed to set PYENV_ROOT.

take out the sys.exit and i'll merge

@kennethreitz Alright, I removed the sys.exit. :)


Rework formatting and phrasing of README.md

I reworked the formatting and phrasing of README.md. Grammatical and spelling errors were corrected. Any problems generated by the linter markdownline were corrected. I'm happy to make modifications any changes you may be unhappy with.

Just one fix above and them I am happy to merge. Thanks for the contribution


Sketch 3: sublayers of hidden layers export as empty PNGs

Hello,
framer.js import feature is a bomb,
I came accross a little bug however: whenever I import hidden layers with sublayers (subgroups), these subgroups will render as an empty PNG.
See attachments for better explanation.
Layer structure:

Export result:
Hidden layer:

Sublayer:

(empty :)
framer studio 1.5.8.(372)
Sketch 3.0.4 (8156)
Sample sketch: https://dl.dropboxusercontent.com/u/3635046/hidden_sublayer_bug.sketch.zip
Sorry if it has been reported before.
Keep up the great job!

This is happening for me as well. Is this considered a bug that will be resolved?
Environment:

Mac OS X 10.10.4
Framer Studio 1.12.5
Sketch 3.3.2

I just wanted to confirm that I'm getting the same issue as well. Is there any work around for this issue?
Mac OS X 10.10.5 — Framer Studio v54 — Sketch 3.6

This should be fixed with the latest Sketch and Framer, please open a new issue if you encounter any more problems.


Unterminated strings don't provide error recovery

I'm not sure if it's possible in case of Swift, but tree-sitter is often advertised by its error recovery and as one of examples it is shown that unterminated String doesn't break highlighting. That's not the case with Swift, if I leave open String the rest of the file is considered as String.
Would it be possible to handle this case. It should be possible because multiline Strings have its own syntax: """
Xcode handles this case correctly.
Example:
func foo() {
  let myLet = "abcd
  someObj.call()
}

I'm not sure if I understood your comment :D. Is there any chance to fix it?

I'm sure it is possible to fix. My earlier comment is saying that I don't have any pointers on where you might look to start to fix it, though.


Merge master into dev

React Boilerplate
Thank you for contributing! Please take a moment to review our contributing guidelines
to make the process easy and effective for everyone involved.
Please open an issue before embarking on any significant pull request, especially those that
add a new library or change existing tests, otherwise you risk spending a lot of time working
on something that might not end up being merged into the project.
Before opening a pull request, please ensure:

[x] You have followed our contributing guidelines
[x] double-check your branch is based on dev and targets dev
[x] Pull request has tests (we are going for 100% coverage!)
[x] Code is well-commented, linted and follows project conventions
[x] Documentation is updated (if necessary)
[x] Internal code generators and templates are updated (if necessary)
[x] Description explains the issue/use-case resolved and auto-closes related issues

Be kind to code reviewers, please try to keep pull requests as small and focused as possible :)
IMPORTANT: By submitting a patch, you agree to allow the project
owners to license your work under the terms of the MIT License.

Coverage remained the same at 100.0% when pulling 5243bb0155349391634af123d14f5ace37bc91b3 on blling:dev into f5fd9632f8ef72020917ca31dd57ba045a031e54 on react-boilerplate:dev.

Coverage remained the same at 100.0% when pulling 8a7cb6848edd7912d7905a292b17f417197dfc15 on blling:dev into f5fd9632f8ef72020917ca31dd57ba045a031e54 on react-boilerplate:dev.

I want to redo it because of the unporposed change of gotchas.md


Callback proposal

This is a proposal to include callbacks in leptos 5.0.
It is heavily inspired by leptonic, see here
It has 2 main goals:

creating a stable way to design components that need special interactivity given as a prop. Currently, there are multiple approaches to write the same code, a problem framework like Yew don't have, thank's to callbacks.
removing any boxed closure from the perspective of the user: if it works like a function, the user should be able to write a function.

P.S. The failing tests etc. are just because of the examples not having imports and so on. When it's ready I can go in and clean those up as well as the docs.

Yes! This is great. It let me pretty quickly adapt <Show/> to the following "show with optional fallback"
#[component]
pub fn App() -> impl IntoView {
    view! {
        <ShowOptFall when=|| { 5 < 3 } fallback=|_| view! {
"YES"
 }>

"NO"

        </ShowOptFall>
        <ShowOptFall when=|| { 5 < 3 }>

"NO"

        </ShowOptFall>
        <ShowOptFall when=||{ 5 > 3 }>

"YES"

        </ShowOptFall>
    }
}

#[component]
pub fn ShowOptFall<W>(
    /// The components Show wraps
    children: Box<dyn Fn() -> Fragment>,
    /// A closure that returns a bool that determines whether this thing runs
    when: W,
    /// A closure that returns what gets rendered if the when statement is false
    #[prop(optional, into)]
    fallback: Option<ViewCallback<()>>,
) -> impl IntoView
where
    W: Fn() -> bool + 'static,
{
    let memoized_when = create_memo(move |_| when());

    move || match memoized_when.get() {
        true => children().into_view(),
        false => match fallback.as_ref() {
            Some(fallback) => fallback.call(()).into_view(),
            None => ().into_view(),
        },
    }
}

The only (small) drawback here, in my mind, is the need for a unit struct/empty tuple as the argument, so fallback=|_| ... (Unless I've misunderstood something.)
Overall this seems very good to me.

Oh you're right I didn't think about that.
Maybe I could implement a specific From for F: Fn() -> View ?

Ok now I'm happy with the docs.
I agree that the ignored argument in callback = ViewCallback::new(|_| view!{}) could create confusion for the user, but I don't know what to do about it.


Custom Grafana dashboards are not working

Hi,
I tried to add additional/custom grafana dashboards by following the steps mentioned in the READ.me. But it is not working and breaking the existing/out of the node/pod dash boards.
update grafana dashboards: add or change the existing dashboards in assets/grafana/ and execute scripts/generate-dashboards-configmap.sh. Then apply the changes using kubectl apply -f manifests/grafana/grafana-dashboards.cm.yaml.

I am aware of this issue and planning to fix it soon

Hi @csrao10890 solved in #110


Fmovies URL change

Source information
https://fmovies24.to/
Source language
English
Source new URL
https://ww4.fmovies.co/24/
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated all installed extensions.
[X] I have opened WebView and checked that the source URL is not updated yet.
[X] I will fill out all of the requested information in this form.

https://fmoviesz24.net/ also works


Fix preview and video size with satisfying conditions of multiple outputs.

In camera plugin, createCaptureSession is called for multiple outputs.
According to API reference of createCaptureSession, guarantee range of output resolution is decided depending on the level of camera device in case of multiple output.
API reference of createCaptureSession
Currently, preview size and video capture size is decided only depending on StreamConfigurationMap.getOutputSizes(int).
For this reason, the following error occurs on some devices and the camera device can not be used.
W/CameraDevice-JV-0(17996): Stream configuration failed due to: endConfigure:343: Camera 0: Unsupported set of inputs/outputs provided
E/CameraCaptureSession(17996): Session 0: Failed to create capture session; configuration failed

This PR fixes preview size and video capture size to solve the problem.

I signed it!


Add a helper function for http/https requests in src/display/node_stream.js

Currently we repeat virtually the same http/https request code in two different classes in this file, which seems unnecessary and it leads to more code.

I was originally trying to replace them with fetch, but that implies replacing Node.js' stream with ReadableStream and I wasn't familiar enough with the code to do it.

I was originally trying to replace them with fetch, but that implies replacing Node.js' stream with ReadableStream and I wasn't familiar enough with the code to do it.

We're already using the Fetch API when possible in Node.js, please see PR #17706, by utilizing the implementation in https://github.com/mozilla/pdf.js/blob/master/src/display/fetch_stream.js; note also https://github.com/mozilla/pdf.js/pull/17706#issuecomment-1957080590.

Thanks!


[WFRP4e System] Group skill specialization title is missing on drag-n-drop

When you drag-n-drop a group skill like "Lore (Riverways)" into character sheet its name becomes "Lore ()"From: phenomen#1337wfrp4e: 3.0.0wfrp4e-core: 1.0wfrp4e-rnhd: 1.0wfrp4e-starter-set: 1.0

This happens for skills that don't exist in the compendium, Lore (Riverways) isn't actually in the compendium.


Put types into a namespace instead of module

Putting types into a module is not a good idea. As it causes some issues with their consumption from WPF/UWP/Uno

Hi @xperiandri, can you tell me more about this issue? The global types are included as part of a namespace and the query-specific types are in a module inside that same namespace

You cannot instantiate nested types in XAML. For example to use as sample data to display on designer

I see, that makes sense. Let me try to see what I can do

Is it fixed?

Nope, didn't have time for it. Feel free to submit a PR for it 😄 it should be another boolean option. Maybe "nestedModuleTypes"? 🤔 where true is default, false -> generates namespaces instead

Could you point to the line where it happens?

It happens here in the function CodeGen.generateQualifiedModule:
https://github.com/Zaid-Ajaj/Snowflaqe/blob/master/src/Program.fs#L421


Add override_command command to platforms definition

PR Type

Bugfix Pull Request

Closes https://github.com/ansible/molecule/issues/1763.
This adds a override_command key to the platforms definition. It
defaults to true. A user who wants to override the CMD directive from
their Dockerfile.j2 can specify override_command: False to have it
honoured.
This allows 3 use cases to be covered:

Getting the zero configuration default of bash -c ...
Overriding the CMD directive from the command key
Overriding the CMD directive from the Dockerfile.j2 and setting override_command: false

See also:

https://github.com/ansible/molecule/pull/1615
https://github.com/ansible/molecule/issues/1614
https://github.com/ansible/molecule/issues/1441

I've done some manual testing against this as well for the above use cases.
I'd really appreciate review/testing from @fabianvf and @beenje!

This looks good to me! Thanks!

Thank you both! I'll fixup the docs and re-run the CI and merge if no one else has further comment :+1:


Clarify meaning of low risk contact

Currently the app is telling me I have "1 contact" but my risk level is still at "low" & green. At first I thought this was just 1 person I had been in contact with, but it seems that it does actually mean contact with a positively diagnosed person. There's no explanation about this scenario at all however, and except for the "1 contact" text everything else looks exactly the same as before. It's not covered in the FAQ either. I've seen the exact same question in the app reviews on the Play Store.

I had this status as well. My assumption was there was contact, but shorter than 15 minutes and/or further than 1,5m.
Would be nice to have this confirmed, but in any case it should be explained in the app.

@PeterLombaerts there's actually an article on VRT (Dutch) clarifying the different statuses: https://www.vrt.be/vrtnws/nl/2020/10/14/help-mijn-corona-app-kleurt-rood-of-groen-wat-moet-ik-doen/, that seems to confirm your assumption :) Pretty much that explanation that could be added in the app.


Support docker image

I think it would be useful to run SPIFFE Helper as a sidecar of Kubernetes pod to manage SVID.
And I think that the image should be published as one of official images as below:
https://console.cloud.google.com/gcr/images/spiffe-io
Give me feedback. If it is OK, I will create a PR.

Now I don't need this issue. Thank you.


ios notify coerce badge value to int

Home Assistant release with the issue:

0.86.3
Last working Home Assistant release (if known):
Operating environment (Hass.io/Docker/Windows/etc.):

Hass.io
Component/platform:

iOS Notify
Description of problem:
The iOS notify service has the ability to set the badge/icon on the app icon with a push notification.
This configuration must be done via an integer in the data structure of the message. The following example works.
    - service: notify.ios_iphone
      data:
        message: "Set icon to 1"
        data:
          push:
            badge: 1

Creates the following service call.
'call_service', 'data': {'service_data': {'data': {'push': {'badge': 1}}, 'message': 'Set icon to 1'}, 'domain': 'notify', 'service': 'ios_iphone'}}, 'id': 2}
However when using the following data template the badge "digit" json is passed as a string and is ignored by the iOS app or server.
    - service: notify.ios_iphone
      data_template:
        message: "Dynamically set the icon"
        data:
          push:
            badge: '{{states.input_number.alarm_hour.state|int}}'

creates the following service call
'call_service', 'data': {'service_data': {'data': {'push': {'badge': '5'}}, 'message': 'Dynamically set the icon'}, 'domain': 'notify', 'service': 'ios_iphone'}}, 'id': 2}
I believe the fix would be to coerce the data passed in the badge service call into an integer like how light brightness is translated.
https://github.com/home-assistant/home-assistant/blob/4f988182587b8b82fdaf1495f37a024730505860/homeassistant/components/light/__init__.py#L89
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
    - service: notify.ios_iphone
      data_template:
        message: "Dynamically set the icon"
        data:
          push:
            badge: '{{states.input_number.alarm_hour.state|int}}'

Traceback (if applicable):

Additional information:
People that have hit this bug.
https://community.home-assistant.io/t/count-persons-at-home-and-show-on-icon-badge/35327
https://community.home-assistant.io/t/badge-number-updated-dynamically/30304

If possible it would be nice to have the ability to send not only a templated number to the badge (for example, a time to leave sensor) but also to send the badge only, no text like a push message. Updated badge only


PHOENIX-5117 : Return the count of rows scanned in HBase

TODO:

[x] Resolve conflicts in PagingRegionScanner
[ ] Add test cases with delete markers

@palashc Another test I want you to write is where there are delete markers in the beginning of the table and then you run a query like this SELECT * FROM <TABLE> LIMIT 1. It should skip the delete markers till it finds the first valid row.  You could run this query in a loop where in every iteration you could delete more rows which have to be skipped in the subsequent SELECT query.

Latest test report: https://ci-hadoop.apache.org/job/Phoenix/job/Phoenix-PreCommit-GitHub-PR/job/PR-1936/29/testReport/


FluxDispatchOn interrupts thread before calling onComplete or onError

When using .dispatchOn Flux calls .interrupt() on the current thread (via scheduler.accept(null)) before it calls the onError or onComplete.
Specifically, this caused issues using the ElasticSearch client as it throws an exception if the current thread is an interrupted state when you make a blocking API call.
For example:
Fluxion.from(documents)
    .dispatchOn(processorsExecutorService)
    .buffer(batchSize)
    .onNext( requests -> {
        BulkRequestBuilder builder = client.prepareBulk();
        requests.forEach(builder::add);
        builder.get() // Throws interrupted exception on last batch
    })
    .subscribe()

Wrong repo...

Moved to reactor/reactor-core.


[FEATURE REQUEST]: Introduce Partial Indexes to index subset of data based on a filter condition

Introduce Partial Indexes to index subset of data based on a filter condition
As a  user I want to create index on a filtered dataframe with a condition
This filter can be used on read query as a more selective index for access patterns.
example:
hs.createIndex(df,IndexConfig("index1", indexedColumns = Seq("id"), condition: "id > 10")

@rapoth I think it would be an interesting feature to implement. WDYT?

@clee704 I agree this is an interesting feature. I was thinking we could do this as part of #186 since the latter is much more general. What do you think?

I think a partial index or filtered index is a different thing, because materialization is not required for them. But as we only have covering indexes for now, there is little difference indeed.


Revert updating to<EMAIL_ADDRESS>for v0.41 branch

Description
The purpose of this PR is to revert back to using the old crypto library for v0.41.* versions, so that downstream dependencies can keep using the sdk, without having to migrate to the new crypto library.
More details can be found on the discussion here: https://discord.com/channels/613813861610684416/1108968095982293002/1128441325960843305
This reverts commit 26fbdaba3bb73f5a1d9ac143656d124654fdd57b for the v0.41 branch. Thus, all future releases from 0.41 branch will use the old crypto library.
The master branch will continue to use the new crypto library at onflow/crypto. Any releases from master branch can use versioning 0.42.*, and upwards.

For contributor use:

[ ] Targeted PR against master branch
[x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[x] Code follows the standards mentioned here.
[x] Updated relevant documentation
[x] Re-reviewed Files changed in the Github PR explorer
[x] Added appropriate labels

Codecov Report

Merging #425 (aba1292) into v0.41 (aba1292) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head aba1292 differs from pull request most recent head 6c18d91. Consider uploading reports for the commit 6c18d91 to get more accurate results

@@           Coverage Diff           @@
##            v0.41     #425   +/-   ##
=======================================
  Coverage   62.30%   62.30%
=======================================
  Files          24       24
  Lines        2966     2966
=======================================
  Hits         1848     1848
  Misses        994      994
  Partials      124      124

Flag
Coverage Δ

unittests
62.30% <0.00%> (ø)

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