Port request: librsvg (for windows).

Please add a librsvg port; it's a relatively low-level library to render svg files with cairo, it's pretty widely used in GNOME, among other things. In recent versions they've begun migrating the code to rust, but perhaps you could port version 2.40.20, which was the last before they began doing this.
https://download.gnome.org/sources/librsvg/2.40/
Currently, 2.40 releases can be built with MXE on Linux and Mac, and also with MSYS2. I wanted to give it a go myself but honestly converting stuff from autotools seems a bit daunting.

I just uploaded a PR for libcroco at #6467 libcroco is the only librsvg dependency missing from vcpkg.
I have a port for librsvg ready as well, but since it depends on libcroco to build, I'll upload it after this one is merged.

Awesome! really hoping it gets merged!

libcroco merged, I have a librsvg building and installing on msvc, but there's some issues on Linux which will prevent it from merging. In short, Linux gdk-pixbuf is broken on master.
The long story is that gdk-pixbuf uses glib, which uses gettext, which uses empty package (it basically doesn't fail the build but does not install anything either), so later, when gdk-pixbuf looks for libintl, it fails.
I tried fixing gettext but that ended up with libiconv presenting the same issue and then pthreads, which doesn't even have a general source package distribution.
So that's where I'm at, perhaps it would be a good idea to file a bug for gdk-pixbuf broken on Linux, but who knows how long it may take for it to get fixed.
I'll try again without setting VCPKG_ROOT, maybe it just needs to find the system libraries.

Update: gdk-pixbuf is definitely broken on Linux.

@Kwizatz - does the port include the gdk-pixbuf loader? I have a project fully compiling and running on MSVC. The biggest issue right now is that gdk-pixbuf cannot load the SVG icons. My understanding is that this loader module from librsvg is the piece that is missing.
Where can I find that librsvg port of yours?

@NNemec - I think it does, I have made changes to libiconv, gettext, glib, gdk-pixbuf and I got all dependencies building on Linux, however, librsvg (On Linux) itself needs some work before I upload the fix and the new port.
I'll try to publish something later today, but in the meantime, it's all local to my pc.

Excellent! If it takes longer, I'd be happy to try out whatever preliminary version you have.

PR #6625 is up with necessary changes on dependencies to build librsvg on Linux.
With these changes the librsvg port gets build on both MSVC and Linux.
I checked and currently my port does not build the pixbuf loader, I'll be adding it soon and I'll post a gist or similar if it takes too long for #6625 to merge.

So, I created PR #6663 which has a better chance of merging than #6625.
@NNemec I have added the dll part of the loader as part of the build for the librsvg port, however, that's as far as I can go, as I have no idea on how it works or how it interfaces with gdk-pixbuf. I'll leave that up to you once the port is up. I have the librsvg port ready as well, just need #6663 to merge to put that one up as well.

Sounds good! I'll have some spare time to invest on upcoming Mon&Tue, so if you could just push the changes to a temporary branch on github (no PR needed) I'd be happy to try them out and see whether I get the gdk-pixbuf loader module working.

You can access the port at:
https://github.com/Kwizatz/vcpkg/tree/librsvg-port
It should work as is on Windows+MSVC, but if it does not, cherry pick #6663

I managed to build librsvg on that branch. One necessary correction: CMakeLists.txt:101:

unofficial::libcroco::croco-0.6

unofficial::libcroco::libcroco
(I guess that -0.6 was based on some preliminary version of your libcroco port...)
Now I'll look into using the gdk-pixbuf module.

Yes, #6663 changes libcroco library name to croco-6 to be more consistent with what you get on Linux and MSYS2, right now while the MSVC version seems fine, on linux the archive file name is liblibcroco.a, which is not only redundant, but also not what you expect the library to be named on gcc based systems.

Making progress on loading pixbufloader-svg, but it is tough going...
So far, I managed to manually install the various .dlls and create the necessary loaders.cache so that gdk-pixbuf attempts to load the .dll - at that point, the loading fails due to naming conflict:
A debug build of rsvg-2.40 appears to depend on cairo.dll, but the debug version of that file is actually called cairod.dll (which is also used by my application)
Furthermore, I noticed that none of rsvg-2.40.dll nor pixbufloader-svg.dll or croco-0.6.dll have their .pdb installed. Not a blocker for me, but should probably be fixed nonetheless.
With these findings, I will put the project on ice for the next 10 days while I enjoy my vacation...

Installing the pdb files shouldn't be hard, just add the file to the install commands at the end of the respective portfiles/CMakeLists.
the cairo dependency may have to be more with the cairo port than librsvg, the "unofficial" config files may not be properly adding the debug versions to the internal library targets.
I'll look it up, but not sure how soon.

I've fixed the pdb files issue on the librsvg-port branch, not sure why the debug version is linking against the release cairo lib though. The port uses the unofficial::cairo target which should already be set up to link to the correct version, but I may have missed something.

@NNemec Upon checking the imports for the debug versions of both the library and the loader they are linking against the correct debug versions. Note however that the names for the debug versions also have the "d" suffix (rsvg-2.40d.dll, pixbufloader-svgd.dll) so I am guessing that you were using pixbufloader-svg.dll for your tests and that's why you're getting the error. If the loader MUST be used without the "d" suffix I can make the change, but first try renaming and copying over the debug dll to match the requirements of your setup.

 In all the manual copying around I had ultimately actually copied the release versions of these libraries. Sorry about wasting your time.
However: What is see now in Dependency Walker is that rsvg-2.40d.dll depends on croco-0.6.dll, even though the debug version is called croco-0.6d.dll:

I don't have the time right now to dig deeper to verify this, though...

@NNemec I am seeing that as well. I think you can rename the debug dll without issues since only librsvg should be linking against it. I'll find out what the issue is there.

@NNemec I've fixed both the PR and the branch, now anything linking against the debug version of either librsvg or libcroco should link to the proper file.

The Linux fix PR has merged, I'll submit the librsvg port now.

Port has merged, you can close this issue.

@Lord-Kamina, thanks for posting this request. @Kwizatz, thanks for your PR.

You should reopen this issue. The static build is not completed yet.

There is also a pkg-config (.pc) file missing


⚠ TorrentLeech has degraded performance

In 408c804, TorrentLeech ($TL) experienced degraded performance:

HTTP code: 200
Response time: 6012 ms

Resolved: TorrentLeech performance has improved in c429b08 after 6 minutes.


[bug]: Error downloading core tokenizers and text encoders.

Is there an existing issue for this?

[X] I have searched the existing issues

OS
Windows
GPU
cuda
VRAM
12
What version did you experience this issue on?
3.0.2
What happened?
See screenshots.   Launch aborts due to missing vae file.  Running the installation repair script yields error about downloading core tokenizers and text encoders.
Screenshots

Additional context
No response
Contact Details
No response

Could you try option [5] and re-download SD 1.5?
Another option to download the VAE from HF and drop it into the the models\core\convert\sd-vae-ft-mse folder: https://huggingface.co/stabilityai/sd-vae-ft-mse-original

We have a new model manager in v4.0.0 with a new handling for core model downloads.
If you still have this problem on v4.0.0, please open a new issue.


Prettier error pages

Quick question before merging;
This PR adds a translation;

"Take me Home" button.
What should we do about it?

translate in the theme?
translate in crud?
remove the button so we don't need to add translations?

I think we should make the theme translatable, because there are other string there, that are currently not translated 😬
And others my come up, like the in the https://github.com/Laravel-Backpack/theme-tabler/pull/120

In this case, perhaps we can avoid the translation, by having buttons that show icons for BACK and HOME?

Otherwise I'm ok with adding these two translation strings to CRUD. They can be used in the default error views. Then themes use them too when they customize the error views. Makes sense right?

Translations added here; https://github.com/Laravel-Backpack/theme-tabler/pull/136


[Feature Request] Extra Alchemy Support For Potion Brewer

The mod Extra Alchemy adds recipes for new potions some of which require bottles of water to be infused with glowstone or gold instead of netherwart initially.
A good solution to this problem would be to rather than locking the slots to specific items just allow them to be locked to whatever current item is in there similar to an rftools crafter.

:wave: Sorry but Industrial Foregoing has ended support for version 1.12. I'm closing this issue as it will no longer be updated for that version. Thanks for playing with the mod.


Working with Variant columns

Hello @kwong-yw,
Thank you for working on this Sequel adapter. It is a big help!
I am tasked with copying one Snowflake database over to another. Some of the tables have VARIANT columns. When I retrieve those rows using this gem, they come in as String.
I thought to convert the variant column to JSON before inserting it into the new table.  However, it's breaking (as described below)
Is that the right approach? (To convert a variant string to JSON?)
If not, what would you suggest?
If so, I get the following user experience:
from_table.each do |row|
  row[:data] = JSON.parse(row[:data])
  to_table.insert(row)
end

Sequel::DatabaseError: ODBC::Error: XX000 (603) SQL execution internal error:
Processing aborted due to error 300002:1440237446; incident 5745559.
from /Users/volt/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/sequel-5.56.0/lib/sequel/adapters/odbc.rb:56:in `do'
Caused by ODBC::Error: XX000 (603) SQL execution internal error:
Processing aborted due to error 300002:1440237446; incident 5745559.
from ....../sequel-5.56.0/lib/sequel/adapters/odbc.rb:56:in `do'

P.S. - This issue is loosely related to the discussion I posted in sequel
when trying to sort out explain during my debugging process.

Hi @fakefarm, thanks for using sequel-snowflake! I saw the other discussion you tagged me in and am just finding some time to take a look at these things now.
I think I've figured out a way to implement explain so I should get a release on this within the week. As for this particular issue, let me take a closer look once I've added the above Dataset method in 👍

@fakefarm If still having some trouble with inserting VARIANT data, I just gave it a shot and came up with this solution:
from_table.each do |row|
  db.fetch("INSERT INTO #{table_two} (\"data\") SELECT #{row[:data].gsub(/"/,"'")};").all
end

It doesn't use the #insert method and some of the nice syntax of Sequel, but at the moment I haven't spent too much time getting the VARIANT data type integrated in this gem, partially because it can be "any data" but we have to treat it as a string on the Ruby side. My test also had variant data that happened to be JSON, so we could do JSON.parse, but it turned out to be unnecessary. The key thing that was important was to use .gsub to replace all double quotes with single quotes, as Snowflake treats anything with double quotes as an identifier (see docs).
Also, the syntax for inserting variant (or object) data is to use INSERT INTO <table> SELECT <data>, rather than INSERT INTO <table> <values>. I could see an option in #insert like .insert(data, :variant => true) to modify the syntax behind the scenes; I'll look into that another time, but hopefully what I have above should help you out a little!

