[SPARK-34976][SQL] Rename GroupingSet to BaseGroupingSets

What changes were proposed in this pull request?
Current trait GroupingSet is ambiguous, since grouping set in parser level means one set of a group.
Rename this to BaseGroupingSets since cube/rollup is syntax sugar for grouping sets.`
Why are the changes needed?
Refactor class name
Does this PR introduce any user-facing change?
No
How was this patch tested?
Not need

FYI @cloud-fan

Test build #136990 has started for PR 32073 at commit e77c289.

Test build #136990 has finished for PR 32073 at commit e77c289.

This patch fails to build.
This patch merges cleanly.
This patch adds the following public classes (experimental):
trait GroupingAnalytic extends Expression with CodegenFallback
case class Cube(

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/136990/

Kubernetes integration test unable to build dist.
exiting with code: 1
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41567/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/41567/

@AngersZhuuuu please describe why we should rename. The change look incomplete and I can't follow why we should rename.

Test build #136999 has started for PR 32073 at commit 2995aee.

Test build #137004 has started for PR 32073 at commit 3eb088f.

@AngersZhuuuu please describe why we should rename. The change look incomplete and I can't follow why we should rename.

Done

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41576/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41576/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/41576/

Test build #137019 has started for PR 32073 at commit 4ffd32f.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41581/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41581/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/41581/

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41583/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41583/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/41583/

Test build #136999 has finished for PR 32073 at commit 2995aee.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test build #137004 has finished for PR 32073 at commit 3eb088f.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
trait BaseGroupingSets extends Expression with CodegenFallback

Kubernetes integration test unable to build dist.
exiting with code: 1
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/41597/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/136999/

Test build #137019 has finished for PR 32073 at commit 4ffd32f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/137019/

thanks, merging to master!


Fix static version numbers

The current brew formula uses a fixed version number for Python and the Core repo. Also, the hash needs to be dynamic depending on the core repo version.

@FirePing32 I do not understand what is this issue about, can you explain it?

@viferga Currently, we have to manually add commit hash every time a new version is released on metacall/core. Also, the Python version is static, which needs to be dynamic according to the user's machine to avoid build errors (like missing header files). The release version of the core repo is also statically defined in the formula.

@FirePing32 If i am getting it right, cant we just create a main trigger at the meta call core repo and when the tests.yml is passed it will trigger the build in all other repos as we want??

@shaggyyy2002 That is the plan as of now.

@FirePing32 I have a GSoC proposal, mind if you could review it? This issue can be solved under the same
Core CI with Distributable's project


Dependencies

closes #53

Hmm fair point, I'll add a descriptive error if what's passed is already wrapped in Depends explaining that it changed since 0.12.0

Done. Added a warning and we'll support it until 0.15.0. #82


var completeness table jumps around on the page

sometimes its to the right of the scatter plot (gems 1 case control) and sometimes below.

@d-callan (and @dmfalke)
I have tested this but cannot reproduce it. Thus, below is just my general thought.
The plot and the table are placed in the left and right, respectively and they are dynamically laid out depending on one's display resolution and/or browser's width (designed by @jtlong3rd) like a modern website does: this is the same for other vizs beyond scatter plot. I don't know exactly how you observe the behavior, but one possible case I can guess is that you might have reduced your browser's size, which might lead to top/bottom display automatically instead of left/right one - you can test this by increase/decrease your browser's width.
Thus I think this is a non-issue. Any thought @d-callan, @dmfalke, and @jtlong3rd ?

im usually on my laptop, and it seems to depend on what variable(s) im plotting. so my best guess is that something on screen is changing width significantly based on label lengths.

@d-callan Thank you for sharing your experience. Now I see what you meant. The table itself is also dynamic, especially "Label" column that shows variable names, so e.g., X-axis of "Age" and "Sleeping rooms in dwelling count" would have different table width, which may go over the limit of left and right arrangement (so place them as top and bottom).
I am not quite sure whether leaves it as is or the Label column should have a fixed width, which the latter may not be looking  good with long variable name that may be comprised of multiple lines instead of single one

one of difficulty is that this also depends on the zoom level of user's browser

Similar to @moontrip's idea of giving the label column a fixed width:
Maybe we could just change this style from max-width: 500px to width: 500px? That would give the table a fixed width.
Another possibility would be to put the table inside a div with fixed width.

@jtlong3rd perhaps setting fixed width: 500px would not cause the sudden change of table location from right to bottom per variable selection at least 👍

we have decided to set a fixed width which would make the table not change its size(width) per variable selection


Update to version 0.2.1

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Reset the build number to 0 (if the version changed)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender


Fix deparsing of a table's DISTRIBUTED BY clause for GPDB 6.

JIRA: MADLIB-1298
GPDB 6 makes changes to the gp_distribution_policy catalog table:
'attrnums' column is renamed to 'distkeys', and its datatype changes from
smallint[] to int2vector. It also adds a new column, distopclasses, which
needs to be taken into account when looking at a table's distribution key,
along with the attribute numbers. See GPDB commits 69ec6926c2 and
242783ae9f for details.
Fortunately, GPDB 6 also adds a helper function,
pg_catalog.pg_get_distributed_by(), to do the deparsing for us. Use that
function when running on GPDB 6.

Unfortunately, I don't know how to run MADLIB regression tests, or what tests there are. This came up as a failure in the Greenplum concourse pipeline (https://prod.ci.gpdb.pivotal.io/teams/main/pipelines/gpdb_master/jobs/MADlib_Test_planner_centos6/builds/978). I ran the test queries from the 'poisson' test manually on my laptop to verify this, but that's all the testing I've done.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/742/

We setup a pipeline to test this PR, and it passed install-check, dev-check, and unit-test, which are what in the above concourse box.

Thanks!

This change, however, may break our TINC test, and we will try to catchup later. This code change looks good to me, and I am going to merge it to unblock the gpdb master pipeline for now.

Oh, what TINC test is that? I don't see any mention of TINC on the madlib website or the git repository.


Grad should be a Value instead of python/numpy scalar

So you can do higher order autodiff.

yes, similar to PyTorch, a good feature request. I'll see if I can find a way to do it without sacrificing  the clarity, cleanliness and compactness.

I can gratfuly contribute if @karpathy wants, I ve built similar project (autograd on github).

I played with higher-order grads a bit in my fork. It was this plus some small changes. Created a pr: #8

I think the point is not to make another framework but pedagogy


update for Kubernetes 1.32

Go dependencies have to be updated.
Replace v1alpha3 with v1beta1 or add it (templates/validatingadmissionpolicy.yaml).

maybe we should replace all v1alpha3 to v1beta1?
I just pull up a v1.32.0-rc0 cluster, and find out kube-scheduler and kube-controller-manager can not be Ready if kube-apiserver start with flag --runtime-config=resource.k8s.io/v1alpha3.
I think alpha3 is about to be deprecated.

Yes, I plan to do it next week on a branch when I am back in the office.
But we won’t merge it until after the 1.32 release actually goes out and is
available in kind.
~Kevin
trainyao @.***> schrieb am Fr. 29. Nov. 2024 um 20:24:

maybe we should replace all v1alpha3 to v1beta1?
I just pull up a v1.32.0-rc0 cluster, and find out kube-scheduler and
kube-controller-manager can not be Ready if kube-apiserver start with flag
--runtime-config=resource.k8s.io/v1alpha3.
I think alpha3 is about to be deprecated.
—
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-sigs/dra-example-driver/issues/67#issuecomment-2508774168,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAXRI2FZW3VEXINAZXSBW32DEHT7AVCNFSM6AAAAABSQVMSX2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMBYG43TIMJWHA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

/assign @klueska


Memory Error on large .tar

I am encountering the following memory error on two files of the backup:
INFO:root:working on com.moonactive.coinmaster.apk
INFO:root:working on com.moonactive.coinmaster.tar
Traceback (most recent call last):
  File "kobackupdec.py", line 932, in <module>
    main(user_password, backup_path, dest_path)
  File "kobackupdec.py", line 866, in main
    decrypt_backup(password, files_folder, dest_path_out)
  File "kobackupdec.py", line 810, in decrypt_backup
    decrypt_files_in_root(decrypt_info, path_in, path_out)
  File "kobackupdec.py", line 693, in decrypt_files_in_root
    cleartext = decrypt_entry(decrypt_info, entry,
  File "kobackupdec.py", line 649, in decrypt_entry
    cleartext = decrypt_info.decryptor.decrypt_package(
  File "kobackupdec.py", line 303, in decrypt_package
    return decryptor.decrypt(data)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\Crypto\Cipher\_mode_ctr.py", line 253, in decrypt
    plaintext = create_string_buffer(len(ciphertext))
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\ctypes\__init__.py", line 63, in create_string_buffer
    buf = buftype()
MemoryError

The .tar of the said files are 1.1GB and 695MB. Once I delete them the scrip decodes the backup fine. The 460MB file, also works without an issue.

Thanks @k-jansen .
Indeed I try to untar / tar in memory, without explicitly using files on disk. Large tar could get this issue. I'm unsure if to change the code... anyhow, as a workaround, you can grab the decryption code from Python and use it just again those large files.

This shouldnt be closed - the issue still exists.


go/parser: fails to parse an invalid switch statement

Repro case:
package main

import "go/ast"

func main() {
	var node ast.Node
	var lit *ast.CompositeLit
	switch n := node.(type) {
	case *ast.CompositeLit:
		lit = n
                lit.
	case *ast.KeyValueExpr:
	}
}

In this case, lit. 	case *ast.KeyValueExpr: gets parsed into an *ast.BadStmt. This is a problem for tools that need to work on broken code.

/cc @ianthehat

Could be interesting to see what cmd/compile/internal/syntax does here. As far as I've seen, it does a better job with edge cases and errors. Though it doesn't seem to have a BadStmt equivalent right now.


Add more control over the binding lifecycle

Currently, the binding process will kickstart as part of the context refresh. A few ideas to improve this, discussed on twitter

allow control whether to bind automatically at start
allow hooks for starting/stopping bindings under user control (beyond the already existing Lifecycle support).

Relates to spring-cloud/spring-cloud-stream#963

This will be addressed by #1053 #1055


Microsoft.Extensions.Options.DataAnnotations needed for validation example

The package Microsoft.Extensions.Options.DataAnnotations is needed for the example shown for validation:
public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddOptions<MyConfigOptions>()
            .Bind(Configuration.GetSection(MyConfigOptions.MyConfig))
            .ValidateDataAnnotations();

        services.AddControllersWithViews();
    }
}

While the package is implicitly referenced for an Asp.Net Core project, it isn't in other scenarios where option configuration and validation might be used. It took me a bit to figure out what package was needed when trying to use the ValidateDataAnnotations extension method in a worker project. I realize these are the Asp.Net Core docs, but it applies to other host/ project types as well.
I imagine something like the mention for the Microsoft.Extensions.Options.ConfigurationExtensions package would be appropriate.

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

ID: ed39cb0e-aa85-8bba-ffb4-859b56a60723
Version Independent ID: dc7e3449-650b-d117-5eac-69e5ccb250cb
Content: Options pattern in ASP.NET Core
Content Source: aspnetcore/fundamentals/configuration/options.md
Product: aspnet-core
Technology: aspnetcore-fundamentals
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@serpent5  let me know if you want this one, otherwise I'll do it next month.
@stevebelskie  thanks for letting us know.

@Rick-Anderson Sure, I'll do this one.


Crowdin contributor's version of Serbian (Latin) translation of PrestaShopop V1.5.0 and the one displayed on GitHub are extremely different

To Whom It May Concern
PrestaShop language Serbian latin on Crowdin and GitHub dev don't use the same variant

My name is Zoran and I took a project to translate PrestaShopop V1.5.0 on Serbian Latin language.
Language In prestaShop has a Language code: sr-cs and ISO code : sr
Serbian has two type of languages.

Serbian cirilic
Serbian Latin
On crowdin website there is only one type and this is Serbian (Latin) translation.
This Latin is more popular and I am happy that this one is there.  This language is already translated 62 % and rest of it will come soon. Problem is that someone who started this translation translated one minor part in Cyrillic.
I have found these several wrong translated words and have changed them to correct ones.  Unfortunate everything that I corrected never came with new prestaShop installation. Even some new words that I have translated never showed up on new PrestaShop 1.5.0beta version
I asked prestashop developers for help and this is what they told me: “
“Wen I make the comparison between the Crowdin contributor's version and the one displayed on GitHub, it is extremely different. In fact, I think that there are two variants of this language, Serbian. It seems that the Crowdin contributor and the GitHub dev don't use the same variant.
So I think the Crowdin contributor needs to do a pull request himself because he will probably have to talk to the guys from jquery-validate about that.
Perhaps it will be needed not to MODIFY this file but to ADD a file in order to have the two Serbian translations available (even if there are two variants of this language). In short, I think he needs to check with the concerned and then more skilled people about this topic.
I see two solutions:

the easy solution is to open an issue > https://github.com/jquery-validation/jquery-validation/issues/new
he is motivated and creates a pull request if he knows how to do it, but I don't know when the plugin will be updated
And then, we at PrestaShop will have to download this plugin new version and use it to get the "right translation" within the next version of the software.

Please help me to get this great program on Serbian latin language.
Kind regards
Zoran
Your environment

version of jquery-validate:
which browser and its version:

Steps to reproduce

Expected behaviour

Actual behaviour

Hi @Zoran23,
I would like to help but I don't understand the issue very well. What is the variant used by PrestaShop and how it is deffirent from the one we have in this plugin?
Also, if you would like to contribute the changes, we welcome your contribution and I would be happy to walk you through the steps.
Thanks :)

Hi,
If I can help, I am a PrestaShop developer and I had a look at this issue 😄
Current translation file for Serbian is https://github.com/jquery-validation/jquery-validation/blob/master/src/localization/messages_sr.js
@Zoran23 suggested to modify this and replace it with this instead:
/*
 * Translated default messages for the jQuery validation plugin.
 * Locale: SR (Serbian; Srpski jezik)
 */
(function ($) {
	$.extend($.validator.messages, {
		required: "Polje je obavezno.",
		remote: "Sredite ovo polje.",
		email: "Unesite ispravnu E-mail adresu",
		url: "Unesite ispravan URL.",
		date: "Unesite ispravan datum.",
		dateISO: "Unesite ispravna datum (ISO).",
		number: "Unesite ispravan broj.",
		digits: "Unesite samo brojeve.",
		creditcard: "Unesite ispravan borj kreditne kartice.",
		equalTo: "Unesite istu vrednost ponovo.",
		accept: "Unesite vrednost sa odgovarajućom ekstenzijom.",
		maxlength: $.validator.format("Maksimalan broj znakova je {0} ."),
		minlength: $.validator.format("Minimalan broj znakova je {0} ."),
		rangelength: $.validator.format("Unesite vrednost izmedju {0} i {1} znakova."),
		range: $.validator.format("Unesite vrednost izmedju {0} i {1}."),
		max: $.validator.format("Unesite vrednost manju ili jednaku {0}."),
		min: $.validator.format("Unesite vrednost veću ili jednaku {0}.")
	});
}(jQuery));

As you can see it is very different, and the reason why is there are 2 variants of Serbian: cirilic and latin.
Is there a way to provide users the capability to choose which variant they want ?

Hi @matks,
I got the gist of the issue now, thanks a lot for the explanation.
There is something I didn't check last time and I totally forgot about it. In fact, we have two files for Serbian language, one in cirlic which is the file you refered in your comment, and one in latin named messages_sr_lat.js. So, as far as I can tell, you want to use the latin version as the default one.
If we did the change, that will be considered a breaking change and we will have to postpone it untill we have an ETA for version 2.0.0.
What do you think?

I gave up from this, and i translated presta shop 1.7.5 manually file by file on my computer (I used Latin 100%).  Adding currency in prestashop 1.7.5 with serbian language did not work because of some problem with locale. 1.7.5. Serbian was massy and I was just waiting for new version.
Now when prestashop 17.6 beta is up, I have tested it and translated online everything 100%. (Only Latin)
Now in 1.7.6 currency is working fine but new big problem came. It is not possible to translate Serbian language in BO. Error that is coming is following: The provided locale sr-CS is invalid.
Yes I have translated it 100% online, but still maybe someone want to change something through back office.
If someone can check up why this error, “The provided locale sr-CS is invalid”, coming up when try to translate Serbian language on BO.
Thanks in advance.
Zoran

Zorane how did you translate? I have a problem with 1.7.6 and can not translate custom theme because of this issue.
Prestashop should be ashamed because they haven't fixed the mistake yet !!!
Pozdrav Igor

Pozdrav Igore.
Lokale ne treba da bude sr-cs nego sr-rs. To treba zameniti na nekoliko mesta. Sad sam trenutno na odmoru na Mauricijusu pa ne mogu da ti opisujem gde sve treba izmeniti. Ako me potsetis sledece sedmice poslacu ti kompletnu instrukciju. Podseti me na mejl zorantejic@ hotmail.com


[DNM] use abort instead of exit

What have you changed? (mandatory)
When calling exit90 in panic_hook, it triggers global static to destroy, like c++ static dtors, which may cause other threads encounter pure virtual method call. So using abort instead of exit.
What are the type of the changes? (mandatory)

Bug fix (change which fixes an issue)

How has this PR been tested? (mandatory)

/release

LGTM

/release


Add ‘requests’ dependency to setup.py

Hi Jon,
I'm doing some legwork for adding psychopy to conda-forge (automatic compilation on all OS's, easy conda install without adding "erik" channel"). All dependencies need to be in conda-forge, though, so I'm adding pyosf there with pr conda-forge/staged-recipes#2249
Doing that, I noticed that requests wasn't included as a dep in pyosf itself, so I'm adding that in here. It shouldn't make a difference through conda-forge, but may for pip.

PS - I didn't add you as conda-forge maintainer since conda-forge says that there's spam involved, but I'm happy to if you like. :)

Sounds good. I think pip should use the requirements.txt but this is fine.
FYI in my experience it works a bit better to use requests[security] during installation. That basically installs a couple of extra packages to improve support for SSL and on some machines it isn't needed. If complaints arise that certificates don't work and connections fail then doing pip install requests[security] can help.

I'm happy not to be a maintainer - might make people think I know about the
system and I genuinely don't! ;-)
I'm finding pip install with vanilla (ptyhon.org) installations is working
very well for scripted installs (so much better than it used to be) so not
planning to switch.
best wishes buddy,
Jon
On 19 January 2017 at 02:50, Erik Kastman<EMAIL_ADDRESS>wrote:

PS - I didn't add you as conda-forge maintainer since conda-forge says
that there's spam involved, but I'm happy to if you like. :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/psychopy/pyosf/pull/4#issuecomment-273667871, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAXOpoDmpzgCEQaEVQSMSwj5uilMl2k6ks5rTs9sgaJpZM4LnpUv
.

--
Jonathan Peirce
http://www.peirce.org.uk

Good idea with the pyrequests[security] - want me to specify that instead?
Yep, pip installs have been getting much better, especially with wheels, and I completely agree that for pure-python projects conda is way overkill.
I just tried a new fresh install by creating a new conda enviornment with numpy and pip install -r requirements.txt from master. Most of it works quite well! But there are still enough hiccups that I think it's worth pushing forward on a conda implementation of psycohpy. For example, I couldn't get the app to open with the vanilla pip installs, getting this traceback from somewhere inside matplotlib:
(psychopy-2017Jan) $ pythonw `which psychopyApp.py`
2017-01-19 12:40:44.466 python[52142:682659] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to /var/folders/91/fg_xrhm54jx9sdncksm1_t_c0000gn/T/com.continuum.python.savedState
Traceback (most recent call last):
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/bin/psychopyApp.py", line 60, in <module>
    app = PsychoPyApp(0, showSplash=showSplash)
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/psychopy/app/_psychopyApp.py", line 107, in __init__
    self.onInit(**kwargs)
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/psychopy/app/_psychopyApp.py", line 152, in onInit
    from psychopy.compatibility import checkCompatibility
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/psychopy/compatibility.py", line 4, in <module>
    import psychopy.data
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/psychopy/data.py", line 10, in <module>
    from pandas import DataFrame, read_csv
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/__init__.py", line 39, in <module>
    from pandas.core.api import *
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/core/api.py", line 10, in <module>
    from pandas.core.groupby import Grouper
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/core/groupby.py", line 40, in <module>
    from pandas.core.frame import DataFrame
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/core/frame.py", line 72, in <module>
    from pandas.core.series import Series
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/core/series.py", line 2974, in <module>
    import pandas.tools.plotting as _gfx  # noqa
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/tools/plotting.py", line 34, in <module>
    import pandas.tseries.converter as conv
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/pandas/tseries/converter.py", line 7, in <module>
    import matplotlib.units as units
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/matplotlib/__init__.py", line 1182, in <module>
    rcParams = rc_params()
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/matplotlib/__init__.py", line 1025, in rc_params
    return rc_params_from_file(fname, fail_on_error)
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/matplotlib/__init__.py", line 1151, in rc_params_from_file
    config_from_file = _rc_params_in_file(fname, fail_on_error)
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/matplotlib/__init__.py", line 1068, in _rc_params_in_file
    with _open_file_or_url(fname) as fd:
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "/Users/kastman/miniconda/envs/psychopy-2017Jan/lib/python2.7/site-packages/matplotlib/__init__.py", line 1053, in _open_file_or_url
    with io.open(fname, encoding=encoding) as f:
LookupError: unknown encoding:

I tried again, installed as much as I could through conda (wx, numpy, matplotlib), and was sucessfull in getting everything to load.
So in the end I'm still trying to get the full psychopy setup into conda-forge, as it's been a solution that's pretty reliable for me (more so than vanilla pip even now!). I'll let you know how it goes,

Also, seems like I may just be mucking about too much. I didn't realize you were doing all the dependencies in requirements.txt (didn't realize that until looking at psychopy again actually) - I just thought this was an oversight, not done on purpose!
It's tricky for people coming in because setup.py doesn't know about requirements.txt; I just ran python setup.py install without actually getting dependencies, even though they're there.
Maybe we should revert that change and just be consistent? Sorry for the noise!

Oh yeah, that matplotlib error was unpleasant. I remember spending a fair bit of time trying to work it out and nowI've forgotten what I did! :-/
The issue is to do with the localisation settings of wx (I think) clashing with the settings in matplotlib. I'll try to remember what I did.

But we're rather branching out into psychopy conda issues here and this is the pyosf page! ;-)

Yeah, don’t worry about it - syncing everything to the same version within conda seemed to work for me. The real question is about whether to include dependencies in the setup.py or not…
Sorry to lead us astray!

On Jan 19, 2017, at 5:13 PM, Jon Peirce<EMAIL_ADDRESS>wrote:
But we're rather branching out into psychopy conda issues here and this is the pyosf page! ;-)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/psychopy/pyosf/pull/4#issuecomment-273915438, or mute the thread https://github.com/notifications/unsubscribe-auth/AACvKzD3N7yhK1nG78sY8vFrutqpRKZ2ks5rT9__gaJpZM4LnpUv.

I don't know the answer with respect to dependencies. My feeling is that it should be done in only one place and pip seems to push the use of requirements files rather than setup_requires but I'm not exactly sure why. It seems like setup_requires has the advantage of being automatic whereas using a requirements file is (I think) always a manual step:
pip install pyosf
pip install -r requirements.txt

But you could use that as a way to install particular subsets:
pip install pyosf
pip install -r reqs_main.txt
pip install -r reqs_dev.txt
pip install -r reqs_mac.txt

Ultimately, I don't know the answer! ;-)

I found a good contrast between the two in the python packaging guide: https://packaging.python.org/requirements/#install-requires-vs-requirements-files
Basically it recommends requirements.txt for environments and setup_requires for packages, and for my own projects I use setup_requires, but I think that it's fine to use requirements.txt to stay consistent with psychopy. One thing to note is that setup_requires also allows for subsets using "extra_features"; like dev, mac, etc. - that's what's going on with requests[security]
I think sticking with requirements.txt is fine for pyosf. Nevermind this whole thing!


Add guesslang

I'm very new to python and decided I wanted to improve my knowledge by trying to add a feature to this bot. Regardless of that, I don't understand 99% of the code in it, but I tried my best. I'm pretty sure the code I wrote doesn't work but I think you'll get the main idea of what I'm trying to do.
You'll have to rewrite my code in another commit. Oh and sorry for the mess my formatter did, it ain't much tho.

Neat Idea.
I'm not sure I really want to include that right now.
I was not able to test it because of some error during the installation of guesslang.
I tried on Windows and linux.
As to the PR in general, not specific to our repo:

State what your PR does in a clear and concise manner. I had to read the code and look up what guesslang is to find out what you're trying to do.
Including the autoformatting in the same commit as your actual changes makes it hard to see what is really new and what is not. The repo readme states autoformatter and settings to be used when contributing. Always make clear and easy to understand commits.
Saying the code probably doesn't work means you didn't test it and expect us to do your testing and final implementation for you. So this is basically an enhancement suggestion packaged as a PR instead of a Issue/Discussion. Always test what you are proposing.

All these things feel a little bit like you don't respect the time of the maintainers (even though you surely didn't intend that) so maybe try to avoid these points when opening PRs in the future.
Other than that i think the code might have worked if the installation of guesslang didn't error out - i can't see anything obviously wrong with it.


VSCode href link to html in local folder does not work

While editing a html based on a working template, below issue occurs:
Existing href refs to other html file within the same folder works fine
More html files added to the folder, then created new href link to the newly created file:

If manually type the complete href, it works.
If copy existing working href then update it to point to newly created file, it works.
If generate href links outside of vscode then paste into vscode, it DOES NOT work

Tried disabling all extensions, restarting vscode. Can not solve the issue.
Kindly advise if I have missed anything here.
Thanks

Is it a rendering issue? Does the underline show when reopening the editor?
Can you provide the html file?

Is it a rendering issue? Does the underline show when reopening the editor?
Can you provide the html file?


Choose which Untradables not to Screenshot

Is your feature request related to a problem? Please describe.
Annoying when weird stuff like "Pufferfish" gets screenshotted
Describe the solution you'd like
Make it so u can hide what items/untradables to not take a screenshot of when using the screenshot plugin
Describe alternatives you've considered
Make it the same list off hidden items in the ground items plugin
Additional context
:)

You should probably tweak the vanilla settings instead then.

You should probably tweak the vanilla settings instead then.

There isnt a vanilla setting for that lol

You can disable sending game messages on untradeables

Maybe just a high alch limit or something, I don't really think a full filter is necessary for this

Yea its just the items that are literally useless thats annoying

Most of untradeables are useless.  Many untradables of use have reasonable store prices because of death mechanics


Nodes without parentheses are not supported

Apparently this is valid:

Would love to see this added! Been looking for an FBP highlighter for a while and this is so close to perfect.

I'll see what I can do :+1:


Add address lookup.

PCO Bot should be able to answer
Do you have an address for John Doe?
Preferably it should provide the address and a link to google maps since you're most likely looking for directions.

I got this one. Should be done by tomorrow.


"Ursați" is listed in the drop-down menu

Description:
"Ursați" is listed in the drop-down menu alongside its corresponding county and commune, according to the law
Precondition:
The website is up an running.

Step 1
Type "Ursați" in the search bar.

Expected results
The location is listed in the drop-down menu as "Sat Ursați, GORJ (TÂRGU JIU)".


[flash_ctrl rtl] The starting address of the page erase operation appears to be incorrect

When erasing a page, flash ctrl starts the op at the wrong address. The bug is in the WordsPerPage parameter override on the flash_erase_ctrl instance.
  // Erase handler does not consume fifo
  flash_erase_ctrl #(
    .AddrW(BusAddrW),
    .PagesPerBank(PagesPerBank),
    .WordsPerPage(WordsPerPage),
    .EraseBitWidth(EraseBitWidth)
  ) u_flash_erase_ctrl (

The correct override value is BusWordsPerPage since the entire calculation of the address is based on the bus data size, and not the flash data size.

hmm.. i need to think a bit about how to make this more correct by design.

Fixed with #2996.


How to use Table Styles

Hey Tanner, thanks for the great table.
I really like the table styles in the storybook, are those the default styles? and how do I import those into my own application? Thanks!
-figured it out, sorry!

How did you figure this out?  I am having trouble setting styles myself.


Bug: PhpStorm spelling errors

PHP Version
8.2
CodeIgniter4 Version
4.3.3
CodeIgniter4 Installation Method
Manual (zip or tar.gz)
Which operating systems have you tested for this bug?
Windows
Which server did you use?
apache
Database
MariaDB 10.4.28
What happened?
Cosmedic.
Not really a bug, but phpStrom is flagging spelling errors in index.php
index.php
phpStorm is flaging these as spelling errors!
Line 50 - * the application run, and does all of the dirty work to get
// should be - remove the of

the application run, and does all the dirty work to get

Line 63 -  * Now that everything is setup, it's time to actually fire
// should be - change setup to set up

Now that everything is set up, it's time to actually fire

Steps to Reproduce
Just open index.php with phpStorm.
Expected Output
No phpStorm spelling errors.
Anything else?
No response

I sent a PR #7430


dribbblish dynamic - How to move album cover art to the left side?

How do I move the album art to the left? Its in the bottom right over my friends area.

This is a question for the Spectrum chat.
Github issues should be used for bug reporting and feature requests.


Refactor to include CloudWatch Agent logic

Problem Description:
Agent-nodes currently have not monitoring capability built in. Adding CloudWatch Agent logic to template will make it so that can trap things like "/var/jenkins/workspace full" and send alerts via SNS
Expected Behavior:
Agent nodes are adequately instrumented
Actual Behavior:
Agent nodes are not adequately instrumented
(Detailed) Steps to reproduce:
Deploy templates as-is.
(Optional) Fix recommendation:
Update the Agent templates to use most recent Watchmaker template's CloudWatch Agent extensions.

Closed by #19


fix(EMI-2019): check if offer is expired

This PR resolves EMI-2019
Description
Similar to https://github.com/artsy/force/pull/14338
For displaying the expired offer banner, instead of not getting a partner offer in the backend response and assuming that the partner offer is expired, we can return the partner offer and show the banner if it's not available. This would cover the case when a user is logged in with a different user.
PR Checklist

[ ] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[ ] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

Fix check for partner offer expiration - leamotta

iOS user-facing changes

Android user-facing changes

Dev changes

Need help with something? Have a look at our docs, or get in touch with us.

This PR contains the following changes:

Cross-platform user-facing changes (Fix check for partner offer expiration - leamotta)

  Generated by :no_entry_sign: dangerJS against 4933eb717675ee2533c766656649159f558f6019


fix flow

Pull request checklist

[x] The PR has a proper title. Use Semantic Commit Messages. (No more branch-name title please)
[x] Make sure you are requesting the right branch: dev.
[x] Make sure this is ready to be merged into the relevant branch. Please don't create a PR and let it hang for a few days.
[x] Ensure all tests are passing.
[x] Ensure linting is passing.

PR type

Bug fixre

Description
Fixed AttributeError: 'tuple' object has no attribute 'split' during onnx export.

that change seems to break using the model in simple onnx inference:
Reshape node. Name:'/enc_p/encoder/attn_layers.0/Reshape_10' Status Message: /onnxruntime_src/onnxruntime/core/providers/cpu/tensor/reshape_helper.h:44 onnxruntime::ReshapeHelper::ReshapeHelper(const onnxruntime::TensorShape&, onnxruntime::TensorShapeVector&, bool) input_shape_size == size was false. The input tensor cannot be reshaped to the requested shape. Input shape:{1,2,20199}, requested shape:{1,2,101,199}

that change seems to break using the model in simple onnx inference:
Reshape node. Name:'/enc_p/encoder/attn_layers.0/Reshape_10' Status Message: /onnxruntime_src/onnxruntime/core/providers/cpu/tensor/reshape_helper.h:44 onnxruntime::ReshapeHelper::ReshapeHelper(const onnxruntime::TensorShape&, onnxruntime::TensorShapeVector&, bool) input_shape_size == size was false. The input tensor cannot be reshaped to the requested shape. Input shape:{1,2,20199}, requested shape:{1,2,101,199}

yea, unfortunately, issues still persist.
You gotta fallback to 0816 exporting or I may handle you the onnx export components' ported files to 1006

that change seems to break using the model in simple onnx inference:
Reshape node. Name:'/enc_p/encoder/attn_layers.0/Reshape_10' Status Message: /onnxruntime_src/onnxruntime/core/providers/cpu/tensor/reshape_helper.h:44 onnxruntime::ReshapeHelper::ReshapeHelper(const onnxruntime::TensorShape&, onnxruntime::TensorShapeVector&, bool) input_shape_size == size was false. The input tensor cannot be reshaped to the requested shape. Input shape:{1,2,20199}, requested shape:{1,2,101,199}

yea, unfortunately, issues still persist. You gotta fallback to 0816 exporting or I may handle you the onnx export components' ported files to 1006
but on a side note, I believe that either onnx export script, so core, needs adjustements in some way or either changes done, in 08XX or 1XXX releases, to: attentions, commons, modules, transforms - caused the whole process to fail somewhere along the way

Ok thank you for letting me know this.
Just throwing this out there, Onnxruntime's latest version was released three weeks ago: https://github.com/microsoft/onnxruntime/releases
Can we be sure the problem is not an external change that has broken onnx export?

that change seems to break using the model in simple onnx inference:
Reshape node. Name:'/enc_p/encoder/attn_layers.0/Reshape_10' Status Message: /onnxruntime_src/onnxruntime/core/providers/cpu/tensor/reshape_helper.h:44 onnxruntime::ReshapeHelper::ReshapeHelper(const onnxruntime::TensorShape&, onnxruntime::TensorShapeVector&, bool) input_shape_size == size was false. The input tensor cannot be reshaped to the requested shape. Input shape:{1,2,20199}, requested shape:{1,2,101,199}

yea, unfortunately, issues still persist. You gotta fallback to 0816 exporting or I may handle you the onnx export components' ported files to 1006
but on a side note, I believe that either onnx export script, so core, needs adjustements in some way or either changes done, in 08XX or 1XXX releases, to: attentions, commons, modules, transforms - caused the whole process to fail somewhere along the way

Ok thank you for letting me know this.
Just throwing this out there, Onnxruntime's latest version was released three weeks ago: https://github.com/microsoft/onnxruntime/releases
Can we be sure the problem is not an external change that has broken onnx export?

it's not the case because onnx is used for exporting ( onnx = framework )  while onnx runtime is a separate package, used for inference.  Current onnx is 15   and onnx runtime indeed 16.3.1 yet, runtime is backwards compatible with older onnx operators set.
Aside, I tested various combos, onnx 14/15 exporting ( operator sets 15, 14, 23 ) and few runtime versions

I just think that in general rvc should get updated with better onnx handling - Dynamo exporting rather than export script method

This is just a bugfix and I will fix the onnx related issues you mentioned in the future


The path used for writing to TelegramException.log is a security risk

The TelegramException class writes a log file TelegramException.log in the current path of the executing PHP script, because file_put_contents is called with just a filename. This can be a security risk when a public facing web server is in place, where the log file could be in the document root and can be accessed.

You're absolutely right, thanks for pointing this out!
An easy fix would be to restrict access to the file using .htaccess or within the nginx configuration.
Other option would be to offer the option to choose the destination of the TelegramException.log file. This would require the user to set the destination and actually make sure that it can't be accessed.
#88 Might need to be implemented after all.
Also, we'll need to add a simple .htaccess / nginx config snippet to the readme, so that users can protect themselves.

Maybe this could be closed now?
Commit https://github.com/akalongman/php-telegram-bot/commit/b1184d862d17fb8e300d57944658a9608742f904 deals with this.

yes thanks!


[BUG] A platform implementation for webview_flutter has not been set

Describe the bug
I see this error in the editor:
A platform implementation for webview_flutter has not been set
To Reproduce
Steps to reproduce the behavior:

Install as per the guide
Here's the versions installed:
quill_html_editor: ^2.2.8
webview_flutter: ^4.9.0
flutter --version
Flutter 3.24.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 2663184aa7 (5 weeks ago) • 2024-09-11 16:27:48 -0500
Engine • revision 36335019a8
Tools • Dart 3.5.3 • DevTools 2.37.3
Implement as per the guide (whole code below)
execute flutter run
see the issue

Expected behavior
The editor will load properly
Screenshots
Actual App I'm making:

Newly Created App with only quill_html_editor installed:

Desktop (please complete the following information):

OS: Windows
Browser [flutter Android Emulator]

Flutter Doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.24.3, on Microsoft Windows [Version 10.0.22631.4317], locale en-PH)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Build Tools 2019 16.11.41)
[√] Android Studio (version 2024.1)
[√] VS Code (version 1.94.2)
[√] Connected device (3 available)
[√] Network resources
• No issues found!
Additional context
This is the error seen in the editor:
'package:webview_flutter_platform_interface/src/platform_webview_controller.dart': Failed assertion: line 26 pos 7: 'WebViewPlatform.instance != null': A platform implementation for webview_flutter has not been set. Please ensure that an implementation of WebViewPlatform has been set to WebViewPlatform.instance before use. For unit testing, WebViewPlatform.instance` can be set with your own test implementation.
See also: https://docs.flutter.dev/testing/errors
pubspec.yaml:
dependencies:
http: ^1.2.2
flutter:
sdk: flutter
flutter_dotenv: ^5.0.2
provider: ^6.0.0
image_picker: ^1.1.2
dio: ^5.3.2
cupertino_icons: ^1.0.8
quill_html_editor: ^2.2.8
webview_flutter: ^4.9.0
path_provider: ^2.1.4
flutter --version
Flutter 3.24.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 2663184aa7 (5 weeks ago) • 2024-09-11 16:27:48 -0500
Engine • revision 36335019a8
Tools • Dart 3.5.3 • DevTools 2.37.3
main.dart
https://playcode.io/2051908

