Change pytest-xvfb to explicit xvfb run

Description

To remove x11 errors which cause fail negative test results.
Type of change

[ ] Bug-fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

References

How has this been tested?

[ ] example: the test suite for my feature covers cases x, y, and z
[ ] example: all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If I included new strings, I have used trans. to make them localizable.
For more information see our translations guide.

Will merge this tomorrow unless I hear otherwise, thanks!!

I would prefer to check if merging #3127 solves current CI failures.

@Czaki, I just merged #3127

I have no idea how to deal with this:
  [xcb] Unknown request in queue while appending request
  [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
  [xcb] Aborting, sorry about that.
  python: ../../src/xcb_io.c:151: append_pending_request: Assertion `!xcb_xlib_unknown_req_pending' failed.
  Fatal Python error: Aborted

[xcb] Aborting, sorry about that.

😂

I do not have any idea what happens, but I got segfault when running locally with tox.
Here is stack trace:
Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007ffff2c6a63f in _XSend () from /lib/x86_64-linux-gnu/libX11.so.6
(gdb) bt
#0  0x00007ffff2c6a63f in _XSend () from /lib/x86_64-linux-gnu/libX11.so.6
#1  0x00007ffff2c61c4a in XQueryExtension () from /lib/x86_64-linux-gnu/libX11.so.6
#2  0x00007ffff2c55b57 in XInitExtension () from /lib/x86_64-linux-gnu/libX11.so.6
#3  0x00007fff73eda511 in XextAddDisplay () from /lib/x86_64-linux-gnu/libXext.so.6
#4  0x00007fffeb6be97b in ?? () from /lib/x86_64-linux-gnu/libGLX_nvidia.so.0
#5  0x00007fffeb6ae941 in glXDestroyContext () from /lib/x86_64-linux-gnu/libGLX_nvidia.so.0
#6  0x00007fffeb9b3c41 in QGLXContext::~QGLXContext() () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/Qt5/plugins/xcbglintegrations/libqxcb-glx-integration.so
#7  0x00007fffeb9b3c69 in QGLXContext::~QGLXContext() () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/Qt5/plugins/xcbglintegrations/libqxcb-glx-integration.so
#8  0x00007fffb0f947eb in QOpenGLContext::destroy() () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/Qt5/lib/libQt5Gui.so.5
#9  0x00007fffb0f94ac7 in QOpenGLContext::~QOpenGLContext() () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/Qt5/lib/libQt5Gui.so.5
#10 0x00007fffb18b17dd in sipQOpenGLContext::~sipQOpenGLContext() () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/QtGui.abi3.so
#11 0x00007fffb491f465 in cleanup_qobject(_sipSimpleWrapper*, void*) () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/QtCore.abi3.so
#12 0x00007fffb1aff5d9 in sip_api_visit_wrappers (visitor=0x7fffb491f3a0 <cleanup_qobject(_sipSimpleWrapper*, void*)>, closure=0x5556c32edbd0) at siplib.c:13280
#13 0x00007fffb491f0f0 in cleanup_on_exit(_object*, _object*) () from /tmp/.tox/py38-linux-pyqt/lib/python3.8/site-packages/PyQt5/QtCore.abi3.so
#14 0x00007ffff7d1bc2a in cfunction_vectorcall_NOARGS (func=func@entry=0x7fffb4a27860, args=<optimized out>, nargsf=nargsf@entry=0, kwnames=<optimized out>) at Objects/methodobject.c:459
#15 0x00007ffff7cd7013 in PyVectorcall_Call (callable=0x7fffb4a27860, tuple=<optimized out>, kwargs=<optimized out>) at Objects/call.c:199
#16 0x00007ffff7e59527 in atexit_callfuncs (module=<optimized out>) at ./Modules/atexitmodule.c:87
#17 0x00007ffff7df1b2d in call_py_exitfuncs (istate=0x55555555cc10) at Python/pylifecycle.c:2236
#18 Py_FinalizeEx () at Python/pylifecycle.c:1183
#19 Py_FinalizeEx () at Python/pylifecycle.c:1154
#20 0x00007ffff7e16d35 in Py_RunMain () at Modules/main.c:646
#21 0x00007ffff7e1748a in pymain_main (args=0x7fffffffe6a0) at Modules/main.c:674
#22 Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at Modules/main.c:698
--Type <RET> for more, q to quit, c to continue without paging--
#23 0x00007ffff7a59565 in __libc_start_main (main=0x555555555060 <main>, argc=9, argv=0x7fffffffe808, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>,
    stack_end=0x7fffffffe7f8) at ../csu/libc-start.c:332
#24 0x000055555555509e in _start ()

So it looks like there is a problem with some OpenGL Widget destroy. Did you have any idea which PR lately plays with such objects?

Do we have a sense if we still want to go with this approach? Do you think it might help #3034 which has quite a lot of test fails that are hard to pin down?


NIFI-9233 - Improve reliability of system integration tests

Description of PR
Alter CI logic of system-tests such that they are only run on a schedule on the base repository.  This is to avoid resource contention caused by repo forks also scheduling system tests to run at the same time.
When we re-enable system tests to run on pushes, we might re-evaluate this approach.  It should be possible to run system tests on forks, just not on a (shared) schedule.  The situation we want to avoid is having all enabled forks (potentially hundreds) simultaneously requesting macos and linux build nodes for an operation that is expected to take ~1 hour.  Hopefully this will help the system-test suite to run with greater stability.
In order to avoid the potential for resource contention at 0000Z with existing forks (who have not pulled this change), adjust the daily schedule trigger time.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[X] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[X] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[X] Has your PR been rebased against the latest commit within the target branch (typically main)?

[X] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[X] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[X] Have you verified that the full build is successful on JDK 8?
[X] Have you verified that the full build is successful on JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.

We eventually want to re-enable the system tests for pull requests.  There doesn't seem to be a way to limit the cron trigger to a certain owner, while allowing all repo owners on a different trigger.  Cancelling this PR.
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule


Approved provider not appearing in app

Hi - WitterFTSO (PR #31) was merged a few minutes before BeamFTSO (#32) and 4DadsFTSO (#33). However only Beam and 4Dads is showing in the app as a provider. Is there some mistake in the WitterFTSO PR or anything I can do at this point? Thanks!

Yes the merge removed the chain ID row, detected and adjusted.


Use csv matching functionality to assign layer kinds

Creating kinds for layers is usually implemented as a lookup. Now that we have the csv matching functionality, we should consider transitioning the kind assignment to a csv too.

Looking great, I don't see any regressions and much simpler to read and maintain :)


Problem with package "bower-asset/blueimp-file-upload"

Hello,
I have problem with package "bower-asset/blueimp-file-upload", seems the problem about ignored files.
In blueimp-file-upload and required packages blueimp-canvas-to-blob, blueimp-load-image, blueimp-tmpl I don't see any *.js files, *.css files or others. Only subdirs and files .gitignore, .jshintrc.
In package's bower.json (https://github.com/blueimp/jQuery-File-Upload) I see
"ignore": [
"/*.*",
"/cors",
"css/demo-ie8.css",
"css/demo.css",
"css/style.css",
"js/app.js",
"js/main.js",
"server",
"test"
]

The "/*.*" in the first row related only to files in main directory, not for subdirs.
I've used the latest version of the plugin via composer-update.sh:
#!/bin/bash
composer selfupdate
composer global require "fxp/composer-asset-plugin:1.0.*@dev" -vvv
composer update -vvv

I have the same problem, was solved by removing the folder "/vendor" and "composer.lock" file, then composer update


Update redis-slave-deployment.yaml

use rvennam/redis-slave:v2 until pushed to ibmcom

kubectl edit deployment/redis-slave
Replace "kubernetes/redis-slave:v2" with "rvennam/redis-slave:v2" and save.
To know the status, use below:
kubectl rollout status deployment/redis-slave
Check the status of deployments now using:
kubectl get deployments


Can't find glfw3

Tested on Windows and OSX
After vcpkg install glfw3, add find_package(glfw3 CONFIG REQUIRED) to CMakeLists.txt.
The following error is received:
CMake Error at CMakeLists.txt:12 (find_package):
  Could not find a package configuration file provided by "glfw3" with any of
  the following names:

    glfw3Config.cmake
    glfw3-config.cmake

  Add the installation prefix of "glfw3" to CMAKE_PREFIX_PATH or set
  "glfw3_DIR" to a directory containing one of the above files.  If "glfw3"
  provides a separate development package or SDK, be sure it has been
  installed.

Hi @rgozim, please try again as follows:

Add this code to file CMakeSettings.json on your Visual studio:

      "variables": [
        {
          "name": "CMAKE_TOOLCHAIN_FILE",
          "value": "VCPKG_PATH\\scripts\\buildsystems\\vcpkg.cmake"
        }

Modify the value of generator to Visual Studio ... and comment "buildCommandArgs": "-v" in file CMakeSettings.json.

Like this:
{
  "configurations": [
    {
      "name": "x86-Debug",
      "generator": "Visual Studio 15 2017",
      "configurationType": "Debug",
      "inheritEnvironments": [
        "msvc_x86"
      ],
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
      "cmakeCommandArgs": "",
      //"buildCommandArgs": "-v",
      "ctestCommandArgs": "",
      "variables": [
        {
          "name": "CMAKE_TOOLCHAIN_FILE",
          "value": "E:\\test\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
        }
      ]
    }
  ]
}

Hi @wangli28
Thanks for the reply.
I was using Visual Studio Code with the cmd arguments -DCMAKE_TOOLCHAIN_FILE=[my vcpkg root]\scripts\buildsystems\vcpkg.cmake
I also modified my CMakeLists.txt file to contain (before project()) to double check:
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
  set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
      CACHE STRING "")
endif()

The fix merged,  please get latest vcpkg and try again.

Same issue.
Visual Studio can't find GLFW.
Also,
find_package(glfw3 CONFIG REQUIRED) returns same error as in this thread.
Vcpkg package management program version 2021-08-12-85ab112d5ee102bc6eac8cdbbfdd173a71374e04

@shash29-dev, could you please report a new issue instead?

With the commit https://github.com/PhoebeHui/vcpkg/commit/d73e5209e89308a61d4e08547db48b3ccfb6e8bd the patch for creating the config file is removed, so the issue is actual again.

I'm also facing the same exact issue.

[cmake] CMake Warning at external/vcpkg/scripts/buildsystems/vcpkg.cmake:274 (message):
[cmake]   Unable to determine target architecture.  Consider providing a value for
[cmake]   the CMAKE_OSX_ARCHITECTURES cache variable.  Continuing without vcpkg.
[cmake] Call Stack (most recent call first):
[cmake]   CMakeLists.txt:29 (include)
[cmake]
[cmake]
[cmake] Not searching for unused variables given on the command line.
[cmake] CMake Error at CMakeLists.txt:32 (find_package):
[cmake]   Could not find a package configuration file provided by "glfw3" with any of
[cmake]   the following names:
[cmake]
[cmake]     glfw3Config.cmake
[cmake]     glfw3-config.cmake
[cmake]
[cmake]   Add the installation prefix of "glfw3" to CMAKE_PREFIX_PATH or set
[cmake]   "glfw3_DIR" to a directory containing one of the above files.  If "glfw3"
[cmake]   provides a separate development package or SDK, be sure it has been
[cmake]   installed.


Read $PATH at the launch

This change can make the startup time a little bit faster I hope.
If I have config.json, it should be added to the path list.

b81a8595248a8239e8f87a2f4b00dfe0cbae00c3


Fix sparse_matmul_op_test on Power LE

Fix for issue #12137. Add the pbroadcast_* functions for ppc, this passes the sparse_matmul_op_test on ppc64le

Can one of the admins verify this patch?

@tensorflow-jenkins test this please

@tensorflow-jenkins test this please


v3: ReactQueryDevtools initialIsOpen={false} Ignored

Describe the bug
When setting initialIsOpen to false, the ReactQueryDevtools stays open.
Expected behavior
I realize this is probably because of the local storage.
We may disagree on this expected behavior, but I would kindly "argue" that if I set it to "false" in my code, then that trumps the local storage.
Side note
The typings for initialIsOpen is any when it should be boolean.

It seems that:

you set it to initialIsOpen=false.
you open the devtools.
you close the page and come back.

--> the devtools are now open.
is that the case?
if so, then I think this is indeed the desired behaviour, as the last selected user selection is respected. The name is initialIsOpen, which indicates an initial value if no user selection has been made imo.

That's one use case and yes, you're correct.
The one that sparked my investigation was:

I initially have initialIsOpen=true
I go about my testing with the devtools open
I realize, man, I don't want this thing open when I start this app up every time.  I'd rather it be closed by default, every time.  I'd rather the user have to open it if they want to use it.
I set it to initialIsOpen=false
Hmmm... it's still open.

Then I saw the local storage and realized that's the reason.  And I guess my interpretation of "initial" was a little different.  I can't argue enough, though.  :D

If you want to PR an isOpen option that’s controlled and takes precedent, you could.
Tanner Linsley
On Dec 11, 2020, 9:43 AM -0700, Kyle Daley<EMAIL_ADDRESS>wrote:

That's one use case and yes, you're correct.
The one that sparked my investigation was:
• I initially have initialIsOpen=true
• I go about my testing with the devtools open
• I realize, man, I don't want this thing open when I start this app up every time. I'd rather it be closed by default, every time. I'd rather the user have to open it if they want to use it.
• I set it to initialIsOpen=false
• Hmmm... it's still open.
Then I saw the local storage and realized that's the reason. And I guess my interpretation of "initial" was a little different. I can't argue enough, though.  :D
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Galley Integration into Test Framework

add a dummy galley kube component
Make native testing using galley as config input
Remove configStore from pilot
Dependencies change: pilot->mixer->galley

@irisdingbj I've done a major refactoring of the test framework in master recently. Galley is now intrinsically part of the framework. Can we close this?

CLosed per @ozevren


domain split: optimize

set up and optimize domain split step.

we're going to do an iterative domain splitting using HHsearch.

find close PDB matches
find remote PDB matches (for RosettaCM)
try to split the rest into Pfams (for RosettaAB)

The approach is outlined in Snakefile


读取本地bag包cmakelist的相关配置问题

我用ros读取bag的时候，只需要在cmakelist里面的findpackge添加rosbag还有packagelist里面添加rosbag就可以了，但是apollo里面不行，需要怎么解决这个问题。

Are you trying to use rosbag play to read bag or you are trying to write a ros node to read rosbag inside apollo docker?

Stale issue closed.


Unknown Myo serial number format

The protocol specifies the serial number as byte[6].
I'm not sure how to format this to a serial number.
A hex string?
uint8_t serial_number[6]; ///< Unique serial number of this Myo.
https://github.com/thalmiclabs/myo-bluetooth/blob/master/myohw.h#L95
https://github.com/d4rken/myolib/blob/master/myolib/src/main/java/eu/darken/myolib/MyoInfo.java#L72
I tried straight conversion by new String(...) but the result was just a couple of unreadable characters.

You may convert the byte array to hex string and this method surely works fine.


Support embed a code snippet

Support embed a code snippet by using the GitHub's permanent link.
I tested it briefly, and it works well.

Some things about GitHub permanent links can be found here: https://docs.github.com/en/github/managing-your-work-on-github/creating-a-permanent-link-to-a-code-snippet

Hey, thanks for your PR.
I have made some changes to fantasticmao:master. It that's OK for you, I'll merge this PR.

Awesome, I've seen the changes, and please.


Feat task queue

We noticed that the indexing process is really slow in real use cases because we limit the max batch_size in the encoder for free users. The reason is that when the batch_size is really small(like 8 or even 1), the indexer only uses the single core of the CPU while for big batch_size multi-core CPUs are used. So we don't release the power of multi-cores CPUs in small batch cases.
There are two possible solutions:

Create a task queue(like a DocumentArray) and gather data from the client and use another thread to do index operation.
Modify the mechanism of how data is distributed through different cores.

In this pr, I implemented solution 1.

Small meta-comment: Please always add a (at least small) description of what your PR does. In one of the retros we collectively decided to mak it a DCI rule to only review PRs that have a description. Thank you!

Small meta-comment: Please always add a (at least small) description of what your PR does, and why. In one of the retros we collectively decided to mak it a DCI rule to only review PRs that have a description. Thank you!

Sorry for the confusion, I have already added the descriptions of this pr.

Please add a description of what the PR does

I have already added the descriptions of this pr.

This should be either an Option or make sure that at search time, all the previous index operations are completed. Also what would happen if not more data is indexed? what is the mechanism making sure the last batch is indexed?


Odd issue with coproduct

When I do this
import shapeless._

case class Foo(msg: String)
case class Bar(msg: String)

object Stuff {
  type Blah = Foo :+: Bar :+: Int :+: CNil
  val t = Coproduct[Blah](Foo("hi"))
  t.select[Foo]
}

and compile with sbt I get the following:
> compile
[info] Compiling 1 Scala source to /Users/rnorris/Scala/copro/target/scala-2.11/classes...
[error] /Users/rnorris/Scala/copro/stuff.scala:9: diverging implicit expansion for type shapeless.ops.coproduct.Selector[Stuff.Blah,Foo]
[error] starting with method hdSelector in object Selector
[error]   t.select[Foo]
[error]           ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 0 s, completed Feb 18, 2015 12:45:26 PM

If I remove Int from the coproduct or if I replace the Bar with String it works.

This appears to be caused by the use of a default-to-null implicit argument in one of the implicits for Selector.
Splitting the method into two, one to handle the present case and one to handle the absent case fixes the problem ... I have no idea why this should affect Bar vs. String.

I tentatively conclude that this is a scalac bug ... aside from eliminating the default-to-null implicit you can also avoid the problem by moving the case class definitions inside object Stuff, which shouldn't have any semantic impact at all.
Anyhow, eliminating the null is the right thing to do and that appears to fix the problem wherever the case classes are defined. I'll push that shortly.


Investigate how to handle manually provided data

Some of our providers do not provide a URL or service for loading their data and instead provide a manual export.
Investigate how to include these providers in the automated workflow (i.e. if the data is uploaded to an S3 bucket for instance can we automate review/comparison?)

https://airflow.apache.org/docs/apache-airflow-providers-google/4.0.0/operators/transfer/gdrive_to_local.html


[Caching] Do not embed extra ClangTarget in swiftmodule

When direct cc1 mode is used, the cc1 arguments are generated from extra clang targets so there is no need to add this extra argument. Furthermore, the --target= is a clang driver argument and is not valid under cc1 mode.
Needed for: rdar://134090397

@swift-ci please smoke test

ping


Laravel -- when I use huge requests I lose session auth

5.2: #.#.#

PHP version: 5.6.30
Database Driver & Version:  5.1.73

Description:
|I used Laravel 5.2 version, I noticed that my website user Auth session lost when I used multi requests in great speed, Laravel saves the sessions in storage framework. the problem is maybe because the Laravel recreate another session file in the storage.

note 1: sometimes when I use google chrom button I get the same problem.
note 2: my website get another old session when I use back google chrom button
note 3: the problem is not fixed

the questions:

1- Why Laravel create new Sessoin file and why don't delete the old one?

2- Why Laravel lost Auth Session?

3- Why laravel get another old user session (huge problem)

This repo is for bug tracking. Use the forums or slack channel for solving your issue

@Dylan-DPC - this is a known issue - I'll find the ticket...

This is probably related: https://github.com/laravel/framework/issues/7549
@abdulkader92 - the best options are to upgrade to Laravel 5.4, ensure you are using php artisan config:cache - and to use a different session driver, probably Redis or something.
Doing all that will likely resolve the problem.

This is unrelated to the session driver; Laravel does not support concurrent session requests. Upgrading to 5.4 or changing session driver will not change this. All session drivers have the same problem, they read the payload, let the request execute, then write back the entire payload which will overwrite any changes a concurrent request has made.
Ref: https://github.com/laravel/framework/issues/14385

Yep, I discovered this too. If the session data is small enough the problem isn't likely to appear but as soon as largish data gets stored in the session it can randomly happen. PHP itself doesn't really support concurrent session requests either which is why PHP's native sessions use file locks. The unfortunate downside to this being that requests still until others are done.
The only possible solution I can think of requires timestamp's on session save (maybe even saving separate timestamped items for all top-level keys stored) and merging changes if the read / write timestamps don't match. How to properly merge data though would almost certainly be a rather tricky thing to solve if it is solvable at all.

I had this problem once in an application that relied on large image files. The error you get is very confusing. I eventually figured it out and increasing my PHP max upload size solved the problem.

@Roemerb - that is a separate issue. I did a PR for that back in 5.3 I think.
If you include \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, in your Middleware - it detects that situation.

the present Scenario:

The (A) user logged in. if he request any link a lot (concurrent), then he will lose authentication user
The (B) user logged in. if he request any link a lot (concurrent), then he will get user (A) authentication (dangerous) or maybe he will lose his authentication user
the problem is not fixed
Does aravel 5.2.# have any problems with session file driver?
on the other hand
Can I use this for my issue https://github.com/rairlie/laravel-locking-session

@abdulkader92 - I've never heard of UserB getting UserA's session. I dont see how that is possible... do you have any replication of that?

@abdulkader92 To begin; Laravel 5.2 is no longer supported. You're supposed to upgrade to 5.4 and retry if your issue persist there.
Second, your initial issue does not mention a user getting someone else's session details at all. Are you sure about this? We would need a way to reproduce the issue to be able to fix it, this includes source code required, knowing what setup you have, webserver and operating system you use, if you're calling another Laravel/Lumen site over an api, etc.

Closing this issue for now, please try to recreate a behaviour on a supported version 5.4 and open a new issue with exact description since this issue is a bit confusing.

@abdulkader92  hey, did you find any solution for the issue which user A getting wrong session details or someone else's session details.
because i'm facing the same problem right now.

I stored large data in the session and the session is lost randomly!

the present scenario with Google Chrome 60.#:

The (A) user logged in. if he request any link a lot (concurrent), then he will lose authentication user
Then (B) user logged in. if he request any link a lot (concurrent), then he will get user (A) authentication (dangerous) or maybe he will lose his authentication user
the problem is not fixed
Does aravel 5.2.# have any problems with session file driver?
on the other hand
Can I use this for my issue https://github.com/rairlie/laravel-locking-session

@abdulkader92 . hi. did u manage to fix it because I am facing the same issue and this is actually dangerous

I am using 5.6 version and the issue is still there

Hello good day!
Has anyone got solution on user B getting the user session to? I'm having this problem.

Hi @fagner-alves , I changed from nginx to apache and the issue is now resolved for me.

@zaeemh  can you describe that?
we have this problem and we use nginx.
but we are not sure this is the best for us.

I had this weird problem with Sessions in Laravel and couldn't find the solution anywhere. I finally figured it out and I thought that I would share, hoping that it may help someone in the future.
Problem: Engintron configuration micro-caching mixing up session IDs
Solution: Change session cookie name from laravel_session to userID
Full Story:
Problem: The problem was only really noticeable for me with the login process as this is where the sessions were the most important. I noticed that if two users logged in at the same time or nearly the same time, then they would switch identities or the latter would take the identity as the earlier user. I also noticed that the latter would take the session cookie of the former when logged in as that user.
Configuration: Laravel 6.2, PHP 7.2, and Engintron to integrate NGINX to cPanel/WHM
Reason: What was happening here was that the sessions were being cached and the latter user was taking the cached version to log in.
Here is part of the default configuration of Engintron's proxy params dynamic.
code
# CMS (& CMS extension) specific cookies (e.g. Joomla, K2 for Joomla, WordPress, WooCommerce, PrestaShop etc.) if ($http_cookie ~* "(joomla_[a-zA-Z0-9_]+|userID|wordpress_(?!test_)[a-zA-Z0-9_]+|wp-postpass|comment_author_[a-zA-Z0-9_]+|woocommerce_cart_hash|woocommerce_items_in_cart|wp_woocommerce_session_[a-zA-Z0-9]+|sid_customer_|sid_admin_|PrestaShop-[a-zA-Z0-9]+)") {     set $CACHE_BYPASS_FOR_DYNAMIC 1;     set $EXPIRES_FOR_DYNAMIC 0; }
code
Notice that laravel_session is nowhere in there. Therefore, Engintron will microcache any laravel session Cookie and, under these configurations, you could be allowing a user to wrongfully login to another account.
Solution:
There are two ways to solve this. You could adjust the configurations on your server or within your app.
A) Within Laravel:
Change config/session.php line 127 from:
'cookie' => env(         'SESSION_COOKIE',         Str::slug(env('APP_NAME', 'laravel'), '_').'_session'     ),
to
'cookie' => 'userID',
B) On the server:
Or simply add laravel_session or whatever you are naming your app's cookies within the list of specific cookies like so:
if ($http_cookie ~* "(laravel_session|joomla_[a-zA-Z0-9_]+|userID|wordpress_(?!test_)[a-zA-Z0-9_]+|wp-postpass|comment_author_[a-zA-Z0-9_]+|woocommerce_cart_hash|woocommerce_items_in_cart|wp_woocommerce_session_[a-zA-Z0-9]+|sid_customer_|sid_admin_|PrestaShop-[a-zA-Z0-9]+)") {
set $CACHE_BYPASS_FOR_DYNAMIC 1;
set $EXPIRES_FOR_DYNAMIC 0;
}
I hope this helps someone :)
Happy coding!```


Speed up big term and publication pages

We have some pages that load very slowly, particularly high level FYPO terms:
https://www.pombase.org/term/FYPO:0001355
and HTP publication pages, for example: https://www.pombase.org/reference/PMID:23697806
and now also: https://www.pombase.org/reference/PMID:37787768
For PMID:37787768 I'm wondering about truncating the genotype list and adding a "show me more" button:

That's running on my desktop, but it's got bugs: https://desktop.kmr.nz/reference/PMID:37787768
(It's the un-optimised development version with so loading that page will still seem slow even with that change)
And we should probably also remove the "Show details ..." link at the top of the section for big pages because that's really slow.

That works for me. We should probably add a prominent disclainer at the top
This publication has over XXX annotations and so we have truncated the displayed data in the initial view. To see all use the "show all genotype features below). Page loading may be slow. We have also disabled the "show details link". you can see specific details on any gene page.
(Needs work!)
We could also link to the spreadsheets in case anyone just wants the data to do something with,  extensions terms and all
(You can't really do this via the download because it is gene focusssd not datatype)
e.g
https://curation.pombase.org/dumps/latest_build/pombe-embl/external_data/phaf_files/chado_load/htp_phafs/PMID_37787768_phaf.tsv

I think if we have a disclaimer it should be short and not at the top of the page.  I'd prefer it to be in the section where the annotations are truncated, probably the single locus phenotype or modification sections.

Branch with initial code: https://github.com/pombase/website/tree/tickets/ticket-2100

I'd prefer it to be in the section where the annotations are truncated, probably the single locus phenotype or modification sections.

sounds goods

The change I made to truncate the list of genes/genotypes (like in the screenshot) helps a lot on some pages.  Other pages have long list of gene/genotype + extension like here: https://www.pombase.org/reference/PMID:23697806
where there are lots of "has penetrance high"
That will need a different fix.

This still needs work, but I thought I should release what I've done since it helps in some cases.  I put in a warning at the top of the section but I tried to keep it brief.  The text needs work.

Mouse over for "Show details ..."

I've made those changes and deployed it.

I'll close this as done, if there is more to do it probably doesn't need to be high priority  because this is a big win, but you can put that in a new ticket.

Is this working?
doesn't seem to be on
https://www.pombase.org/reference/PMID:23697806

Hi Val.  There are two problems.  The first is that the code for truncating gene/genotype lists only kicks in if there are a large number of annotations.  That's so we don't truncate the lists on small publication pages where it's not necessary.  The number of annotations needed was set to 6000 which is more than the number of annotations in that paper (5012).  I've changed the cut off to 5000 so that page renders a little faster now.
The second problem is that that publication has a large number of extensions in summary mode, which slows it down.  That's something I haven't fixed:  https://github.com/pombase/website/issues/2100#issuecomment-1846283076
I can work on that it you think it's worthwhile.

No it's fine, I just noticed the list were not truncated as I expected.
I think 5000 is a good cut off.
v


Add support for websockets

It would be great to add support for websockets too - https://actix.rs/docs/websockets/. Thanks a lot!

I'd like to tackle this if that's appropriate. My plan is:

turn on the ws feature flag for axum https://docs.rs/axum/latest/axum/#feature-flags
write an integration test, possibly using curl

@houqp my initial thoughts about this issue appear to have been naive. Simply enabling the feature in axum doesn't get us very far. Won't we actually need to support a websocket endpoint? Essentially something like roapi-ws that is a websockets version of roapi-http? This seems like a much bigger piece of work.

yes, a new websocket endpoint will be needed, but I think we don't need an extra roapi-ws binary and it can be folded into roapi-http.

That makes sense thanks @houqp
I might start by sketching out the experience of using the current API from a websockets client. If you have any thoughts on this please let me know?

One way to do that is to map the current REST endpoints into commands sent as websocket messages. We will only need a single websocket endpoint to handle all the commands.


Make VeRyPy installable with pip, preferably from PyPI

This would make it considerably easier to start using VeRyPy.

See stitching - A Python package for fast and robust Image Stitching. For inspiration and reference for file, test, and import structure.
https://github.com/lukasalexanderweber/stitching

Done thanks to the PR.


Water breathing icon shows

The water breathing icon is showing but I am not underwater.

Known issue, haven't found a resolution yet. Will look into this.

Not sending metadata properly afaik

I can't join using 1.0.0

I changed protocol version to 100 and changed the raknet broadcast details

Yeah, good luck. It's going to require rewriting the chunk format and changing various packets along with the login sequence

In branch 1.0 it says fully working

This is outside the scope of this issue


feat: validate that an eoa has empty bytecode

can be done in __validate__, see https://github.com/kkrt-labs/kakarot/pull/982

@enitrat  I can work on it today if its available to grab

It might have been solved with the merge of accounts I will check

oh yeah indeed I havent checked:
            assert(self.Account_bytecode.read().len().is_zero(), 'EOAs: Cannot have code');


Could not force a panic with arrays without adding a trait

Hello, I'd like to thank you for all the hard work that has gone into building this codebase. I've been telling myself for years now that I should learn rust, and with your help I've just started to write my first rust code. There's a lot I still don't know about rust, so this issue may be very naive.
After installing rust version 1.45.0 I began working through the koans until I got to arrays.rs which has a test to cause a panic with an invalid array index, as you can see below :
// Attempting to access an array at an index that is
// out of its bounds will cause an error. Let's cause
// that error in this example.
#[test]
#[should_panic]
#[allow(const_err)]
fn out_of_index() {
    let arr: [&'static str; 5] = ["rust", "is", "mostly", "for", "nerds"];
    arr[__];
}

However, I was unable to make this pass by simply using an invalid index such as 6. With a little bit of googling I was able to find out that you can add a trait to allow for unconditional panics.
// Attempting to access an array at an index that is
// out of its bounds will cause an error. Let's cause
// that error in this example.
#[test]
#[should_panic]
#[allow(const_err)]
#[alllow(unconditional_panic)] // <<<< this is the line I needed to add
fn out_of_index() {
    let arr: [&'static str; 5] = ["rust", "is", "mostly", "for", "nerds"];
    arr[666];
}

It seems like one of the following is true

I don't fully understand this koan
the trait [allow(const_err)] should be changed to #[alllow(unconditional_panic)]

If the second is true I would be more than happy to issue you a pull request.

Also, const_err seems to be deprecated now https://github.com/rust-lang/rust/issues/71800

Thank you also ran into this issue, just in case anyone else copies and pastes this like me:

Remove the #[allow(const_err)] line
Typo in #[alllow(unconditional_panic)] should be allow


Documentation & Reflection

In the Project Milestone 2 write-up, include:

A summary of implemented features and improvements
Challenges encountered and how they were addressed
Reflections on the RAG process and its impact on application performance
Future directions and planned improvements for the next milestone
Project use case definition (as detailed in section 5)
User testing plan (as detailed in section 6)

Completed -- all above included in milestone 2 writeup.


Loosen mysql dep and improve testing in Travis

Verified this resolves #9. 👍

@someara / @sinfomicien Any chance we can get this merged and a new release pushed out.  Right now this cookbook can't be used with the latest mysql cookbook which adds support for a large number of platforms.


Add a --all flag for check subcommand

Fixes #398.

@IgnisDa I think an --all option would be better, otherwise this wouldn't work when not ran from the root.

@milesj I did not think of that possibility. I added a --all flag and added 2 tests for it. Please review.


Deal with different NVMe models in various sites

Requires doing some work in FIM to expand catalog and relax the matching to only type?
Currently there is a hardcoded override that makes all NVMes look like P4510
Dev sites + STAR have P4510 while newer sites have CD5 (Toshiba?)

Dealt with in multiple updates via hacks.


Read multiple tests for the same file in one coverage report

This fixes #245 for me.

@justarandomgeek thanks for the PR!
This is interesting, I assumed that the section returned from the different parsers (cobertura, lcov parse, clover, etc) would be unique per file and not greater then 1. Do you have an example lcov file that I can take a look at that shows this?
We should also add some integration test coverage to cover this new feature!
I can assist with a bit of the coding later next week if you dont get to fixing the linting and the additional test coverage.

Sure, here's a file produced by my Factorio Mod coverage tool: it's separated out by test name and the Lua instance in which the script ran during that test, which i've sort of bodged together into a composite test name for lack of a better place to put the Lua instance name. The same file might sometimes run in multiple different Lua instances, and obviously different tests can go back over all the same files!
https://gist.github.com/justarandomgeek/8660e0685276994165915bb3df2ca347
Also, at least one of your own examples has this: https://github.com/ryanluker/vscode-coverage-gutters/blob/master/example/node/lcov.info has 94 sections for "SF:./node/test.js" all with blank TN
I'm afraid my js/ts skill is probably not great enough to help much though - i just barely managed to hack this patch into working at all! :)

@justarandomgeek thanks for all the extra info! I should be able to take this away and finish it for yah :grin: .
Side discussion: It is very cool to see you use the extension for factorio mods, I have played the base game a bit and it is quite fun (seems to scratch that programming itch)!
What is the name of the mod you are making?

@justarandomgeek I took your changes and moved them to a new branch here #247

The one that brought me here specifically was my Coverage Tester Mod, which i'm using to see if my tests (which will probably eventually grow into a generalized tester tool mod...) on ConMan are actually complete. I've got quite a few other mods on the factorio mod portal though, and you can see a few of their names in that lcov file!


Enforce a lack of dashes in testworkflow vm names.

The utils.GetRealVMName relies on this convention even though it's completely unenforced, meaning it doesn't work unless the test author complied. This enforces it. Also use a proper temp dir for ssh test setup in the manager.
/cc @drewhli @koln67

/lgtm


How To Change My Name On American Flight Ticket?{No-Wait}

How to Change name on American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ?
To change the name on a American ticket, visit the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website or contact customer service through ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). Log in to find the "Change Name On American Ticket" option and follow the provided instructions for a smooth transaction.
Can passenger change their name on American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈? Yes, you can change your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket name online or offline. Use their website or mobile app, or contact American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 at ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA)) for guidance on requesting a name adjustment.
To change or correction a name on an American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket, contact their customer service at ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). They will guide you through the name correction process and applicable fees.
Here are the simple methods to change a name on an American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket:
Contact Customer Service: Call ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) for assistance. Visit the Website: Log in to your account on the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website, go to "Manage Reservations," and request a name correction. Airport Ticket Counter: Visit an American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket counter at the airport for in-person assistance. Travel Agent: If booked through a travel agent, contact them to make the necessary changes.
How To Change Name With American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈?
When you need to change the Name on your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket, simply visit their website or contact their customer service ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). Enter your booking information in the "My Trips" section and select the flight you want to modify. Choose the option to change the flight Name, follow the instructions to complete the process, and pay any applicable fees. After making the changes, expect to receive a confirmation email from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈.
How Do I Change Name On American Ticket Using Online Mode?
Go to the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website to begin the process of changing the Name on your online ticket. Go to "Manage Travel" or "My Trips" and enter your booking details to log in. Find your itinerary and click on the Name of flight change option. To select a new Name and complete the adjustments, adhere to the instructions. If you find any issue while making the changes, feel free to communicate with its customer support team at ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA).
How To Change Flight Name On American Air Ticket?
American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 renders your various approaches to amend the Name on your flight ticket. Majorly you can either initiate the process by heading to the official American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website or connect with its customer support team ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). Moreover, navigate to the “Manage My Booking” section. Enter your booking information and select the flight you want to change. Follow the instructions to choose a new Name and pay any required fees. Once confirmed, you'll receive an email from American confirming your upNamed travel details.
How To Change Name On Plane Ticket American?
To change flight Name on plane ticket American, you need to log in to their official website or get in touch with their customer support staff by dialing ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). Locate your booking under "My Trips," input your reservation details and confirmation code. Select the flight you need to change and select the option to adjust the Name. If you are confused, then you can communicate with the staff and get your doubts and issues resolved in no time.