Closing for inactivity– if this is an issue still, please reopen and reference this issue as needed 🙇


AAD dialog window doesn't pop up automatically when connecting to an AAD-secured cluster using FabricClient

The following code in a C# Console Application should pop up a dialog box asking for AAD credentials when connecting to an AAD-secured cluster:
            string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326";
            string connection = "clustername.westus.cloudapp.azure.com:19000";

            var claimsCredentials = new ClaimsCredentials();
            claimsCredentials.ServerThumbprints.Add(serverCertThumb);

            var fc = new FabricClient(claimsCredentials, connection);

            var ret = fc.ClusterManager.GetClusterManifestAsync().GetAwaiter().GetResult(); ;
                Console.WriteLine(ret.ToString());

However, a sign-in dialog never comes up, instead authentication immediately fails with:
Unhandled Exception: System.Fabric.FabricException: The specified credentials are invalid. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80071BF7

I can get the dialog to work by manually adding references to the following assemblies:
Microsoft.IdentityModel.Clients.ActiveDirectory.dll
Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll
Both of these assemblies are included in the Service Fabric installation directory, but they are not automatically loaded, which breaks the AAD sign-in experience with FabricClient.
Cluster version: 6.1.472
Microsoft.ServiceFabric package version: 6.1.472
Local runtime version installed: 6.1.472
Local OS: Windows 10

Is there an ETA on when this bug might be addressed?


-all commands are finding terragrunt.hcl files within child dir .terragrunt-cache directories

I've seen this behavior several times and I can gather more info but first wanted to ask -
(windows 10, terragrunt version v0.23.30)
If I have a nested directory structure of terragrunt modules and try and apply-all from the top level, and forever reason it fails.
If I cd into the failing module and run terragrunt from there I get a .terragrunt-cache dir in that child dir.
after resolving the issue I should be able to cd back to the top and apply-all again to deploy any remaining modules which depended on the failed one.
What I see is that apply-all shows me all the expected modules AND one it found in the clild .terragrunt-cache dir created above.
Am I alone in seeing this issue? I have encountered this quite a few times.
This affects all -all commands, here is a snip from destroy-all (in D:/live/live/project/us-west-1/xxx/demo) showing a module being found in a cache dir -
=> Module D:/live/live/project/us-west-1/xxx/demo/infra/network/peering (excluded: false, dependencies: [D:/live/live/project/us-west-1/xxx/demo/infra/network/vpc_compute, D:/live/live/project/us-west-1/xxx/demo/infra/network/vpc_docdb])
=> Module D:/live/live/project/us-west-1/xxx/demo/infra/network/vpc_compute (excluded: false, dependencies: [])
=> Module D:/live/live/project/us-west-1/xxx/demo/infra/network/vpc_compute/.terragrunt-cache/9XMpZZzIpP7iixD598IFNEhphH4/Rvcr1Xqh4QpJ60TT9YEtkizwh6A (excluded: false, dependencies: [])
=> Module D:/live/live/project/us-west-1/xxx/demo/infra/network/vpc_docdb (excluded: false, dependencies: [])
Anyway, before I gather a bunch of other info, is there something obvious I'm overlooking?
Thanks,
Tim

Strange... The FindConfigFilesInPath method is what we use to find Terragrunt modules when you run xxx-all commands. That method, in turn, calls containsTerragruntModule, which should explicitly exclude anything in the Terragrunt cache. Not sure why that isn't working in your case!
If you're up for an experiment, perhaps check out the Terragrunt source, add some logging to those methods, and run it from source (go run main.go apply-all)?

@brikis98 Looking at the code, it looks like it is based on options.TerragruntCacheDir. Does that mean that it is based on the current context? E.g., if I run terragrunt in a child dir without a custom cache dir (and thus use .terragrunt-cache in the current dir), but then run apply-all with a custom cache dir, it would pick up the config in the original cache dir from the first run right (because options.TerragruntCacheDir is set to the custom cache dir)?

Yes, I think so.

Then perhaps a potential solution is to also always reject any path that contains .terragrunt-cache? It seems like you would never want to pick anything up in there in the real world.

This was fixed in #1424.


dist files are in the docs folder?

I just installed the package from bower, and the dist files are in the docs folder, is that a bug?

No, it is not. :slightly_smiling_face: The docs folder is where github pages serves from (it was much easier to do this than the separate branch for dist files).
The npm package ignores the docs folder, so it's not a size concern there. Bower doesn't know to ignore it, and while I'm pretty sure bower has some ignore mechanism, at this point I no intention of officially supporting it. (It is considered deprecated even by it's own dev team.) However, If you want to put in a PR to add an ignore for docs for bower, I'll happily merge it in.


nixpkgs.{system,localSystem,crossSystem} values are useless

Issue description
Of course these options serve a purpose inside the nixpkgs.nix module, to set pkgs. However, these options tend to be used elsewhere, even though they are hard to use, leading to problems with cross compiled NixOS.
For this reason, I suggest that we make these config values unusable by providing an appropriate error message showing what else to do.
Why aren't they useful
system is a legacy option that will now tend to be set to its default, builtins.currentSystem.
localSystem will only consistently represent the system where stuff was built. This is typically not useful information, yet it is used erroneously in some modules.
crossSystem is meaningful, but is not always set.
What can we do
Maybe system can be fixed by inspecting options.nixpkgs.localSystem and options.nixpkgs.crossSystem. However, it is hard to reason about all possible uses of the module system and this feels like laying down a minefield for further changes to the nixpkgs.nix module.
A better solution seems to be to just treat these options as write-only. Users will set them and no other module than nixpkgs.nix  can use its value. We can then, by means of an error message, direct module authors to the right value. This should probably be pkgs.targetPlatform. I don't think NixOS needs to provide its own way to determine its platform. pkgs can do that for NixOS just fine.
How to implement
Simply set all three options to private...
The module system does not yet have that option option, but it's almost there in #49766
Alternatives
Overhaul the nixpkgs options once more
So we ask people to set

nothing at all to use builtins.currentSystem
nixpkgs.targetSystem to set the system of the resulting NixOS
nixpkgs.hostSystem to set the system to build it on

Boils down to the same thing of course, but now we have a nixpkgs.targetSystem option that is actually useful.
I don't know how the old nixpkgs.system fits into this.
This means we'll need to reevaluate all the corner cases once more.
It will probably still confuse people and cause them to use nixpkgs.hostSystem which will then supposedly fail as it should by being null most of the time.

I think the amount of time invested in the development of this feature (cross-compilation) along with the confusion it has created related to the documentation that comes with it is too high myself.
If you invest a few hundred hours in a feature, documenting it for at least 5 hours seems appropriate to me.

Hey coretemp. I too had to look up how to use the cross compilation and I understand your frustration. In particular I find the documentation for the distinction between a system string and { system : string, config : ? } and such lacking.
That said I do appreciate the amount of effort that it takes to work on a such a complicated project. I have been working on some improving some of the glue, like adding pkgs.nixos, and I find that the documentation is a significant part of the work. I imagine that the cross compilation is similar in this regard, except much much more involved. Because of its size, I understand that documentation has suffered, but I absolutely agree that it's not done until the documentation is in a good shape.
I am glad to see that you filed an issue, #49510. If there's anything else you think must be improved, please file another issue.

@roberth yes the crossSystem interface sucks for precisely the reason that there is no easy consistent way to get the build-time and run-time platforms.
@coretemp I did not invent such a thing. crossSystem already existed for years. I kept it around to not break existing documentation (at the time, the old wiki). I regret doing this; that documentation is little read now anyways.
All that said, I think the solution is to change the arguments to Nixpkgs itself (with some sort of back compat provision) and then change the NixOS interface accordingly.

@matthewbauer I recall using pkgs.anything could cause infinite recursion problems maybe? That's why a proper fix would definitely be preferred.

It shouldn't in NixOS modules unless something very weird is going on. You have to use the final "pkgs" - not config.nipkgs.pkgs though.
I've found a couple usages of localSystem but it seems pretty rare (dysnomia and containers). Were there any others?

You have to use the final "pkgs" - not config.nipkgs.pkgs though.

Oh, ok. Well that would be great to use pkgs everywhere and fix remove system from https://github.com/NixOS/nixpkgs/blob/master/nixos/lib/eval-config.nix#L11-L12

@Ericson2314 OK, thank you for that clarification.

We still pass around system in eval-config, so I think this is not stale..

just dropping a thought that was floating around in my brain:
nixpkgs.targetSystem, which is currently nixpkgs.crossSystem.system should probably be set by nixos-generate-config in hardware-configurationx.nix since its a static property of the target system.

Still important

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/enabling-march-and-mtune-for-kernel-builds/20395/1

just dropping a thought that was floating around in my brain: nixpkgs.targetSystem, which is currently nixpkgs.crossSystem.system should probably be set by nixos-generate-config in hardware-configurationx.nix since its a static property of the target system.

Done in

https://github.com/NixOS/nixpkgs/pull/177672

while the system parameter becomes optional in favor of the well-defined in-module variables in

https://github.com/NixOS/nixpkgs/pull/177012

This should become the new way of doing things in NixOS, but I'm taking a very conservative approach so as to validate the solution and to avoid any unnecessary disruption.
Nixpkgs would also benefit from such a change, allowing buildPlatform and hostPlatform to be set directly, although there the pain isn't felt as much because all consumers already have access to well-defined variables to read from. It's just the nixpkgs invocation that's a little odd.

I'm kind of confused why we started using hostPlatform/buildPlatform names in NixOS whilst nixpkgs itself still uses localSystem/crossSystem as the names.   This really tripped me up.  Which we deprecated system but kept the localSystem,crossSystem names.

Fwiw, system was soft-deprecated before I soft-deprecated localSystem/crossSystem (so I'm not actually 100% sure I understand your comment).
Nonetheless your criticism applies. In retrospect, I should have started with Nixpkgs' parameters first, and make the NixOS change after.
I don't have the capacity to work on this now, but feel free to apply similar changes to the Nixpkgs entrypoints.

Thanks for the context! I  think i'll add a note in the code just to clarify!


Plane Touched - Flame Touched

Prior to the most recent update the Plane Touched Feat showed the PLane Touched box on the action bar menu for your "once per long rest" cast of the spells it grants. It is no longer showing that, meaning you can't use your once per days granted by the feat.

without a save I have to use my coding time to test on your behalf. Usually when I do it works.
please open a proper ticket next time with logs and saves. Otherwise nothing I can do.


[MINOR]: Fix annotations in HoodieDeltaStreamer

we use --props rather than --propsFilePath to set property file

LGTM. :)


