Add CommandFactory Documentation

Add Documentation for Xamarin.CommunityToolkit.ObjectModel.CommandFactory
https://github.com/xamarin/XamarinCommunityToolkit/pull/797

Hey @maxkoshevoi! When you get a chance, could you leave a comment on this Issue?
Once you leave a comment, I can assign it to you.
 When you get a chance, could you leave a comment on this Issue?
Once you leave a comment, I can assign it to you.
For some reason, GitHub doesn't let us assign Issues to users until they comment on Issues 🤷♂

@brminnick I'll duplicate my comment from here: https://github.com/xamarin/XamarinCommunityToolkit/pull/811#issuecomment-770053027
I think this is better place for discussion that closed PR =)
Command constructors
I understand that adding Create overloads that wrap parameters into some custom logic is not the best idea. But that's to unify constructors across all command types.
PR into Xamarin repo is a good idea to solve this issue. Do you think they'll accept it?
Parameter names
Different execute parameter names are needed if user will specify more than two arguments. We don't have overloads for that.

@brminnick I'll duplicate my comment from here: https://github.com/xamarin/XamarinCommunityToolkit/pull/811#issuecomment-770053027
I think this is better place for discussion that closed PR =)
Command constructors
I understand that adding Create overloads that wrap parameters into some custom logic is not the best idea. But that's to unify constructors across all command types.
PR into Xamarin repo is a good idea to solve this issue. Do you think they'll accept it?
Parameter names
Different execute parameter names are needed if user will specify more than two arguments. We don't have overloads for that.

Thanks for responding, @snoopyapocalypse
This is an issue to update the official Microsoft Docs; it is not the appropriate place for this discussion

Thanks for responding, @snoopyapocalypse
This is an issue to update the official Microsoft Docs; it is not the appropriate place for this discussion


[FEATURE]: Scrollable Calendar

Expected behaviour
User chooses to show events for X number or days, but has the height of the card set statically to X.  Scroll ability would allow user to scroll through X number of days while retaining the card height.
Current behaviour
Calendar shows events based on defined height of card.
Context and reason
Maximized space.
Checklist

[x] I searched the current issues and the feature is not known.
[x] I am mostly sure that the feature will bring more good than bad.

I will see about adding this, for the time being you may be able to use this with card-mod to achieve what you require.
type: 'custom:mod-card'
card_mod:
  style: 'ha-card { height: 737px; overflow-y:scroll!important; }'


Update README.md

I tried to clarify a few points and also include GPLikelihoods.jl into the core packages (because it is just as important as KernelFunctions.jl).

@theogf, maybe GPLikelihoods.jl should also be pinned onto the org page.


Docs/uty 1764

Description
Fixes for UTY-1764 and UTY-1748. Some small tweaks were also made to the Cloud Deployment page to match the language used in these fixes.
Tests
Rendered all changes in Improbadoc
Primary reviewers
@jessicafalk , @oblm

FYI @ommer-m, you can ignore the buildkite failures here, these builds have not been correctly configured to run on docs/improbadoc-conversion

added laura and rob as reviewers as every docs PR should have at least one approval from a tech writer. Please don't merge until one of them is happy with it :)


More useful profiler wanted.

It would be very nice to gen more powerful profiler output. Like:
ts-loader: XXXms total, XXXms average per module
babel-loader: XXXms total, XXXms average per module
ExternalPlugin: XXXms total, (hookName: XXms, hookName2: XXms)

This output very useful to quick get build performace problems.

Can you comment at https://github.com/webpack/webpack/issues/3996 ? Let's merge this there. If we had a better logging interface and interception, that might achieve what you want.


Solid elements don't support pressure forces

Pressure is the standard way to apply loads to a solid model.  There are some additional options for MSC Nastran, so we'll go with the simpler one for now (they're also compatible).
The mystran QRG:

The NX Nastran QRG:

Just as a note, the CID/N1/N2/N3 option is far less important than The G1 and G3/G4 option.


Infinite loop in v9.21.1

Bug:
We're running into an infinite loop when a column has 0 width. The browser becomes unusable.
After digging a bit deeper I found that the it's related to the following PR:
https://github.com/bvaughn/react-virtualized/pull/1312
@trxcllnt  @wuweiweiwu
In the following line nearestCellIndex is always greater than this._lastMeasuredIndex:
https://github.com/trxcllnt/react-virtualized/blob/8fcc7031cbde72495e5fe3415e54c974b8d29880/source/Grid/utils/CellSizeAndPositionManager.js#L248
It seems that the problem is inside of the linear-vector-layout library function indexOfInternal or the handling of it's return index.

Bug seen in the following environment:

Browser
Chrome, Firefox

OS
Windows

React
16.6.3

React DOM
16.6.3

react-virtualized
9.21.1

Our Fix
Revert react-virtualized back to 9.21.0

ooh yikes, my apologies @alxbradley. @wuweiweiwu do you think we could revert my PR until I have time to finish cleaning the library up and adding more tests? I'm about two thirds of the way done, but I'm slammed with other stuff at the moment.

@trxcllnt @alxbradley will update thread when done

@wuweiweiwu alternatively, I could add guards to disallow 0-sized elements for now.


Some staging site links point back to main opencue.io.

I noticed this on https://deploy-preview-75--elated-haibt-1b47ff.netlify.com/docs/.
The main body text "OpenCue getting started guide" is a link, but it links back to https://www.opencue.io/docs/getting-started/ instead of the same page on the staged version.
However the TOC links on the left-hand side of the page work fine.

Thanks for reporting! Yes I noticed this yesterday but hadn't got round to investigating the cause or reporting it. Looking at it, I think this is related to the change Docsy recently made as a result of a feature request to auto-generate index pages. (which saves us work to manage the indexes manually)
Specifically, it's the changes in section-index.html to generate the link as follows:

{{- .Title -}}

I think we need to update .Permalink to .RelPermalink to make the index behave the same as the left-hand sidebar menu.
This bug is going to affect every OSS project using Docsy, so I'll file a bug upstream and reference it here. If we can fix it quickly then I'll wait to pull the changes from Docsy, otherwise I can temporarily fix it for opencue.io with an override if we feel it's urgent / confusing.

Reported in https://github.com/google/docsy/issues/103

Fixed upstream in https://github.com/google/docsy/pull/104
Will need to update to the latest version of Docsy to apply the fix.


Custom Connector Compilation for Different Target Configurations

I have a custom connector that uses Oauth2.  The Authentication is Aad, and resource ID is the app registration (currently an app registration in the Development environment).
We have distinct staging environments (Development, Test, Prod) with separate AAD app registrations in each.
I originally assumed it would be straightforward to create separate project configurations in VS for each environment, and have compiler constants that could be used for setting a different resource ID in each environment.  However, it doesn't appear that this type of project in VS supports configurations, let alone compiler constants.  That was Plan "A".
Plan "B" was to somehow detect the staging environment at runtime while executing (eg. get the local machine name, or else read from an local file "ResourceID.json", or else detect the name of the mez file itself and rely on the file name to indicate our staging environment.)  Any one of these could then be used for configuring AAD authentication to the correct app registration.
However, I'm not finding any API's to reach out dynamically and detect anything in the environment at runtime.
I think Plan "C" is to add environment details into a content file "Environment.json" and compile that into the mez.  The building of the solution will need to happen from a custom script that edits the Environment.json as a first step (depending on my configuration target).
If someone else is more experienced at this, please let me know if I missed something that would work for Plan A (eg. project configurations or compiler constants) or Plan B (dynamic detection of environment at runtime).
Otherwise I will proceed with Plan "C" which is a bit of a pain, but not the end of the world.
Also, was wondering if there is an update on using custom connectors from dataflows.  If we put this type of effort into retrieving data from an API, then a larger ROI is important to us....  Given that a custom connector is likely to be esoteric and unfamiliar to most Power BI data consumers, it is very likely that whoever writes the connector should also be the one writing and deploying the dataflow.  But I wasn't able to create a dataflow for the connector, and had to embed the use of it into each dataset.

Custom Connectors in Dataflows Idea Vote https://ideas.powerbi.com/ideas/idea/?ideaid=70ae2adf-2f7f-42e3-9995-2b0f91c975d1

Supporting custom connectors in Dataflows is very important to us, and if there weren't some serious technical challenges in doing so it would already be done. I think it should be part of the next set of release notes (which covers work expected to happen by October) but that list isn't final yet.