There are a few different ways to change the Name on a American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket. You can change your flight Name through American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈' official website. Log into your account, navigate to the "My Trips" section, enter your booking details and confirmation code. Alternatively, Contact American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈' customer service directly via phone ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). Provide your booking information and request to change your flight Name through a customer service representative.
Can A Passenger Change Name On American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈?
Yes, passengers can change the Name of their American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 flight. They can do so by visiting the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website or contacting customer service ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) directly. Navigate to the "My Trips" section, input your booking details and reference code, and select the flight you wish to change. Choose the option to modify your flight Name, complete any required fee payment, and await confirmation from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 via email.
Can You Change The Name On A American Airline?
Yes, changing the Name of your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 flight is possible. Access their official website or call ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA), their customer service directly. Locate your booking under "Manage My Trip," input your reservation information, and choose the flight Name change option. Ensure you settle any relevant Name adjustment charges and await confirmation from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 upon completing the process.
How to Change Passenger Name on American Ticket
How do I change my Name on the American ticket?
Name Correction on American flight Ticket
Change Name on American
Name Correction on American Ticket
how do I change my Name on American ?
Can I Change the Name on the American flight Ticket
How to Change Name on American
How do I change my Name on the American NameReservation?

Name Correction on American Reservation
How can I change my Name on a American ticket?
Can I change my Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
How to Change Name on American Ticket
Can I change the Name on my American ticket?
change passenger Name on American ticket
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight boarding pass?
How do I change a passenger's Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight flight?
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
Can I change the Name on my American s reservation?