Multiline search doesn't work

VSCode Version:
1.30.0
OS Version:
10.13.6
Also tried Insiders version
1.31.0-insider

Steps to Reproduce:

Invoke Search CMD + F
Enter first line of search, press SHIFT+Enter
Expect search box to grow and new line to appear, however, pressing SHIFT+Enter just cycles through any matched text

Does this issue occur when all extensions are disabled?: Yes

This only works in the search view (global search) not in the editor find widget currently.


Feature request: propTypes shape detection

Now that we have the prop-types rule, it would be nice if it could be configured to (perhaps by default) help you find properties on objects from props that you are using. For instance:
const React = require('react/addons');

const MyComponent = React.createClass({
  propTypes: {
    myObj: React.PropTypes.object,
  },

  /**
   * @return {Object}
   */
  render: function() {
    const { myObj } = this.props;

    return (

{myObj.body}

    );
  }
});

module.exports = MyComponent;

It would be nice if this plugin told me that myObj.body is missing from the shape of myObj. Where this would not raise any warnings/errors:
const React = require('react/addons');

const MyComponent = React.createClass({
  propTypes: {
    myObj: React.PropTypes.shape({
      body: PropTypes.string,
    }),
  },

  /**
   * @return {Object}
   */
  render: function() {
    const { myObj } = this.props;

    return (

{myObj.body}

    );
  }
});

module.exports = MyComponent;

Sorry, I don't think I'll do it, at least not for now.
It should be really difficult to do this properly without missing a lot of edges cases.
But if someone has a solution I can accept a PR :)


Nodes created through gdscript have invalid names.

Tested versions
Reproducible in v4.4.dev3.official [f4af8201b] and v4.3.stable.official [77dcf97d8]
System information
Godot v4.4.dev3 - Windows 10.0.22631 - Multi-window, 2 monitors - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 2060 SUPER (NVIDIA; <IP_ADDRESS>94) - Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz (8 threads)
Issue description
When creating a new node from gdscript the nodes will be created with invalid names.
It would be nice if the nodes got names as when creating from the editor node menu.
https://github.com/user-attachments/assets/32791e14-0c9a-4136-8be3-89bd679f0cd8
Steps to reproduce
Make a script that creates a new node then print it's name.
Minimal reproduction project (MRP)
invalidname.zip

This is expected. See the documentation for add_child():

If force_readable_name is true, improves the readability of the added node. If not named, the node is renamed to its type, and if it shares name with a sibling, a number is suffixed more appropriately. This operation is very slow. As such, it is recommended leaving this to false, which assigns a dummy name featuring @ in both situations.

This is expected. See the documentation for add_child():

This is fine, but i personally think nodes should get readable names by default.
Let's say you've never heard of this before like me. Then you set the owner of the child you added so that it shows up in the editor/scenetree.
I thought it was a bug when i saw it since when i tried to rename the editor said it was a invalid name.
If the node names are allowed to have invalid characters except when the user names them as such, why are they invalid?


Fonts are misbehaving while using https

Fonts are misbehaving while using https.
This is the URL w/o https and this is with https
In https version fonts are becoming bold and changing size - Overall giving bad experience to the user.
Looks like something is not downloading properly in https version.

That's because you're using both http & https versions.
Fonts get cached for a few days, so if they were cached while you were on the http version of the site, then the https site will be trying to get the http files - which is not allowed by browsers.
Instead of doing that, redirect your http traffic to https. Your SEO will thank you for that.
After you switch your site to https, your fonts will back to normal.
In some cases it might be a few days for the caches to be reset though.

Dear Aristath
I'm also reporting weird behavior on fonts on HTTPS site. I kindly ask is there something I'm missing? I tried to force my site to use the only HTTPS it did not change it.
When I disable the "Kirki Toolkit" I don't get these issues. Also, my site passes the green padlock when disabling the "Kirki Toolkit" plugin.
Hoping you can help me.

My issue was resolved. I forced HTTP to https, but that didn't fix anything. Later I reinstalled everything, including WordPress and theme.
Now:

Everything is working fine.
http is forced to https.

@aristath any thoughts on using protocol-relative URLs to negate this? For example //mydomain.com

@aristath any thoughts on using protocol-relative URLs to negate this? For example //mydomain.com

I can report using this plugin also solves the issue. https://wordpress.org/plugins/http-https-remover/
So is there some issue in Kirki that should be fixed?

Fixed in v3.0.41 by using protocol-agnostic URLs as suggested by @DannyCooper

Hi. Problem solved after update AND clearing all the transients.


🩹📚 Fix search in docs

Currently, the search functionality in our docs hangs indefinitely.
The error you get in the dev tools console is
Uncaught ReferenceError: jQuery is not defined

This relates to a change in the rtd theme and how to use it (old config).
Change summary

🩹📚 Fix search in docs

Checklist

