Include params set in provide-client-param event handlers in dynamic context params for endpoint resolution

This PR moves the provide-client-params.* and before-parameter-build.* from immediately after endpoint resolution to immediately before endpoint resolution.
This addresses the fact that for endpoint rulesets that accept dynamic context parameters (currently s3, s3-control, kinesis, and events) any parameters changed or updated in an event handler for the provide-client-params.* were not accounted for in endpoint resolution because the event was only emitted after endpoint resolution.

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

Comparison is base (3f49661) 93.44% compared to head (dd41560) 93.42%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2920      +/-   ##
===========================================
- Coverage    93.44%   93.42%   -0.02%
===========================================
  Files           63       63
  Lines        13551    13556       +5
===========================================
+ Hits         12663    12665       +2
- Misses         888      891       +3

Impacted Files
Coverage Δ

botocore/client.py
97.84% <100.00%> (ø)

botocore/signers.py
96.08% <100.00%> (+0.03%)
:arrow_up:

... and 2 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

@dlm6693 @nateprewitt Added two commits that consolidate the previously duplicated code. This comes at the cost of a change to the API of the _convert_to_request_dict method. The signature remains backwards compatible, but the endpoint_url argument is no longer used inside the function. There is a small chance that this will break anyone who relies on this "private" internal interface.
While making this change I also fixed the presign functions which were actually still affected by the original bug and added test coverage for this oversight.

After reviewing potential impact of the API change contained in bd44524, @nateprewitt and I decided to revert to the less well organized state that has been discussed above. Note that f8e01a6 is not an exact line-for-line revert because it keeps the bugfix described in https://github.com/boto/botocore/pull/2920#issuecomment-1539183503.

@jonemo still LGTM after the latest commit 👍


Move Scenes page to arena-core

It would be easier to manage the Scenes selection launcher page if it was out of arena-account, and in arena-core.

https://github.com/conix-center/ARENA-core/commit/dd5c4fef3bb6024ccf4f7c4e5b4bf14a89bc3030


Cannot print resolution info in kernel.cpp

void* BaseAddress;
size_t BufferSize;
unsigned int Width;
unsigned int Height;
unsigned int PixelsPerScanLine;
unsigned int Colour;
This stuff I cannot print in kernel.cpp

Because they are not strings

How to convert?

Make int to string function or just watch the series
Ponchobdoes it in one of them

That's not ponchos issue learn c and don't follow tutorials without understanding them

Ilobilo, If you also know C, you would know how to solve this probelm

I fixed with this:


Generated compile_commands.json uses relative paths for directory field

Hi,
I'm having issues using the generated the output from the compilation-database subtarget, which seems to boil down to clangd not liking relative directory fields.
Here's how to reproduce the issue using examples/with_prelude:
> buck2 init --git
...
> buck2 build cpp/hello_world:main[compilation-database]
...
> find -name compile_commands.json
./buck-out/v2/gen/root/524f8da68ea2a374/cpp/hello_world/__main__/compile_commands.json
> ln -s ./buck-out/v2/gen/root/524f8da68ea2a374/cpp/hello_world/__main__/compile_commands.json .
> nvim cpp/hello_world/main.cpp

At this point clangd starts, but it generates a bunch of erroneous diagnostics and doesn't let me go to the definition of print_hello. If I edit compile_commands.json to make directory an absolute path and open main.cpp again, everything works.
Arguably, clangd could support relative paths, but looking around on the internet indicates that this is unlikely (also clang-tidy depends on absolute directory paths).
Could the directory path that Buck2 generates be made absolute?
Thanks!

The problem is that if you write out absolute paths, its no longer possible to cache the compilation database between users. It's fairly annoying.

Is sharing compilation database between users a common thing to do? It's an artefact of build tool, why would you share it instead of generate per user?
Another question is whether the utility of being able to share the compilation database outweigh not being able to use clangd, which in our case for example would be a complete dealbreaker.

Sharing between users is super common, since it speeds everything up.
 Maybe the toolchain should have a boolean as to whether it generates absolute paths (with no caching) or relative paths (which are cached). I'm trying to find out how we deal with this internally, since we use clangd somehow.

It seems like internally we use Bxl as a wrapper that takes the compilation-database target, turns the paths to absolute, and then uses that for clangd. A bit fiddly, but does ensure that everyone can share most of the work.

Sharing between users is super common, since it speeds everything up.

I would expect generating the compilation database to be very fast, is it actually worth speeding up via caching?
And if it is the case for huge monorepos, should this be the exception rather than the rule? Meaning, buck2 would by default "just work", but larger organizations could set up caching/sharing if it becomes relevant for them.

There's downstream consumers that care if the file was cached or updated, so it gets a bit tricky when we write out these paths if you want to turn something absolute.

There's downstream consumers that care if the file was cached or updated, so it gets a bit tricky when we write out these paths if you want to turn something absolute.

Could you elaborate @bobyangyf? (I somehow missed the replies on this issue, but recently hit this again)
More generally, my understanding is that the preferred solution for this would be to use other scripts to generate compilation databases. I don't necessarily mind this, but it is somewhat confusing that there exists a first class full-compilation-database on all C++ targets, but that it is essentially broken out of the box.

For the record, I have been using the following script lately:
load("@prelude//utils:utils.bzl", "flatten")
<EMAIL_ADDRESS>"CxxCompilationDbInfo")
<EMAIL_ADDRESS>"CxxSrcCompileCommand")

def _make_entry(ctx: bxl.Context, compile_command: CxxSrcCompileCommand) -> dict:
    args = compile_command.cxx_compile_cmd.base_compile_cmd.copy()

    # This prevents clangd from jumping into `buck-out` using Go To Definition,
    # which significantly improves user experience.
    args.add(["-I", "."])
    args.add(compile_command.cxx_compile_cmd.argsfile.cmd_form)
    args.add(compile_command.args)
    ctx.output.ensure_multiple(args)

    return {
        "file": compile_command.src,
        "directory": ctx.fs.abs_path_unsafe(ctx.root()),
        "arguments": args,
    }

def make_compilation_database(ctx: bxl.Context, actions):
    db = []
    for name, analysis_result in ctx.analysis(flatten(ctx.cli_args.targets)).items():
        comp_db_info = analysis_result.providers().get(CxxCompilationDbInfo)
        if comp_db_info:
            db += [_make_entry(ctx, cc) for cc in comp_db_info.info.values()]

    db_file = actions.declare_output("compile_commands.json")
    actions.write_json(
        db_file.as_output(),
        db,
        with_inputs = True,
        pretty = True,
    )
    return db_file

def _gen_impl(ctx: bxl.Context):
    actions = ctx.bxl_actions().actions
    ctx.output.print(ctx.output.ensure(make_compilation_database(ctx, actions)))

gen = bxl_main(
    impl = _gen_impl,
    cli_args = {
        "targets": cli_args.list(cli_args.target_expr()),
    },
)

What I like about is is that:

It materializes all relevant inputs, but does not actually build the targets, so only e.g. argsfiles and codegen are run, automagically
It heavily leverages the prelude so that there's a good chance that it is correct
It doesn't use the relatively heavy compilation database subtargets, which I found difficult to work with
It is split out so that other scripts (e.g. for clang-tidy integration) can reuse the core logic to generate a compilation database
It's quite small and easy to grok


An issue with issues

As a follow up to the discussion that started here:
https://vrtoolkit.slackarchive.io/vrtk-core-development/page-21/ts-1506097357000601
I'm proposing a few changes to how we manage issues vs. ideas.
Going through the old issue list, like on any big project, can be time consuming. One of the biggest contributors to issue overload (on any project), is the idea issue. The issue list acts as a constant drag on contributors and is a turn off to new potential contributors checking out the repo. A big issue list can sometimes be a warning of a poorly maintained project; which VRTK is not.
The idea issue
At first glance, the idea issue is a good idea. It often identifies something that is missing, or could be missing for a portion of users. It is complete enough, at first glance, to warrant consideration, but incomplete (no code) enough to actually make any progress on.
If we had a whole army of people waiting to consume each idea and prototype it, that wouldn't be a bad thing, but the truth is everyone is busy and idea issues just linger. It's very rare that someone else wants to implement your idea, you need to take the first step.
Proposal 1: No idea issues, only PRs
Idea issues need to be replaced by PRs. The PR should be an attempt to solve the issue
Any idea issue that is created should be labeled idea and closed, with a request from the person closing it asking the original contributor to open an PR with the idea roughed out. It doesn't need to be perfect, but it should make the attempt to start solving the issue.
I think this will help

Reduce low effort submissions and off the cuff ideas
Vet the idea. Many ideas seem good at first glance but fall apart when you start implementing them.
Keep the scope of what VRTK / examples cover. There are good ideas that IMO do not warrant a merge into VRTK. These are game mechanic ideas that although they have similar core elements, end up being custom almost every time.

Proposal 2: Triaged idea issues
Instead of requiring PRs, which may be too much for artists and designers who are not familiar with git and github, we could also have a triage system that upgrades certain issues.
New issues come in and are triaged by a contributor. If the issue is low quality, incomplete, does not have a clear suggested path for either how it can be implemented or clear details of what it needs, it's closed. If it's high quality, it can move to a voting system (emoji reactions), where people can 👍  or 👎 the idea for core contrib.  It can sit in this :+1: feature list waiting for someone to take it on, or ideally, encourage the submitter to work on it themselves.
The issue issue
I do not have any problem with using issues for actual bugs in VRTK. These should be triaged, labeled as actual bugs (or maybe a few other labels we can warrant) and moved.
Thoughts?

I went through some of the issues and here are few observations:
Some of them are too project specific requests. People should ask for generic events and methods so they can implement their desired feature easier instead of asking the support implemented directly in to the core features (ie. climbing stamina or strength).
Feature requests are sometimes too scarce and there should be some sort of list of minimum info required for submitting such issues and some cases a video link or a small ms paint illustration would be good on top of the text description.
Its very hard to see what the actual demand for an issue is no matter if its a bug or feature request. The github voting wont work well as people don't bother to make an account or read long descriptions. IMO we need something like a weekly slack integrated survey bot or just a strawpoll with 2-3 issues listed so people can have a say easily and we know how to prioritize time and demand efficiently. Issues are only picked to the list when enough of contributors see the issue a reasonable one and it does not mean it has to be finished ever or fast. At minimum the results could be linked to the issue if someone has time in the future or we get new contributors. Example survey/poll:
Which of the following feature requests you would like to see implemented?

Movement actions for flying (issue link)
3D switch control (issue link)
FOV tunneling/vignetting as a comfort option (issue link)
I don't need any of these