Name Correction on American flight Ticket
How can I change my Name on a American ticket?
Name Correction on American Boarding Pass
Can I change my Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
Name Correction on American flight Reservation
Name Correction on American Ticket
Change Name on American ticket
How to change the Name on American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 ticket
How to Change Passenger Name on American Ticket
Can I change the Name on my American ticket?
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight boarding pass?
How do I change a passenger's Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight flight?
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
How do I change my Name on a American ticket?

Change Name on American flight Ticket
replace passenger Name on American flight ticket
How Can I Modify a Passenger's Name on a American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 Ticket?
The "Manage My Booking" area can be accessed by first visiting the official American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website. Entering their reservation data, choosing the flight they want to change, and changing the Name as necessary may all be done from here. As an alternative, customers can call American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 customer service directly ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) and ask for a Name modification. With American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈, both options guarantee convenience and adaptability when modifying travel arrangements.
How Can My American Airline Flight Be change name ?
Is the Name of your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 flight being upNamed? Go to their website or contact customer service ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA). Navigate to "Manage Travel," fill out the details of your reservation, and choose the flight that requires modification. Just follow the directions and pay the applicable fees to reschedule. A confirmation email from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 with your upNamed trip details should arrive soon.
Can I Change My American Name Reservation Name?
Reach out to customer service or visit the ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) OR + 𝟭-𝟴𝟬𝟭-𝟴𝟱𝟱-𝟱𝟵𝟬𝟱 (OTA) 🔰(OTA) website. After login in, select "My Trips" and input the booking information and confirmation code. Find the button to edit your reservation after selecting your flight. Choose a new Name and pay any necessary fees by following the instructions. To finish the procedure, make sure you get an email or notice on their website confirming the adjustments you made.