[ ] ✔ Passing the tests (mandatory for all PR's)
[x] 👌 Closes issue (mandatory for ✨ feature and 🩹 bug fix PR's)

Search works again try it out


Question: launching script when playback start is reveived and vice versa

Any idea if at least first one of the following is feasible:
1: launch script from apotofy connect web when playback starts. when play command is received from some spotify client to device running spotify connect web, one could launch script of their choosing. I'd like to automatically either turn on (with right input) my receiver and speakers or my correct Logitech Harmony activity. This could be done for example via script.
2: using script / http post,put / to send stop playback. I'd like to run this command, for example when my receiver or harmony is asked to change input or activity to non-spotify one.

already possible via http post.

possible in my fork of spotify-connect.

1: thanks! Checked put your fork, quite self-explenetary!
2: already possible.. Could you give pointers to this?

sure. PI-IP:4000/api/playback/prev
possible commands: prev, next, pause, play

I also want to use a script, so i can stop/start mpd playback.

Hello,
If you want a not perfect hack but working way to know if there is sound on the speaker (rpi) you can try this:
if grep -q RUNNING /proc/asound/card0/pcm0p/sub0/status 2>&1; then
echo "Playing"
	else
	echo "NotPlaying"
	fi
I'm using it to start my amplifier when I start any sound, it's working well

Cool hack, thx for sharing

For a spotify-connect-web specific solution, you should be able to get this stuff from the API (/api/info/metadata and /api/info/status)
The full URL would be something like http://localhost:4000/api/info/metadata

It would be great to implement the requested start and stop script calling functionality. In this case i e able to start playing a song on spotify and "release" the ALSA hardware device, which is used by mpd (music player daemon).

It's implemented, You can get a JSON object:
http://[yourIP]:4000/api/info/status

Hi,
yes i found that, but that's not what solve my problem....
Until now i used to run 2 audio services on my rasberry pi via my Project DA-converter/preamp: mpd and shairport-sync
Now, with change to spotify, i have three services :-)
What i "build" for the first two of them was an "easy" way changing the services whitout to have to "click" so much commands on my phone ...
What does it means? If i hear some hi-res material or some FLAC-files via mpd, the mpd grabs the ALSA hardware-device. I can't change to shairplay (apple airplay) without stopping mpd playback, because mpd block the alsa-device. In shairplay-sync, you can run scripts before start of playing and after end of playing. The script i wrote for "before start of playing" stops playing music from mpd. These stop cause the release of alsa-hardware-device. Because of this, i'm able top simply start playing via airplay whithout the need to stop the mpd-playing before. It will be done by the script. At stopping of airplay, there is also an automatically running script which start playing of my favority radio station via mpd. So i need fewer start and stop oprations on my phone. It would be nice to have the same possibility in spotify-connect-server.  I have no idea how to stop mpd (and release the alsa device) by polling the status, of spotify connect. I guess, spotify cant start playing, if the alsa-device is busy and can't open by spotify-connect.
best regards

Did you get anywhere with this? I want to do something similar, but I want the device running spotify-connect to run a script and turn a small local amp on through a relay.


Representing a history of status changes

I'm trying to model the status of a device while also keeping track of its past values.
This concept is something in between a property and a datastream, but neither of those fit my user case well enough.
Properties don't have a history, so i can't retrieve the previous values.
Datastream are more suited for "events" or single datapoints.
I could model the problem with a datastream that tracks the status changes but there is no clear API to retrieve the device status in a given time interval, as using since=X and to=Y will not return which status was active at the timestamp X

This may be related to #591 too


"Ilișești" is listed in the drop-down menu

Description:
"Ilișești" is listed in the drop-down menu alongside its corresponding county according to the law
Precondition:
The website is up an running.

Step 1
Type "Ilișești" in the search bar.

Expected results
The location is listed in the drop-down menu as "Comuna Ilișești, SUCEAVA".


Use built-in Snakemake retries directive

Description of proposed changes
We've been using a custom automatic retry for rules that fail occasionally during fetching of online resources since the workflow was still a bash script.¹
When the workflow was converted a Snakemake workflow, Snakemake did not have rule specific retries yet.²
The latest GISAID ingest failed³ due to an error in run_shell_command_n_times, so I figured it's time to loop back and replace it with the built-it Snakemake retries directive that has been available since v7.7.0.
¹ https://github.com/nextstrain/ncov-ingest/commit/75ee3921137f879a94d6996f73770a77727408af
² https://github.com/nextstrain/ncov-ingest/pull/231/files#r758769573
³ https://bedfordlab.slack.com/archives/CTZKJC7PZ/p1706908574251489?thread_ts=1706905060.565059&cid=CTZKJC7PZ
Related issue(s)

Related to https://github.com/nextstrain/ncov-ingest/issues/239

Checklist

[x] Checks pass
[x] Test GISAID workflow
[x] Test GenBank workflow

Both test builds completed successfully. Merging and will monitor automated runs the next couple of days.


mate.mate-calc: 1.20.1 -> 1.20.2

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/mate-calc/versions.
These checks were done:

built on NixOS
Warning: no invocation of /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/mate-calc had a zero exit code or showed the expected version
/nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/mate-calc-cmd passed the binary check.
Warning: no invocation of /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/.mate-calculator-wrapped had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/mate-calculator had a zero exit code or showed the expected version
Warning: no invocation of /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/.mate-calc-wrapped had a zero exit code or showed the expected version
/nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/.mate-calc-cmd-wrapped passed the binary check.
2 of 6 passed binary check by having a zero exit code.
0 of 6 passed binary check by having the new version present in output.
found 1.20.2 with grep in /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2
directory tree listing: https://gist.github.com/3fe2665fbee32995f75e3c7a458a0ee9
du listing: https://gist.github.com/1cedd9a494738bf479198ffe45dee0a7

meta.description for mate.mate-calc is: '"Calculator for the MATE desktop"'.
cc @romildo for testing.
Experimental: this build is cached with Cachix. To use the cache follow these experimental instructions:
One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout f643a1c2a46017adb975c01746993f8d901f2289 && nix-shell --pure -I nixpkgs=. -p mate.mate-calc

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: mate.mate-calc
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: mate.mate-calc
Partial log (click to expand)
Wrapping program /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/mate-calc-cmd
Wrapping program /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/mate-calculator
shrinking RPATHs of ELF executables and libraries in /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2
shrinking /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/.mate-calc-wrapped
shrinking /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin/.mate-calc-cmd-wrapped
gzipping man pages under /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/share/man/
strip is /nix/store/4mf2xm9p32lzrim927yk92xhx35yaz62-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2/bin
patching script interpreter paths in /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2
checking for references to /build in /nix/store/zar9jk5047zkynk663v4143ap5q9ppzm-mate-calc-1.20.2...

Success on aarch64-linux (full log)
Attempted: mate.mate-calc
Partial log (click to expand)
Wrapping program /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2/bin/mate-calc
shrinking RPATHs of ELF executables and libraries in /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2
shrinking /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2/bin/.mate-calc-wrapped
shrinking /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2/bin/.mate-calc-cmd-wrapped
gzipping man pages under /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2/share/man/
strip is /nix/store/min150lkigznaayzpwvf8d4jdl1dqvx6-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2/bin
patching script interpreter paths in /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2
checking for references to /build in /nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2...
/nix/store/a08npvmd9415c226vk1bb9jg66jpy6cm-mate-calc-1.20.2


Dropdown content referenced multiple times

The logic for placing the dropdown-content runs on initialization. If you have a dropdown referenced in a repeater, the dropdown-content will only be attached to the last element. If the placeDropdown method were to place the contents when it was called, would solve the problem.
dropdown.js - line 49
origin.after(activates);
place that call inside the placeDropdown function 6 lines down.

Closed due inactivity, feel free to reopen it if it is still necessary.


Can't use the output from this in a normal ComfyUI workflow

I can't use the output from this in a normal ComfyUI workflow. How do I integrate this into CUI workflows? The text output seems to be a strange format. I've tried using intermediate nodes to convert the format but that doesn't help. I really want to use this, it seems extremely powerful based on my limited testing.

Same issue, the output is not a text string that can be connected to other nodes

I re-wrote the nodes.py script. Now works in my workflows.


Keep April 1st website

I don't know if this is the right place to suggest this, but I suggest that the April 1st, 2022 version of the website should be kept, but on a subdomain. For example, on free.purpurmc.org like how Discord has an easter egg at printer.discord.com.

The website is perfection btw lol

1st april is always perfection on Purpur.

I've uploaded the source code to the april-fools/2022 branch, but I don't think running & maintaining this website is a smart use of our time.

I started work on this idea yesterday. It shouldn't be hard to host / and /downloads on a different domain, then redirect all other requests to the normal domain. This means the docs and such won't fall out of date.

Closing this since it's accessible at https://geocities.purpurmc.org


Workaround for linking Apple Developer Account to Appcenter

Currently we are using a shared Apple ID to link Appcenter to our Apple Testflight, it doesn't have two factor authentication as its shared.
We noticed that we cannot deploy to Apple Testflight. When we go to the logs we get an error when it tries to deploy
##[error]{"code":"apple_authentication_error","message":"Error: Failed to publish to store. apple connection is not valid for connectionId: d3353867-3af0-4aa7-82ee-fdda6a1e896a"}
http response code: 400

We go into Distribute>Stores and we see "Your Apple App Store Credentials are no longer valid. Please re-authenticate." When we try to reauthenticate, iIt gives us an inaccurate error message. Need to acknowledge to Apple's Apple ID and Privacy statement. We sign in and there is no such privacy statement to acknowledge. Fastlane are suggesting fixes for this but since we are an Appcenter customer we do not implement this software ourselves.
https://github.com/fastlane/fastlane/issues/18098
I tried to authenticate user a different account (my own developer account) and get a warning that the 2FA code I entered isn't valid, yet the code works on Apple's site.
I reached out to Microsoft support and they requested I open a ticket here for a workaround since I don't see how to link Appcenter to an Apple .

We have the same problem

Same problem here

I was able to get connect but needed to create a new Apple ID. One thing I didn't realize was when I removed the old account and added a new one is, the actual apps that had still the old account attached to them. I had to do to Distribute, Stores then hover over the AppStore Connect row, click on the "Delete Connection" then go back through the process of adding it back to the store. At this point it asked me to Authenticate with Apple with 2FA,create an App specific password (which I already had at hand) then enter the app specific password and I was back in business. I had to go delete the connection on my other Apple apps using that ID and reconnect them.

For me the problem was solved by enabling two-factor

If i recall - there is something you need to acknowledge - but is isn't in the place you are expecting. I have forgotten exactly where - but try going to the Apple ID portal - not he app store portal.
Also - now everyone has to use 2 factor- but you can put multiple contact numbers

We solved the problem by using the app specific password but then it returned the subsequent time we went to do a deploy. I hope we will not need to create an app specific password and delete and create the connection each time we need to do a deploy.

Same issue here. I tried deleting my store connection as mentioned by @jdinnen, but as a lowly developer I do not have access to create new Apple IDs for my company. Perhaps it would have worked if I could have created a new user, but without that, I seem to be stuck in the water here.

This is impacting client work here as well. None of the mentioned workarounds are working, completely blocked.
I guess you need access to a Mac to upload IPA artifacts and this particular client is a Windows shop.
@mihailo-popovic96 any updates on this from the DRI?

@thejustinwalsh we have been able to delete the connection and recreate it and it will work the first time.  I can't hardly believe that this has not been fixed.

Even with the 2FA set up, the connection will need to be re-authenticated on a regular basis and it's very inconvenient. We assume it did it's thing but often it didn't even distribute to TestFlight. Only one person has access to reconnect and the 2FA with Apple only sends to that one person's device to give us the 2FA code. I kinda wish that we just had an API key.

HI, we need help on this AppCenter, I also have it. Thanks for your time

Experiencing same issue here:(
Waiting for a fix soon

Experiencing same issue here:(
Waiting for a fix soon

Same issue here

Same issue here

same issue here !

Is it safe to assume that no one on the AppCenter team is working on this?

Doesn't seem like it.
Working on moving over to Azure Pipelines personally.

Somehow this got tagged as a feature-request instead of a bug, so probably why it is being ignored.

Even with the 2FA set up, the connection will need to be re-authenticated on a regular basis and it's very inconvenient. We assume it did it's thing but often it didn't even distribute to TestFlight. Only one person has access to reconnect and the 2FA with Apple only sends to that one person's device to give us the 2FA code. I kinda wish that we just had an API key.

If you are using a distribution only shared account with 2FA enabled, you can sign into that account on multiple macOS machines (as a secondary iCloud account), and you will get the code notification on all the devices with that account signed in.
It is under Settings > Internet Accounts. You will see a message after signing in that not all iCloud features are supported, but that is fine, the 2FA prompts work, and that is typically what you need.

having the same issue
##[error]Error: {"code":"service_connection_not_found","message":"Error: Failed to publish to store. Could not find the Apple Developer account which is set up for the store."}

Still Facing the issue on linking the Apple Developer Account to Appcenter.
Last week the error was regarding the unavailability of the distribution services:
`##[error]Error:

Service unavailable

Our services aren't available right now
We're working to restore all services as soon as possible. Please check back soon.

http response code: 504`
I thought the issue will get resolve in some time but this week I am getting this error when trying to publish the IPA to App Store TestFlight. Please get this fixed as it has been a long time since we started facing the issue.
##[error]Error: {"code":"service_temporarily_unavailable","message":"Error: Failed to publish to store. The Apple Login service is temporarily unavailable, please wait a few minutes and try again later."}

I'm seeing a similar issue with one app that i haven't been able to deploy through appcenter for over a week.
##[error]Error: {"code":"service_temporarily_unavailable","message":"Error: Failed to publish to store. The Apple Login service is temporarily unavailable, please wait a few minutes and try again later."}  http response code: 400 ##[section]Finishing: Create distribution ##[section]Starting: Xcode build (signed)
I had a team mate reach out to appcenter and apparently one of the issues was that the app had a special character in the name that appcenter doesn't like. We've removed the special character for testing purposes and now are stuck on the error above.
Anyone have any other suggestions?

Hi @Diego-F-Aguirre,
If you are still using the old authentication method (Apple Developer Account Credentials) to connect with the App Store and facing issues, try updating the authentication method to the new Connect API. This may resolve the issue. I faced a similar problem when using the old method but switching to the App Store Connect API helped me resolve the issue. To generate an App Store Connect API key, refer to this link:
https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api

Hi @Diego-F-Aguirre,
If you are still using the old authentication method (Apple Developer Account Credentials) to connect with the App Store and facing issues, try updating the authentication method to the new Connect API. This may resolve the issue. I faced a similar problem when using the old method but switching to the App Store Connect API helped me resolve the issue. To generate an App Store Connect API key, refer to this link:
https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api

This is the right answer.  It doesn't appear that vanilla credentials (username, password) will work any longer.  Thank you for posting this.  I wasn't even sure what this api was.


FEATURE: Allow HSE bypass clock source for F070

An ability to set a "bypass" clock source should be added. Currently, HSE always is in the non-bypassed mode when using this HAL.
I started to code this (it's fairly simple), but don't know what the desired Rcc API would be.
My first choice would be to modify the existing fn to be pub fn hse<F>(mut self, freq: F, bypassed: bool). The disadvantage is that this breaks existing code.
Another implementation would be to create pub fn hse_bypass<F>(mut self, bypassed: bool), with a default to use a XTAL (non-bypassed) source.
This feature is needed for most of the Nucleo boards, where the clock source is an external oscillator (the STLink). I can attempt to implement either API (though I'm very new to Rust).

I've implemented one of the above solutions. Please give feedback.
I looked for this option in the other STM32 HAL libraries, but did not see them. Is there somewhere that I need to propose this change such that it would be applied to all of the HAL variants?


Make audit policy apiVersion dynamic k8s version

Description of changes:
This should avoid unnecessary cp rolling upgrades in workload clusters when updating the management cluster.
Testing (if applicable):
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I made a few changes from unit testing to more closely align this policy with what the CloudStack provider (at least) had before, but there were still some minor differences due to serialization of empty objects, for example. However, the KCP object is very touchy and if anything gets changed in it, a rolling upgrade will be triggered. In the end, when I tried upgrading, I still observed the rolling upgrade on the workload cluster(s), so I do not believe this PR achieves its goal of preventing the rollingupgrade in the workload clusters.

@mitalipaygude already addressed this in a different PR


apptainer, cache write error

I had code that was running fMRIPrep from repronim containers on an HPC, but changing singularity to apptainer I now get the following error:
Process Process-2:
Traceback (most recent call last):
  File "/usr/local/miniconda/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/local/miniconda/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/miniconda/lib/python3.7/site-packages/fmriprep/cli/workflow.py", line 20, in build_workflow
    from ..workflows.base import init_fmriprep_wf
  File "/usr/local/miniconda/lib/python3.7/site-packages/fmriprep/workflows/base.py", line 20, in <module>
    from ..interfaces import SubjectSummary, AboutSummary, DerivativesDataSink
  File "/usr/local/miniconda/lib/python3.7/site-packages/fmriprep/interfaces/__init__.py", line 5, in <module>
    from niworkflows.interfaces import (
  File "/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/__init__.py", line 4, in <module>
    from .masks import BETRPT as BET
  File "/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/masks.py", line 21, in <module>
    from seaborn import color_palette
  File "/usr/local/miniconda/lib/python3.7/site-packages/seaborn/__init__.py", line 2, in <module>
    from .rcmod import *  # noqa: F401,F403
  File "/usr/local/miniconda/lib/python3.7/site-packages/seaborn/rcmod.py", line 7, in <module>
    from . import palettes
  File "/usr/local/miniconda/lib/python3.7/site-packages/seaborn/palettes.py", line 9, in <module>
    from .utils import desaturate, get_color_cycle
  File "/usr/local/miniconda/lib/python3.7/site-packages/seaborn/utils.py", line 14, in <module>
    import matplotlib.pyplot as plt
  File "/usr/local/miniconda/lib/python3.7/site-packages/matplotlib/pyplot.py", line 31, in <module>
    import matplotlib.colorbar
  File "/usr/local/miniconda/lib/python3.7/site-packages/matplotlib/colorbar.py", line 36, in <module>
    import matplotlib.contour as contour
  File "/usr/local/miniconda/lib/python3.7/site-packages/matplotlib/contour.py", line 25, in <module>
    import matplotlib.texmanager as texmanager
  File "/usr/local/miniconda/lib/python3.7/site-packages/matplotlib/texmanager.py", line 83, in <module>
    class TexManager(object):
  File "/usr/local/miniconda/lib/python3.7/site-packages/matplotlib/texmanager.py", line 91, in TexManager
    mkdirs(texcache)
  File "/usr/local/miniconda/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 863, in mkdirs
    os.makedirs(newdir, mode=mode, exist_ok=True)
  File "/usr/local/miniconda/lib/python3.7/os.py", line 221, in makedirs
    mkdir(name, mode)
OSError: [Errno 38] Function not implemented: '/home/fmriprep/.cache/matplotlib/tex.cache'

Are you aware of any difference introduced with apptainer that would make some filesystem non-writable.
Should I modify the singularity_cmd to bind a writable tmp folder to that cache path?

Are you aware of any difference introduced with apptainer that would make some filesystem non-writable.

Frankly I am not very verse in apptainer yet, so the answer would be "No" but not because there is no such differences ;)
But are you certain it is the permission (not-writeable) since it is not about Permission denied ?

Should I modify the singularity_cmd to bind a writable tmp folder to that cache path?

Why not?  FWIW -- I give you my blessing ;)

Sorry for the long delay in reply.
I got to dig into that issue again, and it is not a permission error, just the fact that it's not possible to write in an apptainer container (contrary to docker) except in binds.
This cache folder is prepopulated in the container creation but is not writable then.


publish<EMAIL_ADDRESS>

Requested by: @jennmueng
Quick links:

View changes
View check runs

Assign the accepted label to this issue to approve the release.
Targets

[x] npm
[x] github
[x] registry

Error:  Cannot merge release branch "release/2.4.3": conflicts detected Please resolve the conflicts and merge the branch manually:     git checkout master && git merge release/2.4.3
Error:  Merge conflict

I think this is where the conflict is: https://github.com/getsentry/sentry-react-native/compare/release/2.4.3#diff-0e7081b67c7f0753c4ca5c6fd13f4386f62d00cc936262200428cc55c903194c

@BYK It shouldn't be merged as it's a release for a previous 2.4.x while master is on 2.5.0 beta. How can we specify --no-merge?

@jennmueng right now, you cannot but I'll take note and will see how we can add support for this. Shouldn't be too hard.
I'll close this issue then as the release is done. You can delete the branch yourself ;)


Using 0 * * * * * results in a job that runs every minute, versus every hour.

Using
      name: 'RedactedWorker',
      cron: '0 * * * * * ',
      class: 'RedactedWorker',
      args: [])

results in this job being queued every minute instead of every hour which is what the cron format of '0 * * * * *' means from my understanding.
016-04-12T11:49:01Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker
2016-04-12T11:50:01Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker
2016-04-12T11:51:01Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker
2016-04-12T11:52:01Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker
2016-04-12T11:53:02Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker
2016-04-12T11:54:02Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker
2016-04-12T11:55:02Z 19075 TID-oxri47l10 INFO: Cron Jobs - add job with name: RedactedWorker

Try to remove one of the *, giving you 0 * * * *

That fixed the issue, one of my collegues noticed my extra asterisk, thanks for the response!


PHPUnit Logo

Please do not use the old PHPUnit logo (https://secure.gravatar.com/avatar/a2c7222d3520d0ceb255bcbcbc82884c.jpg?s=200&d=mm) on https://registry.hub.docker.com/repos/phpunit/.

Hi @sebastianbergmann,
No prob, but where is the new logo ?

PHPUnit does not have a logo.

Ok @sebastianbergmann, I removed the old logo.
(Just wait the Gravatar cache time)
Sorry for the inconvenience :/


general: review project structure

[x] there are some folders that are most likely no longer needed, namely everything to do with collators.
[x] storagext and mater can be merged with their respective clis
[ ] primitives are a bit all over the place, we can probably do better
[x] network, market-protocols and api can possibly be removed too, or maybe renamed and get some children?

Primitives were done in https://github.com/eigerco/polka-storage/pull/616


add dh orchestration

Description

References

#0000

Codecov Report

Merging #1419 (0dd515f) into main (f3a6fc3) will increase coverage by 20.41%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #1419       +/-   ##
===========================================
+ Coverage   48.25%   68.66%   +20.41%
===========================================
  Files          34       48       +14
  Lines         458      801      +343
  Branches       32        0       -32
===========================================
+ Hits          221      550      +329
- Misses        229      236        +7
- Partials        8       15        +7

Impacted Files
Coverage Δ

...taHub.WebApi/Controllers/Wholesale/Dto/BatchDto.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...gistration/HealthEndpointRegistrationExtensions.cs
45.45% <0.00%> (-36.37%)
:arrow_down:

...WebApi/RequireNonNullablePropertiesSchemaFilter.cs
80.00% <0.00%> (-8.00%)
:arrow_down:

apps/dh/api-dh/source/DataHub.WebApi/Startup.cs
95.12% <0.00%> (-1.22%)
:arrow_down:

.../DataHub.WebApi.Tests/Fixtures/BffWebApiFixture.cs
100.00% <0.00%> (ø)

...ntegration/Controllers/WholesaleControllerTests.cs
100.00% <0.00%> (ø)

...ce/DataHub.WebApi.Tests/Fixtures/WebApiTestBase.cs
100.00% <0.00%> (ø)

...rce/DataHub.WebApi.Tests/Fixtures/WebApiFactory.cs
90.00% <0.00%> (ø)

...Tests/ServiceMocks/JwtAuthenticationServiceMock.cs
100.00% <0.00%> (ø)

...egration/Controllers/ChargeLinksControllerTests.cs
100.00% <0.00%> (ø)

... and 8 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


hi

What happened?
Help
What browser(s) are you seeing the problem on?
Not Applicable
Code of Conduct

[X] I agree to follow the IETF's Code of Conduct

Privacy policy


Use go-modules

What this PR does / why we need it:
Use go modules
Special notes for your reviewer:
Release note:

TestMachinery now use go modules

Even better and with go 1.13 we can get of GO111MODULE... as well.

and with 1.14 we can also get rid of the -mod=vendor..


CombineLatest with more than 2 values of different types

Feature request
I just found that the CombineLatest operator allows us to use a IEnumerable<TSource> which is fine or we can use a <TFirst, TSecond, TResult> which can be really useful in my current case.
However, I want to consume more than 2 Observable with different values, how am I supposed to do that?
Thanks for your help.

There should be overloads for 3..16 argument variants: CombineLatest.Generated.cs

Ah, yes. It seems to be. Thanks for your answer.


urls cleanup: Fix buggy isUrlOnRealm function

I'm doing a cleanup of some relevant parts of our URL parsing logic, as I prepare for #5306. Inheriting priority from that.
From start to finish, this would take us from
// TODO: Work out what this does, write a jsdoc for its interface, and
// reimplement using URL object (not just for the realm)
export const isUrlOnRealm = (url: string, realm: URL): boolean =>
  url.startsWith('/') || url.startsWith(realm.toString()) || !/^(http|www.)/i.test(url);

to
// TODO: As of writing, we use this same check in 5 or so other places.
//   Probably should consolidate those so they call this function, or else
//   dissolve this function.
export const isUrlOnRealm = (url: URL, realm: URL): boolean => url.origin === realm.origin;

(Ah, and I think the TODO we're left with in the "after" is probably something we can resolve easily.)
Rather than making that big change in one commit, I've tried to pull out incremental changes so we can see how the behavior changes. As always, please let me know if you'd like me to be more or less incremental, or if there's a better order I can put the commits in. 🙂

Thanks again @chrisbobbe for this fix and spotting the consequences of the issue!
I've now pushed f36ccd7fb41eb6f76e8f51b55866eb92a0714aba to main, which is a cherry-pick of the stripped-down bugfix that went into release v27.190. So the next step for this PR would be to rebase atop that. The refactors that are in this branch correspond well with what's described in that commit message:
This still isn't a great structure, because it'd be easy for a call
site to change (or a new one to be added) so that the URL gets used
in a way other than by passing to our `new URL`, or with a different
base URL.  Add a TODO to refactor accordingly, and mark the function
as deprecated to discourage new callers.


Support printing blobs as base64

@wesboyt
I think these are the changes we talked about to support printing blobs as base64 strings with ion-js text.
I did a little test with this locally printing a struct with a blob member.
These are just the patches copied out of your commit here
Not sure what other testing would be useful, so please suggest.

I built a new fully passing branch to fulfill this request here: https://github.com/amzn/ion-js/tree/masterblob


stage1/gc: remove journal link

In the nspawn flavors, we use the "--try-guest" option. This means a
symlink is created from /var/log/journal/${machine-id} to pod's
/var/log/journal/{machine-id} when the pod is started.
If that symlink exists when doing GC, remove it.
If systemd on the host is configured to use /run/log/journal/, we
don't care about that because it will be deleted on a reboot.
Fixes #2281

Updated.

LGTM


Reducing Laravel Requirement?

Hey,
We're building a site on statamic and always jump to your package for kickbox integration.
However Statamic runs laravel 5.1
The composer json file requires 5.2
We've tested it with 5.1 and cannot see any 5.2 specific code - so we were wondering if you'd be willing to try reduce the minimum required version from 5.2 to 5.1?
thanks :)

@OwenMelbz I would love to, didn't even realize it was set that high, it should work on all 5 versions of Laravel. Let me do that now and thanks for using the packages 😄

Published in release 1.0.2 👍


Nuclide: Unable to find the "Language Settings-Skip-Directory"

Nuclide Version: 0.351.0.
Available language settings:
General, Clang, Remote Ctags, Flow, Hack, Infer AL, Obj-C, Ocaml, Python, Swift
But nothing for SKIP.
Is there an additional package to install to allow Nuclide to work with skip?
Or should we use a specific version of Nuclide?

So unfortunately, the extension that we used in Nuclide internally has not been open-sourced. I am going to try to see if we could open-source it, and keep you posted.

@pikatchu Open source Nuclide will soon (next few weeks) support VSCode plugins out of the box.
We(I) should get skip_lsp packaged for VSCode.


pip is unable to find pyomexmeta for Python 3.7

Running pip3.7 install pyomexmeta
Leads to this error:
ERROR: Could not find a version that satisfies the requirement pyomexmeta (from versions: none)
ERROR: No matching distribution found for pyomexmeta

I was able to install pyomexmeta for Python 3.9.

I'm not sure if you tried this before or after I released v1.2.6 - which just so happened to also be 3 days ago - but I suspect before. Could you try again and let me know if it works?

I believe the issue is that the manylinux2014 requires Python 3.7.8 or newer. I used 3.7.5. If you don't need features introduced at 3.7.6 or higher, manylinux1 or manylinux2010 would be more broadly compatible.

Aaah I see. I don't think this is a many linux issue but a conda issue. When you do conda create --name py37 python=3.7 conda automatically creates python 3.7.8 environment, which is the lowest I build against (checkout the azure_pipelines.yml to see how its built).
(Also, I do need manylinux2014 since it has gcc 9.2 and therefore c++17 by default - which simplifies the CI quite a bit.)

This page explains the version compatibility of the different linux tags: https://github.com/pypa/manylinux/blob/master/README.rst
manylinux2014 requires Python 3.7.8+, 3.8.4+, or 3.9.0+ and pip >= 19.3

I think these refer to the Python versions that are installed on manylinux2014 by default. However since I'm using conda on manylinux2014 I can build against any Python version I want, including 3.7.5 apparently (since conda create --name py375 python=3.7.5 works as you'd expect).
Should I assume you need Python 3.7.5 because of some limiting dependency? If this is the case, I could add this version to my build matrix for the next release (coming this week). If not then I would prefer to stick with py3.7.8, given that I can't see that many people using such an outdated subversion anymore.

I expected that 3.7.5 would work because earlier versions of 3.7 are still fairly new (e.g., 3.8 is only 1.5 years old). The issue can be closed. I would just suggest noting these version requirements in your installation instructions.
We don't specifically need 3.7.5. I happen to still have this on my Linux desktop. Everywhere else we're using 3.7.10 or 3.9.4.

(The main reason we haven't switched to 3.9 is that there was a limiting dependency that didn't yet have a 3.8 or 3.9 version. Although this has since been resolved, I haven't gotten around to switching everything to 3.9.)

Ah yes, okay - well thanks for posting the issue. I'll make sure I update the docs. Since I think its quite unusual to use a Python patch/micro version less than the latest release in the minor (aka 3.7.0 through to 3.7.7), and given how easy it is to update Python, my preferred response to this situation is to ask the user use an updated version of Python. I'd probably be doing them a favour anyway =]


Enhance docker build

Description
This adds some enhancements to the cross compilation setup, applying some best practices to reduce the Docker image size and startup time.
Tasks

[x] Prevent starting broken or incomplete image
[x] Reduce image size by cleaning up caches and intermediate files
[x] Prevent startup being slowed down by ROS workspace being sent to DOcker build context

My pleasure :) I don't know if it was directed to me, but I don't have the power to merge.

@sgvandijk: I sent you an invite to become a member of the committers group,. That should allow you to merge this PR.


Video shows up only after something is detected

https://github.com/opendatacam/opendatacam/issues/166#issuecomment-588367275

To reproduce: set valid classes in config file to something that isn't in the video, and will be always on the init screen with errors in the console

Same for me with v3.0.0-alpha.1 @tdurand

@b-g expected, no fix has been made yet for this

Ok, this should fix it: https://github.com/opendatacam/opendatacam/commit/eda5032c5781839baa27f0e3ba0c2cc0d04e81ac , will close for now and let's re-open if still there when testing next version


CopyLeaks API Automation

Is your feature suggestion related to a current problem or issue?
The web UI of CopyLeaks can hang if the article is rather large resulting in having to copy and paste articles in chunks and have to navigate to the raw GitHub index.md file to copy and paste in which is time consuming for each plagiarism check.
Describe the solution you'd like to implement to the program
As an MVP, create a web app that you can enter a GitHub PR number and would obtain the URL of the raw index.md GitHub file and submit the URL to CopyLeaks. The normal PDF report would be generated, saved to the server and then the user would be redirected to view it (and take action as a normal plagiarism check.
There's also the scope to extend and automate this further by attaching the PDF into a GitHub comment and posting this into the PR, automatically when new PRs are submitted, meaning content moderators could review plagiarism checks in GitHub without having to submit scans, saving a lot of time.
Additional context on how you could go about building this
MVP

Create a basic web server with a form to submit a GitHub PR number, use Octokit (GitHub API) to list files in the PR and obtain the raw file URL of an article's index.md file.
Authenticate with the CopyLeaks API (using either Node.js SDK or Axios), submit the file to scan, upon the completion webhook, run either the export webhook or downloads method for PDF Report
Download the PDF as a stream using fs
Redirect the user to the downloaded PDF file

Automation

Use a webhook and GitHub Automation to trigger the webserver when a new PR has been created
See Step 2
Use Octokit to post a comment on the PR with the attachment and possibly results %. - See GitCord Bot for a similar example

Closing for now - will re-open when we revisit.


Update command-menu.tsx

@aashahin Why remove the React. import?

clean code, instead rewrite them


Deprecate grounding_space specific C bindings in favor of abstract space bindings

This is a tracking issue for some work that ought to be done.
https://github.com/trueagi-io/hyperon-experimental/pull/284#discussion_r1182380081
Also, in the process, we should add an abstract iterator method for atoms within a space.
https://github.com/trueagi-io/hyperon-experimental/pull/284#discussion_r1182388623
And we should update the interpreter bindings while we're at it.
https://github.com/trueagi-io/hyperon-experimental/pull/284#discussion_r1182392232

Implemented in https://github.com/trueagi-io/hyperon-experimental/pull/302


MDAccordionListItem  -  annimation

The shadow used in annimation was not a good choice. It returns to other AccordionListItem when some AccordionListItem is closed.

@mathe1s Any suggestions?


systeminformer-nightly: Enhance pre_uninstall script

Relates to https://github.com/ScoopInstaller/Versions/pull/885#issuecomment-1418137949

[x] I have read the Contributing Guide.

/verify


tweaked tagline and made sure all files have license headers

Ref #400

No, just copy and paste by hand.

Maybe we should consider to have a license header auto-generator?

I don't expect to be doing this very often... don't think that's worth the effort...?


bugdown: Reenable -,+ to begin a markdown list.

This commit has a side-effect that we also now allow mixed lists,
but they have different syntax from the commonmark implementation
and our marked output. For example, without the closing li tags:
  Input    Bugdown     Marked
-------------------------------------

- Hello
Hello

Hello

+ World
World

World
+ Again
Again
Again

* And
And

And
* Again
Again
Again

The bugdown render is in line with what a user in #13447 requests.
Fixes #13477.
Testing Plan:
Manual + automated tests.
GIFs or Screenshots:
Note how the local echo (below) renders slightly differently from the bugdown output.

I've always thought that the mixed lists (and lists starting with +) are somewhat of a mixfeature.
But maybe this is a place that isn't worth diverging from commonmark on.  @andersk what are your thoughts?

You know what my thoughts are. Do not diverge from CommonMark. Diverging from CommonMark hurts users with expectations from other applications, hurts interoperability with other tools and libraries that produce or consume CommonMark, hurts ourselves because we have have to maintain our weird extensions in four places (Python-Markdown, Marked, to-markdown/Turndown, and mobile), and hurts our product because our extensions weren’t thought out carefully enough to interact in well-defined ways with the rest of CommonMark and with each other. If CommonMark has a misfeature, then users will learn to avoid it, and that knowledge will generalize across applications. If we have users who can’t figure out CommonMark, then let’s give them a plain text option. But we need to get out of the business of maintaining our own incompatible formatting language.

After some reflection, I think this isn't a common enough situation to justify diverging from CommonMark, merged, thanks everyone!


Full Exports: improve error handling during Bigquery load phase

during the bigquery data load the full export returns a meaningless error when the data could not be loaded:
Start of Boxalino Data Integration (DI) ...

Fatal error: Uncaught Boxalino\DataIntegrationDoc\Service\ErrorHandler\FailDocLoadException: Doc Load failed. Exception: Client error: `POST https://boxalino-di-full-xxx-ew.a.run.app/load/bq` resulted in a `400 Bad Request` response:
"Fail to load gs:\/\/prod_rtux-data-integration_xxx\/doc_order_F_20220109192640.json to BQ with exception: (truncated...)
 in /var/www/xxx/src/www/vendor/boxalino/data-integration-doc-php/src/Service/Flow/LoadBqTrait.php:40
Stack trace:
#0 /var/www/xxx/src/www/vendor/boxalino/data-integration-magento2/Service/Document/DiIntegrateTrait.php(62): Boxalino\DataIntegrationDoc\Service\Integration\Doc\DocOrder->loadBq()
#1 /var/www/xxx/src/www/vendor/boxalino/data-integration-magento2/Service/Document/DiIntegrateTrait.php(97): Boxalino\DataIntegration\Service\Document\Order\DocHandler->integrate()
#2 /var/www/xxx/src/www/vendor/boxalino/data-integration-magento2/Service/Document/DiIntegrateTrait.php(52): Boxalino\DataIntegration\Service\Document\O in /var/www/xxx/src/www/vendor/boxalino/data-integration-doc-php/src/Service/Flow/LoadBqTrait.php on line 40

please expose the underlying data error/exception
please add an (optional, opt-in) mode that ignores bad records (this is already possible using manual data loads in the bq gui)

please add an (optional, opt-in) mode that ignores bad records (this is already possible using manual data loads in the bq gui)
This is something to be reviewed at a later stage.
We recognize the value for "test" loads, howether there are more valuable integration options which are not allowed to fail. Most integrators never review the status of their data export (be it done via plugins or self-developed), allowing bad records to be skipped would wrongly lead to the idea that everything is fine in their integration.

sure. but as discussed with sylvain we won't implement a data filter on our side, and adding it to the exporter itself might slow things down. so I exposing the ignore-data feature as an opt-in export mode would solve this for now.

we won't implement a data filter on our side
This is not needed :) There will be a data format sanitization (it was a WIP update in the plugin as is)


Color picker showing only single color

Best to see a screen:

I'm using meteor + bootstrap-material-design npm package <- may be this interferes.
My code:

        <input type="text" value="#00AABB" class="form-control" />

let colorpicker = require('bootstrap-colorpicker');

Template.table_settings_view.onRendered(function () {
	console.log('hello');
	this.$('#playerColorPicker').colorpicker({
		format: 'hex'
	});
});

Same issue on Chrome and Edge
Mind that it does give different HEX value and a color preview in the tine box
Thanx for help

So I find out that I was not importing images

@spiotr12 https://github.com/itsjavi/bootstrap-colorpicker/blob/master/CONTRIBUTING.md#steps-to-submit-an-issue


[WIP] Create a streaming module for Monix over JDBC

Fixes #1228
Problem
Quill currently doesn't offer support for streaming APIs, and the only way of using an IO monad is through its own implementation. This change aims to provide support for effect monads from Monix (Task).
Solution
Created a context class (TaskStreamingContext) that abstracts JDBC over Monix. Also, it is provided a module (quill-streaming-cats) that provides abstractions over the effect monad, i.e., allows the integration of other implementations supporting cats-effect type classes.
Notes
This change is based on the code of quill-jdbc. Since the streaming concept is orthogonal to the underlying implementation, I'm not sure whether fixing the API under JDBC is the best approach to take here. Despite being deprecated, postgresql-async is still pretty popular, and other modules, such as quill-cassandra, quill-spark and quill-orientdb could definitely benefit from a streaming module.
Checklist

[ ] Unit test all changes
[ ] Update README.md if applicable
[X] Add [WIP] to the pull request title if it's work in progress
[ ] Squash commits that aren't meaningful changes
[X] Run sbt scalariformFormat test:scalariformFormat to make sure that the source files are formatted

@getquill/maintainers

Hi @cemelo. I don't see any files from the quill-streaming-cats directory. Did you forget to include them in the commit?

@deusaquilus sorry, I did forget to include them. I just took a look at the code you posted, and it looks way more complete than this one, as it does actual streaming. My work basically wraps JDBC calls in tasks to abstract these effects. Maybe we could work on a common interface to allow the other modules to have this too?

Hi @deusaquilus, thanks for reviewing this and for the thoughtful comments. Although I'm not a maintainer, I feel I should clarify further:

I stumbled upon that same problem while coming up with this implementation (I was still on v3.0.0-RC1). The only way I found to make it work was using a Local directly, as suggested by @oleg-py in monix/monix#595.
I agree.
I agree.
Unfortunately, that was necessary due to API changes. Another possibility would be to abstract the effect on a type (JDBC being Id or something) so the signatures of the execute... methods are polymophic as well.

@cemelo thanks for the notes! I'll respond:

That's so great to hear! We are definitely on the right track. Hopefully @oleg-py will reply with some insights.
:)
:)
I definitely think we need to introduce better abstractions into Context in the future. Let's open a new issue for this.

