Persist alert 'keep_firing_for' state across restarts

Proposal
Currently if Prometheus restarts, we lose the 'keep_firing_for' state for firing alerts. This is a gap in the feature as alerts that should keep firing are prematurely resolved when Prometheus restarts (deployment or OOM).
It'd be good to persist this state in some way, so that alerts don't resolve before the keep firing duration/ stabilization delay expires.
What alert information needs to be persisted?

state
labels
annotations
activeAt
keepFiringSince
value

The problem described above can be reproduced by:

creating an alerting rule with keep_firing_for defined
Restart server when alert expression is resolved and keep_firing_for duration is being used
Alert will be resolved when Prometheus restarts since the expression was resolved prior to the restart and the rule query no longer produces a result.

Example:
Alerting rule test is firing with KeepFiringSince timestamp set implying that the keep_firing_for duration is being used.
{
    "status": "success",
    "data": {
        "groups": [{
            "name": "recording",
            "file": "/etc/prometheus/rules/kodkxfqmyiipgsa.yml",
            "rules": [{
                "name": "recording",
                "query": "time() % 3600",
                "labels": {
                    "severity": "warning"
                },
                "health": "ok",
                "evaluationTime": 0.000487083,
                "lastEvaluation": "2024-04-18T20:22:49.82698325Z",
                "type": "recording"
            }],
            "interval": 15,
            "limit": 0,
            "evaluationTime": 0.000498208,
            "lastEvaluation": "2024-04-18T20:22:49.826974708Z"
        }, {
            "name": "test",
            "file": "/etc/prometheus/rules/rules2.yaml",
            "rules": [{
                "state": "firing",
                "name": "Alert",
                "query": "absent(recording)",
                "duration": 0,
                "keepFiringFor": 3600,
                "labels": {
                    "event": "recording",
                    "severity": "major"
                },
                "annotations": {
                    "description": "absent recording from from prometheus",
                    "summary": "absent recording from prometheus"
                },
                "alerts": [{
                    "labels": {
                        "alertname": "Alert",
                        "event": "recording",
                        "severity": "major"
                    },
                    "annotations": {
                        "description": "absent recording from from prometheus",
                        "summary": "absent recording from prometheus"
                    },
                    "state": "firing",
                    "activeAt": "2024-04-18T20:19:20.052884355Z",
                    "keepFiringSince": "2024-04-18T20:22:20.052884355Z",
                    "value": "1e+00"
                }],
                "health": "ok",
                "evaluationTime": 0.000622041,
                "lastEvaluation": "2024-04-18T20:22:54.31640421Z",
                "type": "alerting"
            }],
            "interval": 15,
            "limit": 0,
            "evaluationTime": 0.000654333,
            "lastEvaluation": "2024-04-18T20:22:54.316376794Z"
        }]
    }
}

After restart:
Alerting rule test no longer firing, even though lastEvaluation < KeepFiringSince + keep_firing_for duration
{
    "status": "success",
    "data": {
        "groups": [{
            "name": "recording",
            "file": "/etc/prometheus/rules/kodkxfqmyiipgsa.yml",
            "rules": [{
                "name": "recording",
                "query": "time() % 3600",
                "labels": {
                    "severity": "warning"
                },
                "health": "ok",
                "evaluationTime": 0.004894042,
                "lastEvaluation": "2024-04-18T20:25:19.825592167Z",
                "type": "recording"
            }],
            "interval": 15,
            "limit": 0,
            "evaluationTime": 0.008571708,
            "lastEvaluation": "2024-04-18T20:25:19.821916792Z"
        }, {
            "name": "test",
            "file": "/etc/prometheus/rules/rules2.yaml",
            "rules": [{
                "state": "inactive",
                "name": "Alert",
                "query": "absent(recording)",
                "duration": 0,
                "keepFiringFor": 3600,
                "labels": {
                    "event": "recording",
                    "severity": "major"
                },
                "annotations": {
                    "description": "absent recording from from prometheus",
                    "summary": "absent recording from prometheus"
                },
                "alerts": [],
                "health": "ok",
                "evaluationTime": 0.000352792,
                "lastEvaluation": "2024-04-18T20:25:20.060370417Z",
                "type": "alerting"
            }],
            "interval": 15,
            "limit": 0,
            "evaluationTime": 0.000387791,
            "lastEvaluation": "2024-04-18T20:25:20.060339Z"
        }]
    }
}

Expected behavior: After server restarts, test Alerting rule should keep firing until the duration expires.

One thing I thinking on is annotation: keep_firing_for: x just to inform reciever that this alert has it set. It's could be useful for information purpose, for now I using extra label keep_firing_for which I set on alerts additionally, but as said such information can be part of annontations

@mustafain117 you not considering running Prometheus and Alertmanager in HA mode? This can be easily achievable and would not require any special "magic", you just need to be sure that Prometheus working always.

How do you handle the scenario where all replicas/instances restart? for e.g when there is a deployment.

@mustafain117 you not considering running Prometheus and Alertmanager in HA mode? This can be easily achievable and would not require any special "magic", you just need to be sure that Prometheus working always.

@dragoangel How do you handle the scenario where all replicas/instances restart? for e.g when there is a deployment.

Healthcheck should pass after service is fully loaded, but maybe you are right about the rollout restart. Still I'm not sure if this is so big issue. I also not sure if that could be fixed easily with current design

Hello,
I agree that keep firing for should be kept across restarts. I would accept a pull request addressing this.

@roidelapluie Can you please take a look at this draft PR: #14018

Hello,
Opened another PR based on previous feedback. Please take a look, happy to address any concerns or feedback.


cmd/go: allow 'go list' to accept '-u' without '-m'

go list with the -f flag can print a lot of information about the module associated with a package.
Unfortunately, we don't populate the Module.Update field unless the -u flag is set, and the -u flag can only be set today if the -m flag is also set:
example.com$ go version
go version devel +ba9e1088 Thu Aug 6 19:17:13 2020 +0000 linux/amd64

example.com$ go list -u -f '{{with .Module}}{{with .Update}}{{.}}{{end}}{{end}}' ./... | sort -u
go list -u can only be used with -m

We should investigate whether it is feasible to allow the -u flag without -m. That would probably require a hook to instruct the package loader to compute upgrade information.
CC @jayconrod @matloob @komuw

Huh, I thought this worked already. Guess not.
CL 228382 adds the go list -retracted flag, and it gets us part of the way there. When -retracted is given without -m, it loads retractions for each module providing packages named on the command line. That code could be extended to work with either -retracted or -u.


Drectangle equality

Addresses #65. Simply added the (self == self) Macro syntax and add equality operators to drectangle in the main dlib source - copied from rectangle.
Also, sneak in two other changes:

Make shape_predictor_training_options serializable and printable.
Add __version__ attribute to the dlib Python module to be compatible with PEP 396. Only issue is that the string is hard coded - maybe someone can think of a better way to read it from the CMakelists.txt at compile time (@davisking)

Sweet, thanks another patch.  I also updated it a little so the version information comes from CMake.


Numerous Improvements and API changes for Parser v2

Changes

Supports Boolean types
Supports join blocks
API changes to TemplateMarkTransformer to support Cicero parse/draft

Coverage decreased (-0.004%) to 90.87% when pulling 458ac90480e32508f381ed1f8daca34566d3a9f0 on parserv2 into 5f2a48e965ed7567c1d3c423ad836a2af6102f53 on master.


Cannot parse old logs with different date format

It's impossible to parse old logs which have a different date format to the current log.

Click "Scan old logs..."
Error "Set date format in settings!"
Set date in settings
Tracker restarts after saving settings
Tracker automatically sets date to current log format
Return to 1.

I assume this is what is happening. Maybe step 3. is just failing causing the tracker to crash which returns the date format to the previous value?
Either way, something is causing the tracker to restart and prevents me from parsing the old log file.

Unfortunately, this won't be fixed. Logs with obsolete date formats are not supported. We are thinking to get rid of old log scanning at all, because it never works stable and only cause troubles


DRY principle enforced to allow for greater code flexibility

To be precise, using a map to store all available commands and their string descriptions removes the necessity for a redundant switch statement that has to be manually updated with every new command. As a result, the run function is now more clear and concise.

@sharpvik Thanks for improving the code! That looks great to me 👍

@sharpvik Sorry for reverting your PR. I realize the missing point after merge it. Please fix it and reopen.

Ok. I'll do that. I'm in the process of writing some more code too :) I really liked your project

I can't open another pull request now because it says that you are up to date with everything somehow (even though you reverted the changes). I'm making some other changes atm so just wait for me to complete those and then we can merge back.

@sharpvik OK. Thanks for your contribution again!


Can't helm-maven-plugin:6.0.0:dependency-build on multiple helm projects

Is this a request for help?:

Is this a BUG REPORT or FEATURE REQUEST? (choose one):

Environment (plugin version, maven version, OS, ...):
helm-maven-plugin: 6.0.0
maven : 3.5.4
Linux
helm-maven-plugin configurarion  as below,

${chartDir}
${chartVersion}

helm-repo
${helm.upload.repo}
ARTIFACTORY

helm-repo
${helm.release.arm.repo}

${helm.download.url}
${project.basedir}/target/home/helm
${project.build.directory}/home/helm/repository
${project.build.directory}/helm/package
true
false

What happened:
we have several helm modules in one project, e.g. A and B, and B depend on B,
cmd: mvn clean package , then A bulid successfully
but when run to package B, we met below error,
[ERROR] Error: no cached repository for helm-repo found. (try 'helm repo update'): open ~/main-cache/B/target/home/helm/repository/helm-repo-index.yaml: no such file or directory
Seems after run A, and helm init add helm-repo in repo list, then run B, it will not set helm home in B/target. Before we use 5.5, it has no such issue.
local cache should be not used, as we define the repository cach in plugin configuration
What you expected to happen:
we shoud ignore the local repo, and generate helm home in the new path.
How to reproduce it (as minimally and precisely as possible):
add two modules in the same project, and run mvn package
Anything else we need to know:

Seems it didn't create the new home directory for following another helm module, which cause the --repository-cache not created , then config file not found

Seems it detect repo exist, then it will skip to config repository cache dir, thus, it failed for the following another helm module package.

we should always execute add-repo, as the repo url maybe  vary for different helm module

hi ,
I add ${project.build.directory}/home/helm/repository/repositories.yaml, it works