`
import 'package:flutter/material.dart';
import 'package:quill_html_editor/quill_html_editor.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
// This is the theme of your application.
//
// TRY THIS: Try running your application with "flutter run". You'll see
// the application has a purple toolbar. Then, without quitting the app,
// try changing the seedColor in the colorScheme below to Colors.green
// and then invoke "hot reload" (save your changes or press the "hot
// reload" button in a Flutter-supported IDE, or press "r" if you used
// the command line to start the app).
//
// Notice that the counter didn't reset back to zero; the application
// state is not lost during the reload. To reset the state, use hot
// restart instead.
//
// This works for code too, not just values: Most code changes can be
// tested with just a hot reload.
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({super.key, required this.title});
// This widget is the home page of your application. It is stateful, meaning
// that it has a State object (defined below) that contains fields that affect
// how it looks.
// This class is the configuration for the state. It holds the values (in this
// case the title) provided by the parent (in this case the App widget) and
// used by the build method of the State. Fields in a Widget subclass are
// always marked "final".
final String title;
@override
State createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
int _counter = 0;
late QuillEditorController controller;
bool _hasFocus = false;
final customToolBarList = [
ToolBarStyle.bold,
ToolBarStyle.italic,
ToolBarStyle.align,
ToolBarStyle.color,
ToolBarStyle.background,
ToolBarStyle.listBullet,
ToolBarStyle.listOrdered,
ToolBarStyle.clean,
ToolBarStyle.addTable,
ToolBarStyle.editTable,
];
final _toolbarColor = Colors.grey.shade200;
final _backgroundColor = Colors.white70;
final _toolbarIconColor = Colors.black87;
final _editorTextStyle = const TextStyle(
fontSize: 18,
color: Colors.black,
fontWeight: FontWeight.normal,
fontFamily: 'Roboto');
final _hintTextStyle = const TextStyle(
fontSize: 18, color: Colors.black38, fontWeight: FontWeight.normal);
void _incrementCounter() {
setState(() {
// This call to setState tells the Flutter framework that something has
// changed in this State, which causes it to rerun the build method below
// so that the display can reflect the updated values. If we changed
// _counter without calling setState(), then the build method would not be
// called again, and so nothing would appear to happen.
_counter++;
});
}
@override
void initState() {
controller = QuillEditorController();
controller.onTextChanged((text) {
debugPrint('listening to $text');
});
controller.onEditorLoaded(() {
debugPrint('Editor Loaded :)');
});
}
@override
Widget build(BuildContext context) {
// This method is rerun every time setState is called, for instance as done
// by the _incrementCounter method above.
//
// The Flutter framework has been optimized to make rerunning build methods
// fast, so that you can just rebuild anything that needs updating rather
// than having to individually change instances of widgets.
return Scaffold(
appBar: AppBar(
// TRY THIS: Try changing the color here to a specific color (to
// Colors.amber, perhaps?) and trigger a hot reload to see the AppBar
// change color while the other colors stay the same.
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
// Here we take the value from the MyHomePage object that was created by
// the App.build method, and use it to set our appbar title.
title: Text(widget.title),
),
body: Center(
// Center is a layout widget. It takes a single child and positions it
// in the middle of the parent.
child: Column(
// Column is also a layout widget. It takes a list of children and
// arranges them vertically. By default, it sizes itself to fit its
// children horizontally, and tries to be as tall as its parent.
//
// Column has various properties to control how it sizes itself and
// how it positions its children. Here we use mainAxisAlignment to
// center the children vertically; the main axis here is the vertical
// axis because Columns are vertical (the cross axis would be
// horizontal).
//
// TRY THIS: Invoke "debug painting" (choose the "Toggle Debug Paint"
// action in the IDE, or press "p" in the console), to see the
// wireframe for each widget.
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
ToolBar(
toolBarColor: _toolbarColor,
padding: const EdgeInsets.all(8),
iconSize: 25,
iconColor: _toolbarIconColor,
activeIconColor: Colors.greenAccent.shade400,
controller: controller,
crossAxisAlignment: WrapCrossAlignment.start,
direction: Axis.horizontal,
customButtons: [
Container(
width: 25,
height: 25,
decoration: BoxDecoration(
color: _hasFocus ? Colors.green : Colors.grey,
borderRadius: BorderRadius.circular(15)),
),
InkWell(
onTap: () => unFocusEditor(),
child: const Icon(
Icons.favorite,
color: Colors.black,
)),
InkWell(
onTap: () async {
var selectedText = await controller.getSelectedText();
debugPrint('selectedText $selectedText');
var selectedHtmlText =
await controller.getSelectedHtmlText();
debugPrint('selectedHtmlText $selectedHtmlText');
},
child: const Icon(
Icons.add_circle,
color: Colors.black,
)),
],
),
Expanded(
child: QuillHtmlEditor(
text: "HelloThis is a quill html editor example",
hintText: 'Hint text goes here',
controller: controller,
isEnabled: true,
ensureVisible: false,
minHeight: 500,
autoFocus: false,
textStyle: _editorTextStyle,
hintTextStyle: _hintTextStyle,
hintTextAlign: TextAlign.start,
padding: const EdgeInsets.only(left: 10, top: 10),
hintTextPadding: const EdgeInsets.only(left: 20),
backgroundColor: _backgroundColor,
inputAction: InputAction.newline,
onEditingComplete: (s) => debugPrint('Editing completed $s'),
loadingBuilder: (context) {
return const Center(
child: CircularProgressIndicator(
strokeWidth: 1,
color: Colors.red,
));
},
onFocusChanged: (focus) {
debugPrint('has focus $focus');
setState(() {
_hasFocus = focus;
});
},
onTextChanged: (text) =>
debugPrint('widget text change $text'),
onEditorCreated: () {
debugPrint('Editor has been loaded');
setHtmlText('Testing text on load');
},
onEditorResized: (height) =>
debugPrint('Editor resized $height'),
onSelectionChanged: (sel) =>
debugPrint('index ${sel.index}, range ${sel.length}'),
),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
///[getHtmlText] to get the html text from editor
void getHtmlText() async {
String? htmlText = await controller.getText();
debugPrint(htmlText);
}
///[setHtmlText] to set the html text to editor
void setHtmlText(String text) async {
await controller.setText(text);
}
///[insertNetworkImage] to set the html text to editor
void insertNetworkImage(String url) async {
await controller.embedImage(url);
}
`