I think using an externally scoped Local together with Task as opposed to TaskLocal can be unsafe in some cases wherein context will not be correctly propogated.

If you use TaskLocal, it will fail fast if propagation is not enabled by doing _.enableLocalContextPropagation. If you use Local, it might just silently bug out if a user forgets to do that. Both will work if user does everything correctly.
I'll weight in with more comments later. I'm actually using my quill-monix in a little proprietary project, so I have some things to say from POV of my use cases.

I'm actually using my quill-monix in a little proprietary project, so I have some things to say from POV of my use cases.

Yes please!

Edit: @cemelo So it seems like the reason you ended up having to use Local was because TaskLocal did not provide a read method at the time. Is this correct? If yes, I think it's definitely preferable to go with TaskLocal now since read is supported and @oleg-py's issues have been resolved in monix 3.0.0-RC2.

Excelent! It was actually because the context was propagated but not cleared properly, so I ended up with some connections leaking to other tasks. There's a great possibility that I was doing something wrong, but using a Local was more reliable than TaskLocal when I tested it out.

It was actually because the context was propagated but not cleared properly, so I ended up with some connections leaking to other tasks.

In light of monix/monix#624 this makes perfect sense!!! @cemelo Do you have some concrete code samples where this issue is reproduced? I'd love to be able to stress-test TaskLocal!
Also, I really like the whole F[_]. It's a pity we can't add Sync directly to quill-jdbc since some companies that use Quill don't allow using cats. Otherwise we could abstract out executeQuery, executeQuerySingle, executeAction and some others into a common implementation for JdbcContext (using the ID monad like you said before), TaskStreamingContext, and potentially others. The alternative would be to implement something like Sync ourselves which I think is beyond the scope of this issue.