How to use flasgger with many blueprints?

I'm new to python and I feel sorry for this is a stupid question.
I have many blueprints in my project.
file directories in my project:
app/view/       # here are many flask restful apis
for eg:
books.py
from flask_restful import Api,Resource
from flask import Flask,Blueprint

book_blueprint = Blueprint("book", __name__)
api = Api(book_blueprint)
books = [
    "mysql","java","js"
]
class Book(Resource):
    def get(self,book_id):
        try:
            return books[book_id]
        except IndexError,e:
            print e.message
            return '#book not exist!#'

api.add_resource(Book,'/books/<int:book_id>')

tree.py
# coding:utf-8
from flask import Blueprint
tree_mold_blueprint = Blueprint("tree_api", __name__)

@tree_mold_blueprint.route("/leaves")
def leaves():
    return "This tree has leaves"

and I have a 'manager.py' to run this project ,which exists at : app/
manager.py
from flask import Flask

from app.view.tree import tree_mold_blueprint
from app.view.tom import tom_blueprint
from app.view.user_info import user_blueprint
from app.view.books import book_blueprint
from flasgger import Swagger
app = Flask(__name__)
app.register_blueprint(tree_mold_blueprint, url_prefix='/api')
app.register_blueprint(tom_blueprint, url_prefix='/api')
app.register_blueprint(user_blueprint, url_prefix='/api')
app.register_blueprint(book_blueprint, url_prefix='/api')

swg = Swagger(app)    # I try to use flasgger here

if __name__ == '__main__':
    app.run(host='<IP_ADDRESS>' ,port = 27016 , debug= 'true' )

There is no API at localhost:27016/apidocs ,but flasgger page.
So how can I use flasgger to show all my APIs?
Thanks!

Same issue here. Haven't figured it out yet...

I am also facing same issue, trying to work with multiple blueprints. It seems flasgger doesn't support this.
@rochacbruno Can you please comment on the same

Well it is supported. You have to provide a swagger documentation for you endpoints. This documentations can be placed directly on the endpoint or separated in a YAML file.  Like this:
manager.py: I've just used the book_blueprint for demonstration purposes.
from flask import Flask

from tree import tree_mold_blueprint
from books import book_blueprint
from flasgger import Swagger
app = Flask(__name__)
app.register_blueprint(book_blueprint, url_prefix='/api')

swg = Swagger(app)    # I try to use flasgger here

if __name__ == '__main__':
    app.run(host='<IP_ADDRESS>' ,port = 27016 , debug= 'true' )

books.py: Then i added 2 lines of code to your books.py script:

from flasgger import swag_from
@swag_from('books.yml')

from flask_restful import Api,Resource
from flask import Flask,Blueprint
from flasgger import swag_from

book_blueprint = Blueprint("book", __name__)
api = Api(book_blueprint)
books = [
    "mysql","java","js"
]
class Book(Resource):
    @swag_from('books.yml')
    def get(self,book_id):
        try:
            return books[book_id]
        except IndexError as e:
            print(e)
            return '#book not exist!#'

api.add_resource(Book,'/books/<int:book_id>')

books.yml: Now you have to write your swagger documentation. In this example i'm using Swagger 2.0 because i'm not sure if 3.0 is currently supported.
Get a Book by it's ID
---
tags:
  - book
produces:
  - application/json
  - application/xml
parameters:
  - in: path
    name: book_id
    description: ID of the Book to get
    type: integer
    required: true
responses:
  200:
    description: OK
    schema:
      type: string

If you now start your application and visit http://<IP_ADDRESS>:27016/apidocs/ you will see the following generated browser page:

One of my private python 3 projects relies on multiple blueprints. It would be a problem if flasgger does not support this feature, so i'm really happy about that. I don't tested it with Python 2 though.

Nice, we should document it! I would appreciate some help to start writing the /docs to publish on readthedocs.

@rochacbruno @blue995
I have one more query and I am not sure whether this is answered earlier.
Is it possible to change the default spec_route (/apidocs) to like /someprojectname/swagger
example
http://localhost:5000/apidocs/
to
http://localhost:5000/projectname/swagger
thanks in advance

I did it, by overriding the DEFAULT_CONFIG specs_route. Thanks

thanks blue995, it works

Hello,
I also wanted to add one more query that is it possible to have multiple swagger docs per blue print? I have a requirement that I have APIs for multiple third parties and for each third party, there is a separate blue print.
I need to share swagger doc for each third party specific to the third party. So, I need multiple swagger docs and multiple urls for them like /api/{third-party-name}/apidocs.
How this can be possible with flasgger?


What's the diffrerence between Meteor and MeteorSingleton? How to increase lifetime of connection?

What's the diffrerence between Meteor and MeteorSingleton? For example:
If i will initialize variable like this:
Meteor mMeteor = new MeteorSingleton.createInstance(this,"some_web_socket");
Is it right implementation? If not what case will be right?

Thanks for your question!
Singleton access should be well-documented in the README:
https://github.com/delight-im/Android-DDP/blob/76bde3f493a5fcf8ac0c4ef79d99911eca30a9e3/README.md#usage
If you don't know what the Singleton pattern is for, you may not really need it, perhaps.
Usually, the normal usage is what you need. But when you need to access the same Meteor instance from multiple Activity instances, for example, you may find the singleton useful.
If using the singleton, you call createInstance(...) only once. Afterwards, you have to call getInstance() or just use the instance that you assigned to your variable (mMeteor).
Does that help?


Remove unused functions in core.py

What does this PR do?
It removes unused functions in core.py. I could not find any usage of them and these are probably old remnants of previous code, but if these are support functions and are used, just let me know and I'll close the PR.
Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Not compatible with ASP.Net Core 3.0

