Add support for multitype search and eager loading

Although searching across multiple types could be previously done with using a comma separated string for the type, the eager loading would still assume only one type was searched for.  This patch fixes this by grouping the results by type, then performing one query per type to eager load the actual records.

Hi Dylan,
sorry for such a delay with my answer. I have several remarks regarding the feature, and couple of questions. So, questions first:
It seems not so common to return instances of multiple classes from a single search? How do you handle incompatible model interfaces, etc? I can imagine that it's more common when using single table inheritance or such.
Note, that usually, it really makes sense to leave Tire return the Item instances, and work with those, especially if you're only displaying the data to the user. I'd be very curious to hear arguments against such approach, because that's and advice I keep giving to users.
Now, regarding the implementation. I think I won't surprise by describing the implementation as very complex, very hard to follow, and solving an apparent edge-case.  I'm just trying to keep the Tire codebase approachable, and not cluttered, for the longer term. Anything which adds "dead code", something which is hard to change, refactor, extract is a huge liability.
It certainly does not help that the Collection#results method is such a beast, and quite convoluted already. It should be refactored, extracted into smaller methods, into a module or class, so anybody trying to change the behaviour -- as you're doing -- would have to overload just one or two methods (and decided if s/he would like to keep them private, or publish them in karmi/tire-contrib, etc.)
Now, speaking practically. I have tried to reconstruct your case, and this is what I came up with, inspired by your code: https://gist.github.com/1312996.
It seems to me it's doing what it should. If I were you, I would put such code into a Ruby module, including it into the application, using the low-level Tire DSL/API, and not the ActiveModel integration directly. That way, you'd have tight control on the logic, you could fine tune the code structure or performance without hanging in thin air, waiting for the upstream to take your changes, maintaining your fork, etc. Based on my experience with eg. CouchDB gems, I'd very much prefer such approach over constantly "fixing" an external library...
I'll gladly hear any opinions and feedback on this...

Searching across multiple types to me didn't seem like an edge case.  It allows a search field to be present as part of the layout (i.e. available on any page) without having to navigate to a section of the site before searching.  This could be used to search for tv shows and movies, articles and comments, blog posts and other pages, etc.
I do agree that it is best to avoid loading data from the database, if possible, and just use the results directly to display the data.  However, I am dealing with an existing codebase that is currently using Sphinx, and expects to be working with models.  Displaying these results is also non-trivial, because I am developing for a platform which provides the ability for custom search results pages to be uploaded as liquid templates.  Obviously this isn't the typical use case, but Tire already seemed to have the ability to load models from the database, so I thought the code would be useful upstream.
I appreciate your feedback, and understand if you don't want to maintain the code for eager loading multi-type searches.
Also take note of the commit that allows the search to gracefully handle missing records.  It would be a bad user experience to have a search fail just because one of the results can't be found.  Of course, without multi-type search support, the code wouldn't matter to me, since I will need to do the loading externally.
I am already using the Tire.search, not the ActiveModel integration directly.  The :load parameter isn't handled in Tire::Model::Search, it is accessible from Tire.search.  I could move the functionality to a wrapper, although the fact that Tire::Search::Search changes Configuration.wrapper would need to be fixed.  Likely I will move the code to my own module as you mentioned, not call tire search functions directly, and handle eager loading there.

Hi,

Searching across multiple types to me didn't seem like an edge case. It allows a search field to be present as part of the layout (...) This could be used to search for tv shows and movies, articles and comments, blog posts and other pages, etc.

indeed. That's a very common and valid scenario. In this scenario, and precisely in this scenario, I'd work work with the shallow Hash/Ostruct-like instances of Item, for displaying the content snippets and links to results. (Tire tries hard to make eg. URL helpers work.)

I do agree that it is best to avoid loading data from the database (...) existing codebase that is currently using Sphinx (...)

I can imagine. Thinking Sphinx, while unbelievably polished and well interfaced library, instilled some pre-conceptions into people's mind how search should work within Rails, and in Ruby in general. With ElasticSearch, many of these pre-conceptions are not justified, and in many cases they are downright false.
When we have the ability to return content at will from the engine, it is just wrong to load data from the database. I have yet to hear a compelling argument otherwise.

Displaying these results is also non-trivial, because I am developing for a platform which provides the ability for custom search results pages to be uploaded as liquid templates. Obviously this isn't the typical use case, but Tire already seemed to have the ability to load models from the database, so I thought the code would be useful upstream.

If that is the case, I think this is another, quite strong reason to exploit ElasticSearch's ability to return “full” content for you. If we're talking about Shopify, it's on par with other features where ElasticSearch makes sense for you: easy multitenancy (account-based indices, configurable aliases with filters/routing, etc), distribution, powerful facets. You may also be the first to actually make use of the :wrapper option, since you could create your own, “enhanced” Item implementation.

Also take note of the commit that allows the search to gracefully handle missing records.

Yeah, I did notice it, and I did also notice you're using a where() method :) That may fly with ActiveRecord, but half of people using ElasticSearch/Tire are not using ActiveRecord-based models (me included), and moreover, I personally don't care about ActiveRecord a tiny little bit. If I'd developed Tire solely for my purposes, there would be no ActiveRecord support.

It would be a bad user experience to have a search fail just because one of the results can't be found.

That's true. I should look into that and guard against missing records. The chance of such failure seems to me quite small, however, for most use cases. In a system with high throughput, where records are destroyed quickly, it would be a problem.

I am already using the Tire.search, not the ActiveModel integration directly. The :load parameter isn't handled in Tire::Model::Search, it is accessible from Tire.search.

I think it's the other way round? But yes, Tire.search does not expose the :load option, since it does not have any notion of a “model”. I really think it's much more flexible and robust to implement specific use cases on top of the Tire API/DSL. That said, I am quite mad at the Tire::Results::Collection#results method. It is a mess and does not allow easy overload, monkeypatching.

When we have the ability to return content at will from the engine, it is just wrong to load data from the database. I have yet to hear a compelling argument otherwise.

It was just meant to be a transitional step.  A Tire::Results::Item obviously doesn't have the same interface as the model it represents.

If we're talking about Shopify, it's on par with other features where ElasticSearch makes sense for you: easy multitenancy (account-based indices, configurable aliases with filters/routing, etc), distribution, powerful facets.

I am already using account-based indices, plan to look into using aliases for non-disruptive reindexing, and there are plans to exploit the extra search features elasticsearch has.

You may also be the first to actually make use of the :wrapper option, since you could create your own, “enhanced” Item implementation.

Perhaps one that will create an ActiveRecord objects with the data from elasticsearch that simply act as a cache, but can still load data through relationships with other tables. I haven't looked into how necessary this would be for our use case though.

That may fly with ActiveRecord, but half of people using ElasticSearch/Tire are not using ActiveRecord-based models (me included), and moreover, I personally don't care about ActiveRecord a tiny little bit.

Well, I am doing my own eager loading now, so that's alright.

But yes, Tire.search does not expose the :load option

Check your codebase, because the option is passed through to Tire::Results::Collection.  The ActiveModel integration obviously didn't make semantic sense for multitype search (e.g. I don't want to do Product.search when I also want to search for other models).

When we have the ability to return content at will from the engine, it is just wrong to load data from the database.

It was just meant to be a transitional step. A Tire::Results::Item obviously doesn't have the same interface as the model it represents.

Yeah, it does not. However, for the type of listing I imagine one would end up with, the free-form Item instances would still be the best. You could eg. display a title (of movie, TV show, article, ...), specific fields where applicable (author of article), and a link to the result, via the link_to helper. In a "results" listing like that, there's generally no need to have the full model accesible?

Perhaps one that (...) can still load data through relationships with other tables.

Actually, a custom Tire::Collection class could be able to do that. If Tire would expose that as an option, then it would be trivial to implement logic like yours cleanly. That's why I was saying that the whole results loading, parsing, etc. stinks in the current codebase, and should be refactored...

Dylan, what should we do about this issue?

I added a commit to try to simplify the eager loading code.  Is it still too complicated?
As for the use of where() instead of find(), should I revert that change for this pull request?  I would like the code to tolerate missing records, but I couldn't find any implementation or documented interface for find in ActiveModel.  What documentation do you use to make sure Tire is compatible with other ActiveModel based implementations?

Hi Dylan, I ended up let this feature pass, for the time being. The whole Tire::Results::Collection.results method is complicated as it is, and this change would made it even more opaque and fragile. This method must be refactored, logic extracted to smaller methods, etc., before we can attempt for anything like this.
After that, a feature like yours should be easily supported, and everybody could decide if it's something she would like to share in upstream, either in core or in contrib.
Also, the whole approach of loading records from database seems suspicious to me (as already stated). Normally, there should be no need to do that, and certainly not in a use case like "I want to display links to various stuff when people perfrom search".
I understand the approach of working with the "real models" all the time is more convenient, and people are used to it by using libraries such as ThinkingSphinx, but I think ElasticSearch deserves more care and experimentation...

+1 to the important need to provide site wide searching ability out of the box.
I have no idea how to implement this though ;-)

ES/Tire make it easy to do multi-model searches, just do:
Tire.search ['articles', 'comments', 'whatever'] do
  query { string 'whatever' }
end

You just won't get the "real" models, but instances of Tire::Results::Item -- you have to take responsibility from there, and either work around that, or retrieve your models by yourself.


KEA not respecting DNS changes in subnet

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[X] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[X] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Describe the bug
When setting custom dns servers in dns field, kea is set to gateway address when "Auto collect option data" is enabled. Un-setting "Auto collect option data" and reloading custom DNS servers corrects the GUI to show custom dns server addresses, but leases are still being handed out original gateway address for dns.
To Reproduce
Steps to reproduce the behavior:

Go to Services > Kea DHCP [new] > Kea DHCPv4
Click on Subnets
Create subnet with option Auto collect option data enabled
Enter custom DNS servers that firewall is not using
From device refresh interface/reconnect/renew IP
Assigned DNS from DHCP will be that of the firewall
Disable Auto collect option data
Correct DNS server ip's in subnet
From device refresh interface/reconnect/renew IP
Assigned DNS from DHCP will still be that of the gateway and not of manually set dns addresses