Also, I like @oleg-py's idea of having context factories that do SomeAyncJdbcContext(Literal, datasource): Task[SomeAyncJdbcContext] as opposed to just a direct constructor. Very frequently, the setup of a JDBC context requires various kinds of IO e.g. going out and getting something from a config file, setting up a external connection pool, etc...

Do you have some concrete code samples where this issue is reproduced?

I don't have anything at hand, but I can definitely pull something together.

It's a pity we can't add Sync directly to quill-jdbc since some companies that use Quill don't allow using cats.

It's a bit hackish but maybe we could have a trait to mix into JdbcContext that would add cats (or Monix, or Scalaz-zio), that being an extension of the context rather than a whole replacement. Just like we have runIO for quill's own IO monad, we could have a runF of some sort that would abstract the effect away. Like this we wouldn't need to force other users to pull a functional library into their codebase.

Hello.

It was actually because the context was propagated but not cleared properly, so I ended up with some connections leaking to other tasks.

Related to this, there is a known issue in TaskLocal about restoring to default value of the local var in the initial thread when reaching an async boundary. We didn't reach a fix for this (See https://github.com/monix/monix/issues/787). I remember there were some attempts on my part to try to fix this but @alexandru made this PR https://github.com/monix/monix/pull/647 to fix another issue with TaskLocal behavior and also ended up improving a bunch of things in the API. We could start to give it another shot if it is required now that those changes are already merged. Working with the Local directly seems to be a reasonable approach given the still buggy behavior of TaskLocal.