As you probably already know, the current stable version is not usable together with ASP.Net Core 3.0.
I'm talking about this error which appeared after a (necessary) update to 3.0 because of the deprecated empty constructor for XmlSerializerInputFormatter:
Unhandled exception. System.MissingMethodException: Method not found: 'Void Microsoft.AspNetCore.Mvc.Formatters.XmlSerializerInputFormatter..ctor()'.
   at FubarDev.WebDavServer.AspNetCore.Formatters.WebDavXmlSerializerInputFormatter..ctor()
   at FubarDev.WebDavServer.AspNetCore.Formatters.Internal.WebDavXmlSerializerMvcOptionsSetup.Configure(MvcOptions options)
   at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
   at Microsoft.Extensions.Options.OptionsManager`1.<>c__DisplayClass5_0.<Get>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at Microsoft.Extensions.Options.OptionsCache`1.GetOrAdd(String name, Func`1 createOptions)
   at Microsoft.Extensions.Options.OptionsManager`1.Get(String name)
   at Microsoft.Extensions.Options.OptionsManager`1.get_Value()
   at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.<>c.<AddMvcCoreServices>b__5_0(IServiceProvider s)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitDisposeCache(ServiceCallSite transientCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitDisposeCache(ServiceCallSite transientCallSite, RuntimeResolverContext context)
...

You have already fixed this issue in your release/2.0 branch, which is great:
https://github.com/FubarDevelopment/WebDavServer/blob/release/2.0/src/FubarDev.WebDavServer.AspNetCore/Formatters/WebDavXmlSerializerInputFormatter.cs#L20
But I'm still wondering how to proceed with using this library with 3.0 now. Is your release/2.0 branch stable enough for production usage? Are there any NuGet packages available for it?
In case the release/2.0 branch shouldn't be used yet: What do you think about backporting the most essential fixes (like the above mentioned) to master and releasing them? This would prevent any application which uses this library from breaking after the 3.0 update.

The 2.0 branch should be stable. A backport would be difficult as it would be a breaking change. There aren't much breaking changes (if any at all). It is mostly a feature update. I have to take a look at the current state of the branch and will give you a definitive answer soon.

Awesome. Could you consider publishing a prerelease package like 2.0-alpha1 for now please? This would be a huge help. :smile:

Wow, nice work! :smile:
Just scrolled through that...

@MarcusWichelmann You may try the following NuGet feed:
https://pkgs.dev.azure.com/fubar-development/webdav-server/_packaging/webdav-server/nuget/v3/index.json
It's not stable yet, but I'm working on it.

Thanks, that's looking good.
But for now I need to stay in my controller-url-fix branch until it gets merged.

Okay, that was fast. I'll switch. :joy:

Works like a charm :+1:

Please upgrade to 2.0.0-beta.81. It handles file names like test%201.txt too. Please close this issue when all your path-related issues are fixed too.

@fubar-coder Cool. It's getting better now. I can create a directory with %20 in the name now and can list its contents, but when copying a file into it I get a 409 Conflict with following message:
dbug: FubarDev.WebDavServer.Handlers.Impl.CopyHandler[0]
      => ConnectionId:0HLQPF58BVJQC => RequestPath:/Mein%20Benutzerordner/some-file.pdf RequestId:0HLQPF58BVJQC:0000000A, SpanId:|f060ac58-4b511e94944b4713., TraceId:f060ac58-4b511e94944b4713, ParentId: => Magis.School.Server.Controllers.WebDavController.CopyAsync (Magis.School.Server)
      Mein%20Benutzerordner/Test%2520keks/some-file.pdf: The target is missing with the following path parts: Mein%20Benutzerordner, Test%2520keks, some-file.pdf

Ok, I'll take a look

Version 2.0.0-beta.91 is released which fixes the problems around copying/moving to/from directories with spaces.

Seems to work fine, at least I cannot get it to break anymore. I tried with my web client as well as gvfs. :+1:


Fhirlibraryprocessor

Added the library loader functionality with a unit test. Also added some sample test files for the unit test.

Do npm run prettier:fix in the terminal to fix the formatting error:

This is a pretty nitpicky nitpick. But typically in javascript, any normal variable should be a camelCase rather than snake_case. It's the opposite in something like Python haha. I'm specifically looking at variables in your libraryLoader.test.ts file.

Looks good after my small comment is resolved + prettier errors are fixed

resolved the comments

added url functionality

moved it into the src/ folder


Fix problem with keyboard connection status

When keyboard is connected and keystrokes sent before the detection routine, keyboard connection message is not sent

Fixed in latest commit


shuf: improve performance

This PR improves the performance of shuf by replacing the current implementation of splitting input by a given separator with a version using the memchr crate. This crate was not used in shuf before, but it is already used in e.g. sort. Considering the benchmark results (see below), adding a new dependency to shuf is justified.
Benchmarks
Description
Generate input data (50,000,000 lines, 3.6 GiB):
cat /dev/random | base64 | fold | head -n 50000000 > input.txt

Run shuf with hyperfine:
hyperfine -w 3 "target/release/coreutils shuf ../testdata/input.txt > /dev/null"

Results
The input data was stored in tmpfs to avoid distortions from IO.

Version
Time

Old version
6.982 s ±  0.033 s

Improved version
5.234 s ±  0.046 s

GNU shuf (v8.32)
9.810 s ±  0.019 s

The improved version is 25% faster than the previous version. Compared to the GNU implementation, shuf now is almost twice as fast.

Cool stuff. Could you please create a src/uu/shuf/BENCHMARKING.md  file ?
(see src/uu/*/BENCHMARKING.md  for example)

Some more benchmarks:
$ wget -O shakespeare.txt https://www.gutenberg.org/files/100/100-0.txt
$ hyperfine   -w 3 "./target/release/coreutils shuf shakespeare.txt > /dev/null" "shuf shakespeare.txt > /dev/null"
Benchmark 1: ./target/release/coreutils shuf shakespeare.txt > /dev/null
  Time (mean ± σ):      22.1 ms ±   4.6 ms    [User: 15.3 ms, System: 6.8 ms]
  Range (min … max):    10.7 ms …  28.4 ms    114 runs

Benchmark 2: shuf shakespeare.txt > /dev/null
  Time (mean ± σ):      27.8 ms ±   7.4 ms    [User: 22.1 ms, System: 5.7 ms]
  Range (min … max):    14.5 ms …  42.1 ms    72 runs

Summary
  './target/release/coreutils shuf shakespeare.txt > /dev/null' ran
    1.26 ± 0.42 times faster than 'shuf shakespeare.txt > /dev/null'

=> faster here
But slower with:
$ wget https://www.gutenberg.org/files/30613/30613-0.txt -O odyssey.txt
$ hyperfine --shell=none  -w 3 "./target/release/coreutils shuf odyssey.txt " "shuf odyssey.txt "
Benchmark 1: ./target/release/coreutils shuf odyssey.txt
  Time (mean ± σ):       3.4 ms ±   0.3 ms    [User: 1.6 ms, System: 1.6 ms]
  Range (min … max):     2.0 ms …   3.8 ms    866 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet PC without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: shuf odyssey.txt
  Time (mean ± σ):       2.2 ms ±   0.3 ms    [User: 1.5 ms, System: 0.5 ms]
  Range (min … max):     1.1 ms …   3.4 ms    1209 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet PC without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  'shuf odyssey.txt ' ran
    1.53 ± 0.24 times faster than './target/release/coreutils shuf odyssey.txt '

`bash
❯ hyperfine --shell=none  -w 3 "./target/release/coreutils shuf /tmp/shakespeare.txt " "shuf /tmp/shakespeare.txt "
Benchmark 1: ./target/release/coreutils shuf /tmp/shakespeare.txt
Time (mean ± σ):      15.9 ms ±   5.5 ms    [User: 11.3 ms, System: 4.4 ms]
Range (min … max):    10.1 ms …  24.4 ms    281 runs
Benchmark 2: shuf /tmp/shakespeare.txt
Time (mean ± σ):      21.8 ms ±   6.7 ms    [User: 17.2 ms, System: 4.4 ms]
Range (min … max):    14.8 ms …  36.1 ms    193 runs
Summary
'./target/release/coreutils shuf /tmp/shakespeare.txt ' ran
1.37 ± 0.64 times faster than 'shuf /tmp/shakespeare.txt '
❯ hyperfine --shell=none  -w 3 "./target/release/coreutils shuf /tmp/odyssey.txt " "shuf /tmp/odyssey.txt "
Benchmark 1: ./target/release/coreutils shuf /tmp/odyssey.txt
Time (mean ± σ):       1.4 ms ±   0.5 ms    [User: 0.9 ms, System: 0.4 ms]
Range (min … max):     0.8 ms …   2.5 ms    1527 runs
Benchmark 2: shuf /tmp/odyssey.txt
Time (mean ± σ):       1.4 ms ±   0.5 ms    [User: 0.9 ms, System: 0.4 ms]
Range (min … max):     0.8 ms …   2.4 ms    1729 runs
Summary
'shuf /tmp/odyssey.txt ' ran
1.02 ± 0.53 times faster than './target/release/coreutils shuf /tmp/odyssey.txt '
`
@sylvestre nice I/O benchmark of yours there ;)
You should put the file in tmpfs to negate this issue (in /tmp/ in my case)

Cool :)
Just create the benchmark doc and it can land!

Cool :) Just create the benchmark doc and it can land!

I'm not the PR guy X)
But I'll try :)

oups, sorry :)
Please let @Garfield96 do it :)

oups, sorry :) Please let @Garfield96 do it :)

On a side note, please look at the following markdown syntax for CLI output

```console
$ whoami
anastygnome
<3x ` to END>

yields
$ whoami
anastygnome

Thanks, @sylvestre, and @anastygnome for doing additional benchmarks. I also tested https://www.gutenberg.org/files/30613/30613-0.txt and I can confirm that the GNU version in some runs showed a slightly better performance. Since this input is very small, applying the shuffling does not dominate the execution time. Instead, loading the binary becomes the bottleneck. While the combined build of coreutils always produced worse results on my system (1.2ms compared to 0.9ms for GNU shuf), building shuf as a standalone binary solved the problem (runtimes were equal).
I extended the description in BENCHMARKING.md, hence this PR should be complete.


Synchronization Tool

Implement the synchronisation tool:

Click the icon to activate the tool:

icon graphically shows to be active
mouse turns into a small synchronisation icon with an even smaller plus sign (+) at the lower right corner

Click as often as you need into the plan editor field:

creates a synchronisation tool with member variables set to some default each time

Click the icon to deactivate the tool:

icon gets deactivated
mouse turns back to normal

works


User is NOT able to select persistent volume while deploying backup restore chart

On master-head 0ccce45017

Navigate to dashboard --> Deploy backup restore chart
Select Use an existing pv Storage location as the default
User is NOT able to select persistent volume from the dropdown. The input field is blank after you select from dropdown. And the backup restore operator fails to deploy

On master-head - commit id: 3950b8eabe

Navigate to dashboard --> Deploy backup restore chart
Select Use an existing pv Storage location as the default
User is able to select persistent volume from the dropdown and deploy the app
Create backup
Backup type PV is created.


Using zcl_excel_writer_2007 more than once causes an abend

Greetings,
this code will abend when writing out the 2nd excel file:
FORM update_cache USING
                    p_excel1 TYPE REF TO zcl_excel
                    p_excel2 TYPE REF TO zcl_excel
                  CHANGING
                    p_cache TYPE tytt_excel_cache.

  DATA: wa_cache TYPE ty_excel_cache.
  DATA: cl_writer   TYPE REF TO zif_excel_writer.

  wa_cache-cc = p_cc.
  CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007.
  wa_cache-file1 = cl_writer->write_file( p_excel1 ).
  wa_cache-file2 = cl_writer->write_file( p_excel2 ). "<-- This will abend

  APPEND wa_cache TO p_cache.

ENDFORM.

Abend info:
Short Text
    Error while inserting or changing rows in a sorted table

LOOP AT lt_cell_data ASSIGNING <fs_sheet_content> where data_type = 's'.
-    lv_sytabix = sy-tabix - 1.
  lv_sytabix = lv_count.
  MOVE lv_sytabix                    TO ls_shared_string-string_no.
  MOVE <fs_sheet_content>-cell_value TO ls_shared_string-string_value.
  MOVE <fs_sheet_content>-data_type TO ls_shared_string-string_type.
  APPEND ls_shared_string TO shared_strings.
  add 1 to lv_count.
ENDLOOP.

I guess that in my case sheet1 and sheet2 share some common strings, and this code does an append without checking for pre-existing data. You should either clear first ( is what I would do) , or do a check first. I would clear first since you don't want o write out shared strings from prior workbooks.

Thank you for raising this issue.
A possible fix would be to reinitialize all the attributes of the writer each time it is used. Help welcome.
The workaround is to reinstantiate the writer each time an Excel file is to be rendered:
CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007.
wa_cache-file1 = cl_writer->write_file( p_excel1 ).
CREATE OBJECT cl_writer TYPE zcl_excel_writer_2007. "<-- workaround
wa_cache-file2 = cl_writer->write_file( p_excel2 ). "<-- This will NOT abend

Wow, 5 years ;)
If you need help with the clearing (understandable), you could just add a flag 'ran_already', and if the writer gets used a second time, throw a catchable error. That is way sexier than an abend ;)

I couldn't reproduce the issue, so I looked a little bit further and I saw that it was solved 2 years ago by #654, so I think it's more simple to close. Please reopen if you don't agree. Thank you.


Schema could constrain the valid range of latitude and longitude

It could also constrain the allowed location_datum, and for now it could be required to be 4236

It looks like we may want to store location as a "geopoint" ala https://rnfirebase.io/reference/firestore/geopoint.
We could also convert lat/long into a geopoint as part of the elastic search ingestion process.

Here are all the options for geo_points from ES: https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html

I assume you mean storing a GeoPoint when indexing with ES, not storing it as such in Weed COCO?


Added to_file option

Added an option to specify recipients with a file, very useful if you want to send an email to the commit author.

@mdomke please see the changes.

Hi, is there an eta when this will go in?

@mrmcmuffinz feel free to use this image:
  - name: email-forked
    type: docker-image
    source:
      repository: incaller/concourse-email-resource

Sorry, I lost track of this PR. I'll merge it tonight and provide an updated docker image. I'm sorry for the inconvenience.

The updated image is now available on dockerhub.

@mdomke it's not a problem, I was just wondering when the feature was going to come in. Either way thanks to both of you( @hryamzik & @mdomke  )for providing the resource.


Use excalidraw for overlay

Instead of reinventing the wheel for text/image/rect overlay, embed excalidraw! The way to write video files is to take a canvas a source, so we can use excalidraw renderer for it.

Does excalidraw (the repo) expose any primitives or libraries to handle drawing text/image etc? I think tldraw does. I could be wrong.

@Fausto95 had a prototype integrating excalidraw. In practice what we want is to render the entire scene where we control the scene json. Doesn't need any special sauce.

Yea, excalidraw ships a standalone packages, so it's doable.
I will probably create a branch with my experiments.


Fix for missing ACK on PRACK on incoming call (incoming calls were terminating after 30 seconds if rel100 were used)

If sipjs were used with rel100, then on incoming calls sipjs were not answering with ACK on PRACK (which is required by RFC). This caused asterisk to terminate call after ~30 seconds due to missing ACK.

Hi @roginvs,
Can you provide a gist of the broken signaling? The RFC is very explicit here, you are right, but I'm more curious how you are ending up in this case. If you don't set the rel100 value on your UA, or messages come out of order in a potentially troublesome way, this may be possible, but if SIP.js is expecting a PRACK, then your PR should not be necessary. In other words, I believe the issue may be deeper than your fix, or a potential configuration error.
Thanks,
James

chrome-log.txt
This is chrome log. As we can see, on original version sipjs ignores PRACK and continues to resend same Session Progress.

The problem stems from: https://github.com/onsip/SIP.js/blob/master/src/Session.js#L1035
I think the reasoning was that we didn't want to force early negotiation, but if you were to switch your 100rel to supported instead of required you would be forcing early negotiation anyway. I think the conditional needs to go away, and the status set to WAITING_FOR_ANSWER only done if 100rel doesn't occur (this should probably move to the conditional that checks if do100rel should be called).
I dont think this will cause further issues, but this is the more correct way to fix this problem, and will also do the 183 for you (assuming you were manually making that call happen).

We are using 100rel because without REQUIRED rel100 sipjs does not play media at early media stage on outgoing calls (this is quite a issue for us).
I had not understand how exactly do you want me, should I close this pull request?

There is a clear issue, I'm just saying the solution should be handled differently. Whenever we receive a PRACK, we should be in WAITING_FOR_PRACK, so instead of allowing the OK to be sent in more situations (such as WAITING_FOR_ANSWER, I'd rather get your situation to be in WAITING_FOR_PRACK state. My explanation above outlined how that would be doable.

Could it be (in theory) that we will receive OK before PRACK, in WAITING_FOR_PRACK state? I suppose on UDP this have non-zero probability, for example it wss server will be a some sort of webrtc->udp sip proxy.


where is the pre-built bartholomew.wasm located

Potentially silly question but where is the pre-built bartholomew.wasm located?

It should be in the target/wasm32-wasi/release directory (the default one for Rust wasm32-wasi projects.

Thanks Radu. That makes sense for when I'm building the project myself but this line in the readme makes it seem like there is one I can download hosted somewhere on this github repo:
You can also use the pre-built batholomew.wasm or the versioned bindles.

Am I understanding this incorrectly?

Ah, you are correct, that is missing.
In fact, the static file server module (https://github.com/fermyon/bartholomew/blob/main/modules.toml#L2) is missing as well.

This was resolved with the 0.1 release! Yay!


Buy Offer Rate not display correct.

I've created my own token: https://stellar.expert/explorer/testnet/asset/VAN-GBTLOUREIP3TEEE3OPLXUHKLQMEMFY5L343YGJQ2QVIZDLPFQY42GV7U
From Distribution Account: GANLADXO3MAYRLDQTFMS2GAKXGCSTV4EMNGDYZJT4DLN6GNG5DSNUELU
I've created a sell offer to sell 1M VAN token with price 0.2 XLM/VAN (correct):
https://stellar.expert/explorer/testnet/tx/1568354552778752#1568354552778753
From Buyer: GDYFBQECSCCT7BXF5L4D6I7KL743NJI7CV6EPI6OCPHTW2B4QWATZTLL
I've created some buy offers to buy VAN token:
https://stellar.expert/explorer/testnet/account/GDYFBQECSCCT7BXF5L4D6I7KL743NJI7CV6EPI6OCPHTW2B4QWATZTLL?filter=offers
The last 3 offers are executed by rate 0.2, 5 and 10
The latest offer is on active by rate of 0.1
I think the rate should be XLM/VAN or you should take the inverse of the rate to correct the rate.

You can see, the rate of the latest offer in the Offers tab and the Active Offers tab are different

Confirmed. We are working on a fix for this.
Thanks for the bug report.

Fxied


[Test] Allow specifying custom examples dir

Description
This allows putting move examples in any directory, unrelated to where they were at build time.
Test Plan
Specified MOVE_EXAMPLES_DIR on stress binaries in private testnet.

If your changes are not user-facing and not a breaking change, you can skip the following section. Otherwise, please indicate what changed, and then add to the Release Notes section as highlighted during the release process.
Type of Change (Check all that apply)

[ ] protocol change
[ ] user-visible impact
[ ] breaking change for a client SDKs
[ ] breaking change for FNs (FN binary must upgrade)
[ ] breaking change for validators or node operators (must upgrade binaries)
[ ] breaking change for on-chain data layout
[ ] necessitate either a data wipe or data migration

Release notes

reply


[PDI-16436]- Issues with 3 steps when exporting - importing in an EE repository

Issues with several steps during exporting - importing in an EE repository : directories are not updated properly.
-Removed hardcoded step name checks (like stepMeta.isMapping() or stepMeta.isTransformation() ) which identify whether we should update step inner directories or not
-Added interface which means that a step has directory(ies) to another transformations(jobs)
Affected by the issue steps : JobEntryJob, JobEntryTrans, Mapping, SimpleMapping, SingleThreader, TransExecutor, JobExecutor, Metainject, Pentaho MapReduce

@pamval @mbatchelor can you please take a look?
thanks.

@pamval @mbatchelor can you please take a look?
thanks.

Please rebase this PR.

PDI-16436 will only be merged after code freeze (and branching happens)

@mbatchelor Could you please take a look?

@bmorrise @pamval @mbatchelor can you please take a look?
thanks

@bmorrise @pamval @mbatchelor can you please take a look?
thanks

@pamval @mbatchelor Could you please take a look?


Chest pain white paper approved by VA Clinical SMEs

The chest pain white paper can now be shared with CDS connect once technical modifications have been made by  Pivotal staff and Preston.

@linophth What technical modifications?

None, if there aren't any.  Whatever happens after the documents leave my  hands - that process is still pretty opaque to me.


Add label ci.role.test to Jenkins Pipelines and Test machines

We (OpenJ9) have a need to separate some build farm and test machines. Through discussion we have concluded and are proposing we add labels ci.role.build and ci.role.test to the appropriate machines and corresponding pipelines. We would encourage the Adopt-build Pipeline scripts to do the same, although not required as we have our own OpenJ9 build pipelines.
Steps to Implement:

Add labels to machines
Add labels to Pipelines
Remove obsolete labels (if applicable)

I thought we already had a similar naming scheme...

I believe this was partially implemented in AdoptOpenJDK/openjdk-infrastructure#93. From what I see, the current usage is:

Build has not adopted the new label schema
Test uses it partially (eg. hw.arch.x86&&sw.os.linux see here)

Build machine
build cloudcone hg linux ubuntu ubuntu16 ubuntu1604 x64 x86_64
Test machine
hw.arch.x86 linux sw.os.linux sw.tool.docker test ubuntu x64
The only reason tests don't hit the build machines at Adopt is because the build machines don't use the standard schema.

Answering Martijn's question, we do use this schema for test machines, as I proposed in this branch https://github.com/smlambert/openjdk-infrastructure/blob/labels/docs/jenkinslabels.md, but we did not go as far as labelling build machines at adopt, because we still had folks that held off on agreement.  So we only applied these labels to test machines.
I am happy to apply to all machines, as most of the disagreement was based on statements that are not actually an issue ('the labels are too long to type' - not really an issue, since mostly no one types them, they are in Jenkinsfiles and hardly ever manually entered).

I think cleaning the labels up is a good idea. We can always revisit how we use labels later, but we should be consistent to start with.  @smlambert I say go ahead (but perhaps summarise what's going to change before you apply it).

Will do, I will update the doc in my openjdk-infrastructure branch and create a PR to summarize it.  👍

I've already updated the test machines with the proper labels.
At present, we do not need to update the build machine labels as the build / test machines are separate, and the build scripts do not use the schema at present.


Will this library support remote attestation?

A TEE with remote attestation capability is required for it to function as a server, so I would like to ask if there are any plans for the Teaclave SDK to implement remote attestation capabilities?

Hi @prz23
The mutual attestation has been implemented in Teaclave and Teaclave SGX SDK (reference: incubator-teaclave/mutual-attestation.md at master · apache/incubator-teaclave · GitHub). Adding remote attestation support in the Teaclave TrustZone SDK is on our road map and we've made some progress on that.
Here's an overview of the related work:

Our TLS support and client/server examples: incubator-teaclave-trustzone-sdk/examples/tls_server-rs at master · apache/incubator-teaclave-trustzone-sdk · GitHub
OP-TEE's support for attestation in pseudo TA, which provides runtime measurements: core: pta: add remote attestation PTA · OP-TEE/optee_os@7e05ec2 · GitHub
Remote attestation implementation in incubator-teaclave

In order to complete the TrustZone SDK implementation, we need to:

Wrap the APIs for the TA to call the pseudo TA, such as TEE_OpenTASession
Customize the TLS certificate based on our TLS client/server example
Add the attestation module and attestation example

We'll keep you informed of any updates on this thread. If you're interested in implementing this feature, we'd appreciate your contribution. Thank you!


⚠ Processors has degraded performance

In 72cd143, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 49 ms

Resolved: Processors performance has improved in b8d7b57.


Fetch more data for parcellation region

When returning a list of regions, more template dependent data should be included. For example 'centroid'.

With the pydantic update more information are included (also centroid).
Which informatiion are returned is now mainly decided by the python library.


GoogleMaps onMapCreated causing memory leak when closure

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
class MapPage extends StatefulWidget {
  const MapPage({
    super.key,
  });

  @override
  MapPageState createState() => MapPageState();
}

class MapPageState extends State<MapPage> {
  final _scaffoldKey = GlobalKey<ScaffoldState>();
  final Completer<GoogleMapController> _controller = Completer();

  Map<GoogleMapStyle, String> googleMapStyleStrings = {
    GoogleMapStyle.standard: '[]',
    GoogleMapStyle.silver:
        '[{"elementType":"geometry","stylers":[{"color":"#f5f5f5"}]},{"elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#616161"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#f5f5f5"}]},{"featureType":"administrative.land_parcel","elementType":"labels.text.fill","stylers":[{"color":"#bdbdbd"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#eeeeee"}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"color":"#757575"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#e5e5e5"}]},{"featureType":"poi.park","elementType":"labels.text.fill","stylers":[{"color":"#9e9e9e"}]},{"featureType":"road","elementType":"geometry","stylers":[{"color":"#ffffff"}]},{"featureType":"road.arterial","elementType":"labels.text.fill","stylers":[{"color":"#757575"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#dadada"}]},{"featureType":"road.highway","elementType":"labels.text.fill","stylers":[{"color":"#616161"}]},{"featureType":"road.local","elementType":"labels.text.fill","stylers":[{"color":"#9e9e9e"}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"color":"#e5e5e5"}]},{"featureType":"transit.station","elementType":"geometry","stylers":[{"color":"#eeeeee"}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#c9c9c9"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#9e9e9e"}]}]',
    GoogleMapStyle.retro:
        '[{"elementType":"geometry","stylers":[{"color":"#ebe3cd"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#523735"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#f5f1e6"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"color":"#c9b2a6"}]},{"featureType":"administrative.land_parcel","elementType":"geometry.stroke","stylers":[{"color":"#dcd2be"}]},{"featureType":"administrative.land_parcel","elementType":"labels.text.fill","stylers":[{"color":"#ae9e90"}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"color":"#dfd2ae"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#dfd2ae"}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"color":"#93817c"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#a5b076"}]},{"featureType":"poi.park","elementType":"labels.text.fill","stylers":[{"color":"#447530"}]},{"featureType":"road","elementType":"geometry","stylers":[{"color":"#f5f1e6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#fdfcf8"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#f8c967"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#e9bc62"}]},{"featureType":"road.highway.controlled_access","elementType":"geometry","stylers":[{"color":"#e98d58"}]},{"featureType":"road.highway.controlled_access","elementType":"geometry.stroke","stylers":[{"color":"#db8555"}]},{"featureType":"road.local","elementType":"labels.text.fill","stylers":[{"color":"#806b63"}]},{"featureType":"transit.line","elementType":"geometry","stylers":[{"color":"#dfd2ae"}]},{"featureType":"transit.line","elementType":"labels.text.fill","stylers":[{"color":"#8f7d77"}]},{"featureType":"transit.line","elementType":"labels.text.stroke","stylers":[{"color":"#ebe3cd"}]},{"featureType":"transit.station","elementType":"geometry","stylers":[{"color":"#dfd2ae"}]},{"featureType":"water","elementType":"geometry.fill","stylers":[{"color":"#b9d3c2"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#92998d"}]}]',
    GoogleMapStyle.dark:
        '[{"elementType":"geometry","stylers":[{"color":"#212121"}]},{"elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#757575"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#212121"}]},{"featureType":"administrative","elementType":"geometry","stylers":[{"color":"#757575"}]},{"featureType":"administrative.country","elementType":"labels.text.fill","stylers":[{"color":"#9e9e9e"}]},{"featureType":"administrative.land_parcel","stylers":[{"visibility":"off"}]},{"featureType":"administrative.locality","elementType":"labels.text.fill","stylers":[{"color":"#bdbdbd"}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"color":"#757575"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#181818"}]},{"featureType":"poi.park","elementType":"labels.text.fill","stylers":[{"color":"#616161"}]},{"featureType":"poi.park","elementType":"labels.text.stroke","stylers":[{"color":"#1b1b1b"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"color":"#2c2c2c"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#8a8a8a"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#373737"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#3c3c3c"}]},{"featureType":"road.highway.controlled_access","elementType":"geometry","stylers":[{"color":"#4e4e4e"}]},{"featureType":"road.local","elementType":"labels.text.fill","stylers":[{"color":"#616161"}]},{"featureType":"transit","elementType":"labels.text.fill","stylers":[{"color":"#757575"}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#000000"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#3d3d3d"}]}]',
    GoogleMapStyle.night:
        '[{"elementType":"geometry","stylers":[{"color":"#242f3e"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#746855"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#242f3e"}]},{"featureType":"administrative.locality","elementType":"labels.text.fill","stylers":[{"color":"#d59563"}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"color":"#d59563"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#263c3f"}]},{"featureType":"poi.park","elementType":"labels.text.fill","stylers":[{"color":"#6b9a76"}]},{"featureType":"road","elementType":"geometry","stylers":[{"color":"#38414e"}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"color":"#212a37"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#9ca5b3"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#746855"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#1f2835"}]},{"featureType":"road.highway","elementType":"labels.text.fill","stylers":[{"color":"#f3d19c"}]},{"featureType":"transit","elementType":"geometry","stylers":[{"color":"#2f3948"}]},{"featureType":"transit.station","elementType":"labels.text.fill","stylers":[{"color":"#d59563"}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#17263c"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#515c6d"}]},{"featureType":"water","elementType":"labels.text.stroke","stylers":[{"color":"#17263c"}]}]',
    GoogleMapStyle.aubergine:
        '[{"elementType":"geometry","stylers":[{"color":"#1d2c4d"}]},{"elementType":"labels.text.fill","stylers":[{"color":"#8ec3b9"}]},{"elementType":"labels.text.stroke","stylers":[{"color":"#1a3646"}]},{"featureType":"administrative.country","elementType":"geometry.stroke","stylers":[{"color":"#4b6878"}]},{"featureType":"administrative.land_parcel","elementType":"labels.text.fill","stylers":[{"color":"#64779e"}]},{"featureType":"administrative.province","elementType":"geometry.stroke","stylers":[{"color":"#4b6878"}]},{"featureType":"landscape.man_made","elementType":"geometry.stroke","stylers":[{"color":"#334e87"}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"color":"#023e58"}]},{"featureType":"poi","elementType":"geometry","stylers":[{"color":"#283d6a"}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"color":"#6f9ba5"}]},{"featureType":"poi","elementType":"labels.text.stroke","stylers":[{"color":"#1d2c4d"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#023e58"}]},{"featureType":"poi.park","elementType":"labels.text.fill","stylers":[{"color":"#3C7680"}]},{"featureType":"road","elementType":"geometry","stylers":[{"color":"#304a7d"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#98a5be"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#1d2c4d"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#2c6675"}]},{"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"color":"#255763"}]},{"featureType":"road.highway","elementType":"labels.text.fill","stylers":[{"color":"#b0d5ce"}]},{"featureType":"road.highway","elementType":"labels.text.stroke","stylers":[{"color":"#023e58"}]},{"featureType":"transit","elementType":"labels.text.fill","stylers":[{"color":"#98a5be"}]},{"featureType":"transit","elementType":"labels.text.stroke","stylers":[{"color":"#1d2c4d"}]},{"featureType":"transit.line","elementType":"geometry.fill","stylers":[{"color":"#283d6a"}]},{"featureType":"transit.station","elementType":"geometry","stylers":[{"color":"#3a4762"}]},{"featureType":"water","elementType":"geometry","stylers":[{"color":"#0e1626"}]},{"featureType":"water","elementType":"labels.text.fill","stylers":[{"color":"#4e6d70"}]}]',
  };

  Map<GoogleMarkerColor, double> googleMarkerColorMap = {
    GoogleMarkerColor.red: 0.0,
    GoogleMarkerColor.orange: 30.0,
    GoogleMarkerColor.yellow: 60.0,
    GoogleMarkerColor.green: 120.0,
    GoogleMarkerColor.cyan: 180.0,
    GoogleMarkerColor.azure: 210.0,
    GoogleMarkerColor.blue: 240.0,
    GoogleMarkerColor.violet: 270.0,
    GoogleMarkerColor.magenta: 300.0,
    GoogleMarkerColor.rose: 330.0,
  };

  Future<void> _disposeController() async {
    final controller = await _controller.future;
    controller.dispose();
  }

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

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

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      child: Scaffold(
        key: _scaffoldKey,
        resizeToAvoidBottomInset: false,
        body: Stack(
          children: [
            Column(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Expanded(
                  child: AbsorbPointer(
                    absorbing: false,
                    child: GoogleMap(
                      zoomControlsEnabled: false,
                      myLocationEnabled: true,
                      compassEnabled: false,
                      mapToolbarEnabled: false,
                      myLocationButtonEnabled: false,
                      initialCameraPosition: const CameraPosition(
                        target: LatLng(0, 0),
                        zoom: 5,
                      ),
                      onMapCreated: (controller) {
                        _controller.complete(controller);
                      },
                    ),
                  ),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}

Expected results
MapPageState isnt retained when the widget is disposed.
Actual results
MapPageState forever creates instances until a OOM occurs.  This may take a longer time on modern devices, but on a iPhone SE 3rd Generation, this pops pretty quickly.
Code sample
Code sample
// Memory Leak
 onMapCreated: (controller) {
                        _controller.complete(controller);
                      },

// No Memory Leak
 onMapCreated: _controller.complete,

Screenshots or Video

Screenshots / Video demonstration

Logs
Logs
Nothing of note

Flutter Doctor output
Doctor output
➜ flutter doctor -v
[✓] Flutter (Channel stable, 3.10.5, on macOS 13.4 22F66 darwin-arm64, locale
    en-US)
    • Flutter version 3.10.5 on channel stable at
      /Users/patrickwolf/.asdf/installs/flutter/3.10.5-stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 796c8ef792 (5 days ago), 2023-06-13 15:51:02 -0700
    • Engine revision 45f6e00911
    • Dart version 3.0.5
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/patrickwolf/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /Users/patrickwolf/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841
      /Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b802.4-9586694)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/patrickwolf/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841
      /Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b802.4-9586694)

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/patrickwolf/Library/Application
      Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.1012163
      9/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b802.4-9586694)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.1.2)
    • IntelliJ at /Users/patrickwolf/Applications/JetBrains Toolbox/IntelliJ
      IDEA Ultimate.app
    • Flutter plugin version 74.0.4
    • Dart plugin version 231.9065

[✓] IntelliJ IDEA Ultimate Edition (version 2023.1.2)
    • IntelliJ at /Users/patrickwolf/Library/Application
      Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.9011.34/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.79.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.66.0

[✓] Connected device (3 available)
    • Patrick’s iPhone 12 (mobile) • 00008101-000208E13CD8001E • ios            • iOS 16.5 20F66
    • macOS (desktop)              • macos                     • darwin-arm64   • macOS 13.4 22F66 darwin-arm64
    • Chrome (web)                 • chrome                    • web-javascript • Google Chrome 114.0.5735.133
    ! Error: (null) needs to connect to determine its availability. Check the connection between the device and its companion iPhone, and the
      connection between the iPhone and Xcode. Both devices may also need to be restarted and unlocked. (code 1)

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Could be related to #92788 as I noticed this issue is also using a closure

Hi @wolfie82. Can you try to run in --profile mode with physical device and also enable trace as mentioned here to get the details. Also, since you seem to be reproducing this on iOS, can you try to run with impeller and without it to check the difference in behaviour if any?

Impeller doesn't appear to make a difference for me.
dart_devtools_2023-06-19_09_00_18.998.json.zip

Hi @wolfie82. Thanks for filing this issue. Does this also occur in profile mode with physical device??

Hi there.  Yes. This occurs in simulator and on physical Apple devices.  The trace is from a physical device using profile mode.

Okay, thanks.

Thank you @dam-ease!  Potentially also related to #115283

Hi @dam-ease, I wanted to update and let you know that I tested this on Android Android 13 (API 33) (emulator) and this same issue appears.  I unfortunately can't code around this without directly modifying the google_maps_flutter package.  My contrived example above doesn't have a lot of state in it, but add some typeAhead fields and potentially other data it compounds the issue.  Thanks again.
It would be fine if I didn't need onCameraIdle or onCameraMoved, but I do and these all create the memory leak.

@wolfie82 did some work on this issue in https://github.com/flutter/packages/pull/4281. If anyone would like to pick it up and bring it to completion, please feel free to do so!

Hi there, are there any workarounds or updates to this issue? This is causing me a lot of headaches because the main purpose of my app is to show lots of data on a Map.
I currently have to null my data manually if i want to use a Google Map on the page. This still leaves the instance of the State in ram but isn't crashing after opening the page a few times.
Am I using the package incorrectly or is everyone having this issue when doing anything with the GoogleMapController?


JAVA-1438: QueryBuilder check for empty orderings

Added orderings.isEmpty check before QueryBuilder adds ORDER BY clause

This looks good to me, thanks for your contribution @podnov!   I changed the target branch to 3.2.x as I think this is straightforward enough to fix in a patch release.

A side note for whoever merges this that we should add a changelog entry for this (I am forgoing doing this at the moment as it would inevitably create a merge conflict, so it makes sense to wait until we merge).

@podnov Thank you very much for the contribution! I mentioned a small change in the review, and we are hoping to get this merged soon, so I'll go ahead and do that change (will keep the commit attributed to you) and if that change does not suit your needs, please re-open the JIRA, thanks!


nixos/plasma5: Enable browser integration

Motivation for this change
I received this diff via email. Posting it here for review.

I'm running this successfully for several months in 20.03 (manually enabled it via the config.nix).
Works like a charme, great idea to enable this by default.


iOS shortcut setup and how it works

I assume the ios shortcut need obsidian on your phone + some sync like obsidian sync?
I stopped using Obsidian on my iphone because my vault is too big, unusable
Just using apple notes on my phone for brain dumps that I sync to obsidian later (until i find better workflow)
I think if my apple notes could move automatically to obsidian somehow + processed by the plugin would be amazing (or other workflow)

I think if my apple notes could move automatically to obsidian somehow + processed by the plugin would be amazing (or other workflow)

Hmmm that's a great idea actually, i'll see what apis are available.

I assume the ios shortcut need obsidian on your phone + some sync like obsidian sync?
the shortcut expects filesystem access to how you sync Obsidian. I tested it with google drive and i cloud. i don't know how obsidian sync works.

I'm still not figuring it out. Can you walk me through? Also, how to you so easily get it to append at the end of the daily note?

@aexshafii could you test if the shortcut works ?
https://www.icloud.com/shortcuts/06915768862848fb9711f2f19b6405e2
we should make it easier to be used


License: Need to find and add the license

The code was received second hand and the original license needs to be researched. Once found it needs to be added in the LICENSE file. Be sure to update the Homebrew package (https://github.com/mzsanford/homebrew) once that's done.

Confirmed that the LICENSE file is correct and matches. No update needed.


compile 'com.github.chahine:pageindicator:

what is the last-version

@sbouiachref the latest version is 0.2.7, please refer to https://github.com/chahine/pageindicator/releases.

thanks boss

@chahine
ERROR: Failed to resolve: com.github.chahine:pageindicator:0.2.8
Is this dependency available for AndroidX project ?


NuGet Packages Can't Be Found

I tried the powershell commands here to install the SDK.  The commands fail with errors that the packages can't be found.

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

ID: 9d7d5f36-11fc-9ac5-778b-c03823bbb072
Version Independent ID: 814e151a-2018-285a-697f-f929a73957d4
Content: Download tools from NuGet (Developer Guide for Dynamics 365 Customer Engagement)
Content Source: ce/customerengagement/on-premises/developer/download-tools-nuget.md
Product: d365ce-op
GitHub Login: @JimDaly
Microsoft Alias: jdaly

@robertcaretta
Try the PowerShell script here: https://docs.microsoft.com/en-us/powerapps/developer/data-platform/download-tools-nuget#download-tools-using-powershell
Let me know if this script does not work for you.
Make sure to use the built-in Windows PowerShell and not the stand-alone PowerShell (v7.x) that you can install separately from the OS.

That is what I tried. Does not work.   Through much research I found the following was needed before running that script.
CD to this directory -----------------------------------------------------------------
cd "C:\DevTools"
This has to be added with NuGet first ------------------------------------------------
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$targetNugetExe = ".\nuget.exe"
Remove-Item .\Tools -Force -Recurse -ErrorAction Ignore
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
Set-Alias nuget $targetNugetExe -Scope Global -Verbose
.\nuget sources Add -Name MySource -Source  https://api.nuget.org/v3/index.json

Should be fixed with PR above.


Update react hot loader documentation

Based on the most recent react hot loader documentation https://github.com/gaearon/react-hot-loader and references, I do not think the current webpack/browsersync setup is utilising the "next" version of 4.0.0 correctly.

@greypants I'll try to get around to setting up a PR for this issue once I get a working solution. It may be more "Out of the box" than I originally thought - was having some weird build errors yesterday due to naming conventions, but I do think it's a worthwhile topic to bring up to speed as the documentation says "next" for RHL.
Cheers!


[Bug]: ECR Scan on push false positive

Steps to Reproduce
When running a scan on ECR on AWS, the scan on push setting is tested with the check "ecr_repositories_scan_images_on_push_enabled"
However, the configuration of Scan on push will be deprecated by AWS in favor of registry level scan.

The check actually works correctly as the scan on push on the repository is disabled but it will return a FAIL even when registry level is enabled an scan results are seen on the console.
Expected behavior
The check should rely on the filter set at the registry level to evaluate if scan on push is set.

Actual Result with Screenshots or Logs

How did you install Prowler?
Cloning the repository from github.com (git clone)
Environment Resource
EC2 instance
OS used
Amazon Linux 2
Prowler version
Prowler 3.2.4
Pip version
pip 20.2.2
Context
No response

Thank you for letting us know @Baptiste-Leterrier! We will change the check behavior in favor of registry level scan.

FYI @Baptiste-Leterrier, we created a new check with this new logic and leave the old one as deprecated.

Awesome ! Thanks for your quick answer ! And this awesome tool !


config.categories are not binded

Hello,
config.categories defined at init state show up as expected but all categories set in react hook useEffect are not rendered.
Maybe I missed some points in documentation.
export function PuckEditor() {
  // Create Puck component config
  let config = {
    components:{},
    categories: {
      typography: {
        components: [],
      },
    }
  };
  const getDesignSystem = async () => {
    try {
      config.categories.zen ={
        components: ["Button_Default"]
      };
      const resGetPropsDefinitions = await get('/puck');
     // .... load dynamically components definitions
  } catch (e) {

  }
}
  useEffect(() => {
    getDesignSystem();
  }, []);
  return (
    <div className="puckWrapper" style={{ flex:'max-content'}}>
      <Puck config={config} data={initialData} onPublish={save}></Puck>
    </div>
  );
}

config.categories.typography => show up
config.categories.zen => not rendered
config.components are well binded and rendered once hook finished its job.

Hm, you're correct, they're not bound. Technically, you can achieve the above by modifying the AppState using a dispatcher, which contains a duplicate of the categories called componentList. However, this would require some refactoring on your part and is probably not quite appropriate (see https://github.com/measuredco/puck/issues/488).
I think it's worth exploring binding categories, so it updates when changed.


Whether the pretrained model on the RPCD will be released?

Hello, this work contributes a lot to the community and is impressive for me.
We utilize your provided code to extract the aesthetic feature combined with the language modality. But I have not found the pre-trained aesthetic model in this repository. Will you release the pre-trained model in the future?

Hi, Sorry for the wait and thanks for the interest! I add to my backlog to release the pretrained weights, I hope to have them ready by the end of the week. I'll post new updates in this issue (:

Hi! I uploaded (some of) the models to this gdrive folder: https://drive.google.com/drive/folders/1KuuiyNJUa92rCUtv9JO6gyAJ0plpqxcS?usp=sharing
I hope to upload all the models to HF in the near future, I'll post updates in this issue.

Hi @dveni, though the ViT models are here, the outputs when passing images to this model are 1024-tensors. According to the code, I think there should also be an SGD regressor model that actually outputs the aesthetic score. Can this be published? Thanks.


Use Github Bot for commit linting

This or something like it:
https://github.com/z0al/commitlint-bot

Can I take this one? ^_^

Sure thing 👍

Just saw this one, also highly recommended:
https://help.github.com/en/github/managing-security-vulnerabilities/configuring-automated-security-updates

I don't have sufficient access to install on this Lab, but I have requested.  We would also need elevated access to make mandatory for commits.  I have installed in my own fork to try out.  @tkuhrt


Suddenly Godot refuses to set a scene member variables complaining about type

Godot version
v4.0.alpha.calinou.c9d052330
System information
Arch Linux, KDE Plasma, Radeon RX580, amdgpu driver, Vulkan
Issue description
In my script I've been instantiating a scene and altering some of it's member variables.
For some reason suddenly Godot started showing me errors as if the member variable was of a wrong type:

Here I'm unable to assign a Vector3 to a member variable souorce_position.

The member variable is however defined to specifically be of type Vector3.
Removing this static typing changes nothing though.
If I comment out this variable assignement, the next variable in line throws the same error:

And as you may have seen before - it's also defined and also specifically of type int.
The strangest thing is - this code worked fine, and then I've changed something else somewhere and suddenly it doesn't work.
I think this is the kind of complex issues that only show themselves in larger projects. Small proof-of-concept ones don't usually expose this.
I'm stuck now, because Godot just refuses to run the code it has been running before just fine.
I'll try a different engine build, that's all I can think of now in terms of a "solution".
Steps to reproduce

Clone this project commit: https://codeberg.org/unfa/Liblast/src/commit/4a03995213e6b97c380c07b43366a6e534100033
Run the game
Host a new game (Play > Host)
Select rocket launcher by presing 2 on the alpha-numeric keypad
Shoot with LMB
See the error pop-up.

Minimal reproduction project
No response

I've tried to work this around using a method function, so that I can pass the values as arguments, rather the nset them directly.

However that didn't work as you can see:

My next step of working this around will be to have the spawned scene somehow locate the scene that spawned it and pull the data rather than be given it...
Or maybe instead of using the PackedScene fed to an exportd variable via editor, I need to hard-code the scene to be instanced?

No, using a fixed scene doesn't solve it.
It's as if the Projectile.gd script was not there...

Setting the script explicitly doesn't fix that:

Hmm. Commenting out all the problematic assignmenets leads to no errors, but the resulting projectile behaves as if it had no script at all. I think something with GDScript compilation/parsing has broken down here.

Turns out all this was caused by the script getting detached from Rocket.tscn I only saw that after checking git diffs.
I don't know if I did this myself, or if it was a bug. Is there a hotkey to detaching script from node that I could have triggered by mistake?
All in all - after attaching the script all works as expected.

What's happened next was that Godot removed one scene from another scene and makes it impossible for me to instance it.
Today after I updated to latest nightly it crashes on project load after complaining that the scene that had another scene deleted from it is incorrect and can't be loaded.
================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.0.alpha.calinou (1fbd498307103d0f80f0c780bbb647214dfed4b0)
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/libc.so.6(+0x42560) [0x7f05601a6560] (??:0)
[2] EditorNode::get_object_icon(Object const*, String const&) const (??:0)
[3] SceneTreeEditor::_add_nodes(Node*, TreeItem*, bool) (??:0)
[4] SceneTreeEditor::_update_tree(bool) (??:0)
[5] void call_with_variant_args_helper<__UnexistingClass, bool, 0ul>(__UnexistingClass*, void (__UnexistingClass::*)(bool), Variant const**, Callable::CallError&, IndexSequence<0ul>) (??:0)
[6] void call_with_variant_args_dv<__UnexistingClass, bool>(__UnexistingClass*, void (__UnexistingClass::*)(bool), Variant const**, int, Callable::CallError&, Vector<Variant> const&) (??:0)
[7] MethodBindT<bool>::call(Object*, Variant const**, int, Callable::CallError&) (??:0)
[8] Object::call(StringName const&, Variant const**, int, Callable::CallError&) (??:0)
[9] Callable::call(Variant const**, int, Variant&, Callable::CallError&) const (??:0)
[10] MessageQueue::_call_function(Callable const&, Variant const*, int, bool) (??:0)
[11] MessageQueue::flush() (??:0)
[12] Main::iteration() (??:0)
[13] OS_LinuxBSD::run() (??:0)
[14] /data/Projects/Games/Liblast/Godot/Other/2022-03-07/godot(main+0x168) [0x55e4d7b031cd] (??:0)
[15] /usr/lib/libc.so.6(+0x2d310) [0x7f0560191310] (??:0)
[16] /usr/lib/libc.so.6(__libc_start_main+0x81) [0x7f05601913c1] (??:0)
[17] /data/Projects/Games/Liblast/Godot/Other/2022-03-07/godot(_start+0x2a) [0x55e4d7b02faa] (??:0)
-- END OF BACKTRACE --
================================================================

Git shows that the instanced scene was deleted from it's parent:


ported example core 3d picking

Ported over the 3d picking example.
I'm having fun with this, if it's ok, do you think I should continue to do them as individual PRs?

Single PRs are fine, if you want to batch them I wouldn't mind either. Thank you very much for your contributions!


Why more accuracy from OSX's "Preview" application?

For a particular image, exif-py tells me the latitude is:
EXIF GPS GPSLatitude, [31, 27, 2147/100]
So 31 degrees, 27 minutes, 21.47 seconds.
But if I view the GPS info from Preview in OSX, it tells me 21.468 seconds.  An additional digit of accuracy.
Can you help me understand why?
Image and screenshot of exif-py and preview attached.

Good question. I have to admit I'm not sure why that is...
I thought maybe it was using XMP information, but the file has none:
> ~/work/oss/exif-py/EXIF.py -dc 0c824ff0-aef6-11e4-8966-5aeb5f0dfc7f.JPG
....
DEBUG XMP not in Exif, searching file for XMP info ...
DEBUG XMP Finished searching for info
....

I then checked with the popular exif tool and got the same result as with this library:
> exif 0c824ff0-aef6-11e4-8966-5aeb5f0dfc7f.JPG
EXIF tags in '0c824ff0-aef6-11e4-8966-5aeb5f0dfc7f.JPG' ('Motorola' byte order):
.....
Latitude            |31, 27, 21,47
....

Hmm... anything else I can do to help figure this out?  Would more photos help?

What could be interesting is to compare an image not taken with Apple hardware and see if there is the same discrepency.
Maybe there is some sort of proprietary info not present in the Exif?

Perhaps Preview is reading the same coordinate values, converting to decimal for internal manipulation, then converting back to DMS for the info panel display? That, along with some rounding and false precision might account for the discrepancy.

Good point. For all we know, OSX's Preview could be the one reporting a wrong value.

It appeared to be more accurate for the photos I tested it with.

The difference is 0.002", which is roughly 50cm.
But the best GPS receptors' accuracy is about 3 to 5 meters, which translates to 0.01" to 0.02".
So whatever the different software say, one thing is true for sure: the GPS receptor only provided at best 2-digit precision, so OSX Preview is wrong to display more than that.
Now, where it gets them from? My bet is it computes the latitude using decimal latitude. That is, it internally converts [31, 27, 2147/100] into a decimal number such as 31.4559639. This is a very common thing to do, as having just one number for latitude is much more convenient than having an array of 4 numbers.
The problem is, such numbers cannot be perfectly represented as a decimals, let alone as floats. So, you just get an approximation. And when converting the value back into DMS for display, you will not get the original value back, just something really close to it. For instance,  31° 27' 21.46839230493.
You then round it. Round it to 2 digits, you get 21.47. Round it to 4 digits, you get 21.4684, of which the last 2 digits actually are meaningless garbage.
=> Round it to 3 digits and you get 21.468, that is 21.47 with a -0.002 error caused by conversion approximations.

Seems logical, I think we can close this one now. Thanks all.


Blank is displayed when a JSX is specified as value in autocomplete strategies

Checklist

This is not covered in the repository examples.
I am using the package latest version.

Description
I am trying out the autocomplete strategy for mui-rte which is a great feature. As part of it I wanted to format the text and has given a jsx element as value , but when selected in editor, bank is displayed instead of element.

Can you add a snippet of your current implementation?

Sure.. will share the code snippet

Const testControl =  Test
Const staff = [
{
Key : [“foo”, “all”],
Value : testControl,
Content : “This is Test”
}
]
ReactDom.render(
<MUIRichTextEditor
Label = “type here”
autocomplete ={{
strategies : [
{
Items : staff,
triggerChar : “@“
}
]
}}
/>,
document.getElementById(“root”)
);

This snippet will never work as it is. Gonna close this issue for now.


[ENH, MRG] Add EpochsSpectrumArray and SpectrumArray classes

Makes API a lot nicer and consistent with MNE related to discussion here: https://mne.discourse.group/t/instantiating-epochsspectrum-and-spectrum-class-objects/7127.
Without the docstrings of the array, you actually have to look in __set_state__ to figure out what is required in the state argument which is pretty confusing for me. The use case of ragged/unequal epochs is something I ran into too.
Okay with you @drammock ?

Looks like the failures are unrelated, good to go by me

Okay, I think the outstanding things here are:

[ ] Decide on fmin/fmax or freqs constructor
[ ] Think about if we want to support passing amplitude with a kwarg (psd_array_welch/multitaper only supports output power or complex so I would vote just supporting those which can be inferred from data type)
[ ] Decide about what Epochs-level data to put in the EpochsSpectrumArray API (I think it's a good compromise now but happy to hear from all the opinions @drammock requested to weigh in)

Otherwise looks good, thanks for the review @drammock.
Oh one more thing, I set Spectrum._inst_type to np.ndarray for the arrays, it's not used anywhere yet so this won't break anything but I'm not sure what the plan for that attribute was so just wanted to make sure that's the right move for future compatibility.

Okay to merge? The EpochsSpectrumArray constructor is minimal so we can always follow up with a PR adding more things to the constructor if necessary. This seems like a good start.

Ok for me

Okay to merge?

Your checklist above has only 1 of 3 items checked off (plus there's a fourth item that doesn't have a checkbox --- the question about _inst_type --- which is also not resolved yet).  So no: not okay to merge.  Is there some rush on your end?

Not a huge rush, I'm sharing a script that uses it with someone else so it's a bit of a pain to describe how to install a feature branch.
I was going to let whoever merged the PR check those boxes to make sure they're okay with them, it's fine by me how it is right now (after I implement the latest review).

I just went ahead and added the fixtures so everyone wins :smile:

playing around locally I'm getting a lot of errors. Things like this don't work:
import mne

sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = (sample_data_folder / 'MEG' / 'sample' /
                        'sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False, preload=False)
events = mne.find_events(raw, stim_channel='STI 014')
event_dict = {'auditory/left': 1, 'auditory/right': 2}
epochs = mne.Epochs(raw, events, event_id=event_dict, preload=False,
                    proj=False)

epo_spectrum = epochs.compute_psd(output="complex")
arr_spectrum = mne.time_frequency.EpochsSpectrumArray(
    epo_spectrum.get_data(),
    epo_spectrum.info,
    epo_spectrum.freqs
)
arr_spectrum.get_data()  # <-- fails with IndexError

Clearly tests are not thorough enough, marking as draft.

Are you getting any more errors? That error is because the tapers are returned when output='complex'. I think maybe we shouldn't support that actually because the multitapers are of the order (n_epochs, n_channels, n_tapers, n_freqs) and the welch segments are of the order (n_epochs, n_channels, n_freqs, n_segments). I think the two options are, 1) require method be passed and that it be welch or multitaper or 2) don't support complex and > 3D data. What do you think @drammock?

Ok, I:

Tested welch and multitaper unaggregated and power
Implemented thorough checks that the data was the right shape
Fixed bugs that came up when different data types were plotted

I think it's very thorough now and I'm pretty happy with it

I think the two options are, 1) require method be passed and that it be welch or multitaper or 2) don't support complex and > 3D data. What do you think @drammock?

hmmm.  I think I'd like to eventually support people passing 3D data for SpectrumArray and 4D data for EpochsSpectrumArray. But maybe for now it's enough to support the lower-dimensional use cases and wait and see if folks ask for the higher-dimensional ones. Which, by exension, means I think we don't need to support complex data (yet) either.  So yeah, let's restrict to real 2D (no epochs) or 3D (epochs) data for now. Do you have time to finish this before the 1.5 release, or should I take over?

I think it's finished and I added pretty comprehensive support for complex cases already. It took a lot longer but it helped find a lot of bugs in plotting.

I added pretty comprehensive support for complex cases already.

Yeah, I was just realizing that as I reviewed the changes

It took a lot longer but it helped find a lot of bugs in plotting.

Bugs that affect the existing Spectrum classes?  Or that only come up for the Array classes?

I think it's finished

Sounds like you don't want to work on this any further. If that's correct, then FYI it's pretty frustrating when you say things like "What do you think @drammock?" and then make up your own mind and do a bunch of work without waiting for the input you requested, then aren't receptive when the requested input arrives.
If you don't want to do any more work here LMK, I'm OK with taking over this PR.

I personally am not using complex input to an EpochsSpectrumArray but since it's output for the psd functions, I could see it as a use case since the support for complex was added to those methods.
There's a lot of back-and-forth, agreed but here's the main point and reasoning: I originally planned to do just power for the sake of time (not implemented yet) but then I didn't hear back and thought you would be +1 for supporting complex numbers so I went ahead and implemented that. Now that it's implemented, it doesn't seem like too much of a maintenance burden, just a few more pytest error checks and covers the complete case of Spectrum objects you could get not through the array method. So my vote is to keep it.

Just thinking about this, metadata is in the EpochsArray constructor so might be nice to have it in the EpochsSpectrumArray constructor for consistency. I know you can set it after and we've discussed this but it would be nice if things were consistent.

What's the status on this PR?
I could see a use case for unaggregated complex spectra in the case you want to do some kind of phase analysis (e.g. phase-amplitude coupling) and don't have even length epochs.
If that's not convincing, then let's just take out complex support.

sorry, I got captured by a grant deadline, it was on my list to come back to this yesterday but I ran out of time. Will prioritize for today.

No worries, next week is great too, just didn't want it to get forgotten.

we chatted about this PR in the dev meeting today, to gauge opinions on whether supporting complex data as input to SpectrumArray and EpochsSpectrumArray is important or YAGNI. General feeling was:

PRO: it would be nice to include it for symmetry reasons, since in some cases our .compute_psd() methods return complex data.
CON 1: it makes it hard to validate the input data (specifically the dimensionality). Currently we output:

2D real-valued Spectrum (welch, multitaper on Raw/Evoked)
3D real-valued Spectrum (unaggregated welch on Raw/Evoked)
3D complex-valued Spectrum (unaggregated multitaper on Raw/Evoked)
3D real-valued EpochsSpectrum (welch, multitaper on Epochs)
4D real-valued EpochsSpectrum (unaggregated welch on Epochs)
4D complex-valued EpochsSpectrum (unaggregated multitaper on Epochs)
If we only accept real-valued input, we can safely only support 2 use cases: 2D real data -> Spectrum, 3D real data -> EpochsSpectrum. In contrast, if we allow complex input, for example how do we decide if a 3D complex input should be treated as unaggregated estimates from continuous data versus normal estimates from epoched data?

CON 2: supporting complex data means thinking a lot about downstream processing effects (i.e., does it make sense to plot? if so, is abs() a sufficient approach for converting to real-valued numbers? etc) which means significant maintenance burden. Now, we already kinda have to do this for the unaggregated multitaper output, but importantly that is the only case where we allow complex data so (1) we know what is the sensible way to convert to real-valued when needed (i.e. aggregating with precomputed multitaper weights) and (2) we can rely on knowing the dimension of the data (because we created the object).

All this has made me realize something that I previously overlooked / didn't discuss in the meeting, which is that when we originally added complex support, we were outputting numpy arrays so the ramifications didn't need to be traced through the rest of our API to make sure the complexness of the data didn't break things. When I created the Spectrum classes, support for complex unaggregated multitaper output was included for legacy reasons, but it probably would have been better to not support it in the classes (and to keep open a separate array-yielding code path for users who want the unaggregated multitaper output).
Which leads me to ask @mmagnuski (who originally requested the complex unaggregated multitaper output) a few questions:

what was your original use case that led to that request?
do you know others who use MNE's unaggregated multitaper estimates in their work?
do you foresee a use case for computing complex-valued spectral estimates outside of MNE and then putting them into a Spectrum or EpochsSpectrum object?

Those are pretty reasonable concerns: you have to pass the method if it's complex and I added checks that the dimensions matched the size of the frequencies passed so I think it the checks for the wrong data make it very safe (i.e. even if frequencies and n_segments/n_tapers  are same size, the method is required so that would disambiguate the dimensions. I really can't think of a way you could pass the wrong data).

@drammock
Hi, I am fine with NOT supporting complex per-taper output in Spectrum classes. The reason for returning complex per-taper output is mostly for calculating multitaper coherence (and other similar measures) - this is done per taper and then averaged. This is an example paper that showcases something similar.
But in general I don't think it would be used frequently and it does not make much sense to support it in the Spectrum object - that might be more time spent implementing and testing than actual user-time spent using the code. :)

what's the status here? I see some remaining comments by @drammock. It's a matter of agreeing if we support complex or not?

Those are pretty reasonable concerns: you have to pass the method if it's complex and I added checks that the dimensions matched the size of the frequencies passed so I think it the checks for the wrong data make it very safe (i.e. even if frequencies and n_segments/n_tapers  are same size, the method is required so that would disambiguate the dimensions. I really can't think of a way you could pass the wrong data).

what's the status here? I see some remaining comments by @drammock. It's a matter of agreeing if we support complex or not?

Yes, that's my understanding we should agree whether to support complex psds.
One last point: I think from a maintenance perspective having complex spectrumarrays was actually very helpful because in testing complete cases, there were several bugs in how plotting was handled.

I'll restate her the pros and cons from my comment above:

PRO: it would be nice to include it for symmetry reasons, since in some cases our .compute_psd() methods return complex data.
CON 1: it makes it hard to validate the input data (specifically the dimensionality).
CON 2: supporting complex data means thinking a lot about downstream processing effects.

@mmagnuski's comment suggests to me that we should probably deprecate complex output support in the (Epochs)Spectrum classes, and provide an alternate code path that outputs NumPy arrays, for folks like @mmagnuski who really want access to the individual taper estimates.  If we do that, then the main "pro" of allowing complex input to the (Epochs)SpectrumArray classes goes away. I'll gladly acknowledge that some issues with plotting were revealed by the effort of adding that support, but IMO that does not constitute a "maintenance win" --- we can easily keep the plotting bugfixes while eliminating the complex support, and keeping complex support is still more lines of code and more branching code paths and more downstream effects to keep track of, all for the sake of (as far as I've heard) no known real-world use case for why it's preferable to have the complex data in a Spectrum-like container.
My vote here is:

a PR that deprecates complex output in the Spectrum classes
a PR that adds a spectrum pytest fixture and adds it to all the existing tests that use Spectrum objects (which was not done here, and is why I initially requested a separate PR for that in the first place)
a PR that adds the new (Epochs)SpectrumArray classes with only real-valued input allowed (and no support for unaggregated-welch-style input, i.e., 2D is always SpectrumArray, 3D is always EpochsSpectrumArray), and associated tests

That's fine with me, I'll remove complex support, you spent a lot of time and effort making spectrum classes @drammock so I'm happy to differ to your judgment and I agree there are not a lot of apparent use cases that come to mind--phase doesn't make any sense, it's not time-frequency, thanks for the direct communication, that helps move forward.

Ok I removed complex support and this is ready for review. I changed the data_type to Power Spectrum from Real/Complex Spectrum because of the change not to support complex input. It's just for the display, I really don't care that much so just let me know if anyone wants it back to Real or whatever else.

All green, this one is ready for review/merge


Add JS only copy-to-clipboard functionality for important fields

Inspired by random article on my Google now
https://www.bennadel.com/blog/3235-creating-a-simple-copy-to-clipboard-directive-in-angular-2-4-9.htm

Thought I'd give this a go.

Closing for inactivity.


[Style]Changing the size of contact icon

What's the style idea?
The size of contact icon is not match with other icons which is present  at the bottom of the page. This looks not good.
I attached the screenshot of that contact icon.

Can you please assign me this issue under GSSoC'24, I really want to improve size of contact icon . If these contact icon size is matching with other icons then our website looks more better than previous ones..
Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[ ] I am a IWOC'24 contributor.
[ ] I am a JWOC'24 contributor.
[ ] I am a SWOC'24 contributor.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

Hi. I have experience in HTML, CSS and Javascript. I would like to work on this project. Please assign it to me.

@alok1304 Please assign this issue to me under GSSOC24

Hey I am GSSOC COntributor Please assign me this issue to work on

Issue 644 is already open for this, pls create new issues @alok1304


Application tries to trigger SetState on an unmounted component

There is a need to remove event listeners when Impress is unmounting. In my project, I use this library only on a desktop version of my project. When I'm resizing my site to mobile view, this Impress component is unmounting, but events still try to trigger a SetState, which throws an error.

You need to call impress().tear() to "uninitialize" impress. If some events trigger even after this, please file a more specific bug report.