How to Change name on American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ?
To change the name on a American ticket, visit the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website or contact customer service through ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-(𝟴𝟴𝟴)-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA). Log in to find the "Change Name On American Ticket" option and follow the provided instructions for a smooth transaction.
Can passenger change their name on American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈? Yes, you can change your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket name online or offline. Use their website or mobile app, or contact American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 at ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰 or ☎ +𝟭-(𝟴𝟴𝟴)-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) for guidance on requesting a name adjustment.
To change or correction a name on an American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket, contact their customer service at ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA). They will guide you through the name correction process and applicable fees.
Here are the simple methods to change a name on an American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket:
Contact Customer Service: Call ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) for assistance. Visit the Website: Log in to your account on the American +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website, go to "Manage Reservations," and request a name correction. Airport Ticket Counter: Visit an American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket counter at the airport for +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 in-person assistance. Travel Agent: If booked through a travel agent, contact them to make the necessary changes.
How To Change Name With American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈?
When you need to change the Name on your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket, simply visit their website or contact their customer service ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA). Enter your booking information in the "My Trips" section and select the flight you want to modify. Choose the option to change the flight Name, follow the instructions to complete the process, and pay any applicable fees. After making the changes, expect to receive a confirmation email from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈.
How Do I Change Name On American Ticket Using Online Mode?
Go to the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website to begin the process of changing the Name on your online ticket. Go to "Manage Travel" or "My Trips" +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 and enter your booking details to log in. Find your itinerary and click on the Name of flight change option. To select a new Name and complete the adjustments,+𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 adhere to the instructions. If you find any issue while making the changes, feel free to communicate with its customer support team at ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA)
How To Change Flight Name On American Air Ticket?
American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 renders your various approaches to amend the Name on your flight ticket. Majorly you can either initiate the process by heading to the official American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website or connect with its customer support team ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA). Moreover, navigate to the “Manage My Booking” section. Enter your booking information and select the flight you want to change. Follow the instructions to choose a new Name and pay any required fees. Once confirmed, you'll receive an email from American confirming your upNamed travel details.
How To Change Name On Plane Ticket American?
To change flight Name on plane ticket American, you need to log in to their official website or get in touch with their customer support staff by dialing ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA). Locate your booking under "My Trips," input your reservation details and confirmation code. Select the flight you need to change and select the option to adjust the Name. If you are confused, then you can communicate with the staff and get your doubts and issues resolved in no time.