Hey! The work to enable custom connector in Power BI Dataflows is underway. For more information, please check the release note from the link below:
https://docs.microsoft.com/en-us/power-platform-release-plan/2022wave1/data-integration/support-custom-connectors-power-query-online-through-on-premises-data-gateway


Add .gitignore

Add gitignore file and I should remove the .DS_Store files.

It seems you are comfortable working with Flask. Why not add a few features in the Flask backend? I'd be more than happy to see even small enhances to it.


Admin - Stream Comments

Display comments on stream page

Modifications to SocketAdapter for admins

Small changes

Hide end date on stream page if null
Fix dates to have leading zeros
Slight refactoring

Good job :+1:  Can merge.


fix: require -> import

What kind of change does this PR introduce?
Closes #241.

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


cv25519 ECC Support

Hi,
Apologies if I missed it, but nothing showed in a quick search of the code.
Any plans for cv25519 support ? (cv25519)

I think you should subscribe to #13


Repaint ERD without changing the order of current already painted ERD

Problem:
DBeaver changes tables order when I click on refresh button.
Imagine, I spent one hour for arranging tables in ERD to fit all of them into the one screen. After that I've noticed, that I have a misprint in column name of a table contains only two simple columns. But I'm preparing a ERD for my customer (seems it's really important to change the name of a column). I'm going to correct this misprint. Do this. And I have to refresh ERD, to apply my changes. After refresh all tables are arranged by default arrangement strategy.
Is it possible to refresh ERD and do not change places of tables if no relations were  added to them?

@tchibatron when you use Refresh button for the real diagram it's actually will be completely redrawn because it's not obvious for DBeaver what was changed. Maybe, we need to keep the layout in somewhere.
As a workaround, you can use Custom diagrams (https://github.com/dbeaver/dbeaver/wiki/Custom-Diagrams). It has refresh button for columns' name updates as well.

Indeed, this is a quite nasty glitch.
We have to keep all diagram elements where they were.

Done (for both custom diagrams and automatic ones)

Fix can be tested in EA version

reopened. issue appears if custom diagram wasn't previously saved

Let's track thi issue in a separate ticket


What are the size crops you recommend for delauny and why?

saw this one: https://github.com/camillegontier/DELAUNAY_dataset/blob/827db39400d8b5e12b4cc538b98a2f77099b747d/CNN_training/training.py#L26 curious about choice
@camillegontier

more context. Original img process:
def _original_data_transforms_delauny(size: int = 256) -> transforms.Compose:
    transform = transforms.Compose([
        transforms.Resize((size, size)),
        transforms.ToTensor(),
        transforms.Normalize(mean=mean,
                             std=std),
    ])
    return transform

the one I am trying to do:
        train_data_transform = Compose([
            # ToPILImage(),
            transforms.Resize((256, 256)),  # todo think about this, is this what we want to do? https://github.com/camillegontier/DELAUNAY_dataset/issues/4
            RandomCrop(size, padding=8),
            ColorJitter(brightness=0.4, contrast=0.4, saturation=0.4),
            RandomHorizontalFlip(),
            ToTensor(),
            normalize,
        ])
        test_data_transform = transforms.Compose([
            transforms.Resize((size, size)),
            transforms.ToTensor(),
            transforms.Normalize(mean=mean,
                                 std=std),
        ])
        validation_data_transform = test_data_transform

more is similar to imagenet like things.

asking due to error:
ValueError: Requires scalar labels.
Required crop size (84, 84) is larger then input image size (46, 616)
python-BaseException

(also I think the target transform is missing from your 5cnn script?)

this might be a consideration to use: https://pytorch.org/vision/main/generated/torchvision.transforms.RandAugment.html

might be relevant: https://stackoverflow.com/questions/74451955/is-it-safe-to-do-a-totensor-data-transform-before-a-colorjitter-and-randomhori/74453591#74453591


Add support for custom chain id

Is your feature request related to a problem? Please describe.
starknet.py supports custom starknet instances but doesn't support custom chain id
Describe the solution you'd like
@Arcticae will ask SW about this issue

Please consider re-exporting ChainId as Union[StarknetChainId, int (or whichever the types suits the needs here)]

This might be an easy change, since we're deprecating the chain from Clients anyway (it will only be a part of the signer).


Demonstration Update

This PR updates the demonstration to include a negotiation card and an updated MLTE report. Aside from being useful for demonstration purposes, this should make it easy to produce these artifacts for development purposes.

Updated demo also worked for me to create the negotiation card and report beside the (expected) failures with memory items on mac

Note that this version of the demo should not show memory failures on macOS. This branch already includes a fix from a previous PR that allows memory stuff to work on mac. So if it is not working, it may mean you have not compiled the version in this branch, or the demo is using a previous version and needs restarting.

@sebastian-echeverria I updated this PR with the new method of implementation for "nested" artifacts - the Report now merely references the ValidatedSpec with which it is associated. I also introduced a rudimentary system for executing pre-save hooks for artifacts. This allows, for instance, the Report artifact that the identifier for its validated specification (if it is given) is valid at the time the artifact is saved.
Of course, this does not prevent one from deleting the validated specification out from under the report after it is written, but we haven't written any logic concerning artifact deletion yet, so that will have to be something for a later time.


coq_kernel: init at 1.6.0

Description of changes
This is a Jupyter kernel for Coq, the formal proof management system.
Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[X] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[X] Fits CONTRIBUTING.md.

@SuperSandro2000 any chance I could trouble you to review this? I think it should be straightforward, I did it the same way as other Jupyter kernels I've packaged in the past.

@siraben don't you know coq?

I do, but I'm not very familiar with Jupyter. I'll review this when I have some time.

Any chance we can get this merged soon? Coq familiarity isn't really required, you just have to start up the Jupyter notebook and confirm that it successfully runs Coq code. It works for me when doing the following:
nix run nixpkgs#nixpkgs-review pr 171202
$(nix-build -E 'with import ./. {}; jupyter.override { definitions = { coq = coq-kernel.definition; }; }')/bin/jupyter-notebook

@SuperSandro2000 @siraben ping again on this.

I was actually looking at the metakernel breakage yesterday and realized coq_jupyter doesn't actually require it. Just removed it and rebased on master.

How would one go about adding coqPackages?

I'm not sure, the manual seems to only describe how to add new ones. If you figure it out please lmk!

Actually, it seems like coqPackages are meant to be installed alongside coq in the same environment. For example, if I build coqPackages.ceres, it produces a lib path result/lib/coq/8.16/user-contrib/Ceres. Presumably coq will search these kinds of paths when you do an Import.
However, it's not working too well for me. I tried installing coq alongside coqPackages.ceres, and the import still failed. I notice coq alone produces lib/coq/user-contrib so perhaps there's a slight mismatch here.

Just pushed a commit adding a definitionWithPackages function.

That should be pretty useful. Pinning version is common in this space, so could you also make the coq version configurable? I would like to pass say coq_8_15 along with some coqPackages_8_15. I will test it again after than and then it should be ready before more feature creep sets in ;)

I think it's already configurable via override, which AFAIK is the standard pattern.

What I'd really like to do is open a PR to either attach the coqPackages for a given version to the coq, or even better, add a coq.withPackages function.

I've tested it with adding some coqPackages and also overriding the coq version. Everything works so it LGTM.

Great! Let's see if we can get it merged now.

@SuperSandro2000 ? This is still ready to go

Hi @jonringer, I'm hoping to find a reviewer for this and a few other Jupyter-related PRs. I saw you committed the initial IRuby PR so I was wondering if you could take a look here?

I've just updated this to be consistent with the latest Jupyter stuff. I think it's ready to merge!

Could you rebase your changes with the latest nixpkgs?

Done @GTrunSec

Test: nix run --impure --expr 'with import ./. {}; jupyter-console.withSingleKernel (coq-kernel.definitionWithPackages [coqPackages.bignums])'
nix run --impure --expr 'with import ./. {}; jupyter-console.withSingleKernel (coq-kernel.definitionWithPackages [coqPackages.bignums])'
Jupyter console 6.6.3

The Coq Proof Assistant, version 8.18.0
compiled with OCaml 4.14.1

In [1]: Compute (1 + 1).
Out[2]:
     = 2
     : nat

Thanks, LGTM

Cool! I guess now we ping @teto that this kernel is ready to go?

we should ping @natsukium jupyter team.


Orderable crates: boxing equipment, empty boxes, bodybags

About the PR

Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

add: Boxing equipment crates, empty boxes crates, and medical body bag crates now can be ordered from cargo

merge master

merge master

Done

linter error

linter still failing, doesnt look erroneous


Android Basics: Viewmodel and State in Compose

In order for my app to work i had to move this line:
val uiState: StateFlow<GameUiState> = _uiState.asStateFlow()
inside:
 GameViewModel() {
val uiState: StateFlow<GameUiState> = _uiState.asStateFlow()
}

Hello @absoluteheero,
Thank you for reaching out to us.
That's correct, as instructed in the codelab:

Happy coding!


Stat sinks: Allow OpenTelemetry sink to export via HTTP

Title: Allow OpenTelemetry sink to export via HTTP
Description:
Similar to what was done for tracing, the stat sink for OpenTelemetry today only allow exporting via gRPC. This limits users to require either a back-end that handles OTLP/gRPC or deploy a OTel collector to do the conversion from gRPC to HTTP.
It would be nice if the stat sink could be configured to export via HTTP, allowing it to directly export to a back-end that supports OTLP/HTTP.
The sink is helpful, for example in troubleshooting to see if spans are being exported or not.
[optional Relevant Links:]

HTTP should be the default one, according to the OTel spec

SDKs SHOULD support both grpc and http/protobuf transports and MUST support at least one of them. If they support only one, it SHOULD be http/protobuf. They also MAY support http/json.

https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/10206

cc @alexanderellis @yanavlasov


How can I automate uploading a file using puppeteer

I want to upload a file. The scenario is:

Code should open headless browser
Click on upload file icon
Select a file and upload it

I need assistance with step 3. Can you provide guidance on how to accomplish this task?

Please post this question on StackOverflow if you need help with this. The short answer is: using https://pptr.dev/api/puppeteer.elementhandle.uploadfile/


Prompt to create basic Skaffold YAML when there are no Skaffold files available in run target

When a developer starts with a fresh Skaffold run configuration, and does not have Skaffold YAML files, run configuration shows empty drop down and no hints on how to proceed. We can add a quick fix or link to add a standard Skaffold configuration right from the run target UI.

Deprecated. See https://github.com/GoogleCloudPlatform/google-cloud-intellij/issues/2364


WL-4491 Set the viewport when the HTML header is added.

Change is fine technically.

I did briefly talk about this with Adam.  He will check various web pages during testing.


The Current Volume Sensor should return the master volume level

The sensor now returns the master volume level of the current default device.
This fixes #86

Hey thanks for your PR! I think both implementations provide value and I'd prefer not to break the current sensor for users already using it. Would you mind if I turn your implementation in a separate sensor? Say, a SetVolumeSensor?

Hi, i think you are right. This should not break the compatibility. I will update this pull request.

I think it is cleaner if i create a new PR with the new sensor.

This has been implemented further by @SecretiveShell in #123 so I'll close this one.

That is great. Thanks @SecretiveShell.

You did all the hard work @sgebhardt !


Add a requirements.txt file

This simply puts the requirements for building the theme into a requirements.txt file. This makes it more obvious what is required.

Actually I realize this isn't necessary. There's already a requirements.txt file under docs. However, running grunt also requires those requirements.

Also, for packages, i prefer avoiding requirements.txt file. setup.py/setup.cfg is a better place for these dependencies

@agjohnson normally I agree. The issue is that building for grunt requires installing packages that won't be installed if you just create a fresh venv.


Add Plan9 executable loader

Radare2 has an implementation of this loader. It would be useful for historical/research purposes too

Sounds cool, but this will probably have to be tackled by the general community.


Support jsnext:main and module fields

This is fairly low on the priority list, especially since v1.0.0 is still looking to be shipped, but I wanted to document it for record keeping.
It would be great for SUIR to provide a bundle that maintains ES6 imports/exports so that bundlers that natively understand ES6 modules (webpack 2, rollup) can tree shake its usage in order to produce smaller bundles. Adding support for babel-plugin-lodash is already a great start, especially for webpack 1.0 and similar; this change would take it a step further by allowing bundlers to perform the same thing natively without the overhead of additional tooling.
Note: it's important that the code still be preprocessed with babel, because we should not assume anything else about the user's environment.
I believe that this is important piece of functionality, especially as the library grows, because it means that users don't have to be as concerned about the library's weight as a whole and can reap the benefits of targeted bundles without additional work on their part, especially as more bundlers implement tree shaking natively.
See:

https://github.com/ReactTraining/react-router/pull/3672
https://github.com/reactjs/redux/issues/1042

Steps

Import SUIR in a bundler that understands ES6 modules.
Do not use a plugin to transform imports (such as babel-plugin-lodash)

Expected Result
Unused SUIR code should not be included in the final bundle.
Actual Result
All SUIR code is put into the bundle regardless of whether or not it was used.
Version
all

Agreed, this should be pretty easy to setup.

Can reference this PR for a roadmap, https://github.com/reactjs/redux/pull/1369.

@davezuko is something you'd want to pick up?

I could, but don't want to assign it to myself until I have time to commit to it, especially with the holidays coming up. Will keep it in mind and if I manage to take a crack at it I'll let you know/post a PR and link here.

Released in<EMAIL_ADDRESS>


4 bit loading fails

I have tried both the model worker and the cli, and both when passed 4bit loading just fail with the error message:
Loading pretrained weights (convnext_large_d_320).
Traceback (most recent call last):
  File "/usr/lib64/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/xxx/minigemini/serve/cli.py", line 234, in <module>
    main(args)
  File "/xxx/minigemini/serve/cli.py", line 56, in main
    tokenizer, model, image_processor, context_len = load_pretrained_model(args.model_path, args.model_base, model_name, args.load_8bit, args.load_4bit, device=args.device)
  File "/xxx/minigemini/model/builder.py", line 124, in load_pretrained_model
    model.get_model().initialize_uni_modules(model.config, for_eval=True)
  File "/xxx/minigemini/model/mini_gemini_arch.py", line 213, in initialize_uni_modules
    get_w(projector_weights, 'vision_tower.vision_tower', self.vision_tower, 'vision_tower')
  File "/xxx/minigemini/model/mini_gemini_arch.py", line 209, in get_w
    getattr(main_module, sub_module).to(device=device_type, dtype=weight_type)
  File "/xxx/venv/lib64/python3.10/site-packages/transformers/modeling_utils.py", line 2460, in to
    return super().to(*args, **kwargs)
  File "/xxx/venv/lib64/python3.10/site-packages/torch/nn/modules/module.py", line 1130, in to
    raise TypeError('nn.Module.to only accepts floating point or complex '
TypeError: nn.Module.to only accepts floating point or complex dtypes, but got desired dtype=torch.uint8

loading with 8bit works, but OOMs on my hardware. (24+24 vram)

Hi, the bug is fixed now. You can update our latest code and try.

indeed, thanks!


Offset scope node headings

Describe the Bug with repro steps
When creating scope nodes, if the children have split paths and one path is larger than the other, you will sometimes get behavior like in the screenshot below.
This is purely visual and has no logical implications
Screenshots or Videos

AB#24202832

c

c


Resolves #53 remove serverMiddleware

@sglanzer I punted on serverMiddleware altogether for now.
it's orthogonal to the original use case of file output when running ci tests
kinda maxxed on other fronts - looks like this will keep folks running

Sounds fine to me, I'm with you on being maxed out.


Add health check for addon

/assign  @elgnay

/hold would want @ycao56 to take a look for their usage.

/lgtm

/unhold


wrong socket usage

https://github.com/dalmatinerdb/ddb_client/blob/master/src/ddb_tcp.erl#L452
Socket in the line above should be from Con1, not Con.

good catch


Add demo-app;

Will soon be accessible on the url licensematcher.com

Done, licenseMatcher.com is up & running;


Please help me, try to add CachedNetworkImage in leading ListTile

══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during performLayout():
Leading widget consumes entire tile width. Please use a sized widget, or consider replacing ListTile
with a custom widget (see
https://api.flutter.dev/flutter/material/ListTile-class.html#material.ListTile.4)
'package:flutter/src/material/list_tile.dart':
Failed assertion: line 1457 pos 7: 'tileWidth != leadingSize.width'
Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=BUG.md
The relevant error-causing widget was:
ListTile
lib/Screen/HomeScreen.dart:58
ListTile(               onTap: () => print('sas'),               title: Text(homeProvider.listUser[index].name),               leading: CachedNetworkImage(                 imageUrl: homeProvider.listUser[index].avatar,                 placeholder: (BuildContext context, url) => CircleAvatar(                   backgroundColor: Colors.amber,                   radius: 150,                 ),                 imageBuilder: (BuildContext context, image) => CircleAvatar(                   backgroundImage: image,                 ),                 errorWidget: (context, url, error) => const Icon(Icons.error),               ),               subtitle: Text(homeProvider.listUser[index].email),             ),

Hi @pvzuntil
this error happen because the URL still loading so no height and width, for the view.
You can add  static height and width for CachedNetworkImage :
CachedNetworkImage(
            height: 50,
            width: 50,
            imageUrl: horseUrl,
            placeholder: (BuildContext context, url) => CircleAvatar(
              backgroundColor: Colors.amber,
              radius: 150,
            ),
            imageBuilder: (BuildContext context, image) => CircleAvatar(
              backgroundImage: image,
            ),
            errorWidget: (context, url, error) => const Icon(Icons.error),
          ),

if you have issues with CachedNetworkImage please create new one Here : https://github.com/Baseflow/flutter_cached_network_image/issues/new/choose

Hi @pvzuntil
It seems you are asking for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you

https://stackoverflow.com/questions/54587921/make-cachednetworkimage-scale-to-fit-height-of-listtile


Question: Key Fragment

Hello, first of all I would like to say thank you for your wonderful software. I am planning to use it soon and was wondering what I should enter for the key fragment argument when creating a new EEPROM file.
Cheers,
Danny

Hi,
You can put whatever you want for the key fragment. The format is 8 bytes,
hex encoded.
e.g.:
0123456789abcdef
4242434445464748
The key fragment is used to build the key that will be used to both encrypt
and decrypt the EEPROM.
Benjamin Vanheuverzwijn
Le 2015-12-04 4:38 PM, "hahathejellyfox"<EMAIL_ADDRESS>a
écrit :

Hello, first of all I would like to say thank you for your wonderful
software. I am planning to use it soon and was wondering what I should
enter for the key fragment argument when creating a new EEPROM file.
Cheers,
Danny
—
Reply to this email directly or view it on GitHub
https://github.com/bvanheu/stratasys/issues/26.

Thanks :) I was also wondering what the initial material and current material fields are for

initial material quantity: the quantity of material in cubic inches initially in the cartridge
current material quantity: the remaining quantity of material in cubic inches.
When initial material quantity == current material quantity, it means that the cartridge is full (100%).

Excellent thanks for all the help


add skylands

Please edit the TOML metadata files in the src folder rather than the README (which no longer contains the mod list).


Creating emtpy cards is possible

name says it. One may create empty cards by clicking the "create" button without entering any information.

Gonna take a look at this issue over the weekend. The Problem is that I'm not validating any forms for invalid input except the login and registering form.

Well the bug is now fixed and there should be form validation in every form now, with nice looking error messages :)


Radeon ProRender plugin for Unreal 4.24 doesn't work on 4.25.

Runnning the 4.24_v05 plugin the first time resulted in this message

"Missing RPR Modules"
"The following modules are missing or build with a different engine version:
RPR
RPRPluginVersion
RPR_SDK
RPRTools
RPRCore
RPRPlugin
Would you like to rebuild them now?"
If I pressed yes it kept working for some time, but at the end, I got this

"Error"
"RPR could not be compiled. Try rebuilding from source manually"

Build for RPRPlugin_4.25
You can follow README.md file and follow build instructions.
I made small video with howto build UE 4.25
https://youtu.be/eAM0wIDRXKQ

How to compile and debug RadeonProRender for UE4.25 manually
Prerequisites:
• git bash
• Visual Studio 2019
• Unreal Engine 4.25
Steps
1. Clone project to your computer via git bash
git clone  --depth=1 --recurse-submodules -j8 git@github.com:GPUOpen-LibrariesAndSDKs/RadeonProRenderUE.git
2. Switch plugin project to UE 4.25 version
3. Open in Visual Studio and compile project
4. Copy your assets to UE plugin project
5. Run / Debug Plugin code
6. OR copy plugin directory to your UE 4.25 project
Thanks


Wrong tokenization of extended scss class names

VSCode Version: Code 1.17.2 (b813d12980308015bcd2b3a2f6efa5c810c33ba5, 2017-10-16T13:57:00.652Z)
OS Version: Linux x64 4.13.0-16-generic

Steps to Reproduce:

Create a class rule in an SCSS file.
Extend the class using nesting and an &.
Begin the name of the extension to the class with 2 or more hyphens.

Based on the above screenshot, __element is tokenized as punctuation.definition.entity.css, which I suppose is alright.
However, --modifier is tokenized as variable.css which can lead to unsightly styling issues if the two tokens are styled differently in a particular theme (see the screenshot above).
Reproduces without extensions: Yes

We appreciate it, that you wanna contribute, but please read the information in the file header:
https://github.com/Microsoft/vscode/blob/80efcf5fdee32f7249ad23011a2abc4254fc19de/extensions/scss/syntaxes/scss.json#L2-L6

This issue was moved to atom/language-sass#241


hardcoded strings

https://github.com/waseefakhtar/dose-android/blob/10b015513497b069fdaf965cbb8d250e90d0c54d/app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt#L288
https://github.com/waseefakhtar/dose-android/blob/10b015513497b069fdaf965cbb8d250e90d0c54d/app/src/main/java/com/waseefakhtar/doseapp/feature/addmedication/AddMedicationRoute.kt#L268
Also for the Recurrence Dropdown, you're using its enum name instead of providing a translated text.
I fixed this problem in one of my apps by introducing an integer variable inside the enum which refers to the resource id of the string equal to the current enum value.

Thanks for reporting this! Definitely something we should fix.

All the hardcoded strings are now extracted in #126 except for the Recurrence dropdown so we can rename this to be clear.


how to the Polygon cluster

now point can cluster,but polygon can't.how to the polygon cluster

It's currently not implemented.

thank you very much,Which version of the plan is to implement the function.


[chore] fix grid view action btns

Notes for Reviewers
This PR fixes a bug for filters page (grid view) where action buttons causes no action and silently crashes.
This PR fixes #
Signed commits

[ ] Yes, I signed my commits.

// @Abhishek-kumar09


Duplicate type definitions in the output file

Which packages are impacted by your issue?
@graphql-codegen/cli, @graphql-codegen/typescript-operations
Describe the bug
When running graphql-codegen with the provided configuration, the generated output file contains duplicate type definitions for every type.
I run graphql-codegen --config codegen.ts
the config-file (codegen.ts):
import type { CodegenConfig } from '@graphql-codegen/cli'

const config: CodegenConfig = {
  overwrite: true,
  schema: 'http://localhost:4000',
  documents: ['**/src/**/*.tsx'],
  generates: {
    './generated-graphl-types/': {
      preset: "client-preset",
      plugins: ['typescript', 'typescript-operations', 'typescript-react-apollo'],
    },
  },
}

export default config

I found similar issues, where the preset was named as the root cause, but i tried different presets and either I get an error or face the same issue.
Your Example Website or App
none
Steps to Reproduce the Bug or Issue

Run graphql-codegen --config codegen.tswith the given config
Inspect generated file at ./generated-graphl-types/graphql.ts

Expected behavior
Types shouldn't be duplicated in the output file
Screenshots or Videos
No response
Platform

OS: macOS
NodeJS: 16.13.0
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Codegen Config File
import type { CodegenConfig } from '@graphql-codegen/cli'
const config: CodegenConfig = {
overwrite: true,
schema: 'http://localhost:4000',
documents: ['/src//.tsx'], // '/src//.ts'
generates: {
'./generated-graphl-types/': {
preset: "client-preset",
plugins: ['typescript', 'typescript-operations', 'typescript-react-apollo'],
},
},
}
export default config
Additional context
No response

It looks like the ** at the beginning of documents was the issue

import type { CodegenConfig } from '@graphql-codegen/cli';

const config: CodegenConfig = {
  overwrite: true,
  schema: "https://beta.pokeapi.co/graphql/v1beta",
  documents: "./src/**/*.ts",
  generates: {
    "src/gql/": {
      preset: "client",
      plugins: ["@graphql-codegen/typescript-react-apollo"]
    }
  },
};

export default config;

I am using this config to geenrate the types and it is generating duplicate types
I am using this plugins with next js


Handle service disappeared RPCError when VM service connection disappears

This was already done when invoking service extensions registered over the service protocol, but not for service extensions registered by the framework.

Can we add a unit test case for this?

Done.

Can we add a unit test case for this?

Done.

g3 is missing RPCErrorCodes.kServiceDisappeared

g3 is missing RPCErrorCodes.kServiceDisappeared

g3 is missing RPCErrorCodes.kServiceDisappeared

According to @jonahwilliams this is likely just a FRoB issue that we can ignore. Will land when the tree goes green.

g3 is missing RPCErrorCodes.kServiceDisappeared

According to @jonahwilliams this is likely just a FRoB issue that we can ignore. Will land when the tree goes green.


Version bump to get latest code live?

Can we do a version bump to 0.0.7 to get the latest code out there?

Poke. Here, too. :) :+1:

This plugin is becoming non-functional as the network interface configuration has changed and now fails completely with additional private networks and static addresses.

Is this plugin still functional and/or maintained ? If not, what would it take to make it work ?
Thanks :)

I have not heard from oxdi at all. I would be happy to fork this by now and make releases und a new name.

That's the power of open-source :) Using this with another box image (https://atlas.hashicorp.com/larryweya/boxes/nixos-14.12_64), nixOS boots, then using the external configuration file without options, files are generated in /etc/nixos/.. But you are right I did not manage to get the network working again. That would be really great if you forked it :)

Does the last push from @chrisfarms  (https://github.com/oxdi/vagrant-nixos/commit/d7a0a983b30c473738f5abfca6d64fe9f502c545) change anything ?
I don't remember seeing it here. The date seems wrong though so either my memory is failing, or the push date differs from the commit date ?

That is the one that I also have in my fork. :(

I tried contacting Chris directly right now. Lets see whether he's still around.

@ctheune Ah my memory is already failing... Yes that would be great :)

Any luck?

Nope. We started forking this now. See https://github.com/zimbatm/vagrant-nixos-plugin and https://rubygems.org/gems/vagrant-nixos-plugin


Fix cache key collision for fonts with bad TTF metadata

Steps to reproduce
See the attached test file.
In general:

Have two fonts with bad fullname TTF metadata. For example these two both have fullname "-":
$ fc-query NeueHaasGrotesk-Regular.otf
Pattern has 26 elts (size 32)
	family: "NeueHaasGrotesk-Regular"(s)
	familylang: "en"(s)
	style: "Regular"(s)
	stylelang: "en"(s)
    	fullname: "-"(s)
    	fullnamelang: "en"(s)
    	slant: 0(i)(s)
    	weight: 80(f)(s)
	...
$ fc-query NeueHaasGrotesk-Medium.otf
Pattern has 26 elts (size 32)
	family: "NeueHaasGrotesk-Medium"(s)
	familylang: "en"(s)
	style: "Regular"(s)
	stylelang: "en"(s)
	fullname: "-"(s)
	fullnamelang: "en"(s)
	slant: 0(i)(s)
	weight: 100(f)(s)

Use the fonts in pdfkit:
doc.registerFont('My Regular Font', fs.readFileSync('./NeueHaasGrotesk-Regular.otf'));
doc.registerFont('My Medium Font', fs.readFileSync('./NeueHaasGrotesk-Medium.otf'));

doc.font('My Regular Font');
doc.text('Regular');

doc.font('My Medium Font');
doc.text('Medium');

doc.font('My Regular Font');
doc.text('Regular');

See that all the text is rendered with the first font:

Expected:

Problem
The problem is that doc.font() uses the TTF fullname as the key in _fontFamilies. And because both fonts have the same fullname, a cache key conflict happens and doc.font() will always load the first font from the _fontFamilies cache, even when the second font is requested.
https://github.com/foliojs/pdfkit/blob/3f69586f3cb9d46cb58f255920863bbcbc5f2acd/lib/mixins/fonts.js#L53-L58
Solution
The solution is to not use TTF fullname as the cache key, when there is another name available -- such as when the font has been registered.
So this solution to the bad fullname problem works only when the fonts are registered in advance. If we wanted to make it work without pre-registering, then we would need to somehow detect what a bad fullname is (e.g. check that fullname !== '-'), but that feels fragile. So I think requiring font registration in this case is acceptable.
Refactoring
I've removed the following repeated setting of _fontFamiliies to set it only once. I couldn't think of a reason why it would need to be done twice with different cache keys:
https://github.com/foliojs/pdfkit/blob/3f69586f3cb9d46cb58f255920863bbcbc5f2acd/lib/mixins/fonts.js#L60-L67
Then since there is only one cache key now, I've renamed it to name.
Unit tests
I've added some very simple unit tests. They fail like this before the change:
 FAIL  tests/unit/document.spec.js
  ● PDFDocument › FontsMixin › font › saves a registered font to _fontFamilies and reuses the same font object

    expect(received).toEqual(expected) // deep equality

    - Expected  - 0
    + Received  + 1

      Array [
        "Helvetica",
        "My Roboto",
    +   "Roboto-Regular",
      ]

      83 |         const fontObj2 = doc._fontFamilies['My Roboto'];
      84 |
    > 85 |         expect(Object.keys(doc._fontFamilies)).toEqual([
         |                                                ^
      86 |           'Helvetica',
      87 |           'My Roboto'
      88 |         ]);

Checklist

[X] Unit Tests
[ ] Documentation
[X] Update CHANGELOG.md
[X] Ready to be merged

The test file:
const PDFDocument = require('pdfkit');
const fs = require('fs');
const fetch = require('node-fetch');

const urlRegular =
    'https://use.typekit.net/af/2807c7/00000000000000007735bb48/30/a?primer=7cdcb44be4a7db8877ffa5c0007b8dd865b3bbc383831fe2ea177f62257a9191&fvd=n4&v=3';
const urlMedium =
    'https://use.typekit.net/af/153042/00000000000000007735bb62/30/a?subset_id=2&fvd=n6&v=3';

const doc = new PDFDocument({ autoFirstPage: false });

doc.pipe(fs.createWriteStream('test_fullname_conflict.pdf'));

doc.addPage({ size: [400, 300] });
doc.fontSize(24);

Promise.all([
    fetch(urlRegular).then(res => res.arrayBuffer()),
    fetch(urlMedium).then(res => res.arrayBuffer())
]).then(([fontRegular, fontMedium]) => {
    doc.registerFont('My Regular Font', fontRegular);
    doc.registerFont('My Medium Font', fontMedium);

    doc.font('My Regular Font');
    doc.text('Regular');

    doc.font('My Medium Font');
    doc.text('Medium');

    doc.font('My Regular Font');
    doc.text('Regular');

    doc.end();
});

@jakubdatawrapper Font cache collision fixed by commit https://github.com/foliojs/pdfkit/commit/42172c510282ec3ad22e71318460d671b0b21cb0.
Now, if the font name matches, the information/metadata attributes are also checked (there will probably always be some difference between for different fonts).


Does a point belong to a polygon function

I’m building a Flutter app that needs to analyse location(lat, lon) and tell if this location is a water or a land. I want it to work offline that’s why I’m planning to embed a shapefile with the coastline polygons. File can be taken here: https://osmdata.openstreetmap.de/data/water-polygons.html (Simplified polygons).
Is there a method in your library that can be used to do what I want?
Thanks for your work, @moovida!

The lib makes use of the JTS project (https://github.com/moovida/dart_jts), which makes geometry objects available, that have all the necessary methods (contains, intersects, etc).


Adding core entity service

All our other Services are named after plurals "ContributionsService" "ProgrammesService" etc, we should keep to that consistency.
Also you need to add a method to the ServiceFactory to create this new service.


remove outdated notice in makefile

as title

@jolheiser it was when due to when we switched to go1.15 and there was a bug when cross-compiling on windows. I forgot to remove this note when it ended up being fixed.


⚠ BeyondHD has degraded performance

In ed7de94, BeyondHD ($BHD) experienced degraded performance:

HTTP code: 200
Response time: 1069 ms

Resolved: BeyondHD performance has improved in 03f5026.


replace microsoft form with a self coded form

when @chnuessli is fit in coding :)

replace the microsoft form with a self coded form
add an e-mail way

3240c7a8a0873d47ff3e0a16b1ebd7346695e483


Fix tests for support other layer types PR

Testing whether current fixed tests pass.
More tests will be added.

All checks pass except codecov's due to the decreased coverage because one test (call to function for dim red widget) had to be disabled due to a timeout error.


Form control export fields for writing to csv

Is it possible to have a form which the user fills out with booleans that determines which columns get exported? If so are there examples using a view?

You mean dynamically selecting the fields in the ResourceClass?

Yes

As far as I am aware, at the moment there is no option to do this. It would require a separate view. It could be done though via a multi select and then dynamically setting the export_order in the get_fields() function call.
Let us know how far you get with this!

I dont know if the question is still from interest but I found a workaround which works quiet good for me. First overwrite the get_export_order function:
class SiteResource(resources.ModelResource):
        ...
        def get_export_order(self):
                order = tuple(k for k in self._meta.export_order if k in self.fields)
                return order + tuple(k for k in self.fields if k not in order)

Now you could remove the field from the instance
sites_resource = SiteResource()
sites_resource.fields.pop(FIELDNAME, None)
dataset = sites_resource.export(queryset)

and you will get only the not remove fields.
Have I overseen some side effects?


evans: 0.10.5 -> 0.10.6

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/evans/versions.
meta.description for evans is: "More expressive universal gRPC client"
meta.homepage for evans is: "https://evans.syfm.me/"
meta.changelog for evans is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.10.6 with grep in /nix/store/f17qra65iy0vlchx48wldr3m0mmxlcd5-evans-0.10.6
found 0.10.6 in filename of file in /nix/store/f17qra65iy0vlchx48wldr3m0mmxlcd5-evans-0.10.6

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
evans

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/f17qra65iy0vlchx48wldr3m0mmxlcd5-evans-0.10.6 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A evans https://github.com/r-ryantm/nixpkgs/archive/d13e216e3c7c23a1096265cb7b26046b73fca2c4.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/f17qra65iy0vlchx48wldr3m0mmxlcd5-evans-0.10.6
ls -la /nix/store/f17qra65iy0vlchx48wldr3m0mmxlcd5-evans-0.10.6/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

evans

Maintainer pings
cc @diogox @kalbasit for testing.

Change looks okay:

Revert "fix to register messages when message parsing"


enhancement: CoreBadge documentation

CoreIcon not working

Some enhancements are required as listed below:

In Customization, add: NOT SUPPORTED AS OF NOW


Improve testing

#320 implements a first complete version of the testing framework: unit tests (vitest), end-to-end tests (playwright), global coverage, and appropriate github actions.
Let's list here placeholders of future updates, and then move to specific issues when necessary.
A few first thoughts:

Add safari to playwright config
Add SSR to coverage (see https://github.com/fractal-analytics-platform/fractal-web/issues/8#issuecomment-1768147236)
Assess whether some caching may be useful (see https://github.com/fractal-analytics-platform/fractal-web/issues/8#issuecomment-1768147236)
Add a lot more e2e tests, in general
Assess whether it's useful to create a few modular "fixtures", for operations that are repeated often (e.g. create a project at the beginning of a test). This is just me coming from pytest, but perhaps there is a better/different approach in playwright.
Upload the coverage report of main somewhere, so that we can view it from the repo page (and not just from the PRs)
https://github.com/fractal-analytics-platform/fractal-web/issues/161
We may want to expose the fractal-server version as an env variable, so that in principle we could ask GitHub actions to iterate over e.g. the two latest versions (in parallel).

Regarding to "Add SSR to coverage"
I report the comment from issue #8:

the server side of playwright end-to-end tests -> this is currently ignored. Just for the record, would https://github.com/sveltejs/kit/discussions/5145#discussioncomment-4111009 work? I'm not suggesting we go in that direction (as it requires a change in the code base which is only done in view of testing), but it may be part of the ongoing exploration.

It's not so easy to disable ssr in our case, because we are using the *.server.js files, that are explicitly designed to be run on server and the logic written on those files can't be automatically rewritten as client-side logic by Svelte. For example there are some Node dependencies that can work only on the server and not inside the browser. It would be a very different application. In that example they are using just page.js and it's very a different situation.
What we need is a way to attach istanbul instrumentation to the node process that is starting the server, in playwright.config.js webServer list:
https://github.com/fractal-analytics-platform/fractal-web/blob/9ffa473f5d1ff457fc6b90a2cf6415873da913b2/playwright.config.js#L41
A similar use case is described here: https://github.com/istanbuljs/nyc/issues/520, where they would like to compute code coverage for manual testing. They are suggesting 2 possible tools, but both have some problems:

babel-plugin-istanbul, depends on babel build tool, that we are not using, moreover the last commit is from 2021, so it could be an unmaintained project.
istanbul-middleware: last commit is from 2015, so it's not maintained for sure.

Istanbul documentation says that the command nyc instrument can be used to instrument source files outside of the context of your unit-tests and I think that this may be the way to go. I tried but I had 0% coverage, so its feasibility should be investigated.

As briefly mentioned in the discussion in https://github.com/fractal-analytics-platform/fractal-web/pull/324, we may want to include some benchmarks (AKA testing for performance regressions) in our test suites.
To be clear: I don't think it makes sense to have it as a broadly-scoped feature of our test suite, nor I think it's a priority.
Let's just keep it in mind when developing components with relevant amount of internal logic: if we are worried about a possible future performance hit, we can at least encode current performance expectations in a benchmark (by hand, or via dedicated tools).

A quick comment (based on a quick look at https://github.com/fractal-analytics-platform/fractal-web/compare/main...more-tests#diff-cb5fff2cfb1045f7d933c94ceef3671d2407b3f0a5abd691197979c6f00f1817R18): great to have tests for task collection!
If collecting fractal-tasks-core takes too long, we can easily set up a lightweight task package (which e.g. does not require pytorch install). Or, otherwise, you could just skip including the fractal-tasks extra. The tasks will not be functional, but the task collection should still work and be testable.

we can easily set up a lightweight task package (which e.g. does not require pytorch install). Or, otherwise, you could just skip including the fractal-tasks extra. The tasks will not be functional, but the task collection should still work and be testable.

Thanks! I've removed fractal-tasks extra and it is faster now! Performing a task collection is a required step of other test cases, but I don't think we need working tasks.

It seems that when playwright creates 2 projects concurrently (in different tests) a SQL constraint fails:

Complete error:
(sqlite3.IntegrityError) UNIQUE constraint failed: linkuserproject.project_id, linkuserproject.user_id
[SQL: INSERT INTO linkuserproject (project_id, user_id) VALUES (?, ?)]\n[parameters: (2, 1)]
(Background on this error at: https://sqlalche.me/e/14/gkpj)

Any idea about this? I didn't try to reproduce it outside the tests yet, but I've already encountered it multiple times. I'm setting up a test that uses a "create project" fixture and it seems to clash with the create/delete project test.

Any idea about this?

We can look into it together, if it's useful, but for the moment I have no idea of why this is happening.
Some very preliminary thoughts:

Do you get access to the fractal-server logs, while running through playwright? It'd be useful to see the logs of the API calls. I guess there an call with 201-Created response, and then a 500-internal-error one. Is it the case?
Are the two calls made at the very same time? Can you add a small sleep time (a few hundred ms maybe) in front of one of them?

Something more that should be tested at some point:

https://github.com/fractal-analytics-platform/fractal-tasks-core/issues/596#issuecomment-1783047502

I've collected some logs of other failures. I'm still not sure about what is the exact sequence to reproduce this, but it seems that reading, creating and deleting projects concurrently causes it. It could be caused by SQLite (I'll do some tests with PostgreSQL) or by something that should be handled using transaction in the backend.
In a highly concurrent environment errors can happen also during a simple select (project listing):
[WebServer] INFO:     <IP_ADDRESS>:48092 - "GET /api/v1/project/ HTTP/1.1" 500 Internal Server Error
[WebServer] Client unable to fetch projects list
Error: Unable to list projects
    at listProjects (file:///home/xonya/code/fractal-web/build/server/chunks/project_api-ec5961e6.js:13:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async loadProjects (file:///home/xonya/code/fractal-web/build/server/chunks/6-728fc528.js:8:10)
    at async load (file:///home/xonya/code/fractal-web/build/server/chunks/6-728fc528.js:15:20)
    at async load_server_data (file:///home/xonya/code/fractal-web/build/server/index.js:1893:18)
    at async file:///home/xonya/code/fractal-web/build/server/index.js:3264:18
[WebServer] ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 100, in execute
    self._adapt_connection._handle_exception(error)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 228, in _handle_exception
    raise error
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 89, in execute
    self._rows = self.await_(_cursor.fetchall())
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 68, in await_only
    return current.driver.switch(awaitable)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 121, in greenlet_spawn
    value = await result
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/cursor.py", line 65, in fetchall
    return await self._execute(self._cursor.fetchall)
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/core.py", line 129, in _execute
    return await future
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/core.py", line 102, in run
    result = function()
sqlite3.InterfaceError: Cursor needed to be reset because of commit/rollback and can no longer be fetched from.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/applications.py", line 276, in __call__
    await super().__call__(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 91, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 146, in simple_response
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/xonya/.local/lib/python3.10/site-packages/fractal_server/app/api/v1/project.py", line 55, in get_list_project
    res = await db.execute(stm)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/session.py", line 215, in execute
    result = await greenlet_spawn(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 126, in greenlet_spawn
    result = context.throw(*sys.exc_info())
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1712, in execute
    result = conn._execute_20(statement, params or {}, execution_options)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_20
    return meth(self, args_10style, kwargs_10style, execution_options)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 333, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
    raise exception
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 100, in execute
    self._adapt_connection._handle_exception(error)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 228, in _handle_exception
    raise error
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 89, in execute
    self._rows = self.await_(_cursor.fetchall())
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 68, in await_only
    return current.driver.switch(awaitable)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 121, in greenlet_spawn
    value = await result
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/cursor.py", line 65, in fetchall
    return await self._execute(self._cursor.fetchall)
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/core.py", line 129, in _execute
    return await future
  File "/home/xonya/.local/lib/python3.10/site-packages/aiosqlite/core.py", line 102, in run
    result = function()
sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Cursor needed to be reset because of commit/rollback and can no longer be fetched from.
[SQL: SELECT project.name, project.read_only, project.id
FROM project JOIN linkuserproject ON project.id = linkuserproject.project_id
WHERE linkuserproject.user_id = ?]
[parameters: (1,)]
(Background on this error at: https://sqlalche.me/e/14/rvf5)
[WebServer] INFO:     <IP_ADDRESS>:54842 - "POST /api/v1/project/15/dataset/ HTTP/1.1" 500 Internal Server Error
[WebServer] ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/applications.py", line 276, in __call__
    await super().__call__(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 83, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/xonya/.local/lib/python3.10/site-packages/fractal_server/app/api/v1/dataset.py", line 51, in create_dataset
    await db.refresh(db_dataset)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/session.py", line 157, in refresh
    return await greenlet_spawn(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 128, in greenlet_spawn
    result = context.switch(value)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2348, in refresh
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: Could not refresh instance '<Dataset at 0x7fb325cc3440>'

But with the delete+insert something very bad can happen (since it leaves the database in a broken state and manual fix on the table is needed):
[WebServer] Load projects page
[WebServer] Including cookie into request to http://localhost:8000/api/v1/project/, via handleFetch
[WebServer] INFO:     <IP_ADDRESS>:45248 - "GET /api/alive/ HTTP/1.1" 200 OK
[WebServer] Server info loaded: Alive true - 1.3.4
[WebServer] Including cookie into request to http://localhost:8000/auth/whoami, via handleFetch
[WebServer] INFO:     <IP_ADDRESS>:45236 - "GET /auth/whoami HTTP/1.1" 200 OK
[WebServer] INFO:     <IP_ADDRESS>:45264 - "POST /api/v1/project/ HTTP/1.1" 500 Internal Server Error
[WebServer] ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/applications.py", line 276, in __call__
    await super().__call__(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 83, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/xonya/.local/lib/python3.10/site-packages/fractal_server/app/api/v1/project.py", line 91, in create_project
    await db.refresh(db_project)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/session.py", line 157, in refresh
    return await greenlet_spawn(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 128, in greenlet_spawn
    result = context.switch(value)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2348, in refresh
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: Could not refresh instance '<Project at 0x7f7d2b8bf940>'
[WebServer] INFO:     <IP_ADDRESS>:43604 - "POST /api/v1/project/ HTTP/1.1" 500 Internal Server Error
[WebServer] ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/applications.py", line 276, in __call__
    await super().__call__(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 83, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
  ✓  5 [chromium] › login_logout.spec.js:6:1 › Login and Logout (1.4s)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/xonya/.local/lib/python3.10/site-packages/fractal_server/app/api/v1/project.py", line 91, in create_project
    await db.refresh(db_project)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/session.py", line 157, in refresh
    return await greenlet_spawn(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 128, in greenlet_spawn
    result = context.switch(value)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2348, in refresh
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: Could not refresh instance '<Project at 0x7f7d2a6c9600>'
[WebServer] INFO:     <IP_ADDRESS>:45256 - "GET /api/v1/project/ HTTP/1.1" 200 OK

After this the database is in an inconsistent state and it is not possible to create projects anymore:
[WebServer] 2023-11-08 10:49:05,137 - create_project - ERROR - (sqlite3.IntegrityError) UNIQUE constraint failed: linkuserproject.project_id, linkuserproject.user_id
[SQL: INSERT INTO linkuserproject (project_id, user_id) VALUES (?, ?)]
[parameters: (38, 1)]
(Background on this error at: https://sqlalche.me/e/14/gkpj)
[WebServer] INFO:     <IP_ADDRESS>:38604 - "POST /api/v1/project/ HTTP/1.1" 422 Unprocessable Entity

Inside the database I have the following:
SELECT * FROM project WHERE id > 35;
83qams|0|36
w6zmvb|0|37

 SELECT * FROM linkuserproject WHERE project_id > 35;
36|1
37|1
38|1
39|1

In this state, when I try to create a project its id would be 38, however 38 is already inside the linkuserproject table, so the insert fails.

Quick comment again: as of fractal-server 0.3.13, your own PR for using WAL in sqlite is par of fractal-server. I don't know if this matters at all.

I'll also try without WAL.
Here is another one happening during dataset resource creation:
[WebServer] Load projects page
[WebServer] INFO:     <IP_ADDRESS>:38406 - "GET /api/alive/ HTTP/1.1" 200 OK
[WebServer] Server info loaded: Alive true - 1.3.4
Including cookie into request to http://localhost:8000/auth/whoami, via handleFetch
[WebServer] INFO:     <IP_ADDRESS>:38402 - "POST /api/v1/project/51/dataset/63/resource/ HTTP/1.1" 500 Internal Server Error
[WebServer] ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/xonya/.local/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
    return await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/applications.py", line 276, in __call__
    await super().__call__(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/applications.py", line 122, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 184, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/errors.py", line 162, in __call__
    await self.app(scope, receive, _send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/cors.py", line 83, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
    raise exc
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
    await self.app(scope, receive, sender)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
    raise e
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 718, in __call__
    await route.handle(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 276, in handle
    await self.app(scope, receive, send)
  File "/home/xonya/.local/lib/python3.10/site-packages/starlette/routing.py", line 66, in app
    response = await func(request)
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 237, in app
    raw_response = await run_endpoint_function(
  File "/home/xonya/.local/lib/python3.10/site-packages/fastapi/routing.py", line 163, in run_endpoint_function
    return await dependant.call(**values)
  File "/home/xonya/.local/lib/python3.10/site-packages/fractal_server/app/api/v1/dataset.py", line 179, in create_resource
    await db.refresh(db_resource)
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/session.py", line 157, in refresh
    return await greenlet_spawn(
  File "/home/xonya/.local/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 128, in greenlet_spawn
    result = context.switch(value)
    raise sa_exc.InvalidRequestError(
sqlalchemy.exc.InvalidRequestError: Could not refresh instance '<Resource at 0x7f4f9d01abc0>'
[WebServer] INFO:     <IP_ADDRESS>:38390 - "GET /auth/whoami HTTP/1.1" 200 OK
[WebServer] INFO:     <IP_ADDRESS>:38408 - "GET /api/v1/project/ HTTP/1.1" 200 OK
[WebServer] [DELETE] - /api/v1/project/50

@tcompa I'm not able to reproduce these errors using PostgreSQL, so I assume it's caused by SQLite. Do you see any problem in configuring the CI pipeline to run with PostgreSQL?

I'm not able to reproduce these errors using PostgreSQL, so I assume it's caused by SQLite.

That's good to know!

Do you see any problem in configuring the CI pipeline to run with PostgreSQL?

Short answer: go ahead!
Still, I'd like to understand what goes wrong at some point. We do test the sqlite use case in fractal-server, but apparently this test suite is somewhat different.

Still, I'd like to understand what goes wrong at some point. We do test the sqlite use case in fractal-server, but apparently this test suite is somewhat different.

I think it's only because Playwright executes a lot of calls in parallel and SQLite is not the right tool for these cases:
https://docs.sqlalchemy.org/en/20/dialects/sqlite.html#database-locking-behavior-concurrency

SQLite is not designed for a high level of write concurrency.

This behavior becomes more critical when used in conjunction with the SQLAlchemy ORM. SQLAlchemy’s Session object by default runs within a transaction, and with its autoflush model, may emit DML preceding any SELECT statement. This may lead to a SQLite database that locks more quickly than is expected. The locking mode of SQLite and the pysqlite driver can be manipulated to some degree, however it should be noted that achieving a high degree of write-concurrency with SQLite is a losing battle.

Just to have it clear (and only if doesn't take too much effort to run a check):
If you disable parallelism in playright (ref https://playwright.dev/docs/test-parallel#disable-parallelism), would the tests still fail?

This is only as a clarification, but running tests with postgres is perfectly fine..

This is only as a clarification, but running tests with postgres is perfectly fine..

In case it's useful, this is how we handle this choice in fractal-server GitHub actions: https://github.com/fractal-analytics-platform/fractal-server/blob/main/.github/workflows/ci.yml. We run both sqlite and postgresql tests, and for postgresql we include the corresponding service in the yaml file.

I confirm that tests are successful with SQLite when disabling parallelism. At the moment the difference in the execution time is not very big, but I assume it will increase when we will add more tests:

PostgreSQL with parallelism: 34.1s
SQLite without parallelism: 49.3s

Consider that currently most of the time is spent by the initial tasks collection (19.5s).

I'm not sure about the impact on the pipeline total execution time. Even if tests are faster we will spend more time in starting the postgres service and installing the additional dependencies. Maybe for the moment we can just continue with SQLite and parallelism disabled. What do you think?

Maybe for the moment we can just continue with SQLite and parallelism disabled. What do you think?

Let's keep it like this for the moment, and switch to postgresql once the number of tests grows.
For the record, starting postgres service in github actions may take aroun 24 seconds.

Upload the coverage report of main somewhere, so that we can view it from the repo page (and not just from the PRs)

Concerning this (low priority!) aspect, an option would be to use this approach: https://github.com/fractal-analytics-platform/fractal-server/blob/main/.github/workflows/benchmarks.yaml#L53-L60.

Before that we have to fix our current coverage setup, that unfortunately it doesn't seem to work correctly. It's some time that I'm looking at it and it has 2 problems:

it misses some conditions that are covered by tests (probably related to https://github.com/vitest-dev/vitest/issues/1893)
when the 2 coverage results (from unit and from e2e tests) are merged sometimes it thinks that the file has more lines than the reality and that produces a lower coverage (maybe related to https://github.com/istanbuljs/nyc/issues/1302).

For example, this is a result from our last PR:
BooleanProperty.svelte               |   11.11 |     3.57 |       0 |   10.34 | 11,18,35-203

It says that the coverage is 11.11%, however running only the unit tests the coverage is at 77%. If you notice at the uncovered lines (the last column) it says that lines 35-203 are not covered, but that file has only 35 lines!
I would like to try with a different code coverage tool (e.g. you can use @vitest/coverage-v8 instead of @vitest/coverage-istanbul), but that investigation will take some time.

Also notice that this seems to depend by Svelte compiler: https://github.com/sveltejs/svelte/issues/7824
And according to the user that opened the issue there might be no solution for this at the moment:

Considerations about coverage
For JavaScript there are 2 possible coverage tools: v8 (the JavaScript engine, that provides some native coverage features) and istanbul (a library that instrument the code before running the tests).
While istanbul produces a human readable result, v8 itself simply generates a coverage file in JSON format, but is not able to generate a human readable coverage report. For that tools like c8 or v8-to-istanbul are used.
Unit tests
In the past vitest used c8 as the default code coverage report generator, but now it uses v8 with v8-to-istanbul, and the default coverage method is v8. We are using vite with istanbul (both for the coverage detection and for the report generation) and I wanted to see if something improved using v8 and the new vitest.
So, in order to update vitest from 0.32.4 to 1.x.x I've updated Svelte from 3.58.0 to 4.x.x and Svelte Kit from 1.15.7 to 2.x.x.
Then I configured the tests to run with v8. The 2 tools compute the coverage in different ways and v8 shows many more hits for statements, while branches results seems to be slightly more similar. In any case the results are not very reliable.
Here is a coverage computed using v8:

Here is the same using istanbul:

In general istanbul output looks more useful, since v8 applies a 1x on all the lines just for having loaded the file, however both produces misleading reports, for example adding many "branch not covered" annotations on locations that are not a branch.
Playwright coverage
Playwright coverage can track only the code that runs on the browser (so ssr coverage should be taken in a different way).
Our current Playwright coverage setup is based on this article, that uses istanbul. It produces very weird results, showing line numbers that simply don't exist.
Official Playwright documentation suggests a different setup, using v8 and supporting only Chromium based browsers. I tried with that but the results are useless in the same way.
I'm not sure about what's going on exactly, however, looking at the generated files I suspect that there is something wrong with the source map paths and there are some svelte kit issues about source maps.
Moreover, a standard raw v8 report contains a results array (containing the list of the detected coverage hits) and a source-map-cache fields (used to map the sources). However, the coverage produced by Playwright only contains the results array and there is no way to retrieve the property, that is used by c8 during the generation of the reports.
It seems that someone is building its own Playwright Coverage tool for Svelte, but is a WIP and I wasn't able to make it working: https://github.com/jill64/svelte-playwright-coverage
Backend coverage
Technically, it should be possible to generate a coverage of the backend code with v8 starting the server in this way:
NODE_V8_COVERAGE=coverage-output-dir node build

The application needs to exit gracefully on Ctrl+C, otherwise the coverage process is terminated too. So we need to add the following lines to fractal-web, somewhere:
process.on('SIGINT', () => {
  process.exit(0);
});

The coverage report is built, however both c8 and v8-to-istanbul produces broken reports. I suspect that this is caused by the nested level of source mapping that happens in this case. For example:

build/server/chunks/ConfirmActionButton-t3ixxnbe.js
-> .svelte-kit/adapter-node/chunks/ConfirmActionButton.js
-> src/lib/components/common/ConfirmActionButton.svelte

There are some tools, like https://github.com/jvilk/merge-source-maps, that are able to merge a map of map, but is not clear how to apply this to the coverage reporter when using a raw v8 report.
Moreover, it seems that there are source map problems also for the ssr part: https://github.com/sveltejs/kit/discussions/9608

Thanks a lot @zonia3000 for this deep exploration!
As we already discussed this morning, let's put coverage-fixing on hold for a while, because of how complex it is. But this detailed log will be useful in the future, if we try once more to get it right (hopefully after some of the existing tools also improve).

@zonia3000 I have built a tool that can generate coverage reports directly from v8 coverage data. It can also be integrated with testing frameworks like Playwright, Vitest, Jest, etc., but it hasn't been tested with svelte too much. You could give it a try when you have the chance.
see https://github.com/cenfun/monocart-coverage-reports

After reviewing this issue, I'd say that what is still relevant is only:

Move the tests to use postgresql

(while there is no current need of working on the coverage)

After reviewing this issue, I'd say that what is still relevant is only:
1. Move the tests to use postgresql

(while there is no current need of working on the coverage)

Now done with 484


Obtain image after scan

Is it possible to obtain the image of the barcode, along with the extracted text?

Bump

@normowl not currently possible, PR's are welcome though.


Fix CI releases

Get CI release builds working.

I'm not a fan of the upload task running on every build, but it doesn't actually upload unless it's a real release, so :shrug:.
This seems to work in my test repo

Rebased to get rid of the env task definition; I'd rather not have that at all in the history, given that executing it (from the ppb-vector repo) would cause Cirrus to dump its secrets.

Here is an example of the upload task running in the test repository: https://cirrus-ci.com/task/5429082557251584

Upload task attached to a release: https://cirrus-ci.com/task/5176411040514048
The env task should be fine, given secrets are attached to specific tasks.

bors r+