same issue
errors.dart:296  Uncaught (in promise) DartError: LateInitializationError: Field 'webviewController' has not been initialized.
at Object.throw [as throw] (errors.dart:296:3)
at get [_webviewController] (quill_editor_wrapper.dart:163:27)
at quill_editor_wrapper.QuillHtmlEditorState.new._setHtmlTextToEditor (quill_editor_wrapper.dart:465:37)
at _setHtmlTextToEditor.next ()
at runBody (async_patch.dart:84:54)
at Object._async [as async] (async_patch.dart:127:5)
at [_setHtmlTextToEditor] (quill_editor_wrapper.dart:464:30)
at quill_editor_wrapper.QuillEditorController.new.setText (quill_editor_wrapper.dart:1351:44)
at setText.next ()
at runBody (async_patch.dart:84:54)
at Object._async [as async] (async_patch.dart:127:5)
at quill_editor_wrapper.QuillEditorController.new.setText (quill_editor_wrapper.dart:1350:17)
at NewAdvertisementWidget.dart:60:9
at NewAdvertisementWidget._NewAdvertisementState.new.setState (framework.dart:1203:30)
at NewAdvertisementWidget._NewAdvertisementState.new.getData (NewAdvertisementWidget.dart:53:7)
at getData.next ()
at async_patch.dart:45:50
at _RootZone.runUnary (zone.dart:1661:54)
at _FutureListener.thenAwait.handleValue (future_impl.dart:163:18)
at handleValueCallback (future_impl.dart:861:44)
at _Future._propagateToListeners (future_impl.dart:890:13)
at [_completeWithValue] (future_impl.dart:666:5)
at future_impl.dart:966:16
at _RootZone.runUnary (zone.dart:1661:54)
at _FutureListener.then.handleValue (future_impl.dart:163:18)
at handleValueCallback (future_impl.dart:861:44)
at _Future._propagateToListeners (future_impl.dart:890:13)
at [_completeWithValue] (future_impl.dart:666:5)
at async._AsyncCallbackEntry.new.callback (future_impl.dart:736:7)
at Object._microtaskLoop (schedule_microtask.dart:40:11)
at _startMicrotaskLoop (schedule_microtask.dart:49:5)
at async_patch.dart:181:7