Expected behavior
Disabling Auto collect option data should cause kea to use custom values entered into dns field
Describe alternatives you considered
Deleting and re-creating subnet at this time without "Auto collect option data" being enabled properly respects manually entered DNS addresses for client DHCP
Environment
Software version used and hardware type if relevant, e.g.:
OPNsense 24.1-amd64
Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (2 cores, 4 threads)
Using Unbound for gateway/firewall dns
*Edit
Words are hard and proper sentence structure is harder

Missed apply? the running config can be found in /usr/local/etc/kea/kea-dhcp4.conf, apply restarts the service, which means you can check the pid in top as well (should change after apply).

this one https://github.com/opnsense/core/issues/7183 should be fixed, when option data is configured as expected, it might be the client giving you a hard time, that's not something we can fix from our end unfortunately.

I confirm the error. DNS is not installed on clients with the "Auto collect option data" option enabled.

@KaiKimera best read the ticket and responses to help you debug your issue, the warning is harmless and is already fixed in the master branch as communicated earlier and your claim is the exact opposite as reported in this ticket. If the configuration file is correct, there's not much to look at from our perspective.


config.json not applying custom override

This is my custom config, i am trying to shorten or have less arguments in my shell but i only get a fixed 3 depth directories and no shortening in the name of the directorie, also mode option doesn't do anything at all.
{
    "segments": [
	"virtual_env",
	"username",
	"ssh",
	"cwd",
	"git",
	"hg",
	"jobs",
	"root"
    ],
    "cwd": {
        "args": {
	    "mode":"plain",
            "max_dir_size": 7,
	    "max_depth":3
        }
    }

}

This is my powershell now

Maybe the same issue as #433 ?


Allow Create OME Zarr structure to overwrite existing Zarr file

An issue that came up multiple times that has been confusing to users (cc @nrepina @al-mcintyre ) was that the Create OME Zarr structure tasks fails if the zarr file already exists. This comes up most often when a user is trying parameters, but something fails and they want to rerun the workflow.
Thus, the Create OME Zarr structure task should have an overwrite flag that is off by default. If it's set to True, any Zarr file that would match the new plate name is removed. But not other Zarr files in that folder or other files in the output folder.
(Note: Let's not delete the whole output folder. The user may be putting different outputs of different workflows in the same output folder)
If it's set to false and the output file already exist, we should throw a better error than the current zarr error.
(this currently occurs a lot, will occur less once we deploy running subsets of workflows, see https://github.com/fractal-analytics-platform/fractal-server/pull/784)

Default: overwrite=False
This is one of the "fresh-copy" kind of overwriting:

If the zarr group does not exist, proceed as usual (independently on overwrite)
If the zarr group already exists and overwrite=False, raise an appropriate error and exit.
If the zarr group already exists and overwrite=True, all its content should be removed before proceeding (ideally with zarr-API calls, rather than actual filesystem removals).

To be checked: what's the behavior of write_elem in case the element is already present? Does it expose some kind of overwrite option?
See https://anndata.readthedocs.io/en/latest/generated/anndata.experimental.write_elem.html

Documenting the behavior of zarr.group:
Script:
import zarr

group_1 = zarr.group("/tmp/group.zarr")
group_1.attrs.put({"key": "value"})
print(f"{group_1.store.path=}")
print(f"{group_1.attrs.asdict()=}")

group_2 = zarr.group("/tmp/group.zarr", overwrite=True)
print(f"{group_2.store.path=}")
print(f"{group_2.attrs.asdict()=}")

output
group_1.store.path='/tmp/group.zarr'
group_1.attrs.asdict()={'key': 'value'}
group_2.store.path='/tmp/group.zarr'
group_2.attrs.asdict()={}

Here is a slightly more complex example (based on the mode parameter of zarr.open_group), that achieves the expected goal:
import zarr
import os

def zarr_open_group_with_overwrite(*, path, overwrite):
    if overwrite:
        mode = "w"
    else:
        mode = "w-"
    return zarr.open_group(path, mode=mode)

path = "/tmp/group.zarr"

print("# Group does not exist")
assert not os.path.isdir(path)
group_1 = zarr_open_group_with_overwrite(path=path, overwrite=False)
group_1.attrs.put({"key": "value"})
print(f"{group_1.store.path=}")
print(f"{group_1.attrs.asdict()=}")
print()

print("# Group already exists, overwrite=True")
group_2 = zarr_open_group_with_overwrite(path=path, overwrite=True)
print(f"{group_2.store.path=}")
print(f"{group_2.attrs.asdict()=}")
print()

print("# Group already exists, overwrite=False")
try:
    open_group_3 = zarr.open_group("/tmp/open_group.zarr", mode="w-")
except zarr.errors.ContainsGroupError as e:
    print(f"group_3 was not created. Original error:\n\t{str(e)}")

With output
# Group does not exist
group_1.store.path='/tmp/group.zarr'
group_1.attrs.asdict()={'key': 'value'}

# Group already exists, overwrite=True
group_2.store.path='/tmp/group.zarr'
group_2.attrs.asdict()={}

# Group already exists, overwrite=False
group_3 was not created. Original error:
	path '' contains a group

I think the last version to the last comment (warning, I edited it a few times) works as intended.
The mode values listed in open_group are:

‘r’ means read only (must exist);
‘r+’ means read/write (must exist);
‘a’ means read/write (create if doesn’t exist);
‘w’ means create (overwrite if exists);
‘w-’ means create (fail if exists).

And the relevant ones for us (upon group creation) are:

w, if we want to overwrite an existing group
w- if we do not want to overwrite an existing group

Note that a is not relevant upon group creation, since it would clearly not comply with an overwrite=False scenario but also it would read-in an existing zarr group when overwrite=True (without the "full-refresh" that we need in this case).
The intended behaviors are achieved:

If overwrite=False and the group does not exist, we simply create it
If overwrite=True and the group does not exist, we simply create it
If overwrite=True and the group already exists, we replaced it with a new empty group
If overwrite=False and the group already exists, we fail with a relevant error

Looks promising! Thanks for documenting this @tcompa

Makes sense to me for how we're using it. Instead of doing this in every task, having that abstraction seems logical.
Also don't have better naming ideas

The only (minor) improvement that comes to mind is that we could wrap zarr.open (https://zarr.readthedocs.io/en/stable/api/convenience.html#zarr.convenience.open) instead of zarr.open_group, and we'll end up with a function zarr_open_with_overwrite which works for both groups and arrays.

To be checked: what's the behavior of write_elem in case the element is already present? Does it expose some kind of overwrite option?
See https://anndata.readthedocs.io/en/latest/generated/anndata.experimental.write_elem.html

I could not find a simple way of instructing write_elem to behave as expected, therefore I created another wrapper (write_elem_with_overwrite - see https://github.com/fractal-analytics-platform/fractal-tasks-core/commit/66341f1d26fdf1d854cd4061174e45a7f77d8498) where I check the existence of the sub-group explicitly.

This issue is in principle solved by #499 (apart from the lack of tests).

Looks great. On the write_elem wrapper: can we take this opportunity to make this a broader wrapper that handles more of the table writing? Write_elem seems like a low level wrapper function. Would be great if tasks can just call a “write_table” or something like that with some parameters. Currently, many task replicate similar habdling of the table metadata, updating the list of tables, checking for existing tables etc.
This would be a good opportunity to generalize this and have a useful wrapper that sets the correct metadata for those tables, but that someone building a new task then doesn’t have to think about


Correction for raw affiliation Sciences Po, Rennes, France

Correction needed for raw affiliation Sciences Po, Rennes, France
raw_affiliation_name: Sciences Po, Rennes, France
new_rors: 01fmctt82
previous_rors: 05fe7ax82
works_examples: W3083951893

This issue was accepted and ingested by the OpenAlex team on 2024-10-10. The new affiliations should be visible within the next 7 days.


[FEATURE] Add environment variable to disable user registration

To share my resume via a link (which I would like to do because the resume created by your application is awesome), I am required to open my website up to public internet access, allowing others to access the page, register an account, and host their resume on my server/domain as well.
It would be great if there were an ALLOW_REGISTRATION environment variable that could be set to true or false (true by default), so this feature could be enabled or disabled as needed!

Introduced the PUBLIC_FLAG_DISABLE_SIGNUPS flag. You should be able to set this value in your ENV which can enable or disable the registration button on the landing page.

This is great (confirmed it's all working), thank you for making the update so quickly!


[Autocomplete] Improve the documentation on autocomplete/autofill

[x] I have followed (at least) the PR section of the contributing guide.

Update Autocomplete component documentation for Issue
Closes #22443

@dan-mba It's a great first pull request on Material-UI 👌🏻. Thank you for working on it!


Need a new version for v3.3.0 support

https://github.com/dotnet/orleans/pull/6580 added a new property for IStorage<TState> which is not implemented by current version of TestKit:
System.TypeLoadException: Method 'get_RecordExists' in type 'Orleans.TestKit.Storage.TestStorage' from assembly 'OrleansTestKit, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null' does not have an implementation..
This property will be included in v3.3.0 by https://github.com/dotnet/orleans/pull/6686

Released as 3.1.3. I opened https://github.com/OrleansContrib/OrleansTestKit/issues/98 as a follow-up. We should be able to provide a working implementation of the RecordExists property.


Pressing power button causes a blank figure

Pressing the power button (toggle interaction) causes the whole figure to become blank, instead of just disabling interaction. Difficult to reproduce this every time. Tried with both Firefox and Chrome, and in some cases (mostly Firefox), the button worked as intended. In some cases the plot line is still visible, but the axes and labels disappear.
Tested on jupyter lab. My versions are the following:
matplotlib                2.2.2                    py36_1    conda-forge
ipympl                    0.2.1                    py36_0    conda-forge
jupyter_client            5.2.3                      py_1    conda-forge
jupyter_core              4.4.0                      py_0    conda-forge
jupyterlab                0.32.1                   py36_0    conda-forge
jupyterlab_launcher       0.10.5                   py36_0    conda-forge
@jupyter-widgets/jupyterlab-manager
        @jupyter-widgets/jupyterlab-manager v0.35.0  enabled  OK
Firefox 61.0.1
Chrome 67.0.3396.99

I confirm this bug and that it's also difficult to reproduce.

I get this from time to time as well, at the same time the save button generates a blank png file.


Merge from dmd

Failed the runnable/test_shared test.  Going to wait a bit and try to merge again to see if it is fixed.


got None xirr with test codes

I got none based on the following codes, I wonder why?
from datetime import date
from pyxirr import xirr

dates = [date(2024, 11, 21), date(2024, 11, 28), date(2024, 12, 3)]
amounts = [-100, -100, 100]

# feed columnar data
print(xirr(dates, amounts))

@gp-bma,  In your example, it’s impossible to represent IRR as a float64 number that is small enough for pyxirr.xnpv to be close to zero with the precision of 0.001 (the default precision in pyxirr, which is not configurable at the moment).
# all absolute values are greater than 0.001:

pyxirr.xnpv(-0.9999999999999831, dates, amounts)
# -0.04792245325540989

pyxirr.xnpv(-0.9999999999999832, dates, amounts)
# -0.00961556861579993

pyxirr.xnpv(-0.9999999999999833, dates, amounts)
# 0.02895636985999772

# xnpv crosses zero in between [-0.9999999999999832, -0.9999999999999833]
# but it is no longer possible to increase the accuracy for float64:
pyxirr.xnpv(-0.99999999999998322, dates, amounts)
pyxirr.xnpv(-0.99999999999998324, dates, amounts)
pyxirr.xnpv(-0.99999999999998326, dates, amounts)
pyxirr.xnpv(-0.99999999999998328, dates, amounts)
# all yield the same result: -0.00961556861579993

One trick that can help is to scale the amounts by dividing each value by the absolute maximum amount:
scale_factor = max(map(abs, amounts))
scaled_amounts = [x / scale_factor for x in amounts]

pyxirr.xirr(dates, scaled_amounts)
# -0.9999999999999833

Thanks man. I will try the workaround.


Separate npm package for sass | css only

Hi, It would be really useful to be able to install only sass | css module. Why you may ask. Currently bootstrap depends on jQuery and popover which are listed in peerDependencies, but when installing bootstrap I don't want to install jquery just to get rid of npm warnings. In fact I don't remember last time when I was using jQuery.

Related to: https://github.com/twbs/bootstrap/issues/23557
please before openning an issue take time to search in our openned issues


locktt added

preparing kogito-tooling for productization
https://www.npmjs.com/package/lock-treatment-tool

@Ginxo So FDB failed, @tomasdavidorg is already looking into that.

@tiagobento FDB passed here. The issue is in the CI / build (windows-latest, 12.16.3, 1.19.1)


Filter manuals by organisation

On manual create, add current_users organisation_content_id to manuals links hash;
Not currently adding organisation_content_id to section links hash because you can access it from parent manual??
Trello Card

Things look good here. However, one feature missing is the ability to see the organisations of a manual on the index page.

There are a few places where stuff should be split across multiple lines. The styleguide says 'less than 80' but the rule was taken out of govuk-lint because sometimes keeping to shorter lines makes things less readable. (https://github.com/alphagov/govuk-lint/pull/7) I think in the places I've commented (and maybe a few others) it would help here.
Otherwise looks good to go 👍

oh... and it needs rebasing too 🙈

rebased and long lines fixed, thanks @gpeng !

@benilovj is this ready to be merged yet?

:+1:
A minor aside: this PR would have been a bit easier to review if some of the indentation changes and the test data refactorings were made in a different PR.


ircdHybrid: 8.2.24 -> 8.2.25

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/ircd-hybrid/versions.
meta.description for ircdHybrid is: '"An IPv6-capable IRC server"'.
meta.homepage for ircdHybrid is: '"http://www.ircd-hybrid.org/"

Checks done (click to expand)

built on NixOS
/bin/sh passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 8.2.25 with grep in /nix/store/23shqw5qlbvw0g17dk17l5cs5ldkd7v5-ircd-hybrid-8.2.25
directory tree listing: https://gist.github.com/b47fc9628ddd5617c3ea30602e7ddabb
du listing: https://gist.github.com/6bcc67852e9a0c4f95c7397c235a68e6

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

4 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
ircdHybrid

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/23shqw5qlbvw0g17dk17l5cs5ldkd7v5-ircd-hybrid-8.2.25 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A ircdHybrid https://github.com/r-ryantm/nixpkgs/archive/3746cb9fd24399176eab265b0b23f5bab49a1bb2.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/23shqw5qlbvw0g17dk17l5cs5ldkd7v5-ircd-hybrid-8.2.25
ls -la /nix/store/23shqw5qlbvw0g17dk17l5cs5ldkd7v5-ircd-hybrid-8.2.25/bin

https://github.com/ircd-hybrid/ircd-hybrid/blob/8.2.25/NEWS

-- Noteworthy changes in version 8.2.25 (2019-04-24)
o) The 'class::number_per_ip', 'class::max_local' and 'class::max_global'
configuration directives have been replaced with just 'class::number_per_ip_local'
and 'class::number_per_ip_global'. The 'class::max_local' basically was
redundant as it had the same functionality as 'class::number_per_ip'
o) Adding RESVs with wildcards no longer requires administrator privileges
o) The 'general::ignore_bogus_ts' configuration option has been deprecated
o) TLSv1.1 and TLSv1.0 are no longer supported and have been disabled in
the openssl and gnutls module
o) Minimum supported OpenSSL version is 1.0.1f now
o) Minimum supported GnuTLS version is 3.5.8 now
o) The 'serverinfo::vhost' and 'serverinfo:vhost6' configuration directives have
been deprecated. If you need to bind() a specific address you can specify one
in the connect {} block
o) The 'connect::vhost' configuration directive has been renamed to 'connect::bind'