There are a few different ways to change the Name on a American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 ticket. You can change your flight Name through American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈' official website. Log into your account, navigate to the "My Trips" section, enter your booking details and confirmation code. Alternatively, Contact American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈' customer service directly via phone ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA). Provide your booking information and request to change your flight Name through a customer service representative.
Can A Passenger Change Name On American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈?
Yes, passengers can change the Name of their American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 flight. They can do so by visiting the American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website or contacting customer service ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) directly. Navigate to the "My Trips" section, input your booking details and reference code, and select the flight you wish to change. Choose the option to modify your flight Name, complete any required fee payment, and await confirmation from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 via email.
Can You Change The Name On A American Airline?
Yes, changing the Name of your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 flight is possible. Access their official website or call ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA), their customer service directly. Locate your booking under "Manage My Trip," input your reservation information, and choose the flight Name change option. Ensure you settle any relevant Name adjustment charges and await confirmation from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 upon completing the process.
How to Change Passenger Name on American Ticket
How do I change my Name on the American ticket?
Name Correction on American flight Ticket
Change Name on American
Name Correction on American Ticket
how do I change my Name on American ?
Can I Change the Name on the American flight Ticket
How to Change Name on American
How do I change my Name on the American NameReservation?

Name Correction on American Reservation
How can I change my Name on a American ticket?
Can I change my Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
How to Change Name on American Ticket
Can I change the Name on my American ticket?
change passenger Name on American ticket
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight boarding pass?
How do I change a passenger's Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight flight?
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
Can I change the Name on my American s reservation?

Name Correction on American flight Ticket
How can I change my Name on a American ticket?
Name Correction on American Boarding Pass
Can I change my Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
Name Correction on American flight Reservation
Name Correction on American Ticket
Change Name on American ticket
How to change the Name on American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 ticket
How to Change Passenger Name on American Ticket
Can I change the Name on my American ticket?
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight boarding pass?
How do I change a passenger's Name on a American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight flight?
How do I change the Name on my American 𝓐𝓲𝓻𝓵𝓲𝓷𝓮 flight ticket?
How do I change my Name on a American ticket?

Change Name on American flight Ticket
replace passenger Name on American flight ticket
How Can I Modify a Passenger's Name on a American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 Ticket?
The "Manage My Booking" area can be accessed by first visiting the official American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 website. Entering their reservation data, choosing the flight they want to change, and changing the Name as necessary may all be done from here. As an alternative, customers can call American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 customer service directly ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) and ask for a Name modification. With American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈, both options guarantee convenience and adaptability when modifying travel arrangements.
How Can My American Airline Flight Be change name ?
Is the Name of your American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 flight being upNamed? Go to their website or contact customer service ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-𝟮𝟵𝟬-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA). Navigate to "Manage Travel," fill out the details of your reservation, and choose the flight that requires modification. Just follow the directions and pay the applicable fees to reschedule. A confirmation email from American 𝒜𝒾𝓇𝓁𝒾𝓃ℯ𝓈 with your upNamed trip details should arrive soon.
Can I Change My American Name Reservation Name?
Reach out to customer service or visit the ☎ 𝟭-𝟴𝟲𝟲-𝟯𝟳𝟮-𝟬𝟱𝟯𝟯 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) or ☎ +𝟭-𝟴𝟴𝟴-(𝟮𝟵𝟬)-𝟵𝟬𝟭𝟮 (OTA) OR + 𝟭-𝟴𝟳𝟳-𝟴𝟵𝟴-𝟬𝟱𝟵𝟬 (OTA) 🔰(OTA) website. After login in, select "My Trips" and input the booking information and confirmation code. Find the button to edit your reservation after selecting your flight. Choose a new Name and pay any necessary fees by following the instructions. To finish the procedure, make sure you get an email or notice on their website confirming the adjustments you made.