Bug fix for scrolling fields from under the keyboard on iOS

This fixes a bug I was experiencing with how input fields are scrolled into view. Specifically in my case, inside of a modal. Bug illustrated at http://forum.ionicframework.com/t/modals-scroll-textareas-out-of-view/34274

Hey @plan8studios, have you tried this with native scrolling (overflow-scroll="true")? I think a number of these issues are coming from JS scrolling which we are phasing out and making not the default in 1.2

I have. But that resulted in not being able to scroll the modal at all.


The "resolved" data field is not currently accessible

I've been working on utilizing this package in a new project of mine. However, I've hit a bit of a road bump trying to access the resolved data of an interactive response via a "Message Command." In this case, I'm trying to get data of the message such as the content.
Are there any plans for implementing this functionality? If so, any sort of timeframe? If any assistance is needed in regards to contributing, feel free to let me know and I'll take my best shot at it (as I've been going through the source code and docs a bit more since I found this package a few hours ago).
https://github.com/0x2b00b1e5/rusty-interaction/blob/6cefdf725d8028f981d186e6fc845560ac625a69/src/types/application.rs#L257-L259

Hey, thanks for using this library.
Right now I haven't really been able to implement the resolved field yet. It's probably really simple but right now I have very little time to fix it as my main priority for this library is going to get rid of actix-web and use hyper as the http backbone (as this should improve performance and remove a lot of unused dependencies). The fact that I am the sole developer and maintainer doesn't really help too. If you can, feel free to implement and PR it!
IIRC, the ResolvedData structure is a pretty simple data structure which should be easy to implement, as most of the parsing is done by serde.