Our service module template seem to use at least one deprecated option.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-in-distress/3604/4

Hm, no idea by now… (in particular, no idea if just dropping all the deprecated options is a good idea)

Newer version available now


Getting "imap_fetchheader(): Bad message number" when working on Office365 servers

I am adding this just for the future reference, so that folks that run into this problem like I did, know what to do, without losing a few hours of their life :)
After working properly for months, our script stopped fetching emails. The error we started getting was the above one, "imap_fetchheader(): Bad message number".  I hope it works for you too.
The exception was happening in the Query class.. This is the code in question, that was presenting with this issue:
$client = new Client($config);
$client->connect();
$folder = $client->getFolder('INBOX');
$messages = $folder->query(null)
    ->since($since->format("d-M-Y"))
    ->setFetchBody(false)->setFetchAttachment(false)->get();

Adding imap.option "message_key", and setting it to "number", resolved the issue.
// Appending this key to our configuration
$config['message_key'] = "number"; // Office365 servers require this, because, well, Microsoft.
$client = new Client($config);
$client->connect();
$folder = $client->getFolder('INBOX');
$messages = $folder->query(null)
    ->since($since->format("d-M-Y"))
    ->setFetchBody(false)->setFetchAttachment(false)->get();

Et voilà, works like a charm, emails started being processed again.
I tested this with the latest laravel-imap version, 1.4.2, running on:
Linux, Server - PHP 7.1.3
Virual Box, Linux - PHP 7.2.19

Hi @todorowww ,
thanks for your post! You could also set the message_key inside the config file :) Depending on the given "server features" you can choose between id, number and list.