License info

Hi! I am a member of CDNJS!
We would like to add this library to our CDN, and we need to check if its license is MIT. Thanks!
issue ref

Hi @clairetsai818 so sorry I'll fix up the license.
Also so sorry for the late reply.

Done @clairetsai818


[Q&A] Kubernetes as backend?

What would it take to take (parts) of Batect to use kubernetes as runtime?
That could be useful if people wanted to escape their constrained workstation resources and run in the cloud.
Something relevant or inspiring might be argo.

Hey @Byron-TW, thanks for the question.
(@Byron-TW contacted me offline about this, I'm sharing my original response from that conversation below.)
In theory, it shouldn’t be too hard to plug another runner into batect so that things are launched on Kubernetes instead of directly on Docker.
Practically, it’s a bit different :) These are some of the issues I foresee:

there isn’t a clean separation in the code between the process of orchestrating containers and the thing that they’re running on (eg. Docker) - everything is fairly tied to the Docker way of thinking about and doing things
mounting a local directory would be a little tricky - you’d have to package up the files or folder in question and deploy them alongside the image, and there would be work in bringing back any new files to the local workspace (eg. if the build process inside the pod creates some build artifacts like a JAR file, you’d either have to archive that JAR as part of the build process or somehow pull the newly created files back into the local filesystem)
…and if you wanted to support syncing changes to the local filesystem to the pod in realtime (to enable scenarios like continuous unit testing), that would be another order of magnitude harder again
ditto for port mappings - if you want to run your app remotely and then interact with it locally, there would be some work in making that work seamlessly

If you’re just thinking of using Kubernetes in CI scenarios (but local Docker for local development scenarios), it should be feasible, since those last two points aren’t so relevant in that situation. Docker-in-pods might help you avoid having to change batect, but mounting directories from Docker-in-pods gets tricky quickly.
I hadn’t seen Argo before, thanks for passing that along. Looks really interesting, and not just for build scenarios but also more complex batch processing-style tasks.

While this is something I'd be interested in exploring in the future, I have no immediate plans to act on this, so I'm going to close this issue.
If anyone has any thoughts on this topic, please feel free to continue the discussion here.


Bindings in LocTextExtension

Connected with PR #241
First of all, thanks for this change. In most places code has become more readable. Only in two places we have problem with in order to completely refuse LocProxy. Also have two addition samples which can be interested.
Sample 1
We have own AvailabilityToMessageKeysConverter, which inherit IMultiValueConverter. It returns different keys depending on the Bindings. lex:Loc support binding only at constructor and it's impossible to easy use multibinding. Is it possible to create new parameter in LocExtension named KeyBinding and use it for all types of bindings?
<lex:LocProxy x:Name="MessageProxy">
    <lex:LocProxy.Source>
        <MultiBinding Converter="{AvailabilityToMessageKeysConverter}">
            <Binding Path="PaymentTypesAvailability" />
            <Binding Path="PaymentTypeLimit" />
        </MultiBinding>
    </lex:LocProxy.Source>
</lex:LocProxy>

<TextBlock Text="{Binding ElementName=MessageProxy, Path=Result}" />

Sample 2
We have strings like: 'The price is {0} rubles'. Also we have our own FormatStringConverter which has first parameter as formatString and others as parameters. LocTextExtension support only FormatSegment as strings and doesn't support as Binding. is it possible to add support for parameters as bindings?
<lex:LocProxy x:Name="LocProxy"
              Source="{x:Static l:LocalizationKeys.Payment_Price}" />
<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{c:FormatStringConverter}">
            <Binding ElementName="LocProxy" Path="Result" />
            <Binding Path="Amount" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Sample 3
LocTextExtension  support only string key at constructor. We often use LocTextUpper and one day it will be usefull to use 'LocTextUpper' and Binding key.
Sample 4
Not supported {TemplateBinding MessageKey}. But it can easyly rewrote to {Binding RelativeSource={RelativeSource TemplatedParent}, Path=MessageKey}. If adding TemplateBinding is to complicated, then this problem can be ignored.
P.S.
First and second samples can be fixed with rewriting converters and passing <Binding Source="{x:Static lex:LocalizeDictionary.Instance}" Path="Culture"/> as culture change event. But I think it's not good idea: extra unobvious dependencies (which can be forgotten) and using singleton LocalizeDictionary.Instance in different places.

@Karnah thanks for your great feedback.
Some first comments:

Sample 1
This is not my fault that Loc only support Binding at construtor. It is not possible to add KeyBinding because Loc is a MarkupExtension and not a Dependency Object.
I will dig into that If I see a better approach.

Sample 2
please see https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension/blob/development/docs/GapText.md#gap-text

Sample 3
This Extensions gets deprecated, (LocText, LocUpper, LocLower,...) Please use Converter for UpperCase,...

Sample4
Please file an FeatureRequest just for TemplateBinding support for lex:Loc

PS
I know this is not the best possibility but I prefer that. WPF don't give a better to handle this issue.

@Karnah

Sample 1

it should be possible that you do it with an static resource, the only disadvantage would be that you loose designe time translation support for that element.

This is not my fault that Loc only support Binding at construtor. It is not possible to add KeyBinding because Loc is a MarkupExtension and not a Dependency Object.
I will dig into that If I see a better approach.

There are idea about this.  In xaml for MarkupExtension setters are call before ProvideValue. If restrict during runtime - it will work. I checked this sample and it work:
public class BindableLocExtension : LocExtension
{
    public Binding KeyBinding
    {
        get => (Binding) GetField("_binding").GetValue(this);
        set => GetField("_binding").SetValue(this, value);
    }

    private static FieldInfo GetField(string fileName)
    {
        return typeof(LocExtension)
            .GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
            .First(f => f.Name == fileName);
    }
}

If it is bad idea for you and doesn't exists some another options, I'll prefer if _binding became protected for use such realization in our code.

please see

Hmm. I can not use this with {x:Static ...}. There are any ways to pass x:Static to Path? Source property not working too.

Please file an FeatureRequest just for TemplateBinding support for lex:Loc

Should I just create separate issue about this? Or do you mean somthing else?

This Extensions gets deprecated, (LocText, LocUpper, LocLower,...) Please use Converter for UpperCase,...

This is really useful feature for us. Formatting using converter will require nesting or am I wrong?

@Karnah
please make an PR with an example for BindableLocExtension I don't understand why this should work or how you would like to use it.
Please let us separate things so please follow up in different issues. So please add this issues

@konne
I created for sample 2 and sample 4 separate issues.
With sample 3 I understood - there is a Converter propery in LocExtension which can easily use.

@Karnah
sample 3. I will add the converter in the next days.


[FEA] Update branch-24.08 JNI and private dependencies version to 24.08.0-SNAPSHOT

This ticket is to remind us to update the corresponding dependencies version when available.

close by PR 123


blocked by CORS

Hi
when uploading an image the httpbin service is returning an error
https://rowanwins.github.io/vue-dropzone/docs/dist/index.html#/demo
Access to XMLHttpRequest at 'https://httpbin.org/post' from origin 'https://rowanwins.github.io' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

the service was restored


Do we need guids anywhere

Well the first order of business is to not turn the pipeline into COM crap

Any kind of alternative identification of modules (like GUIDs) will be up to the platform to implement (so the host and any modules are on their own here)


fix: negative dataOffset

Issue
dataOffset (used to fetch IFD tag value) can be negative. This happens if the value is stored between the TIFF header and IDF entry, which the EXIF standard allows.
Solution
Pass the original buffer into _decodeIDFEntries so the tag value can be accessed.
Validating the fix
Added  https://oceanpacificlighting.xologic.com/vendors/205/large/531-GA.jpg as image-31.jpg to tests folder.
With the PR changes, all existing images passed the tests and image-31.jpg has all tag values parsed correctly.
Updated tests/__snapshots__/index.test.js.snap to contain the output for  image-31.jpg.

@diegomura If the PR looks okay, is it possible to push out jay-peg 1.0.3 containing the offset fixes once the PR is merged?


Issue with redis counter store

Hello,
I'm trying to use redis as a counter store but im getting this error: No service for type 'StackExchange.Redis.IConnectionMultiplexer' has been registered. Im also getting this error on the same project ThrottlingTrollSampleWeb. The only things I have updated is changing the redisConnString to be localhost:6379 and uncommented line 82. Below is what in the Program.cs please let me know if I have missed a step:
using Microsoft.Net.Http.Headers;
using StackExchange.Redis;
using System.Text.Json;
using ThrottlingTroll;
using ThrottlingTroll.CounterStores.Redis;