@leandrob13 Thanks so much for replying and clarifying! Its so great to have definitive feedback from the experts!
@cemelo In that case we'll work off of your implementation with Task + Local and I can integrate my ResultSetIterator in order to make a streaming implementation.

@deusaquilus sounds good. 😁

Shoot! Was refactoring JdbcContextBase to have execute... methods be common by using Result[T]=T and def executeQuery[T](...)=Result[List[T]] etc... and ran into this:
https://github.com/scala/bug/issues/8356.
Basically, the macro compiler fails to resolve Result[List[T]] into Result[T] for the run(...), methods unless there is an explicit return type annotation. That is to say, we need to do def executeQuery[T](...)=List[T] etc...
I'm going to need to have some kind of nasty workaround by having executeQueryDelegate etc... which has the correct typing and then executeQuery in each context implementation that forcibly changes the return type annotations.

Okay. Did some work on this PR tonight. I renamed #1263 to "Create a streaming module for Monix over JDBC - combined approach" since it now includes ideas from both @cemelo and @oleg-py. A couple of notes:

The JdbcContextBase.execute... methods are now completely reuseable. In order to make this possible, I created a helper called Effectable which can wrap things into a given context (e.g. Task) or leave it unwrapped based on the Result[T] type.
The AsyncJdbcContext now uses @cemelo's approach i.e. Task + Local.
Streaming also works in the test. @cemelo, have I bracketed this correctly?
TranslateContext also is integrated into the async module. It has a respective AsyncTranslateContext which also wraps it's result-types into a Task.

@cemelo and @fwbrasil please have a look. I will continue with unit testing.

Hey @cemelo. Are you sure the transaction method works correctly?
When I do something like this:
for {
  _ <- testContext.run(qr1.delete)
  e <-
    testContext.transaction {
      Task.sequence(Seq(
        testContext.run(qr1.insert(_.i -> 444)),
        Task.eval { throw new IllegalStateException }
      ))
    }.onErrorHandleWith {
      case e:Exception => Task("IllegalStateException")
    }
  r <- testContext.run(qr1)
} yield r

Then r does not come out empty.