Message key identifier option:
You can choose between 'id', 'number' or 'list'
'id'  - Use the MessageID as array key (default, might cause hickups with yahoo mail)
'number' - Use the message number as array key (isn't always unique and can cause some interesting behavior)
'list'   - Use the message list number as array key (incrementing integer (does not always start at 0 or 1)


OPSEXP-1980: Add support for importing certificates in the JRE

Ref: OPSEXP-1980

@gionn I tried addressing your comments and added a simple readme to the role. Let me know if that is sufficient.


chore(clearly-defined): Remove ORT's comment from curations

The custom comment was used as a work-around to document the provider the curation is coming from. But now that the resolved configuration contains the provider explicitly, this is not needed anymore.

Merging despite the unrelated ConanFunTest failure.


NullPointerException when trying to access unsupported OpenGL-methods

When trying to access a function that my graphic card doesn't support. Example:
glVertexAttribDivisor(0, 0);

causes a NPE:
Exception in thread "main" java.lang.NullPointerException
at org.lwjgl.opengl.GL33.glVertexAttribDivisor(GL33.java:921)
    ...

The reason is that GL33.getInstance() returns null if GL33 is not supported.
Instead of throwing a NPE, an exception with a good description should be thrown. Maybe a good place to implement that would be the getInstance()-method of GLXX by checking for null – but that would introduce massive code duplication for every GLXX-class.

This a known issue (see #54), it would indeed be better to throw a more descriptive exception.


Tutorial WIP

This should be basically good to go @razor-x

Cool, I want to try and run it myself on codespaces :)

@billfreeman44 Do you think we can do this name change? https://github.com/pureskillgg/dsdk/pull/8#discussion_r842201511

@billfreeman44 Do you think we can do this name change? pureskillgg/dsdk#8 (comment)

Yeah. I'll add that now.

@billfreeman44 Do you think we can do this name change? pureskillgg/dsdk#8 (comment)

Fixed


Add support for vertical split preview

Tittle is self explanatory.

Hey, interesting idea. Do you want to display multiple previews in parallel?

No, I mean the main layout with the list of entries and the preview. Instead of an horizontal split, a vertical one.
like https://github.com/junegunn/fzf

Ah, I see. This would definitely be more compact, but also needs many code changes. I can add it to my todo list, but do not expect it to land in a release in the near future.
The main problem is that the current code is too simple for this kind of feature. Every terminal line only gets one element. I think we need a mechanism to place boxes into the terminal to make this right. With this the preview box could be placed at different locations in the terminal.

I just skimmed to the code briefly and I am not sure how interactivity is implemented. Is it done only by outputing escape sequences and calls to termios for things like flushing the screen?
I should say that I am not too familiar with with low level text terminal protocol.
I see there the signal module is used, probably to take in key presses, so I believe there should be a main loop somewhere to do this?
I am getting a bit off topic. Where I wanted to get is that perhaps this program has reached the point where being based on ncurses would start to make sense. And at that point, spiting the screen in boxes is relatively simple. Here's an example:
https://www.viget.com/articles/c-games-in-ncurses-using-multiple-windows/
It's in C, but it is straightforward to port to python as the wrapper retains the functions names.
But I totally understand the motivation for keeping things low level instead of relying on a UI library (ncurses).  Notice however, that ncurses is part of python's standard lib.
This module is still small and relatively unknown, but I think its usefulness is tremendous. I have been using percol for many years and rely on it to an almost abusive level in shellscripts. The other day I needed to port a script I wrote to python and, while percol can be used as a python library, I wanted preview functionality. So I googled a little bit and found this module. In a few minutes, and with just 3 lines of code or so, I had a nice UI to run some tests on a project I am working on. I am mentioning this because it is very close to be a just perfect module to hack together quick terminal UIs.
Here are a couple of example applications using fzf

https://github.com/joehillen/sysz
https://github.com/plainas/experiments/tree/master/shellscript/jobsearch

Both are just quick shellscripts and rely on a bit hacky usage of fzf. While sometimes a shellscript is the best and most direct option, often times, doing these things in python opens many possibilities and becomes a bit cleaner in terms of string escaping  and such things.

I just skimmed to the code briefly and I am not sure how interactivity is implemented. Is it done only by outputing escape sequences and calls to termios for things like flushing the screen?
I should say that I am not too familiar with with low level text terminal protocol.
I see there the signal module is used, probably to take in key presses, so I believe there should be a main loop somewhere to do this?

The script uses tput to query the terminfo database for all needed escape sequences (moving the cursor, deleting lines, text formatting and so on) and then uses them to create the menu display; so yes, it is done by only outputing raw escape sequences depending on the used terminal emulator.
The signal module is used to catch terminal signals like SIGWINCH which is raised when the terminal size changes.
termios is only used to put stdin in a non-buffered mode and to suppress character output of pressed keys. This way, single key presses can be read from stdin in the main loop. So yes, there is a main loop to read key presses, change the internal state and repaint the menu.

I am getting a bit off topic. Where I wanted to get is that perhaps this program has reached the point where being based on ncurses would start to make sense.

ncurses is a very common library and should be available on every *nix host so it should be fine to depend on it. The reasons why I initially decided against ncurses were:

simple-term-menu started as a very simple menu implementation, so it felt wrong to use such a big library for a relative simple task (but as you already mentioned, this project got many more features over time).
AFAIK, ncurses only allows full screen applications (in the alternate terminal buffer). I wanted a solution which can be very compact and retains the previous screen contents. This makes it easier to embed simple-term-menu in other scripts (Python or Bash) which generate terminal output themselves.

If the second point is not true, then ncurses would be a real alternative for me.

This module is still small and relatively unknown, but I think its usefulness is tremendous. I have been using percol for many years and rely on it to an almost abusive level in shellscripts. The other day I needed to port a script I wrote to python and, while percol can be used as a python library, I wanted preview functionality. So I googled a little bit and found this module. In a few minutes, and with just 3 lines of code or so, I had a nice UI to run some tests on a project I am working on. I am mentioning this because it is very close to be a just perfect module to hack together quick terminal UIs.

Nice! :smile:

Here are a couple of example applications using fzf

I also use fzf every day. :+1: The idea for a preview window for this project came from fzf. I put the preview below the entries to gain more width for the preview lines. Don't know why I didn't thought about implementing another layout like in fzf...

Both are just quick shellscripts and rely on a bit hacky usage of fzf. While sometimes a shellscript is the best and most direct option, often times, doing these things in python opens many possibilities and becomes a bit cleaner in terms of string escaping and such things.

simple-term-menu can also be used in shell scripts. When you installed it with pip you got a simple-term-menu command. It either returns the selected menu entry by its exit code or prints it to stdout.

There are ncurses wrappers out there that support windows. I came across this one the other day which appears to be feature complete. I am not sure there are more out there.
https://github.com/unicurses/unicurses
But on that note, is support for windows really that important? I would guess windows usage is negotiable. The default python installation on windows doesn't even put the binary accessible to the command line environment.

I wanted a solution which can be very compact and retains the previous screen contents.

I am not sure this is the same,  but most applications that use ncurses, including a couple I wrote myself, restore the previous terminal state on finish.

There are ncurses wrappers out there that support windows. I came across this one the other day which appears to be feature complete. I am not sure there are more out there.

unicurses looks really useful!

But on that note, is support for windows really that important? I would guess windows usage is negotiable. The default python installation on windows doesn't even put the binary accessible to the command line environment.

A good question. I wouldn't use it in Windows cmd or powershell myself :sweat_smile: But some users requested it and there is even a version of simple-term-menu which works on Windows (but not on Linux any more, see the PR). I think most people use it on macOS and Linux.

I wanted a solution which can be very compact and retains the previous screen contents.

I mean something like this:

You can still see the previous terminal contents while using simple-term-menu. IMHO, it is a bit disturbing to open a full screen application for a menu selection.

I see. I agree it is less disturbing, specially in large screens. Sounds like the way to go is a way to draw boxes. Perhaps at the end of each repaint cycle, a box can be drawn on top of existing contents, on the right side.


Don't overwrite INFOPLIST_FILE setting with info path

Resolves #440.
Just added a check if for a config INFOPLIST_FILE is already set in settings. If it is it will not be overwritten with the generated Info.plist.
I also updated projectspec.md to reflect this change.
I did not add any tests, are they necessary?

Ok I will look into it! 👍
Thanks @yonaskolb


Duplicate layer logging with torch.nn.DataParallel(model)

Weights and Biases version: 0.8.26
Python version: 3.7.6
Operating System: Linux

Description
In the model tab, the table listing Name/Type/# Parameters/Output Shape shows multiple entries for each submodule (one for each GPU). So if I train on 8 GPUs, I will see 8 copies of each submodule, which makes it quite confusing and cluttered to read. This even happens when I call watch on the underlying single-GPU module via wandb.watch(model.module). I believe the correct behavior would be to only display a single copy of the model submodules, even if there are multiple copies of that model across the GPUs.
What I Did
wandb.watch(model)
model = torch.nn.DataParallel(model)
...

Hi Timothy, it looks like we're having some issues with PyTorch DataParallel. Thanks for reporting this. @raubitsj is working on improving this integration.

In the past year we've majorly reworked the CLI and UI for Weights & Biases. We're closing issues older than 6 months. Please comment to reopen.


No Instructions to enable AD Recycle Bin

The entire article talks about AD recycle bin, but no instructions are given to enable it, Neither there is any link to enable it.

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

ID: fd5fd02e-6f34-8301-ac3d-023c8aa95fce
Version Independent ID: 8e12cb08-cd75-f52c-6e15-6b14a5adc3b3
Content: Azure AD Connect sync: Enable AD recycle bin
Content Source: articles/active-directory/hybrid/how-to-connect-sync-recycle-bin.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@ranabanerjee15 Thank you for pointing this out . We will review and update the thread accordingly .

@ranabanerjee15 Thanks for the feedback. We have engaged the content development team for further investigation, they will verify and perform necessary changes in the document as needed.

The link at the end of the intro takes you to the content for enabling the recycle bin.
For information about the AD Recycle Bin feature, refer to article Scenario Overview for Restoring Deleted Active Directory Objects.

#please-close

@MicrosoftGuyJFlo , The link that you referenced, does not have any instructions on "How to enable AD recycle bin". It explains tombstone and other details. the following link should be added at the end which is missing
https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/adac/introduction-to-active-directory-administrative-center-enhancements--level-100-#active-directory-recycle-bin-step-by-step


Bugfix/deploy account with name

Closes #487
Description
This PR changes how the account is found in flow configuration through account name instead of existing method of filtering by account address.

For contributor use:

[x] Targeted PR against master branch
[x] Linked to Github issue with discussion and accepted design OR link to spec that describes this work
[x] Code follows the standards mentioned here
[x] Updated relevant documentation
[x] Re-reviewed Files changed in the Github PR explorer
[x] Added appropriate labels

Codecov Report

Merging #499 (7a8df7e) into master (46b19fd) will increase coverage by 0.06%.
The diff coverage is 91.66%.

@@            Coverage Diff             @@
##           master     #499      +/-   ##
==========================================
+ Coverage   54.99%   55.05%   +0.06%
==========================================
  Files          37       37
  Lines        2002     2007       +5
==========================================
+ Hits         1101     1105       +4
- Misses        757      758       +1
  Partials      144      144

Flag
Coverage Δ

unittests
55.05% <91.66%> (+0.06%)
:arrow_up:

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

Impacted Files
Coverage Δ

pkg/flowkit/contracts/contracts.go
67.60% <50.00%> (-0.52%)
:arrow_down:

pkg/flowkit/contracts/preprocessor.go
81.57% <100.00%> (+0.49%)
:arrow_up:

pkg/flowkit/contracts/resolver.go
87.87% <100.00%> (ø)

pkg/flowkit/services/project.go
51.72% <100.00%> (+0.33%)
:arrow_up:

pkg/flowkit/state.go
60.82% <100.00%> (+0.40%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 46b19fd...7a8df7e. Read the comment docs.


inventory processing adding software to device that is not part of the inventory taken

In GitLab by @jasonpagetas on Jul 3, 2024, 06:45
Uploaded inventory software does not match what is in interface. Devices that are not armbian are showing armbian items.

added 42m of time spent

mentioned in commit 3bceb66600404919ac32498ffa5cbb4f24fcced4

mentioned in commit f47b97e2a084e1acbfba733c910f3b8f4f764a36

still investigating.

added 1h 43m of time spent

added 1m of time spent

unable to re-create the bug. work needs to be done to add aditional tracing to assist in finding.

mentioned in commit 67f20ecb661b039092ad34b491c3a8a7296534db

investigating

marking issue as resolved as this issue does not occur now that the work from !39 has been deployed.

marked this issue as blocked by #76

added 2m of time spent

added 3m of time spent

problem has been observed although can not be reproduced. The issue may be the setup used to deploy the application.


i18n [nfc]: Document translation-sync process more.

See
https://github.com/zulip/zulip-mobile/pull/4901#issuecomment-883697861
for what prompted this.

Thanks for writing this down! Merging, with some additional changes.


Replace 1 minute wait with network connectivity checks and reboot remediation in run_startup_script.cmd.

These changes are to help Windows 2008R2/2012R2 import issues where on first boot the network needs additional time and/or a reboot to become fully functional.

Added checks for connectivity to metadata service and packages.cloud.google.com with 30 second wait for any failure.
-- If there are no failures the checks should completed in ~5 seconds and with failures it will wait up to 310 seconds.
Added final check of metadata service to determine if a reboot should be attempted to remediate potential network card/driver first boot issues.
Removed 1 minute wait at the beginning of the script as the connectivity check can wait up to 5 minute wait for connection failures.

Also logging to the x64 script that was already in the x86 script.

/hold (We're preparing a release, scheduled to ship Thursday)

/unhold - Zach recommended waiting until after Thanksgiving


Add pseudo price to plugin

With this changes it would be possible to save pseudo prices for customer related prices.
The pseudo price will be displayed in the frontend.
Please merge them and publish it with one of the next releases.
Please ask me for questions or if there are any problems with these changes.

Hey @LiaraAlis thanks for your PR :+1:
please have a look at my comments :wink:
It also seems that your branch is out-dated. please rebase your branch to the current master

Changes done. Hope they are okay. I have forked the repository today, so I can not see that my branch is out-dated.

I've updated my branch to the current master.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/PT-7276.
Please use this issue to track the state of your pull request.

Any news here? It would be nice if this feature would be added very soon.

hi @LiaraAlis
as this plugin is not officially supported by us anymore, the ticket has not a high priority in our workflow. but I will have a look, if I could push it a little bit :wink:

hey @LiaraAlis
Sorry for the late answer!
The corresponding ticket was closed. If this change is still relevant for you, please feel free to create a new PR.


Replace fmt.Print with proper logging

At some point we should replace all the fmt.Print with https://github.com/sirupsen/logrus or https://github.com/go-logr/logr

Oh, this looks really nice. Add some color, so it's clearer when we're printing errors, or something else.

Oh, this looks really nice. Add some color, so it's clearer when we're printing errors, or something else.

@noblica this is done right?

For the cloud CLI - yes. But not for the server CLI.


Add init calls in SerdeAPI trait methods

Replaces https://github.com/NREL/fastsim/pull/59

SerdeAPI docstring enhancements
all SerdeAPI::from_... methods call init now
fixed bugs that popped up

only check mc eff bounds if !no_elec_sys, this turned out to not be strictly necessary for tests to pass, but no sense in checking it for veh_pt_type == Conv
to_rust=True resulted in modern_max defaulting to zero instead of setting the parameter, fixed by uncommenting this line: https://github.com/NREL/fastsim/blob/a1ea3359804ad90db09578f0e8f4d71f32cf6e8e/rust/fastsim-core/src/vehicle.rs#L752
actually, do we want this to only be set if self.modern_max is not zero?

@calbaker This is ready for review. Doesn't feature the initialized field I proposed, which can be a follow-on PR.

Actually, going to switch this to draft and add the initialized field, I tested it out and it should be pretty easy

@calbaker I'm actually having second thoughts about the initialized field... I have rewritten this so that init only gets called in from_reader, and the methods that SerdeAPI::from_str calls (from_yaml, from_json, etc.). This covers all from_... functions in the codebase, and only calls init once. So, I don't think this field is actually very necessary.
So it seems like this initialized field check can be totally removed, with one very small caveat. I would also remove the init call that I added in RustCycle::push: https://github.com/NREL/fastsim/blob/2f4f4339b14bfa3d486575f7e9246ecaa44eff44/rust/fastsim-core/src/cycle.rs#L846-L862
Meaning if someone just uses push to add a single element it wouldn't run init. If we kept the init there, it would mean RustCycle::from_reader for the csv case would run init every time an element is added, see the code here: https://github.com/NREL/fastsim/blob/2f4f4339b14bfa3d486575f7e9246ecaa44eff44/rust/fastsim-core/src/cycle.rs#L722-L732
I think this small case is not enough to warrant initialized: bool at all. Can you think of any other reason to keep it?


feat(renovate): group docker pin digests

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 50.99%. Comparing base (9b5d3d2) to head (f45d673).
Report is 1 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #383   +/-   ##
=======================================
  Coverage   50.99%   50.99%
=======================================
  Files          73       73
  Lines        4334     4334
=======================================
  Hits         2210     2210
  Misses       1935     1935
  Partials      189      189

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


Add a new issue template for DX improvements / refactoring

DX = developer experience

@ykdojo you can assign this to me, i can do it. but lets discuss what fields should be there? are we going to keep it like other templates?

@rohitdasu keeping it like other templates sounds good.
keep in mind that we have #49 too

Sure


Decoding issue in f.read() - Win10, python 3.11.2

I installed wikmd in Windows 10, python3.11.2 (after a little bit of tweaking #97 )
I've got another error just after the wiki started:
Traceback (most recent call last):
  File "D:\Wiki (static)\wikmd\wiki.py", line 465, in <module>
    run_wiki()
  File "D:\Wiki (static)\wikmd\wiki.py", line 457, in run_wiki
    setup_search()
  File "D:\Wiki (static)\wikmd\wiki.py", line 442, in setup_search
    search.index_all(cfg.wiki_directory, items)
  File "D:\Wiki (static)\wikmd\search.py", line 87, in index_all
    content = f.read()
              ^^^^^^^^
  File "C:\dev\python\python311\Lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 4807: character maps to <undefined>

It seems that f.read() tries to decode the file as CP1252 whereas it is encoded as UTF-8.
EDIT
I solved it adding encoding="utf8" where files are opened, like:
with open(file_path, encoding="utf8") as f:

Maybe I'll make a PR if I don't get other errors.

Nice to see you solved it. Feel free to create a PR from it :)


amiri: 0.114 → 0.117

Description of changes
Fixes & improvements: https://github.com/aliftype/amiri/releases/tag/0.115; https://github.com/aliftype/amiri/releases/tag/0.116
Yet another fix: https://github.com/aliftype/amiri/blob/0.117/NEWS.md#amiri-0117-2022-07-01
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

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

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

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

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

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 179290 run on x86_64-darwin 1

1 package built:

amiri

Could you squash those into a single commit and update the title to match the versions, please?

Done.


Support for Visual Studio 2019

Visual Studio 2019  has been released. Can you support it please? :) Thanks!

it is available now: https://marketplace.visualstudio.com/items?itemName=vs-publisher-263684.GoEddietSQLt2019


Client response code acceptance is too narrow

For example, the following code is not specification compliant:
	switch resp.StatusCode {
	case http.StatusAccepted:
		// TODO(dmcgowan): make use of digest header
		return nil
	default:
		return handleErrorResponse(resp)
	}

In this case, the client should accept 2xx, 3xx as successful, unless otherwise called out in the specification (such as when different response codes mean different things).
This needs to be fixed an integrated into docker 1.8. @icecrime

Created a PR: https://github.com/docker/distribution/pull/750

Is this resolved, now that https://github.com/docker/distribution/pull/750 was merged?

#750 should resolve it. I created a PR to update the vendored dependency in docker/docker here: https://github.com/docker/docker/pull/15034

Closing now that the vendored dependency was updated in docker/docker.

Thanks!


JetSki does not update ocpinv.json if cloud is changed

If ocpinv.json exists, it is always used even if the cloud and lab are changed in group_vars.  This could result in smashing somebody else's cluster.
I also don't believe that the cloud names are tied permanently to a fixed set of machines; they are reconfigured as needed.  So one might get the same cloud ID for two different allocations, with the same result.
Unless the intent is that people be able to customize ocpinv.json, simply re-downloading it on each run might be safest.  If the intent is that people be allowed to customize it, keep a cached copy as a golden master with the following rules:

If the golden master is identical to the download, use the existing working copy as is.
If the golden master differs from the download, and the golden master is identical to the working copy, replace both the working copy and the golden master with the download.
If all three files are different, warn the user that the ocpinv.json file has been modified, and that it is out of date, and instruct the user to reapply the edits.

@RobertKrawitz Thanks for raising this issue. yes, the JSON file is stored in local to let user to change the order of inventory to choose provisioning, master, worker nodes, but the file content is going to be the same. I don't think user can customize anything else directly on this file, @smalleni correct me pls.
So we can add a logic to compare the local(working copy) and remote(downloaded) inventory and alert user if there is any conflict during any playbook execution. I don't see a need for another json file as golden master, could you please explain if I am missing something.

That's fine -- just mention that the working copy is stale and unless one knows what they're doing they should remove the working copy.


Add TemplateProject for generating cookiecutter

It's difficult to work on {{ cookiecutter.project_name }}.xcodeproj as it doesn't parse correctly as a project file. This change adds TemplateProject, which is editable as a normal Xcode project file, and a bin/generate script to generate the cookiecutter from it.
I haven't tried this, but seems like it should be possible to take this one step further, and dynamically generate the cookiecutter in hooks/pre_gen_project.sh. We could then add {{ cookiecutter.project_name }}/ to .gitignore, which would remove the duplicated changes in commits.

I haven't tried this, but seems like it should be possible to take this one step further, and dynamically generate the cookiecutter in hooks/pre_gen_project.sh.

Ok so cookiecutter doesn't like this.


contract name and instruction address missing in mythril's report output

Missing contract name and instruction address in mythril's output
From mythril.interfaces.cli.py:main(), the report variable contains all issues. Each of these issues hold fields for contract-name and the address of the instruction that raised this vulnerability. I see that the contract name is always 'unknown' and the address of the instruction is always set to zeroes.
How to reproduce?
Run ./myth -x tests/testdata/input_contracts/overflow.sol
==== Integer Underflow ====
Type: Warning
Contract: unknown
Function name: sendeth(address,uint256)
PC address: 600
A possible integer underflow exists in the function sendeth(address,uint256).
The subtraction may result in a value < 0.
In file: tests/testdata/input_contracts/overflow.sol:11
balances[msg.sender] - _value

DEBUGGING INFORMATION:
calldata_unknown[36]: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
calldata_unknown[0]: 0xa3210e8700000000000000000000000000000000000000000000000000000000
calldatasize_unknown: 0x4
call_value: 0x0
==== Integer Underflow ====
Type: Warning
Contract: unknown
Function name: sendeth(address,uint256)
PC address: 682
A possible integer underflow exists in the function sendeth(address,uint256).
The subtraction may result in a value < 0.
In file: tests/testdata/input_contracts/overflow.sol:12
balances[msg.sender] -= _value

DEBUGGING INFORMATION:
calldata_unknown[36]: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
calldata_unknown[0]: 0xa3210e8700000000000000000000000000000000000000000000000000000000
calldatasize_unknown: 0x4
call_value: 0x0
==== Integer Overflow ====
Type: Warning
Contract: unknown
Function name: sendeth(address,uint256)
PC address: 758
A possible integer overflow exists in the function sendeth(address,uint256).
The addition or multiplication may result in a value higher than the maximum representable integer.
In file: tests/testdata/input_contracts/overflow.sol:13
balances[_to] += _value

DEBUGGING INFORMATION:
calldata_unknown[36]: 0x8000000000000000000000000000000000000000000000000000000000000000
calldata_unknown[0]: 0xa3210e8700000000000000000000000000000000000000000000000000000000
calldatasize_unknown: 0x4
call_value: 0x0

The contract naming issue has been fixed with #469.
It seems to me though that the address is being initialized just fine? 600, 682 and 758


GH1129, Fix for sticky DebugReportCallbacks flags

Fixes #1129.  When a debug report callback was created, destroyed, and re-created using different flags, the default callback flags controlling enabled message types would not get unset.
Also fixed an issue with some debugreport debug messages not getting printed.

Updated for Courtney's comments and pushed to Master.

That matches the behavior we observed... DEBUG was sticky, but INFO was not.
On Thu, Nov 10, 2016 at 4:24 PM, Karl Schultz<EMAIL_ADDRESS>wrote:

@karl-lunarg commented on this pull request.
In layers/vk_layer_logging.h
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/1140
:

 } else {

     AddDebugMessageCallback(debug_data, &debug_data->debug_callback_list, pNewDbgFuncNode);

   debug_data->active_flags = pCreateInfo->flags;

The problem was that when a debug report callback was destroyed, the
active flags would get set to the flags used for the default callback. If a
callback was created again, the old OR statement (at old line 194) would OR
in the requested flags, which also picks up the flags from the default
callback.
The OR works for the first time a callback is created because the active
flags were set to zero when the debug_data structure was first created.
The problem report may be a bit misleading. I think that the actual
observed behavior is that when creating a callback after one was destroyed,
the flags for the new callback would already be set to the flags used by
the default callback. And since they were OR'd in, they appeared to be
stuck on. The only flags that would appear "stuck" would be the ones set by
the default callback. So for example, if the default callback sets DEBUG
and ERROR, if the app created the first callback with INFO only, then
deleted that callback, and then created another callback with ERROR set,
the second callback would have DEBUG and ERROR set, and not INFO. (I think

just from reading the code)

This is the primary problem this issue is addressing. I didn't dig into
the other changes about the Destroy path, and so Mark would have to explain
those.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/pull/1140,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ASZgKQGqAt7UC0NuehNUq6dhcfC4zBrTks5q86e-gaJpZM4Ku4Pa
.


Bump System.Net.Http to 4.3.4

To remediate security vulnerability in dependency System.Net.Http (as outlined here and here), bumped version to 4.3.4.

Codecov Report

Merging #144 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #144   +/-   ##
=======================================
  Coverage   86.00%   86.00%
=======================================
  Files          26       26
  Lines         786      786
  Branches       75       75
=======================================
  Hits          676      676
  Misses        109      109
  Partials        1        1

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6c06904...b0463e9. Read the comment docs.


Gulp consuming over 80% when running gulp with WPGulp

Bug Report
Expected Behavior
Normal amount of CPU usage
Actual Behavior
I have used Gulp with other setups several times before and everything worked fine. However, when using WPGulp it's consuming a huge amount of CPU.

I tried disabling the browser sync, thinking that that might be too heavy but it didn't reduce the CPU usage.
Steps to Reproduce
My setup is as follows:
Localhost on XAMPP
Downloaded Wordpress from the repository
Downloaded WPGulp using Curl
Node version: 10.8.0
Gulp version 3.9.1
Opened CMD in the project folder in htdocs.
I think that's it...
I'd appreciate any help I can get.
Thanks

node -v: 10.8.0
npm -v: 6.2.0

Operating system: Windows 10

I accidentally installed everything in the WP root, all is good now.
You can cancel this issue.

@AviKlein glad you figured it out. Make sure to try out the new beta in branch v2.0.0 it's ready just needs documentation. Also, if memory is ever an issue stop the PHP file watching it saves a bunch of it.
Peace! ✌


How to get this to work with a theme?

Hi :wave:,
Hi I'm pretty new to tmux and I'm trying to get this extension to work with the catppuccin theme.
I have tried to do the following: set -g status-left "#[fg=#000000]%R#{pomodoro_status}"
# ...

## Theme settings
set -g status-left "#[fg=#000000]%R#{pomodoro_status}"
set -g @catppuccin_flavour 'frappe'
set -g @catppuccin_date_time "%H:%M"

set -g @pomodoro_notifications 'on'        # Enable desktop notifications from your terminal

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
# ...
set -g @plugin 'olimorris/tmux-pomodoro-plus'
set -g @plugin 'catppuccin/tmux'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

I can see the timer in the status bar for about 1/2 second when I reload the config. Then it disappears. I suspect this is to do with the catppuccin theme but I'm not sure (https://github.com/catppuccin/tmux/blob/main/catppuccin.tmux#L149).

P.S. I looked at your comment here: https://github.com/olimorris/tmux-pomodoro-plus/issues/11#issuecomment-1386665769. But I was wondering if there was a way to do it without keeping my own copy of the theme.
Any help would be greatly appreciated. Thanks!
Full tmux config: https://gitlab.com/hmajid2301/dotfiles/-/blob/tweaks/tmux/tmux.conf

That is strange. I too am no Tmux expert and haven't come across this before. I'd advise removing all plugins, leaving the Pomodoro, then adding them back one by one. Maybe something is causing an overwrite

Closing this but feel free to open up a discussion.

I just wanted to comment that you can make this work using the custom config config instructions located here: https://github.com/catppuccin/tmux/tree/main/custom#module-template
I updated my .tmux.conf.local with the following:
set -g @catppuccin_custom_plugin_dir "$HOME/.local/share/tmux/custom"
set -g @catppuccin_status_modules_right "application session user host date_time pomodoro"

And I created the following script in $HOME/.local/share/tmux/custom/pomodoro.sh following the template/example.sh at the link above.
show_pomodoro() {
  local index=$1
  local icon=$(get_tmux_option "@catppuccin_pomodoro_icon" "🍅")
  local color=$(get_tmux_option "@catppuccin_pomodoro_color" "$thm_green")
  local text=$(get_tmux_option "@catppuccin_pomodoro_text" "#{pomodoro_status}")

  local module=$( build_status_module "$index" "$icon" "$color" "$text" )

  echo "$module"
}

Of note, I have other config items set, but these are what enabled seeing tmux-pomodoro-plus in my tpm managed catppuccin theme.


Support laravel 7

Support laravel 7

@matriphe Please merge, thx!

@matriphe you also need to create a release so people can use it

Thanks for the reminder @repat! I've released new version for it.


[WIP] Move structs to classes

Issue: Link
Short description
Move structs to classes.
Solution
Just change structs to be classes and do all the necessary changes to get it working. It shouldn't have any impact on the interfaces of these entities.
GIF

Looks good. A couple of things:

I guess you haven't finished yet cause there's still a lot of top level structs (a search and rename should make the job easier 😄 )
I would vote for making ProjectElement, PBXTarget and a PBXBuildPhase abstract classes. That would remove a whole bunch of duplicated code with the property declarations and the init contents. I'm not usually into large inheritance hierarchies, but it makes sense here, and we may as well match it to how Apple probably designed these classes in the beginning.
is there a specific reason to use the typed init from the dictionary init as opposed to setting the values like before? If it's because of the compiler complaining then you could move that dictionary init from an extension into the class

Replying @yonaskolb

Yeah, I'm more into doing it step by step and then fix the issues along the way. But in this case, search and replace would have been faster.
That sounds a great idea. I'm also against having very deep hierarchies but since in this case, it's only a two-level one, I think it's fine and easy to understand.
Not really. When I moved the structs into classes it forced me to define the init in the extension as a convenience initializer, and you have to then use another initializer. By moving the init to the main definition we avoid this problem 😛

Closing this one. We can continue the discussion here https://github.com/carambalabs/xcodeproj/pull/51/files


Can multiple apps be deployed on one one deis deployment?

Can multiple apps be deployed on one one deis deployment? I heard it is possible on dokku. I was wondering if it is possible on this.

Yes, of course. An unlimited number of applications are supported on Deis.


After import, the file remained open, preventing a rename to .imported.

After importing completed, the file was never renamed from ".processing" to ".imported".
The ES log showed an error similar to: "can't rename file x.processing to x.processing.imported".
When manually attempting to rename the file through the OS, the OS would report it was unable to.
The file could not be renamed because it was still open.
The solution that worked for me was to add a reader.close() to close the CSVReader after the file has imported.

Thanks!


python 3.12 supported?

is Python 3.12 supported?

@JackismyShephard There is no indication of this module being incompatible with 3.12. We will soon publish a new version with explicit and tested support up to 3.13.

Just wanted to verify whether it might work on python 3.12
Very nice you are working on support up to 3.13 though 💪


Hoarseness in synthesised voice

Hi, so we have been training both tacotron2 and waveglow models on clean male speech (Hindi language) of about 10+ hours @ 16kHz sampling rate using phonemic text. We keep the window parameters, and mel_band parameters unchanged from the 22.5kHz setup in the original repo. Both the models were trained from scratch in a distributed manner using 8-V100 for over 2 days. The resulting voice synthesis produces a hoarse voice. We tried synthesizing using models from different iterations. The hoarseness remains the same irrespective. From visualizing the spectrogram of the original (left-side of the image) and synthesized audio (right-side of the image) of the same text we observe that the spectrogram of synthesized audio is smudged in the middle frequencies in comparison to crisp harmonics of the original audio.
Any suggestions on how to train better?
Left: Original (Audio) , Right: Synthesized (Audio)

@sharathadavanne

did you resample your data to 22.05kHz? The pretrained weights are at 22.05kHz
it's necessary to trim silence of an utterance in the head and tail since you dont want tacotron to learn the alignment of silence. Neither should waveglow learn the distribution of silence.
audio normalization may help if the sound level of your dataset varies largely across different clips.
do you have good phonetic/character embeddings for hindi language?

These are my findings. You can try them.

@sharathadavanne, For me, it sounds as if it is under trained.
@cjerry1243 , @Yeongtae on the other hand, suggests to add some silence in the end.
https://github.com/NVIDIA/tacotron2/issues/269#issuecomment-536369814
He is deliberately adding silence in his fork:
https://github.com/Yeongtae/tacotron2/blob/master/preprocess_audio.py
@rafaelvalle , can you please comment on this one?

Hi @ksaidin and @cjerry1243 Sorry for the late reply. I found out that the problem was with the waveglow model, and had nothing to do with tacotron. The waveglow model trained with zero-mean unit-variance normalized mel features was resulting in a noisy synthesis, while training with raw un-normalized mel features was resulting in a clean synthesis. Obviously, in this above comparison, theTacotron models were trained with the corresponding normalization. Did you face this kind of issue with Waveglow @rafaelvalle ?

@ksaidin, @sharathadavanne If you train wavglow with silence padding, it makes loss explosion.

You are right @Yeongtae , but in my scenario, the hoarseness was not a result of silence in training data. It was mainly a result of normalizing the mel features to be in zero-mean unit-varance. When trained with these normalized features the model went on to converge neatly during training. However during inference, even with training data, it resulted in hoarse output similar to the recordings attached in the issue above. However, if I trained the waveglow with the same features as above that are not normalized, it results in clean synthesis.

@sharathadavanne , glad to hear that, please share the final audio of this text for the comparison.

@ksaidin I dont have the exact same recordings as above, but I have audio examples for other text, which you can hear on soundclound. You see that with unnormalized features waveglow output is identical to original, whereas, with normalized features, the waveglow output is noisy. Both models were trained for about 500k iterations.

@sharathadavanne @ksaidin Hey, even I have been trying out with Hindi dataset. But what I'm confused with is to use pretrained waveglow model or train the waveglow afresh.
And If needed, can you guide me through it, about how you trained the waveglow and all.
P.S.: I have around 23hrs+ data.
Also, please tell me the other required changes to make the thing work, like in symbols.py , and cleaners etc. And how did you handle english words during inference. Please note that the speaker in my data uses english words quite often which I have transliterated to Devanagari script for training purpose.

@AnkurDebnath35 you definitely need to train a waveglow model with your data. Since you have 23+ hours, you can train it from scratch also, however it might take longer. In my experience, it is much faster to train starting from the pretrained waveglow model (of any language/gender). And you dont really need to worry about your transcript for training waveglow, it only needs your audio and not your transcript.

@sharathadavanne Thanks. So suppose there is this published waveglow pretrained model. So are you suggesting that I train waveglow from that pretrained model and then train taco?
You also said something about feature normalisation. Can you explain it? Details like where to change, what to change in the code of waveglow/taco.
Also suggest me required changes in taco codes. Thank you again for helping me out here.

Hi @AnkurDebnath35 before all the improvements, please train the base frameworks- tacotron and waveglow -  from scratch with your data. Once you get your acceptable results you can think of any improvements. For now, you can follow these steps.
If you face any specific problem from the above experiment, you can look up the already exhaustive issues of this repo, and the waveglow repo. If you dont find your problem, raise an issue. Good luck!

@AnkurDebnath35 it is not always necessary to train a Tacotron or a waveglow from scratch, specially if your voice is female.

@AnkurDebnath35 it is not always necessary to train a Tacotron or a waveglow from scratch, specially if your voice is female, because fine-tuning the existing model can give you good results.

Yes! But my dataset is a male one. Any suggestions?

You can get better results by training from scratch while we prepare a male speaker baseline model.

I read an issue here talking about training with 4-5hrs data. I have around 4.5 hr data and want to train it over the published model.

@sharathadavanne Can you share the vocab that you used for Hindi. I am not sure if just adding the hindi vocab characters in symbols.py is enough because in devnagri some characters take 8bytes (one with the sign) and in general what i saw in python get's splitted in two characters. So does it make any issue while training?

Hi, sorry I won't be able to share the code. But you can use any of the publicly available Hindi words to phoneme converter. For instance, you can use the IIT Madras group's code available here - https://www.iitm.ac.in/donlab/tts/unified.php

@sharathadavanne Thanks for pointing to the resource. So just correct me if understanding is wrong, so for Hindi, we can keep the vocab in the symbols.py(all english characters present in default code) and i guess as a first experiment, most other parameters also to be as is , and you have changed your hindi input text  into somewhat hinglish form,say for example one particular input case can be "aapka naam kya hai" and something like this?

You could do as you suggested. Or a better way is to use the phoneme sequence you get out of the word2phoneme model directly with your tacotron, i.e., skipping the text preprocessing part.
Obviously, since tacotron deals with numbers and not phones directly, you will still have to convert the phoneme sequence to number/symbol sequence as done here for regular text.

Can someone help me cite this repository in a paper? I dont know whom to cite it agains. Like, who is the creator of this repository?

Ryan Prenger, Rafael Valle, Bryan Catanzaro

After trying out multiple experiments along annealing, fine-tuning on english, fine-tuning on english+hindi we are still getting a reverb affect/hoarseness in the synthesized samples.
You can check the alignments here along with the sample - https://trello.com/b/l5YRrfg1/tacotron2-detailing
However it just works soo fine for female speakers it just doesn't cut it for male speakers hindi male speaker and tamil male speaker.
@rafaelvalle would be great if we can give a baseline for male speaker as you've mentioned

@Varshul
I have experimented with fine tuning Hindi on English, that too a male Hindi speaker. The results were just fine. How many hours of data did you have?

@AnkurDebnath35 @sharathadavanne  Hi, I am retraining the waveglow model with male speaker data with warm_start. What is the minimum amount of audio you would recommend for training? and is there any constraint on use of multiple male speaker data?

Hi @sharathadavanne sir, I am using unified-parser, as you suggested. but how i will convert number to hindienglish based sir?
@sharathadavanne @srijan14 sir, Did you faced this issue, how to solve this issue?
@rafaelvalle sir, Can i finetune my hindi female voice (~25 hours) with LJSpeech female pretrained model? or i will do training from scratch? and where i will get good results?
Thanks
Murugan Rajenthiran

Hi @MuruganR96 you might need to write your own text normalization script for numbers/dates etc.. AFAIK there is no out of the box code available publicly.
Regarding finetuning, it will only help if both your training and finetuning data have a common phone set. However, if they have different phone set, you will have to train from scratch. Your 25 hours should be more than enough to train a model from scratch.

You can get better results by training from scratch while we prepare a male speaker baseline model.

Has this been made public? @rafaelvalle

You can get better results by training from scratch while we prepare a male speaker baseline model.

Has this been made public? @rafaelvalle


Load Typography from Design System

Should be released first: https://github.com/appsignal/design-system/pull/293
It is only possible to preview this PR locally on your computer. Don't forget to check out #293 and link to `@appsignal-tools/design-system.

@nchartiot
Running into some troubles with importing in @appsignal/design-system in next.config.js
const { typographyConfig } = require("@appsignal/design-system");

I think this used to work before, yet now simply is not able to find the plugin.

In VScode it even autocompletes the typographyConfig in VsCode, yet for some reason, the plugin is not being found.

Could it be that something changed in rollup, that does not allow the plugin to work inside next.config.js?

seems an error related to yarn link, did you try do run yarn link @appsignal/design-system? I ran it locally and it finds the config, but then the build breaks because of other reasons that I'm checking right now

@nchartiot
For some reason, yarn linking does not help...
In design-system I have tried to yarn build + yarn link.

In appsignal-docs I have tried yarn link @appsignal/design-system

When I go to tailwind.config.js and save it I get the error above.

@jieunization
We are trying to consolidate the typography for the docs and the blog. For our blog, we increase the text size for larger screens. For our docs, we keep the text-size consistent.

Keep it as is: docs stay small, blog grows on larger screens
Increase text size on docs on larger screens, just like the blog
Decrease the text size on the blog, making it the same as the docs

I would personally vote for option 2. It would increase the font-size on larger screens from 16 to 18px, which is not a big difference but makes it slightly more readable.

@wesoudshoorn Yeap, I agree with you. I also vote for option 2!

@jieunization @wesoudshoorn
Implemented version 2, which is about to release soon. It seems that we still can keep the typography small on docs, since we are not applying md:prose-md class.
If we would, the typography would look like this.

If we would go this route, we would have to update the spacing a bit.


Edit mode doesn't render whole image (Win64)

This is very similar to what was described in #251 (screenshot would be identical). I recently upgraded to 4.2.2 from 4.1.9, which didn't have this problem.
When I open an image in Edit mode, only some parts of the image are displayed. If I make enough adjustments to tools the whole image will eventually load, but the adjustments won't appear to have been applied to the whole image.
Just in case it made a difference, I tried increasing the Memory Limit to maximum, and I changed the "Interactive Rendering" setting from "Between Region Changes" to "All the Time". Changing this latter preference caused my whole computer to hang for a moment (cursor wouldn't move); when the computer started responding again the problem was still present.
The same behaviour happens seemingly regardless of file type or size.
Strangely, as a work-around, tapping either Ctrl key causes the screen to redraw and everything appears to render correctly (until I make the next adjustment, that is).
Platform
Microsoft Surface Pro (2017) with Windows 10 Pro 64 bit
LightZone_Installer_4.2.2_20210106_windows-x64 (downloaded 2021-02-20)

I just switched to my desktop (i7, Win10Pro64, same installer and download date) and this isn't a problem at all. My desktop has more memory (although the limit in LightZone is set close to the maxed-out limit on my Surface, so I don't think that's the problem). I had been running the Surface on battery; next time I'm using it I'll plug it in and see if the problem persists.

Thank you for the detailed report. I also had this problem on m1 mac, and I think it's fixed with d0e8b62. Please wait for next release.

@ktgw0316 Great! Thanks!

Just as an update (in case it matters) plugged-in vs. battery and changing power settings made no difference.
I also just thought of another difference between my Surface and my desktop: the Surface has a high-DPI screen (with scaling), while the desktop does not.

I have the same issue on a 2019 MacBook Pro 16" running MacOS Big Sur 11.3.2. Waiting for the next release!

I think this issue was resolved in v4.2.4.  Feel free to reopen if it still occurs.


Email OTP connector gives a null pointer exception in the tenant mode.

In [1] it requires the authenticator name value from the context. However, we set the authenticator name value after this call [2]. Hence, there is a null pointer in [1].
[1] https://github.com/wso2-extensions/identity-extension-utils/blob/f6522c5266b25de83a3d6bfe49b31d2c698f74f8/component/helper/src/main/java/org/wso2/carbon/extension/identity/helper/util/IdentityHelperUtil.java#L299
[2] https://github.com/wso2-extensions/identity-outbound-auth-email-otp/blob/f6ebf84f35d9da526077a0bfe220665e71baa7ec/component/authenticator/src/main/java/org/wso2/carbon/identity/authenticator/emailotp/EmailOTPAuthenticator.java#L176

@JKAUSHALYA can you please update the steps to reproduce this issue?

Create a new tenant in the IS.
Enable email OTP.
Try to login with a tenant user.
You should see the error log.


Error when using SQL string concatenation in view collection

The query below works fine when just using it in SQlite directly but fails when trying to create a collection of Type: View. Not sure if this is a bug but maybe there is some too-eager validation?
Invalid query - invalid identifier parts ['https://some-url.com?id=' || t.id AS template_preview_url].

SELECT
  COUNT(g.id) AS generations_count,
  t.id AS id,
  'https://some-url.com?id=' || t.id AS template_preview_url
FROM
  templates t
LEFT JOIN
  generations g ON t.id = g.template
GROUP BY
  t.id
ORDER BY
  generations_count DESC;

It is a limitation of the existing query parsing (I may consider replacing it in the future but I don't want to complicate further the implementation so for now it is left on hold).
There are several other related discussions, but the easiest solution is to wrap your expression in a parenthesis, eg. ('https://some-url.com?id=' || t.id) AS template_preview_url

Thank you that helps! 🙏

If there's a simple workaround like this I wonder if it maybe could be suggested in the error message?
I honestly don't mind the workaround so this could just "solve" that problem?


Fixed #25578 -- Correct the spelling of GitHub

"GitHub" was spelled as "Github" in some documents, so I fixed them.

What about replacing github by GitHub in the docs/spelling_wordlist file?

I did not know about docs/spelling_wordlist.

I did not know well about docs/spelling_wordlist.
So I checked a documentation, and updated docs/spelling_wordlist

merged in 230d8c7301281176a31443a2f4f425828291e46d, thanks!


Unespected behavior when saving entity through relationship

Laravel Version: 5.2.*
PHP Version: 7
Database Driver & Version: pgsql 9.6

Description:
I overrided the method save for all my entity models, I have a BaseEntity class that extends \Illuminate\Database\Eloquent\Model and is extended by all my entities. However, when saving some objects through a relationship I realized they are not passing in my method, but instead they are going to the original \Illuminate\Database\Eloquent\Model method. It's been caused probably by this line in the src, that forces my object to become an instance of \Illuminate\Database\Eloquent\Model.
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php#L599
This way I can only override some of the save calls, but not all. Is this an expected behavior? I checked and the line has not changed in the latest versions too.
Steps To Reproduce:
Create an entity that extends \Illuminate\Database\Eloquent\Model, lets say \App\Entity\Role.
Override the method save and ad some logic there, in my case I was using it to log purpouses.
Try to create an entity via a relationship, like:
$user->roles()->create($role);

The method called to save the $role is \Illuminate\Database\Eloquent\Model::save and not \App\Entity\Role::save.
Obs:
Something simillar happens when you use Observers. I tried it first and faced this issue, then I changed to the approach of overriding. I did not check deeply what happens with the observers, but the events are not triggered if you are creating entities via relatioships.

5.2 is not supported anymore, please upgrade and open a new issue if the problem still exists in a most recent version.


[mieb] Caltech101 not working

ERROR:mteb.evaluation.MTEB:Error while evaluating Caltech101: No module named 'datasets.tasks'
Traceback (most recent call last):
  File "/data/niklas/mieb/mteb/scripts/run_mieb.py", line 77, in <module>
    results = evaluation.run(model, output_folder="/data/niklas/mieb/results-mieb-final", batch
_size=1)
  File "/data/niklas/mieb/mteb/mteb/evaluation/MTEB.py", line 464, in run
    raise e
  File "/data/niklas/mieb/mteb/mteb/evaluation/MTEB.py", line 394, in run
    task.load_data(eval_splits=task_eval_splits, **kwargs)
  File "/data/niklas/mieb/mteb/mteb/abstasks/AbsTask.py", line 192, in load_data
    self.dataset = datasets.load_dataset(**self.metadata_dict["dataset"])  # type: ignore
  File "/env/lib/conda/gritkto4/lib/python3.10/site-packages/datasets/load.py", line 2132, in l
oad_dataset
[....]
  File "/data/huggingface/modules/datasets_modules/datasets/HuggingFaceM4--Caltech-101/de531bad
1446ca30ea620aad43702100b105c0fc5dd44fac9f87567389186803/Caltech-101.py", line 24, in <module>
    from datasets.tasks import ImageClassification
ModuleNotFoundError: No module named 'datasets.tasks'

This error seems to be associated with an older version of datasets. My setup has datasets==2.20.0 and I'm not able to reproduce this error. What version of datasets are you running?

I had 3.0.2 ; you're right that it works now!
Hmm means we'd have to pin a lower version in reqs https://github.com/embeddings-benchmark/mteb/blob/3a18fbdafa25696080fc4fa18c1875f64d6a4010/pyproject.toml#L28 or we fix the dataset somehow; Would probably be better to do the latter (and maybe reupload the fixed one to mteb on the hub & point to that instead) 🤔

Related to #1363
I would probably fix the dataset since pinning datasets seems like a bad long-term solution.
A short-term solution is to add a warning specific to the dataset.

Seems like the same issue exists with this dataset (part of MMTEB):
  File "/data/huggingface/modules/datasets_modules/datasets/SpellOnYou--kor_sarcasm/00d38c200d4d563ed94efb9ff4ca119ded94fe3cdf1e381ed95274de0a9d59f0/kor_sarcasm.py", line 21, in <module>
    from datasets.tasks import TextClassification
ModuleNotFoundError: No module named 'datasets.tasks'

@Muennighoff I believe that was fixed in #1363


[FEAT] State Machine

Summarize the feature succinctly here.
Game requires a state machine for handling progression of in-game logic and events.
Describe the solution you'd like
The state machine system should be concerned with a State and StateMachine set of classes.
GameObject
=> StateMachine engine;
=> StateA modeA = new StateA(this, engine);
=> StateB modeB = new StateB(this, engine);
=> StateC modeC = new StateC(this, engine);

Update() { engine.CurrentState... ...HandleInput(), ...Update() }
FixedUpdate() { engine.CurrentState... ...PhysicsUpdate() }
Clean() // Clean up the GameObject.
Init() // Initialize the GameObject.

State class
=> States will handle switching to other states by using the state machine (engine).

Enter // Run when the state is initialized.
Exit // Run when the state is being left.
HandleInput // Handles user input for this state.
Update // Update logic is stored here.
Simulate // Physics updates are stored here.

State Machine class

Stack // Stack of states. Enables us to go up the state context stack.
isPaused
startingState // Track what the machine started with.
readonly CurrentState // References State at top of the stack. Used for updating logic. Not useful for when you want a state to manager its own internal set of states.
Initialize(State) // Initialize the entire state machine to the input starting state.
ChangeState(State) // Exit the current state, assign new one, and then call enter on it. (Pop then Push)
PushState(State) // Push state onto the current context without exiting the previous one. (Push)
PopState(State) // Pop current state off of the current context, exiting it, but resuming the one on the state below (Pop)
Stop() // Stop the state machine, exiting all states and unwinding the stack. isRunning = false.
Pause() // Pause the state machine. No updates are called while paused.
Run(State) // Start the state machine, calling Enter() on the starting scene. Cannot be called after being started. Is coroutine. Calls Stop() once Stack is completely empty.
Reset() // Stop the state machine, then calls initialize again.

Relevant links
This approach is based off of the following sources:

"State Pattern using Unity" tutorial by Najmm Shora
Fluent State Machine project by Real Serious Games

Additional notes regarding states:
State {
    Input: Data passed on Init()
    Output: Next state to load.
}

States can have internal state machine; it only cares about getting to the end.

Lobby {
    Idle - Main Menu.
    Instructions - Display the instructions panel.
    Exit - Exit the application.
}

Lobby.Instructions {
    Idle - Instructions panel displayed to the user. Wait for player interaction.
    Exit - Exit the instructions panel by hitting the 'Go Back' button.
}

Game {
    Play - The game is currently being played.
    Pause - The game is currently paused and waiting for user input.
}

Game.Play {
    Plant - Player is prompted to plant a seed.
    Grow - In this state, players solve challenges as the plant grows.
    Bloom - If the player successfully grows the plant, we can reach this state.
    Wilt - If the plant reaches the wilt state, we reach this state.
}

Game.Play.Plant {
    Idle - Wait for the user to plant the seed.
    Plant - When the user plants the seed, we can progress to Game.Play.Grow
}

Game.Play.Grow {
    Watch - Plant will continue to grow as time progresses.
          - When plant reaches its full value, switch to Game.Play.Bloom
    Challenge - A challenge is started that the player must resolve.
}

Game.Play.Grow.Challenge {
    Start - Challenge is started. Anything needed to be prepped happens here.
    Run - Challenge runs until either player wins or plant is dead. If plant dies, go to Game.Play.Wilt.

}

Game.Play.Wilt {
    Idle - Player can observe dead flower.
    Next - Player has opportunity to plant a new flower.
    Main Menu - User can return to the main menu, ending this game.
    Exit - Player has opportunity to quit the game.
}

Game.Play.Bloom {
    Idle - Player can observe the bloomed flower.
    Next - Player has opportunity to plant a new flower.
    Main Menu - User can return to the main menu, ending this game.
    Exit - Player has opportunity to quit the game.
}

Game.Pause {
    Resume - Gameplay can be resumed.
    Instructions - Instructions can be displayed to the user.
    Main Menu - User can return to the main menu, ending this game.
    Exit - Player has opportunity to quit the game.
}