namespace ThrottlingTrollSampleWeb
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.

            builder.Services.AddControllers();
            // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen(options =>
            {
                options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "ThrottlingTrollSampleWeb.xml"));
            });

            // If RedisConnectionString is specified, then using RedisCounterStore.
            // Otherwise the default MemoryCacheCounterStore will be used.
            var redisConnString = "localhost:6379";
            if (!string.IsNullOrEmpty(redisConnString))
            {
                builder.Services.AddSingleton<ICounterStore>(
                    new RedisCounterStore(ConnectionMultiplexer.Connect(redisConnString))
                );
            }

            // <ThrottlingTroll Egress Configuration>

            // Configuring a named HttpClient for egress throttling. Rules and limits taken from appsettings.json
            builder.Services.AddHttpClient("my-throttled-httpclient").AddThrottlingTrollMessageHandler();

            // Configuring a named HttpClient that does automatic retries with respect to Retry-After response header
            builder.Services.AddHttpClient("my-retrying-httpclient").AddThrottlingTrollMessageHandler(options =>
            {
                options.ResponseFabric = async (checkResults, requestProxy, responseProxy, cancelToken) =>
                {
                    var egressResponse = (IEgressHttpResponseProxy)responseProxy;

                    egressResponse.ShouldRetry = true;
                };
            });

            // </ThrottlingTroll Egress Configuration>

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment())
            {
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            app.UseHttpsRedirection();

            app.UseAuthorization();

            app.MapControllers();

            // <ThrottlingTroll Ingress Configuration>

            // Normally you'll configure ThrottlingTroll just once, but it's OK to have multiple
            // middleware instances, with different settings. We're doing it here for demo purposes only.

            // Simplest form. Loads config from appsettings.json and uses MemoryCacheCounterStore by default.
            app.UseThrottlingTroll();

            // Static programmatic configuration
            app.UseThrottlingTroll(options =>
            {
                // Here is how to enable storing rate counters in Redis. You'll also need to add a singleton IConnectionMultiplexer instance beforehand.
                options.CounterStore = new RedisCounterStore(app.Services.GetRequiredService<IConnectionMultiplexer>());

                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/fixed-window-1-request-per-2-seconds-configured-programmatically",
                            LimitMethod = new FixedWindowRateLimitMethod
                            {
                                PermitLimit = 1,
                                IntervalInSeconds = 2
                            }
                        }
                    },

                    // Specifying UniqueName is needed when multiple services store their
                    // rate limit counters in the same cache instance, to prevent those services
                    // from corrupting each other's counters. Otherwise you can skip it.
                    UniqueName = "MyThrottledService1"
                };
            });

            // Dynamic programmatic configuration. Allows to adjust rules and limits without restarting the service.
            app.UseThrottlingTroll(options =>
            {
                options.GetConfigFunc = async () =>
                {
                    // Loading settings from a custom file. You can instead load them from a database
                    // or from anywhere else.

                    string ruleFileName = Path.Combine(AppContext.BaseDirectory, "my-dynamic-throttling-rule.json");

                    string ruleJson = await File.ReadAllTextAsync(ruleFileName);

                    var rule = JsonSerializer.Deserialize<ThrottlingTrollRule>(ruleJson);

                    return new ThrottlingTrollConfig
                    {
                        Rules = new[] { rule }
                    };
                };

                // The above function will be periodically called every 5 seconds
                options.IntervalToReloadConfigInSeconds = 5;
            });

            // Demonstrates how to use custom response fabrics
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/fixed-window-1-request-per-2-seconds-response-fabric",
                            LimitMethod = new FixedWindowRateLimitMethod
                            {
                                PermitLimit = 1,
                                IntervalInSeconds = 2
                            }
                        }
                    }
                };

                // Custom response fabric, returns 400 BadRequest + some custom content
                options.ResponseFabric = async (checkResults, requestProxy, responseProxy, requestAborted) =>
                {
                    // Getting the rule that was exceeded and with the biggest RetryAfter value
                    var limitExceededResult = checkResults.OrderByDescending(r => r.RetryAfterInSeconds).FirstOrDefault(r => r.RequestsRemaining < 0);
                    if (limitExceededResult == null)
                    {
                        return;
                    }

                    responseProxy.StatusCode = StatusCodes.Status400BadRequest;

                    responseProxy.SetHttpHeader(HeaderNames.RetryAfter, limitExceededResult.RetryAfterHeaderValue);

                    await responseProxy.WriteAsync("Too many requests. Try again later.");
                };
            });

            // Demonstrates how to delay the response instead of returning 429
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/fixed-window-1-request-per-2-seconds-delayed-response",
                            LimitMethod = new FixedWindowRateLimitMethod
                            {
                                PermitLimit = 1,
                                IntervalInSeconds = 2
                            }
                        }
                    }
                };

                // Custom response fabric, impedes the normal response for 3 seconds
                options.ResponseFabric = async (checkResults, requestProxy, responseProxy, requestAborted) =>
                {
                    await Task.Delay(TimeSpan.FromSeconds(3));

                    var ingressResponse = (IIngressHttpResponseProxy)responseProxy;
                    ingressResponse.ShouldContinueAsNormal = true;
                };
            });

            // Demonstrates how to use identity extractors
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/fixed-window-3-requests-per-15-seconds-per-each-api-key",
                            LimitMethod = new FixedWindowRateLimitMethod
                            {
                                PermitLimit = 3,
                                IntervalInSeconds = 15
                            },

                            IdentityIdExtractor = request =>
                            {
                                // Identifying clients by their api-key
                                return ((IIncomingHttpRequestProxy)request).Request.Query["api-key"];
                            }
                        }
                    }
                };
            });

            // Demonstrates Semaphore (Concurrency) rate limiter
            // DON'T TEST IT IN BROWSER, because browsers themselves limit the number of concurrent requests to the same URL.
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/semaphore-2-concurrent-requests",
                            LimitMethod = new SemaphoreRateLimitMethod
                            {
                                PermitLimit = 2
                            }
                        }
                    }
                };
            });

            /// Demonstrates how to make a named distributed critical section with Semaphore (Concurrency) rate limiter and Identity Extractor.
            /// Query string's 'id' parameter is used as identityId.
            // DON'T TEST IT IN BROWSER, because browsers themselves limit the number of concurrent requests to the same URL.
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/named-critical-section",
                            LimitMethod = new SemaphoreRateLimitMethod
                            {
                                PermitLimit = 1
                            },

                            // This must be set to something > 0 for responses to be automatically delayed
                            MaxDelayInSeconds = 120,

                            IdentityIdExtractor = request =>
                            {
                                // Identifying clients by their id
                                return ((IIncomingHttpRequestProxy)request).Request.Query["id"];
                            }
                        },
                    }
                };
            });

            // Demonstrates how to make a distributed counter with SemaphoreRateLimitMethod
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/distributed-counter",
                            LimitMethod = new SemaphoreRateLimitMethod
                            {
                                PermitLimit = 1
                            },

                            // This must be set to something > 0 for responses to be automatically delayed
                            MaxDelayInSeconds = 120,

                            IdentityIdExtractor = request =>
                            {
                                // Identifying counters by their id
                                return ((IIncomingHttpRequestProxy)request).Request.Query["id"];
                            }
                        },
                    }
                };
            });

            // Demonstrates how to use cost extractors
            app.UseThrottlingTroll(options =>
            {
                options.Config = new ThrottlingTrollConfig
                {
                    Rules = new[]
                    {
                        new ThrottlingTrollRule
                        {
                            UriPattern = "/fixed-window-balance-of-10-per-20-seconds",

                            LimitMethod = new FixedWindowRateLimitMethod
                            {
                                PermitLimit = 10,
                                IntervalInSeconds = 20
                            },

                            // Specifying a routine to calculate the cost (weight) of each request
                            CostExtractor = request =>
                            {
                                // Cost comes as a 'cost' query string parameter
                                string? cost = ((IIncomingHttpRequestProxy)request).Request.Query["cost"];

                                return long.TryParse(cost, out long val) ? val : 1;
                            }
                        }
                    }
                };
            });

            // </ThrottlingTroll Ingress Configuration>

            app.Run();
        }
    }
}
![error-in-options-counterstore](https://github.com/ThrottlingTroll/ThrottlingTroll/assets/13834499/5538d3c8-3eae-4bd6-b869-d4d62d4513a8)

Hi @almightydegu , line 82 is an alternative way of initializing RedisCounterStore, intended for those cases when you also use Redis for something else (and hence already have IConnectionMultiplexer instance in the DI container).
In your case you do not need to uncomment that line.
All you need is a local Redis instance running locally and available on that port 6379.
Ways of configuring non-default Counter Stores are explained here.

Thats great thank you for clearing that up


Component css overrides and nav item link

Seems that a lot of the css added through this package actually breaks bootstrap. I find myself constantly needing to reset them (nav being the worst offender). I really find no benefit to any of the css included through the package (have not tried all components yet though), only makes it harder to work with. Only action I would say is removing the need for the css added in with nav, or scope it.
A real issue is that the link attribute (in navItem) does not really work with vue-router it can work if you just do a plain path, but if your using route names you cannot pass an object. This is a simple fix if it allows string and objects in the prop, or even have 2 separate props, may do a pull request for this but wanted to bring it up first (since its simple but has a few ways to resolve).
Those are the main issues but here is some general feedback.
So far I am really liking this, but there is quite a large barrier to entry. You cannot really load the components by source, since webpack needs to use es6 and to do that you need to allow babel to scan the node-modules folder. This led my compiled file to go from a few hundred kb to well over 1mb (so can't use source for large projects, but I think that's more npm's fault). This also makes it pointless to use the theme loader, since it does not need to compile the components.
One solution to this might be to allow browserify support, tried to use this with browserify but had to give up since it could not even see the package to import. Also a really technical exclude on the babel loader might work, but i suck at regex so could not quite get it to work as I wanted (still bloated the file). Though even saying that, I could never get the application to even load if if I included any of the components by source, the above is just notes on the debugging I managed to do before I gave up and used the compiled version.
Also naming is a bit inconsistent, when compiled it is normal (navbar, nav, navItem) and when from the root source (vuestrap-base-components/src/components) it is vsNavbar, vsNav, vsNavItem. Yet when straight to the component (vuestrap-base-components/src/components/navbar) it is back to normal. The documentation does not really bring this up, so really confusing. Suggestion on that front is code examples for each component in the docs, how to include it from the compiled version, by the root source and the individual component.
Of course some of the above could be due to me just not understanding certain aspects.

@jovination Thank you for a great feedback. I will definitely take everything to account in the new version of the components.


requirements.txt need update

in setup.py, laser-ethereum>=0.1.7 is specified, while in requirements.txt, the version is 0.1.4.
Please pip freeze and update the latest pip list,
(Plus, the actual package list should be much longer since the dependency list of mythril package is huge.)
Thanks!

Thanks, I'm currently working on a bigger update, will clean this up with the next merge into master.

I updated the laser-ethereum version and tried to add any non-standard packages I have installed. Let me know if something's still missing.


Hexbin for holoviews

It would be nice to have a HoloViews equivalent of the hexbin package ( https://github.com/edzer/hexbin ), which is an extension package originally made for R. This provides binning and plotting functions for hexagonal bins and is an alternative to the point/scatter plot. Its main feature/advantage compared to the conventional scatter plot is the ability to give a better visual feedback of the density of the points.
(edit)
Existing implementations for python packages:

matplotlib
pandas
seaborn

It seems to already have an interface to rbokeh, see:
http://ryanhafen.com/blog/plot-lots-of-data
https://rdrr.io/cran/rbokeh/man/ly_hexbin.html

pandas and seaborn are probably better references in the Python ecosystem.

@ResidentMario You are right, thanks. I edited my original request.

HoloViews does have seaborn interface classes and I don't see any reason hexbin shouldn't be supported there ( @philippjfr can tell you more about our seaborn support).
Getting similar support in the bokeh backend is likely to be a much more substantial challenge as we would probably need to use another third party library or wait for bokeh to support this type of plot.

Actually matplotlib ships with a hexbin plot by default, see:
http://matplotlib.org/examples/pylab_examples/hexbin_demo.html
We could fairly easily use the matplotlib version to compute the hexbins and then render those with bokeh but that would obviously mean it would that also depends on matplotlib but I suppose that's better than implementing it all ourselves or depending on other libraries like seaborn.

As far as I can see the only improvement that seaborn offers over the mpl version is the marginal histograms, but that would be better handled by HoloViews' own adjoint plots, right?
Note that the original request doesn't specify bokeh or mpl, just asks that we support it.  If wrapping mpl's version is simple, it seems reasonable to do, particularly if its absence would make people unable to use HoloViews in their work.

Here's initial prototypes for both the matplotlib and bokeh implementations:
https://anaconda.org/philippjfr/hexbins/notebook
This will need some more discussion though because since aggregation doesn't happen until plotting there is no way to normalize the color range automatically. If we had a more efficient representation for patches I'd consider storing it that way and making hexbin an operation, but I'm also considering something similar to the HeatMap element, which holds both the raw and the aggregated gridded data. The plot looks just at the aggregated data but you can apply all the usual slicing and other methods to the underlying raw data because these methods will create clones which will recompute the aggregated view. That's also problematic though because then we depend on matplotlib to do the hexagonal aggregation and the Element can't be created without it. Not sure what the best thing to do is yet.

For reference the meat of the matplotlib hexbin implementation is here.
If it is possible to make it much shorter/simpler we might want to consider adding the code to utils instead of unpacking a matplotlib hexbin plot as in get_hex_data. This would help remove an unnecessary dependency on matplotlib but the cost of adding extra code might not be worth it.

Now merged.


Unable to build Cloud Function where Go module version is >v1

If the Go module containing the Cloud Function has a major version above 1, it fails to build.
Here is a minimal example to reproduce:

Init go modules with version 2:

go mod init example.com/entrypoint/v2

Create a simple function, entrypoint.go:

package entrypoint

import (
        "log"
        "net/http"
)

func Entrypoint(w http.ResponseWriter, r *http.Request) {
        log.Println("hello")
}

Build:

pack build --builder gcr.io/buildpacks/builder:v1 --env GOOGLE_FUNCTION_SIGNATURE_TYPE=http --env GOOGLE_FUNCTION_TARGET=Entrypoint my-function

Producing the following error:

Failure: (ID: 03382a83) go: errors parsing go.mod:
/workspace/go.mod:5: require example.com/entrypoint/v2: version "v0.0.0" invalid: should be v2, not v0

By skimming through the functions framework code, it seems like that versioning isn't taken into account. If I understand correctly, the output from go list -m (src) is used as input for a new go.mod file, which requires the Cloud Function to be built as a dependency with version v0.0.0. In this case it would require the module with the command go mod edit -require<EMAIL_ADDRESS>(src). This would cause Go modules to complain and display the error I'm seeing.

Thanks for feedback! This is fixed with the latest builder release.


Update domain-list.json

Removed domains listed as "Known missing" but still in file
Domains removed:

iscord.gift
discordapp.co

I will have to remove this from the README, we adjusted the regex in the stop-discord-phishing package, so we can include them again. Thanks for the notice, tho.


CDPS-1041: Enabling domain event publishing in prod

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

Project coverage is 85.53%. Comparing base (3825e5d) to head (4286fcd).

Additional details and impacted files
@@            Coverage Diff            @@
##               main     #136   +/-   ##
=========================================
  Coverage     85.53%   85.53%
  Complexity      694      694
=========================================
  Files           105      105
  Lines          2205     2205
  Branches        207      207
=========================================
  Hits           1886     1886
  Misses          189      189
  Partials        130      130

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


Fix repeated logs and corrupted characters

Basically, the problem is because of mismatch of socket.io and socket.io-client versions, so I reverted the client for now.
Additionally, I added duplication check for sure.

How can you be so good


No eligible user found

Hi Folks,
I installed the CodiumAI PR-Agent Pro app in one of my private repos. It works for other devs, reviews the PR, adds description etc.
But it never works for the PR that I create. For example, if I comment with /review, I get the following message:
PR-Agent was enabled for this repository, but no eligible user found. Please link your git user with your CodiumAI identity

Any idea why this might be happening?

have you clicked the link and made sure you linked your github account ?

@mrT23 yes. This is what I see:

ok. Share an address of a pr URL so we can look at the logs.
Just making sure: you are a Pro user, and not just on a trial that ended ?

That might be the case. I am not a Pro user. Here is the (private) URL https://github.com/thesunlitlive/backend/pull/31

yes, thats what i see in the log:

Thanks. I am closing this issue


Metadata fix on RPM-Core.

@pjf Should not an equivalent fix be done for RasterPropMonitor as well?


Add FormBuilder library

https://github.com/bancer/form-builder

At this point we only accept new plugins that can be 4.x compatible

I have not tested it with 4.x yet but I believe it is compatible.

I did a quick testing with CakePHP 4.2.10. It is compatible.

I did a quick testing with CakePHP 4.2.10. It is compatible.

Sorry, that's not good enough. You need to run the testsuite with CakePHP 4 as part of your CI setup.

Sorry, that's not good enough. You need to run the testsuite with CakePHP 4 as part of your CI setup.

That would mean that many assertions would need to be rewritten because 4.x FormHelper generates different HTML than in 3.x. I really see no good reason to do that because the code of FormBulder itself will not need to be changed in order to pass the new tests. Take a look at this method for example: https://github.com/bancer/form-builder/blob/master/src/DateTag.php#L68-L72
    public function __toString()
    {
        $options = $this->getOptions();
        return $this->FormHelper->date($this->fieldName, $options);
    }

This is compatible both with 3.x and 4.x although would generate different HTML as expected.

You need to proof your compatibility by actuall using require on all major versions and provide a test for highest and lowest (prefer lowest) as we always do.
This way, it can be sure not to break in the future somehow for older ones (hidden regressions).
If outputted HTML is different, maybe assert on it more dynamically, or write a test case per major, and skip for non fitting major.
There are quite a few ways to do it.
Usually however, you would just support 1 framework major per branch/major, and just merge across them.


Testing

WIP
This is a draft/WIP pull request do NOT merge it
1. Why?
2. How?
3. Related Issue
4. Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

5. Tests made (if appropriate)
6. Notes (if appropriate)

Hey @rothiotome I was working on testing and I would like you to give me your opinion about it. You can check the changes but let me explain in a few points the work so far:

I Added GUT addon 😎
Added 2 test files for check some static methods
Added some comments in files
Linter fixes
Added a raw documentation WIP
Added also an action. The limits for a free account are 2000 minutes each month and 500 GB of space

Unfortunately https://www.tuxfamily.org/ is down so the automatic test are broken now ( yay 😢 )

Hey Rothio, job done (?)
I want to test the action but for that I need to close thisPR and open a new one. Are you ok with this?

Remove both "fixme"s. It was a dumb error with breaking lines in godot editor ( duh ). I added a strip_edges for safetines
Good catch!


Recent regressions

We need to test these basic features

Speed to download 10000 videos is the same before/after
one task produces one shard
n processes run if N processes are specified in the config
M threads per process run

If we can verify these properties then let's revert all the recent PRs until a working state is found

@MattUnderscoreZhang fyi
I suggest we first revert https://github.com/iejMac/video2dataset/commit/83afef059ba1a29eb92bb6cb922f1f8e0ffd5965 then later fix forward

https://github.com/iejMac/video2dataset/pull/293#issuecomment-1925810211 for reference

reverted