I think it's clear to see now that there are 2 things in VRTK
Core Mechanics (e.g. grabbing, teleporting, drop zones, etc)
and
Use Cases (how to glue core mechanics together to do something)
A lot of the feature requests could be categorised as Use Cases. These Use Cases can form a different project and therefore keep VRTK core cleaner.
I like the idea of issues on here being either bugs (which there are already labels/states for, investigation required and bug when it's confirmed) and feature requests but the feature then needs to be determined if it's a use case or a core mechanic. any new core mechanic should be given reasonable time for someone to put meat on the bone of the issue, if not it goes to being stale closing soon then if nothing it gets closed.

How are we going to move issues in case someone posts it on the core repo as a feature request, but we decide it's actually a feature request for a use case?
Copy and past, close and link to/from the other repo?

We'll move this discussion to a new issue from @thestonefox


Too hard controls

Can you make arrows scrolling up? pls make this game to be like fnf!!!

Thanks! I'll try. ;)


Support indexing relative to 'last' position (was: Unbounded arity param)

Is it possible to use unbounded arity parameter without being the last parameters ?
The following code
	@Parameters(index = "0", description = "Folder")
	private String folder;

	@Parameters(index = "1", arity = "1...*", description = "Source paths")
	private String [] sources;

	@Parameters(index = "2", description = "Destination folder path")
	private String destination;

is throwing picocli.CommandLine$MissingParameterException: Missing required parameter: <destination>  when called with MyClass folder source1 source2 source3 destination

If you switch on tracing, you can see how picocli is processing these arguments:
[picocli INFO] Parsing 5 command line args [folder, source1, source2, source3, destination]
[picocli DEBUG] Parser configuration: posixClusteredShortOptionsAllowed=true, stopAtPositional=false, stopAtUnmatched=false, separator=null, overwrittenOptionsAllowed=false, unmatchedArgumentsAllowed=false, expandAtFiles=true, limitSplit=false, aritySatisfiedByAttachedOptionParam=false
[picocli DEBUG] Set initial value for field String picocli.CommandLineArityTest$7App.folder of type class java.lang.String to null.
[picocli DEBUG] Set initial value for field String[] picocli.CommandLineArityTest$7App.sources of type class [Ljava.lang.String; to null.
[picocli DEBUG] Set initial value for field String picocli.CommandLineArityTest$7App.destination of type class java.lang.String to null.
[picocli DEBUG] Initializing picocli.CommandLineArityTest$7App: 0 options, 3 positional parameters, 3 required, 0 subcommands.
[picocli DEBUG] Processing argument 'folder'. Remainder=[source1, source2, source3, destination]
[picocli DEBUG] 'folder' cannot be separated into <option>=<option-parameter>
[picocli DEBUG] Could not find option 'folder', deciding whether to treat as unmatched option or positional parameter...
[picocli DEBUG] folder doesn't resemble an option
[picocli DEBUG] No option named 'folder' found. Processing remainder as positional parameters
[picocli DEBUG] Processing next arg as a positional parameter at index=0. Remainder=[folder, source1, source2, source3, destination]
[picocli DEBUG] Position 0 is in index range 0. Trying to assign args to field String picocli.CommandLineArityTest$7App.folder, arity=1
[picocli INFO] Setting field String picocli.CommandLineArityTest$7App.folder to 'folder' (was 'null') for args[0] at position 0
[picocli DEBUG] Consumed 1 arguments, moving position to index 1.
[picocli DEBUG] Processing argument 'source1'. Remainder=[source2, source3, destination]
[picocli DEBUG] 'source1' cannot be separated into <option>=<option-parameter>
[picocli DEBUG] Could not find option 'source1', deciding whether to treat as unmatched option or positional parameter...
[picocli DEBUG] source1 doesn't resemble an option
[picocli DEBUG] No option named 'source1' found. Processing remainder as positional parameters
[picocli DEBUG] Processing next arg as a positional parameter at index=1. Remainder=[source1, source2, source3, destination]
[picocli DEBUG] Position 1 is in index range 1. Trying to assign args to field String[] picocli.CommandLineArityTest$7App.sources, arity=1..*
[picocli INFO] Adding [source1] to field String[] picocli.CommandLineArityTest$7App.sources for args[1] at position 1
[picocli INFO] Adding [source2] to field String[] picocli.CommandLineArityTest$7App.sources for args[1] at position 1
[picocli INFO] Adding [source3] to field String[] picocli.CommandLineArityTest$7App.sources for args[1] at position 1
[picocli INFO] Adding [destination] to field String[] picocli.CommandLineArityTest$7App.sources for args[1] at position 1
[picocli DEBUG] Consumed 4 arguments, moving position to index 5.

picocli.CommandLine$MissingParameterException: Missing required parameter: <destination>

	at picocli.CommandLine$Interpreter.assertNoMissingParameters(CommandLine.java:5568)
	at picocli.CommandLine$Interpreter.parse(CommandLine.java:4797)
	at picocli.CommandLine$Interpreter.parse(CommandLine.java:4694)
	at picocli.CommandLine.parse(CommandLine.java:523)
	at picocli.CommandLine.populateCommand(CommandLine.java:504)

The unbounded arity means that the sources positional parameter consumes all following input from index 1. So the parameter with unbounded arity will effectively always come last.
This is very similar to how in Java, in a method with a varargs parameter, the varargs parameter should always come last in the parameter list. So perhaps the best way to solve this is to swap parameters so that destination comes before sources.

Sure, swapping the parameters would works but I find sources destination order to be more natural.
I tried to set the arity of destination to 0 so I could just used the last entry of sources as the value for destination while keeping a consistent help :
	@Parameters(index = "0", description = "Folder description")
	private String folder;

	@Parameters(index = "1", arity = "1...*", description = "Sources")
	private String [] sources;

	@Parameters(index = "2", arity = "0", description = "Destination")
	private String destination;

Turns out the help will not show destination in usage but is listing the description anyway:
Usage: <main class> [-hV] <folder> <sources>...
Test command
      <folder>       Folder description
      <sources>...   Sources
                     Destination
  -h, --help         Show this help message and exit.
  -V, --version      Print version information and exit.

Could 0 arity parameters be displayed in the usage as well ?

I think we’re on the wrong path here.
I understand what you’re trying to do, but positional parameters with arity zero doesn’t really make sense generally. Also, having a special usage help message format for a parameter whose value is actually captured in the previous parameter is not something I want to support. :-)
If you really want to keep that ordering, I can see two solutions.

Use an @Option for destination. Perhaps make it a required option. Options don’t need to precede positional parameters, so <cmd> folder src1 src2 src3 --destination dest would be valid input.
Make source a single String parameter that accepts a comma-separated list of sources. You’ll have to split this comma-separated list in the application.

Agreed, 0 arity param sounds weird. But I found it strange that even thought destination is skipped in the usage, its description "Destination" shows up on line 5.
I think I will settle for a unique unbounded parameter paths from which I will take the last entry as the destination.

Thanks for raising this topic. I’ve started to think it may be worth supporting some index = last syntax in the future. That would allow something like:
@Parameters(index = “0..$-1”)
String[] sources;

@Parameters(index = “$”)
String destination;

The parsing logic for this is not straightforward though so this will be something for a future release.

One idea is to use negative indexes as meaning "from the end", like Groovy ranges:
http://mrhaki.blogspot.jp/2009/03/use-negative-index-in-groovy-lists-to.html
More examples: http://grails.asia/groovy-substring
So the above example would become:
@Parameters(index = “0..-2”) // all args except the last one
String[] sources;

@Parameters(index = “-1”) // the last argument
String destination;

We should consider also supporting exclusive ranges. Groovy uses the < character for this. For example: 0..<3 would be equivalent to 0..2 (a range containing elements 0, 1 and 2).
Exclusive ranges look a bit more natural when specifying "all args except the last":
@Parameters(index = “0..<-1”) // all args except the last one
String[] sources;

Python use this type of indexing as well so it should be natural to use for most people. I like this :+1:

While this is a nice idea, it turns out this is actually non-trivial to implement.
I don't see myself working on this in the near future.
Closing this ticket.


[Tech debt] Future proofing

To conform to the ECMAscript standard there is some changes we should make sooner rather than later.

[ ] Remove all barrel exports ref: Barrel exports bad (mostly perf issue)
[x] #548
[ ] #552
[ ] #540

CJS/ESM is an easy fix. https://github.com/GustavEikaas/cli-devkit for reference
Barrel export and ambigious imports is a larger job involving regex or some sort of transpiling tool

CJS/ESM interop was fixed but I also had to make a pr to fusion-framework to make the same fixes there


feature: cache services dns path, fix issue 91

Hi. Sorry for unfinished PR.
I just want somebody to review it first 😄
This is the try of solving this issue https://github.com/aacebedo/dnsdock/issues/91
Common idea is to cache dns names as treen, it allows to navigate faster and to resolve names correctly

Is anybody here to maintain?

Yo
i'm going tout review this soon. Regards

Hi !
I am currently integrating your fix but I see that the tests are not valid.
I'll have to fix them before releasing your change.
Regards

Hi, Thanks for response!
Do you want me to fix all the tests? I can make it

Dont sorry I am fixing it :)
Behaviour has changed a little but I thing the new one is more correct in comparison with the previous.
Regards


ref(backend): verify ticket endpoint

Notes for frontend @zuramai:
Endpoint: POST /scan-tiket
Request body:
{
  "code": "string from qrcode"
}

Responses:

Status code 400 (bad request) -- means either invalid request body or validation error (empty string for "code" field)
Status code 406 (not acceptable) -- means invalid ticket
Status code 500 (internal server error)
Every of these errors has the response body shape of:{
  "message": "Friendly text",
  "errors": "Not so friendly text",
  "request_id": "Some text to trace back to Sentry"
}

Status code 200 (ok) -- ticket is verified with response body of: {
   "message": "Ticket confirmed",
   "student": false,
   "email"<EMAIL_ADDRESS> }

I think we need "name" field returned as well

I think we need "name" field returned as well

@zuramai done


add new folder not showing text input for folder name

Theme Issue:

OS: Windowsw 7
Sublime Text version: v3 build 31 26
Materialize version: 2.6.2
Description of issue: add new folder not showing text input for folder name
Steps to reproduce (if appropriate): right click a folder in sidebar, then click new folder
Screenshot of issue (if appropriate):

Theme Request:

Theme Name:
Author Name:
Link to the color scheme:
License of color scheme:

I think this is a duplicate of 51. Check out the known issues that carried over from Material Theme. Basically, you just need to grab the border of the input panel and drag it, and it should fix the missing input field.
Please reopen this issue if there's still anything wrong! :)

thanks! 👍


update mlflow due to breaking change between 1.20 -> 1.22 (read: wtf)

which breaking changes？

i forgot exactly but it made show models fail because the underlying mlflow code changed from GET to POST (or vice versa)


Add list of dependent packages

As it currently stands, only the dependencies for a given package are listed in the Gallery (see here f.ex.).
It would be really useful if the list of packages that depend on that package (i.e. the dependent packages) were also listed, similar to the npm gallery (see here f.ex.).

Hi @peetw ,
Completely agree. We have this feature high on our backlog. Please see issue here: https://github.com/NuGet/NuGetGallery/issues/4718
Closing this one as duplicate.


impersonate Issues

I have one user and admin. when i am trying to login with imponate with admin username pass it's returning error with blow response.
i am using below function for imposonate with paramter ({ userID: userID }). User have alreay administetor permission.
authImpersonate(a: KV): Promise<KV>;

Response ::
{
    "error": "not allowed to impersonate this user"
}

Hello @JBavaliya, and welcome to Corteza!
The error message suggests something is off with permissions (the user trying to impersonate doesn't have a right to do so).
Can I kindly ask you to try to impersonate with a super admin to validate this?

@zmija
Thanks, now it's working

Closed to inactivity.


cmd ref: doc plots diff --targets with revisions usage

Fixes #1425

Would you like to try again to fully close #1425, @imhardikj ?

And please, be careful about using the keyword "Fixes" in PR descriptions when they only address an issue partially.

@jorgeorpinel I'll make PR again to include @pared's suggestion.


cant rename func name with korean word

without double quote, it make error

Fixed by #105. Closing.


Errno::EACCES: Permission denied

Right after installing the gem I got this error white trying to use it.
I18n::InvalidLocaleData at /users/sign_in
can not load translations from /home/vagrant/.rvm/gems/ruby-2.2.2/gems/devise-i18n-views-0.3.4/lib/../locales/pt-BR.yml: #<Errno::EACCES: Permission denied @ rb_sysopen - /home/vagrant/.rvm/gems/ruby-2.2.2/gems/devise-i18n-views-0.3.4/lib/../locales/pt-BR.yml>

I don't know why but it is generating most of the translation files with a very restrictive permission
$ ll -lah /home/vagrant/.rvm/gems/ruby-2.2.2/gems/devise-i18n-views-0.3.4/lib/../locales/
total 124K
drwxr-xr-x 2 root root 4.0K Jul  3 02:47 ./
drwxr-xr-x 6 root root 4.0K Jul  3 02:47 ../
-rw------- 1 root root 3.8K Jul  3 02:47 bg.yml
-rw------- 1 root root 2.9K Jul  3 02:47 ca.yml
-rw------- 1 root root 2.7K Jul  3 02:47 cs.yml
-rw------- 1 root root 2.6K Jul  3 02:47 da-DK.yml
-rw------- 1 root root 2.9K Jul  3 02:47 de.yml
-rw------- 1 root root 4.3K Jul  3 02:47 el.yml
-rw-r--r-- 1 root root 2.7K Jul  3 02:47 en.yml
-rw------- 1 root root 2.5K Jul  3 02:47 es-AR.yml
-rw------- 1 root root 2.9K Jul  3 02:47 es-ES.yml
-rw------- 1 root root 3.0K Jul  3 02:47 es-MX.yml
-rw------- 1 root root 2.9K Jul  3 02:47 es.yml
-rw------- 1 root root 2.5K Jul  3 02:47 fi.yml
-rw------- 1 root root 2.9K Jul  3 02:47 fr.yml
-rw------- 1 root root 2.8K Jul  3 02:47 hu.yml
-rw------- 1 root root 2.6K Jul  3 02:47 it.yml
-rw------- 1 root root 3.3K Jul  3 02:47 ja.yml
-rw------- 1 root root 2.5K Jul  3 02:47 nb.yml
-rw------- 1 root root 2.8K Jul  3 02:47 nl.yml
-rw------- 1 root root 2.7K Jul  3 02:47 pl.yml
-rw------- 1 root root 2.7K Jul  3 02:47 pt-BR.yml
-rw------- 1 root root 2.5K Jul  3 02:47 pt-PT.yml
-rw------- 1 root root 3.5K Jul  3 02:47 ru.yml
-rw------- 1 root root 2.8K Jul  3 02:47 sk.yml
-rw------- 1 root root 4.6K Jul  3 02:47 th.yml
-rw------- 1 root root 2.7K Jul  3 02:47 tr.yml
-rw-r--r-- 1 root root 2.6K Jul  3 02:47 zh-CN.yml
-rw------- 1 root root 2.5K Jul  3 02:47 zh-TW.yml

Any ideas?

Those match the permissions that I see, but I suppose the difference is you installed the gem as root and your web server is not running as root.
I'd be willing to change the permissions if someone could point out what is typical for stuff like this.

@JasonBarnabe: In short, this is the case I am encountering when deploying projects using distinct project users: Each project has its own user and group on the server. We have a distinct user on the server for everyone who is allowed to deploy. The user is a member of each project's group so he can write files to the project's directories. Files get deployed as myusername:project with permission rw-rw-r--.
The webserver then runs as user www-data with read access. So we need the o+r permission set (and o+rx for directories). As this is the default when installing most gems, I think this should be the case in this gem, too.

Update: The webserver (passenger) runs as the project user, so the files have to be at least group readable.

Similar Issue for me, see: https://github.com/mcasimir/devise-i18n-views/issues/86
Although I can implement a workaround by changing the permissions of the gems directory on each deploy this would be really hacky and therefore a cleaner solution within this gem would be great to see!

As a workaround I wrote a small script that changes the permissions for the gems locales directory. This is not a good solution though as it depends on both the ruby version and the gem version – but it's working for now and I hope it's going to be fixed in future versions anyway so I can remove it.
You can find the script here:
https://github.com/Flinesoft/MovieAssistor/blob/25c3030a36381e1bb10f2ab17c4f19e99a6cf4a0/.cloud66/deploy_hooks.yml

I did some stuff and maybe fixed it. When I uninstall and install from the repo I see directories with 755 and files with 644.
Or maybe this only affected the packaged gem. In that case it will be fixed now that I fixed it locally.

I just deployed and it seems to be working for me without the workaround now. But I also changed my server environment in the meantime so that might have also been the reason it's working. What about @djmaze or @adilsoncarvalho, is it working for you guys now?

@Dschee, Tried removing and reinstalling 0.3.4 (through bundler). Unfortunately, the problem remains for me.

@djmaze: Version 0.3.4 doesn't include @JasonBarnabe's changes yet, have you tried installing the master?
I'm doing it like this and it's working:
gem 'devise-i18n-views', github: 'mcasimir/devise-i18n-views', branch: :master

@Dschee Right, the master version is working. But I am not sure if it's because of the changes or rather that I am using the code from the git repository instead of from the gem. I think the gem packaging is the problem here, right?

I'm not sure, but @JasonBarnabe states that it should be fixed now for the packaged gem too. I think we need him to upload a new version first to try that out and clarify for sure.

I've released 0.3.5. Does it fix the issue?

@JasonBarnabe: Looks good here, just updated the project and it doesn't show any errors any more. Thank you very much!

Yeah, thank you @JasonBarnabe, it works now!


No Podfile found in project directory

I created a new module, first it got created with version 0.59 not 0.61+
also when I try cd iOS then pod install, it says
[!] No `Podfile' found in the project directory.
do we have to manually create the pod file? and if yes what is the minimal Podfile contents.

There is an option you can use to generate example with React Native 0.61. I think pod install is not supported for React Native 0.59.

I have updated this utility to work with React Native 0.61, closing now. In case of any further issues a new issue would be much appreciated.


Update rethinkdb.go

Changed erroneous(?) image name.

Wow... I messed that one up good. Thanks. Very weird that the go implementation didn't catch that but I guess they simply do a TCP connection and don't care about anything else.


pgcc does not support -fcommon

the -fcommon option added following the changes in default GCC behavior is not supported by pgcc compiler, causing compilation to fail when attempting to compile with WI4MPI_COMPILER=PGI.

Fix in v3.6.4 from PR#40


not compatible with Erlang/OTP 20

src/triq.erl:468: Warning: call to crypto:rand_bytes/1 will fail, since it was removed in 20.0; use crypto:strong_rand_bytes/1

@debalance: This is fixed in the fork of Triq hosted on GitLab.


[feature request] manage color settings via style settings plugin

For future development direction - for users might be much easier to set colors via style settings, also for theme developers it  might allows to ship a few  predefined color  and theme settings (I like the current color variant :) )
https://github.com/mgmeyers/obsidian-style-settings
Example of minimal settings for theme
https://github.com/lnbgc/obsidian-jotter

Thanks for the suggestion. I'm glad that the theme no longer requires a CSS snippet to change the accent color but it would definitely be nice to make more customizations easier. I'll look into it. :)

Style Settings is now supported in v1.3.0. See the updated readme for examples of the new features, or experiment with the options!


Issues with exclusions

I'm using the default coverage engine settings for kover.  I also have an exclusion to remove the generaged dagger MembersInjector from instrumentation:
        "**/*MembersInjector*.*",

I can see that the exclusions are making their way into the KoverTaskExtension.  However, i still can't get rid of these classes from my report (i'd rather exclude from instrumentation than from the report).  It's also worth nothing that other generated classes BR and BuildConfig are also still showing up despite having patterns to remove them.

I ran into this issue as well and it has to do with the difference in how to specify exclusion in kover vs jacoco.
In jacoco the exclusions are file path based and in kover they are not.
For your example this would exclude the MembersInjector generated by dagger:
com.example.**.*MembersInjector*

Some other examples:
com.example.*.BuildConfig
com.example.*.BR

Hi,
exclusion rules are represented as a set of fully-qualified names of the classes being instrumented.
It's possible to use * and ? wildcards.
@mattinger you need to use the class name, not the file name. The class name does not contain an extension .java, .kt etc. and the path separator /.
Instead of  "**/*MembersInjector*.*", you may write  "*.*MembersInjector*". Also there is no special wildcard **, this is similar *.
In Gradle, JaCoCo exclusion rules are written in the same way, only using wildcards * and ?.

Feel free to reopen if there are additional questions.


chore(dependencies): unpin pytest version, use pytest-runner

Fixes #139
Forced an install of the latest pytest (3.0.6) and found no errors. We should wait until CI works again before merging this, just to be sure.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.

Coverage remained the same at 92.887% when pulling d179e975e994198dd977a42a876a5d103f4880e3 on update-pytest into 911adf6576d2dea3baf2684fad2e99c61d69d6ea on master.


WA-235 Modify confirmation threshold

Description
This PR allows a user to change the safe's threshold. Keep in mind if the actual threshold is higher than one, the transaction should be confirmed by the rest of owners.
SEE:

Travis automatic deployment:
https://staging-36-pr-273-safe-react-gnosis.surge.sh
Storybook book automatic deployment:
https://storybook-staging-36-pr-273-safe-react-gnosis.surge.sh


ReRoute by header value

Expected Behavior / New Feature
ReRoute discovery by header value in addition to path.
Actual Behavior / Motivation for New Feature
I am working on versioning problem for API, that is already running in production.
By the current moment version is passed with every request|response via headers.
I would like to configure Ocelot in a such way, so that v1 will be routed to Api 1, v2 to Api 2 an so on.
It also seems that additional constraints on Path could be used in other scenarios.
I can think about following problem with this approach:
should filtering be done by all headers, that are present in ReRoute or should it be one of the list ?
Current implementation
Right now I achieve the behaviour above by adding middleware. But this seems to be a bad solution.
Dear colleagues, is it possible to achieve described behaviour in any other way ?

@aringlot I think this is a duplicate of #360. I will copy your content over and reference this ticket.
Please share your middleware? Perhaps we can use this as a basis for the feature!

@TomPallister Thank you for you feed back!
I went through #360. It seems that mine solution is even worth than #360.
    public class ApiVersionHeaderMiddleware
    {
        private const string ApiVersionHeader = "X-Api-Version";

        private readonly RequestDelegate _next;

        public ApiVersionHeaderMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public Task Invoke(HttpContext httpContext)
        {

            if (httpContext.Request.Headers.TryGetValue(ApiVersionHeader, out var version))
            {
                httpContext.Request.Path = new PathString($"/{version}{httpContext.Request.Path}");
            }

            return _next(httpContext);
        }
    }

In addition to that there is a ReRoute configuration, that looks like following /{version}/{path}
I am also thinking about doing some coding to add headers to ReRoute configuration and modify your ReRoute discovery routine. But I need your approval.

@aringlot I would welcome a PR, if you do make one please have unit and acceptance tests and if possible update the docs. I’m. How would you make the JSON look?

I am thinking about adding additional field to ReRoute like following:
ReRoute: {
  UpStreamHeaders:[ { Header1: "header1"}, { Header2: "Header2"}]
}

there is a problem with such approach - all headers should be present to much ReRoute. Probably there should be another field to specify either it should be AND or OR operand. By adding such field I try to reduce amount of ReRoutes needed for different sets of headers.

You want something where you can use the header values in the UpstreamPathTemplate I think...not sure how it would look.

@aringlot  Hi Oleksandr!
Would you like to fight for your solution? 😉

Hi @raman-m
no, I am not going to fight for my solution. I am not an active user of the Ocelot anymore and out of context.
I believe there are already better solutions for the original problems.

@aringlot commented on July 19

OK I understand, regarding this issue. Now we have v19 which is .NET 7 release with a lot of features including headers transforms.
Do you have an intention to contribute to Ocelot project?
If Yes,
Could you Sync fork please? Your fork is old and it should be synced!


Delete Project button deletes wrong project

Luckily I was on a testing installation, but I am pretty sure that deleting a test project caused the wrong one to disappear. Will try to reproduce.

I'm unable to reproduce this, so closing.


Dot notation

For your current project it is probably worth learning about "dot notation" (also known as "projection notation"), see Mathematics in Lean 9.2.1.
A common pattern for continuity/differentiability/measurability/... proofs is to build up a term with dot notation and some holes, and refine this (or convert to it if it's not quite perfect).  The dot notation itself saves some typing, and the refine/convert-first setup saves some more typing, by letting Lean formulate the goals for you rather than having to write them yourself as intermediate steps.
It's also often convenient to work primarily with the HasDerivAt predicate, since this lets you build up simultaneously the proof of differentiability and the value of the derivative.

Thanks!  I moved the code to a different file but I think I was able to implement your suggestions.  Will study them carefully later.


test_send_email

docstring could be more descriptive

Now says:
"""Test if the email contains correct text based on donation history."""


Implement RemoveScroll and FocusLock for Improved Accessibility in Modal Component

This pull request addresses issues with users accidentally scrolling outside the modal or tabbing to elements behind the modal. It implements the use of RemoveScroll and FocusLock within the Modal component to enhance accessibility and improve user experience.
Previous accessibility issues:

Accidental Scrolling: When the modal content is larger than the viewport, users could potentially scroll the entire page behind the modal. This disrupts their focus and makes it difficult to interact with the modal itself.
Focus Loss: When using the keyboard to navigate the modal, users might accidentally tab past the modal boundaries and interact with elements on the underlying page. This can be confusing and disrupt their intended interaction with the modal.

Improvements:

RemoveScroll prevents scrolling outside of the modal, ensuring users remain focused within the intended content.
FocusLock maintains keyboard focus within the modal, preventing users from inadvertently interacting with elements outside of it.

By integrating these features, we adhere to accessibility best practices and provide a smoother and more accessible modal experience for all users.

Hi Dear @anjankarmakar10,
Absolutely fantastic work! 🚀 This feature is exactly what we've been looking for. I'll merge your code right away. Thank you so much for your awesome contribution! Your efforts are greatly appreciated. Please feel free to share any feedback, and we're eagerly anticipating your next contribution. Keep up the amazing work!
Thanks
Md Ariful Islam


Error message is not shown in slack message

Hello,
Can you help with config error message. For now it's empty

@kobenguyent  I tried different ways:

or

My actual runner: npx codeceptjs run-workers 6 --reporter mochawesome --reporter-options reportDir='./output',overwrite=false
Both cases I see {}

Please try a different reporter just to see if it works . Thanks.
Am Donnerstag, 17. August 2023 schrieb Exot @.***>:

@kobenguyent https://github.com/kobenguyent I tried different ways:
[image: image]
https://user-images.githubusercontent.com/8436809/261223047-3a09bc59-d6e6-401d-acfd-bf87bebc9d74.png
or
[image: image]
https://user-images.githubusercontent.com/8436809/261223178-c65a9849-47ba-44e2-9faa-bb78ea2ba807.png
My actual runner: npx codeceptjs run-workers 6 --reporter mochawesome
--reporter-options reportDir='./output',overwrite=false
Both cases I see {}
—
Reply to this email directly, view it on GitHub
https://github.com/pablopaul/codeceptjs-slack-reporter/issues/4#issuecomment-1681727912,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAE3FBW3U3X5HZN7QG7VP7LXVW5ZFANCNFSM6AAAAAA3SXWUKE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Also,
messageIntro is not taken from index.js

@pablopaul  @kobenguyent  any thoughts?

Any way how to fix it?

@kobenguyent
very strange that I making changes in utilities.js but application still takes data from node_modules. Seems it's ignoring utilities.js from root.
Maybe you could tell me where u put index.js and utilities.js ?

What command you use to run test and reporter?

@kobenguyent
still something is wrong: reasons are the same or even empty

@kobenguyent  you maybe know how to fix it?

By browser closed u mean: visible: false?

@kobenguyent  any fixes from CodeceptJS what will resolve this issue?


notepad-plus-plus 7.6.5

Raise 404 error not found.
This is a problem of the publisher not an error of AppGet.

Thanks for heads up, it was fixed shortly after you filed the issue.
https://github.com/appget/appget.packages/commit/a29f12d85c83d8ce45c092afa23d5a4cd41c9efd


test-zhihu-forpredict-v4only-title.txt not found

I can't find information about 'test-zhihu-forpredict-v4only-title.txt' from all closed issue, can you provide the url for it, or some example data for me? @brightmart

How do you find  'test-zhihu-forpredict-v4only-title.txt' ,I can't find it.


Expression plots with select time windows

ExpressionSets get a new .crop_time(start, stop) method which crops the expression set between the selected times.

Plus tests!

plot.expression_set() gets a new display_latency_range argument which:

Crops the expression set before passing it to the minimap
Highlights the requested range on the latency axis of the expression plot.

Fixes #395

Hi @young-x-skyee, could you review this please?
@neukym was keen for us to use es.crop(start, stop) instead of es[start:stop], for the same reasons I mentioned here, as well as wanting the time range to be specified in seconds rather than integer indices.  But otherwise it is basically the same as yours!

@young-x-skyee I should have mentioned: no hurry! :)


Fixed Find References Issue in release build

@shubhsnov @narayani28 plzz review

Below is the explanation why Find References was not working with Release build:
in htmlReady function of FindReferencesManager we create SearchResultsView Object, which internally call a function  createBottomPanel. in this function panel is inserted before div element "#status-bar"
$panel.insertBefore("#status-bar");
so when htmlReady function was getting called "#status-bar" div element was not present and it used to fail to insert panel in DOM.  "#status-bar" div element is inserted in DOM by htmlReady function of "widgets/StatusBar". so ""widgets/StatusBar" must be required before FindReferences manager.
I have moved code "require("features/FindReferencesManager");" in brackets.js after "require("editor/EditorStatusBar");"
in DebugBuild it was working because in debug build files are loaded in order of file tree structure in Project root, not based on the order it is required in brackets.js


Can you provide an example intergration with featherjs v5 with typescript

I'd be grateful for an example as well.

We will probably integrate f-a-m with Typescript in a Feathers 5 app in the next weeks. Is already someone working on an example? If not, maybe (hopefully...) we can provide one later.

an example with schema and resolvers is necessary imo, as it seems to be the recommended way now

Watching this one...

Would be very useful.
Thanks


The problem is pool

for (i in [1,2,3,4,5,6,7,8,9,10]) {
    pool.query(igaccountsUpdateSql, [row.id], function (err, rows) {
                    if (err) throw err;
     });
}

pool.end();

Querys not execute. pool.end(); fast close pool, then mysql error pool is closed.

Hi! This is a common problem when learning Node.js/event loop-based runtimes! You are actually calling pool.end too early, because you are not waiting for the calllback to run. You need to call pool.end after you have completed running your queries. A simple change to your example to do this would be the following:
var cbs = 0;
for (i in [1,2,3,4,5,6,7,8,9,10]) {
    pool.query(igaccountsUpdateSql, [row.id], function (err, rows) {
                    cbs++;
                    if (cbs === 10) pool.end();
                    if (err) throw err;
     });
}


Add my regionalindicatorfix for reactionlog cc

Please describe the changes this PR makes and why it should be merged:
This makes regional indicators (the letters used to make up flags etc... show in the reaction log embedded messages). Without this fix, when people react with them it shows no image for the emoji. I made this fix a while ago but just forgot to submit it, it should work for a while without any changes (my original fix repo is here) https://github.com/successtheman/YAGPDB_reactionlog_regionalindicatorfix
Status

[x] Code changes have been tested on an instance of YAGPDB, or there are no code changes
[x] I have read and followed the contribution guide
[x] I have written documentation for my changes, or there is no need to (documentation not needed because it is a simple one line replacement)

This is an upstream issue (see iamcal/emoji-data#167), so this specific pull request is a likely decline.
Consider contacting upstream — unless you can guarantee that you will keep up with additions to the emoji set.

This is an upstream issue (see iamcal/emoji-data#167), so this specific pull request is a likely decline.
Consider contacting upstream — unless you can guarantee that you will keep up with additions to the emoji set.

Going to submit a PR to fix img-google-136 at least


+[ZWATCH_NOW√18+!] Sophie Rain Spiderman Viral Leaked Video 2024 Original NOW On Social Media X Telegram [Trending√S.E.X.70K]

11 sec ago Sophie Rain Spiderman Leaked Video Viral On Social Media. +[ZWATCH_NOW√18+!] Sophie Rain Spiderman Viral Leaked Video 2024 Original NOW On Social Media X Telegram [Trending√S.E.X.70K]

Sophie Rain Spiderman's newest video has gone viral, capturing the attention of internet users and sparking extensive conversations across social media. This emerging digital creator, known for her engaging content, particularly her recent Spiderman-themed video, has seen a significant rise in interest from fans eager to find out where they can watch the full version. Many are turning to platforms such as Instagram, X (formerly Twitter), and Discord to access her content.
As the excitement builds, fans are actively sharing their reactions online, showcasing the powerful influence of social media in elevating creators like Sophie Rain Spiderman into the spotlight. With her unique style and creative flair, she has quickly established herself as a prominent figure in the digital landscape, leaving many curious about her upcoming projects and content.
[Trending√_S.E.X√NOW!]


Remove deprecated context_names parameter

Closes #37
The context_names parameter was deprecated and replaced with context_fields in Rolling before the Humble release, so we can remove it now.
I've also changed "names" to "fields" in a printed message.
Signed-off-by: Christophe Bedard<EMAIL_ADDRESS>

CI testing --packages-above tracetools_trace:

Linux
Linux-aarch64
Windows

Forgot to remove an unused import. Re-ran CI and updated my comment above.

Alright, CI looks good. Test failures in the GitHub CI jobs are unrelated.


Support for Favourite

Might be good to standarize on a spelling of "favorite", since that's what the Proto files say. :)

Great, updating to the latest version I could set favorite with $pokemon->favorite($pkm_id,true);. Now I want to remove, I tried with $pokemon->favorite($pkm_id,false); but it didn't work. Any advice?
Thanks man!

Try $pokemon->favorite($state), as the method is defined.
No need to pass the Pokemon ID as you are calling this on the Pokemon object.


📝 Docs - How to create a Power Automate Flow and connect it with QnA

Cc: @jimmidier @adamcogan

Hi
Pain

We have two Power Automate Flow to sync data from SharePoint page "Where do you want to go?" to QnA maker. We need to create a documentation on how to create a power automate flow and how we can connect them with QnA maker.
Suggested Documentation

Tasks

[ ] Create a documentation.

More Information

Here are the two flow that had been created. Please ask scrum master to share those two flows with you when you designing this documentation.

SophieBot - Add QnA from SharePoint Page.
SophieBot - Dev - Refresh QnA Maker When SharePoint Page Modified
SophieBot - Prod - Refresh QnA Maker When SharePoint Page Modified

Ideally, we need only one flow to refresh the QnA, but in this case, we needed second flow to get data in HTML format bceause our SharePoint page is .NET webpage which is not supported by QnA Maker. So, in the QnA Url, we have set the link as a second flow trigger.
Screenshots

Figure: Flow to refresh QnA when SharePoint Page gets modified

Figure: Flow to get HTML content from SharePoint page
Definition of Done

[ ] All tasks are updated and closed
[ ] No high priority defects/bugs are on that user story
[ ] Code reviewed by one other team member (e.g. Checked by Bill)
[ ] All acceptance criteria have been met
[ ] Deployed to Dev
[ ] (If implemented) Pass automated UI testing
[ ] (If not implemented above) Do a manual test on all supported commands (at least one for each LUIS intent) against Dev
[ ] Complex code is documented (removing technical debt)
[ ] Deployed to Production
[ ] Add description about the changes for the PBI
[ ] Tick off the definition of done tasks in the PBI
[ ] (Optional) A Done Video, particularly for PBI with multiple stages

Thanks!

Hi Ravi,
I think we can split it into 2 parts,
The first part is how to intergrate existing web page with SophieBOt
The second is how to automatically update QnA maker using power automate and SharePoint
Do you Agree?
Thanks,
Jack


CartoDB using PostgreSQL != localhost

I'm trying to configure CartoDB using a postgresql server which is running on another virtual machine. I'm running into a lot of issues. Wondering if I misunderstood something, but it runs fine with same configuration and postgresql available at localhost.
The output I receive when running the create_dev_user script in the failing situation is the following:
[sequel] Created database 'carto_db_development'
** Invoke db:migrate (first_time)
** Invoke db:migrate:load (first_time)
** Invoke environment
** Execute db:migrate:load
** Execute db:migrate
rake aborted!
PG::Error: FATAL:  database "carto_db_development" does not exist

Double-checked postgresql database and actually it is not created.

Experienced this problem with docker-compose v1.5.1, seems there is an issue with regard to docker networking (which currently is under experimental support). Connection between editor and postgreSQL is suddenly closed and, therefore, carto_db_development database is not correctly created and populated. This is not happening if containers are run individually using docker cli.
Apologies in case you have spent some time on that worng issue.


ntag2xx updated compatibility

Hi, I've added ntag2xx_WritePage function in Adafruit_PN532/PN532.py to enable ntag2xx write compatibility and I've also added a read and a write example to show how this works.
This changes are based on the PN532 Arduino library and are working on a compatible card.

Works well on my system with the Arduino NFC breakout board and NTAG203 tags.

hiya - we've re-written this library to support circuitpython/python, i2c and uart as well! your fix was hand added there. thanks! https://github.com/adafruit/Adafruit_CircuitPython_PN532


CSM-337 Extrapolate timestamps in case of slot duration change.

https://issues.serokell.io/issue/CSM-337
Most of the work was done by @ajnsit - https://github.com/input-output-hk/cardano-sl/pull/1107
There are some things I need to fix (imports), comments, but this should be it.
I found this code kind of confusing, it seems to be scattered everywhere.
@gromakovsky Can you take a look at this? The most confusing is the fact we track two epoch - the last one and the penult one. I don't even know why, this might be wrong, depending on how we track that - https://github.com/input-output-hk/cardano-sl/compare/ksaric/CSM-337?expand=1#diff-9750ad2f43ce45f68873f4b73aa3c651R87

I am going to review it and I can already say that I think commit message (as well issue title) is outdated, because instead of extrapolation we decided to store full slotting data.

The most confusing is the fact we track two epoch - the last one and the penult one.

First, I need to clarify one thing which is not obvious: the last epoch means the last epoch for which we know EpochSlottingData and the penult epoch means the penult epoch for which we know EpochSlottingData. So the last epoch is not the current epoch. Actually, we store EpochSlottingData for the current epoch (called penult) and for the next epoch (called last).
The reason we store slotting data for the current epoch is quite clear: it's needed to be able to know the current slot. The reason we store slotting data for the next epoch is that sometimes we need to know when the next slot starts and it can in another epoch.
The reason we don't store slotting data for future slots is that we don't know it (it can be changed).
The reason we don't store slotting data for older slots is that we don't need it and want to save some space. This sentence is no longer true and this PR is dedicated to changing it (so that we will store slotting data for all epochs).
Maybe I am too verbose, but I hope it answers this particular question.
Another question is whether we still need to store slotting data for these two epochs. Conceptually we know that we always know slotting data for at least two epochs. Whether we need to make it explicit or not is mostly a convenience concern. I think it should be more convenient to make it explicit that we have at least 1 EpochSlottingData (in this case getLastEpochIndex doesn't have to return Maybe), but probably it's won't be beneficial to store more than 1.
probably I had to think about it earlier

I'm not sure how having all EpochSlottingData (having it for all Epochs) changes the fact that we have penult and last epochs.
My understanding is that we still conceptually have these two, we just have others as well :up:

The reason we store slotting data for the current epoch is quite clear: it's needed to be able to know the current slot. The reason we store slotting data for the next epoch is that sometimes we need to know when the next slot starts and it can in another epoch.

This cleared up some things, thanks.
But it would be more understandable (to me, at least) to rename:

penult to current
last to [next, following, ...]

I'm not sure how having all EpochSlottingData (having it for all Epochs) changes the fact that we have penult and last epochs.

It doesn't change this fact, we still have at least two EpochSlottingDatas. But I don't see any place where we need to rely on having at least two EpochSlottingDatas. However, I see some places where we rely on non-emptiness of SlottingData.
And making penult epoch slotting data somewhat special complicates things. So I propose to make only last epoch slotting data special (and maybe write somewhere that it's the next epoch after the current one).

But I don't see any place where we need to rely on having at least two EpochSlottingDatas

But you wrote:

The reason we store slotting data for the next epoch is that sometimes we need to know when the next slot starts and it can in another epoch.

So we need the next slot information. And we need current slot information. So that makes both of them required? And that's two?

And making penult epoch slotting data somewhat special complicates things. So I propose to make only last epoch slotting data special (and maybe write somewhere that it's the next epoch after the current one).

:confused:
There is no emoji for "head explodes", so I had to stick with "confused". Not sure what you mean by "special"? Do you mean we only need last epoch EpochSlottingData and don't need the current epoch EpochSlottingData?

Ok, I will try to explain slightly differently.
Previously we stored exactly two epoch slotting data. There is no data type representing a map with size = 2, so we it was implemented by defining ad-hoc data type with 2 EpochSlottingDatas and one EpochIndex. We could also implement it as Map EpochIndex EpochSlottingData, it wouldn't be much different. It's a trade-off between safety of operations and extra amount of code.
In this PR we want to store all epoch slotting data from 0 to next, where next must be current epoch + 1. We have various options:

Store it as a plain map.
Store it as a custom type with invariant that it has at least 1 item (there are different ways to represent it, but the main idea is that this invariant belongs to this type.
Same as (2) but at least 2 items.

Looking at the code, I see advantage of (2) over (1), because in some places you really need to have getLastEpochSlottingData :: m EpochSlottingData (w/o maybe). So it's move convenient to make it invariant of SlottingData rather than check it in places where it is used. However, I don't see places where it is necessary to access penult epoch. Maybe they exist in the current code, but they can be eliminated. I didn't dig very deep, can't say for sure.
Conclusions:

Previously we stored penult epoch slotting data explicitly because we wanted to store exactly two (not more and not less) epoch slotting datas, not because we wanted to rely on its presence (maybe I am forgetting something though, but I believe it's true).
This is all about trade-offs between safety and amount of code and in general there is no ideal solution. For example, getCurrentSlot still returns Maybe even if we know that EpochSlottingData for the current epoch exists in SlottingData. And in some places we implicitly rely on this fact (we know it, but we don't guarantee it in code and we have to use getSlotStartEmpatically which can throw an exception).
If you see an advantage in statically ensuring that SlottingData contains at least two items (not 1), I don't mind. But if there is no advantage, I think it's better not to do it, it will make code simpler.

@gromakovsky Ok, so I fixed some things.

Your review points
I fixed the names which were confusing to me:

penult -> current
last -> next

I added the M suffix to the typeclass functions, seems to be more informative and doesn't conflict with the functions from Util -https://github.com/input-output-hk/cardano-sl/pull/1217/files#diff-2bc1b266461390adfcf818e8e64cfa11R17
https://github.com/input-output-hk/cardano-sl/pull/1217/files#diff-3aacd87b5c16bb262833bd963cafd4aeR221

@gromakovsky Ready for re-re-review.

I hope to do it today (didn't have time for it yesterday).

@ksaric I will review now, I have to dive into context initially. wait for my review plz

@pva701 No problem, I have to fix @gromakovsky review comments anyway. I think I'll do it today.

There is something mess w/ SlottingData, isn't there? I might be mistaken but it seems to be stored in the database and used only in awkward wallet functions :(

Which mess exactly?

Which mess exactly?

where do we use it? (excluding wallet)
previously I saw mentions of this datatype in MonadSlotsData now it's absence and I thought it's enough to have HashMap EpochIndex EpochSlottingData to cover whole our use cases

It's going to be used in explorer also since we need to have block/slot times reconstructed
But that is SlottingData, just wrapped around that. Probably misunderstood you there.

where do we use it? (excluding wallet)

We store in DB and in SlottingVar. We need this map to be able to find the time when some old slot started (getSlotStart). Previously we were storing this data only for two epochs.

previously I saw mentions of this datatype in MonadSlotsData now it's absence and I thought it's enough to have HashMap EpochIndex EpochSlottingData to cover whole our use cases

SlottingData is HashMap EpochIndex EpochSlottingData with size ≥ 2.
But I think we should change it to a newtype over Vector EpochSlottingData.

Looking at the code, it seems to me that MonadPollRead should also have/be MonadSlotsData. So it should be class (Monad m, MonadPollRead m, WithLogger m) => MonadPollRead m where ...
Also, seems Pos.Update.Poll.DBPoll is using a redirect as well (if I even understand what a redirect is).
Can I add MonadSlotsData to MonadPollRead?
Or is the verdict to remove MonadSlotsData still the same?
Well, I guess I can try to explain why I don't like the idea of removing MonadSlotsData - migrating to Reader SlottingVar. I guess people have a lot of work, but I think I have something of value to contribute. I could be wrong :grin:
Let's suppose we remove all functions from MonadSlotsData and leave just getSlottingData and setSlottingData which is something Reader SlottingVar will have (effectively).
The functions that currently deal with SlottingData which is currently in Pos.Slotting.Types in the new PR https://github.com/input-output-hk/cardano-sl/pull/1217 are currently pure. That's just plain wrong and I will fix it.
They should have a MonadSlotsData or MonadSlots constraint on them since they are being called directly in functions which have MonadSlotsData, which is a way to add functionality to a context by using it where the context is being used.
So when we migrate all those functions so they have a MonadSlotsData or MonadSlots constraint we will be unable to call any function that deals with MonadSlots unless we have that constraint in the signature. That means that we will need to add that signature to functions like updateSlottingData in Pos.Update.Poll.Logic.Base, and others.
So, we effectively have specific functions that are not coupled/organized in any way (like they would be using a typeclass, we would not have to import them individually and we would know what functions are being used from the typeclass signature) that are working with a constraint that is required. And we need to fix all the function constraints from MonadPoll to add MonadSlotsData/MonadSlots/Reader SlottingVar in both cases, since that seems like a missing piece.
Let me sum it up. In that case if we use a function, we need to have a MonadSlotsData or MonadSlots constraint. If we have a constraint, the only way to work with that constraint is to use these functions.
So what I see is a -> b & b -> a. In other words, these functions are the typeclass (belong in the typeclass).
I hope this makes (more?) sense than my previous ramble.

@gromakovsky @pva701 @volhovM  I fixed your review comments. I left a Map to represent SlottingData. Ideally I would use Stack but I don't think it's really critical now (Vector is an another option as you mentioned @gromakovsky).
I doubt anyone is going to read that monstrosity above :up: so let me sum it up here.
I think we should add SlotsDefaultEnv to MonadPoll.... We have the exact same thing on MonadPoll... but it's using pure functions since it has getSlottingData and putSlottingData - the thing we want to leave in HasSlottingVar - so it's basically the same.
If we go with "pure core, impure shell" approach, then we need to move (pure) functions from Pos.Slotting.Types to Pos.Slotting.MemState.Holder and remove all extra functions from Pos.Slotting.MemState.Class leaving just what you guys mentioned - https://serokell.slack.com/archives/G3K2W68AK/p1502121252517779 which is type SlotsDefaultEnv ctx m = (MonadReader ctx m, HasSlottingVar ctx, MonadIO m)?

I left a Map to represent SlottingData. Ideally I would use Stack but I don't think it's really critical now (Vector is an another option as you mentioned @gromakovsky).

Ok, Map works but is quite confusing, because indices are just sequential numbers. I would like to change it to Vector, but after this PR.

I doubt anyone is going to read that monstrosity above 🆙 so let me sum it up here.

I read it, but to be honest I didn't get most of that message :/

I think we should add SlotsDefaultEnv to MonadPoll.... We have the exact same thing on MonadPoll... but it's using pure functions since it has getSlottingData and putSlottingData - the thing we want to leave in HasSlottingVar - so it's basically the same.

Adding MonadSlotsData to MonadPoll is conceptually wrong and error-prone.

The reason it's conceptually wrong is the following. MonadSlotsData is needed to implement MonadSlots whose main goal is to make it possible to know current slot. Contrary, the way MonadPoll uses slotting data is that it actually updates it depending on the current blockchain state!
The reason it's error-prone is that if we use more than one type class to provide access to data maintained by update system, we need to use more custom implementations.
Look at Pos.Update.Poll.Trans. It contains instances of MonadPollRead and MonadPoll for PollT transformer. It stores PollModifier internally which contains modifications of underlying data. MonadPollRead instance takes this modifications into account.
MonadPoll instance doesn't affect actual state, but instead it stores modifications, which are applied later (or not applied if verification fails).
If we use MonadSlotsData to operate with slotting data, we will need to also define custom instances for PollT. Using MonadPollRead and MonadPoll for this purpose fits more naturally into the whole picture.
To sum it up:
There are two ways to look at slotting data: slotting data to get current slot and slotting data for update system.
MonadSlotsData provides data to get current slot. There is nothing smart, it's just a reader over TVar. It deals with in-memory data.
MonadPollRead and MonadPoll both deal with whole data maintained by update system (read-only access vs writeable access). Slotting data is maintained by update system. There is some smart stuff, specifically PollT which uses custom instances. Also there is RollT. It's quite convenient to put this data into the same class, instead of using multiple classes.
It deals with global state which is stored in database.

Is the general idea clear? Do you still think we should make MonadSlotsData part of MonadPollRead?

@gromakovsky It's probably more complicated than I can see. What I currently see is PollT + [PollModifier] = Current state when the verification passes. And AFAICS, we aren't using PurePoll, right? So it's the duality PollT <-> RollT where PollT contains data for modification and RollT for rollback.
I have more comments but I'm sure you see more, so I'll just drop it. I'm still too unfamiliar with a lot of the project.

@gromakovsky I fixed your review points and simplified MonadSlotsData like you guys wanted. At least I hope this is what you wanted to do.
Anyway, there are two issues left:

https://github.com/input-output-hk/cardano-sl/pull/1217#discussion_r134092738
https://github.com/input-output-hk/cardano-sl/pull/1217/commits/8d295510df3588a4d40e212d94df94ccb72f1d97#diff-5de96c18609f31b47890c0bea47d7f04R99

The first one seems kind of "blinking red lights" to me, or maybe I misunderstood how it works there.
I think the second one was here all along and it might be a cause for some of the bugs (like wallet timestamp bugs?). I will try to fix it tomorrow, will fix it on Monday if I don't make it tomorrow.

The second one is fixed now, right?

The second one is fixed now, right?

Yes, it's fixed, even though it wasn't as bad as I thought.

I added these as issues:

https://issues.serokell.io/issue/CSL-1528
https://issues.serokell.io/issue/CSL-1529

When I finish my current tasks (mostly regarding explorer) I can switch to these. The first one I can do relatively easy, the second one is more difficult and I would need some (a lot?) feedback before.

@gromakovsky I wanted to run it first, but ok :scream:

Oh, sorry 😬


Change the wording of of the UI "log" feature

The UI has a "Show log" button which produces a list of system events. It is a log of sorts (intended for users), but it could be confused with the server's log, which is a traditional UNIX log for system administrators and developers and shows system-level messages. Specially if this log is made accesible through the UI in the future.
Change the naming (to "Events", maybe) so that "log" only refers to the low level logs.

My two cents: Event log or Past events

Yes... I would try to avoid the word "log" altogether if possible. Windows uses "Event viewer" for its feature, although it's actually the equivalent of UNIX's system.log. Drupal calls it "Watchdog" (??!). Past Events is probably better.

Fixed in 82136cdfecab3e4309432ea93ec6aafc766797d6


Dropdown Menu: Should .opens-left and .opens-right have to be added manually?

If you have a dropdown menu, the class .opens-left or .opens-right will be added, this element decides which way your dropdown menu sub-items will open.
However, this class is added via JavaScript with the following logic: If the menu is floating right, add the .opens-left class, otherwise add the .opens-right class.
Should this element have to be added manually? The drop-down menu is often used inside of .top-bar-right, which floats right. This creates the following:

As seen in this example, there is plenty of room for the items to open on the right. However, since this menu was built using the topbar, it automatically gets the .opens-left class.
Are we assuming since the menu is floating right, it is going to collide with the edge of the screen? Don't we have edge detection to prevent that?

@JeremyEnglert - same issue at my end.  Did you get any further with this?
Cheers,
Will

The .opens-left and .opens-right classes are set by the dropdown menu plugin in js. It's the same issue as #9042
With pull request #9950 you'll be able to use data-alignment="left" to force the alignment left.

Thanks for the quick response on that.  Will take a look.
Cheers,
Will

I believe this was fixed with #9950


error while joining rooms simultenously

https://github.com/wxyz-abcd/node-haxball/blob/a175ec7f6ba0ca98fe44e48ee259d3a8d76bf9bb/src/index.js#L6031
TypeError: Cannot read properties of undefined (reading 'appendChild')
When i tried joinNRandomRooms.js, got this error. Also, it triggers at start of script immediately

We have to wait for "ready" event before we can join a room:
_haxBall.on("ready", () => {
_haxBall.joinRoom({
...
});
});


Squash re-evaluation

Does Squash make sense as an ike strategy?

[ ] Understand how it works right now
[ ] Understand the Envoy filter and if it's overlapping with ike
[ ] Permission issues on Openshift
[ ] Squash CLI 'How to integrate'

Closing due to lack of activity in the target project.

Closing due to lack of activity in the target project.


Ensure secret field order is correct

Description
This PR ensures the secret field order is correct by using ordered props. Assets may need to be regenerated from other changes (e.g. props can only be ordered on recent main) in order to see this effect.

bors merge


Generalise parallel code.

Parallel code is currently replicated across the system, it would be good to have a generic interface to do this.
I've written a thing that does this. We could start from here?
https://github.com/bschroeter/blush

Do we want to look into graph dependency architecture? https://networkx.org

This can be done quickly if we leverage Blush, but depends on scope.

If we are going into graph dependency, then we'll need to use cylc. No reason to duplicate the tools.


Textures from different models with same base name are reused in Ogre2

The Ogre 2 plugin is using a texture's file name to uniquely identify each texture. This means that all textures called texture.png will be treated as the same, even if they're in different directories.
For example, all (most?) models in this collection have texture files called texture.png. This means that all models will use the texture from the first model. For example, load this world on ign-gazebo:
world.sdf

<?xml version="1.0" ?>
<sdf version="1.6">
  <world name="shapes">
    <plugin
      filename="ignition-gazebo-physics-system"
      name="ignition::gazebo::systems::Physics">
    </plugin>
    <plugin
      filename="ignition-gazebo-scene-broadcaster-system"
      name="ignition::gazebo::systems::SceneBroadcaster">
    </plugin>

    <gui fullscreen="0">

      <!-- 3D scene -->
      <plugin filename="GzScene3D" name="3D View">
        <ignition-gui>
          <title>3D View</title>
          <property type="bool" key="showTitleBar">false</property>
          <property type="string" key="state">docked</property>
        </ignition-gui>

        <engine>ogre2</engine>
        <scene>scene</scene>
        <ambient_light>1.0 1.0 1.0</ambient_light>
        <background_color>0.8 0.8 0.8</background_color>
        <camera_pose>-6 0 6 0 0.5 0</camera_pose>
      </plugin>
    </gui>

    <light type="directional" name="sun">
      <cast_shadows>true</cast_shadows>
      <pose>0 0 10 0 0 0</pose>
      <diffuse>0.8 0.8 0.8 1</diffuse>
      <specular>0.2 0.2 0.2 1</specular>
      <attenuation>
        <range>1000</range>
        <constant>0.9</constant>
        <linear>0.01</linear>
        <quadratic>0.001</quadratic>
      </attenuation>
      <direction>-0.5 0.1 -0.9</direction>
    </light>

    <model name="ground_plane">
      <static>true</static>
      <link name="link">
        <collision name="collision">
          <geometry>
            <plane>
              <normal>0 0 1</normal>
            </plane>
          </geometry>
        </collision>
        <visual name="visual">
          <geometry>
            <plane>
              <normal>0 0 1</normal>
              <size>100 100</size>
            </plane>
          </geometry>
          <material>
            <ambient>0.8 0.8 0.8 1</ambient>
            <diffuse>0.8 0.8 0.8 1</diffuse>
            <specular>0.8 0.8 0.8 1</specular>
          </material>
        </visual>
      </link>
    </model>

<include>
<uri>
https://fuel.ignitionrobotics.org/1.0/GoogleResearch/models/adizero_F50_TRX_FG_LEA
</uri>
</include>
<include>
<pose>0 0.5 0 0 0 0</pose>
<uri>
https://fuel.ignitionrobotics.org/1.0/GoogleResearch/models/adistar_boost_m
</uri>
</include>
  </world>
</sdf>

See how the 2nd model uses the 1st model's texture:

As a comparison, change ogre2 to ogre in the world, and see that each models loads its own texture:

I believe this can be fixed by using the whole texture path instead of just the basename here:
https://github.com/ignitionrobotics/ign-rendering/blob/46bf31837a347955a483de6dab3ad45e42370666/ogre2/src/Ogre2Material.cc#L441-L443

If I remember correctly, this was done on purpose so that all the cave tiles on SubT use the same texture. This should be resolved by allowing models to reference each other's textures (https://github.com/ignitionrobotics/ign-gazebo/issues/343) and then doing that for all the cave tiles.

If I remember correctly, this was done on purpose so that all the cave tiles on SubT use the same texture. This should be resolved by allowing models to reference each other's textures (ignitionrobotics/ign-gazebo#343) and then doing that for all the cave tiles.

yes that's correct. Unfortunately we found a significant increase in subt's VRAM usage after changing the basename to whole texture path (since each texture is now treated as unique texture) so we were able to apply the fix.

With SubT over, I'd like a path forward to closing this issue. Do you think we're ready for the proper fix, @iche033? I think that models that want to reuse textures should already be able to refer to those resources directly on the SDF, right?


fix: version

dio_request_inspector depends on dio ^4.0.6 and ondan depends on dio ^5.1.1, dio_request_inspector is forbidden.
So, because ondan depends on dio_request_inspector any, version solving failed.

thank you for reminding, dio versin has been updated


FileSequence can serialised and deserialised into different sequences

Depending on how you construct a FileSequence you can generate a sequence that cannot correctly deserialised into an equivalent object.
For example
>>> import fileseq
>>> fs = fileseq.FileSequence("myfile01.ext")
>>> fs.basename()
'myfile01'
>>> fs.setFrameRange("10-20")
>>> fs.start()
10
>>> fs.end()
20
>>> fs.setPadding("#")
>>> str(fs)
'myfile0110-20#.ext'
>>> fs2 = fileseq.FileSequence(str(fs))
>>> str(fs)
'myfile0110-20#.ext'
>>> fs2.basename()
'myfile'
>>> fs2.start()
110
>>> fs2.end()
20
>>> str(fs) == str(fs2)
True
>>> fs.frameSet() == fs2.frameSet()
False

Since we've made the changes made for #47, it should only effect sequences where the basename ends in a digit or a dash.
Given there is a number of entry points for setting values, and a number of exist points for formatting I'm not sure the best place to enforce validation.

If you are performing your serialize/deserialize by way of using the FileSequence constructor, then the outcome is valid because you are putting the string through another parsing phase. cPickle for instance will make use of saving and restoring the __dict__ for the instance so you end up with the correct results. For other serializations such as json, it isn't supported. You could also manually get and set the __dict__ for other types of serialization.
This works:
import cPickle

cPickle.loads(cPickle.dumps(fs)).frameSet() == fs.frameSet()

Is this still an issue? If not, @walrusVision can you explain what behaviour you would expect in relation to serialization/deserialization? It should be consistent to cPickle to serialize a sequence and get back the same result. But manually calling setters vs using the constructors parser logic may not result in the same outcome.

I would say that serialization/deserialization wasn't the clearest way to express the problem - the problem is that fileseq allows the construction of ambiguous file sequences, where the apparent frame number of any files created by iterating the fileseq.FileSequence will not match their actual frame number. For example
>>> import fileseq
>>> fs = fileseq.FileSequence("/path/to/file1.ext")
>>> fs.setFrameRange("10-20")
>>> fs.setPadding("#")
>>> str(fs)
'/path/to/file110-20#.ext'
>>> fs.basename()
'file1'
>>> fs.start()
10
>>> fs.end()
20
>>> list(fs)
['/path/to/file10010#.ext', '/path/to/file10011#.ext', '/path/to/file10010#.ext', '/path/to/file10013#.ext', '/path/to/file10014#.ext', '/path/to/file10015#.ext', '/path/to/file10016#.ext', '/path/to/file10017#.ext', '/path/to/file10018#.ext', '/path/to/file10019#.ext', '/path/to/file10020#.ext']
>>> fs2 =  fileseq.FileSequence(str(fs))
>>> str(fs2)
'/path/to/file110-20#.ext'
>>> fs2.basename()
'file'
>>> fs2.start()
110
>>> fs2.end()
20
>>> list(fs)
['/path/to/file0110.ext', '/path/to/file0109.ext', '/path/to/file0108.ext', '/path/to/file0107.ext',
...
'/path/to/file0023.ext', '/path/to/file0022.ext', '/path/to/file0021.ext', '/path/to/file0020.ext']

Problems:

The file list produced by iterating fs appears to have frame numbers from 10010-10020 when they were really frames 10-20
It is possible to have another sequence with an identical string representation that produces a different list of files
It is not possible to construct fs1 from a string, without manually setting the range and padding

From our perspective it would be ideal if fileseq would raise some kind of exception when code attempts to produce a string representation of, or iterate over, an ambiguous file sequence - to avoid problems like those above, preventing pipeline code from creating files with ambiguous frame numbers in their name. I can see why you wouldn't want to do this though, so for now we are raising errors for this in our own code. Have a think about ways to handle this nicely, and feel free to close if you don't think fileseq should be involved.
An ambiguous file sequence is simply one where the basename ends in a digit or a -, and the frame range is not empty.

Thanks for clarifying the situation. I can see how that would be a problem if a user was then able to treat that as a string representation which no longer actually worked properly for a sequence they have produced. I will think on this a bit, since it would introduce an exception for previously valid code.

FWIW, we log instances where we are passed arguments that create an ambiguous file sequences, and follow up with the user. We've had one case dealt with so far, and it turned out the user really only needed to create a single file, and not a sequence, so they just changed their code.
We have a few more cases to follow up, but it looks like they are the same error - we can see the user writing to a single file with no frame number, while the file sequence by default creates a file with a frame number added.
For example:
>>> import fileseq
>>> fs = fileseq.FileSequence("/path/to/file2048x2048.ext")
>>> fs.setFrameRange("1-1")
>>> fs.setPadding("#")
>>> list(fs)
['/path/to/file2048x20480001.ext']

and then the user actually writes their data into /path/to/file2048x2048.ext and really didn't need to create a sequence anyway.


Project Call nodes stalling

Current Behavior
Reported by a self-hosted customer - originally here: https://github.com/FlowFuse/nr-project-nodes/issues/68#issuecomment-2099960179

We have been experiencing a problem of return messages suddenly not being delivered for some time now. Multiple versions of NodeRED, multiple versions of Project nodes, multiple versions of NodeJS (on the Windows server). We are unable to reliably recreate the problem. It appears to surface after some time of usage or # of messages (?) of the Project Call node. But hesitant to say this because I've experienced a stall after just 7 messages, while I've also seen it do 60+ without a problem.
A (manual) restart of the calling instance (where the Project Call node is) solves the problem. Obviously, this isn't desirable in a production environment.

With an updated from the end of last week:

It does appear we are getting a time-out from the project call node when no return is received. The problem also appears to rear its head more when multiple people are working with the Dashboard front-end (triggering flows that use the project calls to start Powershell scripts on the Windows based NR instance), and in the case of yesterday he was constantly starting actions. This leads us to believe the number of messages sent over a project call node plays a role here.

Expected Behavior
No response
Steps To Reproduce
No response
Environment

FlowFuse version:
Node.js version:
npm version:
Platform/OS:
Browser:

Linked Customers

Customer name and/or link to HubSpot contact

Adding another update provided by the customer:

We are now able to see which message was sent last (using a queue) to the Project Call node that times out.
I've also enabled a Dashboard on the Windows instance that shows us the last message sent to the Project Out\Return node.
The time-out flow now triggers a message to a Project Test call (to the same Windows instance) and adds the message return time.
When the main Project Call node stops responding, the test Project Call remains in working order.

It appears to us at this time that the Project Call node sometimes does not "catch" the return message sent by a Project Out return node. Thus failing to resume the flow that is built.

For clarification, the issue mentioned above by @robmarcer is on FlowFuse cloud not self hosted (like the OP)
In the instance above, I have checked the dates provided (both here and in other correspondence) and can see no correlation with CI/CD core app restarts.
I am awaiting a meet up with a FF Cloud customer who will be walking me through their process and I will be able to get finer details (like instance/device IDs) for trawling our logs with finer focus than i have been able to during todays investigations.


Merge 5.x into master branch

I've just raised a VOTE for releasing version 5.0-RC2. With that milestone I think that we're getting close to a final release of 5.x and as preparation for that we should re-integrate the branch back into the master branch.


fix: intro social icons

The social icon(s) for GitHub and Twitter are swapped in relation to their link, I assumed this isn't the intended behaviour.
When hovering over the GitHub icon

When hovering over the Twitter icon

@sutairu good catch, thanks for the pull request.


Rules to trigger effect / power

A new feature, to add rules such as player health, hunger, potion status, etc, to trigger on effects / powers on RPGitems.
This may bring more customizable and creative gaming experience.

You want the actual effect vary depends on the player status?
I think it may be difficult to make a uniformed mechanism since it's power-dependent.
It may be better to alter the code of the power which you want to attach the feature to.

Not that complex I think, just enable the power when requirements are met if any rule is set to an item, only enable/disable, not vary.


Upgrade AWS Graviton instance

The ARM instance we currently use to benchmark on AWS is a Graviton 1, which is quite antiquated.
@DazWorrall suggests that there are newer Graviton instances that we could use for benchmarking on ARM, such as m7g.metal, which uses a 3rd generation Graviton chip.

What instance type has been used to run these benchmarks? I need to POC for a project and I've started to run my own benchmarks on ruby 3.3.5 to compare c5, c6g and c7g.xlarge instance.


Next.js & Typescript test with Jest and Enzyme

Hi to all, i'm actually developing an app with Next.js, Typescript, Apollo, GraphQl and other cool stuff. The fact is that i have errors trying to test any component. I get all the time the same error, and i really don't know what/where to look:
TypeError: The super constructor to "inherits" must have a prototype
Does anyone face this error before?
Thanks to all! :)

Please follow the issue template, I believe you already did and then posted here 🤔


Bump helm.sh to 3.11.0, this also gives us containerd 0.6.15

This should address https://github.com/epinio/epinio/security/dependabot/13

Codecov Report
Base: 41.52% // Head: 37.35% // Decreases project coverage by -4.17% :warning:

Coverage data is based on head (715b7b1) compared to base (5d65b3b).
Patch has no changes to coverable lines.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2073      +/-   ##
==========================================
- Coverage   41.52%   37.35%   -4.17%
==========================================
  Files         181      181
  Lines       14617    14617
==========================================
- Hits         6069     5460     -609
- Misses       7744     8350     +606
- Partials      804      807       +3

Flag
Coverage Δ

acceptance-api
?

acceptance-apps
35.83% <ø> (?)

acceptance-cli
?

unittests
8.39% <ø> (ø)

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

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Country code fix

According to https://en.wikipedia.org/wiki/ISO_3166-1_numeric the country codes are different.
703 was actually multiple contained multiple times in the file.

Thanks for spotting htis, this was an error in the original data source (which seems down now :/)


added annotation across all apis

Issue #: https://github.com/bcgov/met-public/issues/1589
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the met-public license (Apache 2.0).

Codecov Report

Merging #2095 (dca6867) into main (0505657) will increase coverage by 0.01%.
The diff coverage is 90.00%.

@@            Coverage Diff             @@
##             main    #2095      +/-   ##
==========================================
+ Coverage   69.47%   69.48%   +0.01%
==========================================
  Files         457      457
  Lines       14541    14550       +9
  Branches     1127     1127
==========================================
+ Hits        10102    10110       +8
- Misses       4249     4250       +1
  Partials      190      190

Flag
Coverage Δ

metapi
78.25% <90.00%> (+0.01%)
:arrow_up:

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

Files Changed
Coverage Δ

met-api/src/met_api/utils/tenant_validator.py
96.00% <50.00%> (-4.00%)
:arrow_down:

met-api/src/met_api/services/authorization.py
90.00% <77.77%> (+0.86%)
:arrow_up:

met-api/src/met_api/config.py
96.59% <100.00%> (ø)

met-api/src/met_api/resources/document.py
69.23% <100.00%> (ø)

met-api/src/met_api/resources/engagement.py
73.26% <100.00%> (ø)

met-api/src/met_api/resources/engagement_slug.py
80.85% <100.00%> (ø)

met-api/src/met_api/resources/shape_file.py
64.28% <100.00%> (ø)

met-api/src/met_api/resources/staff_user.py
78.12% <100.00%> (+0.23%)
:arrow_up:

met-api/src/met_api/resources/survey.py
76.15% <100.00%> (+0.18%)
:arrow_up:

met-api/src/met_api/resources/widget_map.py
58.33% <100.00%> (+0.88%)
:arrow_up:

Please add description of changes


Add EHP and EHB to the HiScore plugin

I think it would be useful if there was a setting to display EHP and EHB of a player on the HiScore plugin
Rates for EHP and EHB can be taken from templeosrs or wiseoldman

GET https://api.wiseoldman.net/players/username/psikoi only returns the cached version of the player's stats and ehp/ehb, so the player would need to be updated for accurate values.
I could create a new endpoint that receives the player's stats and outputs ehp/ehb/ttm/tt200m values, if needed.

Also duplicate of https://github.com/runelite/runelite/issues/720

Ah thanks, I think I searched for "EHB" instead of EHP and didn't see any posts, my bad for not seeing it's a dupe.
Yeah I was also thinking it could be calculated by Runelite rather than taken from those sites, only problem is that the rates do change every now and then, so this would need to be updated to remain consistent with those sites.


Look at combinations of filtering with miQC, mito content, and genes detected

This PR addresses the last points brought up in #105 about whether or not to use miQC in combination with other filtering cutoffs to include in the ccdl_suggests column as part of the colData. Here, I'm adding to the previous notebook of exploring the use of miQC filtering. I am using samples that have been filtered with emptyDrops using lower=200 and testing the effect of different filtering strategies on the sce object.
After filtering I am showing plots of the distributions of UMI/cell and genes detected/cell colored by mitochondrial content along with PCA plots colored by both genes detected and mito content. I would anticipate that if a large population of compromised cells remained after filtering, that these cells with low genes detected and mito content would cluster together in the PCA plot.
The conditions I am testing here include:

miQC pass only
miQC pass or below 10% mitochondrial reads
(miQC pass or below 10% mitochondrial reads) and above 100 genes detected/cell
(miQC pass or below 10% mitochondrial reads)  and above 200 genes detected/cell
(miQC pass or below 10% mitochondrial reads) and above 500 genes detected/cell

I'm putting this in draft form for now just to get some initial thoughts on the plots and to see if this is along the lines of what we are looking for when trying to decide what filtering strategy to go with. In looking at these plots I don't see any big differences between using miQC only and combining with other filtering in terms of the PCA plots. I do think combining miQC with a minimal mito threshold makes sense to me, but that being said, it doesn't appear to have a large effect on the dataset as  I can't see any large visual differences between each of these conditions.

Going through PR's and realizing this was still open. Going to close this for now and will re-open if we want to revisit any of this in the future.


Installing luarocks modules on Linux and Mac shouldn't use sudo

Currently the guide on setting up Lua
States:-

If this fails, you may need to use sudo:
$ sudo luarocks install busted

Though I don't think this is a good idea.
You should only use sudo to install packages maintained by your distributions repositories in the root file system.
Instead of installing with root privileges I think it would be better to guide the user to install using the luarocks --local flag which will install the module in the users home directory, then they will need to add the ~/.luarocks/bin to their $PATH

Agreed. Can you create a PR that fixes this?


Stop docker container using epoch stop command

I rebased on top of master and adapted the sync pubkey parametrization from @hanssv .

PR #942 merged.