If you really can't wait. All the data you want can also be found in the Context.interaction field, which you should just be able to access.

Moving to a hyper (or hyper-based package) seems like a good move! I was originally looking into using hyper before coming across this! I'll see if I can help as I'm genuinely interested in expanding my knowledge here!
For the ResolvedData, I haven't seen information such as the associated message with the interaction. Are there any extra steps I need to take?

All I could find is the message object in Interaction. I would figure its put there.
So I guess trying adding a message field to Interaction would be a good start. I am not sure if a Message structure exists yet and I am also unsure if this message field is also added without having the upcoming read-messages intent.

I was more so referring to the response found here. I see when I do <Context>.interaction.data, it gives me some information. however, it excludes resolved data such as the message(s) associated with the response.
That should clarify where I'm trying to come from.

Ah I see now. ResolvedData shouldn't be hard to implement since it's just another data structure. I think Discord has documented it. Just make sure when implementing you use Option<Type>.

Got it. Thanks for the assistance and insight. I'll mess about with this and see what I come up with!

Hey, so I've been working on a PR with some of these new structs to add. I have a question about serde (as I'm fairly new to Rust). When do I use these macros and when do I not use them?
#[serde_as(as = "Option<DisplayFromStr>")]
#[serde(default)]

So sometimes you have to tell serde how to 'read' the data and what it should output. So in the case of Snowflake, which is a type alias for u64, DisplayFromStr will serialize the data with Display, and deserialize it with FromStr. The reason [ #[serde(default)]` comes afterwards is because of the `Option<>`, which is explained here


Seqlet calling issues

Thank you for adding functionality for calling seqlets, this is really useful. I encountered a few issues when experimenting with the new functions.
With tfmodisco_seqlets:

When setting flank=0 no seqlets are returned. I think it's because of this line, which sets all entries equal to negative infinity: X_sum[:, -flank:] = -numpy.inf

The device argument lacks an explanation. I got an error because some tensors were on cpu and some on cuda with the default device='cuda'. Also, it's not possible to put the input tensor on cuda, so it seems the function only works with device='cpu'.

With recursive_seqlets:
It seems that returned seqlets are skewed to the right, i.e. often extending beyond the core 'motif' on the right side, but not on the left side. This is most apparent when using a rather large value for min_seqlet_len, such as 10. It could be related to this line:
end = min(end + min_seqlet_len + additional_flanks - 1, l)
where min_seqlet_len is added to end.
With plot_logo:
plot_logo fails with seqlets if there are more annotations that n_tracks and show_extra is true,
since motif = row.values[0] is a float and so has no length.

fixed, thanks!
I've removed device. At one point, I wanted to make tfmodisco seqlet calling work on a GPU but the usage of sklearn's isotonic regression function made that not feasible.

For recursive_seqlets can you show a screenshot of an example? I wouldn't expect the high-attribution characters to fall in the middle, necessarily. Rather, it will be whichever span gives the best score. If that's what you want, I'd use additional_flanks, which will add more nucleotides on either side regardless of their effect on the p-value.
plot_logo issue is fixed.
Will be available next release, hopefully next week.

I've tried making a reproducible example.
import torch
import tangermeme.seqlet
import tangermeme.plot
import matplotlib.pyplot as plt
g_cpu = torch.Generator()
g_cpu.manual_seed(2147483647)

Generate 50 random sequences of length 100 with random attributions in the interval [-1,1)
X = torch.rand((50,100), generator = g_cpu)*2-1

Call recursive seqlets:
seqlets = tangermeme.seqlet.recursive_seqlets(X, threshold = 0.01)
seqlets

	example_idx	start	end	attribution	p-value
0	23	17	21	3.300204	0.000402
1	9	89	93	3.036839	0.004016

The start and end are supposed to be bed-formatted, meaning end is not included, and indeed this agrees with X[9, 89:93].sum() > tensor(3.0368).
I would expect the results to be invariant to reversing the attributions along the length of the sequence:
X_rev = torch.flip(X, dims = (1,))
rseqlets = tangermeme.seqlet.recursive_seqlets(X_rev, threshold = 0.01)
rseqlets['rev_start'] = 100 - rseqlets['end']
rseqlets['rev_end'] = 100 - rseqlets['start']
rseqlets

	example_idx	start	end	attribution	p-value	rev_start	rev_end
0	9	6	10	3.046904	0.003210	90	94
1	15	1	5	-2.931187	0.008232	95	99

However, one seqlet is found in a different sequence, and the one in sequence 9 is shifted by 1.
X_rev[9, 6:10].sum(), X_rev[9, 7:11].sum() > (tensor(3.0469), tensor(3.0368))
This hints at some left-right asymmetri.
Let's try to insert a symmetrical 'motif' in sequence 0.
motif = torch.arange(0.1,2.1,0.2)
X[0, 10:20] = motif
X[0, 20:30] = torch.flip(motif, dims = (0,))

seqlets = tangermeme.seqlet.recursive_seqlets(X, threshold = 0.01)
seqlets

	example_idx	start	end	attribution	p-value
0	0	16	27	15.5	0.001315

The peak of the 'motif' is at positions 19 and 20. We thus have 3 positions to the left of the peak and 6 positions to the right of the peak.
idx = 0
plt.figure(figsize=(12, 2))
ax = plt.subplot(111)
t = torch.stack([X[idx], torch.zeros_like(X[idx]), torch.zeros_like(X[idx]), torch.zeros_like(X[idx])])
tangermeme.plot.plot_logo(t, ax=ax, start=0, end=100, annotations=seqlets[seqlets['example_idx'] == idx], score_key='attribution', show_extra=False)
plt.ylim(-1, 1.5)

plt.xlabel("Genomic Coordinate")
plt.ylabel("Attribution")
plt.title("DeepLIFT/SHAP")
plt.show()

When we plot it, we even see the seqlet extending 4 positions further to the right than to the left. I think the extra position we observe when plotting is due to plot_logo including the end position when plotting, which is misleading. Still, the algorithm appears to have a preference for extending the motif to the right.
Another artefact is the fact that increasing min_seqlet_len can produce more seqlets, which is a bit counterintuitive. This probably derives from the fact that only subseqlets down to min_seqlet_len needs to have a p-value below the threshold.


support for [TEMPORARY {seconds}] on FT.CREATE

further reference:
https://oss.redislabs.com/redisearch/Commands.html#ftcreate

fixed by #70


[$250] Safari - Unable to play video attachment

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.63-3
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?:
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @rojiphil
Slack conversation (hyperlinked to channel name): ts_external_expensify_bugs
Action Performed:

Sign in to an existing account
Navigate to a chat which has a video attachment
Attempt to play the video.

Expected Result:
The video should play
Actual Result:
The app crashes with Not supported error in dev environment
Unable to play the video in staging environment
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Standalone
[ ] Android: HybridApp
[ ] Android: mWeb Chrome
[ ] iOS: Standalone
[ ] iOS: HybridApp
[ ] iOS: mWeb Safari
[x] MacOS: Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

https://github.com/user-attachments/assets/12916007-b2a0-4d6d-8192-c66ec9a85c73
https://github.com/user-attachments/assets/45f995b2-4b69-4f8c-bd7e-05144c4fb888
https://github.com/user-attachments/assets/cb92e81d-0f66-4265-9661-878e6f774482
https://github.com/user-attachments/assets/2b502b64-83c3-4b81-bc7b-b57cf6892ab0 (Video used as attachment)
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021858504313972501020
Upwork Job ID:<PHONE_NUMBER>972501020
Last Price Increase: 2024-12-09

Issue OwnerCurrent Issue Owner: @hoangzinh

@m-natarajan can you please the video format that's causing the bug coz mp4 is working in safari

Proposal
Please re-state the problem that we are trying to solve in this issue.
A video attachment in the chat won't start playing in Safari on macOS.
What is the root cause of that problem?
Safari simply can't download and play this MP4 video, that @m-natarajan attached. Neither if downloaded from Express.js, nor from Apache.
Safari might be sensitive for HTTP Ranges (https://blog.logrocket.com/streaming-video-in-safari/), but Express now supports acceptRanges option for res.sendFile(), and it still can't load the video to the client. Nor could Apache, as I tested it.
What changes do you think we should make in order to solve the problem?
Based on my discovery, it is a Safari bug, so I reported it here: https://bugs.webkit.org/show_bug.cgi?id=283390
What alternative solutions did you explore? (Optional)
Reminder: Please use plain English, be brief and avoid jargon. Feel free to use images, charts or pseudo-code if necessary. Do not post large multi-line diffs or write walls of text. Do not create PRs unless you have been hired for this job.

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~0101f7c93c2c56ada0

Proposal
Updated
I added images to proof that the video won't load in Safari, but do load in Chrome.

Proposal
Please re-state the problem that we are trying to solve in this issue.
On Safari, video uploaded to chat will not play. Preview of video shows correctly. Console error shows Not supported error.
What is the root cause of that problem?
Safari does not support AV1 codec. Partial support has been added in Safari 18.1+ but requires specific hardware support such as a M3 MacBook Pro. Video playback on Chrome and Edge works because AV1 codec is supported.
What changes do you think we should make in order to solve the problem?
After user clicks play, check for browser support of video codec using the onError event. If browser does not support the codec, show a message notifying user Your browser does not support playing this video.  This message will replace the video preview.
What alternative solutions did you explore? (Optional)

@hoangzinh I uploaded an AV1 mp4 video file to a chat and witness the same issue as the bug reporter. I confirmed that video was indeed AV1 video codec. This screenshot below shows Safari does not support AV1 unless it has the hardware decoder which is found in newest Macs (M3+) and iPhone 15+.

The onError event previous referred to is on the <video> element. Unfortunately this error does not provide the specific error so we'll have to assume that every error is "browser does not support the codec". There is no way to get codec information from the browser itself. It's possible for the backend to provide this codec information. If we find the video element has an error, we can update our component to show an error state. This error state would be a message that states "Your browser does not support playing this video".
Just one idea, open to other solutions.

Issue not reproducible during KI retests. (First week)

My PR will be ready for review at Dec 16th.

Issue not reproducible during KI retests. (Second week)

I like the idea of reusing the fallback image pattern. However, I feel like the error message shown in the proposal you linked is pretty generic? Do we know for a fact that we can't play the video because the type isn't supported? If so, let's just tell the user that.

Agree with that. Also, we'll want to make a new custom icon that fits with our system for this situation, but I like using the fallback image pattern.

I'm happy to work on that icon if we wanna go this route.

Love it, I say do it!

Ok I've been exploring several different "video slash" icons and this is the best one. What do we think @Expensify/design?
Video Slash.svg.zip

I did explore other versions that used the "video camera" style icon, but they really just don't read as well as the film in our system IMO. Open to other ideas though!

Will we apply one of the fallback images above to the attachment view?

Yes I think we would. I imagine we'd show it like in the proposal:

I like what you have there Danny! I don't feel too strongly about film vs videocamera - I think the film icon communicates the point.

@hoangzinh @puneetlath I'm still working on the code, it's trickier than I thought. Especially with the Attachment view, because it shares the Video element with the videoplayer component in the chat, and I find it hard to pass the error state to it.
But I'm working on it, and will update you soon.

Dig the icon @dannymcclain .

@hoangzinh @puneetlath Below is two videos showing the current state, with light and dark themes.
It seems to work, the only thing missing is the text that says the video isn't playable. However, I can't implement it, because it should only appear in the Attachment view, but the Attachment view don't actually know that there is an error, it's content only got attached to it from the chat's video element, with Node.appendChild(). And the chat's video element doesn't know about if it's element got appended to the Attachment view, so it can't render a text under the icon, if the user is viewing it in Attachment view.
Do you have any ideas on how to solve this, or should I create a draft PR to show it in my code where is this thing happening, or do you think that this feature can be accepted without that text under the icon?
https://github.com/user-attachments/assets/29d8934f-746d-466c-8ed2-893d5fa60a54
https://github.com/user-attachments/assets/42609b11-8f8b-4605-8bdf-7aed3118812e

@Expensify/design do you think in this situation just the broken video icon is enough? If it's super involved/impossible to know when to display the text, I think I would be fine with just the icon?
Also, can we check on the colors we're using in the thumbnail and make sure we're using the right ones to avoid collisions?

I think I would be fine with just the icon?

Agree, I think it works just fine.

Agree with icon being enough

I changed the theme colors on the thumbnail according to @dannymcclain 's design.
 I will create the PR tomorrow, after testing it on every platform.

I tested my code on every platform, and it works fine, except on iOS native, because this platform doesn't throw an error when this bad video is played, it just simply won't paint it, but it still acts like it can play it.
This is from the production iOS app:
https://github.com/user-attachments/assets/247a39d0-9db2-4b08-a3b3-2d2a1cfbf5bb
So I'm thinking on how to solve this.

Unfortunately no. Do you think we could make it a separate issue? Because the original issue is about Safari having an error during playback, and it can be fixed. But iOS have a different problem, that it plays the video, but not actually showing it.

I created the draft PR. I added a video into the description, showing the iOS native issue. I will try to solve it, and I will come with an update in a few days.


Improving specification evaluation performance

I don't like current spec evaluation because it compiles expressions with every call to Evaluate.
So i have added benchmark project to provide ability to measure performance and replaced IEnumerable<(Expression<Func<T, string>>, string, int)> ISpecification{T}.SearchCriterias with IEnumerable<SearchExpressionBase<T>>. There also 2 approaches to compile expressions: one is default dotnet compile and second is CompileFast from dadhi/FastExpressionCompiler.
With this changes user code could cache specifications to not just reduce amount of allocations but also to avoid recompilation.
I'm not sure if it's super precise benchmark since i don't have enough experience in such things and i've ran it on my home PC, however everyone can do it by himself to verify results.
I need to know, should i continue and do the same for other expressions or not?
Long story short, here's the code and benchmark results
public interface ISpecification<T>
{
    // other members omitted for brevity
    IEnumerable<SearchExpressionBase<T>> SearchCriterias { get; }
}

public abstract class SearchExpressionBase<T>
{
    protected SearchExpressionBase(Expression<Func<T, string>> source, string searchTerm, int searchGroup = 1)
    {
        this.Source = source;
        this.SearchTerm = searchTerm;
        this.SearchGroup = searchGroup;
    }

    public Expression<Func<T, string>> Source { get; }

    public string SearchTerm { get; }

    public int SearchGroup { get; }

    public abstract Func<T, string> SourceFunc { get; }
}

public sealed class SearchExpression<T> : SearchExpressionBase<T>
{
    private readonly Lazy<Func<T, string>> sourceFuncLazy;

    public SearchExpression(Expression<Func<T, string>> source, string searchTerm, int searchGroup = 1) : base(source, searchTerm, searchGroup)
    {
        this.sourceFuncLazy = new Lazy<Func<T, string>>(this.Source.Compile);
    }

    public override Func<T, string> SourceFunc => this.sourceFuncLazy.Value;
}

public sealed class SearchExpressionFast<T> : SearchExpressionBase<T>
{
    private readonly Lazy<Func<T, string>> sourceFuncLazy;

    public SearchExpressionFast(Expression<Func<T, string>> source, string searchTerm, int searchGroup = 1) : base(source, searchTerm, searchGroup)
    {
        this.sourceFuncLazy = new Lazy<Func<T, string>>(() => this.Source.CompileFast());
    }

    public override Func<T, string> SourceFunc => this.sourceFuncLazy.Value;
}

public static ISpecificationBuilder<T> Search<T>(
    this ISpecificationBuilder<T> specificationBuilder,
    Expression<Func<T, string>> selector,
    string searchTerm,
    int searchGroup = 1) where T : class
{
    ((List<SearchExpressionBase<T>>)specificationBuilder.Specification.SearchCriterias)
        .Add(new SearchExpression<T>(selector, searchTerm, searchGroup));

    return specificationBuilder;
}

public static ISpecificationBuilder<T> SearchFast<T>(
    this ISpecificationBuilder<T> specificationBuilder,
    Expression<Func<T, string>> selector,
    string searchTerm,
    int searchGroup = 1) where T : class
{
    ((List<SearchExpressionBase<T>>)specificationBuilder.Specification.SearchCriterias)
        .Add(new SearchExpressionFast<T>(selector, searchTerm, searchGroup));

    return specificationBuilder;
}

public class SearchEvaluator : IInMemoryEvaluator
{
    private SearchEvaluator() { }
    public static SearchEvaluator Instance { get; } = new SearchEvaluator();

    public IEnumerable<T> Evaluate<T>(IEnumerable<T> query, ISpecification<T> specification)
    {
        foreach (var searchGroup in specification.SearchCriterias.GroupBy(x => x.SearchGroup))
        {
            var criterias = searchGroup.Select(x => (x.SourceFunc, x.SearchTerm));

            query = query.Where(x => criterias.Any(c => c.SourceFunc(x).Like(c.SearchTerm)));
        }

        return query;
    }
}

[MemoryDiagnoser, MedianColumn, RankColumn, CsvExporter]
public class InMemorySearchEvaluatorBenchmark
{
    private SearchEvaluator evaluator;
    private Consumer consumer;
    private IEnumerable<string> data;
    private TestSpecification specification;
    private TestSpecificationFast specificationFast;

    [Params(1, 10, 100, 1000)]
    public int RepeatCount;

    [GlobalSetup]
    public void GlobalSetup()
    {
        this.evaluator = SearchEvaluator.Instance;
        this.data = Enumerable.Range(1, 247).Select(x => $"Test {x % 124} data.");
        this.specification = new TestSpecification();
        this.specificationFast = new TestSpecificationFast();
        this.consumer = new Consumer();
    }

    [Benchmark]
    public void InMemorySearchEvaluator_Evaluate()
    {
        for (var i = 0; i < this.RepeatCount; ++i)
        {
            this.evaluator.Evaluate(this.data, this.specification).Consume(this.consumer);
        }
    }

    [Benchmark]
    public void InMemorySearchEvaluator_EvaluateFast()
    {
        for (var i = 0; i < this.RepeatCount; ++i)
        {
            this.evaluator.Evaluate(this.data, this.specificationFast).Consume(this.consumer);
        }
    }

    private sealed class TestSpecification : Specification<string>
    {
        public TestSpecification()
        {
            this.Query.Search(x => x, "%123%");
        }
    }

    private sealed class TestSpecificationFast : Specification<string>
    {
        public TestSpecificationFast()
        {
            this.Query.SearchFast(x => x, "%123%");
        }
    }
}

BenchmarkDotNet=v0.13.1, OS=Windows 10.0.19042.1165 (20H2/October2020Update)
Intel Core i5-9600K CPU 3.70GHz (Coffee Lake), 1 CPU, 6 logical and 6 physical cores
.NET SDK=6.0.100
  [Host]     : .NET 6.0.0 (<IP_ADDRESS>210), X64 RyuJIT
  DefaultJob : .NET 6.0.0 (<IP_ADDRESS>210), X64 RyuJIT

Before

Method
RepeatCount
Mean
Error
StdDev
Median
Rank
Gen 0
Gen 1
Gen 2
Allocated

InMemorySearchEvaluator_Evaluate
1
7.258 ms
0.1064 ms
0.0943 ms
7.246 ms
1
226.5625
109.3750
7.8125
1 MB

InMemorySearchEvaluator_Evaluate
10
72.422 ms
1.0351 ms
0.9175 ms
72.293 ms
2
2285.7143
1142.8571
-
10 MB

InMemorySearchEvaluator_Evaluate
100
738.127 ms
14.2779 ms
16.9969 ms
732.809 ms
3
23000.0000
11000.0000
-
105 MB

InMemorySearchEvaluator_Evaluate
1000
7,304.372 ms
69.1068 ms
64.6425 ms
7,320.962 ms
4
234000.0000
117000.0000
10000.0000
1,049 MB

After

Method
RepeatCount
Mean
Error
StdDev
Median
Rank
Gen 0
Allocated

InMemorySearchEvaluator_Evaluate
1
104.2 μs
0.92 μs
0.77 μs
103.7 μs
1
14.4043
67 KB

InMemorySearchEvaluator_EvaluateFast
1
103.8 μs
0.51 μs
0.48 μs
103.7 μs
1
14.4043
67 KB

InMemorySearchEvaluator_Evaluate
10
1,015.9 μs
12.42 μs
11.62 μs
1,016.4 μs
2
144.5313
665 KB

InMemorySearchEvaluator_EvaluateFast
10
1,035.8 μs
16.52 μs
15.45 μs
1,037.6 μs
3
144.5313
665 KB

InMemorySearchEvaluator_Evaluate
100
10,844.6 μs
215.23 μs
376.97 μs
10,984.3 μs
5
1437.5000
6,651 KB

InMemorySearchEvaluator_EvaluateFast
100
10,265.1 μs
121.38 μs
113.54 μs
10,246.4 μs
4
1437.5000
6,651 KB

InMemorySearchEvaluator_Evaluate
1000
103,440.0 μs
1,181.59 μs
1,105.26 μs
103,007.3 μs
6
14400.0000
66,509 KB

InMemorySearchEvaluator_EvaluateFast
1000
110,561.6 μs
840.64 μs
786.33 μs
110,465.3 μs
7
14400.0000
66,509 KB

Hey @devbased,
First of all this, thanks for your interest in doing this. This is only related to in-memory evaluators (in this case you demonstrated for the search evaluator).
For clarity, let's just analyze what we have right now. We keep the state in the specification either in form of some simple values or Expressions. Then, we have the following types of evaluators:

SpecificationEvaluator - It evaluates the specification state for the given persistence plugin package. In the case of Entity Framework, we start with the DbSet and build the IQueryable to the final form. We don't compile the expressions in this case, we pass them in their original form. This is the main use case of the package (probably 95% of the cases). We use specifications to form the queries for data access.
InMemorySpecificationEvaluator - This feature was added as an addition. Why not use the same specs for the evaluation of in-memory collections. But, this is somewhat niche usage, and not sure if it's used often by the users. In this case, we need to compile the expressions, and this is done during the evaluation. We didn't bother too much to try to cache them, since specs are a bit dynamic constructs. You create new required specs on each request, pass some values/parameters during construction, and get the results. It's rarely the case that you will use the same spec multiple times within the same request, right? If that's the case, then trying to cache them, mehh not so much benefit. In your benchmarks, you're using the same spec over and over again, and in fact with a predefined search string. That's not a very realistic scenario. If you create the spec within your loop and pass different parameters, I assume you'll get somewhat the same results.

Anyhow, this was great work, thank you. I'll analyze it further next week, and see how we can benefit from it in the best way. If we don't see any downside of doing this, then why not, we'll implement it.
To be honest, I don't care so much about the in-memory evaluators 😄  We have a bigger issue with Include chains, in terms of performance. We are forced to keep the state in form of LambdaExpressions, and then construct the IQueryable through reflection (it's done because of multiple inner return types). I'll be quite happy if anyone has better ideas on that subject. That would be really great improvement.

Good point. But i think if library will be well structured and optimized for most use cases it will encourage people to stick to this approach. Like you have said, user basically has a bunch of specifications and he's free to use them with any collection, doesn't matter in-memory or persisted one. They could be cached across requests it's up to user to decide to keep spec instance somewhere or not. But for now even if they keep it, it won't give much.
About include lambdas, not sure if i understand where's heavy part. typeof() is lightweight and efcore internally does the same: creates query over method invocation. Yes, we have 2 CreateQuery instead of 1 for each include, probably it can be mitigated by constructing delegate, which will directly call efcore's extension method, and cache it.

You're right. Perhaps we have to give that flexibility to the users. Anyway, this will affect only the in-memory evaluations.
Regarding the Include infrastructure, here is the extension IncludeExtensions. I changed it a few times and it's not terribly bad now, but still, I'm not happy that we have to do it this way. We're duplication some work done in EF, and Expression.Call uses reflection in the background.
For context, read this PR #83 and this issue

Hey @devbased
I just took a look at your proposal. Let's implement it, but with the following considerations:

We'll use the default dotnet compile. The difference is somewhat negligible, and we don't want to be dependent on additional dependencies for the base package.
We'll introduce new [Name]ExpressionInfo constructs which will hold all related information. We'll need constructs for Search, Where and Order.
You can place them in "Expressions" folder as you did, but since these will be public to the users, let's keep the root namespace Ardalis.Specification.
Move the IncludeExpressionInfo into this newly created folder too.

Proposed implementation:
public interface ISpecification<T>
{
    IEnumerable<SearchExpressionInfo<T>> SearchCriterias { get; }
}

public class SearchExpressionInfo<T>
{
    private readonly Lazy<Func<T, string>> selectorFunc;

    public SearchExpressionInfo(Expression<Func<T, string>> selector, string searchTerm, int searchGroup = 1)
    {
        _ = selector ?? throw new ArgumentNullException(nameof(selector));
        if (string.IsNullOrEmpty(searchTerm)) throw new ArgumentNullException(nameof(searchTerm));

        this.Selector = selector;
        this.SearchTerm = searchTerm;
        this.SearchGroup = searchGroup;

        this.selectorFunc = new Lazy<Func<T, string>>(this.Selector.Compile);
    }

    public Expression<Func<T, string>> Selector { get; }

    public string SearchTerm { get; }

    public int SearchGroup { get; }

    public Func<T, string> SelectorFunc => this.selectorFunc.Value;
}

@fiseni Seems good. Should i remove benchmark project?

Yes, please remove the benchmark project. We might need something more generic.

Note: This is a breaking change for all users that have been accessing the specification state directly. We should document it in release notes.

For those of use that have been accessing specification state, what is the fix for this breaking change?
This stopped working and is throwing an invalid cast exception on 6.0.0
public static IOrderedSpecificationBuilder<T> OrderBy<T>(
        this ISpecificationBuilder<T> specificationBuilder,
        Expression<Func<T, object>> orderExpression,
        SortOrder orderBy)
    {
        ((List<(Expression<Func<T, object>> OrderExpression, OrderTypeEnum OrderType)>)specificationBuilder
                .Specification.OrderExpressions)
            .Add(orderBy == SortOrder.DESC
                ? (orderExpression, OrderTypeEnum.OrderByDescending)
                : (orderExpression, OrderTypeEnum.OrderBy));

        var orderedSpecificationBuilder = new OrderedSpecificationBuilder<T>(specificationBuilder.Specification);
        return orderedSpecificationBuilder;
    }


fix new Controller instance is failed

old code is
func (t tControllers) newC(w http.ResponseWriter, r *http.Request, ctr, act string) *contr.Controllers {
	// Allocate a new controller. Set values of special fields, if necessary.
	c := &contr.Controllers{}

	// Allocate its parents. Make sure controller of every type
	// is allocated just once, then reused.
	c.Templates = c.Errors.Templates
	c.Errors = &c5.Errors{}
	c.Static = &c3.Static{}
	c.Sessions = &c2.Sessions{

		Request: r,

		Response: w,
	}
	c.Requests = &c1.Requests{

		Request: r,

		Response: w,
	}
	c.Global = &c0.Global{

		CurrentAction: act,

		CurrentController: ctr,
	}
	c.Errors.Templates = &c4.Templates{}
	c.Errors.Templates.Requests = c.Requests
	c.Errors.Templates.Global = c.Global
	c.Templates.Requests = c.Requests
	c.Templates.Global = c.Global

	return c
}

new code is

func (t tControllers) newC(w http.ResponseWriter, r *http.Request, ctr, act string) *contr.Controllers {
	// Allocate a new controller. Set values of special fields, if necessary.
	c := &contr.Controllers{}

	// Allocate its parents. Make sure controller of every type
	// is allocated just once, then reused.
	c.Templates = &c4.Templates{}
	c.Errors = &c5.Errors{}
	c.Static = &c3.Static{}
	c.Sessions = &c2.Sessions{

		Request: r,

		Response: w,
	}
	c.Requests = &c1.Requests{

		Request: r,

		Response: w,
	}
	c.Global = &c0.Global{

		CurrentAction: act,

		CurrentController: ctr,
	}
	c.Errors.Templates = c.Templates
	c.Templates.Requests = c.Requests
	c.Templates.Global = c.Global

	return c
}

Good day, @runner-mei. Sorry for the late reply I didn't have a chance to pay more attention to the project earlier.
Thank you for your contribution, I'm merging this PR. As a next step I'm going to close #3 and #40 to simplify further support and evolution of generate-handlers tool.


Only allow same fluids in active fluidtank towers.

Implements feature #4165
If the current fluidtank is active and contains no fluid, check if the fluidtank underneath has the same fluid.
If it's the same as the one being inserted, accept the fluid. If they aren't the same, do not accept the fluid.
If the fluidtank underneath will execute the same checks if active.
Original behaviour is the same with non active fluidtanks.

Two pictures describing before and after filling the top tank.
Top tanks are empty, pipe underneath configured for pull on top, push on bottom.
The three top tanks in the middle are active (Shift click once with configurator).
Bottom once aren't outputting for demonstration purposes.
One of the bottom once is empty, one has lava, one has water.

Implemented perfectly, I love how the functionality only applies when the tank is in active state.  Thanks!


Convert text to rendered code

Super cool website! Very minor, but maybe Pandas in this instance should be pandas to stay consistent with os?

Also here:

Thanks for pointing this out!! I'll fix it ASAP

Okay, I think I found and fixed all of that markdown inconsistency.
Also, per my contributing guidelines I'd say you catching this definitely earns credit as one of the 'bug finders' (see here) so I've added your name and linked your GitHub profile.
Totally happy to link somewhere else (instead of or in addition to) if you'd like that changed or remove you from the site if you'd rather not be tagged in this way. Let me know your preference.
Thanks again for pointing that issue out and I'll leave this issue open for a day so you can weigh in on how/whether you'd like to be mentioned in the contributing credit page!

Super cool! Thanks for the acknowledgment, it looks great to me. I'd be happy to help with the page if there are definable tasks that need to be taken care of. Like you, I have used R longer, but have used Python/pandas a bit as well and switch between the two often.

Thank you for catching that mistake! I have a general plan of including a 'spatial data' section in the future but nothing clearly-defined yet. If/when I come up with something I'll definitely reach out!
Also, if you see a sort of 'coding fundamentals' topic that is currently missing I'd love if you pointed it out to me or (if you'd prefer) I can give you access to create the module yourself.