Hi @deusaquilus, sorry, silly mistake.
In withConnection, I forgot to wrap currentConnection.get in a Task:
protected def withConnection[T](f: Connection => Task[T]): Task[T] = {
  for {
    maybeConnection <- Task { currentConnection.get }
    result <- maybeConnection match {
          case Some(connection) => f(connection)
          case None =>
            Task(dataSource.getConnection).bracket(f)(conn => Task(conn.close())).executeOn(transactionScheduler)
        }
  } yield result
}

I think we should concentrate on #1263 and close this PR, what you think?

Streaming also works in the test. @cemelo, have I bracketed this correctly?

I think so. Making the change above should fix the problem with context propagation.
Thanks for working on this!

Yeah, I was wondering how as soon as you do this it suddenly starts to work.
for {
  _ <- testContext.run(qr1.delete)
  e <-
    testContext.transaction {
      Task.sequence(Seq(
        // testContext.run(qr1.insert(_.i -> 444)),
        Task.eval { testContext.run(qr1.insert(_.i -> 444)) }.flatten // wrap in a second task and it works
        Task.eval { throw new IllegalStateException }
      ))
    }.onErrorHandleWith {
      case e:Exception => Task("IllegalStateException")
    }
  r <- testContext.run(qr1)
} yield r

Now since I made your change it works. I'll continue adding the other tests. Hopefully @fwbrasil will have some time to review soon! I'm very excited to merge this.

That's because since run is translated to a call to execute..., when withConnection was called  currentConnection.get was being eagerly evaluated, outside of the Task definition. So, it was always None unless you wrapped run in another Task like you did.

So I advise against mandatory executeOn - this can at least be added later by developer, even with less granularity, but can never be removed. I also advise against passing Scheduler as an implicit.

I disagree with @oleg-py on this regard. If you use an embedded DBMS or run it on the same machine, the context switch might not be negligible. However, that's not the common case IME. Most heavy workflows use external servers to host their data, usually with some kind of replication. Even the simplest query in this case might be an order of magnitude more time complex than switching context. The same applies to transforming ResultSets to Scala classes. Also, when you have complex queries and some traffic, you might end up with a lot of threads blocked for some period of time, which will affect the app's responsiveness, especially when you consider that most people use Scala's global EC by default.
Having Scheduler as part of the constructor signature will, IMO, signal to the developer that it is a best practice to have a separate scheduler for DBIO operations and you won't need to add executeOn on every operation. The latter, if you use some DB abstraction pattern (e.g. Repository), will require the user to pass on the scheduler to every such class, instead of having it on a single place.
Finally, if the developer chooses to ignore the best practice, they might simply assign the same global scheduler as the transactionScheduler.

Good point. I'll remove it. @cemelo, just double checking... is .executeOn(transactionScheduler) necessary to prevent connection leaks or is it just there to segment a different connection pool?

IIRC, you need at least an async boundary in order to properly clean the Local ref.

Is Task.deferAction in using necessary when using Local instead of TaskLocal?

No, that's just a workaround for executeOn bug. That is fixed if you're targeting monix RC2+ (on my project, we haven't upgraded yet)

Having Scheduler as part of the constructor signature will, IMO, signal to the developer that it is a best practice to have a separate scheduler for DBIO operations and you won't need to add executeOn on every operation

I don't disagree about that if it is not implicit. If it's implicit, it's more likely for user to just pass in whatever is easy to import.
The Runner didn't have default value for the same reason: to make users aware of the fact they have to choose an option.
As another example, fs2 has similar option regarding InputStream conversion: you pass blocking ExecutionContext explicitly, and it gets ContextShift[F] to return back, as an implicit.

Finally, if the developer chooses to ignore the best practice, they might simply assign the same global scheduler instead of a different transactionScheduler.

And that is a question of whether monix would optimize away the unnecessary thread switch or not. With Runner, the user is in control: you can add blocking { ... }, async boundaries, scheduler switches, whatever and then test your actual application to see what difference it makes.
Runner approach simply gives you more control than Scheduler, with overhead negligible compared to context switching (1 function call with a monomorphic call site).

IIRC, you need at least an async boundary in order to properly clean the Local ref.

I think we're going to need that fixed in Monix anyway. I'll try to take a look this weekend.

@deusaquilus
At this line I call .asyncBoundary. I thought that was enough to force an async boundary.
https://github.com/getquill/quill/blob/a5058ccfa5360bc5a69030582cf92d11b4763c8a/quill-streaming-monix/src/main/scala/io/getquill/TaskStreamingContext.scala#L67

@cemelo It looks like this works because forceAsync=true by default. If forceAsync=false, even a .asyncBoundary will not help you in most cases. I'm thinking we should explicitly specify forceAsync=true for this reason.
@oleg-py I see your reasoning about how Runner is a more powerful abstraction. The one clear caveat that I see with Runner is that since this class is Applicative as opposed to monadic, you can only wrap the most inner Task (i.e. inside withConnectionDelay) with your desired Scheduler. Any further tasks that are flat-mapped into (inside transaction etc...) can't be done this way; this is where the executeOn way is better. Say we want to have everything in transaction have in pool-A, (our DBIO logic) and everything outside of it in pool-B (our external App logic). Once we get back our Task from transaction and do a executeOn(poolB) (or runSyncUnsafe(...)(poolB)) everything inside transaction other then the first Task will be assigned to pool-B:
val ctx = TaskJdbcContext(..., new Runner { def apply = Task.executeOn(poolA) })
val transactionalResult = ctx.transaction(
  Task.(doSomething)  // Will run in pool-A but the others...
    .flatMap(result => doSomethingWith(result)) // Will run in pool-B
    .flatMap(result => doSomethingWith(result)) // Will run in pool-B
)
transactionalResult.runSyncUnsafe(...)(poolB)

Here's a really simple example:
val p1 = Scheduler.fixedPool("poolA",4)
val p2 = Scheduler.fixedPool("poolB",4)

Task((Thread.currentThread.getName)).executeOn(p1, forceAsync=true)
  .flatMap(n => Task.eval(n + " -> " + Thread.currentThread.getName))
  .flatMap(n => Task.eval(n + " -> " + Thread.currentThread.getName))
  .runSyncUnsafe(Inf)(p2, CanBlock.permit)

// res57: String = "poolA-1636 -> poolB-2566 -> poolB-2566" (

This means that if we want to use Runner, it needs to have a second apply function that takes Task[T] which I am fine with. The trouble is, if the user decides to implement it as Task(t).executeOn(..., forceAsync=false), then the code inside transaction that clears that connection will not happen and connections will leak! Any thoughts?

Hi Guys,
I've worked on integrating many of these suggestions into #1263. Please have a look at #1263 code and see if your use-cases can be satisfied. As usual, comments are greatly appreciated. Here are my individual responses:
@oleg-py

I have integrated Runner into #1263. In order to avoid replicating the code in JdbcContext, I extracted the execute... methods into a JdbcContextBase that takes a ContextEffects method which among other things, provides a applicative called wrap transforms the conn:Connection => T methods into conn:Connection => Task[T] etc... The natural place for Runner is as an implementation of ContextEffects. I'd appreciate if you could have a look at AsyncJdbcContext and see if you think there should be more versus less usage of wrap versus a straight Task.eval. Particularily, in places where I bracket conn.setAutocommit(false) -> ... -> conn.setAutocommit(prevValue).
I think ContextFactories is a very powerful abstraction and a great way to save on boilerplace in the context implementations. However, using this introduces additional hassles for clients trying to use these contexts. For example, no longer can you do:object testContext extends PostgresAsyncJdbcContext(Literal, "testPostgresDB") with TestEntities
// ... because the constructor `PostgresAsyncJdbcContext(Naming, String)` is now missing.

That means that the Quill client code now needs more boilerplace, and I have to choose whether boilerplate goes in framework code versus client code, I think framework code is definitely the better place.
The idea of having a general cross-framework streaming abstraction is a very alluring one. Unfortunately I don't think that such a thing exists. If anything, the reactivestreams Publisher class is probably the closest thing so I am thinking of adding this to StreamingContext:def publish[T](quoted: Quoted[Query[T]], fetchSize: Int): Publisher[T]

However, this means that reactivestreams now has to become a dependency of quill-core which I'm not entirely convinced is a good thing.

@cemelo

I think I have found cases where .asyncBoundary will not actually force a async boundary to take place. This is I added the boundary and schedule methods to Runner. The client now has full control over these things. Alternatively, there is a simple Runner.using(Scheduler) method which allows the user to pass in their own scheduler.
Since Runner both implements wrap and schedule methods, a user-defined scheduler will be added at the outermost parts of withConnection and transaction. This solves the poolA/poolB problem described above.

@deusaquilus Great job!

However, this means that reactivestreams now has to become a dependency of quill-core which I'm not entirely convinced is a good thing.

I'm not sure that's a bad thing. JDK 9+ has the Flow API, which corresponds to the Reactive Streams Spec, and RS became standard when it comes to streaming on the JVM.

I think I have found cases where .asyncBoundary will not actually force a async boundary to take place.

IMO, that's a bug on Monix's part. I could be wrong, but it doesn't make much sense in having a method that explicitly asks for an async boundary not creating one. I'd love to check out those cases. Would you care share them?

This solves the poolA/poolB problem described above.

Excellent.
Regarding use cases, mine is the simplest possible atm. Our app has Monix from top to bottom (except on GraphQL/sangria), and quill was one of the dependencies that didn't support effect abstraction. In the future I might need to use Postgres' LISTEN/NOTIFY, but even their JDBC driver does not support that without polling anyways.

Closing via #1263. Thank you so much @cemelo and and @oleg-py for the awesome dialog! It was really great to see a consensus being reached that allowed us to move forward quickly. Also thank you @leandrob13 for providing input!


Add mocking return in tests

We should mock the callBackWithRandomness and finish out the testing, and also for API calls.

Ideally, we also listen for the events to fire instead of our "dumb" solution of sleeping.

Fixed in #80


CLANG has different casting behavior with intermediate inf

from https://github.com/tinygrad/tinygrad/issues/7421#issuecomment-2453046963
CLANG=1 python -c "from tinygrad import Tensor; print(Tensor([30000], dtype='half').mul(200).float().item())" returns 6000000.0 which is larger than max fp16.

For some reason it works fine when .numpy() is called
from tinygrad import Tensor
print(Tensor([30000], dtype='half').mul(200).float().item())
t = Tensor([30000], dtype='half').mul(200)
t.numpy()
a = t.float().item()
print(a)

6000000.0
inf