upstart and systemd tasks added to stop/start/restart monit

Just very nice to be able to start it from capistrano. What do you think? Only tested for upstart though (Ubuntu 14.04).

Hi. Thanks for the submission (and sorry for the delayed answer), but to be honest, this is really out of the scope of this project
My idea here is to start/stop/restart a project, which happens to be managed by monit
I don't want to have any effect on other apps that monit might be currently running, or even on monit itself
Plus, I'm a really strong advocate of avoiding sudo as much as possible in these situations. Having sudo commands might encourage you to lower your server's permissions, and allow capistrano to run sudo without requiring a password somehow (and yes, I know you can limit which commands are sudo'able, but still... it sends the wrong message)


regression in 'make' - one test failing

see: https://<IP_ADDRESS>:8443/job/Port-Pipeline/1253/


Major updates: JFrog Pipelines, ECS w/ Docker Compose, EKS

Issue #, if available:
Description of changes:
Added subsections for running the workshop with Amazon ECS using Docker Compose and/or Amazon EKS. Removed manual CI/CD with JFrog CLI and replaced with JFrog Pipelines. Free JFrog Platform instructions now use AWS Marketplace free trial.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

LGTM !


Items slot

Adding a global slot gives you the ability to fully customize a table item, but what if I don't want to change the logic of the checkbox slots, expand?
I would like to see a way to exclude such standard slots from rendering
When using <template #item>, checkbox and expand are missing

Thanks for noticing, please update to the latest version 1.5.40


[Feature]: Custom Figlet Logos

Add the option to add custom text as the Figlit Logo.

Good idea. For now you can just use "-d {custom text}"

I guess this could be done by removing this from fetch.nim...
            if not config.distroart.contains(distroId):
                distroId = "default"


Allow custom status code for check_status

It would be nice to allow custom status code, for instance to check that it returns 403 instead of 200.

Solved https://github.com/mocco/django-fabric/pull/23


Add rounding to full seconds

to match with bsseval segements, the 30s excerpts should be rounded to full seconds thus add some code here

fixed


Error pages not rendered using theme layout when logged in

Bug report
What I did
Trigger a 404 error when logged to the admin panel of the app
What I expected to happen
Show the 404 error message using a layout like before with version 5.x:

What happened
This "ugly" and uninformative error is rendered:

What I've already tried to fix it
Nothing
Is it a bug in the latest version of Backpack?
After I run composer update backpack/crud the bug is still there.
Backpack, Laravel, PHP, DB version
When I run php artisan backpack:version the output is:
PHP VERSION:
PHP 8.2.3 (cli) (built: Feb 14 2023 16:58:12) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.3, Copyright (c) Zend Technologies
with Zend OPcache v8.2.3, Copyright (c), by Zend Technologies
LARAVEL VERSION:
<IP_ADDRESS>
BACKPACK PACKAGE VERSIONS:
backpack/backupmanager: v5.0.0
backpack/basset: 1.0.0
backpack/crud: 6.0.1
backpack/devtools: 2.0.2
backpack/editable-columns: 3.0.0
backpack/filemanager: 3.0.1
backpack/generators: v4.0.0
backpack/logmanager: v5.0.0
backpack/permissionmanager: 7.0.0
backpack/pro: 2.0.4
backpack/revise-operation: 2.0.0
backpack/settings: 3.1.0
backpack/theme-coreuiv2: 1.1.0
backpack/theme-coreuiv4: 1.0.0
backpack/theme-tabler: 1.0.1

@malle-pietje the error pages was removed from userland. You should remove the resources/views/errors, or style those accordingly to your application. It will eventually fallback to Laravel default error pages.
We intercept the http errors in /admin namespace. If you are logged in you should see the error message with the logged in layout.
The 404 to any page happen before sessions are started, so there is no logged in user.
Depending on the theme you are using there may be missing the layout key in config.
We added that key for example in coreui-v2 here https://github.com/Laravel-Backpack/theme-coreuiv2/pull/20
It's not tagged yet, but you can manually add it in advance.
Let me know how it works.

I had indeed noticed that and removed the error blade files already to clean things up.
Regarding 404, that makes complete sense and is obviously a bad test case 😉
I'm using the Table theme and the key does exist:
'layout' => 'horizontal_overlap',


test-jar in google-cloud-bom

The BOM contains many dependencies like this one:
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-storage</artifactId>
        <version>1.44.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-storage:current} -->
        <type>test-jar</type>
      </dependency>

Is this really something we want in the BOM?  I can't imagine clients should be depending on our tests. Can we take these out?

There are also a few of type testlib